Skip to content

Commit 8725fde

Browse files
ddobrigkBarbara Chytla
authored andcommitted
PWGLF: adjust TPC conditions in detail (AliceO2Group#4664)
1 parent d3b5710 commit 8725fde

File tree

1 file changed

+40
-49
lines changed

1 file changed

+40
-49
lines changed

PWGLF/Tasks/Strangeness/derivedlambdakzeroanalysis.cxx

Lines changed: 40 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -129,20 +129,17 @@ struct derivedlambdakzeroanalysis {
129129
ConfigurableAxis axisTPCrows{"axisTPCrows", {160, 0.0f, 160.0f}, "N TPC rows"};
130130
ConfigurableAxis axisITSclus{"axisITSclus", {7, 0.0f, 7.0f}, "N ITS Clusters"};
131131

132-
enum species { spK0Short = 0,
133-
spLambda,
134-
spAntiLambda };
135-
136132
enum selection { selCosPA = 0,
137133
selRadius,
138134
selDCANegToPV,
139135
selDCAPosToPV,
140136
selDCAV0Dau,
141137
selK0ShortRapidity,
142138
selLambdaRapidity,
143-
selK0ShortTPC,
144-
selLambdaTPC,
145-
selAntiLambdaTPC,
139+
selTPCPIDPositivePion,
140+
selTPCPIDNegativePion,
141+
selTPCPIDPositiveProton,
142+
selTPCPIDNegativeProton,
146143
selK0ShortCTau,
147144
selLambdaCTau,
148145
selK0ShortArmenteros,
@@ -164,7 +161,7 @@ struct derivedlambdakzeroanalysis {
164161
uint32_t maskTopoNoDCAPosToPV;
165162
uint32_t maskTopoNoCosPA;
166163
uint32_t maskTopoNoDCAV0Dau;
167-
uint32_t maskTrackTypes;
164+
uint32_t maskTrackProperties;
168165

169166
uint32_t maskK0ShortSpecific;
170167
uint32_t maskLambdaSpecific;
@@ -187,30 +184,40 @@ struct derivedlambdakzeroanalysis {
187184
maskTopoNoCosPA = (1 << selRadius) | (1 << selDCANegToPV) | (1 << selDCAPosToPV) | (1 << selDCAV0Dau);
188185
maskTopoNoDCAV0Dau = (1 << selCosPA) | (1 << selRadius) | (1 << selDCANegToPV) | (1 << selDCAPosToPV);
189186

190-
maskTrackTypes = 0;
187+
maskK0ShortSpecific = (1 << selK0ShortRapidity) | (1 << selK0ShortCTau) | (1 << selK0ShortArmenteros) | (1 << selConsiderK0Short);
188+
maskLambdaSpecific = (1 << selLambdaRapidity) | (1 << selLambdaCTau) | (1 << selConsiderLambda);
189+
maskAntiLambdaSpecific = (1 << selLambdaRapidity) | (1 << selLambdaCTau) | (1 << selConsiderAntiLambda);
190+
191+
// ask for specific TPC PID selections
192+
193+
maskTrackProperties = 0;
191194
if (requirePosITSonly) {
192-
maskTrackTypes = (1 << selPosItsOnly);
195+
maskTrackProperties = (1 << selPosItsOnly);
193196
} else {
194-
maskTrackTypes = (1 << selPosGoodTPCTrack);
197+
maskTrackProperties = (1 << selPosGoodTPCTrack);
198+
// TPC signal is available: ask for positive track PID
199+
maskK0ShortSpecific = maskK0ShortSpecific | (1 << selTPCPIDPositivePion);
200+
maskLambdaSpecific = maskLambdaSpecific | (1 << selTPCPIDPositiveProton);
201+
maskAntiLambdaSpecific = maskAntiLambdaSpecific | (1 << selTPCPIDPositivePion);
195202
}
196203
if (requireNegITSonly) {
197-
maskTrackTypes = (1 << selNegItsOnly);
204+
maskTrackProperties = (1 << selNegItsOnly);
198205
} else {
199-
maskTrackTypes = (1 << selNegGoodTPCTrack);
206+
maskTrackProperties = (1 << selNegGoodTPCTrack);
207+
// TPC signal is available: ask for negative track PID
208+
maskK0ShortSpecific = maskK0ShortSpecific | (1 << selTPCPIDNegativePion);
209+
maskLambdaSpecific = maskLambdaSpecific | (1 << selTPCPIDNegativeProton);
210+
maskAntiLambdaSpecific = maskAntiLambdaSpecific | (1 << selTPCPIDNegativePion);
200211
}
201212

202-
maskK0ShortSpecific = (1 << selK0ShortRapidity) | (1 << selK0ShortTPC) | (1 << selK0ShortCTau) | (1 << selK0ShortArmenteros) | (1 << selConsiderK0Short);
203-
maskLambdaSpecific = (1 << selLambdaRapidity) | (1 << selLambdaTPC) | (1 << selLambdaCTau) | (1 << selConsiderLambda);
204-
maskAntiLambdaSpecific = (1 << selLambdaRapidity) | (1 << selAntiLambdaTPC) | (1 << selLambdaCTau) | (1 << selConsiderAntiLambda);
205-
206213
// Primary particle selection, central to analysis
207-
maskSelectionK0Short = maskTopological | maskTrackTypes | maskK0ShortSpecific | (1 << selPhysPrimK0Short);
208-
maskSelectionLambda = maskTopological | maskTrackTypes | maskLambdaSpecific | (1 << selPhysPrimLambda);
209-
maskSelectionAntiLambda = maskTopological | maskTrackTypes | maskAntiLambdaSpecific | (1 << selPhysPrimAntiLambda);
214+
maskSelectionK0Short = maskTopological | maskTrackProperties | maskK0ShortSpecific | (1 << selPhysPrimK0Short);
215+
maskSelectionLambda = maskTopological | maskTrackProperties | maskLambdaSpecific | (1 << selPhysPrimLambda);
216+
maskSelectionAntiLambda = maskTopological | maskTrackProperties | maskAntiLambdaSpecific | (1 << selPhysPrimAntiLambda);
210217

211218
// No primary requirement for feeddown matrix
212-
secondaryMaskSelectionLambda = maskTopological | maskTrackTypes | maskLambdaSpecific;
213-
secondaryMaskSelectionAntiLambda = maskTopological | maskTrackTypes | maskAntiLambdaSpecific;
219+
secondaryMaskSelectionLambda = maskTopological | maskTrackProperties | maskLambdaSpecific;
220+
secondaryMaskSelectionAntiLambda = maskTopological | maskTrackProperties | maskAntiLambdaSpecific;
214221

215222
// Event Counters
216223
histos.add("hEventSelection", "hEventSelection", kTH1F, {{3, -0.5f, +2.5f}});
@@ -314,24 +321,6 @@ struct derivedlambdakzeroanalysis {
314321
histos.add("GeneralQA/h2dArmenterosSelected", "h2dArmenterosSelected", kTH2F, {axisAPAlpha, axisAPQt});
315322
}
316323

317-
template <typename TV0>
318-
bool compatibleTPC(TV0 v0, int sp)
319-
{
320-
float pidPos = TMath::Abs(v0.template posTrackExtra_as<dauTracks>().tpcNSigmaPi());
321-
float pidNeg = TMath::Abs(v0.template negTrackExtra_as<dauTracks>().tpcNSigmaPi());
322-
323-
if (sp == spLambda)
324-
pidPos = TMath::Abs(v0.template posTrackExtra_as<dauTracks>().tpcNSigmaPr());
325-
if (sp == spAntiLambda)
326-
pidNeg = TMath::Abs(v0.template negTrackExtra_as<dauTracks>().tpcNSigmaPr());
327-
328-
if (pidPos < TpcPidNsigmaCut && pidNeg < TpcPidNsigmaCut)
329-
return true;
330-
331-
// if not, then not
332-
return false;
333-
}
334-
335324
template <typename TV0, typename TCollision>
336325
uint32_t computeReconstructionBitmap(TV0 v0, TCollision collision)
337326
// precalculate this information so that a check is one mask operation, not many
@@ -355,23 +344,25 @@ struct derivedlambdakzeroanalysis {
355344
if (TMath::Abs(v0.yK0Short()) < rapidityCut)
356345
bitset(bitMap, selK0ShortRapidity);
357346

358-
// TPC PID
359-
if (compatibleTPC(v0, spK0Short))
360-
bitset(bitMap, selK0ShortTPC);
361-
if (compatibleTPC(v0, spLambda))
362-
bitset(bitMap, selLambdaTPC);
363-
if (compatibleTPC(v0, spAntiLambda))
364-
bitset(bitMap, selAntiLambdaTPC);
365-
366347
auto posTrackExtra = v0.template posTrackExtra_as<dauTracks>();
367348
auto negTrackExtra = v0.template negTrackExtra_as<dauTracks>();
368349

369-
// TPC quality
350+
// TPC quality flags
370351
if (posTrackExtra.tpcCrossedRows() >= minTPCrows)
371352
bitset(bitMap, selPosGoodTPCTrack);
372353
if (negTrackExtra.tpcCrossedRows() >= minTPCrows)
373354
bitset(bitMap, selNegGoodTPCTrack);
374355

356+
// TPC PID
357+
if (fabs(posTrackExtra.tpcNSigmaPi()) < TpcPidNsigmaCut)
358+
bitset(bitMap, selTPCPIDPositivePion);
359+
if (fabs(posTrackExtra.tpcNSigmaPr()) < TpcPidNsigmaCut)
360+
bitset(bitMap, selTPCPIDPositiveProton);
361+
if (fabs(negTrackExtra.tpcNSigmaPi()) < TpcPidNsigmaCut)
362+
bitset(bitMap, selTPCPIDNegativePion);
363+
if (fabs(negTrackExtra.tpcNSigmaPr()) < TpcPidNsigmaCut)
364+
bitset(bitMap, selTPCPIDNegativeProton);
365+
375366
// ITS only tag
376367
if (posTrackExtra.tpcCrossedRows() < 1)
377368
bitset(bitMap, selPosItsOnly);

0 commit comments

Comments
 (0)