@@ -94,18 +94,22 @@ struct LfITSTPCMatchingSecondaryTracksQA {
9494 // Event Counters
9595 if (doprocessData) {
9696 registryData.add (" number_of_events_data" , " number of events in data" , HistType::kTH1D , {{20 , 0 , 20 , " Event Cuts" }});
97- registryData.add (" gloPionTPC " , " gloPionTPC " , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
98- registryData.add (" gloPionTPC_ITS " , " gloPionTPC_ITS " , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
97+ registryData.add (" primPionTPC " , " primPionTPC " , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
98+ registryData.add (" primPionTPC_ITS " , " primPionTPC_ITS " , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
9999 registryData.add (" secPionTPC" , " secPionTPC" , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
100100 registryData.add (" secPionTPC_ITS" , " secPionTPC_ITS" , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
101+ registryData.add (" secPionV0TPC" , " secPionV0TPC" , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
102+ registryData.add (" secPionV0TPC_ITS" , " secPionV0TPC_ITS" , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
101103 }
102104
103105 if (doprocessMC) {
104106 registryMC.add (" number_of_events_mc" , " number of events in mc" , HistType::kTH1D , {{20 , 0 , 20 , " Event Cuts" }});
105- registryMC.add (" gloPionTPC_MC " , " gloPionTPC_MC " , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
106- registryMC.add (" gloPionTPC_ITS_MC " , " gloPionTPC_ITS_MC " , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
107+ registryMC.add (" primPionTPC_MC " , " primPionTPC_MC " , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
108+ registryMC.add (" primPionTPC_ITS_MC " , " primPionTPC_ITS_MC " , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
107109 registryMC.add (" secPionTPC_MC" , " secPionTPC_MC" , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
108110 registryMC.add (" secPionTPC_ITS_MC" , " secPionTPC_ITS_MC" , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
111+ registryMC.add (" secPionV0TPC_MC" , " secPionV0TPC_MC" , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
112+ registryMC.add (" secPionV0TPC_ITS_MC" , " secPionV0TPC_ITS_MC" , HistType::kTH3D , {{100 , 0 , 10 , " #it{p}_{T} (GeV/#it{c})" }, {16 , -0.8 , 0.8 , " #eta" }, {100 , 0 , TwoPI, " #phi" }});
109113 }
110114 }
111115
@@ -115,8 +119,8 @@ struct LfITSTPCMatchingSecondaryTracksQA {
115119 return (itsClsmap & testBit);
116120 }
117121
118- template <typename TpcTrackGlo >
119- bool passedTrackSelectionTpcGlobal (const TpcTrackGlo & track)
122+ template <typename TpcPrimTrack >
123+ bool passedTrackSelectionTpcPrimary (const TpcPrimTrack & track)
120124 {
121125 if (!track.hasTPC ())
122126 return false ;
@@ -128,14 +132,33 @@ struct LfITSTPCMatchingSecondaryTracksQA {
128132 return false ;
129133 if (track.eta () < etaMin || track.eta () > etaMax)
130134 return false ;
131- if (std::sqrt (track.dcaXY () * track.dcaXY () + track.dcaZ () * track.dcaZ ()) < dcaMin)
135+ if (std::fabs (track.dcaXY ()) > dcaxyMax)
136+ return false ;
137+ if (std::fabs (track.dcaZ ()) > dcazMax)
132138 return false ;
139+ return true ;
140+ }
133141
142+ template <typename TpcSecTrack>
143+ bool passedTrackSelectionTpcSecondary (const TpcSecTrack& track)
144+ {
145+ if (!track.hasTPC ())
146+ return false ;
147+ if (track.tpcNClsCrossedRows () < minNCrossedRowsTPC)
148+ return false ;
149+ if ((static_cast <float >(track.tpcNClsCrossedRows ()) / static_cast <float >(track.tpcNClsFindable ())) < minNCrossedRowsOverFindable)
150+ return false ;
151+ if (track.tpcChi2NCl () > maxChi2TPC)
152+ return false ;
153+ if (track.eta () < etaMin || track.eta () > etaMax)
154+ return false ;
155+ if (std::sqrt (track.dcaXY () * track.dcaXY () + track.dcaZ () * track.dcaZ ()) < dcaMin)
156+ return false ;
134157 return true ;
135158 }
136159
137- template <typename TpcTrack >
138- bool passedTrackSelectionTpc (const TpcTrack & track)
160+ template <typename v0Track >
161+ bool passedTrackSelectionV0daughTPC (const v0Track & track)
139162 {
140163 if (!track.hasTPC ())
141164 return false ;
@@ -218,11 +241,17 @@ struct LfITSTPCMatchingSecondaryTracksQA {
218241
219242 for (const auto & track : tracks) {
220243
221- if (passedTrackSelectionTpcGlobal (track) && passedPionSelection (track))
222- registryData.fill (HIST (" gloPionTPC" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
223-
224- if (passedTrackSelectionTpcGlobal (track) && passedPionSelection (track) && track.hasITS ())
225- registryData.fill (HIST (" gloPionTPC_ITS" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
244+ // Primary Tracks
245+ if (passedTrackSelectionTpcPrimary (track) && passedPionSelection (track))
246+ registryData.fill (HIST (" primPionTPC" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
247+ if (passedTrackSelectionTpcPrimary (track) && passedPionSelection (track) && passedTrackSelectionIts (track))
248+ registryData.fill (HIST (" primPionTPC_ITS" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
249+
250+ // Secondary Tracks
251+ if (passedTrackSelectionTpcSecondary (track) && passedPionSelection (track))
252+ registryData.fill (HIST (" secPionTPC" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
253+ if (passedTrackSelectionTpcSecondary (track) && passedPionSelection (track) && track.hasITS ())
254+ registryData.fill (HIST (" secPionTPC_ITS" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
226255 }
227256
228257 for (const auto & v0 : fullV0s) {
@@ -232,17 +261,14 @@ struct LfITSTPCMatchingSecondaryTracksQA {
232261 if (!passedK0ShortSelection (v0))
233262 continue ;
234263
235- if (passedTrackSelectionTpc (posTrack) && passedPionSelection (posTrack))
236- registryData.fill (HIST (" secPionTPC" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
237-
238- if (passedTrackSelectionTpc (negTrack) && passedPionSelection (negTrack))
239- registryData.fill (HIST (" secPionTPC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
240-
241- if (passedTrackSelectionTpc (posTrack) && passedPionSelection (posTrack) && posTrack.hasITS ())
242- registryData.fill (HIST (" secPionTPC_ITS" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
243-
244- if (passedTrackSelectionTpc (negTrack) && passedPionSelection (negTrack) && negTrack.hasITS ())
245- registryData.fill (HIST (" secPionTPC_ITS" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
264+ if (passedTrackSelectionV0daughTPC (posTrack) && passedPionSelection (posTrack))
265+ registryData.fill (HIST (" secPionV0TPC" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
266+ if (passedTrackSelectionV0daughTPC (negTrack) && passedPionSelection (negTrack))
267+ registryData.fill (HIST (" secPionV0TPC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
268+ if (passedTrackSelectionV0daughTPC (posTrack) && passedPionSelection (posTrack) && posTrack.hasITS ())
269+ registryData.fill (HIST (" secPionV0TPC_ITS" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
270+ if (passedTrackSelectionV0daughTPC (negTrack) && passedPionSelection (negTrack) && negTrack.hasITS ())
271+ registryData.fill (HIST (" secPionV0TPC_ITS" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
246272 }
247273 }
248274 PROCESS_SWITCH (LfITSTPCMatchingSecondaryTracksQA, processData, " Process data" , true );
@@ -264,11 +290,17 @@ struct LfITSTPCMatchingSecondaryTracksQA {
264290
265291 for (const auto & track : tracksPerColl) {
266292
267- if (passedTrackSelectionTpcGlobal (track) && passedPionSelection (track))
268- registryMC.fill (HIST (" gloPionTPC_MC" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
269-
270- if (passedTrackSelectionTpcGlobal (track) && passedPionSelection (track) && track.hasITS ())
271- registryMC.fill (HIST (" gloPionTPC_ITS_MC" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
293+ // Primary Tracks
294+ if (passedTrackSelectionTpcPrimary (track) && passedPionSelection (track))
295+ registryMC.fill (HIST (" primPionTPC_MC" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
296+ if (passedTrackSelectionTpcPrimary (track) && passedPionSelection (track) && passedTrackSelectionIts (track))
297+ registryMC.fill (HIST (" primPionTPC_ITS_MC" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
298+
299+ // Secondary Tracks
300+ if (passedTrackSelectionTpcSecondary (track) && passedPionSelection (track))
301+ registryMC.fill (HIST (" secPionTPC_MC" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
302+ if (passedTrackSelectionTpcSecondary (track) && passedPionSelection (track) && track.hasITS ())
303+ registryMC.fill (HIST (" secPionTPC_ITS_MC" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
272304 }
273305
274306 for (const auto & v0 : v0sPerColl) {
@@ -278,17 +310,14 @@ struct LfITSTPCMatchingSecondaryTracksQA {
278310 if (!passedK0ShortSelection (v0))
279311 continue ;
280312
281- if (passedTrackSelectionTpc (posTrack) && passedPionSelection (posTrack))
282- registryMC.fill (HIST (" secPionTPC_MC" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
283-
284- if (passedTrackSelectionTpc (negTrack) && passedPionSelection (negTrack))
285- registryMC.fill (HIST (" secPionTPC_MC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
286-
287- if (passedTrackSelectionTpc (posTrack) && passedPionSelection (posTrack) && posTrack.hasITS ())
288- registryMC.fill (HIST (" secPionTPC_ITS_MC" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
289-
290- if (passedTrackSelectionTpc (negTrack) && passedPionSelection (negTrack) && negTrack.hasITS ())
291- registryMC.fill (HIST (" secPionTPC_ITS_MC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
313+ if (passedTrackSelectionV0daughTPC (posTrack) && passedPionSelection (posTrack))
314+ registryMC.fill (HIST (" secPionV0TPC_MC" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
315+ if (passedTrackSelectionV0daughTPC (negTrack) && passedPionSelection (negTrack))
316+ registryMC.fill (HIST (" secPionV0TPC_MC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
317+ if (passedTrackSelectionV0daughTPC (posTrack) && passedPionSelection (posTrack) && posTrack.hasITS ())
318+ registryMC.fill (HIST (" secPionV0TPC_ITS_MC" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
319+ if (passedTrackSelectionV0daughTPC (negTrack) && passedPionSelection (negTrack) && negTrack.hasITS ())
320+ registryMC.fill (HIST (" secPionV0TPC_ITS_MC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
292321 }
293322 }
294323 }
0 commit comments