@@ -75,7 +75,14 @@ struct TreeWriterTpcV0 {
7575 constexpr static o2::track::PID::ID PidProton{o2::track::PID::Proton};
7676
7777 // / Configurables
78- Configurable<float > nSigmaTOFdautrack{" nSigmaTOFdautrack" , 999 ., " n-sigma TOF cut on the proton daughter tracks. Set 999 to switch it off." };
78+ Configurable<float > nSigmaTofDauTrackPi{" nSigmaTofDauTrackPi" , 999 ., " n-sigma TOF cut on the pion daughter tracks" };
79+ Configurable<float > nSigmaTofDauTrackPr{" nSigmaTofDauTrackPr" , 999 ., " n-sigma TOF cut on the proton daughter tracks" };
80+ Configurable<float > nSigmaTofDauTrackEl{" nSigmaTofDauTrackEl" , 999 ., " n-sigma TOF cut on the electron daughter tracks" };
81+ Configurable<float > nSigmaTofDauTrackKa{" nSigmaTofDauTrackKa" , 999 ., " n-sigma TOF cut on the kaon daughter tracks" };
82+ Configurable<bool > rejectNoTofDauTrackPi{" rejectNoTofDauTrackPi" , false , " reject not matched to TOF pion daughter tracks" };
83+ Configurable<bool > rejectNoTofDauTrackPr{" rejectNoTofDauTrackPr" , false , " reject not matched to TOF proton daughter tracks" };
84+ Configurable<bool > rejectNoTofDauTrackEl{" rejectNoTofDauTrackEl" , false , " reject not matched to TOF electron daughter tracks" };
85+ Configurable<bool > rejectNoTofDauTrackKa{" rejectNoTofDauTrackKa" , false , " reject not matched to TOF kaon daughter tracks" };
7986 Configurable<float > nClNorm{" nClNorm" , 152 ., " Number of cluster normalization. Run 2: 159, Run 3 152" };
8087 Configurable<int > applyEvSel{" applyEvSel" , 2 , " Flag to apply rapidity cut: 0 -> no event selection, 1 -> Run 2 event selection, 2 -> Run 3 event selection" };
8188 Configurable<int > trackSelection{" trackSelection" , 1 , " Track selection: 0 -> No Cut, 1 -> kGlobalTrack, 2 -> kGlobalTrackWoPtEta, 3 -> kGlobalTrackWoDCA, 4 -> kQualityTracks, 5 -> kInAcceptanceTracks" };
@@ -145,21 +152,22 @@ struct TreeWriterTpcV0 {
145152 double tpcExpSignal{-999 .};
146153 o2::track::PID::ID id{0 };
147154 double dwnSmplFactor{-999 .};
148- bool isApplyTofNSigmaCut{false };
155+ double nSigmaTofDauTrack{-999 .};
156+ bool rejectNoTofDauTrack{false };
149157 };
150158
151159 template <bool IsCorrectedDeDx, typename T>
152160 V0Daughter createV0Daughter (const T& track, const int daughterId)
153161 {
154162 switch (daughterId) {
155163 case DaughterElectron:
156- return V0Daughter{downsamplingTsalisElectrons, MassElectron, maxPt4dwnsmplTsalisElectrons, track.tpcNSigmaEl (), track.tofNSigmaEl (), track.tpcExpSignalEl (tpcSignalGeneric<IsCorrectedDeDx>(track)), PidElectron, dwnSmplFactorEl, false };
164+ return V0Daughter{downsamplingTsalisElectrons, MassElectron, maxPt4dwnsmplTsalisElectrons, track.tpcNSigmaEl (), track.tofNSigmaEl (), track.tpcExpSignalEl (tpcSignalGeneric<IsCorrectedDeDx>(track)), PidElectron, dwnSmplFactorEl, nSigmaTofDauTrackEl, rejectNoTofDauTrackEl };
157165 case DaughterPion:
158- return V0Daughter{downsamplingTsalisPions, MassPiPlus, maxPt4dwnsmplTsalisPions, track.tpcNSigmaPi (), track.tofNSigmaPi (), track.tpcExpSignalPi (tpcSignalGeneric<IsCorrectedDeDx>(track)), PidPion, dwnSmplFactorPi, false };
166+ return V0Daughter{downsamplingTsalisPions, MassPiPlus, maxPt4dwnsmplTsalisPions, track.tpcNSigmaPi (), track.tofNSigmaPi (), track.tpcExpSignalPi (tpcSignalGeneric<IsCorrectedDeDx>(track)), PidPion, dwnSmplFactorPi, nSigmaTofDauTrackPi, rejectNoTofDauTrackPi };
159167 case DaughterProton:
160- return V0Daughter{downsamplingTsalisProtons, MassProton, maxPt4dwnsmplTsalisProtons, track.tpcNSigmaPr (), track.tofNSigmaPr (), track.tpcExpSignalPr (tpcSignalGeneric<IsCorrectedDeDx>(track)), PidProton, dwnSmplFactorPr, true };
168+ return V0Daughter{downsamplingTsalisProtons, MassProton, maxPt4dwnsmplTsalisProtons, track.tpcNSigmaPr (), track.tofNSigmaPr (), track.tpcExpSignalPr (tpcSignalGeneric<IsCorrectedDeDx>(track)), PidProton, dwnSmplFactorPr, nSigmaTofDauTrackPr, rejectNoTofDauTrackPr };
161169 case DaughterKaon:
162- return V0Daughter{downsamplingTsalisKaons, MassKPlus, maxPt4dwnsmplTsalisKaons, track.tpcNSigmaKa (), track.tofNSigmaKa (), track.tpcExpSignalKa (tpcSignalGeneric<IsCorrectedDeDx>(track)), PidKaon, dwnSmplFactorKa, true };
170+ return V0Daughter{downsamplingTsalisKaons, MassKPlus, maxPt4dwnsmplTsalisKaons, track.tpcNSigmaKa (), track.tofNSigmaKa (), track.tpcExpSignalKa (tpcSignalGeneric<IsCorrectedDeDx>(track)), PidKaon, dwnSmplFactorKa, nSigmaTofDauTrackKa, rejectNoTofDauTrackKa };
163171 default : {
164172 LOGP (fatal, " createV0Daughter: unknown daughterId" );
165173 return V0Daughter ();
@@ -453,10 +461,11 @@ struct TreeWriterTpcV0 {
453461 rowTPCTree.reserve (tracks.size ());
454462
455463 auto fillDaughterTrack = [&](const auto & mother, const TrksType::iterator& dauTrack, const V0Daughter& daughter) {
456- if (downsampleTsalisCharged (dauTrack.pt (), daughter.downsamplingTsalis , daughter.mass , daughter.maxPt4dwnsmplTsalis )) {
457- if (!daughter.isApplyTofNSigmaCut || std::fabs (daughter.tofNSigma ) <= nSigmaTOFdautrack) {
458- fillSkimmedV0Table<IsCorrectedDeDx>(mother, dauTrack, collision, daughter.tpcNSigma , daughter.tofNSigma , daughter.tpcExpSignal , daughter.id , runnumber, daughter.dwnSmplFactor , hadronicRate);
459- }
464+ const bool passDownsamplig = downsampleTsalisCharged (dauTrack.pt (), daughter.downsamplingTsalis , daughter.mass , daughter.maxPt4dwnsmplTsalis );
465+ const bool passNSigmaTofCut = std::fabs (daughter.tofNSigma ) < daughter.nSigmaTofDauTrack || std::fabs (daughter.tofNSigma +999 .) < 1e-3 ;
466+ const bool passMatchTofRequirement = !daughter.rejectNoTofDauTrack || std::fabs (daughter.tofNSigma +999 .) > 1e-3 ;
467+ if (passDownsamplig && passNSigmaTofCut && passMatchTofRequirement) {
468+ fillSkimmedV0Table<IsCorrectedDeDx>(mother, dauTrack, collision, daughter.tpcNSigma , daughter.tofNSigma , daughter.tpcExpSignal , daughter.id , runnumber, daughter.dwnSmplFactor , hadronicRate);
460469 }
461470 };
462471
@@ -541,10 +550,11 @@ struct TreeWriterTpcV0 {
541550 }
542551
543552 auto fillDaughterTrack = [&](const auto & mother, const TrksType::iterator& dauTrack, const V0Daughter& daughter, const aod::TracksQA& trackQAInstance, const bool existTrkQA) {
544- if (downsampleTsalisCharged (dauTrack.pt (), daughter.downsamplingTsalis , daughter.mass , daughter.maxPt4dwnsmplTsalis )) {
545- if (!daughter.isApplyTofNSigmaCut || std::fabs (daughter.tofNSigma ) <= nSigmaTOFdautrack) {
546- fillSkimmedV0TableWithTrQAGeneric<IsCorrectedDeDx, IsWithdEdx>(mother, dauTrack, trackQAInstance, existTrkQA, collision, daughter.tpcNSigma , daughter.tofNSigma , daughter.tpcExpSignal , daughter.id , runnumber, daughter.dwnSmplFactor , hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
547- }
553+ const bool passDownsamplig = downsampleTsalisCharged (dauTrack.pt (), daughter.downsamplingTsalis , daughter.mass , daughter.maxPt4dwnsmplTsalis );
554+ const bool passNSigmaTofCut = std::fabs (daughter.tofNSigma ) < daughter.nSigmaTofDauTrack || std::fabs (daughter.tofNSigma +999 .) < 1e-3 ;
555+ const bool passMatchTofRequirement = !daughter.rejectNoTofDauTrack || std::fabs (daughter.tofNSigma +999 .) > 1e-3 ;
556+ if (passDownsamplig && passNSigmaTofCut && passMatchTofRequirement) {
557+ fillSkimmedV0TableWithTrQAGeneric<IsCorrectedDeDx, IsWithdEdx>(mother, dauTrack, trackQAInstance, existTrkQA, collision, daughter.tpcNSigma , daughter.tofNSigma , daughter.tpcExpSignal , daughter.id , runnumber, daughter.dwnSmplFactor , hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
548558 }
549559 };
550560
0 commit comments