Skip to content

Commit 2d27a92

Browse files
committed
add event selection based on RCT flags
1 parent 59a4263 commit 2d27a92

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

PWGHF/HFC/Tasks/taskFlow.cxx

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include "PWGMM/Mult/DataModel/bestCollisionTable.h"
2727

2828
#include "Common/CCDB/EventSelectionParams.h"
29+
#include "Common/CCDB/RCTSelectionFlags.h"
2930
#include "Common/Core/RecoDecay.h"
3031
#include "Common/DataModel/EventSelection.h"
3132
#include "Common/DataModel/Multiplicity.h"
@@ -74,6 +75,7 @@
7475
using namespace o2;
7576
using namespace o2::analysis;
7677
using namespace o2::aod::pid_tpc_tof_utils;
78+
using namespace o2::aod::rctsel;
7779
using namespace o2::aod::track;
7880
using namespace o2::constants::math;
7981
using namespace o2::framework;
@@ -193,14 +195,19 @@ struct HfTaskFlow {
193195
std::string prefix = "ConfigCollision_group";
194196
Configurable<bool> isApplyGoodItsLayersAll{"isApplyGoodItsLayersAll", false, "Enable GoodITSLayersAll"};
195197
Configurable<bool> isApplyGoodZvtxFT0vsPV{"isApplyGoodZvtxFT0vsPV", false, "Enable GoodZvtxFT0vsPV cut"};
196-
Configurable<bool> isApplySameBunchPileup{"isApplySameBunchPileup", false, "Enable SameBunchPileup cut"};
197-
Configurable<int> maxMultiplicity{"maxMultiplicity", 300, "maximum multiplicity selection for collision"};
198-
Configurable<int> minMultiplicity{"minMultiplicity", 0, "minimum multiplicity selection for collision"};
199-
Configurable<int> multiplicityEstimator{"multiplicityEstimator", 0, "0: multNTracksPV, 1: numContrib, 2: multFT0C, 3: multFT0M, 4: centFT0C, 5: centFT0CVariants1s, 6: centFT0M, 7: centFV0A, 8: centNTracksPV, 9: centNGlobal, 10: centMFT"};
200198
Configurable<bool> isApplyNoCollInRofStandard{"isApplyNoCollInRofStandard", false, ""};
201199
Configurable<bool> isApplyNoCollInRofStrict{"isApplyNoCollInRofStrict", false, ""};
202200
Configurable<bool> isApplyNoCollInTimeRangeStandard{"isApplyNoCollInTimeRangeStandard", false, ""};
203201
Configurable<bool> isApplyNoCollInTimeRangeStrict{"isApplyNoCollInTimeRangeStrict", false, ""};
202+
Configurable<bool> isApplySameBunchPileup{"isApplySameBunchPileup", false, "Enable SameBunchPileup cut"};
203+
Configurable<int> maxMultiplicity{"maxMultiplicity", 300, "maximum multiplicity selection for collision"};
204+
Configurable<int> minMultiplicity{"minMultiplicity", 0, "minimum multiplicity selection for collision"};
205+
Configurable<int> multiplicityEstimator{"multiplicityEstimator", 0, "0: multNTracksPV, 1: numContrib, 2: multFT0C, 3: multFT0M, 4: centFT0C, 5: centFT0CVariants1s, 6: centFT0M, 7: centFV0A, 8: centNTracksPV, 9: centNGlobal, 10: centMFT"};
206+
Configurable<bool> requireRCTFlagChecker{"requireRCTFlagChecker", false, "Check event quality in run condition table"};
207+
Configurable<std::string> setRCTFlagCheckerLabel{"setRCTFlagCheckerLabel", "CBT_muon_global", "Evt sel: RCT flag checker label"};
208+
Configurable<bool> requireRCTFlagCheckerLimitAcceptanceAsBad{"requireRCTFlagCheckerLimitAcceptanceAsBad", true, "Evt sel: RCT flag checker treat Limited Acceptance As Bad"};
209+
Configurable<bool> requireZDCCheck{"requireZDCCheck", false, "Evt sel: RCT flag checker ZDC check"};
210+
Configurable<std::string> rctFlagCheckerLabel{"rctFlagCheckerLabel", "CBT_fw", "Evt sel: RCT flag checker label"};
204211
Configurable<float> zVertexMax{"zVertexMax", 10.0f, "Accepted z-vertex range"};
205212
} configCollision;
206213

