Skip to content

Commit 7e24a56

Browse files
authored
[PWGLF] Common PMT, Sum of Towers, and ZDC amp (#9857)
1 parent 607db4d commit 7e24a56

File tree

1 file changed

+139
-117
lines changed

1 file changed

+139
-117
lines changed

PWGLF/Tasks/GlobalEventProperties/uccZdc.cxx

Lines changed: 139 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -66,24 +66,26 @@ struct UccZdc {
6666
Configurable<float> maxT0CcentCut{"maxT0CcentCut", 90.0, "Max T0C Cent. cut"};
6767

6868
// Track selection settings
69-
Configurable<int> minItsNclusters{"minItsNclusters", 5,
70-
"minimum number of ITS clusters"};
71-
Configurable<int> minTpcNclusters{"minTpcNclusters", 70,
72-
"minimum number of TPC clusters"};
73-
Configurable<int> minTpcNcrossedRows{"minTpcNcrossedRows", 70, "minimum number of TPC crossed pad rows"};
74-
Configurable<double> maxChiSquareTpc{"maxChiSquareTpc", 4.0, "maximum TPC chi^2/Ncls"};
75-
Configurable<double> maxChiSquareIts{"maxChiSquareIts", 36.0,
76-
"maximum ITS chi^2/Ncls"};
69+
// Configurable<int> minItsNclusters{"minItsNclusters", 5,
70+
// "minimum number of ITS clusters"};
71+
// Configurable<int> minTpcNclusters{"minTpcNclusters", 70,
72+
// "minimum number of TPC clusters"};
73+
// Configurable<int> minTpcNcrossedRows{
74+
// "minTpcNcrossedRows", 70, "minimum number of TPC crossed pad rows"};
75+
// Configurable<double> maxChiSquareTpc{"maxChiSquareTpc", 4.0,
76+
// "maximum TPC chi^2/Ncls"};
77+
// Configurable<double> maxChiSquareIts{"maxChiSquareIts", 36.0,
78+
// "maximum ITS chi^2/Ncls"};
7779
Configurable<double> minPt{"minPt", 0.1, "minimum pt of the tracks"};
7880
Configurable<double> maxPt{"maxPt", 50., "maximum pt of the tracks"};
7981
Configurable<double> minEta{"minEta", -0.8, "minimum eta"};
8082
Configurable<double> maxEta{"maxEta", +0.8, "maximum eta"};
81-
Configurable<double> maxDcaxy{"maxDcaxy", 0.05, "Maximum DCAxy"};
82-
Configurable<double> maxDcaz{"maxDcaz", 0.05, "Maximum DCAz"};
83-
Configurable<bool> setDCAselectionPtDep{"setDCAselectionPtDep", true,
84-
"require pt dependent selection"};
85-
Configurable<double> par0{"par0", 0.0105, "par 0"};
86-
Configurable<double> par1{"par1", 0.035, "par 1"};
83+
// Configurable<double> maxDcaxy{"maxDcaxy", 0.05, "Maximum DCAxy"};
84+
// Configurable<double> maxDcaz{"maxDcaz", 0.05, "Maximum DCAz"};
85+
// Configurable<bool> setDCAselectionPtDep{"setDCAselectionPtDep", true,
86+
// "require pt dependent selection"};
87+
// Configurable<double> par0{"par0", 0.0105, "par 0"};
88+
// Configurable<double> par1{"par1", 0.035, "par 1"};
8789
// Configurables, binning
8890
Configurable<int> nBinsAmpFV0{"nBinsAmpFV0", 1000,
8991
"Number of bins FV0 amplitude"};
@@ -94,6 +96,7 @@ struct UccZdc {
9496
Configurable<int> nBinsNch{"nBinsNch", 2500, "# of bins for midrapidity Nch"};
9597
Configurable<float> maxNch{"maxNch", 2500, "Max Nch at midrapidity"};
9698
Configurable<int> nBinsZDC{"nBinsZDC", 1025, "nBinsZDC"};
99+
Configurable<int> nBinsZEM{"nBinsZEM", 100, "nBinsZEM"};
97100
Configurable<float> maxZN{"maxZN", 4099.5, "Max ZN signal"};
98101
Configurable<float> maxZP{"maxZP", 3099.5, "Max ZP signal"};
99102
Configurable<float> maxZEM{"maxZEM", 3099.5, "Max ZEM signal"};
@@ -103,18 +106,22 @@ struct UccZdc {
103106
Configurable<float> minMeanpT{"minMeanpT", 0.5, "minimum [pT]"};
104107
Configurable<float> maxMeanpT{"maxMeanpT", 1.1, "maximum [pT]"};
105108
Configurable<int> nBinsMeanpT{"nBinsMeanpT", 160, "# bins [pT]"};
106-
ConfigurableAxis binsPt{"binsPt", {VARIABLE_WIDTH, 0., 0.1, 0.25, 0.5, 1., 2., 4., 6., 8., 10., 20.}, "Binning of the pT axis"};
107-
ConfigurableAxis binsCent{"binsCent", {VARIABLE_WIDTH, 0., 10., 20., 30., 40., 50., 60., 70., 80., 90., 100.}, "T0C centrality binning"};
109+
ConfigurableAxis binsPt{"binsPt", {VARIABLE_WIDTH, 0., 0.1, 0.25, 0.5, 1., 2., 4., 6., 8., 10., 20.}, "pT binning"};
110+
ConfigurableAxis binsCent{"binsCent", {VARIABLE_WIDTH, 0., 10., 20., 30., 40., 50., 60., 70., 80., 90., 100.}, "T0C binning"};
108111

109112
// Configurable flags ZDC
113+
Configurable<bool> isAmpZDC{"isAmpZDC", false, "Use amplitude ZDC?"};
114+
Configurable<bool> isCommPMT{"isCommPMT", false, "Use common PMT ZDC?"};
115+
Configurable<bool> isSumTowers{"isSumTowers", false, "Use sum of Tow ZDC?"};
110116
Configurable<bool> isTDCcut{"isTDCcut", false, "Use TDC cut?"};
111117
Configurable<bool> isZEMcut{"isZEMcut", true, "Use ZEM cut?"};
112118
Configurable<float> zemCut{"zemCut", 1000.0, "ZEM cut"};
113119
Configurable<float> tdcCut{"tdcCut", 1.0, "TDC cut"};
114-
Configurable<float> tdcZNmincut{"tdcZNmincut", -4.0, "Min ZN TDC cut"};
115-
Configurable<float> tdcZNmaxcut{"tdcZNmaxcut", -4.0, "Max ZN TDC cut"};
116-
Configurable<float> tdcZPmincut{"tdcZPmincut", -4.0, "Min ZP TDC cut"};
117-
Configurable<float> tdcZPmaxcut{"tdcZPmaxcut", -4.0, "Max ZP TDC cut"};
120+
121+
// Configurable<float> tdcZNmincut{"tdcZNmincut", -4.0, "Min ZN TDC cut"};
122+
// Configurable<float> tdcZNmaxcut{"tdcZNmaxcut", -4.0, "Max ZN TDC cut"};
123+
// Configurable<float> tdcZPmincut{"tdcZPmincut", -4.0, "Min ZP TDC cut"};
124+
// Configurable<float> tdcZPmaxcut{"tdcZPmaxcut", -4.0, "Max ZP TDC cut"};
118125

119126
// Filters
120127
Filter collFilter = (nabs(aod::collision::posZ) < posZcut);
@@ -185,10 +192,6 @@ struct UccZdc {
185192
registryData.get<TH1>(HIST("hEventCounter"))
186193
->GetXaxis()
187194
->SetBinLabel(8, "min < t0c < max");
188-
registryData.add("ZNAcomm", "; ZNA common energy; Entries",
189-
{HistType::kTH1F, {{nBinsZDC, -0.5, maxZN}}});
190-
registryData.add("ZNCcomm", "; ZNC common energy; Entries",
191-
{HistType::kTH1F, {{nBinsZDC, -0.5, maxZN}}});
192195
registryData.add("ZNA", "ZNA; ZNA amplitude; Entries",
193196
{HistType::kTH1F, {{nBinsZDC, -0.5, maxZN}}});
194197
registryData.add("ZPA", "ZPA; ZPA amplitude; Entries",
@@ -198,12 +201,12 @@ struct UccZdc {
198201
registryData.add("ZPC", "ZPC; ZPC amplitude; Entries",
199202
{HistType::kTH1F, {{nBinsZDC, -0.5, maxZP}}});
200203
registryData.add("ZEM1", "ZEM1; ZEM1 amplitude; Entries",
201-
{HistType::kTH1F, {{nBinsZDC, -0.5, maxZEM}}});
204+
{HistType::kTH1F, {{nBinsZEM, -0.5, maxZEM}}});
202205
registryData.add("ZEM2", "ZEM2; ZEM2 amplitude; Entries",
203-
{HistType::kTH1F, {{nBinsZDC, -0.5, maxZEM}}});
206+
{HistType::kTH1F, {{nBinsZEM, -0.5, maxZEM}}});
204207
registryData.add("ZNvsZEM", "ZNvsZEM; ZEM; ZNA+ZNC",
205208
{HistType::kTH2F,
206-
{{{nBinsZDC, -0.5, maxZEM}, {nBinsZDC, -0.5, maxZN}}}});
209+
{{{nBinsZDC, -0.5, maxZEM}, {nBinsZEM, -0.5, maxZN}}}});
207210
registryData.add("ZNAvsZNC", "ZNAvsZNC; ZNC; ZNA",
208211
{HistType::kTH2F,
209212
{{{nBinsZDC, -0.5, maxZN}, {nBinsZDC, -0.5, maxZN}}}});
@@ -231,11 +234,11 @@ struct UccZdc {
231234
registryData.add(
232235
"ZEM1vstdc", "ZEM1vstdc; time ZEM1; ZEM1",
233236
{HistType::kTH2F,
234-
{{{nBinsTDC, minTdc, maxTdc}, {nBinsZDC, -0.5, maxZEM}}}});
237+
{{{nBinsTDC, minTdc, maxTdc}, {nBinsZEM, -0.5, maxZEM}}}});
235238
registryData.add(
236239
"ZEM2vstdc", "ZEM2vstdc; time ZEM2; ZEM2",
237240
{HistType::kTH2F,
238-
{{{nBinsTDC, minTdc, maxTdc}, {nBinsZDC, -0.5, maxZEM}}}});
241+
{{{nBinsTDC, minTdc, maxTdc}, {nBinsZEM, -0.5, maxZEM}}}});
239242
registryData.add(
240243
"debunch", "ZN sum vs. ZN diff.; t_{ZDC}-t_{ZDA}; t_{ZDC}+t_{ZDA}",
241244
{HistType::kTH2F,
@@ -329,28 +332,65 @@ struct UccZdc {
329332
}
330333
registryData.fill(HIST("hEventCounter"), 2.5);
331334

332-
auto aZNA = foundBC.zdc().amplitudeZNA();
333-
auto aZNC = foundBC.zdc().amplitudeZNC();
334-
auto aZPA = foundBC.zdc().amplitudeZPA();
335-
auto aZPC = foundBC.zdc().amplitudeZPC();
336-
auto aZEM1 = foundBC.zdc().amplitudeZEM1();
337-
auto aZEM2 = foundBC.zdc().amplitudeZEM2();
338-
auto tZEM1 = foundBC.zdc().timeZEM1();
339-
auto tZEM2 = foundBC.zdc().timeZEM2();
340-
auto tZNA = foundBC.zdc().timeZNA();
341-
auto tZNC = foundBC.zdc().timeZNC();
342-
auto tZPA = foundBC.zdc().timeZPA();
343-
auto tZPC = foundBC.zdc().timeZPC();
344-
double tZDCdif{tZNC + tZPC - tZNA - tZPA};
345-
double tZDCsum{tZNC + tZPC + tZNA + tZPA};
346-
float sumZNs{aZNA + aZNC};
347-
float sumT0s{0.};
348-
float aT0A{0.};
349-
float aT0C{0.};
350-
float aV0A{0.};
351-
double sumZEMs{0.};
335+
float aT0A{0.0};
336+
float aT0C{0.0};
337+
float aV0A{0.0};
338+
float sumT0s{0.0};
339+
float znA{0.0};
340+
float znC{0.0};
341+
float zpA{0.0};
342+
float zpC{0.0};
343+
float aZEM1{0.0};
344+
float aZEM2{0.0};
345+
float tZEM1{0.0};
346+
float tZEM2{0.0};
347+
float tZNA{0.0};
348+
float tZNC{0.0};
349+
float tZPA{0.0};
350+
float tZPC{0.0};
351+
float sumZNs{0.0};
352+
float sumZEMs{0.0};
353+
float tZDCdif{0.0};
354+
float tZDCsum{0.0};
355+
356+
aZEM1 = foundBC.zdc().amplitudeZEM1();
357+
aZEM2 = foundBC.zdc().amplitudeZEM2();
358+
tZEM1 = foundBC.zdc().timeZEM1();
359+
tZEM2 = foundBC.zdc().timeZEM2();
360+
tZNA = foundBC.zdc().timeZNA();
361+
tZNC = foundBC.zdc().timeZNC();
362+
tZPA = foundBC.zdc().timeZPA();
363+
tZPC = foundBC.zdc().timeZPC();
364+
tZDCdif = tZNC + tZPC - tZNA - tZPA;
365+
tZDCsum = tZNC + tZPC + tZNA + tZPA;
366+
367+
if (isAmpZDC) {
368+
znA = foundBC.zdc().amplitudeZNA();
369+
znC = foundBC.zdc().amplitudeZNC();
370+
zpA = foundBC.zdc().amplitudeZPA();
371+
zpC = foundBC.zdc().amplitudeZPC();
372+
} else if (isCommPMT) {
373+
znA = foundBC.zdc().energyCommonZNA();
374+
znC = foundBC.zdc().energyCommonZNC();
375+
zpA = foundBC.zdc().energyCommonZPA();
376+
zpC = foundBC.zdc().energyCommonZPC();
377+
} else if (isSumTowers) {
378+
for (const auto& eZNA : foundBC.zdc().energySectorZNA())
379+
znA += eZNA;
380+
for (const auto& eZNC : foundBC.zdc().energySectorZNC())
381+
znC += eZNC;
382+
for (const auto& eZPA : foundBC.zdc().energySectorZPA())
383+
zpA += eZPA;
384+
for (const auto& eZPC : foundBC.zdc().energySectorZPC())
385+
zpC += eZPC;
386+
} else {
387+
znA = -999.;
388+
znC = -999.;
389+
zpA = -999.;
390+
zpC = -999.;
391+
}
392+
sumZNs = znA + znC;
352393
sumZEMs = aZEM1 + aZEM2;
353-
float nchTPC = collision.multTPC();
354394

355395
if (foundBC.has_ft0()) {
356396
for (const auto& amplitude : foundBC.ft0().amplitudeA()) {
@@ -399,32 +439,26 @@ struct UccZdc {
399439

400440
registryData.fill(HIST("hEventCounter"), 7.5);
401441
registryData.fill(HIST("hT0C_cent"), collision.centFT0C());
402-
registryData.get<TH1>(HIST("ZNA"))->Fill(aZNA);
403-
registryData.get<TH1>(HIST("ZNC"))->Fill(aZNC);
404-
registryData.get<TH1>(HIST("ZPA"))->Fill(aZPA);
405-
registryData.get<TH1>(HIST("ZPC"))->Fill(aZPC);
406-
registryData.get<TH2>(HIST("ZNAvsZNC"))->Fill(aZNC, aZNA);
407-
registryData.get<TH2>(HIST("ZNAvsZPA"))->Fill(aZPA, aZNA);
408-
registryData.get<TH2>(HIST("ZNCvsZPC"))->Fill(aZPC, aZNC);
409-
registryData.get<TH2>(HIST("ZPAvsZPC"))->Fill(aZPC, aZPA);
410-
registryData.get<TH2>(HIST("ZNAvsNch"))->Fill(nchTPC, aZNA);
411-
registryData.get<TH2>(HIST("ZNCvsNch"))->Fill(nchTPC, aZNC);
412-
registryData.get<TH2>(HIST("ZNvsZEM"))->Fill(sumZEMs, sumZNs);
413-
registryData.get<TH2>(HIST("ZNvsFV0A"))->Fill(aV0A / 100., sumZNs);
414-
registryData.get<TH2>(HIST("ZNvsFT0"))->Fill(sumT0s / 100., sumZNs);
415-
registryData.get<TH1>(HIST("ZNAcomm"))
416-
->Fill(foundBC.zdc().energyCommonZNA());
417-
registryData.get<TH1>(HIST("ZNCcomm"))
418-
->Fill(foundBC.zdc().energyCommonZNC());
419-
registryData.get<TH1>(HIST("ZEM1"))->Fill(aZEM1);
420-
registryData.get<TH1>(HIST("ZEM2"))->Fill(aZEM2);
421-
registryData.get<TH2>(HIST("ZNCvstdc"))->Fill(tZNC, aZNC);
422-
registryData.get<TH2>(HIST("ZNAvstdc"))->Fill(tZNA, aZNA);
423-
registryData.get<TH2>(HIST("ZPCvstdc"))->Fill(tZPC, aZPC);
424-
registryData.get<TH2>(HIST("ZPAvstdc"))->Fill(tZPA, aZPA);
425-
registryData.get<TH2>(HIST("ZEM1vstdc"))->Fill(tZEM1, aZEM1);
426-
registryData.get<TH2>(HIST("ZEM2vstdc"))->Fill(tZEM2, aZEM2);
427-
registryData.get<TH2>(HIST("debunch"))->Fill(tZDCdif, tZDCsum);
442+
registryData.fill(HIST("ZNA"), znA);
443+
registryData.fill(HIST("ZNC"), znC);
444+
registryData.fill(HIST("ZPA"), zpA);
445+
registryData.fill(HIST("ZPC"), zpC);
446+
registryData.fill(HIST("ZNAvsZNC"), znC, znA);
447+
registryData.fill(HIST("ZNAvsZPA"), zpA, znA);
448+
registryData.fill(HIST("ZNCvsZPC"), zpC, znC);
449+
registryData.fill(HIST("ZPAvsZPC"), zpC, zpA);
450+
registryData.fill(HIST("ZNvsZEM"), sumZEMs, sumZNs);
451+
registryData.fill(HIST("ZNvsFV0A"), aV0A / 100., sumZNs);
452+
registryData.fill(HIST("ZNvsFT0"), sumT0s / 100., sumZNs);
453+
registryData.fill(HIST("ZEM1"), aZEM1);
454+
registryData.fill(HIST("ZEM2"), aZEM2);
455+
registryData.fill(HIST("ZNCvstdc"), tZNC, znC);
456+
registryData.fill(HIST("ZNAvstdc"), tZNA, znA);
457+
registryData.fill(HIST("ZPCvstdc"), tZPC, zpC);
458+
registryData.fill(HIST("ZPAvstdc"), tZPA, zpA);
459+
registryData.fill(HIST("ZEM1vstdc"), tZEM1, aZEM1);
460+
registryData.fill(HIST("ZEM2vstdc"), tZEM2, aZEM2);
461+
registryData.fill(HIST("debunch"), tZDCdif, tZDCsum);
428462

429463
float meanpT{0.0};
430464
const int64_t nch{tracks.size()};
@@ -433,7 +467,6 @@ struct UccZdc {
433467
// if (!track.isGlobalTrack()) {
434468
// continue;
435469
// }
436-
437470
// if (track.pt() < minPt || track.pt() > maxPt) {
438471
// continue;
439472
// }
@@ -450,8 +483,10 @@ struct UccZdc {
450483
if (nch > 0) {
451484
meanpT /= nch;
452485
}
453-
registryData.get<TH3>(HIST("ZNCvsNchvspT"))->Fill(nch, aZNC, meanpT);
454-
registryData.get<TH3>(HIST("ZNAvsNchvspT"))->Fill(nch, aZNA, meanpT);
486+
registryData.fill(HIST("ZNAvsNch"), nch, znA);
487+
registryData.fill(HIST("ZNCvsNch"), nch, znC);
488+
registryData.fill(HIST("ZNCvsNchvspT"), nch, znC, meanpT);
489+
registryData.fill(HIST("ZNAvsNchvspT"), nch, znA, meanpT);
455490
}
456491
PROCESS_SWITCH(UccZdc, processZdcCollAss,
457492
"Processing ZDC w. collision association", true);
@@ -617,44 +652,31 @@ struct UccZdc {
617652
PROCESS_SWITCH(UccZdc, processMC, "process pure simulation", false);
618653

619654
// Single-Track Selection
620-
template <typename T2>
621-
bool passedTrackSelection(const T2& track)
622-
{
623-
if (track.eta() < minEta || track.eta() > maxEta)
624-
return false;
625-
if (track.pt() < minPt)
626-
return false;
627-
628-
if (!track.hasITS())
629-
return false;
630-
if (track.itsNCls() < minItsNclusters)
631-
return false;
632-
if (!track.hasTPC())
633-
return false;
634-
if (track.tpcNClsFound() < minTpcNclusters)
635-
return false;
636-
if (track.tpcNClsCrossedRows() < minTpcNcrossedRows)
637-
return false;
638-
if (track.tpcChi2NCl() > maxChiSquareTpc)
639-
return false;
640-
if (track.itsChi2NCl() > maxChiSquareIts)
641-
return false;
642-
// pt-dependent selection
643-
if (setDCAselectionPtDep) {
644-
if (std::fabs(track.dcaXY()) > (par0 + par1 / track.pt()))
645-
return false;
646-
if (std::fabs(track.dcaZ()) > (par0 + par1 / track.pt()))
647-
return false;
648-
}
649-
// standard selection
650-
if (!setDCAselectionPtDep) {
651-
if (std::fabs(track.dcaXY()) > maxDcaxy)
652-
return false;
653-
if (std::fabs(track.dcaZ()) > maxDcaz)
654-
return false;
655-
}
656-
return true;
657-
}
655+
// template <typename T2>
656+
// bool passedTrackSelection(const T2& track) {
657+
// if (track.eta() < minEta || track.eta() > maxEta) return false;
658+
// if (track.pt() < minPt) return false;
659+
//
660+
// if (!track.hasITS()) return false;
661+
// if (track.itsNCls() < minItsNclusters) return false;
662+
// if (!track.hasTPC()) return false;
663+
// if (track.tpcNClsFound() < minTpcNclusters) return false;
664+
// if (track.tpcNClsCrossedRows() < minTpcNcrossedRows) return false;
665+
// if (track.tpcChi2NCl() > maxChiSquareTpc) return false;
666+
// if (track.itsChi2NCl() > maxChiSquareIts) return false;
667+
// // pt-dependent selection
668+
// if (setDCAselectionPtDep) {
669+
// if (std::fabs(track.dcaXY()) > (par0 + par1 / track.pt())) return
670+
// false; if (std::fabs(track.dcaZ()) > (par0 + par1 / track.pt())) return
671+
// false;
672+
// }
673+
// // standard selection
674+
// if (!setDCAselectionPtDep) {
675+
// if (std::fabs(track.dcaXY()) > maxDcaxy) return false;
676+
// if (std::fabs(track.dcaZ()) > maxDcaz) return false;
677+
// }
678+
// return true;
679+
// }
658680
};
659681

660682
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)