Skip to content

Commit 907597d

Browse files
authored
[PWGEM/Dilepton] add event selection based on good ITS layers (AliceO2Group#9348)
1 parent d808996 commit 907597d

File tree

9 files changed

+157
-12
lines changed

9 files changed

+157
-12
lines changed

PWGEM/Dilepton/Core/Dilepton.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,9 @@ struct Dilepton {
151151
Configurable<bool> cfgRequireNoCollInITSROFStandard{"cfgRequireNoCollInITSROFStandard", false, "require no collision in time range standard"};
152152
Configurable<bool> cfgRequireNoCollInITSROFStrict{"cfgRequireNoCollInITSROFStrict", false, "require no collision in time range strict"};
153153
Configurable<bool> cfgRequireNoHighMultCollInPrevRof{"cfgRequireNoHighMultCollInPrevRof", false, "require no HM collision in previous ITS ROF"};
154+
Configurable<bool> cfgRequireGoodITSLayer3{"cfgRequireGoodITSLayer3", false, "number of inactive chips on ITS layer 3 are below threshold "};
155+
Configurable<bool> cfgRequireGoodITSLayer0123{"cfgRequireGoodITSLayer0123", false, "number of inactive chips on ITS layers 0-3 are below threshold "};
156+
Configurable<bool> cfgRequireGoodITSLayersAll{"cfgRequireGoodITSLayersAll", false, "number of inactive chips on all ITS layers are below threshold "};
154157
} eventcuts;
155158

156159
DielectronCut fDielectronCut;
@@ -538,7 +541,7 @@ struct Dilepton {
538541

539542
if (cfgAnalysisType == static_cast<int>(o2::aod::pwgem::dilepton::utils::pairutil::DileptonAnalysisType::kQC)) {
540543
fRegistry.add("Pair/same/uls/hs", "dilepton", kTHnSparseD, {axis_mass, axis_pt, axis_dca}, true);
541-
fRegistry.add("Pair/same/uls/hDeltaEtaDeltaPhi", "#Delta#eta-#Delta#varphi between 2 tracks;#Delta#varphi (rad.);#Delta#eta;", kTH2D, {{180, -M_PI, M_PI}, {200, -1, +1}}, true);
544+
fRegistry.add("Pair/same/uls/hDeltaEtaDeltaPhi", "#Delta#eta-#Delta#varphi between 2 tracks;#Delta#varphi (rad.);#Delta#eta;", kTH2D, {{180, -M_PI, M_PI}, {400, -2, +2}}, true);
542545
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
543546
fRegistry.add("Pair/same/uls/hMvsPhiV", "m_{ee} vs. #varphi_{V};#varphi_{V} (rad.);m_{ee} (GeV/c^{2})", kTH2D, {{90, 0, M_PI}, {100, 0.0f, 1.0f}}, true); // phiv is only for dielectron
544547
fRegistry.add("Pair/same/uls/hMvsOpAng", "m_{ee} vs. angle between 2 tracks;#omega (rad.);m_{ee} (GeV/c^{2})", kTH2D, {{90, 0, M_PI}, {100, 0.0f, 1.0f}}, true);
@@ -643,6 +646,9 @@ struct Dilepton {
643646
fEMEventCut.SetRequireNoCollInITSROFStandard(eventcuts.cfgRequireNoCollInITSROFStandard);
644647
fEMEventCut.SetRequireNoCollInITSROFStrict(eventcuts.cfgRequireNoCollInITSROFStrict);
645648
fEMEventCut.SetRequireNoHighMultCollInPrevRof(eventcuts.cfgRequireNoHighMultCollInPrevRof);
649+
fEMEventCut.SetRequireGoodITSLayer3(eventcuts.cfgRequireGoodITSLayer3);
650+
fEMEventCut.SetRequireGoodITSLayer0123(eventcuts.cfgRequireGoodITSLayer0123);
651+
fEMEventCut.SetRequireGoodITSLayersAll(eventcuts.cfgRequireGoodITSLayersAll);
646652
}
647653

648654
o2::analysis::MlResponseDielectronSingleTrack<float> mlResponseSingleTrack;

PWGEM/Dilepton/Core/DileptonMC.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@ struct DileptonMC {
132132
Configurable<bool> cfgRequireNoCollInITSROFStandard{"cfgRequireNoCollInITSROFStandard", false, "require no collision in time range standard"};
133133
Configurable<bool> cfgRequireNoCollInITSROFStrict{"cfgRequireNoCollInITSROFStrict", false, "require no collision in time range strict"};
134134
Configurable<bool> cfgRequireNoHighMultCollInPrevRof{"cfgRequireNoHighMultCollInPrevRof", false, "require no HM collision in previous ITS ROF"};
135+
Configurable<bool> cfgRequireGoodITSLayer3{"cfgRequireGoodITSLayer3", false, "number of inactive chips on ITS layer 3 are below threshold "};
136+
Configurable<bool> cfgRequireGoodITSLayer0123{"cfgRequireGoodITSLayer0123", false, "number of inactive chips on ITS layers 0-3 are below threshold "};
137+
Configurable<bool> cfgRequireGoodITSLayersAll{"cfgRequireGoodITSLayersAll", false, "number of inactive chips on all ITS layers are below threshold "};
135138
} eventcuts;
136139

137140
DielectronCut fDielectronCut;
@@ -550,6 +553,9 @@ struct DileptonMC {
550553
fEMEventCut.SetRequireNoCollInITSROFStandard(eventcuts.cfgRequireNoCollInITSROFStandard);
551554
fEMEventCut.SetRequireNoCollInITSROFStrict(eventcuts.cfgRequireNoCollInITSROFStrict);
552555
fEMEventCut.SetRequireNoHighMultCollInPrevRof(eventcuts.cfgRequireNoHighMultCollInPrevRof);
556+
fEMEventCut.SetRequireGoodITSLayer3(eventcuts.cfgRequireGoodITSLayer3);
557+
fEMEventCut.SetRequireGoodITSLayer0123(eventcuts.cfgRequireGoodITSLayer0123);
558+
fEMEventCut.SetRequireGoodITSLayersAll(eventcuts.cfgRequireGoodITSLayersAll);
553559
}
554560

555561
o2::analysis::MlResponseDielectronSingleTrack<float> mlResponseSingleTrack;
@@ -2278,6 +2284,15 @@ struct DileptonMC {
22782284
if (collision.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof)) {
22792285
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 16.0);
22802286
}
2287+
if (collision.selection_bit(o2::aod::evsel::kIsGoodITSLayer3)) {
2288+
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 17.0);
2289+
}
2290+
if (collision.selection_bit(o2::aod::evsel::kIsGoodITSLayer0123)) {
2291+
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 18.0);
2292+
}
2293+
if (collision.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
2294+
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 19.0);
2295+
}
22812296
if (!fEMEventCut.IsSelected(collision)) {
22822297
continue;
22832298
}

