@@ -83,11 +83,19 @@ struct HfDataCreatorHiddenCharmReduced {
8383 Configurable<int > tpcNClsCrossedRowsMin{" tpcNClsCrossedRowsMin" , 80 , " Minimum number of crossed TPC rows" };
8484 Configurable<double > ptMinTrack{" ptMinTrack" , 0.5 , " Minimum proton-track pT" };
8585 Configurable<double > etaMaxTrack{" etaMaxTrack" , 0.8 , " Maximum proton-track |eta|" };
86- Configurable<float > momForCombinedPid{" momForCombinedPid" , 0 .75f , " Momentum threshold above which combined TPC+TOF proton PID is used" };
86+ Configurable<float > trackChi2Cut{" trackChi2Cut" , 4 .f , " Maximum chi2/ncls in TPC" };
87+ Configurable<float > trackMinChi2Cut{" trackMinChi2Cut" , 0 .f , " Minimum chi2/ncls in TPC" };
88+ Configurable<float > trackMaxChi2ITS{" trackMaxChi2ITS" , 36 .f , " Maximum chi2/ncls in ITS" };
8789 Configurable<std::vector<double >> binsPtTrack{" binsPtTrack" , std::vector<double >{hf_cuts_single_track::vecBinsPtTrack}, " Track pT bin limits for DCA cuts" };
8890 Configurable<LabeledArray<double >> cutsTrack{" cutsTrack" , {hf_cuts_single_track::CutsTrack[0 ], hf_cuts_single_track::NBinsPtTrack, hf_cuts_single_track::NCutVarsTrack, hf_cuts_single_track::labelsPtTrack, hf_cuts_single_track::labelsCutVarTrack}, " Single-track DCA selections per pT bin" };
91+ // DCA
92+ Configurable<std::vector<float >> paramsDCAxyPtDep{" paramsDCAxyPtDep" , std::vector<float >{0.0010 , 0.0080 , 0.73 }, " Parameters for pT-dependent DCAxy cut: p0, p1, p2 for cut = p0 + p1/pt^p2" };
93+ Configurable<std::vector<float >> paramsDCAzPtDep{" paramsDCAzPtDep" , std::vector<float >{-0.0044 , 0.0152 , 0.47 }, " Parameters for pT-dependent DCAz cut: p0, p1, p2 for cut = p0 + p1/pt^p2" };
94+ // PID
95+ Configurable<float > momForCombinedPid{" momForCombinedPid" , 0 .75f , " Momentum threshold above which combined TPC+TOF proton PID is used" };
8996 Configurable<float > maxNsigmaTofPi{" maxNsigmaTofPi" , 2 .f , " Maximum pion n-sigma in TOF for proton rejection" };
9097 Configurable<float > maxNsigmaTofKa{" maxNsigmaTofKa" , 2 .f , " Maximum kaon n-sigma in TOF for proton rejection" };
98+ Configurable<float > maxNsigmaTofPr{" maxNsigmaTofPr" , 3 .f , " Maximum proton n-sigma in TOF" };
9199 Configurable<float > maxNsigmaCombinedPr{" maxNsigmaCombinedPr" , 3 .f , " Maximum combined proton n-sigma from TPC and TOF" };
92100 Configurable<float > maxNsigmaTpcPi{" maxNsigmaTpcPi" , 2 .f , " Maximum pion n-sigma in TPC for proton rejection" };
93101 Configurable<float > maxNsigmaTpcKa{" maxNsigmaTpcKa" , 2 .f , " Maximum kaon n-sigma in TPC for proton rejection" };
@@ -148,6 +156,7 @@ struct HfDataCreatorHiddenCharmReduced {
148156 registry.add (" hNSigmaTPCProton" , " Selected proton tracks;#it{p}_{T}^{track} (GeV/#it{c});n#sigma_{TPC}" , {HistType::kTH2D , {axisPt, axisNSigma}});
149157 registry.add (" hNSigmaTOFProton" , " Selected proton tracks;#it{p}_{T}^{track} (GeV/#it{c});n#sigma_{TOF}" , {HistType::kTH2D , {axisPt, axisNSigma}});
150158 registry.add (" hInvMass" , " Invariant mass of selected proton with all other tracks in the event;#it{p}_{T}^{proton} (GeV/#it{c});invariant mass with other tracks (GeV/#it{c}^{2})" , {HistType::kTH2D , {axisPt, AxisSpec{100 , 2.85 , 3.25 , " invariant mass with other tracks (GeV/#it{c}^{2})" }}});
159+ registry.add (" hDeDxTPCProton" , " Selected proton tracks;#it{p}_{T}^{track} (GeV/#it{c});TPC dE/dx (a.u.)" , {HistType::kTH2D , {axisPt, AxisSpec{100 , 0 ., 200 ., " TPC dE/dx (a.u.)" }}});
151160 }
152161
153162 // init HF event selection helper
@@ -163,6 +172,11 @@ struct HfDataCreatorHiddenCharmReduced {
163172 }
164173 }
165174
175+ static float dcaSigma (float const & pt, float const & p0, float const & p1, float const & p2)
176+ {
177+ return p0 + p1 / std::pow (std::abs (pt), p2);
178+ }
179+
166180 template <typename TTrack>
167181 bool isSelectedPid (TTrack const & track) const
168182 {
@@ -188,10 +202,17 @@ struct HfDataCreatorHiddenCharmReduced {
188202 bool rejectAsPion = false ;
189203 bool rejectAsKaon = false ;
190204
191- if (mom < momForCombinedPid || !hasTOF ) {
205+ if (mom < momForCombinedPid) {
192206 isProton = std::abs (nSigmaTPCPr) < maxNsigmaTpcPr;
193207 rejectAsPion = std::abs (nSigmaTPCPi) < maxNsigmaTpcPi;
194208 rejectAsKaon = std::abs (nSigmaTPCKa) < maxNsigmaTpcKa;
209+
210+ if (hasTOF) {
211+ rejectAsPion = rejectAsPion || std::abs (track.tofNSigmaPi ()) < maxNsigmaTofPi;
212+ rejectAsKaon = rejectAsKaon || std::abs (track.tofNSigmaKa ()) < maxNsigmaTofKa;
213+ isProton = isProton || std::abs (track.tofNSigmaPr ()) < maxNsigmaCombinedPr;
214+ }
215+
195216 } else {
196217 const float nSigmaTOFPr = track.tofNSigmaPr ();
197218 const float nSigmaTOFPi = track.tofNSigmaPi ();
@@ -211,6 +232,11 @@ struct HfDataCreatorHiddenCharmReduced {
211232 const int itsNClsMin = config.itsNClsMin .value ;
212233 const double etaMaxTrack = config.etaMaxTrack .value ;
213234 const double ptMinTrack = config.ptMinTrack .value ;
235+ const float trackChi2Cut = config.trackChi2Cut .value ;
236+ const float trackMinChi2Cut = config.trackMinChi2Cut .value ;
237+ const float trackMaxChi2ITS = config.trackMaxChi2ITS .value ;
238+ const float dcaXY = track.dcaXY ();
239+ const float dcaZ = track.dcaZ ();
214240
215241 if (!track.isGlobalTrackWoDCA ()) {
216242 return false ;
@@ -224,6 +250,12 @@ struct HfDataCreatorHiddenCharmReduced {
224250 if (track.itsNCls () < itsNClsMin) {
225251 return false ;
226252 }
253+ if (track.tpcChi2NCl () > trackChi2Cut || track.tpcChi2NCl () < trackMinChi2Cut) {
254+ return false ;
255+ }
256+ if (track.itsChi2NCl () > trackMaxChi2ITS) {
257+ return false ;
258+ }
227259 if (std::abs (track.eta ()) > etaMaxTrack) {
228260 return false ;
229261 }
@@ -233,6 +265,9 @@ struct HfDataCreatorHiddenCharmReduced {
233265 if (!isSelectedTrackDca (config.binsPtTrack , config.cutsTrack , track.pt (), track.dcaXY (), track.dcaZ ())) {
234266 return false ;
235267 }
268+ if (dcaSigma (track.pt (), config.paramsDCAxyPtDep .value [0 ], config.paramsDCAxyPtDep .value [1 ], config.paramsDCAxyPtDep .value [2 ]) > std::abs (dcaXY) || dcaSigma (track.pt (), config.paramsDCAzPtDep .value [0 ], config.paramsDCAzPtDep .value [1 ], config.paramsDCAzPtDep .value [2 ]) > std::abs (dcaZ)) {
269+ return false ;
270+ }
236271 return isSelectedPid (track);
237272 }
238273
@@ -276,6 +311,7 @@ struct HfDataCreatorHiddenCharmReduced {
276311 registry.fill (HIST (" hEtaCutsProton" ), trk.eta ());
277312 registry.fill (HIST (" hDCAToPrimXYVsPtCutsProton" ), trk.pt (), trk.dcaXY ());
278313 registry.fill (HIST (" hNSigmaTPCProton" ), trk.pt (), trk.tpcNSigmaPr ());
314+ registry.fill (HIST (" hDeDxTPCProton" ), trk.pt (), trk.tpcSignal ());
279315 if (trk.hasTOF ()) {
280316 registry.fill (HIST (" hNSigmaTOFProton" ), trk.pt (), trk.tofNSigmaPr ());
281317 }
0 commit comments