Skip to content

Commit 925fd95

Browse files
authored
[PWGCF] add event/track selections, read NUA/NUE (#11349)
1 parent 09a2d34 commit 925fd95

File tree

2 files changed

+215
-7
lines changed

2 files changed

+215
-7
lines changed

PWGCF/TwoParticleCorrelations/Tasks/CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,10 @@ o2physics_add_dpl_workflow(neutron-proton-corr-zdc
6060

6161
o2physics_add_dpl_workflow(di-hadron-cor
6262
SOURCES diHadronCor.cxx
63-
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGCFCore
63+
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGCFCore O2Physics::AnalysisCCDB O2Physics::GFWCore
6464
COMPONENT_NAME Analysis)
6565

6666
o2physics_add_dpl_workflow(longrange-correlation
6767
SOURCES longrangeCorrelation.cxx
6868
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGCFCore
6969
COMPONENT_NAME Analysis)
70-
71-
72-
73-

PWGCF/TwoParticleCorrelations/Tasks/diHadronCor.cxx

Lines changed: 214 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#include <CCDB/BasicCCDBManager.h>
1818
#include "TRandom3.h"
19+
#include "TF1.h"
1920
#include <vector>
2021
#include <string>
2122

@@ -37,6 +38,10 @@
3738
#include "Common/DataModel/CollisionAssociationTables.h"
3839
#include "PWGCF/Core/CorrelationContainer.h"
3940
#include "PWGCF/Core/PairCuts.h"
41+
#include "PWGCF/GenericFramework/Core/GFWPowerArray.h"
42+
#include "PWGCF/GenericFramework/Core/GFW.h"
43+
#include "PWGCF/GenericFramework/Core/GFWCumulant.h"
44+
#include "PWGCF/GenericFramework/Core/GFWWeights.h"
4045
#include "DataFormatsParameters/GRPObject.h"
4146
#include "DataFormatsParameters/GRPMagField.h"
4247

@@ -64,6 +69,10 @@ struct DiHadronCor {
6469
O2_DEFINE_CONFIGURABLE(cfgCutPtMin, float, 0.2f, "minimum accepted track pT")
6570
O2_DEFINE_CONFIGURABLE(cfgCutPtMax, float, 10.0f, "maximum accepted track pT")
6671
O2_DEFINE_CONFIGURABLE(cfgCutEta, float, 0.8f, "Eta cut")
72+
O2_DEFINE_CONFIGURABLE(cfgCutChi2prTPCcls, float, 2.5f, "max chi2 per TPC clusters")
73+
O2_DEFINE_CONFIGURABLE(cfgCutTPCclu, float, 70.0f, "minimum TPC clusters")
74+
O2_DEFINE_CONFIGURABLE(cfgCutITSclu, float, 5.0f, "minimum ITS clusters")
75+
O2_DEFINE_CONFIGURABLE(cfgCutDCAz, float, 2.0f, "max DCA to vertex z")
6776
O2_DEFINE_CONFIGURABLE(cfgCutMerging, float, 0.0, "Merging cut on track merge")
6877
O2_DEFINE_CONFIGURABLE(cfgSelCollByNch, bool, true, "Select collisions by Nch or centrality")
6978
O2_DEFINE_CONFIGURABLE(cfgCutMultMin, int, 0, "Minimum multiplicity for collision")
@@ -77,6 +86,20 @@ struct DiHadronCor {
7786
O2_DEFINE_CONFIGURABLE(cfgCentEstimator, int, 0, "0:FT0C; 1:FT0CVariant1; 2:FT0M; 3:FT0A")
7887
O2_DEFINE_CONFIGURABLE(cfgCentFT0CMin, float, 0.0f, "Minimum centrality (FT0C) to cut events in filter")
7988
O2_DEFINE_CONFIGURABLE(cfgCentFT0CMax, float, 100.0f, "Maximum centrality (FT0C) to cut events in filter")
89+
O2_DEFINE_CONFIGURABLE(cfgUseAdditionalEventCut, bool, false, "Use additional event cut on mult correlations")
90+
O2_DEFINE_CONFIGURABLE(cfgUseTentativeEventCounter, bool, false, "After sel8(), count events regardless of real event selection")
91+
O2_DEFINE_CONFIGURABLE(cfgEvSelkNoSameBunchPileup, bool, false, "rejects collisions which are associated with the same found-by-T0 bunch crossing")
92+
O2_DEFINE_CONFIGURABLE(cfgEvSelkIsGoodZvtxFT0vsPV, bool, false, "removes collisions with large differences between z of PV by tracks and z of PV from FT0 A-C time difference, use this cut at low multiplicities with caution")
93+
O2_DEFINE_CONFIGURABLE(cfgEvSelkNoCollInTimeRangeStandard, bool, false, "no collisions in specified time range")
94+
O2_DEFINE_CONFIGURABLE(cfgEvSelkIsGoodITSLayersAll, bool, true, "cut time intervals with dead ITS staves")
95+
O2_DEFINE_CONFIGURABLE(cfgEvSelkNoCollInRofStandard, bool, false, "no other collisions in this Readout Frame with per-collision multiplicity above threshold")
96+
O2_DEFINE_CONFIGURABLE(cfgEvSelkNoHighMultCollInPrevRof, bool, false, "veto an event if FT0C amplitude in previous ITS ROF is above threshold")
97+
O2_DEFINE_CONFIGURABLE(cfgEvSelMultCorrelation, bool, true, "Multiplicity correlation cut")
98+
O2_DEFINE_CONFIGURABLE(cfgEvSelV0AT0ACut, bool, true, "V0A T0A 5 sigma cut")
99+
O2_DEFINE_CONFIGURABLE(cfgEvSelOccupancy, bool, true, "Occupancy cut")
100+
O2_DEFINE_CONFIGURABLE(cfgCutOccupancyHigh, int, 2000, "High cut on TPC occupancy")
101+
O2_DEFINE_CONFIGURABLE(cfgCutOccupancyLow, int, 0, "Low cut on TPC occupancy")
102+
O2_DEFINE_CONFIGURABLE(cfgEfficiency, std::string, "", "CCDB path to efficiency object")
80103

81104
SliceCache cache;
82105
SliceCache cacheNch;
@@ -99,7 +122,13 @@ struct DiHadronCor {
99122

100123
// make the filters and cuts.
101124
Filter collisionFilter = (nabs(aod::collision::posZ) < cfgCutVtxZ) && (aod::evsel::sel8) == true && (aod::cent::centFT0C > cfgCentFT0CMin) && (aod::cent::centFT0C < cfgCentFT0CMax);
102-
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPtMin) && (aod::track::pt < cfgCutPtMax) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true));
125+
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPtMin) && (aod::track::pt < cfgCutPtMax) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true)) && (aod::track::tpcChi2NCl < cfgCutChi2prTPCcls) && (nabs(aod::track::dcaZ) < cfgCutDCAz);
126+
127+
// Corrections
128+
TH1D* mEfficiency = nullptr;
129+
GFWWeights* mAcceptance = nullptr;
130+
TObjArray* mAcceptanceList = nullptr;
131+
bool correctionsLoaded = false;
103132

