@@ -126,7 +126,7 @@ struct TreeWriterTpcV0 {
126126 double tpcExpSignal;
127127 o2::track::PID::ID id;
128128 double dwnSmplFactor;
129- bool isProton ;
129+ bool isApplyTofNSigmaCut ;
130130 };
131131
132132 struct V0Mother {
@@ -425,7 +425,7 @@ struct TreeWriterTpcV0 {
425425 for (const auto & daughter : {v0Mother.posDaughter , v0Mother.negDaughter }) {
426426 const auto & dauTrack = isPosDaughter ? posTrack : negTrack;
427427 if (downsampleTsalisCharged (dauTrack.pt (), daughter.downsamplingTsalis , daughter.mass , daughter.maxPt4dwnsmplTsalis )) {
428- if (!daughter.isProton || std::fabs (daughter.tofNSigma ) <= nSigmaTOFdautrack) {
428+ if (!daughter.isApplyTofNSigmaCut || std::fabs (daughter.tofNSigma ) <= nSigmaTOFdautrack) {
429429 fillSkimmedV0Table<IsCorrecteddEdx>(v0, dauTrack, collision, daughter.tpcNSigma , daughter.tofNSigma , daughter.tpcExpSignal , daughter.id , runnumber, daughter.dwnSmplFactor , hadronicRate);
430430 }
431431 }
@@ -552,7 +552,7 @@ struct TreeWriterTpcV0 {
552552 const auto & trackQA = isPosDaughter ? posTrackQA : negTrackQA;
553553 const auto & existTrkQA = isPosDaughter ? existPosTrkQA : existNegTrkQA;
554554 if (downsampleTsalisCharged (dauTrack.pt (), daughter.downsamplingTsalis , daughter.mass , daughter.maxPt4dwnsmplTsalis )) {
555- if (!daughter.isProton || std::fabs (daughter.tofNSigma ) <= nSigmaTOFdautrack) {
555+ if (!daughter.isApplyTofNSigmaCut || std::fabs (daughter.tofNSigma ) <= nSigmaTOFdautrack) {
556556 fillSkimmedV0TableWithTrQAGeneric<IsCorrecteddEdx, IsWithdEdx>(v0, dauTrack, trackQA, existTrkQA, collision, daughter.tpcNSigma , daughter.tofNSigma , daughter.tpcExpSignal , daughter.id , runnumber, daughter.dwnSmplFactor , hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
557557 }
558558 }
@@ -709,6 +709,23 @@ struct TreeWriterTPCTOF {
709709
710710 ctpRateFetcher mRateFetcher ;
711711
712+ struct TofTrack {
713+ bool isApplyHardCutOnly;
714+ double maxMomHardCutOnly;
715+ double maxMomTPCOnly;
716+ double tpcNSigma;
717+ double nSigmaTPCOnly;
718+ double downsamplingTsalis;
719+ double mass;
720+ double tofNSigma;
721+ double itsNSigma;
722+ double tpcExpSignal;
723+ o2::track::PID::ID pid;
724+ double dwnSmplFactor;
725+ double nSigmaTOF_TPCTOF;
726+ double nSigmaTPC_TPCTOF;
727+ };
728+
712729 double tsalisCharged (double pt, double mass)
713730 {
714731 const double a = 6.81 , b = 59.24 ;
@@ -906,41 +923,31 @@ struct TreeWriterTPCTOF {
906923 if (!isEventSelected (collision, tracks)) {
907924 return ;
908925 }
909- auto bc = collision.bc_as <aod::BCsWithTimestamps>();
926+ const auto & bc = collision.bc_as <aod::BCsWithTimestamps>();
910927 const int runnumber = bc.runNumber ();
911- float hadronicRate = mRateFetcher .fetch (ccdb.service , bc.timestamp (), runnumber, irSource) * 1 .e -3 ;
928+ const float hadronicRate = mRateFetcher .fetch (ccdb.service , bc.timestamp (), runnumber, irSource) * 1 .e -3 ;
912929
913930 rowTPCTOFTree.reserve (tracks.size ());
914931 for (auto const & trk : tracks) {
915- // / Fill tree for tritons
916- if (trk.tpcInnerParam () < maxMomHardCutOnlyTr && trk.tpcInnerParam () <= maxMomTPCOnlyTr && std::abs (trk.tpcNSigmaTr ()) < nSigmaTPCOnlyTr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassTriton)) {
917- fillSkimmedTPCTOFTable<IsCorrecteddEdx>(trk, collision, trk.tpcNSigmaTr (), trk.tofNSigmaTr (), trk.tpcExpSignalTr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidTriton, runnumber, dwnSmplFactor_Tr, hadronicRate);
918- } else if (trk.tpcInnerParam () < maxMomHardCutOnlyTr && trk.tpcInnerParam () > maxMomTPCOnlyTr && std::abs (trk.tofNSigmaTr ()) < nSigmaTOF_TPCTOF_Tr && std::abs (trk.tpcNSigmaTr ()) < nSigmaTPC_TPCTOF_Tr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassTriton)) {
919- fillSkimmedTPCTOFTable<IsCorrecteddEdx>(trk, collision, trk.tpcNSigmaTr (), trk.tofNSigmaTr (), trk.tpcExpSignalTr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidTriton, runnumber, dwnSmplFactor_Tr, hadronicRate);
920- }
921- // / Fill tree for deuterons
922- if (trk.tpcInnerParam () < maxMomHardCutOnlyDe && trk.tpcInnerParam () <= maxMomTPCOnlyDe && std::abs (trk.tpcNSigmaDe ()) < nSigmaTPCOnlyDe && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassDeuteron)) {
923- fillSkimmedTPCTOFTable<IsCorrecteddEdx>(trk, collision, trk.tpcNSigmaDe (), trk.tofNSigmaDe (), trk.tpcExpSignalDe (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidDeuteron, runnumber, dwnSmplFactor_De, hadronicRate);
924- } else if (trk.tpcInnerParam () < maxMomHardCutOnlyDe && trk.tpcInnerParam () > maxMomTPCOnlyDe && std::abs (trk.tofNSigmaDe ()) < nSigmaTOF_TPCTOF_De && std::abs (trk.tpcNSigmaDe ()) < nSigmaTPC_TPCTOF_De && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassDeuteron)) {
925- fillSkimmedTPCTOFTable<IsCorrecteddEdx>(trk, collision, trk.tpcNSigmaDe (), trk.tofNSigmaDe (), trk.tpcExpSignalDe (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidDeuteron, runnumber, dwnSmplFactor_De, hadronicRate);
926- }
927- // / Fill tree for protons
928- if (trk.tpcInnerParam () <= maxMomTPCOnlyPr && std::abs (trk.tpcNSigmaPr ()) < nSigmaTPCOnlyPr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassProton)) {
929- fillSkimmedTPCTOFTable<IsCorrecteddEdx>(trk, collision, trk.tpcNSigmaPr (), trk.tofNSigmaPr (), trk.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidProton, runnumber, dwnSmplFactor_Pr, hadronicRate);
930- } else if (trk.tpcInnerParam () > maxMomTPCOnlyPr && std::abs (trk.tofNSigmaPr ()) < nSigmaTOF_TPCTOF_Pr && std::abs (trk.tpcNSigmaPr ()) < nSigmaTPC_TPCTOF_Pr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassProton)) {
931- fillSkimmedTPCTOFTable<IsCorrecteddEdx>(trk, collision, trk.tpcNSigmaPr (), trk.tofNSigmaPr (), trk.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidProton, runnumber, dwnSmplFactor_Pr, hadronicRate);
932- }
933- // / Fill tree for kaons
934- if (trk.tpcInnerParam () < maxMomHardCutOnlyKa && trk.tpcInnerParam () <= maxMomTPCOnlyKa && std::abs (trk.tpcNSigmaKa ()) < nSigmaTPCOnlyKa && downsampleTsalisCharged (trk.pt (), downsamplingTsalisKaons, MassKaon)) {
935- fillSkimmedTPCTOFTable<IsCorrecteddEdx>(trk, collision, trk.tpcNSigmaKa (), trk.tofNSigmaKa (), trk.tpcExpSignalKa (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidKaon, runnumber, dwnSmplFactor_Ka, hadronicRate);
936- } else if (trk.tpcInnerParam () < maxMomHardCutOnlyKa && trk.tpcInnerParam () > maxMomTPCOnlyKa && std::abs (trk.tofNSigmaKa ()) < nSigmaTOF_TPCTOF_Ka && std::abs (trk.tpcNSigmaKa ()) < nSigmaTPC_TPCTOF_Ka && downsampleTsalisCharged (trk.pt (), downsamplingTsalisKaons, MassKaon)) {
937- fillSkimmedTPCTOFTable<IsCorrecteddEdx>(trk, collision, trk.tpcNSigmaKa (), trk.tofNSigmaKa (), trk.tpcExpSignalKa (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidKaon, runnumber, dwnSmplFactor_Ka, hadronicRate);
938- }
939- // / Fill tree pions
940- if (trk.tpcInnerParam () <= maxMomTPCOnlyPi && std::abs (trk.tpcNSigmaPi ()) < nSigmaTPCOnlyPi && downsampleTsalisCharged (trk.pt (), downsamplingTsalisPions, MassPion)) {
941- fillSkimmedTPCTOFTable<IsCorrecteddEdx>(trk, collision, trk.tpcNSigmaPi (), trk.tofNSigmaPi (), trk.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidPion, runnumber, dwnSmplFactor_Pi, hadronicRate);
942- } else if (trk.tpcInnerParam () > maxMomTPCOnlyPi && std::abs (trk.tofNSigmaPi ()) < nSigmaTOF_TPCTOF_Pi && std::abs (trk.tpcNSigmaPi ()) < nSigmaTPC_TPCTOF_Pi && downsampleTsalisCharged (trk.pt (), downsamplingTsalisPions, MassPion)) {
943- fillSkimmedTPCTOFTable<IsCorrecteddEdx>(trk, collision, trk.tpcNSigmaPi (), trk.tofNSigmaPi (), trk.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidPion, runnumber, dwnSmplFactor_Pi, hadronicRate);
932+
933+ TofTrack tofTriton (true , maxMomHardCutOnlyTr, maxMomTPCOnlyTr, trk.tpcNSigmaTr (), nSigmaTPCOnlyTr, downsamplingTsalisTritons, MassTriton, trk.tofNSigmaTr (), -999 ., trk.tpcExpSignalTr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidTriton, dwnSmplFactor_Tr, nSigmaTOF_TPCTOF_Tr, nSigmaTPC_TPCTOF_Tr);
934+
935+ TofTrack tofDeuteron (true , maxMomHardCutOnlyDe, maxMomTPCOnlyDe, trk.tpcNSigmaDe (), nSigmaTPCOnlyDe, downsamplingTsalisDeuterons, MassDeuteron, trk.tofNSigmaDe (), -999 ., trk.tpcExpSignalDe (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidDeuteron, dwnSmplFactor_De, nSigmaTOF_TPCTOF_De, nSigmaTPC_TPCTOF_De);
936+
937+ TofTrack tofProton (false , -999 ., maxMomTPCOnlyPr, trk.tpcNSigmaPr (), nSigmaTPCOnlyPr, downsamplingTsalisProtons, MassProton, trk.tofNSigmaPr (), -999 ., trk.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidProton, dwnSmplFactor_Pr, nSigmaTOF_TPCTOF_Pr, nSigmaTPC_TPCTOF_Pr);
938+
939+ TofTrack tofKaon (true , maxMomHardCutOnlyKa, maxMomTPCOnlyKa, trk.tpcNSigmaKa (), nSigmaTPCOnlyKa, downsamplingTsalisKaons, MassKaon, trk.tofNSigmaKa (), -999 ., trk.tpcExpSignalKa (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidKaon, dwnSmplFactor_Ka, nSigmaTOF_TPCTOF_Ka, nSigmaTPC_TPCTOF_Ka);
940+
941+ TofTrack tofPion (false , -999 ., maxMomTPCOnlyPi, trk.tpcNSigmaPi (), nSigmaTPCOnlyPi, downsamplingTsalisPions, MassPion, trk.tofNSigmaPi (), -999 ., trk.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidPion, dwnSmplFactor_Pi, nSigmaTOF_TPCTOF_Pi, nSigmaTPC_TPCTOF_Pi);
942+
943+ for (const auto & tofTrack : {tofTriton, tofDeuteron, tofProton, tofKaon, tofPion}) {
944+ if ((!tofTrack.isApplyHardCutOnly || trk.tpcInnerParam () < tofTrack.maxMomHardCutOnly ) &&
945+ ((trk.tpcInnerParam () <= tofTrack.maxMomTPCOnly && std::fabs (tofTrack.tpcNSigma ) < tofTrack.nSigmaTPCOnly ) ||
946+ (trk.tpcInnerParam () > tofTrack.maxMomTPCOnly && std::fabs (tofTrack.tofNSigma ) < tofTrack.nSigmaTOF_TPCTOF && std::fabs (tofTrack.tpcNSigma ) < tofTrack.nSigmaTPC_TPCTOF )) &&
947+ downsampleTsalisCharged (trk.pt (), tofTrack.downsamplingTsalis , tofTrack.mass )
948+ ) {
949+ fillSkimmedTPCTOFTable<IsCorrecteddEdx>(trk, collision, tofTrack.tpcNSigma , tofTrack.tofNSigma , tofTrack.tpcExpSignal , tofTrack.pid , runnumber, tofTrack.dwnSmplFactor , hadronicRate);
950+ }
944951 }
945952 } // / Loop tracks
946953 }
@@ -972,16 +979,17 @@ struct TreeWriterTPCTOF {
972979 labelTrack2TrackQA[trackId] = trackQAIndex;
973980 }
974981 for (const auto & collision : collisions) {
975- auto tracks = myTracks.sliceBy (perCollisionTracksType, collision.globalIndex ());
976- auto tracksWithITSPid = soa::Attach<TrksType,
977- aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaMu, aod::pidits::ITSNSigmaPi,
978- aod::pidits::ITSNSigmaKa, aod::pidits::ITSNSigmaPr, aod::pidits::ITSNSigmaDe,
979- aod::pidits::ITSNSigmaTr, aod::pidits::ITSNSigmaHe, aod::pidits::ITSNSigmaAl>(tracks);
980982 // / Check event selection
983+ const auto & tracks = myTracks.sliceBy (perCollisionTracksType, collision.globalIndex ());
981984 if (!isEventSelected (collision, tracks)) {
982985 continue ;
983986 }
984- auto bc = collision.bc_as <BCType>();
987+ const auto & tracksWithITSPid = soa::Attach<TrksType,
988+ aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaMu, aod::pidits::ITSNSigmaPi,
989+ aod::pidits::ITSNSigmaKa, aod::pidits::ITSNSigmaPr, aod::pidits::ITSNSigmaDe,
990+ aod::pidits::ITSNSigmaTr, aod::pidits::ITSNSigmaHe, aod::pidits::ITSNSigmaAl>(tracks);
991+
992+ const auto & bc = collision.bc_as <BCType>();
985993 const int runnumber = bc.runNumber ();
986994 float hadronicRate = mRateFetcher .fetch (ccdb.service , bc.timestamp (), runnumber, irSource) * 1 .e -3 ;
987995 int bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame;
@@ -1014,35 +1022,25 @@ struct TreeWriterTPCTOF {
10141022 trackQA = tracksQA.iteratorAt (0 );
10151023 existTrkQA = false ;
10161024 }
1017- // / Fill tree for tritons
1018- if (trk.tpcInnerParam () < maxMomHardCutOnlyTr && trk.tpcInnerParam () <= maxMomTPCOnlyTr && std::abs (trk.tpcNSigmaTr ()) < nSigmaTPCOnlyTr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassTriton)) {
1019- fillSkimmedTPCTOFTableWithTrkQAGeneric<IsCorrecteddEdx, IsWithdEdx>(trk, trackQA, existTrkQA, collision, trk.tpcNSigmaTr (), trk.tofNSigmaTr (), trk.itsNSigmaTr (), trk.tpcExpSignalTr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidTriton, runnumber, dwnSmplFactor_Tr, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1020- } else if (trk.tpcInnerParam () < maxMomHardCutOnlyTr && trk.tpcInnerParam () > maxMomTPCOnlyTr && std::abs (trk.tofNSigmaTr ()) < nSigmaTOF_TPCTOF_Tr && std::abs (trk.tpcNSigmaTr ()) < nSigmaTPC_TPCTOF_Tr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassTriton)) {
1021- fillSkimmedTPCTOFTableWithTrkQAGeneric<IsCorrecteddEdx, IsWithdEdx>(trk, trackQA, existTrkQA, collision, trk.tpcNSigmaTr (), trk.tofNSigmaTr (), trk.itsNSigmaTr (), trk.tpcExpSignalTr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidTriton, runnumber, dwnSmplFactor_Tr, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1022- }
1023- // / Fill tree for deuterons
1024- if (trk.tpcInnerParam () < maxMomHardCutOnlyDe && trk.tpcInnerParam () <= maxMomTPCOnlyDe && std::abs (trk.tpcNSigmaDe ()) < nSigmaTPCOnlyDe && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassDeuteron)) {
1025- fillSkimmedTPCTOFTableWithTrkQAGeneric<IsCorrecteddEdx, IsWithdEdx>(trk, trackQA, existTrkQA, collision, trk.tpcNSigmaDe (), trk.tofNSigmaDe (), trk.itsNSigmaDe (), trk.tpcExpSignalDe (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidDeuteron, runnumber, dwnSmplFactor_De, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1026- } else if (trk.tpcInnerParam () < maxMomHardCutOnlyDe && trk.tpcInnerParam () > maxMomTPCOnlyDe && std::abs (trk.tofNSigmaDe ()) < nSigmaTOF_TPCTOF_De && std::abs (trk.tpcNSigmaDe ()) < nSigmaTPC_TPCTOF_De && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassDeuteron)) {
1027- fillSkimmedTPCTOFTableWithTrkQAGeneric<IsCorrecteddEdx, IsWithdEdx>(trk, trackQA, existTrkQA, collision, trk.tpcNSigmaDe (), trk.tofNSigmaDe (), trk.itsNSigmaDe (), trk.tpcExpSignalDe (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidDeuteron, runnumber, dwnSmplFactor_De, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1028- }
1029- // / Fill tree for protons
1030- if (trk.tpcInnerParam () <= maxMomTPCOnlyPr && std::abs (trk.tpcNSigmaPr ()) < nSigmaTPCOnlyPr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassProton)) {
1031- fillSkimmedTPCTOFTableWithTrkQAGeneric<IsCorrecteddEdx, IsWithdEdx>(trk, trackQA, existTrkQA, collision, trk.tpcNSigmaPr (), trk.tofNSigmaPr (), trk.itsNSigmaPr (), trk.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidProton, runnumber, dwnSmplFactor_Pr, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1032- } else if (trk.tpcInnerParam () > maxMomTPCOnlyPr && std::abs (trk.tofNSigmaPr ()) < nSigmaTOF_TPCTOF_Pr && std::abs (trk.tpcNSigmaPr ()) < nSigmaTPC_TPCTOF_Pr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassProton)) {
1033- fillSkimmedTPCTOFTableWithTrkQAGeneric<IsCorrecteddEdx, IsWithdEdx>(trk, trackQA, existTrkQA, collision, trk.tpcNSigmaPr (), trk.tofNSigmaPr (), trk.itsNSigmaPr (), trk.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidProton, runnumber, dwnSmplFactor_Pr, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1034- }
1035- // / Fill tree for kaons
1036- if (trk.tpcInnerParam () < maxMomHardCutOnlyKa && trk.tpcInnerParam () <= maxMomTPCOnlyKa && std::abs (trk.tpcNSigmaKa ()) < nSigmaTPCOnlyKa && downsampleTsalisCharged (trk.pt (), downsamplingTsalisKaons, MassKaon)) {
1037- fillSkimmedTPCTOFTableWithTrkQAGeneric<IsCorrecteddEdx, IsWithdEdx>(trk, trackQA, existTrkQA, collision, trk.tpcNSigmaKa (), trk.tofNSigmaKa (), trk.itsNSigmaKa (), trk.tpcExpSignalKa (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidKaon, runnumber, dwnSmplFactor_Ka, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1038- } else if (trk.tpcInnerParam () < maxMomHardCutOnlyKa && trk.tpcInnerParam () > maxMomTPCOnlyKa && std::abs (trk.tofNSigmaKa ()) < nSigmaTOF_TPCTOF_Ka && std::abs (trk.tpcNSigmaKa ()) < nSigmaTPC_TPCTOF_Ka && downsampleTsalisCharged (trk.pt (), downsamplingTsalisKaons, MassKaon)) {
1039- fillSkimmedTPCTOFTableWithTrkQAGeneric<IsCorrecteddEdx, IsWithdEdx>(trk, trackQA, existTrkQA, collision, trk.tpcNSigmaKa (), trk.tofNSigmaKa (), trk.itsNSigmaKa (), trk.tpcExpSignalKa (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidKaon, runnumber, dwnSmplFactor_Ka, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1040- }
1041- // / Fill tree pions
1042- if (trk.tpcInnerParam () <= maxMomTPCOnlyPi && std::abs (trk.tpcNSigmaPi ()) < nSigmaTPCOnlyPi && downsampleTsalisCharged (trk.pt (), downsamplingTsalisPions, MassPion)) {
1043- fillSkimmedTPCTOFTableWithTrkQAGeneric<IsCorrecteddEdx, IsWithdEdx>(trk, trackQA, existTrkQA, collision, trk.tpcNSigmaPi (), trk.tofNSigmaPi (), trk.itsNSigmaPi (), trk.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidPion, runnumber, dwnSmplFactor_Pi, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1044- } else if (trk.tpcInnerParam () > maxMomTPCOnlyPi && std::abs (trk.tofNSigmaPi ()) < nSigmaTOF_TPCTOF_Pi && std::abs (trk.tpcNSigmaPi ()) < nSigmaTPC_TPCTOF_Pi && downsampleTsalisCharged (trk.pt (), downsamplingTsalisPions, MassPion)) {
1045- fillSkimmedTPCTOFTableWithTrkQAGeneric<IsCorrecteddEdx, IsWithdEdx>(trk, trackQA, existTrkQA, collision, trk.tpcNSigmaPi (), trk.tofNSigmaPi (), trk.itsNSigmaPi (), trk.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidPion, runnumber, dwnSmplFactor_Pi, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1025+
1026+ TofTrack tofTriton (true , maxMomHardCutOnlyTr, maxMomTPCOnlyTr, trk.tpcNSigmaTr (), nSigmaTPCOnlyTr, downsamplingTsalisTritons, MassTriton, trk.tofNSigmaTr (), trk.itsNSigmaTr (), trk.tpcExpSignalTr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidTriton, dwnSmplFactor_Tr, nSigmaTOF_TPCTOF_Tr, nSigmaTPC_TPCTOF_Tr);
1027+
1028+ TofTrack tofDeuteron (true , maxMomHardCutOnlyDe, maxMomTPCOnlyDe, trk.tpcNSigmaDe (), nSigmaTPCOnlyDe, downsamplingTsalisDeuterons, MassDeuteron, trk.tofNSigmaDe (), trk.itsNSigmaDe (), trk.tpcExpSignalDe (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidDeuteron, dwnSmplFactor_De, nSigmaTOF_TPCTOF_De, nSigmaTPC_TPCTOF_De);
1029+
1030+ TofTrack tofProton (false , -999 ., maxMomTPCOnlyPr, trk.tpcNSigmaPr (), nSigmaTPCOnlyPr, downsamplingTsalisProtons, MassProton, trk.tofNSigmaPr (), trk.itsNSigmaPr (), trk.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidProton, dwnSmplFactor_Pr, nSigmaTOF_TPCTOF_Pr, nSigmaTPC_TPCTOF_Pr);
1031+
1032+ TofTrack tofKaon (true , maxMomHardCutOnlyKa, maxMomTPCOnlyKa, trk.tpcNSigmaKa (), nSigmaTPCOnlyKa, downsamplingTsalisKaons, MassKaon, trk.tofNSigmaKa (), trk.itsNSigmaKa (), trk.tpcExpSignalKa (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidKaon, dwnSmplFactor_Ka, nSigmaTOF_TPCTOF_Ka, nSigmaTPC_TPCTOF_Ka);
1033+
1034+ TofTrack tofPion (false , -999 ., maxMomTPCOnlyPi, trk.tpcNSigmaPi (), nSigmaTPCOnlyPi, downsamplingTsalisPions, MassPion, trk.tofNSigmaPi (), trk.itsNSigmaPi (), trk.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(trk)), PidPion, dwnSmplFactor_Pi, nSigmaTOF_TPCTOF_Pi, nSigmaTPC_TPCTOF_Pi);
1035+
1036+ for (const auto & tofTrack : {tofTriton, tofDeuteron, tofProton, tofKaon, tofPion}) {
1037+ if ((!tofTrack.isApplyHardCutOnly || trk.tpcInnerParam () < tofTrack.maxMomHardCutOnly ) &&
1038+ ((trk.tpcInnerParam () <= tofTrack.maxMomTPCOnly && std::fabs (tofTrack.tpcNSigma ) < tofTrack.nSigmaTPCOnly ) ||
1039+ (trk.tpcInnerParam () > tofTrack.maxMomTPCOnly && std::fabs (tofTrack.tofNSigma ) < tofTrack.nSigmaTOF_TPCTOF && std::fabs (tofTrack.tpcNSigma ) < tofTrack.nSigmaTPC_TPCTOF )) &&
1040+ downsampleTsalisCharged (trk.pt (), tofTrack.downsamplingTsalis , tofTrack.mass )
1041+ ) {
1042+ fillSkimmedTPCTOFTableWithTrkQAGeneric<IsCorrecteddEdx, IsWithdEdx>(trk, trackQA, existTrkQA, collision, tofTrack.tpcNSigma , tofTrack.tofNSigma , tofTrack.itsNSigma , tofTrack.tpcExpSignal , tofTrack.pid , runnumber, tofTrack.dwnSmplFactor , hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1043+ }
10461044 }
10471045 } // / Loop tracks
10481046 }
0 commit comments