PWGEM/Dilepton/Core/EMEventCut.cxx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,21 @@ void EMEventCut::SetRequireNoHighMultCollInPrevRof(bool flag)
9595
mRequireNoHighMultCollInPrevRof = flag;
9696
LOG(info) << "EM Event Cut, require No HM collision in previous ITS ROF: " << mRequireNoHighMultCollInPrevRof;
9797
}
98+
99+
void EMEventCut::SetRequireGoodITSLayer3(bool flag)
100+
{
101+
mRequireGoodITSLayer3 = flag;
102+
LOG(info) << "EM Event Cut, require GoodITSLayer3: " << mRequireGoodITSLayer3;
103+
}
104+
105+
void EMEventCut::SetRequireGoodITSLayer0123(bool flag)
106+
{
107+
mRequireGoodITSLayer0123 = flag;
108+
LOG(info) << "EM Event Cut, require GoodITSLayer0123: " << mRequireGoodITSLayer0123;
109+
}
110+
111+
void EMEventCut::SetRequireGoodITSLayersAll(bool flag)
112+
{
113+
mRequireGoodITSLayersAll = flag;
114+
LOG(info) << "EM Event Cut, require GoodITSLayersAll: " << mRequireGoodITSLayersAll;
115+
}

PWGEM/Dilepton/Core/EMEventCut.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ class EMEventCut : public TNamed
4343
kNoCollInITSROFStandard,
4444
kNoCollInITSROFStrict,
4545
kNoHighMultCollInPrevRof,
46+
kIsGoodITSLayer3,
47+
kIsGoodITSLayer0123,
48+
kIsGoodITSLayersAll,
4649
kNCuts
4750
};
4851