104133
// Define the outputs
105134
OutputObj<CorrelationContainer> same{"sameEvent"};
@@ -121,6 +150,15 @@ struct DiHadronCor {
121150
MixedEvent = 3
122151
};
123152

153+
// Additional Event selection cuts - Copy from flowGenericFramework.cxx
154+
TF1* fMultPVCutLow = nullptr;
155+
TF1* fMultPVCutHigh = nullptr;
156+
TF1* fMultCutLow = nullptr;
157+
TF1* fMultCutHigh = nullptr;
158+
TF1* fMultMultPVCut = nullptr;
159+
TF1* fT0AV0AMean = nullptr;
160+
TF1* fT0AV0ASigma = nullptr;
161+
124162
using AodCollisions = soa::Filtered<soa::Join<aod::Collisions, aod::EvSel, aod::CentFT0Cs, aod::CentFT0CVariant1s, aod::CentFT0Ms, aod::CentFV0As, aod::Mults>>; // aod::CentFT0Cs
125163
using AodTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksExtra>>;
126164

@@ -138,12 +176,56 @@ struct DiHadronCor {
138176

139177
LOGF(info, "Starting init");
140178

179+
// Event Counter
180+
registry.add("hEventCountSpecific", "Number of Event;; Count", {HistType::kTH1D, {{10, 0, 10}}});
181+
registry.get<TH1>(HIST("hEventCountSpecific"))->GetXaxis()->SetBinLabel(1, "after sel8");
182+
registry.get<TH1>(HIST("hEventCountSpecific"))->GetXaxis()->SetBinLabel(2, "kNoSameBunchPileup");
183+
registry.get<TH1>(HIST("hEventCountSpecific"))->GetXaxis()->SetBinLabel(3, "kIsGoodZvtxFT0vsPV");
184+
registry.get<TH1>(HIST("hEventCountSpecific"))->GetXaxis()->SetBinLabel(4, "kNoCollInTimeRangeStandard");
185+
registry.get<TH1>(HIST("hEventCountSpecific"))->GetXaxis()->SetBinLabel(5, "kIsGoodITSLayersAll");
186+
registry.get<TH1>(HIST("hEventCountSpecific"))->GetXaxis()->SetBinLabel(6, "kNoCollInRofStandard");
187+
registry.get<TH1>(HIST("hEventCountSpecific"))->GetXaxis()->SetBinLabel(7, "kNoHighMultCollInPrevRof");
188+
registry.get<TH1>(HIST("hEventCountSpecific"))->GetXaxis()->SetBinLabel(8, "occupancy");
189+
registry.get<TH1>(HIST("hEventCountSpecific"))->GetXaxis()->SetBinLabel(9, "MultCorrelation");
190+
registry.get<TH1>(HIST("hEventCountSpecific"))->GetXaxis()->SetBinLabel(10, "cfgEvSelV0AT0ACut");
191+
if (cfgUseTentativeEventCounter) {
192+
registry.add("hEventCountTentative", "Number of Event;; Count", {HistType::kTH1D, {{10, 0, 10}}});
193+
registry.get<TH1>(HIST("hEventCountTentative"))->GetXaxis()->SetBinLabel(1, "after sel8");
194+
registry.get<TH1>(HIST("hEventCountTentative"))->GetXaxis()->SetBinLabel(2, "kNoSameBunchPileup");
195+
registry.get<TH1>(HIST("hEventCountTentative"))->GetXaxis()->SetBinLabel(3, "kIsGoodZvtxFT0vsPV");
196+
registry.get<TH1>(HIST("hEventCountTentative"))->GetXaxis()->SetBinLabel(4, "kNoCollInTimeRangeStandard");
197+
registry.get<TH1>(HIST("hEventCountTentative"))->GetXaxis()->SetBinLabel(5, "kIsGoodITSLayersAll");
198+
registry.get<TH1>(HIST("hEventCountTentative"))->GetXaxis()->SetBinLabel(6, "kNoCollInRofStandard");
199+
registry.get<TH1>(HIST("hEventCountTentative"))->GetXaxis()->SetBinLabel(7, "kNoHighMultCollInPrevRof");
200+
registry.get<TH1>(HIST("hEventCountTentative"))->GetXaxis()->SetBinLabel(8, "occupancy");
201+
registry.get<TH1>(HIST("hEventCountTentative"))->GetXaxis()->SetBinLabel(9, "MultCorrelation");
202+
registry.get<TH1>(HIST("hEventCountTentative"))->GetXaxis()->SetBinLabel(10, "cfgEvSelV0AT0ACut");
203+
}
204+
205+
if (cfgUseAdditionalEventCut) {
206+
fMultPVCutLow = new TF1("fMultPVCutLow", "[0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x - 3.5*([5]+[6]*x+[7]*x*x+[8]*x*x*x+[9]*x*x*x*x)", 0, 100);
207+
fMultPVCutLow->SetParameters(3257.29, -121.848, 1.98492, -0.0172128, 6.47528e-05, 154.756, -1.86072, -0.0274713, 0.000633499, -3.37757e-06);
208+
fMultPVCutHigh = new TF1("fMultPVCutHigh", "[0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x + 3.5*([5]+[6]*x+[7]*x*x+[8]*x*x*x+[9]*x*x*x*x)", 0, 100);
209+
fMultPVCutHigh->SetParameters(3257.29, -121.848, 1.98492, -0.0172128, 6.47528e-05, 154.756, -1.86072, -0.0274713, 0.000633499, -3.37757e-06);
210+
211+
fMultCutLow = new TF1("fMultCutLow", "[0]+[1]*x+[2]*x*x+[3]*x*x*x - 2.*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x)", 0, 100);
212+
fMultCutLow->SetParameters(1654.46, -47.2379, 0.449833, -0.0014125, 150.773, -3.67334, 0.0530503, -0.000614061, 3.15956e-06);
213+
fMultCutHigh = new TF1("fMultCutHigh", "[0]+[1]*x+[2]*x*x+[3]*x*x*x + 3.*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x)", 0, 100);
214+
fMultCutHigh->SetParameters(1654.46, -47.2379, 0.449833, -0.0014125, 150.773, -3.67334, 0.0530503, -0.000614061, 3.15956e-06);
215+
216+
fT0AV0AMean = new TF1("fT0AV0AMean", "[0]+[1]*x", 0, 200000);
217+
fT0AV0AMean->SetParameters(-1601.0581, 9.417652e-01);
218+
fT0AV0ASigma = new TF1("fT0AV0ASigma", "[0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x", 0, 200000);
219+
fT0AV0ASigma->SetParameters(463.4144, 6.796509e-02, -9.097136e-07, 7.971088e-12, -2.600581e-17);
220+
}
221+
141222
// Make histograms to check the distributions after cuts
142223
registry.add("deltaEta_deltaPhi_same", "", {HistType::kTH2D, {axisDeltaPhi, axisDeltaEta}}); // check to see the delta eta and delta phi distribution
143224
registry.add("deltaEta_deltaPhi_mixed", "", {HistType::kTH2D, {axisDeltaPhi, axisDeltaEta}});
144225
registry.add("Phi", "Phi", {HistType::kTH1D, {axisPhi}});
145226
registry.add("Eta", "Eta", {HistType::kTH1D, {axisEta}});
146227
registry.add("pT", "pT", {HistType::kTH1D, {axisPtTrigger}});
228+
registry.add("pTCorrected", "pTCorrected", {HistType::kTH1D, {axisPtTrigger}});
147229
registry.add("Nch", "N_{ch}", {HistType::kTH1D, {axisMultiplicity}});
148230
registry.add("Nch_used", "N_{ch}", {HistType::kTH1D, {axisMultiplicity}}); // histogram to see how many events are in the same and mixed event
149231
std::string hCentTitle = "Centrality distribution, Estimator " + std::to_string(cfgCentEstimator);
@@ -210,6 +292,39 @@ struct DiHadronCor {
210292
return cent;
211293
}
212294

295+
template <typename TTrack>
296+
bool trackSelected(TTrack track)
297+
{
298+
return ((track.tpcNClsFound() >= cfgCutTPCclu) && (track.itsNCls() >= cfgCutITSclu));
299+
}
300+
301+
void loadCorrections(uint64_t timestamp)
302+
{
303+
if (correctionsLoaded)
304+
return;
305+
if (cfgEfficiency.value.empty() == false) {
306+
mEfficiency = ccdb->getForTimeStamp<TH1D>(cfgEfficiency, timestamp);
307+
if (mEfficiency == nullptr) {
308+
LOGF(fatal, "Could not load efficiency histogram for trigger particles from %s", cfgEfficiency.value.c_str());
309+
}
310+
LOGF(info, "Loaded efficiency histogram from %s (%p)", cfgEfficiency.value.c_str(), (void*)mEfficiency);
311+
}
312+
correctionsLoaded = true;
313+
}
314+
315+
bool setCurrentParticleWeights(float& weight_nue, float pt)
316+
{
317+
float eff = 1.;
318+
if (mEfficiency)
319+
eff = mEfficiency->GetBinContent(mEfficiency->FindBin(pt));
320+
else
321+
eff = 1.0;
322+
if (eff == 0)
323+
return false;
324+
weight_nue = 1. / eff;
325+
return true;
326+
}
327+
213328
// fill multiple histograms
214329
template <typename TCollision, typename TTracks>
215330
void fillYield(TCollision collision, TTracks tracks) // function to fill the yield and etaphi histograms.
@@ -220,10 +335,16 @@ struct DiHadronCor {
220335
registry.fill(HIST("Nch"), tracks.size());
221336
registry.fill(HIST("zVtx"), collision.posZ());
222337

338+
float weff1 = 1;
223339
for (auto const& track1 : tracks) {
340+
if (!trackSelected(track1))
341+
continue;
342+
if (!setCurrentParticleWeights(weff1, track1.pt()))
343+
continue;
224344
registry.fill(HIST("Phi"), RecoDecay::constrainAngle(track1.phi(), 0.0));
225345
registry.fill(HIST("Eta"), track1.eta());
226346
registry.fill(HIST("pT"), track1.pt());
347+
registry.fill(HIST("pTCorrected"), track1.pt(), weff1);
227348
}
228349
}
229350

@@ -263,15 +384,26 @@ struct DiHadronCor {
263384

264385
int fSampleIndex = gRandom->Uniform(0, cfgSampleSize);
265386

387+
float weff1 = 1;
388+
float weff2 = 1;
266389
// loop over all tracks
267390
for (auto const& track1 : tracks1) {
268391

392+
if (!trackSelected(track1))
393+
continue;
394+
if (!setCurrentParticleWeights(weff1, track1.pt()))
395+
continue;
269396
if (system == SameEvent) {
270397
registry.fill(HIST("Trig_hist"), fSampleIndex, posZ, track1.pt());
271398
}
272399

273400
for (auto const& track2 : tracks2) {
274401

402+
if (!trackSelected(track2))
403+
continue;
404+
if (!setCurrentParticleWeights(weff2, track2.pt()))
405+
continue;
406+
275407
if (track1.pt() <= track2.pt())
276408
continue; // skip if the trigger pt is less than the associate pt
277409

@@ -314,15 +446,90 @@ struct DiHadronCor {
314446
}
315447
}
316448

449+
template <typename TCollision>
450+
bool eventSelected(TCollision collision, const int multTrk, const float centrality, const bool fillCounter)
451+
{
452+
registry.fill(HIST("hEventCountSpecific"), 0.5);
453+
if (cfgEvSelkNoSameBunchPileup && !collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup)) {
454+
// rejects collisions which are associated with the same "found-by-T0" bunch crossing
455+
// https://indico.cern.ch/event/1396220/#1-event-selection-with-its-rof
456+
return 0;
457+
}
458+
if (fillCounter && cfgEvSelkNoSameBunchPileup)
459+
registry.fill(HIST("hEventCountSpecific"), 1.5);
460+
if (cfgEvSelkIsGoodZvtxFT0vsPV && !collision.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV)) {
461+
// removes collisions with large differences between z of PV by tracks and z of PV from FT0 A-C time difference
462+
// use this cut at low multiplicities with caution
463+
return 0;
464+
}
465+
if (fillCounter && cfgEvSelkIsGoodZvtxFT0vsPV)
466+
registry.fill(HIST("hEventCountSpecific"), 2.5);
467+
if (cfgEvSelkNoCollInTimeRangeStandard && !collision.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
468+
// no collisions in specified time range
469+
return 0;
470+
}
471+
if (fillCounter && cfgEvSelkNoCollInTimeRangeStandard)
472+
registry.fill(HIST("hEventCountSpecific"), 3.5);
473+
if (cfgEvSelkIsGoodITSLayersAll && !collision.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
474+
// from Jan 9 2025 AOT meeting
475+
// cut time intervals with dead ITS staves
476+
return 0;
477+
}
478+
if (fillCounter && cfgEvSelkIsGoodITSLayersAll)
479+
registry.fill(HIST("hEventCountSpecific"), 4.5);
480+
if (cfgEvSelkNoCollInRofStandard && !collision.selection_bit(o2::aod::evsel::kNoCollInRofStandard)) {
481+
// no other collisions in this Readout Frame with per-collision multiplicity above threshold
482+
return 0;
483+
}
484+
if (fillCounter && cfgEvSelkNoCollInRofStandard)
485+
registry.fill(HIST("hEventCountSpecific"), 5.5);
486+
if (cfgEvSelkNoHighMultCollInPrevRof && !collision.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof)) {
487+
// veto an event if FT0C amplitude in previous ITS ROF is above threshold
488+
return 0;
489+
}
490+
if (fillCounter && cfgEvSelkNoHighMultCollInPrevRof)
491+
registry.fill(HIST("hEventCountSpecific"), 6.5);
492+
auto occupancy = collision.trackOccupancyInTimeRange();
493+
if (cfgEvSelOccupancy && (occupancy < cfgCutOccupancyLow || occupancy > cfgCutOccupancyHigh))
494+
return 0;
495+
if (fillCounter && cfgEvSelOccupancy)
496+
registry.fill(HIST("hEventCountSpecific"), 7.5);
497+
498+
auto multNTracksPV = collision.multNTracksPV();
499+
if (cfgEvSelMultCorrelation) {
500+
if (multNTracksPV < fMultPVCutLow->Eval(centrality))
501+
return 0;
502+
if (multNTracksPV > fMultPVCutHigh->Eval(centrality))
503+
return 0;
504+
if (multTrk < fMultCutLow->Eval(centrality))
505+
return 0;
506+
if (multTrk > fMultCutHigh->Eval(centrality))
507+
return 0;
508+
}
509+
if (fillCounter && cfgEvSelMultCorrelation)
510+
registry.fill(HIST("hEventCountSpecific"), 8.5);
511+
512+
// V0A T0A 5 sigma cut
513+
if (cfgEvSelV0AT0ACut && (std::fabs(collision.multFV0A() - fT0AV0AMean->Eval(collision.multFT0A())) > 5 * fT0AV0ASigma->Eval(collision.multFT0A())))
514+
return 0;
515+
if (fillCounter && cfgEvSelV0AT0ACut)
516+
registry.fill(HIST("hEventCountSpecific"), 9.5);
517+
518+
return 1;
519+
}
520+
317521
void processSame(AodCollisions::iterator const& collision, AodTracks const& tracks, aod::BCsWithTimestamps const&)
318522
{
319523

320524
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
525+
float cent = getCentrality(collision);
526+
if (cfgUseAdditionalEventCut && !eventSelected(collision, tracks.size(), cent, true))
527+
return;
321528

322529
registry.fill(HIST("eventcount"), SameEvent); // because its same event i put it in the 1 bin
323530

531+
loadCorrections(bc.timestamp());
324532
fillYield(collision, tracks);
325-
float cent = getCentrality(collision);
326533

327534
if (cfgSelCollByNch && (tracks.size() < cfgCutMultMin || tracks.size() >= cfgCutMultMax)) {
328535
return;
@@ -354,6 +561,7 @@ struct DiHadronCor {
354561
for (auto const& [collision1, tracks1, collision2, tracks2] : pair) {
355562
registry.fill(HIST("eventcount"), MixedEvent); // fill the mixed event in the 3 bin
356563
auto bc = collision1.bc_as<aod::BCsWithTimestamps>();
564+
loadCorrections(bc.timestamp());
357565

358566
if (cfgSelCollByNch && (tracks1.size() < cfgCutMultMin || tracks1.size() >= cfgCutMultMax))
359567
continue;
@@ -363,6 +571,10 @@ struct DiHadronCor {
363571

364572
float cent1 = getCentrality(collision1);
365573
float cent2 = getCentrality(collision2);
574+
if (cfgUseAdditionalEventCut && !eventSelected(collision1, tracks1.size(), cent1, false))
575+
continue;
576+
if (cfgUseAdditionalEventCut && !eventSelected(collision2, tracks2.size(), cent2, false))
577+
continue;
366578

367579
if (!cfgSelCollByNch && (cent1 < cfgCutCentMin || cent1 >= cfgCutCentMax))
368580
continue;

0 commit comments

Comments
 (0)