|
53 | 53 | #include <array> |
54 | 54 | #include <cmath> |
55 | 55 | #include <cstdlib> |
| 56 | +#include <string> |
| 57 | +#include <vector> |
56 | 58 |
|
57 | 59 | using namespace o2; |
58 | 60 | using namespace o2::framework; |
59 | 61 | using namespace o2::framework::expressions; |
60 | 62 | using std::array; |
| 63 | +using namespace o2::aod::rctsel; |
| 64 | + |
61 | 65 | struct kaonkaonAnalysisRun3 { |
| 66 | + struct : ConfigurableGroup { |
| 67 | + Configurable<bool> requireRCTFlagChecker{"requireRCTFlagChecker", true, "Check event quality in run condition table"}; |
| 68 | + Configurable<std::string> cfgEvtRCTFlagCheckerLabel{"cfgEvtRCTFlagCheckerLabel", "CBT_hadronPID", "Evt sel: RCT flag checker label"}; |
| 69 | + Configurable<bool> cfgEvtRCTFlagCheckerZDCCheck{"cfgEvtRCTFlagCheckerZDCCheck", false, "Evt sel: RCT flag checker ZDC check"}; |
| 70 | + Configurable<bool> cfgEvtRCTFlagCheckerLimitAcceptAsBad{"cfgEvtRCTFlagCheckerLimitAcceptAsBad", true, "Evt sel: RCT flag checker treat Limited Acceptance As Bad"}; |
| 71 | + } rctCut; |
| 72 | + RCTFlagsChecker rctChecker; |
| 73 | + |
62 | 74 | SliceCache cache; |
63 | 75 | HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject}; |
64 | 76 | HistogramRegistry hInvMass{"hInvMass", {}, OutputObjHandlingPolicy::AnalysisObject}; |
@@ -119,6 +131,7 @@ struct kaonkaonAnalysisRun3 { |
119 | 131 |
|
120 | 132 | void init(o2::framework::InitContext&) |
121 | 133 | { |
| 134 | + rctChecker.init(rctCut.cfgEvtRCTFlagCheckerLabel, rctCut.cfgEvtRCTFlagCheckerZDCCheck, rctCut.cfgEvtRCTFlagCheckerLimitAcceptAsBad); |
122 | 135 | AxisSpec axisMult{multAxis, "Multiplicity"}; |
123 | 136 | AxisSpec axisPt{ptAxisKK, "pT (GeV/c)"}; |
124 | 137 | AxisSpec axisMass{invMassKKAxis, "Invariant mass (GeV/c^2)"}; |
@@ -419,6 +432,9 @@ struct kaonkaonAnalysisRun3 { |
419 | 432 |
|
420 | 433 | void processSameEvent(EventCandidates::iterator const& collision, TrackCandidates const& tracks, aod::BCs const&) |
421 | 434 | { |
| 435 | + if (rctCut.requireRCTFlagChecker && !rctChecker(collision)) { |
| 436 | + return; |
| 437 | + } |
422 | 438 | if (!eventselection(collision)) { |
423 | 439 | return; |
424 | 440 | } |
@@ -493,6 +509,13 @@ struct kaonkaonAnalysisRun3 { |
493 | 509 | for (auto& [c1, tracks1, c2, tracks2] : pair1) { |
494 | 510 | float multiplicity = c1.centFT0M(); |
495 | 511 |
|
| 512 | + if (rctCut.requireRCTFlagChecker && !rctChecker(c1)) { |
| 513 | + continue; |
| 514 | + } |
| 515 | + if (rctCut.requireRCTFlagChecker && !rctChecker(c2)) { |
| 516 | + continue; |
| 517 | + } |
| 518 | + |
496 | 519 | if (!eventselection(c1)) { |
497 | 520 | continue; |
498 | 521 | } |
|
0 commit comments