Skip to content

Commit 4444acc

Browse files
authored
[DPG] Update systematics for deuteron analysis (#18289)
1 parent fee6ed0 commit 4444acc

1 file changed

Lines changed: 217 additions & 34 deletions

File tree

‎DPG/Tasks/AOTTrack/PID/HMPID/hmpidDeuteron.cxx‎

Lines changed: 217 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -44,29 +44,34 @@ struct HmpidDeuteron {
4444
Configurable<float> maxDCAxy{"maxDCAxy", 0.5f, "maxDCAxy"};
4545
Configurable<float> maxDCAz{"maxDCAz", 0.5f, "maxDCAz"};
4646

47-
Configurable<float> cutMinMomGlobalTrack{"cutMinMomGlobalTrack", 1.5f, "minimum momentum of global track"};
47+
Configurable<float> qMipThreshold{"qMipThreshold", 120.0f, "minimum MIP charge required for a real signal"};
48+
Configurable<float> cutDistanceMipTrack{"cutDistanceMipTrack", 6.0f, "cut distance between MIP and track"};
4849

4950
Configurable<float> offsetX{"offsetX", 0.696712f, "Residuals offset - X direction"};
5051
Configurable<float> offsetY{"offsetY", 2.32849f, "Residuals offset - Y direction"};
5152

53+
Configurable<bool> collisionsPbPb{"collisionsPbPb", false, "Require PbPb collisions"};
54+
55+
Configurable<float> centralityCut{"centralityCut", 20.0f, "centrality cut for PbPb collisions"};
56+
5257
// Configurables for plotting
5358
// Momentum
5459
Configurable<int> momNBins{"momNBins", 490, "Momentum bins"};
5560
Configurable<float> momMin{"momMin", 0.1f, "Momentum min"};
5661
Configurable<float> momMax{"momMax", 5.0f, "Momentum max"};
5762

5863
// DeltaR
59-
Configurable<int> deltaRNBins{"deltaRNBins", 500, "DeltaR bins"};
64+
Configurable<int> deltaRNBins{"deltaRNBins", 50, "DeltaR bins"};
6065
Configurable<float> deltaRMin{"deltaRMin", 0.0f, "DeltaR min"};
6166
Configurable<float> deltaRMax{"deltaRMax", 50.0f, "DeltaR max"};
6267

6368
// nSigma TPC
64-
Configurable<int> nSigmaTPCNBins{"nSigmaTPCNBins", 20, "nSigmaTPC bins"};
69+
Configurable<int> nSigmaTPCNBins{"nSigmaTPCNBins", 100, "nSigmaTPC bins"};
6570
Configurable<float> nSigmaTPCMinPlot{"nSigmaTPCMinPlot", -5.0f, "nSigmaTPC min"};
6671
Configurable<float> nSigmaTPCMaxPlot{"nSigmaTPCMaxPlot", 5.0f, "nSigmaTPC max"};
6772

6873
// nSigma TOF
69-
Configurable<int> nSigmaTOFNBins{"nSigmaTOFNBins", 20, "nSigmaTOF bins"};
74+
Configurable<int> nSigmaTOFNBins{"nSigmaTOFNBins", 100, "nSigmaTOF bins"};
7075
Configurable<float> nSigmaTOFMinPlot{"nSigmaTOFMinPlot", -5.0f, "nSigmaTOF min"};
7176
Configurable<float> nSigmaTOFMaxPlot{"nSigmaTOFMaxPlot", 5.0f, "nSigmaTOF max"};
7277

@@ -161,6 +166,17 @@ struct HmpidDeuteron {
161166
registryDA.add("nSigmaTPC_vs_momHMPID_Cut_DeNeg", "nSigmaTPC_vs_momHMPID_Cut_DeNeg", HistType::kTH2F, {axisMom, axisNsigmaTPC});
162167
registryDA.add("nSigmaTOF_vs_momHMPID_Cut_DeNeg", "nSigmaTOF_vs_momHMPID_Cut_DeNeg", HistType::kTH2F, {axisMom, axisNsigmaTOF});
163168

169+
registryDA.add("nSigmaTOF_vs_momHMPID_TPCOnly_DePos", "nSigmaTOF_vs_momHMPID_TPCOnly_DePos", HistType::kTH2F, {axisMom, axisNsigmaTOF});
170+
registryDA.add("nSigmaTOF_vs_momHMPID_TPCOnly_DeNeg", "nSigmaTOF_vs_momHMPID_TPCOnly_DeNeg", HistType::kTH2F, {axisMom, axisNsigmaTOF});
171+
172+
registryDA.add("nSigmaTOF_vs_momHMPID_TPCOnly_DePos_4cm", "nSigmaTOF_vs_momHMPID_TPCOnly_DePos_4cm", HistType::kTH2F, {axisMom, axisNsigmaTOF});
173+
registryDA.add("nSigmaTOF_vs_momHMPID_TPCOnly_DePos_8cm", "nSigmaTOF_vs_momHMPID_TPCOnly_DePos_8cm", HistType::kTH2F, {axisMom, axisNsigmaTOF});
174+
registryDA.add("nSigmaTOF_vs_momHMPID_TPCOnly_DeNeg_4cm", "nSigmaTOF_vs_momHMPID_TPCOnly_DeNeg_4cm", HistType::kTH2F, {axisMom, axisNsigmaTOF});
175+
registryDA.add("nSigmaTOF_vs_momHMPID_TPCOnly_DeNeg_8cm", "nSigmaTOF_vs_momHMPID_TPCOnly_DeNeg_8cm", HistType::kTH2F, {axisMom, axisNsigmaTOF});
176+
177+
registryDA.add("pidTPC_TOF_p_ch_DePos", "pidTPC_TOF_p_ch_DePos", HistType::kTHnSparseF, {axisMom, axisNsigmaTPC, axisNsigmaTOF, axisChamber});
178+
registryDA.add("pidTPC_TOF_p_ch_DeNeg", "pidTPC_TOF_p_ch_DeNeg", HistType::kTHnSparseF, {axisMom, axisNsigmaTPC, axisNsigmaTOF, axisChamber});
179+
164180
// general plots
165181
registryDA.add("hEta", "hEta", kTH1F, {axisEta});
166182
registryDA.add("hPhi", "hPhi", kTH1F, {axisPhi});
@@ -175,6 +191,14 @@ struct HmpidDeuteron {
175191
registryDA.add(Form("De_Neg_deltaR_%d", iCh), Form("De_Neg_deltaR_%d", iCh), HistType::kTH1F, {axisDeltaR});
176192
registryDA.add(Form("hEta_%d", iCh), Form("hEta_%d", iCh), HistType::kTH1F, {axisEta});
177193
registryDA.add(Form("hPhi_%d", iCh), Form("hPhi_%d", iCh), HistType::kTH1F, {axisPhi});
194+
195+
// tracking efficiency hmpid
196+
registryDA.add(Form("hAllTracks_%d", iCh), Form("hAllTracks_%d", iCh), HistType::kTH1F, {axisMom});
197+
registryDA.add(Form("hCutQandD_%d", iCh), Form("hCutQandD_%d", iCh), HistType::kTH1F, {axisMom});
198+
registryDA.add(Form("hAllTracks_Pos_%d", iCh), Form("hAllTracks_Pos_%d", iCh), HistType::kTH1F, {axisMom});
199+
registryDA.add(Form("hAllTracks_Neg_%d", iCh), Form("hAllTracks_Neg_%d", iCh), HistType::kTH1F, {axisMom});
200+
registryDA.add(Form("hCutQandD_Pos_%d", iCh), Form("hCutQandD_Pos_%d", iCh), HistType::kTH1F, {axisMom});
201+
registryDA.add(Form("hCutQandD_Neg_%d", iCh), Form("hCutQandD_Neg_%d", iCh), HistType::kTH1F, {axisMom});
178202
}
179203
}
180204

@@ -216,6 +240,7 @@ struct HmpidDeuteron {
216240
const float dx = hmpid.xMip() - hmpid.xTrack();
217241
const float dy = hmpid.yMip() - hmpid.yTrack();
218242
const float dr = std::hypot(dx - offsetX, dy - offsetY);
243+
const float dMipTrack = std::hypot(dx, dy);
219244

220245
const float mass =
221246
std::pow(Nmean * momAbs * std::cos(hmpid.chAngle()), 2) -
@@ -225,6 +250,8 @@ struct HmpidDeuteron {
225250
const bool isPos = momHmpid > 0;
226251
const bool isNeg = momHmpid < 0;
227252

253+
const bool passQandD = hmpid.chargeMip() > qMipThreshold && dMipTrack < cutDistanceMipTrack;
254+
228255
// -------------------------
229256
// global distributions
230257
// -------------------------
@@ -238,35 +265,171 @@ struct HmpidDeuteron {
238265
}
239266

240267
// -------------------------
241-
// RICH chamber maps (0–6)
268+
// Fill plots per chamber
242269
// -------------------------
243-
if (chamber == Rich0) {
244-
registryDA.fill(HIST("hEta_0"), hmpid.etaTrack());
245-
registryDA.fill(HIST("hPhi_0"), hmpid.phiTrack());
246-
}
247-
if (chamber == Rich1) {
248-
registryDA.fill(HIST("hEta_1"), hmpid.etaTrack());
249-
registryDA.fill(HIST("hPhi_1"), hmpid.phiTrack());
250-
}
251-
if (chamber == Rich2) {
252-
registryDA.fill(HIST("hEta_2"), hmpid.etaTrack());
253-
registryDA.fill(HIST("hPhi_2"), hmpid.phiTrack());
254-
}
255-
if (chamber == Rich3) {
256-
registryDA.fill(HIST("hEta_3"), hmpid.etaTrack());
257-
registryDA.fill(HIST("hPhi_3"), hmpid.phiTrack());
258-
}
259-
if (chamber == Rich4) {
260-
registryDA.fill(HIST("hEta_4"), hmpid.etaTrack());
261-
registryDA.fill(HIST("hPhi_4"), hmpid.phiTrack());
270+
271+
switch (chamber) {
272+
273+
case Rich0:
274+
registryDA.fill(HIST("hEta_0"), hmpid.etaTrack());
275+
registryDA.fill(HIST("hPhi_0"), hmpid.phiTrack());
276+
registryDA.fill(HIST("hAllTracks_0"), momAbs);
277+
if (passQandD) {
278+
registryDA.fill(HIST("hCutQandD_0"), momAbs);
279+
}
280+
if (isPos) {
281+
registryDA.fill(HIST("hAllTracks_Pos_0"), momAbs);
282+
if (passQandD) {
283+
registryDA.fill(HIST("hCutQandD_Pos_0"), momAbs);
284+
}
285+
}
286+
if (isNeg) {
287+
registryDA.fill(HIST("hAllTracks_Neg_0"), momAbs);
288+
if (passQandD) {
289+
registryDA.fill(HIST("hCutQandD_Neg_0"), momAbs);
290+
}
291+
}
292+
break;
293+
294+
case Rich1:
295+
registryDA.fill(HIST("hEta_1"), hmpid.etaTrack());
296+
registryDA.fill(HIST("hPhi_1"), hmpid.phiTrack());
297+
registryDA.fill(HIST("hAllTracks_1"), momAbs);
298+
if (passQandD) {
299+
registryDA.fill(HIST("hCutQandD_1"), momAbs);
300+
}
301+
302+
if (isPos) {
303+
registryDA.fill(HIST("hAllTracks_Pos_1"), momAbs);
304+
if (passQandD) {
305+
registryDA.fill(HIST("hCutQandD_Pos_1"), momAbs);
306+
}
307+
}
308+
if (isNeg) {
309+
registryDA.fill(HIST("hAllTracks_Neg_1"), momAbs);
310+
if (passQandD) {
311+
registryDA.fill(HIST("hCutQandD_Neg_1"), momAbs);
312+
}
313+
}
314+
break;
315+
316+
case Rich2:
317+
registryDA.fill(HIST("hEta_2"), hmpid.etaTrack());
318+
registryDA.fill(HIST("hPhi_2"), hmpid.phiTrack());
319+
registryDA.fill(HIST("hAllTracks_2"), momAbs);
320+
if (passQandD) {
321+
registryDA.fill(HIST("hCutQandD_2"), momAbs);
322+
}
323+
if (isPos) {
324+
registryDA.fill(HIST("hAllTracks_Pos_2"), momAbs);
325+
if (passQandD) {
326+
registryDA.fill(HIST("hCutQandD_Pos_2"), momAbs);
327+
}
328+
}
329+
if (isNeg) {
330+
registryDA.fill(HIST("hAllTracks_Neg_2"), momAbs);
331+
if (passQandD) {
332+
registryDA.fill(HIST("hCutQandD_Neg_2"), momAbs);
333+
}
334+
}
335+
break;
336+
337+
case Rich3:
338+
registryDA.fill(HIST("hEta_3"), hmpid.etaTrack());
339+
registryDA.fill(HIST("hPhi_3"), hmpid.phiTrack());
340+
registryDA.fill(HIST("hAllTracks_3"), momAbs);
341+
if (passQandD) {
342+
registryDA.fill(HIST("hCutQandD_3"), momAbs);
343+
}
344+
if (isPos) {
345+
registryDA.fill(HIST("hAllTracks_Pos_3"), momAbs);
346+
if (passQandD) {
347+
registryDA.fill(HIST("hCutQandD_Pos_3"), momAbs);
348+
}
349+
}
350+
if (isNeg) {
351+
registryDA.fill(HIST("hAllTracks_Neg_3"), momAbs);
352+
if (passQandD) {
353+
registryDA.fill(HIST("hCutQandD_Neg_3"), momAbs);
354+
}
355+
}
356+
break;
357+
358+
case Rich4:
359+
registryDA.fill(HIST("hEta_4"), hmpid.etaTrack());
360+
registryDA.fill(HIST("hPhi_4"), hmpid.phiTrack());
361+
registryDA.fill(HIST("hAllTracks_4"), momAbs);
362+
if (passQandD) {
363+
registryDA.fill(HIST("hCutQandD_4"), momAbs);
364+
}
365+
if (isPos) {
366+
registryDA.fill(HIST("hAllTracks_Pos_4"), momAbs);
367+
if (passQandD) {
368+
registryDA.fill(HIST("hCutQandD_Pos_4"), momAbs);
369+
}
370+
}
371+
if (isNeg) {
372+
registryDA.fill(HIST("hAllTracks_Neg_4"), momAbs);
373+
if (passQandD) {
374+
registryDA.fill(HIST("hCutQandD_Neg_4"), momAbs);
375+
}
376+
}
377+
break;
378+
379+
case Rich5:
380+
registryDA.fill(HIST("hEta_5"), hmpid.etaTrack());
381+
registryDA.fill(HIST("hPhi_5"), hmpid.phiTrack());
382+
registryDA.fill(HIST("hAllTracks_5"), momAbs);
383+
if (passQandD) {
384+
registryDA.fill(HIST("hCutQandD_5"), momAbs);
385+
}
386+
if (isPos) {
387+
registryDA.fill(HIST("hAllTracks_Pos_5"), momAbs);
388+
if (passQandD) {
389+
registryDA.fill(HIST("hCutQandD_Pos_5"), momAbs);
390+
}
391+
}
392+
if (isNeg) {
393+
registryDA.fill(HIST("hAllTracks_Neg_5"), momAbs);
394+
if (passQandD) {
395+
registryDA.fill(HIST("hCutQandD_Neg_5"), momAbs);
396+
}
397+
}
398+
break;
399+
400+
case Rich6:
401+
registryDA.fill(HIST("hEta_6"), hmpid.etaTrack());
402+
registryDA.fill(HIST("hPhi_6"), hmpid.phiTrack());
403+
registryDA.fill(HIST("hAllTracks_6"), momAbs);
404+
if (passQandD) {
405+
registryDA.fill(HIST("hCutQandD_6"), momAbs);
406+
}
407+
if (isPos) {
408+
registryDA.fill(HIST("hAllTracks_Pos_6"), momAbs);
409+
if (passQandD) {
410+
registryDA.fill(HIST("hCutQandD_Pos_6"), momAbs);
411+
}
412+
}
413+
if (isNeg) {
414+
registryDA.fill(HIST("hAllTracks_Neg_6"), momAbs);
415+
if (passQandD) {
416+
registryDA.fill(HIST("hCutQandD_Neg_6"), momAbs);
417+
}
418+
}
419+
break;
420+
421+
default:
422+
break;
262423
}
263-
if (chamber == Rich5) {
264-
registryDA.fill(HIST("hEta_5"), hmpid.etaTrack());
265-
registryDA.fill(HIST("hPhi_5"), hmpid.phiTrack());
424+
425+
// -------------------------
426+
// TPC + TOF PID distributions
427+
// -------------------------
428+
if (isPos) {
429+
registryDA.fill(HIST("pidTPC_TOF_p_ch_DePos"), momAbs, hmpid.tpcNSigmaDe(), hmpid.tofNSigmaDe(), chamber);
266430
}
267-
if (chamber == Rich6) {
268-
registryDA.fill(HIST("hEta_6"), hmpid.etaTrack());
269-
registryDA.fill(HIST("hPhi_6"), hmpid.phiTrack());
431+
if (isNeg) {
432+
registryDA.fill(HIST("pidTPC_TOF_p_ch_DeNeg"), momAbs, hmpid.tpcNSigmaDe(), hmpid.tofNSigmaDe(), chamber);
270433
}
271434

272435
// -------------------------
@@ -281,12 +444,25 @@ struct HmpidDeuteron {
281444
// post TPC cut
282445
// -------------------------
283446
if (isPos) {
284-
registryDA.fill(HIST("nSigmaTPC_vs_momHMPID_Cut_DePos"),
285-
momAbs, hmpid.tpcNSigmaDe());
447+
registryDA.fill(HIST("nSigmaTPC_vs_momHMPID_Cut_DePos"), momAbs, hmpid.tpcNSigmaDe());
448+
registryDA.fill(HIST("nSigmaTOF_vs_momHMPID_TPCOnly_DePos"), momAbs, hmpid.tofNSigmaDe());
286449
}
287450
if (isNeg) {
288-
registryDA.fill(HIST("nSigmaTPC_vs_momHMPID_Cut_DeNeg"),
289-
momAbs, hmpid.tpcNSigmaDe());
451+
registryDA.fill(HIST("nSigmaTPC_vs_momHMPID_Cut_DeNeg"), momAbs, hmpid.tpcNSigmaDe());
452+
registryDA.fill(HIST("nSigmaTOF_vs_momHMPID_TPCOnly_DeNeg"), momAbs, hmpid.tofNSigmaDe());
453+
}
454+
455+
if (isPos && chamber == Rich2) {
456+
registryDA.fill(HIST("nSigmaTOF_vs_momHMPID_TPCOnly_DePos_4cm"), momAbs, hmpid.tofNSigmaDe());
457+
}
458+
if (isPos && chamber == Rich4) {
459+
registryDA.fill(HIST("nSigmaTOF_vs_momHMPID_TPCOnly_DePos_8cm"), momAbs, hmpid.tofNSigmaDe());
460+
}
461+
if (isNeg && chamber == Rich2) {
462+
registryDA.fill(HIST("nSigmaTOF_vs_momHMPID_TPCOnly_DeNeg_4cm"), momAbs, hmpid.tofNSigmaDe());
463+
}
464+
if (isNeg && chamber == Rich4) {
465+
registryDA.fill(HIST("nSigmaTOF_vs_momHMPID_TPCOnly_DeNeg_8cm"), momAbs, hmpid.tofNSigmaDe());
290466
}
291467

292468
registryDA.fill(HIST("hMass_postDeuteron"), mass);
@@ -316,6 +492,13 @@ struct HmpidDeuteron {
316492
// DEUTERON CANDIDATES AFTER ALL CUTS
317493
// -------------------------
318494

495+
// Pb-Pb collisions centrality requirement
496+
if (collisionsPbPb) {
497+
if (hmpid.centrality() < centralityCut) {
498+
continue;
499+
}
500+
}
501+
319502
// -------------------------
320503
// deltaR per chamber (Pos/Neg)
321504
// -------------------------

0 commit comments

Comments
 (0)