@@ -72,13 +72,15 @@ struct LfITSTPCMatchingSecondaryTracksQA {
7272 Configurable<float > nsigmaTPCmax{" nsigmaTPCmax" , +3 .0f , " Maximum nsigma TPC" };
7373 Configurable<float > nsigmaTOFmin{" nsigmaTOFmin" , -3 .0f , " Minimum nsigma TOF" };
7474 Configurable<float > nsigmaTOFmax{" nsigmaTOFmax" , +3 .0f , " Maximum nsigma TOF" };
75+ Configurable<float > dcaxyMax{" dcaxyMax" , 0.1 , " dcaxy max" };
76+ Configurable<float > dcazMax{" dcazMax" , 0.1 , " dcaz max" };
7577 Configurable<bool > requireTOF{" requireTOF" , false , " require TOF hit" };
7678 Configurable<bool > requireItsHits{" requireItsHits" , false , " require ITS hits" };
77- Configurable<std::vector<float >> requiredHit{" requiredHit" , {0 , 0 , 0 , 1 , 1 , 1 , 1 }, " required ITS Hits" };
79+ Configurable<std::vector<float >> requiredHit{" requiredHit" , {0 , 0 , 0 , 0 , 0 , 0 , 0 }, " required ITS Hits (1=required, 0=not required) " };
7880
7981 // V0 Parameters
80- Configurable<float > minimumV0Radius{" minimumV0Radius" , 0 .5f , " Minimum V0 Radius" };
81- Configurable<float > maximumV0Radius{" maximumV0Radius" , 40 .0f , " Maximum V0 Radius" };
82+ Configurable<float > minimumV0Radius{" minimumV0Radius" , 0 .0f , " Minimum V0 Radius" };
83+ Configurable<float > maximumV0Radius{" maximumV0Radius" , 100 .0f , " Maximum V0 Radius" };
8284 Configurable<float > dcanegtoPVmin{" dcanegtoPVmin" , 0 .1f , " Minimum DCA Neg To PV" };
8385 Configurable<float > dcapostoPVmin{" dcapostoPVmin" , 0 .1f , " Minimum DCA Pos To PV" };
8486 Configurable<float > v0cospaMin{" v0cospaMin" , 0 .99f , " Minimum V0 CosPA" };
@@ -112,14 +114,35 @@ struct LfITSTPCMatchingSecondaryTracksQA {
112114 return (itsClsmap & testBit);
113115 }
114116
117+ template <typename TpcTrackGlo>
118+ bool passedTrackSelectionTpcGlobal (const TpcTrackGlo& track)
119+ {
120+ if (!track.hasTPC ())
121+ return false ;
122+ if (track.tpcNClsCrossedRows () < minNCrossedRowsTPC)
123+ return false ;
124+ if ((static_cast <float >(track.tpcNClsCrossedRows ()) / static_cast <float >(track.tpcNClsFindable ())) < minNCrossedRowsOverFindable)
125+ return false ;
126+ if (track.tpcChi2NCl () > maxChi2TPC)
127+ return false ;
128+ if (track.eta () < etaMin || track.eta () > etaMax)
129+ return false ;
130+ if (std::fabs (track.dcaXY ()) > dcaxyMax)
131+ return false ;
132+ if (std::fabs (track.dcaZ ()) > dcazMax)
133+ return false ;
134+
135+ return true ;
136+ }
137+
115138 template <typename TpcTrack>
116139 bool passedTrackSelectionTpc (const TpcTrack& track)
117140 {
118141 if (!track.hasTPC ())
119142 return false ;
120143 if (track.tpcNClsCrossedRows () < minNCrossedRowsTPC)
121144 return false ;
122- if ((track.tpcNClsCrossedRows () / track.tpcNClsFindable ()) < minNCrossedRowsOverFindable)
145+ if ((static_cast < float >( track.tpcNClsCrossedRows ()) / static_cast < float >( track.tpcNClsFindable () )) < minNCrossedRowsOverFindable)
123146 return false ;
124147 if (track.tpcChi2NCl () > maxChi2TPC)
125148 return false ;
@@ -182,7 +205,6 @@ struct LfITSTPCMatchingSecondaryTracksQA {
182205 }
183206 }
184207 }
185-
186208 return true ;
187209 }
188210
@@ -197,7 +219,7 @@ struct LfITSTPCMatchingSecondaryTracksQA {
197219
198220 for (const auto & track : tracks) {
199221
200- if (!passedTrackSelectionTpc (track))
222+ if (!passedTrackSelectionTpcGlobal (track))
201223 continue ;
202224 if (!passedPionSelection (track))
203225 continue ;
@@ -217,25 +239,17 @@ struct LfITSTPCMatchingSecondaryTracksQA {
217239 if (!passedK0ShortSelection (v0))
218240 continue ;
219241
220- if (!passedTrackSelectionTpc (posTrack))
221- continue ;
222- if (!passedTrackSelectionTpc (negTrack))
223- continue ;
224- if (!passedPionSelection (posTrack))
225- continue ;
226- if (!passedPionSelection (negTrack))
227- continue ;
242+ if (passedTrackSelectionTpc (posTrack) && passedPionSelection (posTrack))
243+ registryData.fill (HIST (" secPionTPC" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
228244
229- registryData. fill ( HIST ( " secPionTPC " ), posTrack. pt (), posTrack. eta (), TVector2::Phi_0_2pi (posTrack. phi ()));
230- registryData.fill (HIST (" secPionTPC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
245+ if ( passedTrackSelectionTpc (negTrack) && passedPionSelection (negTrack))
246+ registryData.fill (HIST (" secPionTPC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
231247
232- if (!passedTrackSelectionIts (posTrack))
233- continue ;
234- registryData.fill (HIST (" secPionTPC_ITS" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
248+ if (passedTrackSelectionTpc (posTrack) && passedPionSelection (posTrack) && passedTrackSelectionIts (posTrack))
249+ registryData.fill (HIST (" secPionTPC_ITS" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
235250
236- if (!passedTrackSelectionIts (negTrack))
237- continue ;
238- registryData.fill (HIST (" secPionTPC_ITS" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
251+ if (passedTrackSelectionTpc (negTrack) && passedPionSelection (negTrack) && passedTrackSelectionIts (negTrack))
252+ registryData.fill (HIST (" secPionTPC_ITS" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
239253 }
240254 }
241255 PROCESS_SWITCH (LfITSTPCMatchingSecondaryTracksQA, processData, " Process data" , true );
@@ -256,15 +270,10 @@ struct LfITSTPCMatchingSecondaryTracksQA {
256270 auto tracksPerColl = mcTracks.sliceBy (perCollisionTrk, collision.globalIndex ());
257271
258272 for (const auto & track : tracksPerColl) {
259- if (!passedTrackSelectionTpc (track))
273+ if (!passedTrackSelectionTpcGlobal (track))
260274 continue ;
261275 if (!passedPionSelection (track))
262276 continue ;
263- if (!track.has_mcParticle ())
264- continue ;
265- const auto particle = track.mcParticle ();
266- if (std::fabs (particle.pdgCode ()) != 211 )
267- continue ;
268277
269278 registryMC.fill (HIST (" gloPionTPC_MC" ), track.pt (), track.eta (), TVector2::Phi_0_2pi (track.phi ()));
270279 if (!passedTrackSelectionIts (track))
@@ -279,47 +288,18 @@ struct LfITSTPCMatchingSecondaryTracksQA {
279288 const auto & negTrack = v0.negTrack_as <MCTracks>();
280289 if (!passedK0ShortSelection (v0))
281290 continue ;
282- if (!passedTrackSelectionTpc (posTrack))
283- continue ;
284- if (!passedTrackSelectionTpc (negTrack))
285- continue ;
286- if (!passedPionSelection (posTrack))
287- continue ;
288- if (!passedPionSelection (negTrack))
289- continue ;
290- if (!posTrack.has_mcParticle ())
291- continue ;
292- if (!negTrack.has_mcParticle ())
293- continue ;
294291
295- auto posParticle = posTrack.mcParticle_as <aod::McParticles>();
296- auto negParticle = negTrack.mcParticle_as <aod::McParticles>();
297- if (!posParticle.has_mothers ())
298- continue ;
299- if (!negParticle.has_mothers ())
300- continue ;
292+ if (passedTrackSelectionTpc (posTrack) && passedPionSelection (posTrack))
293+ registryMC.fill (HIST (" secPionTPC_MC" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
301294
302- int pdgParent (0 );
303- for (const auto & particleMotherOfNeg : negParticle.mothers_as <aod::McParticles>()) {
304- for (const auto & particleMotherOfPos : posParticle.mothers_as <aod::McParticles>()) {
305- if (particleMotherOfNeg == particleMotherOfPos) {
306- pdgParent = particleMotherOfNeg.pdgCode ();
307- }
308- }
309- }
310- if (pdgParent != 310 )
311- continue ;
312-
313- registryMC.fill (HIST (" secPionTPC_MC" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
314- registryMC.fill (HIST (" secPionTPC_MC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
295+ if (passedTrackSelectionTpc (negTrack) && passedPionSelection (negTrack))
296+ registryMC.fill (HIST (" secPionTPC_MC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
315297
316- if (!passedTrackSelectionIts (posTrack))
317- continue ;
318- registryMC.fill (HIST (" secPionTPC_ITS_MC" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
298+ if (passedTrackSelectionTpc (posTrack) && passedPionSelection (posTrack) && passedTrackSelectionIts (posTrack))
299+ registryMC.fill (HIST (" secPionTPC_ITS_MC" ), posTrack.pt (), posTrack.eta (), TVector2::Phi_0_2pi (posTrack.phi ()));
319300
320- if (!passedTrackSelectionIts (negTrack))
321- continue ;
322- registryMC.fill (HIST (" secPionTPC_ITS_MC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
301+ if (passedTrackSelectionTpc (negTrack) && passedPionSelection (negTrack) && passedTrackSelectionIts (negTrack))
302+ registryMC.fill (HIST (" secPionTPC_ITS_MC" ), negTrack.pt (), negTrack.eta (), TVector2::Phi_0_2pi (negTrack.phi ()));
323303 }
324304 }
325305 }
0 commit comments