|
20 | 20 | #include "PWGMM/Mult/DataModel/Index.h" // for Particles2Tracks table |
21 | 21 |
|
22 | 22 | #include "Common/CCDB/EventSelectionParams.h" |
| 23 | +#include "Common/CCDB/RCTSelectionFlags.h" |
23 | 24 | #include "Common/Core/RecoDecay.h" |
24 | 25 | #include "Common/Core/TrackSelection.h" |
25 | 26 | #include "Common/Core/TrackSelectionDefaults.h" |
|
63 | 64 | using namespace o2; |
64 | 65 | using namespace o2::framework; |
65 | 66 | using namespace o2::framework::expressions; |
| 67 | +using namespace o2::aod::rctsel; |
66 | 68 |
|
67 | 69 | #define O2_DEFINE_CONFIGURABLE(NAME, TYPE, DEFAULT, HELP) Configurable<TYPE> NAME{#NAME, DEFAULT, HELP}; |
68 | 70 |
|
@@ -113,6 +115,7 @@ struct FlowMc { |
113 | 115 | O2_DEFINE_CONFIGURABLE(cfgRecoEvSelkNoCollInTimeRangeStandard, bool, false, "no collisions in specified time range") |
114 | 116 | O2_DEFINE_CONFIGURABLE(cfgRecoEvSelkNoCollInRofStandard, bool, false, "no other collisions in this Readout Frame with per-collision multiplicity above threshold") |
115 | 117 | O2_DEFINE_CONFIGURABLE(cfgRecoEvSelkNoHighMultCollInPrevRof, bool, false, "veto an event if FT0C amplitude in previous ITS ROF is above threshold") |
| 118 | + O2_DEFINE_CONFIGURABLE(cfgEvSelRCTflags, std::string, "", "keep empty to disable, usage: 'CentralBarrelTracking', 'CBT_hadronPID' ") |
116 | 119 |
|
117 | 120 | Configurable<std::vector<double>> cfgTrackDensityP0{"cfgTrackDensityP0", std::vector<double>{0.6003720411, 0.6152630970, 0.6288860646, 0.6360694031, 0.6409494798, 0.6450540203, 0.6482117301, 0.6512592056, 0.6640008690, 0.6862631416, 0.7005738691, 0.7106567432, 0.7170728333}, "parameter 0 for track density efficiency correction"}; |
118 | 121 | Configurable<std::vector<double>> cfgTrackDensityP1{"cfgTrackDensityP1", std::vector<double>{-1.007592e-05, -8.932635e-06, -9.114538e-06, -1.054818e-05, -1.220212e-05, -1.312304e-05, -1.376433e-05, -1.412813e-05, -1.289562e-05, -1.050065e-05, -8.635725e-06, -7.380821e-06, -6.201250e-06}, "parameter 1 for track density efficiency correction"}; |
@@ -177,6 +180,8 @@ struct FlowMc { |
177 | 180 | TRandom3* fRndm = new TRandom3(0); |
178 | 181 | double epsilon = 1e-6; |
179 | 182 |
|
| 183 | + RCTFlagsChecker rctChecker{"CBT"}; |
| 184 | + |
180 | 185 | void init(InitContext&) |
181 | 186 | { |
182 | 187 | ccdb->setURL(ccdbUrl.value); |
@@ -338,6 +343,9 @@ struct FlowMc { |
338 | 343 | funcV4 = new TF1("funcV4", "[0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x", 0, 100); |
339 | 344 | funcV4->SetParameters(0.008845, 0.000259668, -3.24435e-06, 4.54837e-08, -6.01825e-10); |
340 | 345 | } |
| 346 | + if (!cfgEvSelRCTflags.value.empty()) { |
| 347 | + rctChecker.init(cfgEvSelRCTflags.value.c_str()); // override initialzation |
| 348 | + } |
341 | 349 | } |
342 | 350 |
|
343 | 351 | void loadCorrections(uint64_t timestamp) |
@@ -435,6 +443,8 @@ struct FlowMc { |
435 | 443 | if (cfgRecoEvSel8 && !collision.sel8()) { |
436 | 444 | return 0; |
437 | 445 | } |
| 446 | + if (!cfgEvSelRCTflags.value.empty() && !rctChecker(*collision)) |
| 447 | + return 0; |
438 | 448 | if (cfgRecoEvkNoSameBunchPileup && !collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup)) { |
439 | 449 | // rejects collisions which are associated with the same "found-by-T0" bunch crossing |
440 | 450 | // https://indico.cern.ch/event/1396220/#1-event-selection-with-its-rof |
|
0 commit comments