Skip to content

Commit ba8463b

Browse files
committed
add bc and rct sels on the gen. level for v0s
1 parent 31afb99 commit ba8463b

1 file changed

Lines changed: 49 additions & 4 deletions

File tree

PWGLF/TableProducer/Strangeness/v0qaanalysis.cxx

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "PWGLF/Utils/inelGt.h"
2121

2222
#include "Common/CCDB/EventSelectionParams.h"
23+
#include "Common/CCDB/RCTSelectionFlags.h"
2324
#include "Common/DataModel/Centrality.h"
2425
#include "Common/DataModel/EventSelection.h"
2526
#include "Common/DataModel/Multiplicity.h"
@@ -43,12 +44,14 @@
4344

4445
#include <TH1.h>
4546

47+
#include <string>
4648
#include <utility>
4749
#include <vector>
4850

4951
using namespace o2;
5052
using namespace o2::framework;
5153
using namespace o2::framework::expressions;
54+
using namespace o2::aod::rctsel;
5255

5356
void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
5457
{
@@ -61,6 +64,7 @@ void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
6164
using DauTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr, aod::pidTOFPi, aod::pidTOFPr>;
6265
using DauTracksMC = soa::Join<DauTracks, aod::McTrackLabels>;
6366
using V0Collisions = soa::Join<aod::Collisions, aod::EvSels, aod::PVMults, aod::CentFT0Ms, aod::CentNGlobals>;
67+
using BCsWithBcSels = soa::Join<aod::BCsWithTimestamps, aod::BcSels>;
6468

6569
struct LfV0qaanalysis {
6670

@@ -106,10 +110,12 @@ struct LfV0qaanalysis {
106110
registry.add("hCentFT0M_GenRecoColl_MC_INELgt0", "hCentFT0M_GenRecoColl_MC_INELgt0", {HistType::kTH1F, {{1000, 0.f, 100.f}}});
107111
registry.add("hCentFT0M_GenColl_MC", "hCentFT0M_GenColl_MC", {HistType::kTH1F, {{1000, 0.f, 100.f}}});
108112
registry.add("hCentFT0M_GenColl_MC_INELgt0", "hCentFT0M_GenColl_MC_INELgt0", {HistType::kTH1F, {{1000, 0.f, 100.f}}});
109-
registry.add("hNEventsMCGen", "hNEventsMCGen", {HistType::kTH1D, {{4, 0.f, 4.f}}});
113+
registry.add("hNEventsMCGen", "hNEventsMCGen", {HistType::kTH1D, {{5, 0.f, 5.f}}});
110114
registry.get<TH1>(HIST("hNEventsMCGen"))->GetXaxis()->SetBinLabel(1, "all");
111115
registry.get<TH1>(HIST("hNEventsMCGen"))->GetXaxis()->SetBinLabel(2, "zvertex_true");
112-
registry.get<TH1>(HIST("hNEventsMCGen"))->GetXaxis()->SetBinLabel(3, "INELgt0_true");
116+
registry.get<TH1>(HIST("hNEventsMCGen"))->GetXaxis()->SetBinLabel(3, "BC TF/ITS ROF border");
117+
registry.get<TH1>(HIST("hNEventsMCGen"))->GetXaxis()->SetBinLabel(4, "RCTFlagsChecker");
118+
registry.get<TH1>(HIST("hNEventsMCGen"))->GetXaxis()->SetBinLabel(5, "INELgt0_true");
113119
registry.add("hNEventsMCGenReco", "hNEventsMCGenReco", {HistType::kTH1D, {{2, 0.f, 2.f}}});
114120
registry.get<TH1>(HIST("hNEventsMCGenReco"))->GetXaxis()->SetBinLabel(1, "INEL");
115121
registry.get<TH1>(HIST("hNEventsMCGenReco"))->GetXaxis()->SetBinLabel(2, "INELgt0");
@@ -153,6 +159,7 @@ struct LfV0qaanalysis {
153159
registry.add("Generated_MCGenColl_INELgt0_Lambda", "Generated_MCGenColl_INELgt0_Lambda", {HistType::kTH2F, {{250, 0.f, 25.f}, {1000, 0.f, 100.f}}});
154160
registry.add("Generated_MCGenColl_INELgt0_AntiLambda", "Generated_MCGenColl_INELgt0_AntiLambda", {HistType::kTH2F, {{250, 0.f, 25.f}, {1000, 0.f, 100.f}}});
155161
}
162+
rctChecker.init(cfgEvtRCTFlagCheckerLabel, cfgEvtRCTFlagCheckerZDCCheck, cfgEvtRCTFlagCheckerLimitAcceptAsBad, applyRCTOnGen);
156163
registry.print();
157164
}
158165

@@ -164,11 +171,18 @@ struct LfV0qaanalysis {
164171
Configurable<bool> isTriggerTVX{"isTriggerTVX", 1, "Is Trigger TVX"};
165172
Configurable<bool> isNoTimeFrameBorder{"isNoTimeFrameBorder", 1, "Is No Time Frame Border"};
166173
Configurable<bool> isNoITSROFrameBorder{"isNoITSROFrameBorder", 1, "Is No ITS Readout Frame Border"};
174+
Configurable<bool> applyBcBorderCutsOnGen{"applyBcBorderCutsOnGen", false, "Apply enabled BC-level TF and ITS ROF border cuts on generated-level MC collisions"};
175+
Configurable<bool> applyRCTOnGen{"applyRCTOnGen", false, "Apply enabled BC-level RCT run-condition selection on generated-level MC collisions"};
167176
Configurable<bool> isVertexTOFmatched{"isVertexTOFmatched", 0, "Is Vertex TOF matched"};
168177
Configurable<bool> isNoSameBunchPileup{"isNoSameBunchPileup", 0, "isNoSameBunchPileup"};
178+
Configurable<std::string> cfgEvtRCTFlagCheckerLabel{"cfgEvtRCTFlagCheckerLabel", "CBT_hadronPID", "Evt sel: RCT flag checker label"};
179+
Configurable<bool> cfgEvtRCTFlagCheckerZDCCheck{"cfgEvtRCTFlagCheckerZDCCheck", false, "Evt sel: RCT flag checker ZDC check"};
180+
Configurable<bool> cfgEvtRCTFlagCheckerLimitAcceptAsBad{"cfgEvtRCTFlagCheckerLimitAcceptAsBad", false, "Evt sel: RCT flag checker treat Limited Acceptance As Bad"};
169181
Configurable<int> v0TypeSelection{"v0TypeSelection", 1, "select on a certain V0 type (leave negative if no selection desired)"};
170182
Configurable<bool> NotITSAfterburner{"NotITSAfterburner", 0, "NotITSAfterburner"};
171183

184+
RCTFlagsChecker rctChecker;
185+
172186
// V0 selection criteria
173187
Configurable<double> v0cospa{"v0cospa", 0.97, "V0 CosPA"};
174188
Configurable<float> dcav0dau{"dcav0dau", 10, "DCA V0 Daughters"};
@@ -214,6 +228,27 @@ struct LfV0qaanalysis {
214228
return true;
215229
}
216230

231+
template <typename TBC>
232+
bool acceptGeneratedEventBcBorderCuts(TBC const& bc)
233+
{
234+
if (!applyBcBorderCutsOnGen) {
235+
return true;
236+
}
237+
if (isNoTimeFrameBorder && !bc.selection_bit(aod::evsel::kNoTimeFrameBorder)) {
238+
return false;
239+
}
240+
if (isNoITSROFrameBorder && !bc.selection_bit(aod::evsel::kNoITSROFrameBorder)) {
241+
return false;
242+
}
243+
return true;
244+
}
245+
246+
template <typename TBC>
247+
bool acceptGeneratedEventRCT(TBC const& bc)
248+
{
249+
return !applyRCTOnGen || rctChecker(bc);
250+
}
251+
217252
Filter preFilterV0 = nabs(aod::v0data::dcapostopv) > dcapostopv&&
218253
nabs(aod::v0data::dcanegtopv) > dcanegtopv&& aod::v0data::dcaV0daughters < dcav0dau;
219254

@@ -469,7 +504,8 @@ struct LfV0qaanalysis {
469504

470505
void processMCGen(soa::Join<aod::McCollisions, aod::McCentFT0Ms>::iterator const& mcCollision,
471506
aod::McParticles const& mcParticles,
472-
soa::SmallGroups<soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels, aod::PVMults>> const& collisions)
507+
soa::SmallGroups<soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels, aod::PVMults>> const& collisions,
508+
BCsWithBcSels const&)
473509
{
474510
//====================================
475511
//===== Event Loss Denominator =======
@@ -481,13 +517,22 @@ struct LfV0qaanalysis {
481517
return;
482518
}
483519
registry.fill(HIST("hNEventsMCGen"), 1.5);
520+
const auto bc = mcCollision.bc_as<BCsWithBcSels>();
521+
if (!acceptGeneratedEventBcBorderCuts(bc)) {
522+
return;
523+
}
524+
registry.fill(HIST("hNEventsMCGen"), 2.5);
525+
if (!acceptGeneratedEventRCT(bc)) {
526+
return;
527+
}
528+
registry.fill(HIST("hNEventsMCGen"), 3.5);
484529
registry.fill(HIST("hCentFT0M_GenColl_MC"), mcCollision.centFT0M());
485530

486531
bool isINELgt0true = false;
487532

488533
if (pwglf::isINELgtNmc(mcParticles, 0, pdgDB)) {
489534
isINELgt0true = true;
490-
registry.fill(HIST("hNEventsMCGen"), 2.5);
535+
registry.fill(HIST("hNEventsMCGen"), 4.5);
491536
registry.fill(HIST("hCentFT0M_GenColl_MC_INELgt0"), mcCollision.centFT0M());
492537
}
493538

0 commit comments

Comments
 (0)