Skip to content

Commit f879ccb

Browse files
committed
[PWGEM] added sumw2 and correct trigger selection to emcalPi0Qc
1 parent 634f647 commit f879ccb

File tree

1 file changed

+126
-35
lines changed

1 file changed

+126
-35
lines changed

PWGEM/PhotonMeson/Tasks/emcalPi0Qc.cxx

Lines changed: 126 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ struct EmcalPi0Qc {
162162
Configurable<float> mMinOpenAngleCut{"mMinOpenAngleCut", 0.0202, "apply min opening angle cut"};
163163
Configurable<std::string> mClusterDefinition{"mClusterDefinition", "kV3Default", "cluster definition to be selected, e.g. V3Default"};
164164
Configurable<bool> mSplitEMCalDCal{"mSplitEMCalDCal", 0, "Create and fill inv mass histograms for photons on EMCal and DCal individually"};
165+
Configurable<bool> mDoSumw2{"mDoSumw2", 1, "enable Sumw2 for all histograms"};
165166
std::vector<int> mVetoBCIDs;
166167
std::vector<int> mSelectBCIDs;
167168

@@ -205,7 +206,7 @@ struct EmcalPi0Qc {
205206
const AxisSpec ptAxis{pTBinning, "#it{p}_{T} (GeV/#it{c})"};
206207

207208
if (doprocessCollisionMC) {
208-
mHistManager.add("eventsWithoutWeight", "events without weight;;#it{count}", HistType::kTH1F, {{8, 0.5, 8.5}});
209+
mHistManager.add("eventsWithoutWeight", "events without weight;;#it{count}", HistType::kTH1F, {{8, 0.5, 8.5}}, mDoSumw2.value);
209210
auto heventWithoutWeight = mHistManager.get<TH1>(HIST("eventsWithoutWeight"));
210211
heventWithoutWeight->GetXaxis()->SetBinLabel(1, "All events");
211212
heventWithoutWeight->GetXaxis()->SetBinLabel(2, "Has MC collision");
@@ -217,14 +218,14 @@ struct EmcalPi0Qc {
217218
heventWithoutWeight->GetXaxis()->SetBinLabel(8, "EMCal cell>0");
218219

219220
// histogram the number of gap events and signal events (2 bins, bin 1 gap bin 2 signal)
220-
mHistManager.add("signalGapEvents", "number of signal and gap events;;#it{count}", HistType::kTH1F, {{2, 0.5, 2.5}});
221+
mHistManager.add("signalGapEvents", "number of signal and gap events;;#it{count}", HistType::kTH1F, {{2, 0.5, 2.5}}, mDoSumw2.value);
221222
auto hsignalGapEvents = mHistManager.get<TH1>(HIST("signalGapEvents"));
222223
hsignalGapEvents->GetXaxis()->SetBinLabel(1, "Gap events");
223224
hsignalGapEvents->GetXaxis()->SetBinLabel(2, "Signal events");
224225
}
225226

226227
if (doprocessCollision || doprocessCollisionMC) {
227-
mHistManager.add("events", "events;;#it{count}", HistType::kTH1F, {{7, 0.5, 7.5}});
228+
mHistManager.add("events", "events;;#it{count}", HistType::kTH1F, {{7, 0.5, 7.5}}, mDoSumw2.value);
228229
auto heventType = mHistManager.get<TH1>(HIST("events"));
229230
heventType->GetXaxis()->SetBinLabel(1, "All events");
230231
heventType->GetXaxis()->SetBinLabel(2, "sel8");
@@ -233,49 +234,65 @@ struct EmcalPi0Qc {
233234
heventType->GetXaxis()->SetBinLabel(5, "z<10cm");
234235
heventType->GetXaxis()->SetBinLabel(6, "unique col");
235236
heventType->GetXaxis()->SetBinLabel(7, "EMCal cell>0");
236-
mHistManager.add("eventVertexZAll", "z-vertex of event (all events)", HistType::kTH1F, {{200, -20, 20}});
237-
mHistManager.add("eventVertexZSelected", "z-vertex of event (selected events)", HistType::kTH1F, {{200, -20, 20}});
238-
mHistManager.add("hEventPerTime", "number of events per time", HistType::kTH1F, {collisionTimeAxis});
237+
mHistManager.add("eventVertexZAll", "z-vertex of event (all events)", HistType::kTH1F, {{200, -20, 20}}, mDoSumw2.value);
238+
mHistManager.add("eventVertexZSelected", "z-vertex of event (selected events)", HistType::kTH1F, {{200, -20, 20}}, mDoSumw2.value);
239+
mHistManager.add("hEventPerTime", "number of events per time", HistType::kTH1F, {collisionTimeAxis}, mDoSumw2.value);
240+
241+
// emcal hardware triggers
242+
mHistManager.add("eventsEMCALHardwareTriggers", "events with EMCal hardware triggers;;#it{count}", HistType::kTH1F, {{12, 0.5, 12.5}}, mDoSumw2.value);
243+
auto heventsEMCALHardwareTriggers = mHistManager.get<TH1>(HIST("eventsEMCALHardwareTriggers"));
244+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(1, "kTVXinEMC");
245+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(2, "kEMC7");
246+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(3, "kDMC7");
247+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(4, "kEG1");
248+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(5, "kEG2");
249+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(6, "kDG1");
250+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(7, "kDG2");
251+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(8, "kEJ1");
252+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(9, "kEJ2");
253+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(10, "kDJ1");
254+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(11, "kDJ2");
255+
heventsEMCALHardwareTriggers->GetXaxis()->SetBinLabel(12, "All");
239256
}
240257

241258
if (doprocessAmbiguous) {
242-
mHistManager.add("eventBCAll", "Bunch crossing ID of event (all events)", HistType::kTH1F, {bcAxis});
243-
mHistManager.add("eventBCSelected", "Bunch crossing ID of event (selected events)", HistType::kTH1F, {bcAxis});
259+
mHistManager.add("eventBCAll", "Bunch crossing ID of event (all events)", HistType::kTH1F, {bcAxis}, mDoSumw2.value);
260+
mHistManager.add("eventBCSelected", "Bunch crossing ID of event (selected events)", HistType::kTH1F, {bcAxis}, mDoSumw2.value);
244261
}
245262
// cluster properties
246263
for (const bool& iBeforeCuts : {false, true}) {
247264
const char* clusterDirectory = iBeforeCuts ? "ClustersBeforeCuts" : "ClustersAfterCuts";
248-
mHistManager.add(Form("%s/clusterE", clusterDirectory), "Energy of cluster", HistType::kTH1F, {energyAxis});
249-
mHistManager.add(Form("%s/clusterE_SimpleBinning", clusterDirectory), "Energy of cluster", HistType::kTH1F, {{400, 0, 100, "#it{E} (GeV)"}});
250-
mHistManager.add(Form("%s/clusterTime", clusterDirectory), "Time of cluster", HistType::kTH1F, {{500, -250, 250, "#it{t}_{cls} (ns)"}});
251-
mHistManager.add(Form("%s/clusterEtaPhi", clusterDirectory), "Eta and phi of cluster", HistType::kTH2F, {{100, -1, 1, "#eta"}, {100, 0, o2::constants::math::TwoPI, "#phi"}});
252-
mHistManager.add(Form("%s/clusterM02", clusterDirectory), "M02 of cluster", HistType::kTH1F, {{400, 0, 5, "#it{M}_{02}"}});
253-
mHistManager.add(Form("%s/clusterM20", clusterDirectory), "M20 of cluster", HistType::kTH1F, {{400, 0, 2.5, "#it{M}_{20}"}});
254-
mHistManager.add(Form("%s/clusterNLM", clusterDirectory), "Number of local maxima of cluster", HistType::kTH1I, {{10, 0, 10, "#it{N}_{local maxima}"}});
255-
mHistManager.add(Form("%s/clusterNCells", clusterDirectory), "Number of cells in cluster", HistType::kTH1I, {{50, 0, 50, "#it{N}_{cells}"}});
256-
mHistManager.add(Form("%s/clusterDistanceToBadChannel", clusterDirectory), "Distance to bad channel", HistType::kTH1F, {{100, 0, 100, "#it{d}"}});
265+
mHistManager.add(Form("%s/clusterE", clusterDirectory), "Energy of cluster", HistType::kTH1F, {energyAxis}, mDoSumw2.value);
266+
mHistManager.add(Form("%s/clusterE_SimpleBinning", clusterDirectory), "Energy of cluster", HistType::kTH1F, {{400, 0, 100, "#it{E} (GeV)"}}, mDoSumw2.value);
267+
mHistManager.add(Form("%s/clusterTime", clusterDirectory), "Time of cluster", HistType::kTH1F, {{500, -250, 250, "#it{t}_{cls} (ns)"}}, mDoSumw2.value);
268+
mHistManager.add(Form("%s/clusterEtaPhi", clusterDirectory), "Eta and phi of cluster", HistType::kTH2F, {{100, -1, 1, "#eta"}, {100, 0, o2::constants::math::TwoPI, "#phi"}}, mDoSumw2.value);
269+
mHistManager.add(Form("%s/clusterM02", clusterDirectory), "M02 of cluster", HistType::kTH1F, {{400, 0, 5, "#it{M}_{02}"}}, mDoSumw2.value);
270+
mHistManager.add(Form("%s/clusterM20", clusterDirectory), "M20 of cluster", HistType::kTH1F, {{400, 0, 2.5, "#it{M}_{20}"}}, mDoSumw2.value);
271+
mHistManager.add(Form("%s/clusterNLM", clusterDirectory), "Number of local maxima of cluster", HistType::kTH1I, {{10, 0, 10, "#it{N}_{local maxima}"}}, mDoSumw2.value);
272+
mHistManager.add(Form("%s/clusterNCells", clusterDirectory), "Number of cells in cluster", HistType::kTH1I, {{50, 0, 50, "#it{N}_{cells}"}}, mDoSumw2.value);
273+
mHistManager.add(Form("%s/clusterDistanceToBadChannel", clusterDirectory), "Distance to bad channel", HistType::kTH1F, {{100, 0, 100, "#it{d}"}}, mDoSumw2.value);
257274
}
258275

259276
// meson related histograms
260-
mHistManager.add("invMassVsPt", "invariant mass and pT of meson candidates", HistType::kTH2F, {invmassAxis, ptAxis});
261-
mHistManager.add("invMassVsPtBackground", "invariant mass and pT of background meson candidates", HistType::kTH2F, {invmassAxis, ptAxis});
262-
mHistManager.add("invMassVsPtMixedBackground", "invariant mass and pT of mixed background meson candidates", HistType::kTH2F, {invmassAxis, ptAxis});
277+
mHistManager.add("invMassVsPt", "invariant mass and pT of meson candidates", HistType::kTH2F, {invmassAxis, ptAxis}, mDoSumw2.value);
278+
mHistManager.add("invMassVsPtBackground", "invariant mass and pT of background meson candidates", HistType::kTH2F, {invmassAxis, ptAxis}, mDoSumw2.value);
279+
mHistManager.add("invMassVsPtMixedBackground", "invariant mass and pT of mixed background meson candidates", HistType::kTH2F, {invmassAxis, ptAxis}, mDoSumw2.value);
263280

264281
if (mSplitEMCalDCal) {
265-
mHistManager.add("invMassVsPt_EMCal", "invariant mass and pT of meson candidates with both clusters on EMCal", HistType::kTH2F, {invmassAxis, ptAxis});
266-
mHistManager.add("invMassVsPtBackground_EMCal", "invariant mass and pT of background meson candidates with both clusters on EMCal", HistType::kTH2F, {invmassAxis, ptAxis});
267-
mHistManager.add("invMassVsPtMixedBackground_EMCal", "invariant mass and pT of mixed background meson candidates with both clusters on EMCal", HistType::kTH2F, {invmassAxis, ptAxis});
268-
mHistManager.add("invMassVsPt_DCal", "invariant mass and pT of meson candidates with both clusters on DCal", HistType::kTH2F, {invmassAxis, ptAxis});
269-
mHistManager.add("invMassVsPtBackground_DCal", "invariant mass and pT of background meson candidates with both clusters on DCal", HistType::kTH2F, {invmassAxis, ptAxis});
270-
mHistManager.add("invMassVsPtMixedBackground_DCal", "invariant mass and pT of mixed background meson candidates with both clusters on DCal", HistType::kTH2F, {invmassAxis, ptAxis});
282+
mHistManager.add("invMassVsPt_EMCal", "invariant mass and pT of meson candidates with both clusters on EMCal", HistType::kTH2F, {invmassAxis, ptAxis}, mDoSumw2.value);
283+
mHistManager.add("invMassVsPtBackground_EMCal", "invariant mass and pT of background meson candidates with both clusters on EMCal", HistType::kTH2F, {invmassAxis, ptAxis}, mDoSumw2.value);
284+
mHistManager.add("invMassVsPtMixedBackground_EMCal", "invariant mass and pT of mixed background meson candidates with both clusters on EMCal", HistType::kTH2F, {invmassAxis, ptAxis}, mDoSumw2.value);
285+
mHistManager.add("invMassVsPt_DCal", "invariant mass and pT of meson candidates with both clusters on DCal", HistType::kTH2F, {invmassAxis, ptAxis}, mDoSumw2.value);
286+
mHistManager.add("invMassVsPtBackground_DCal", "invariant mass and pT of background meson candidates with both clusters on DCal", HistType::kTH2F, {invmassAxis, ptAxis}, mDoSumw2.value);
287+
mHistManager.add("invMassVsPtMixedBackground_DCal", "invariant mass and pT of mixed background meson candidates with both clusters on DCal", HistType::kTH2F, {invmassAxis, ptAxis}, mDoSumw2.value);
271288
}
272289

273290
// add histograms per supermodule
274291
for (int ism = 0; ism < 20; ++ism) {
275-
mHistManager.add(Form("clusterTimeVsTimeStamp/clusterTimeVsTimeStampSM%d", ism), Form("Cluster time vs collision timestamp in Supermodule %d", ism), HistType::kTH2F, {clusterTimeAxis, collisionTimeAxis});
276-
mHistManager.add(Form("clusterNcellVsTimeStamp/clusterNCellVsTimeStampSM%d", ism), Form("Cluster number of cells vs collision timestamp in Supermodule %d", ism), HistType::kTH2F, {{50, 0, 50}, collisionTimeAxis});
277-
mHistManager.add(Form("clusterM02VsTimeStamp/clusterM02VsTimeStampSM%d", ism), Form("Cluster M02 vs collision timestamp in Supermodule %d", ism), HistType::kTH2F, {{400, 0, 5}, collisionTimeAxis});
278-
mHistManager.add(Form("mesonInvMassVsTimeStamp/mesonInvMassVsTimeStampSM%d", ism), Form("invariant mass vs collision timestamp in Supermodule %d", ism), HistType::kTH2F, {invmassAxis, collisionTimeAxis});
292+
mHistManager.add(Form("clusterTimeVsTimeStamp/clusterTimeVsTimeStampSM%d", ism), Form("Cluster time vs collision timestamp in Supermodule %d", ism), HistType::kTH2F, {clusterTimeAxis, collisionTimeAxis}, mDoSumw2.value);
293+
mHistManager.add(Form("clusterNcellVsTimeStamp/clusterNCellVsTimeStampSM%d", ism), Form("Cluster number of cells vs collision timestamp in Supermodule %d", ism), HistType::kTH2F, {{50, 0, 50}, collisionTimeAxis}, mDoSumw2.value);
294+
mHistManager.add(Form("clusterM02VsTimeStamp/clusterM02VsTimeStampSM%d", ism), Form("Cluster M02 vs collision timestamp in Supermodule %d", ism), HistType::kTH2F, {{400, 0, 5}, collisionTimeAxis}, mDoSumw2.value);
295+
mHistManager.add(Form("mesonInvMassVsTimeStamp/mesonInvMassVsTimeStampSM%d", ism), Form("invariant mass vs collision timestamp in Supermodule %d", ism), HistType::kTH2F, {invmassAxis, collisionTimeAxis}, mDoSumw2.value);
279296
}
280297

281298
if (mVetoBCID->length()) {
@@ -303,6 +320,7 @@ struct EmcalPi0Qc {
303320
LOG(info) << "mRequireCaloReadout = " << mRequireCaloReadout.value;
304321
LOG(info) << "mRequireEMCalCells = " << mRequireEMCalCells.value;
305322
LOG(info) << "mSplitEMCalDCal = " << mSplitEMCalDCal.value;
323+
LOG(info) << "mDoSumw2 = " << mDoSumw2.value;
306324
}
307325

308326
template <uint8_t supermoduleID>
@@ -481,13 +499,50 @@ struct EmcalPi0Qc {
481499
}
482500

483501
for (const auto& collision : collisions) {
502+
484503
mHistManager.fill(HIST("events"), 1); // Fill "All events" bin of event histogram
485504

505+
// emcal hardware triggers
506+
if (collision.alias_bit(kTVXinEMC)) {
507+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 1);
508+
}
509+
if (collision.alias_bit(kEMC7)) {
510+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 2);
511+
}
512+
if (collision.alias_bit(kDMC7)) {
513+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 3);
514+
}
515+
if (collision.alias_bit(kEG1)) {
516+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 4);
517+
}
518+
if (collision.alias_bit(kEG2)) {
519+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 5);
520+
}
521+
if (collision.alias_bit(kDG1)) {
522+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 6);
523+
}
524+
if (collision.alias_bit(kDG2)) {
525+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 7);
526+
}
527+
if (collision.alias_bit(kEJ1)) {
528+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 8);
529+
}
530+
if (collision.alias_bit(kEJ2)) {
531+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 9);
532+
}
533+
if (collision.alias_bit(kDJ1)) {
534+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 10);
535+
}
536+
if (collision.alias_bit(kDJ2)) {
537+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 11);
538+
}
539+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 12);
540+
486541
if (mDoEventSel.value && (!collision.sel8())) { // Check sel8
487542
continue;
488543
}
489-
mHistManager.fill(HIST("events"), 2); // Fill sel8
490-
if (mRequireCaloReadout.value && !collision.alias_bit(kTVXinEMC)) { // Check whether EMC was read out
544+
mHistManager.fill(HIST("events"), 2);
545+
if (mRequireCaloReadout.value && !(collision.alias_bit(kTVXinEMC) || collision.alias_bit(kEMC7) || collision.alias_bit(kDMC7) || collision.alias_bit(kEG1) || collision.alias_bit(kEG2) || collision.alias_bit(kDG1) || collision.alias_bit(kDG2) || collision.alias_bit(kEJ1) || collision.alias_bit(kEJ2) || collision.alias_bit(kDJ1) || collision.alias_bit(kDJ2))) { // Check whether EMC was read out
491546
continue;
492547
}
493548
mHistManager.fill(HIST("events"), 3); // Fill readout
@@ -562,6 +617,42 @@ struct EmcalPi0Qc {
562617

563618
for (const auto& collision : collisions) {
564619
mWeight = 1.0f;
620+
// emcal hardware triggers
621+
if (collision.alias_bit(kTVXinEMC)) {
622+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 1);
623+
}
624+
if (collision.alias_bit(kEMC7)) {
625+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 2);
626+
}
627+
if (collision.alias_bit(kDMC7)) {
628+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 3);
629+
}
630+
if (collision.alias_bit(kEG1)) {
631+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 4);
632+
}
633+
if (collision.alias_bit(kEG2)) {
634+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 5);
635+
}
636+
if (collision.alias_bit(kDG1)) {
637+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 6);
638+
}
639+
if (collision.alias_bit(kDG2)) {
640+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 7);
641+
}
642+
if (collision.alias_bit(kEJ1)) {
643+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 8);
644+
}
645+
if (collision.alias_bit(kEJ2)) {
646+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 9);
647+
}
648+
if (collision.alias_bit(kDJ1)) {
649+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 10);
650+
}
651+
if (collision.alias_bit(kDJ2)) {
652+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 11);
653+
}
654+
mHistManager.fill(HIST("eventsEMCALHardwareTriggers"), 12);
655+
565656
if (collision.has_mcCollision()) {
566657
mWeight = collision.mcCollision().weight();
567658
if (collision.mcCollision().getSubGeneratorId() == SubGeneratorId::mbGap) {
@@ -580,9 +671,9 @@ struct EmcalPi0Qc {
580671
continue;
581672
}
582673

583-
mHistManager.fill(HIST("events"), 2, mWeight); // Fill sel8
584-
mHistManager.fill(HIST("eventsWithoutWeight"), 3); // Fill sel8 bin of event histogram without weight
585-
if (mRequireCaloReadout.value && !collision.alias_bit(kTVXinEMC)) { // Check whether EMC was read out
674+
mHistManager.fill(HIST("events"), 2, mWeight); // Fill sel8
675+
mHistManager.fill(HIST("eventsWithoutWeight"), 3); // Fill sel8 bin of event histogram without weight
676+
if (mRequireCaloReadout.value && !(collision.alias_bit(kTVXinEMC) || collision.alias_bit(kEMC7) || collision.alias_bit(kDMC7) || collision.alias_bit(kEG1) || collision.alias_bit(kEG2) || collision.alias_bit(kDG1) || collision.alias_bit(kDG2) || collision.alias_bit(kEJ1) || collision.alias_bit(kEJ2) || collision.alias_bit(kDJ1) || collision.alias_bit(kDJ2))) { // Check whether EMC was read out
586677
continue;
587678
}
588679
mHistManager.fill(HIST("events"), 3, mWeight); // Fill readout

0 commit comments

Comments
 (0)