@@ -88,6 +91,15 @@ class EMEventCut : public TNamed
8891
if (mRequireNoHighMultCollInPrevRof && !IsSelected(collision, EMEventCuts::kNoHighMultCollInPrevRof)) {
8992
return false;
9093
}
94+
if (mRequireGoodITSLayer3 && !IsSelected(collision, EMEventCuts::kIsGoodITSLayer3)) {
95+
return false;
96+
}
97+
if (mRequireGoodITSLayer0123 && !IsSelected(collision, EMEventCuts::kIsGoodITSLayer0123)) {
98+
return false;
99+
}
100+
if (mRequireGoodITSLayersAll && !IsSelected(collision, EMEventCuts::kIsGoodITSLayersAll)) {
101+
return false;
102+
}
91103
return true;
92104
}
93105

@@ -134,6 +146,15 @@ class EMEventCut : public TNamed
134146
case EMEventCuts::kNoHighMultCollInPrevRof:
135147
return collision.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof);
136148

149+
case EMEventCuts::kIsGoodITSLayer3:
150+
return collision.selection_bit(o2::aod::evsel::kIsGoodITSLayer3);
151+
152+
case EMEventCuts::kIsGoodITSLayer0123:
153+
return collision.selection_bit(o2::aod::evsel::kIsGoodITSLayer0123);
154+
155+
case EMEventCuts::kIsGoodITSLayersAll:
156+
return collision.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll);
157+
137158
default:
138159
return true;
139160
}
@@ -153,6 +174,9 @@ class EMEventCut : public TNamed
153174
void SetRequireNoCollInITSROFStandard(bool flag);
154175
void SetRequireNoCollInITSROFStrict(bool flag);
155176
void SetRequireNoHighMultCollInPrevRof(bool flag);
177+
void SetRequireGoodITSLayer3(bool flag);
178+
void SetRequireGoodITSLayer0123(bool flag);
179+
void SetRequireGoodITSLayersAll(bool flag);
156180

157181
private:
158182
bool mRequireSel8{false};
@@ -168,6 +192,9 @@ class EMEventCut : public TNamed
168192
bool mRequireNoCollInITSROFStandard{false};
169193
bool mRequireNoCollInITSROFStrict{false};
170194
bool mRequireNoHighMultCollInPrevRof{false};
195+
bool mRequireGoodITSLayer3{false};
196+
bool mRequireGoodITSLayer0123{false};
197+
bool mRequireGoodITSLayersAll{false};
171198

172199
ClassDef(EMEventCut, 1);
173200
};

PWGEM/Dilepton/Core/PhotonHBT.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@ struct PhotonHBT {
140140
Configurable<bool> cfgRequireNoCollInITSROFStandard{"cfgRequireNoCollInITSROFStandard", false, "require no collision in time range standard"};
141141
Configurable<bool> cfgRequireNoCollInITSROFStrict{"cfgRequireNoCollInITSROFStrict", false, "require no collision in time range strict"};
142142
Configurable<bool> cfgRequireNoHighMultCollInPrevRof{"cfgRequireNoHighMultCollInPrevRof", false, "require no HM collision in previous ITS ROF"};
143+
Configurable<bool> cfgRequireGoodITSLayer3{"cfgRequireGoodITSLayer3", false, "number of inactive chips on ITS layer 3 are below threshold "};
144+
Configurable<bool> cfgRequireGoodITSLayer0123{"cfgRequireGoodITSLayer0123", false, "number of inactive chips on ITS layers 0-3 are below threshold "};
145+
Configurable<bool> cfgRequireGoodITSLayersAll{"cfgRequireGoodITSLayersAll", false, "number of inactive chips on all ITS layers are below threshold "};
143146
} eventcuts;
144147

145148
V0PhotonCut fV0PhotonCut;
@@ -474,8 +477,8 @@ struct PhotonHBT {
474477
}
475478
}
476479

