Skip to content

Commit 383d819

Browse files
Merge branch 'master' into master
2 parents 01e9df6 + 14517ed commit 383d819

File tree

22 files changed

+4093
-536
lines changed

22 files changed

+4093
-536
lines changed

EventFiltering/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,17 @@ o2physics_add_header_only_library(HFFilterHelpers
3939

4040
o2physics_add_dpl_workflow(hf-filter
4141
SOURCES PWGHF/HFFilter.cxx
42-
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore ONNXRuntime::ONNXRuntime O2Physics::HFFilterHelpers O2::DetectorsBase
42+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::HFFilterHelpers O2::DetectorsBase
4343
COMPONENT_NAME Analysis)
4444

4545
o2physics_add_dpl_workflow(hf-filter-charm-hadron-signals
4646
SOURCES PWGHF/HFFilterCharmHadronSignals.cxx
47-
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore ONNXRuntime::ONNXRuntime O2Physics::HFFilterHelpers
47+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::HFFilterHelpers
4848
COMPONENT_NAME Analysis)
4949

5050
o2physics_add_dpl_workflow(hf-filter-prepare-ml-samples
5151
SOURCES PWGHF/HFFilterPrepareMLSamples.cxx
52-
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore ONNXRuntime::ONNXRuntime O2Physics::HFFilterHelpers O2::DetectorsBase
52+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::HFFilterHelpers O2::DetectorsBase
5353
COMPONENT_NAME Analysis)
5454

5555
o2physics_add_dpl_workflow(cf-filter

EventFiltering/PWGHF/HFFilter.cxx

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,13 @@ struct HfFilter { // Main struct for HF triggers
200200
// array of BDT thresholds
201201
std::array<LabeledArray<double>, kNCharmParticles> thresholdBDTScores;
202202

203-
o2::vertexing::DCAFitterN<2> df2; // fitter for Charm Hadron vertex (2-prong vertex fitter)
204-
o2::vertexing::DCAFitterN<3> df3; // fitter for Charm/Beauty Hadron vertex (3-prong vertex fitter)
205-
o2::vertexing::DCAFitterN<4> df4; // fitter for Beauty Hadron vertex (4-prong vertex fitter)
206-
o2::vertexing::DCAFitterN<2> dfB; // fitter for Beauty Hadron vertex (2-prong vertex fitter)
207-
o2::vertexing::DCAFitterN<3> dfBtoDstar; // fitter for Beauty Hadron to D* vertex (3-prong vertex fitter)
208-
o2::vertexing::DCAFitterN<2> dfStrangeness; // fitter for V0s and cascades (2-prong vertex fitter)
203+
o2::vertexing::DCAFitterN<2> df2; // fitter for Charm Hadron vertex (2-prong vertex fitter)
204+
o2::vertexing::DCAFitterN<3> df3; // fitter for Charm/Beauty Hadron vertex (3-prong vertex fitter)
205+
o2::vertexing::DCAFitterN<4> df4; // fitter for Beauty Hadron vertex (4-prong vertex fitter)
206+
o2::vertexing::DCAFitterN<2> dfB; // fitter for Beauty Hadron vertex (2-prong vertex fitter)
207+
o2::vertexing::DCAFitterN<3> dfBtoDstar; // fitter for Beauty Hadron to D* vertex (3-prong vertex fitter)
208+
o2::vertexing::DCAFitterN<2> dfStrangeness; // fitter for V0s and cascades (2-prong vertex fitter)
209+
o2::vertexing::DCAFitterN<3> dfStrangeness3; // fitter for Xic+ -> XiPiPi
209210

210211
std::shared_ptr<TH1> hProcessedEvents;
211212

@@ -273,6 +274,7 @@ struct HfFilter { // Main struct for HF triggers
273274
helper.setPtDeltaMassRangeSigmaC(cutsPtDeltaMassCharmReso->get(0u, 6u), cutsPtDeltaMassCharmReso->get(1u, 6u), cutsPtDeltaMassCharmReso->get(0u, 7u), cutsPtDeltaMassCharmReso->get(1u, 7u), cutsPtDeltaMassCharmReso->get(0u, 8u), cutsPtDeltaMassCharmReso->get(1u, 8u), cutsPtDeltaMassCharmReso->get(0u, 9u), cutsPtDeltaMassCharmReso->get(1u, 9u), cutsPtDeltaMassCharmReso->get(2u, 6u), cutsPtDeltaMassCharmReso->get(2u, 7u), cutsPtDeltaMassCharmReso->get(2u, 8u), cutsPtDeltaMassCharmReso->get(2u, 9u));
274275
helper.setPtRangeSoftKaonXicResoToSigmaC(ptCuts->get(0u, 5u), ptCuts->get(1u, 5u));
275276
helper.setVtxConfiguration(dfStrangeness, true); // (DCAFitterN, useAbsDCA)
277+
helper.setVtxConfiguration(dfStrangeness3, true); // (DCAFitterN, useAbsDCA)
276278
dfStrangeness.setMatCorrType(matCorr);
277279
helper.setVtxConfiguration(df2, false); // (DCAFitterN, useAbsDCA)
278280
helper.setVtxConfiguration(df3, false);
@@ -994,14 +996,14 @@ struct HfFilter { // Main struct for HF triggers
994996
if (isGoodXicStar) {
995997
if (isRightSignXicStar) {
996998
hMassVsPtC[kNCharmParticles + 7]->Fill(ptCand, massDiffXicStarCand);
997-
} else if (!isRightSignXicStar && keepAlsoWrongDmesLambdaPairs) {
999+
} else if (keepAlsoWrongDmesLambdaPairs) {
9981000
hMassVsPtC[kNCharmParticles + 8]->Fill(ptCand, massDiffXicStarBarCand);
9991001
}
10001002
}
10011003
if (isGoodXicStarBar) {
10021004
if (isRightSignXicStarBar) {
10031005
hMassVsPtC[kNCharmParticles + 7]->Fill(ptCand, massDiffXicStarCand);
1004-
} else if (!isRightSignXicStarBar && keepAlsoWrongDmesLambdaPairs) {
1006+
} else if (keepAlsoWrongDmesLambdaPairs) {
10051007
hMassVsPtC[kNCharmParticles + 8]->Fill(ptCand, massDiffXicStarBarCand);
10061008
}
10071009
}
@@ -1093,14 +1095,14 @@ struct HfFilter { // Main struct for HF triggers
10931095
if (isGoodThetac) {
10941096
if (isRightSignThetaC) {
10951097
hMassVsPtC[kNCharmParticles + 21]->Fill(ptCand, massDiffThetacCand);
1096-
} else if (!isRightSignThetaC && keepAlsoWrongDmesProtonPairs) {
1098+
} else if (keepAlsoWrongDmesProtonPairs) {
10971099
hMassVsPtC[kNCharmParticles + 22]->Fill(ptCand, massDiffThetacBarCand);
10981100
}
10991101
}
11001102
if (isGoodThetacBar) {
11011103
if (isRightSignThetaCBar) {
11021104
hMassVsPtC[kNCharmParticles + 21]->Fill(ptCand, massDiffThetacCand);
1103-
} else if (!isRightSignThetaCBar && keepAlsoWrongDmesProtonPairs) {
1105+
} else if (keepAlsoWrongDmesProtonPairs) {
11041106
hMassVsPtC[kNCharmParticles + 22]->Fill(ptCand, massDiffThetacBarCand);
11051107
}
11061108
}
@@ -1144,14 +1146,14 @@ struct HfFilter { // Main struct for HF triggers
11441146
if (isGoodLcStar) {
11451147
if (isRightSignLcStar) {
11461148
hMassVsPtC[kNCharmParticles + 19]->Fill(ptCand, massDiffLcStarCand);
1147-
} else if (!isRightSignLcStar && keepAlsoWrongDmesProtonPairs) {
1149+
} else if (keepAlsoWrongDmesProtonPairs) {
11481150
hMassVsPtC[kNCharmParticles + 20]->Fill(ptCand, massDiffLcStarBarCand);
11491151
}
11501152
}
11511153
if (isGoodLcStarBar) {
11521154
if (isRightSignLcStarBar) {
11531155
hMassVsPtC[kNCharmParticles + 19]->Fill(ptCand, massDiffLcStarCand);
1154-
} else if (!isRightSignLcStarBar && keepAlsoWrongDmesProtonPairs) {
1156+
} else if (keepAlsoWrongDmesProtonPairs) {
11551157
hMassVsPtC[kNCharmParticles + 20]->Fill(ptCand, massDiffLcStarBarCand);
11561158
}
11571159
}
@@ -1640,7 +1642,7 @@ struct HfFilter { // Main struct for HF triggers
16401642
if (activateQA) {
16411643
if (isRightSign) {
16421644
hMassVsPtC[kNCharmParticles + 5]->Fill(ptCand, massDiffXicStar);
1643-
} else if (!isRightSign && keepAlsoWrongDmesLambdaPairs) {
1645+
} else if (keepAlsoWrongDmesLambdaPairs) {
16441646
hMassVsPtC[kNCharmParticles + 6]->Fill(ptCand, massDiffXicStar);
16451647
}
16461648
}
@@ -1823,7 +1825,7 @@ struct HfFilter { // Main struct for HF triggers
18231825
bool isSelXiBach{false};
18241826
if (requireStrangenessTracking->get(0u, 0u) > 0) {
18251827
if (hasStrangeTrack) {
1826-
isSelXiBach = helper.isSelectedXiBach(trackParCascTrack, trackParBachelor, isSelBachelor, collision, df2, activateQA, hMassVsPtC[kNCharmParticles + 15], hMassVsPtC[kNCharmParticles + 16]);
1828+
isSelXiBach = helper.isSelectedXiBach(trackParCascTrack, trackParBachelor, isSelBachelor, collision, dfStrangeness, activateQA, hMassVsPtC[kNCharmParticles + 15], hMassVsPtC[kNCharmParticles + 16]);
18271829
}
18281830
} else {
18291831
isSelXiBach = helper.isSelectedXiBach(trackParCasc, trackParBachelor, isSelBachelor, collision, dfStrangeness, activateQA, hMassVsPtC[kNCharmParticles + 15], hMassVsPtC[kNCharmParticles + 16]);
@@ -1866,7 +1868,7 @@ struct HfFilter { // Main struct for HF triggers
18661868
bool isSelXiBachBach{false};
18671869
if (requireStrangenessTracking->get(0u, 1u) > 0) {
18681870
if (hasStrangeTrack) {
1869-
isSelXiBachBach = helper.isSelectedXiBachBach<3>(trackParCascTrack, {trackParBachelor, trackParBachelorSecond}, collision, df3, activateQA, hMassVsPtC[kNCharmParticles + 17]);
1871+
isSelXiBachBach = helper.isSelectedXiBachBach<3>(trackParCascTrack, {trackParBachelor, trackParBachelorSecond}, collision, dfStrangeness3, activateQA, hMassVsPtC[kNCharmParticles + 17]);
18701872
}
18711873
} else { // vertex with only the two bachelors
18721874
isSelXiBachBach = helper.isSelectedXiBachBach<2>(trackParCasc, {trackParBachelor, trackParBachelorSecond}, collision, df2, activateQA, hMassVsPtC[kNCharmParticles + 17]);

EventFiltering/PWGHF/HFFilterHelpers.h

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -415,15 +415,15 @@ class HfFilterHelper
415415
mForceTofProtonForFemto = forceTofProtons;
416416
mForceTofDeuteronForFemto = forceTofDeuterons;
417417
}
418-
void setPtBinsSingleTracks(std::vector<double> ptBins) { mPtBinsTracks = ptBins; }
419-
void setPtBinsBeautyHadrons(std::vector<double> ptBins) { mPtBinsBeautyHadrons = ptBins; }
420-
void setCutsSingleTrackBeauty(o2::framework::LabeledArray<double> cutsSingleTrack3P, o2::framework::LabeledArray<double> cutsSingleTrack4P, o2::framework::LabeledArray<double> cutsSingleToJPsi)
418+
void setPtBinsSingleTracks(const std::vector<double>& ptBins) { mPtBinsTracks = ptBins; }
419+
void setPtBinsBeautyHadrons(const std::vector<double>& ptBins) { mPtBinsBeautyHadrons = ptBins; }
420+
void setCutsSingleTrackBeauty(const o2::framework::LabeledArray<double>& cutsSingleTrack3P, const o2::framework::LabeledArray<double>& cutsSingleTrack4P, const o2::framework::LabeledArray<double>& cutsSingleToJPsi)
421421
{
422422
mCutsSingleTrackBeauty3Prong = cutsSingleTrack3P;
423423
mCutsSingleTrackBeauty4Prong = cutsSingleTrack4P;
424424
mCutsSingleTrackBeautyToJPsi = cutsSingleToJPsi;
425425
}
426-
void setCutsBhadrons(o2::framework::LabeledArray<double> cutsBplus, o2::framework::LabeledArray<double> cutsB0toDstar, o2::framework::LabeledArray<double> cutsBc, o2::framework::LabeledArray<double> cutsB0, o2::framework::LabeledArray<double> cutsBs, o2::framework::LabeledArray<double> cutsLb, o2::framework::LabeledArray<double> cutsXib)
426+
void setCutsBhadrons(const o2::framework::LabeledArray<double>& cutsBplus, const o2::framework::LabeledArray<double>& cutsB0toDstar, const o2::framework::LabeledArray<double>& cutsBc, const o2::framework::LabeledArray<double>& cutsB0, const o2::framework::LabeledArray<double>& cutsBs, const o2::framework::LabeledArray<double>& cutsLb, const o2::framework::LabeledArray<double>& cutsXib)
427427
{
428428
mCutsBhad[kBplus] = cutsBplus;
429429
mCutsBhad[kB0toDStar] = cutsB0toDstar;
@@ -433,7 +433,7 @@ class HfFilterHelper
433433
mCutsBhad[kLb] = cutsLb;
434434
mCutsBhad[kXib] = cutsXib;
435435
}
436-
void setCutsBtoJPsi(o2::framework::LabeledArray<double> cuts)
436+
void setCutsBtoJPsi(const o2::framework::LabeledArray<double>& cuts)
437437
{
438438
mCutsBhadToJPsi = cuts;
439439
}
@@ -554,7 +554,7 @@ class HfFilterHelper
554554
mMaxDcaXyXi = maxDcaxyXi;
555555
mMaxNsigmaXiDau = nSigma;
556556
}
557-
void setCutsSingleTrackCharmBaryonBachelor(o2::framework::LabeledArray<double> cutsSingleTrack) { mCutsSingleTrackCharmBaryonBachelor = cutsSingleTrack; }
557+
void setCutsSingleTrackCharmBaryonBachelor(const o2::framework::LabeledArray<double>& cutsSingleTrack) { mCutsSingleTrackCharmBaryonBachelor = cutsSingleTrack; }
558558
void setNsigmaPiCutsForCharmBaryonBachelor(float nSigmaTpc, float nSigmaTof)
559559
{
560560
mNSigmaTpcPiCharmBaryonBachelor = nSigmaTpc;
@@ -583,7 +583,7 @@ class HfFilterHelper
583583

584584
void setTpcPidCalibrationOption(int opt) { mTpcPidCalibrationOption = opt; }
585585

586-
void setMassResolParametrisation(std::string recoPass)
586+
void setMassResolParametrisation(const std::string& recoPass)
587587
{
588588
if (recoPass == "2023_pass3") {
589589
mSigmaPars2Prongs[0] = 0.01424f;
@@ -610,7 +610,7 @@ class HfFilterHelper
610610

611611
void setNumSigmaForDeltaMassCharmHadCut(float nSigma) { mNumSigmaDeltaMassCharmHad = nSigma; }
612612

613-
void setPreselDsToKKPi(std::vector<double> ptBins, o2::framework::LabeledArray<double> preselections)
613+
void setPreselDsToKKPi(const std::vector<double>& ptBins, const o2::framework::LabeledArray<double>& preselections)
614614
{
615615
mPtBinsPreselDsToKKPi = ptBins;
616616
mPreselDsToKKPi = preselections;
@@ -679,7 +679,7 @@ class HfFilterHelper
679679
template <typename T>
680680
T computeRelativeMomentum(const std::array<T, 3>& pTrack, const std::array<T, 3>& CharmCandMomentum, const T& CharmMass);
681681
template <typename T>
682-
int computeNumberOfCandidates(std::vector<std::vector<T>> indices);
682+
int computeNumberOfCandidates(const std::vector<std::vector<T>>& indices);
683683
template <typename T1>
684684
int setVtxConfiguration(T1& vertexer, bool useAbsDCA);
685685
template <typename V, typename T, typename C>
@@ -1504,14 +1504,14 @@ inline int8_t HfFilterHelper::isSelectedV0(const V0& v0, const int& activateQA,
15041504
float nSigmaPrTpc[2] = {v0.nSigmaPrTpcPos, v0.nSigmaPrTpcNeg};
15051505
float nSigmaPrTof[2] = {v0.nSigmaPrTofPos, v0.nSigmaPrTofNeg};
15061506
float pInTpc[2] = {v0.pinTpcPos, v0.pinTpcNeg};
1507-
float nClsTpc[2] = {v0.nClsFoundTpcPos, v0.nClsFoundTpcNeg};
1508-
float etaDaus[2] = {v0.etaPos, v0.etaNeg};
1509-
float signalTpc[2] = {v0.signalTpcPos, v0.signalTpcNeg};
15101507
if (mTpcPidCalibrationOption == 1) {
1508+
float nClsTpc[2] = {v0.nClsFoundTpcPos, v0.nClsFoundTpcNeg};
1509+
float etaDaus[2] = {v0.etaPos, v0.etaNeg};
15111510
for (int iDau{0}; iDau < 2; ++iDau) {
15121511
nSigmaPrTpc[iDau] = getTPCPostCalib(pInTpc[iDau], nClsTpc[iDau], etaDaus[iDau], nSigmaPrTpc[iDau], kPr);
15131512
}
15141513
} else if (mTpcPidCalibrationOption == 2) {
1514+
float signalTpc[2] = {v0.signalTpcPos, v0.signalTpcNeg};
15151515
for (int iDau{0}; iDau < 2; ++iDau) {
15161516
nSigmaPrTpc[iDau] = getTPCSplineCalib(pInTpc[iDau], signalTpc[iDau], (iDau == 0) ? kPr : kAntiPr);
15171517
}
@@ -1664,9 +1664,8 @@ inline bool HfFilterHelper::isSelectedCascade(const Casc& casc)
16641664
float nClsTpc[3] = {casc.nClsFoundTpcBach, casc.v0.nClsFoundTpcPos, casc.v0.nClsFoundTpcNeg};
16651665
float nCrossedRowsTpc[3] = {casc.nClsCrossedRowsTpcBach, casc.v0.nClsCrossedRowsTpcPos, casc.v0.nClsCrossedRowsTpcNeg};
16661666
float crossedRowsOverFindableClsTpc[3] = {casc.crossedRowsOverFindableClsTpcBach, casc.v0.crossedRowsOverFindableClsTpcPos, casc.v0.crossedRowsOverFindableClsTpcNeg};
1667-
float etaDaus[3] = {casc.etaBach, casc.v0.etaPos, casc.v0.etaNeg};
1668-
float signalTpc[3] = {casc.signalTpcBach, casc.v0.signalTpcPos, casc.v0.signalTpcNeg};
16691667
if (mTpcPidCalibrationOption == 1) {
1668+
float etaDaus[3] = {casc.etaBach, casc.v0.etaPos, casc.v0.etaNeg};
16701669
for (int iDau{0}; iDau < 3; ++iDau) {
16711670
nSigmaPiTpc[iDau] = getTPCPostCalib(pInTpc[iDau], nClsTpc[iDau], etaDaus[iDau], nSigmaPrTpc[iDau], kPi);
16721671
if (iDau == 0) {
@@ -1675,12 +1674,13 @@ inline bool HfFilterHelper::isSelectedCascade(const Casc& casc)
16751674
nSigmaPrTpc[iDau] = getTPCPostCalib(pInTpc[iDau], nClsTpc[iDau], etaDaus[iDau], nSigmaPrTpc[iDau], kPr);
16761675
}
16771676
} else if (mTpcPidCalibrationOption == 2) {
1677+
float signalTpc[3] = {casc.signalTpcBach, casc.v0.signalTpcPos, casc.v0.signalTpcNeg};
16781678
for (int iDau{0}; iDau < 3; ++iDau) {
16791679
nSigmaPiTpc[iDau] = getTPCSplineCalib(pInTpc[iDau], signalTpc[iDau], (iDau == 0) ? kPi : kAntiPi);
16801680
if (iDau == 0) {
16811681
continue;
16821682
}
1683-
nSigmaPrTpc[iDau] = getTPCSplineCalib(pInTpc[iDau], signalTpc[iDau], (iDau == 0) ? kPr : kAntiPr);
1683+
nSigmaPrTpc[iDau] = getTPCSplineCalib(pInTpc[iDau], signalTpc[iDau], kAntiPr);
16841684
}
16851685
}
16861686

@@ -1838,7 +1838,7 @@ inline T HfFilterHelper::computeRelativeMomentum(const std::array<T, 3>& pTrack,
18381838
/// Computation of the number of candidates in an event that do not share daughter tracks
18391839
/// \return 0 or 1 in case of less than 2 independent candidates in a single event, 2 otherwise
18401840
template <typename T>
1841-
inline int HfFilterHelper::computeNumberOfCandidates(std::vector<std::vector<T>> indices)
1841+
inline int HfFilterHelper::computeNumberOfCandidates(const std::vector<std::vector<T>>& indices)
18421842
{
18431843
if (indices.size() < 2) {
18441844
return indices.size();

EventFiltering/PWGHF/HFFilterPrepareMLSamples.cxx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
#include "Common/DataModel/PIDResponseTPC.h"
2929
#include "Common/DataModel/TrackSelectionTables.h"
3030

31-
#include <onnxruntime_cxx_api.h>
32-
3331
#include <CCDB/BasicCCDBManager.h>
3432
#include <CCDB/CcdbApi.h>
3533
#include <CommonConstants/PhysicsConstants.h>

0 commit comments

Comments
 (0)