Skip to content

Commit 3206c77

Browse files
authored
[PWGCF] dead zones (#9091)
1 parent 71dcb8e commit 3206c77

File tree

3 files changed

+67
-1
lines changed

3 files changed

+67
-1
lines changed

PWGCF/MultiparticleCorrelations/Core/MuPa-Configurables.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ struct : ConfigurableGroup {
6262

6363
// *) Event cuts:
6464
struct : ConfigurableGroup {
65-
Configurable<vector<string>> cfUseEventCuts{"cfUseEventCuts", {"1-NumberOfEvents", "1-TotalMultiplicity", "1-Multiplicity", "1-ReferenceMultiplicity", "1-Centrality", "1-Vertex_x", "1-Vertex_y", "1-Vertex_z", "1-NContributors", "1-ImpactParameter", "0-EventPlaneAngle", "1-Occupancy", "1-InteractionRate", "1-CurrentRunDuration", "0-MultMCNParticlesEta08", "0-Trigger", "0-Sel7", "1-Sel8", "1-MultiplicityEstimator", "1-ReferenceMultiplicityEstimator", "1-CentralityEstimator", "1-SelectedEvents", "1-NoSameBunchPileup", "1-IsGoodZvtxFT0vsPV", "1-IsVertexITSTPC", "1-IsVertexTOFmatched", "1-IsVertexTRDmatched", "0-NoCollInTimeRangeStrict", "0-NoCollInTimeRangeStandard", "0-NoCollInRofStrict", "0-NoCollInRofStandard", "0-NoHighMultCollInPrevRof", "1-OccupancyEstimator", "1-MinVertexDistanceFromIP"}, "use (1) or do not use (0) event cuts"};
65+
Configurable<vector<string>> cfUseEventCuts{"cfUseEventCuts", {"1-NumberOfEvents", "1-TotalMultiplicity", "1-Multiplicity", "1-ReferenceMultiplicity", "1-Centrality", "1-Vertex_x", "1-Vertex_y", "1-Vertex_z", "1-NContributors", "1-ImpactParameter", "0-EventPlaneAngle", "1-Occupancy", "1-InteractionRate", "1-CurrentRunDuration", "0-MultMCNParticlesEta08", "0-Trigger", "0-Sel7", "1-Sel8", "1-MultiplicityEstimator", "1-ReferenceMultiplicityEstimator", "1-CentralityEstimator", "1-SelectedEvents", "1-NoSameBunchPileup", "1-IsGoodZvtxFT0vsPV", "1-IsVertexITSTPC", "1-IsVertexTOFmatched", "1-IsVertexTRDmatched", "0-NoCollInTimeRangeStrict", "0-NoCollInTimeRangeStandard", "0-NoCollInRofStrict", "0-NoCollInRofStandard", "0-NoHighMultCollInPrevRof", "0-IsGoodITSLayer3", "0-IsGoodITSLayer0123", "0-IsGoodITSLayersAll", "1-OccupancyEstimator", "1-MinVertexDistanceFromIP"}, "use (1) or do not use (0) event cuts"};
6666
Configurable<bool> cfUseEventCutCounterAbsolute{"cfUseEventCutCounterAbsolute", false, "profile and save how many times each event cut counter triggered (absolute). Use with care, as this is computationally heavy"};
6767
Configurable<bool> cfUseEventCutCounterSequential{"cfUseEventCutCounterSequential", false, "profile and save how many times each event cut counter triggered (sequential). Use with care, as this is computationally heavy"};
6868
Configurable<bool> cfPrintCutCounterContent{"cfPrintCutCounterContent", false, "if true, prints on the screen after each event the content of fEventCutCounterHist[*][*] (all which were booked)"};
@@ -102,6 +102,9 @@ struct : ConfigurableGroup {
102102
Configurable<bool> cfUseNoCollInRofStrict{"cfUseNoCollInRofStrict", false, "TBI 20240521 explanation"};
103103
Configurable<bool> cfUseNoCollInRofStandard{"cfUseNoCollInRofStandard", false, "TBI 20240521 explanation"};
104104
Configurable<bool> cfUseNoHighMultCollInPrevRof{"cfUseNoHighMultCollInPrevRof", false, "TBI 20240521 explanation"};
105+
Configurable<bool> cfUseIsGoodITSLayer3{"cfUseIsGoodITSLayer3", false, "TBI 20241220 explanation (or see enum)"};
106+
Configurable<bool> cfUseIsGoodITSLayer0123{"cfUseIsGoodITSLayer0123", false, "TBI 20241220 explanation (or see enum)"};
107+
Configurable<bool> cfUseIsGoodITSLayersAll{"cfUseIsGoodITSLayersAll", false, "TBI 20241220 explanation (or see enum)"};
105108
Configurable<string> cfOccupancyEstimator{"cfOccupancyEstimator", "FT0COccupancyInTimeRange", "set here some supported occupancy estimator (TrackOccupancyInTimeRange, FT0COccupancyInTimeRange, ..."};
106109
} cf_ec;
107110

PWGCF/MultiparticleCorrelations/Core/MuPa-Enums.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@ enum eEventCuts {
138138
// see IA Slide 39 in https://indico.cern.ch/event/1462154/
139139
eNoCollInRofStandard, // same as previous + additional cuts on multiplicity, see IA Slide 39 in https://indico.cern.ch/event/1462154/
140140
eNoHighMultCollInPrevRof, // veto an event if FT0C amplitude in previous ITS ROF is above threshold (default is >5000 a.e. by FT0C), see IA Slide 39 in https://indico.cern.ch/event/1462154/
141+
eIsGoodITSLayer3, // number of inactive chips on ITS layer 3 is below maximum allowed value
142+
eIsGoodITSLayer0123, // numbers of inactive chips on ITS layers 0-3 are below maximum allowed values
143+
eIsGoodITSLayersAll, // numbers of inactive chips on all ITS layers are below maximum allowed values
141144
eOccupancyEstimator, // the default Occupancy estimator, set via configurable. All supported centrality estimators, for QA, etc, are in enum eOccupancyEstimators
142145
eMinVertexDistanceFromIP, // if sqrt(vx^2+vy^2+vz^2) < MinVertexDistanceFromIP, the event is rejected. This way, I remove suspicious events with |vertex| = 0.
143146
eEventCuts_N

PWGCF/MultiparticleCorrelations/Core/MuPa-MemberFunctions.h

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,9 @@ void DefaultConfiguration()
283283
ec.fEventCutName[eNoCollInRofStrict] = "NoCollInRofStrict";
284284
ec.fEventCutName[eNoCollInRofStandard] = "NoCollInRofStandard";
285285
ec.fEventCutName[eNoHighMultCollInPrevRof] = "NoHighMultCollInPrevRof";
286+
ec.fEventCutName[eIsGoodITSLayer3] = "IsGoodITSLayer3";
287+
ec.fEventCutName[eIsGoodITSLayer0123] = "IsGoodITSLayer0123";
288+
ec.fEventCutName[eIsGoodITSLayersAll] = "IsGoodITSLayersAll";
286289
ec.fEventCutName[eOccupancyEstimator] = "OccupancyEstimator";
287290
ec.fEventCutName[eMinVertexDistanceFromIP] = "MinVertexDistanceFromIP";
288291
for (Int_t t = 0; t < eEventCuts_N; t++) {
@@ -1371,6 +1374,9 @@ void DefaultCuts()
13711374
ec.fUseEventCuts[eNoCollInRofStrict] = Alright(lUseEventCuts[eNoCollInRofStrict]);
13721375
ec.fUseEventCuts[eNoCollInRofStandard] = Alright(lUseEventCuts[eNoCollInRofStandard]);
13731376
ec.fUseEventCuts[eNoHighMultCollInPrevRof] = Alright(lUseEventCuts[eNoHighMultCollInPrevRof]);
1377+
ec.fUseEventCuts[eIsGoodITSLayer3] = Alright(lUseEventCuts[eIsGoodITSLayer3]);
1378+
ec.fUseEventCuts[eIsGoodITSLayer0123] = Alright(lUseEventCuts[eIsGoodITSLayer0123]);
1379+
ec.fUseEventCuts[eIsGoodITSLayersAll] = Alright(lUseEventCuts[eIsGoodITSLayersAll]);
13741380
ec.fUseEventCuts[eOccupancyEstimator] = Alright(lUseEventCuts[eOccupancyEstimator]);
13751381
ec.fUseEventCuts[eMinVertexDistanceFromIP] = Alright(lUseEventCuts[eMinVertexDistanceFromIP]);
13761382

@@ -1387,6 +1393,9 @@ void DefaultCuts()
13871393
ec.fUseEventCuts[eNoCollInRofStrict] = ec.fUseEventCuts[eNoCollInRofStrict] && cf_ec.cfUseNoCollInRofStrict;
13881394
ec.fUseEventCuts[eNoCollInRofStandard] = ec.fUseEventCuts[eNoCollInRofStandard] && cf_ec.cfUseNoCollInRofStandard;
13891395
ec.fUseEventCuts[eNoHighMultCollInPrevRof] = ec.fUseEventCuts[eNoHighMultCollInPrevRof] && cf_ec.cfUseNoHighMultCollInPrevRof;
1396+
ec.fUseEventCuts[eIsGoodITSLayer3] = ec.fUseEventCuts[eIsGoodITSLayer3] && cf_ec.cfUseIsGoodITSLayer3;
1397+
ec.fUseEventCuts[eIsGoodITSLayer0123] = ec.fUseEventCuts[eIsGoodITSLayer0123] && cf_ec.cfUseIsGoodITSLayer0123;
1398+
ec.fUseEventCuts[eIsGoodITSLayersAll] = ec.fUseEventCuts[eIsGoodITSLayersAll] && cf_ec.cfUseIsGoodITSLayersAll;
13901399

13911400
// **) event cuts defined via [min, max):
13921401
// Remark: I use this one also for events cuts set only via min or via max.
@@ -2001,6 +2010,24 @@ void InsanityChecksBeforeBooking()
20012010
}
20022011
}
20032012

2013+
if (ec.fUseEventCuts[eIsGoodITSLayer3]) {
2014+
if (!(tc.fProcess[eProcessRec] || tc.fProcess[eProcessRecSim] || tc.fProcess[eProcessSim])) {
2015+
LOGF(fatal, "\033[1;31m%s at line %d : use eIsGoodITSLayer3 only for Run 3 data and MC\033[0m", __FUNCTION__, __LINE__);
2016+
}
2017+
}
2018+
2019+
if (ec.fUseEventCuts[eIsGoodITSLayer0123]) {
2020+
if (!(tc.fProcess[eProcessRec] || tc.fProcess[eProcessRecSim] || tc.fProcess[eProcessSim])) {
2021+
LOGF(fatal, "\033[1;31m%s at line %d : use eIsGoodITSLayer0123 only for Run 3 data and MC\033[0m", __FUNCTION__, __LINE__);
2022+
}
2023+
}
2024+
2025+
if (ec.fUseEventCuts[eIsGoodITSLayersAll]) {
2026+
if (!(tc.fProcess[eProcessRec] || tc.fProcess[eProcessRecSim] || tc.fProcess[eProcessSim])) {
2027+
LOGF(fatal, "\033[1;31m%s at line %d : use eIsGoodITSLayersAll only for Run 3 data and MC\033[0m", __FUNCTION__, __LINE__);
2028+
}
2029+
}
2030+
20042031
// **) Supported reference multiplicity estimators for Run 3 are enlisted here:
20052032
if (tc.fProcess[eProcessRec] || tc.fProcess[eProcessRecSim]) {
20062033
if (!(ec.fsEventCuts[eReferenceMultiplicityEstimator].EqualTo("MultTPC", TString::kIgnoreCase) ||
@@ -5602,6 +5629,39 @@ Bool_t EventCuts(T1 const& collision, T2 const& tracks, eCutModus cutModus)
56025629
}
56035630
}
56045631

5632+
// *) IsGoodITSLayer3: // see O2Physics/Common/CCDB/EventSelectionParams.cxx
5633+
if (ec.fUseEventCuts[eIsGoodITSLayer3]) {
5634+
if (cutModus == eCutCounterBinning) {
5635+
EventCut(eRec, eIsGoodITSLayer3, eCutCounterBinning);
5636+
} else if (!collision.selection_bit(o2::aod::evsel::kIsGoodITSLayer3)) {
5637+
if (!EventCut(eRec, eIsGoodITSLayer3, cutModus)) {
5638+
return kFALSE;
5639+
}
5640+
}
5641+
}
5642+
5643+
// *) IsGoodITSLayer0123: // see O2Physics/Common/CCDB/EventSelectionParams.cxx
5644+
if (ec.fUseEventCuts[eIsGoodITSLayer0123]) {
5645+
if (cutModus == eCutCounterBinning) {
5646+
EventCut(eRec, eIsGoodITSLayer0123, eCutCounterBinning);
5647+
} else if (!collision.selection_bit(o2::aod::evsel::kIsGoodITSLayer0123)) {
5648+
if (!EventCut(eRec, eIsGoodITSLayer0123, cutModus)) {
5649+
return kFALSE;
5650+
}
5651+
}
5652+
}
5653+
5654+
// *) IsGoodITSLayersAll: // see O2Physics/Common/CCDB/EventSelectionParams.cxx
5655+
if (ec.fUseEventCuts[eIsGoodITSLayersAll]) {
5656+
if (cutModus == eCutCounterBinning) {
5657+
EventCut(eRec, eIsGoodITSLayersAll, eCutCounterBinning);
5658+
} else if (!collision.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
5659+
if (!EventCut(eRec, eIsGoodITSLayersAll, cutModus)) {
5660+
return kFALSE;
5661+
}
5662+
}
5663+
}
5664+
56055665
// ...
56065666

56075667
// ... and corresponding MC truth simulated (Run 3 specific):

0 commit comments

Comments
 (0)