477-
fRegistry.add("Pair/same/hDeltaEtaDeltaPhi_Photon", "distance between 2 photons in #eta-#varphi plane;#Delta#varphi (rad.);#Delta#eta", kTH2D, {{180, -M_PI, M_PI}, {200, -1, +1}}, true); // deta, dphi of photon momentum
478-
fRegistry.add("Pair/same/hDeltaEtaDeltaPhi_Leg", "distance between 2 LS tracks in #eta-#varphi plane;#Delta#varphi (rad.);#Delta#eta", kTH2D, {{180, -M_PI, M_PI}, {200, -1, +1}}, true); // deta, dphi of track momentum
480+
fRegistry.add("Pair/same/hDeltaEtaDeltaPhi_Photon", "distance between 2 photons in #eta-#varphi plane;#Delta#varphi (rad.);#Delta#eta", kTH2D, {{180, -M_PI, M_PI}, {400, -2, +2}}, true); // deta, dphi of photon momentum
481+
fRegistry.add("Pair/same/hDeltaEtaDeltaPhi_Leg", "distance between 2 LS tracks in #eta-#varphi plane;#Delta#varphi (rad.);#Delta#eta", kTH2D, {{180, -M_PI, M_PI}, {400, -2, +2}}, true); // deta, dphi of track momentum
479482
if constexpr (pairtype == ggHBTPairType::kPCMPCM) {
480483
fRegistry.add("Pair/same/hDeltaRDeltaZ", "diphoton distance in RZ;#Deltar = #sqrt{(#Deltax)^{2} + (#Deltay)^{2}} (cm);|#Deltaz| (cm)", kTH2D, {{100, 0, 50}, {100, 0, 50}}, true); // dr, dz of conversion points
481484
}
@@ -499,6 +502,9 @@ struct PhotonHBT {
499502
fEMEventCut.SetRequireNoCollInITSROFStandard(eventcuts.cfgRequireNoCollInITSROFStandard);
500503
fEMEventCut.SetRequireNoCollInITSROFStrict(eventcuts.cfgRequireNoCollInITSROFStrict);
501504
fEMEventCut.SetRequireNoHighMultCollInPrevRof(eventcuts.cfgRequireNoHighMultCollInPrevRof);
505+
fEMEventCut.SetRequireGoodITSLayer3(eventcuts.cfgRequireGoodITSLayer3);
506+
fEMEventCut.SetRequireGoodITSLayer0123(eventcuts.cfgRequireGoodITSLayer0123);
507+
fEMEventCut.SetRequireGoodITSLayersAll(eventcuts.cfgRequireGoodITSLayersAll);
502508
}
503509

504510
void DefinePCMCut()

PWGEM/Dilepton/Core/SingleTrackQC.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ struct SingleTrackQC {
105105
Configurable<bool> cfgRequireNoCollInITSROFStandard{"cfgRequireNoCollInITSROFStandard", false, "require no collision in time range standard"};
106106
Configurable<bool> cfgRequireNoCollInITSROFStrict{"cfgRequireNoCollInITSROFStrict", false, "require no collision in time range strict"};
107107
Configurable<bool> cfgRequireNoHighMultCollInPrevRof{"cfgRequireNoHighMultCollInPrevRof", false, "require no HM collision in previous ITS ROF"};
108+
Configurable<bool> cfgRequireGoodITSLayer3{"cfgRequireGoodITSLayer3", false, "number of inactive chips on ITS layer 3 are below threshold "};
109+
Configurable<bool> cfgRequireGoodITSLayer0123{"cfgRequireGoodITSLayer0123", false, "number of inactive chips on ITS layers 0-3 are below threshold "};
110+
Configurable<bool> cfgRequireGoodITSLayersAll{"cfgRequireGoodITSLayersAll", false, "number of inactive chips on all ITS layers are below threshold "};
108111
} eventcuts;
109112