@@ -273,6 +280,7 @@ struct HfTaskFlow {
273280
o2::ft0::Geometry ft0Det;
274281
o2::fv0::Geometry* fv0Det{};
275282
std::vector<float> cstFT0RelGain{};
283+
RCTFlagsChecker rctChecker;
276284

277285
// =========================
278286
// using declarations : DATA
@@ -445,13 +453,14 @@ struct HfTaskFlow {
445453
LOGF(info, "Offset for FT0C: x = %.3f y = %.3f z = %.3f\n", (*offsetFT0)[1].getX(), (*offsetFT0)[1].getY(), (*offsetFT0)[1].getZ());
446454
LOGF(info, "Offset for FV0-left: x = %.3f y = %.3f z = %.3f\n", (*offsetFV0)[0].getX(), (*offsetFV0)[0].getY(), (*offsetFV0)[0].getZ());
447455
LOGF(info, "Offset for FV0-right: x = %.3f y = %.3f z = %.3f\n", (*offsetFV0)[1].getX(), (*offsetFV0)[1].getY(), (*offsetFV0)[1].getZ());
448-
449456
fv0Det = o2::fv0::Geometry::instance(o2::fv0::Geometry::eUninitialized);
450457

451458
// =========================
452459
// Event histograms
453460
// =========================
454461

462+
rctChecker.init(configCollision.setRCTFlagCheckerLabel, configCollision.requireZDCCheck, configCollision.requireRCTFlagCheckerLimitAcceptanceAsBad);
463+
455464
registry.add("Data/hVtxZ", "v_{z} (cm)", {HistType::kTH1D, {configAxis.axisVertex}});
456465
registry.add("Data/hNTracks", "", {HistType::kTH1F, {configAxis.axisMultiplicity}});
457466
registry.add(Form("Data/hMultiplicity_%s", WhatMultiplicityEstimator[configCollision.multiplicityEstimator].data()), "", {HistType::kTH1D, {configAxis.axisMultiplicity}});
@@ -498,18 +507,21 @@ struct HfTaskFlow {
498507

499508
if (doprocessSameTpcTpcChCh) {
500509
addHistograms<Data, TpcTpc, ChPartChPart>();
510+
501511
sameEvent.setObject(new CorrelationContainer("sameEvent", "sameEvent", corrAxis, effAxis, userAxis));
502512
mixedEvent.setObject(new CorrelationContainer("mixedEvent", "mixedEvent", corrAxis, effAxis, userAxis));
503513
}
504514

505515
if (doprocessSameTpcTpcD0Ch) {
506516
addHistograms<Data, TpcTpc, D0ChPart>();
517+
507518
sameEventHf.setObject(new CorrelationContainer("sameEventHf", "sameEventHf", corrAxis, effAxis, hfUserAxis));
508519
mixedEventHf.setObject(new CorrelationContainer("mixedEventHf", "mixedEventHf", corrAxis, effAxis, hfUserAxis));
509520
}
510521

511522
if (doprocessSameTpcTpcLcCh) {
512523
addHistograms<Data, TpcTpc, LcChPart>();
524+
513525
sameEventHf.setObject(new CorrelationContainer("sameEventHf", "sameEventHf", corrAxis, effAxis, hfUserAxis));
514526
mixedEventHf.setObject(new CorrelationContainer("mixedEventHf", "mixedEventHf", corrAxis, effAxis, hfUserAxis));
515527
}
@@ -937,6 +949,9 @@ struct HfTaskFlow {
937949
if (configCollision.isApplyGoodItsLayersAll && !collision.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
938950
return false;
939951
}
952+
if (configCollision.requireRCTFlagChecker && !rctChecker(collision)) {
953+
return false;
954+
}
940955

941956
if (fillHistograms) {
942957
registry.fill(HIST("Data/hEventCounter"), EventSelectionStep::AfterEventSelection);

0 commit comments

Comments
 (0)