Skip to content

Commit 79b8c59

Browse files
dsekihatalibuild
andauthored
[PWGEM/Dilepton] add a task for dilepton-hadron 2PC (#12177)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 118b49b commit 79b8c59

16 files changed

+1919
-10
lines changed

PWGEM/Dilepton/Core/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ o2physics_add_library(PWGEMDileptonCore
1313
SOURCES EMEventCut.cxx
1414
DielectronCut.cxx
1515
DimuonCut.cxx
16+
EMTrackCut.cxx
1617
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::MLCore)
1718

1819
o2physics_target_root_dictionary(PWGEMDileptonCore
1920
HEADERS EMEventCut.h
2021
DielectronCut.h
2122
DimuonCut.h
23+
EMTrackCut.h
2224
LINKDEF PWGEMDileptonCoreLinkDef.h)

PWGEM/Dilepton/Core/Dilepton.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ struct Dilepton {
110110
Configurable<float> cfgCentMax{"cfgCentMax", 999.f, "max. centrality"};
111111
Configurable<bool> cfgDoMix{"cfgDoMix", true, "flag for event mixing"};
112112
Configurable<int> ndepth{"ndepth", 100, "depth for event mixing"};
113-
Configurable<uint64_t> ndiff_bc_mix{"ndiff_bc_mix", 5, "difference in global BC required in mixed events"};
113+
Configurable<uint64_t> ndiff_bc_mix{"ndiff_bc_mix", 594, "difference in global BC required in mixed events"};
114114
ConfigurableAxis ConfVtxBins{"ConfVtxBins", {VARIABLE_WIDTH, -10.0f, -8.f, -6.f, -4.f, -2.f, 0.f, 2.f, 4.f, 6.f, 8.f, 10.f}, "Mixing bins - z-vertex"};
115115
ConfigurableAxis ConfCentBins{"ConfCentBins", {VARIABLE_WIDTH, 0.0f, 5.0f, 10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f, 100.f, 999.f}, "Mixing bins - centrality"};
116116
ConfigurableAxis ConfEPBins{"ConfEPBins", {16, -M_PI / 2, +M_PI / 2}, "Mixing bins - event plane angle"};
@@ -157,7 +157,7 @@ struct Dilepton {
157157
Configurable<bool> cfgRequireGoodITSLayersAll{"cfgRequireGoodITSLayersAll", false, "number of inactive chips on all ITS layers are below threshold "};
158158
// for RCT
159159
Configurable<bool> cfgRequireGoodRCT{"cfgRequireGoodRCT", false, "require good detector flag in run condtion table"};
160-
Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT_hadronPID", "select 1 [CBT, CBT_hadron, CBT_muon_glo] see O2Physics/Common/CCDB/RCTSelectionFlags.h"};
160+
Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT_hadronPID", "select 1 [CBT, CBT_hadronPID, CBT_muon_glo] see O2Physics/Common/CCDB/RCTSelectionFlags.h"};
161161
Configurable<bool> cfgCheckZDC{"cfgCheckZDC", false, "set ZDC flag for PbPb"};
162162
Configurable<bool> cfgTreatLimitedAcceptanceAsBad{"cfgTreatLimitedAcceptanceAsBad", false, "reject all events where the detectors relevant for the specified Runlist are flagged as LimitedAcceptance"};
163163
} eventcuts;

PWGEM/Dilepton/Core/DileptonHadron.h

Lines changed: 1539 additions & 0 deletions
Large diffs are not rendered by default.

PWGEM/Dilepton/Core/DileptonMC.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ struct DileptonMC {
151151
Configurable<bool> cfgRequireGoodITSLayersAll{"cfgRequireGoodITSLayersAll", false, "number of inactive chips on all ITS layers are below threshold "};
152152
// for RCT
153153
Configurable<bool> cfgRequireGoodRCT{"cfgRequireGoodRCT", false, "require good detector flag in run condtion table"};
154-
Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT_hadronPID", "select 1 [CBT, CBT_hadron, CBT_muon_glo] see O2Physics/Common/CCDB/RCTSelectionFlags.h"};
154+
Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT_hadronPID", "select 1 [CBT, CBT_hadronPID, CBT_muon_glo] see O2Physics/Common/CCDB/RCTSelectionFlags.h"};
155155
Configurable<bool> cfgCheckZDC{"cfgCheckZDC", false, "set ZDC flag for PbPb"};
156156
Configurable<bool> cfgTreatLimitedAcceptanceAsBad{"cfgTreatLimitedAcceptanceAsBad", false, "reject all events where the detectors relevant for the specified Runlist are flagged as LimitedAcceptance"};
157157
} eventcuts;

PWGEM/Dilepton/Core/EMTrackCut.cxx

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
//
13+
// Class for track Cut
14+
//
15+
16+
#include "PWGEM/Dilepton/Core/EMTrackCut.h"
17+
18+
#include "Framework/Logger.h"
19+
20+
#include <set>
21+
#include <utility>
22+
23+
ClassImp(EMTrackCut);
24+
25+
const std::pair<int8_t, std::set<uint8_t>> EMTrackCut::its_ib_any_Requirement = {1, {0, 1, 2}}; // hits on any ITS ib layers.
26+
const std::pair<int8_t, std::set<uint8_t>> EMTrackCut::its_ib_1st_Requirement = {1, {0}}; // hit on 1st ITS ib layers.
27+
28+
void EMTrackCut::SetTrackPtRange(float minPt, float maxPt)
29+
{
30+
mMinTrackPt = minPt;
31+
mMaxTrackPt = maxPt;
32+
LOG(info) << "EMTrack Cut, set track pt range: " << mMinTrackPt << " - " << mMaxTrackPt;
33+
}
34+
void EMTrackCut::SetTrackEtaRange(float minEta, float maxEta)
35+
{
36+
mMinTrackEta = minEta;
37+
mMaxTrackEta = maxEta;
38+
LOG(info) << "EMTrack Cut, set track eta range: " << mMinTrackEta << " - " << mMaxTrackEta;
39+
}
40+
void EMTrackCut::SetTrackPhiRange(float minPhi, float maxPhi)
41+
{
42+
mMinTrackPhi = minPhi;
43+
mMaxTrackPhi = maxPhi;
44+
LOG(info) << "EMTrack Cut, set track phi range (rad.): " << mMinTrackPhi << " - " << mMaxTrackPhi;
45+
}
46+
void EMTrackCut::SetMinNClustersTPC(int minNClustersTPC)
47+
{
48+
mMinNClustersTPC = minNClustersTPC;
49+
LOG(info) << "EMTrack Cut, set min N clusters TPC: " << mMinNClustersTPC;
50+
}
51+
void EMTrackCut::SetMinNCrossedRowsTPC(int minNCrossedRowsTPC)
52+
{
53+
mMinNCrossedRowsTPC = minNCrossedRowsTPC;
54+
LOG(info) << "EMTrack Cut, set min N crossed rows TPC: " << mMinNCrossedRowsTPC;
55+
}
56+
void EMTrackCut::SetMinNCrossedRowsOverFindableClustersTPC(float minNCrossedRowsOverFindableClustersTPC)
57+
{
58+
mMinNCrossedRowsOverFindableClustersTPC = minNCrossedRowsOverFindableClustersTPC;
59+
LOG(info) << "EMTrack Cut, set min N crossed rows over findable clusters TPC: " << mMinNCrossedRowsOverFindableClustersTPC;
60+
}
61+
void EMTrackCut::SetMaxFracSharedClustersTPC(float max)
62+
{
63+
mMaxFracSharedClustersTPC = max;
64+
LOG(info) << "EMTrack Cut, set max fraction of shared clusters in TPC: " << mMaxFracSharedClustersTPC;
65+
}
66+
void EMTrackCut::SetChi2PerClusterTPC(float min, float max)
67+
{
68+
mMinChi2PerClusterTPC = min;
69+
mMaxChi2PerClusterTPC = max;
70+
LOG(info) << "EMTrack Cut, set chi2 per cluster TPC range: " << mMinChi2PerClusterTPC << " - " << mMaxChi2PerClusterTPC;
71+
}
72+
73+
void EMTrackCut::SetNClustersITS(int min, int max)
74+
{
75+
mMinNClustersITS = min;
76+
mMaxNClustersITS = max;
77+
LOG(info) << "EMTrack Cut, set N clusters ITS range: " << mMinNClustersITS << " - " << mMaxNClustersITS;
78+
}
79+
void EMTrackCut::SetChi2PerClusterITS(float min, float max)
80+
{
81+
mMinChi2PerClusterITS = min;
82+
mMaxChi2PerClusterITS = max;
83+
LOG(info) << "EMTrack Cut, set chi2 per cluster ITS range: " << mMinChi2PerClusterITS << " - " << mMaxChi2PerClusterITS;
84+
}
85+
86+
void EMTrackCut::SetTrackMaxDcaXY(float maxDcaXY)
87+
{
88+
mMaxDcaXY = maxDcaXY;
89+
LOG(info) << "EMTrack Cut, set max DCA xy: " << mMaxDcaXY;
90+
}
91+
void EMTrackCut::SetTrackMaxDcaZ(float maxDcaZ)
92+
{
93+
mMaxDcaZ = maxDcaZ;
94+
LOG(info) << "EMTrack Cut, set max DCA z: " << mMaxDcaZ;
95+
}
96+
97+
void EMTrackCut::SetTrackMaxDcaXYPtDep(std::function<float(float)> ptDepCut)
98+
{
99+
mMaxDcaXYPtDep = ptDepCut;
100+
LOG(info) << "EMTrack Cut, set max DCA xy pt dep: " << mMaxDcaXYPtDep(1.0);
101+
}
102+
103+
void EMTrackCut::RequireITSibAny(bool flag)
104+
{
105+
mRequireITSibAny = flag;
106+
LOG(info) << "EMTrack Cut, require ITS ib any: " << mRequireITSibAny;
107+
}
108+
109+
void EMTrackCut::RequireITSib1st(bool flag)
110+
{
111+
mRequireITSib1st = flag;
112+
LOG(info) << "EMTrack Cut, require ITS ib 1st: " << mRequireITSib1st;
113+
}

PWGEM/Dilepton/Core/EMTrackCut.h

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
//
13+
// Class for track selection
14+
//
15+
16+
#ifndef PWGEM_DILEPTON_CORE_EMTRACKCUT_H_
17+
#define PWGEM_DILEPTON_CORE_EMTRACKCUT_H_
18+
19+
// #include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
20+
21+
#include "CommonConstants/PhysicsConstants.h"
22+
#include "Framework/DataTypes.h"
23+
#include "Framework/Logger.h"
24+
25+
#include "Math/Vector4D.h"
26+
#include "TNamed.h"
27+
28+
#include <algorithm>
29+
#include <set>
30+
#include <string>
31+
#include <utility>
32+
#include <vector>
33+
34+
// using namespace o2::aod::pwgem::dilepton::utils::emtrackutil;
35+
36+
class EMTrackCut : public TNamed
37+
{
38+
public:
39+
EMTrackCut() = default;
40+
EMTrackCut(const char* name, const char* title) : TNamed(name, title) {}
41+
~EMTrackCut() {}
42+
43+
enum class EMTrackCuts : int {
44+
// track cut
45+
kTrackPtRange,
46+
kTrackEtaRange,
47+
kTrackPhiRange,
48+
kTPCNCls,
49+
kTPCCrossedRows,
50+
kTPCCrossedRowsOverNCls,
51+
kTPCFracSharedClusters,
52+
kTPCChi2NDF,
53+
kDCAxy,
54+
kDCAz,
55+
kITSNCls,
56+
kITSChi2NDF,
57+
kNCuts
58+
};
59+
60+
template <typename TTrack>
61+
bool IsSelected(TTrack const& track) const
62+
{
63+
if (!track.hasITS() || !track.hasTPC()) {
64+
return false;
65+
}
66+
67+
if (!IsSelectedTrack(track, EMTrackCuts::kTrackPtRange)) {
68+
return false;
69+
}
70+
if (!IsSelectedTrack(track, EMTrackCuts::kTrackEtaRange)) {
71+
return false;
72+
}
73+
74+
if (!IsSelectedTrack(track, EMTrackCuts::kTrackPhiRange)) {
75+
return false;
76+
}
77+
if (!IsSelectedTrack(track, EMTrackCuts::kDCAxy)) {
78+
return false;
79+
}
80+
if (!IsSelectedTrack(track, EMTrackCuts::kDCAz)) {
81+
return false;
82+
}
83+
84+
// ITS cuts
85+
if (!IsSelectedTrack(track, EMTrackCuts::kITSNCls)) {
86+
return false;
87+
}
88+
if (!IsSelectedTrack(track, EMTrackCuts::kITSChi2NDF)) {
89+
return false;
90+
}
91+
92+
if (mRequireITSibAny) {
93+
auto hits_ib = std::count_if(its_ib_any_Requirement.second.begin(), its_ib_any_Requirement.second.end(), [&](auto&& requiredLayer) { return track.itsClusterMap() & (1 << requiredLayer); });
94+
if (hits_ib < its_ib_any_Requirement.first) {
95+
return false;
96+
}
97+
}
98+
99+
if (mRequireITSib1st) {
100+
auto hits_ib = std::count_if(its_ib_1st_Requirement.second.begin(), its_ib_1st_Requirement.second.end(), [&](auto&& requiredLayer) { return track.itsClusterMap() & (1 << requiredLayer); });
101+
if (hits_ib < its_ib_1st_Requirement.first) {
102+
return false;
103+
}
104+
}
105+
106+
// TPC cuts
107+
if (!IsSelectedTrack(track, EMTrackCuts::kTPCNCls)) {
108+
return false;
109+
}
110+
if (!IsSelectedTrack(track, EMTrackCuts::kTPCCrossedRows)) {
111+
return false;
112+
}
113+
if (!IsSelectedTrack(track, EMTrackCuts::kTPCCrossedRowsOverNCls)) {
114+
return false;
115+
}
116+
if (!IsSelectedTrack(track, EMTrackCuts::kTPCFracSharedClusters)) {
117+
return false;
118+
}
119+
if (!IsSelectedTrack(track, EMTrackCuts::kTPCChi2NDF)) {
120+
return false;
121+
}
122+
123+
return true;
124+
}
125+
126+
template <typename T>
127+
bool IsSelectedTrack(T const& track, const EMTrackCuts& cut) const
128+
{
129+
switch (cut) {
130+
case EMTrackCuts::kTrackPtRange:
131+
return track.pt() > mMinTrackPt && track.pt() < mMaxTrackPt;
132+
133+
case EMTrackCuts::kTrackEtaRange:
134+
return track.eta() > mMinTrackEta && track.eta() < mMaxTrackEta;
135+
136+
case EMTrackCuts::kTrackPhiRange:
137+
return track.phi() > mMinTrackPhi && track.phi() < mMaxTrackPhi;
138+
139+
case EMTrackCuts::kTPCNCls:
140+
return track.tpcNClsFound() >= mMinNClustersTPC;
141+
142+
case EMTrackCuts::kTPCCrossedRows:
143+
return track.tpcNClsCrossedRows() >= mMinNCrossedRowsTPC;
144+
145+
case EMTrackCuts::kTPCCrossedRowsOverNCls:
146+
return track.tpcCrossedRowsOverFindableCls() > mMinNCrossedRowsOverFindableClustersTPC;
147+
148+
case EMTrackCuts::kTPCFracSharedClusters:
149+
return track.tpcFractionSharedCls() < mMaxFracSharedClustersTPC;
150+
151+
case EMTrackCuts::kTPCChi2NDF:
152+
return mMinChi2PerClusterTPC < track.tpcChi2NCl() && track.tpcChi2NCl() < mMaxChi2PerClusterTPC;
153+
154+
case EMTrackCuts::kDCAxy:
155+
return std::fabs(track.dcaXY()) < ((mMaxDcaXYPtDep) ? mMaxDcaXYPtDep(track.pt()) : mMaxDcaXY);
156+
157+
case EMTrackCuts::kDCAz:
158+
return std::fabs(track.dcaZ()) < mMaxDcaZ;
159+
160+
case EMTrackCuts::kITSNCls:
161+
return mMinNClustersITS <= track.itsNCls() && track.itsNCls() <= mMaxNClustersITS;
162+
163+
case EMTrackCuts::kITSChi2NDF:
164+
return mMinChi2PerClusterITS < track.itsChi2NCl() && track.itsChi2NCl() < mMaxChi2PerClusterITS;
165+
166+
default:
167+
return false;
168+
}
169+
}
170+
171+
// Setters
172+
void SetTrackPtRange(float minPt = 0.f, float maxPt = 1e10f);
173+
void SetTrackEtaRange(float minEta = -1e10f, float maxEta = 1e10f);
174+
void SetTrackPhiRange(float minPhi = 0.f, float maxPhi = 6.3f);
175+
void SetMinNClustersTPC(int minNClustersTPC);
176+
void SetMinNCrossedRowsTPC(int minNCrossedRowsTPC);
177+
void SetMinNCrossedRowsOverFindableClustersTPC(float minNCrossedRowsOverFindableClustersTPC);
178+
void SetMaxFracSharedClustersTPC(float max);
179+
void SetChi2PerClusterTPC(float min, float max);
180+
void SetNClustersITS(int min, int max);
181+
void SetChi2PerClusterITS(float min, float max);
182+
183+
void SetTrackDca3DRange(float min, float max); // in sigma
184+
void SetTrackMaxDcaXY(float maxDcaXY); // in cm
185+
void SetTrackMaxDcaZ(float maxDcaZ); // in cm
186+
void SetTrackMaxDcaXYPtDep(std::function<float(float)> ptDepCut);
187+
void RequireITSibAny(bool flag);
188+
void RequireITSib1st(bool flag);
189+
190+
private:
191+
static const std::pair<int8_t, std::set<uint8_t>> its_ib_any_Requirement;
192+
static const std::pair<int8_t, std::set<uint8_t>> its_ib_1st_Requirement;
193+
194+
// kinematic cuts
195+
float mMinTrackPt{0.f}, mMaxTrackPt{1e10f}; // range in pT
196+
float mMinTrackEta{-1e10f}, mMaxTrackEta{1e10f}; // range in eta
197+
float mMinTrackPhi{0.f}, mMaxTrackPhi{6.3}; // range in phi
198+
199+
// track quality cuts
200+
int mMinNClustersTPC{0}; // min number of TPC clusters
201+
int mMinNCrossedRowsTPC{0}; // min number of crossed rows in TPC
202+
float mMinChi2PerClusterTPC{0.f}, mMaxChi2PerClusterTPC{1e10f}; // max tpc fit chi2 per TPC cluster
203+
float mMinNCrossedRowsOverFindableClustersTPC{0.f}; // min ratio crossed rows / findable clusters
204+
float mMaxFracSharedClustersTPC{999.f}; // max ratio shared clusters / clusters in TPC
205+
int mMinNClustersITS{0}, mMaxNClustersITS{7}; // range in number of ITS clusters
206+
float mMinChi2PerClusterITS{0.f}, mMaxChi2PerClusterITS{1e10f}; // max its fit chi2 per ITS cluster
207+
bool mRequireITSibAny{true};
208+
bool mRequireITSib1st{false};
209+
210+
float mMaxDcaXY{1.0f}; // max dca in xy plane
211+
float mMaxDcaZ{1.0f}; // max dca in z direction
212+
std::function<float(float)> mMaxDcaXYPtDep{}; // max dca in xy plane as function of pT
213+
214+
ClassDef(EMTrackCut, 1);
215+
};
216+
217+
#endif // PWGEM_DILEPTON_CORE_EMTRACKCUT_H_

PWGEM/Dilepton/Core/PWGEMDileptonCoreLinkDef.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@
1919
#pragma link C++ class EMEventCut + ;
2020
#pragma link C++ class DielectronCut + ;
2121
#pragma link C++ class DimuonCut + ;
22+
#pragma link C++ class EMTrackCut + ;
2223

2324
#endif // PWGEM_DILEPTON_CORE_PWGEMDILEPTONCORELINKDEF_H_

PWGEM/Dilepton/Core/SingleTrackQC.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ struct SingleTrackQC {
114114
Configurable<bool> cfgRequireGoodITSLayersAll{"cfgRequireGoodITSLayersAll", false, "number of inactive chips on all ITS layers are below threshold "};
115115
// for RCT
116116
Configurable<bool> cfgRequireGoodRCT{"cfgRequireGoodRCT", false, "require good detector flag in run condtion table"};
117-
Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT_hadronPID", "select 1 [CBT, CBT_hadron, CBT_muon_glo] see O2Physics/Common/CCDB/RCTSelectionFlags.h"};
117+
Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT_hadronPID", "select 1 [CBT, CBT_hadronPID, CBT_muon_glo] see O2Physics/Common/CCDB/RCTSelectionFlags.h"};
118118
Configurable<bool> cfgCheckZDC{"cfgCheckZDC", false, "set ZDC flag for PbPb"};
119119
Configurable<bool> cfgTreatLimitedAcceptanceAsBad{"cfgTreatLimitedAcceptanceAsBad", false, "reject all events where the detectors relevant for the specified Runlist are flagged as LimitedAcceptance"};
120120
} eventcuts;

PWGEM/Dilepton/Core/SingleTrackQCMC.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ struct SingleTrackQCMC {
122122
Configurable<bool> cfgRequireGoodITSLayersAll{"cfgRequireGoodITSLayersAll", false, "number of inactive chips on all ITS layers are below threshold "};
123123
// for RCT
124124
Configurable<bool> cfgRequireGoodRCT{"cfgRequireGoodRCT", false, "require good detector flag in run condtion table"};
125-
Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT_hadronPID", "select 1 [CBT, CBT_hadron, CBT_muon_glo] see O2Physics/Common/CCDB/RCTSelectionFlags.h"};
125+
Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT_hadronPID", "select 1 [CBT, CBT_hadronPID, CBT_muon_glo] see O2Physics/Common/CCDB/RCTSelectionFlags.h"};
126126
Configurable<bool> cfgCheckZDC{"cfgCheckZDC", false, "set ZDC flag for PbPb"};
127127
Configurable<bool> cfgTreatLimitedAcceptanceAsBad{"cfgTreatLimitedAcceptanceAsBad", false, "reject all events where the detectors relevant for the specified Runlist are flagged as LimitedAcceptance"};
128128
} eventcuts;

0 commit comments

Comments
 (0)