110113
DielectronCut fDielectronCut;
@@ -337,6 +340,9 @@ struct SingleTrackQC {
337340
fEMEventCut.SetRequireNoCollInITSROFStandard(eventcuts.cfgRequireNoCollInITSROFStandard);
338341
fEMEventCut.SetRequireNoCollInITSROFStrict(eventcuts.cfgRequireNoCollInITSROFStrict);
339342
fEMEventCut.SetRequireNoHighMultCollInPrevRof(eventcuts.cfgRequireNoHighMultCollInPrevRof);
343+
fEMEventCut.SetRequireGoodITSLayer3(eventcuts.cfgRequireGoodITSLayer3);
344+
fEMEventCut.SetRequireGoodITSLayer0123(eventcuts.cfgRequireGoodITSLayer0123);
345+
fEMEventCut.SetRequireGoodITSLayersAll(eventcuts.cfgRequireGoodITSLayersAll);
340346
}
341347

342348
o2::analysis::MlResponseDielectronSingleTrack<float> mlResponseSingleTrack;

PWGEM/Dilepton/Core/SingleTrackQCMC.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ struct SingleTrackQCMC {
112112
Configurable<bool> cfgRequireNoCollInITSROFStandard{"cfgRequireNoCollInITSROFStandard", false, "require no collision in time range standard"};
113113
Configurable<bool> cfgRequireNoCollInITSROFStrict{"cfgRequireNoCollInITSROFStrict", false, "require no collision in time range strict"};
114114
Configurable<bool> cfgRequireNoHighMultCollInPrevRof{"cfgRequireNoHighMultCollInPrevRof", false, "require no HM collision in previous ITS ROF"};
115+
Configurable<bool> cfgRequireGoodITSLayer3{"cfgRequireGoodITSLayer3", false, "number of inactive chips on ITS layer 3 are below threshold "};
116+
Configurable<bool> cfgRequireGoodITSLayer0123{"cfgRequireGoodITSLayer0123", false, "number of inactive chips on ITS layers 0-3 are below threshold "};
117+
Configurable<bool> cfgRequireGoodITSLayersAll{"cfgRequireGoodITSLayersAll", false, "number of inactive chips on all ITS layers are below threshold "};
115118
} eventcuts;
116119

117120
DielectronCut fDielectronCut;
@@ -394,6 +397,9 @@ struct SingleTrackQCMC {
394397
fEMEventCut.SetRequireNoCollInITSROFStandard(eventcuts.cfgRequireNoCollInITSROFStandard);
395398
fEMEventCut.SetRequireNoCollInITSROFStrict(eventcuts.cfgRequireNoCollInITSROFStrict);
396399
fEMEventCut.SetRequireNoHighMultCollInPrevRof(eventcuts.cfgRequireNoHighMultCollInPrevRof);
400+
fEMEventCut.SetRequireGoodITSLayer3(eventcuts.cfgRequireGoodITSLayer3);
401+
fEMEventCut.SetRequireGoodITSLayer0123(eventcuts.cfgRequireGoodITSLayer0123);
402+
fEMEventCut.SetRequireGoodITSLayersAll(eventcuts.cfgRequireGoodITSLayersAll);
397403
}
398404

399405
o2::analysis::MlResponseDielectronSingleTrack<float> mlResponseSingleTrack;
@@ -1084,6 +1090,27 @@ struct SingleTrackQCMC {
10841090
if (collision.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
10851091
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 12.0);
10861092
}
1093+
if (collision.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStrict)) {
1094+
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 13.0);
1095+
}
1096+
if (collision.selection_bit(o2::aod::evsel::kNoCollInRofStandard)) {
1097+
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 14.0);
1098+
}
1099+
if (collision.selection_bit(o2::aod::evsel::kNoCollInRofStrict)) {
1100+
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 15.0);
1101+
}
1102+
if (collision.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof)) {
1103+
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 16.0);
1104+
}
1105+
if (collision.selection_bit(o2::aod::evsel::kIsGoodITSLayer3)) {
1106+
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 17.0);
1107+
}
1108+
if (collision.selection_bit(o2::aod::evsel::kIsGoodITSLayer0123)) {
1109+
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 18.0);
1110+
}
1111+
if (collision.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
1112+
fRegistry.fill(HIST("Event/norm/hCollisionCounter"), 19.0);
1113+
}
10871114
if (!fEMEventCut.IsSelected(collision)) {
10881115
continue;
10891116
}

0 commit comments

Comments
 (0)