Skip to content

Commit d8f9e8d

Browse files
authored
[PWGLF] removed coupling between v0 daughters and added DCA cuts for global tracks (#10209)
1 parent 5f28dcb commit d8f9e8d

File tree

1 file changed

+45
-65
lines changed

1 file changed

+45
-65
lines changed

PWGLF/Tasks/QC/lfITSTPCMatchingSecondaryTracksQA.cxx

Lines changed: 45 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)