Skip to content

Commit 27640bd

Browse files
EmilGormalibuild
andauthored
[PWGCF] Remove superfluous track cut (#10855)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 74727d0 commit 27640bd

File tree

1 file changed

+19
-76
lines changed

1 file changed

+19
-76
lines changed

PWGCF/GenericFramework/Tasks/flowGenericFramework.cxx

Lines changed: 19 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ struct FlowGenericFramework {
9191
O2_DEFINE_CONFIGURABLE(cfgRunByRun, bool, false, "Fill histograms on a run-by-run basis")
9292
O2_DEFINE_CONFIGURABLE(cfgFillQA, bool, false, "Fill QA histograms")
9393
O2_DEFINE_CONFIGURABLE(cfgUseAdditionalEventCut, bool, false, "Use additional event cut on mult correlations")
94-
O2_DEFINE_CONFIGURABLE(cfgUseAdditionalTrackCut, bool, false, "Use additional track cut on phi")
9594
O2_DEFINE_CONFIGURABLE(cfgUseCentralMoments, bool, true, "Use central moments in vn-pt calculations")
9695
O2_DEFINE_CONFIGURABLE(cfgUsePID, bool, true, "Enable PID information")
9796
O2_DEFINE_CONFIGURABLE(cfgUseGapMethod, bool, false, "Use gap method in vn-pt calculations")
@@ -111,11 +110,11 @@ struct FlowGenericFramework {
111110
O2_DEFINE_CONFIGURABLE(cfgIsGoodITSLayersAll, bool, true, "kIsGoodITSLayersAll");
112111
O2_DEFINE_CONFIGURABLE(cfgNoCollInTimeRangeStandard, bool, true, "kNoCollInTimeRangeStandard");
113112
O2_DEFINE_CONFIGURABLE(cfgDoOccupancySel, bool, true, "Bool for event selection on detector occupancy");
114-
O2_DEFINE_CONFIGURABLE(cfgMultCut, bool, true, "Use additional evenr cut on mult correlations");
113+
O2_DEFINE_CONFIGURABLE(cfgMultCut, bool, true, "Use additional event cut on mult correlations");
115114
O2_DEFINE_CONFIGURABLE(cfgTVXinTRD, bool, true, "Use kTVXinTRD (reject TRD triggered events)");
116115
O2_DEFINE_CONFIGURABLE(cfgIsVertexITSTPC, bool, true, "Selects collisions with at least one ITS-TPC track");
117116
O2_DEFINE_CONFIGURABLE(cfgMagField, float, 99999, "Configurable magnetic field; default CCDB will be queried");
118-
O2_DEFINE_CONFIGURABLE(cfgTofPtCut, float, 1.0, "pt cut on TOF for PID");
117+
O2_DEFINE_CONFIGURABLE(cfgTofPtCut, float, 0.5, "pt cut on TOF for PID");
119118

120119
Configurable<GFWBinningCuts> cfgGFWBinning{"cfgGFWBinning", {40, 16, 72, 300, 0, 3000, 0.2, 10.0, 0.2, 3.0, {0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.2, 2.4, 2.6, 2.8, 3, 3.5, 4, 5, 6, 8, 10}, {0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90}}, "Configuration for binning"};
121120
Configurable<GFWRegions> cfgRegions{"cfgRegions", {{"refN", "refP", "refFull"}, {-0.8, 0.4, -0.8}, {-0.4, 0.8, 0.8}, {0, 0, 0}, {1, 1, 1}}, "Configurations for GFW regions"};
@@ -207,7 +206,6 @@ struct FlowGenericFramework {
207206
cfgGFWBinning->Print();
208207

209208
AxisSpec phiAxis = {phibins, philow, phiup, "#phi"};
210-
AxisSpec phiModAxis = {100, 0, constants::math::PI / 9, "fmod(#varphi,#pi/9)"};
211209
AxisSpec etaAxis = {etabins, -cfgEta, cfgEta, "#eta"};
212210
AxisSpec vtxAxis = {vtxZbins, -cfgVtxZ, cfgVtxZ, "Vtx_{z} (cm)"};
213211
AxisSpec ptAxis = {ptbinning, "#it{p}_{T} GeV/#it{c}"};
@@ -242,7 +240,6 @@ struct FlowGenericFramework {
242240
if (doprocessMCReco || doprocessData || doprocessRun2) {
243241
registry.add("trackQA/before/phi_eta_vtxZ", "", {HistType::kTH3D, {phiAxis, etaAxis, vtxAxis}});
244242
registry.add("trackQA/before/pt_dcaXY_dcaZ", "", {HistType::kTH3D, {ptAxis, dcaXYAXis, dcaZAXis}});
245-
registry.add("trackQA/before/pt_phi", "", {HistType::kTH2D, {ptAxis, phiModAxis}});
246243
registry.addClone("trackQA/before/", "trackQA/after/");
247244
registry.add("trackQA/after/pt_ref", "", {HistType::kTH1D, {{100, ptreflow, ptrefup}}});
248245
registry.add("trackQA/after/pt_poi", "", {HistType::kTH1D, {{100, ptpoilow, ptpoiup}}});
@@ -310,20 +307,6 @@ struct FlowGenericFramework {
310307
fFCpt->initialise(multAxis, cfgMpar, configs, cfgNbootstrap);
311308
// Event selection - Alex
312309
if (cfgUseAdditionalEventCut) {
313-
/*
314-
//22s cuts
315-
fMultPVCutLow = new TF1("fMultPVCutLow", "[0]+[1]*x+[2]*x*x+[3]*x*x*x - 2.5*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x)", 0, 100);
316-
fMultPVCutLow->SetParameters(2834.66, -87.0127, 0.915126, -0.00330136, 332.513, -12.3476, 0.251663, -0.00272819, 1.12242e-05);
317-
fMultPVCutHigh = new TF1("fMultPVCutHigh", "[0]+[1]*x+[2]*x*x+[3]*x*x*x + 2.5*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x)", 0, 100);
318-
fMultPVCutHigh->SetParameters(2834.66, -87.0127, 0.915126, -0.00330136, 332.513, -12.3476, 0.251663, -0.00272819, 1.12242e-05);
319-
320-
fMultCutLow = new TF1("fMultCutLow", "[0]+[1]*x+[2]*x*x+[3]*x*x*x - 2.5*([4]+[5]*x)", 0, 100);
321-
fMultCutLow->SetParameters(1893.94, -53.86, 0.502913, -0.0015122, 109.625, -1.19253);
322-
fMultCutHigh = new TF1("fMultCutHigh", "[0]+[1]*x+[2]*x*x+[3]*x*x*x + 3.*([4]+[5]*x)", 0, 100);
323-
fMultCutHigh->SetParameters(1893.94, -53.86, 0.502913, -0.0015122, 109.625, -1.19253);
324-
fMultMultPVCut = new TF1("fMultMultPVCut", "[0]+[1]*x+[2]*x*x", 0, 5000);
325-
fMultMultPVCut->SetParameters(-0.1, 0.785, -4.7e-05);
326-
*/
327310
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);
328311
fMultPVCutLow->SetParameters(3257.29, -121.848, 1.98492, -0.0172128, 6.47528e-05, 154.756, -1.86072, -0.0274713, 0.000633499, -3.37757e-06);
329312
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);
@@ -334,11 +317,6 @@ struct FlowGenericFramework {
334317
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);
335318
fMultCutHigh->SetParameters(1654.46, -47.2379, 0.449833, -0.0014125, 150.773, -3.67334, 0.0530503, -0.000614061, 3.15956e-06);
336319
}
337-
338-
if (cfgUseAdditionalTrackCut) {
339-
fPhiCutLow = new TF1("fPhiCutLow", "0.06/x+pi/18.0-0.06", 0, 100);
340-
fPhiCutHigh = new TF1("fPhiCutHigh", "0.1/x+pi/18.0+0.06", 0, 100);
341-
}
342320
}
343321

344322
static constexpr std::string_view FillTimeName[] = {"before/", "after/"};
@@ -543,44 +521,9 @@ struct FlowGenericFramework {
543521
if (cfgRunByRun)
544522
th1sList[run][hEventSel]->Fill(9.5);
545523
}
546-
547-
/* 22s
548-
if (multNTracksPV < fMultPVCutLow->Eval(centrality))
549-
return 0;
550-
if (multNTracksPV > fMultPVCutHigh->Eval(centrality))
551-
return 0;
552-
if (multTrk < fMultCutLow->Eval(centrality))
553-
return 0;
554-
if (multTrk > fMultCutHigh->Eval(centrality))
555-
return 0;
556-
if (multTrk > fMultMultPVCut->Eval(multNTracksPV))
557-
return 0;
558-
*/
559524
return 1;
560525
}
561526

562-
template <typename TTrack>
563-
bool trackSelected(TTrack track, const int& field)
564-
{
565-
double phimodn = track.phi();
566-
if (field < 0) // for negative polarity field
567-
phimodn = TwoPI - phimodn;
568-
if (track.sign() < 0) // for negative charge
569-
phimodn = TwoPI - phimodn;
570-
if (phimodn < 0)
571-
LOGF(warning, "phi < 0: %g", phimodn);
572-
573-
phimodn += PI / 18.0; // to center gap in the middle
574-
phimodn = fmod(phimodn, PI / 9.0);
575-
if (cfgFillQA)
576-
registry.fill(HIST("trackQA/before/pt_phi"), track.pt(), phimodn);
577-
if (phimodn < fPhiCutHigh->Eval(track.pt()) && phimodn > fPhiCutLow->Eval(track.pt()))
578-
return false; // reject track
579-
if (cfgFillQA)
580-
registry.fill(HIST("trackQA/after/pt_phi"), track.pt(), phimodn);
581-
return true;
582-
}
583-
584527
enum DataType {
585528
kReco,
586529
kGen
@@ -700,7 +643,7 @@ struct FlowGenericFramework {
700643
}
701644

702645
template <DataType dt, typename TCollision, typename TTracks>
703-
void processCollision(TCollision collision, TTracks tracks, const float& centrality, const int& field, const int& run)
646+
void processCollision(TCollision collision, TTracks tracks, const float& centrality, const int& run)
704647
{
705648
if (tracks.size() < 1)
706649
return;
@@ -719,14 +662,14 @@ struct FlowGenericFramework {
719662
fFCpt->clearVector();
720663
float lRandom = fRndm->Rndm();
721664
for (const auto& track : tracks) {
722-
processTrack(track, vtxz, field, run);
665+
processTrack(track, vtxz, run);
723666
}
724667
if (!cfgFillWeights)
725668
fillOutputContainers<dt>((cfgUseNch) ? tracks.size() : centrality, lRandom);
726669
}
727670

728671
template <typename TTrack>
729-
inline void processTrack(TTrack const& track, const float& vtxz, const int& field, const int& run)
672+
inline void processTrack(TTrack const& track, const float& vtxz, const int& run)
730673
{
731674
if constexpr (framework::has_type_v<aod::mctracklabel::McParticleId, typename TTrack::all_columns>) {
732675
if (track.mcParticleId() < 0 || !(track.has_mcParticle()))
@@ -741,9 +684,6 @@ struct FlowGenericFramework {
741684
if (mcParticle.eta() < etalow || mcParticle.eta() > etaup || mcParticle.pt() < ptlow || mcParticle.pt() > ptup || track.tpcNClsFound() < cfgNcls)
742685
return;
743686

744-
if (cfgUseAdditionalTrackCut && !trackSelected(track, field))
745-
return;
746-
747687
int pidIndex = 0;
748688
if (cfgUsePID) {
749689
if (std::abs(mcParticle.pdgCode()) == kPiPlus)
@@ -799,9 +739,6 @@ struct FlowGenericFramework {
799739
if (track.tpcNClsFound() < cfgNcls)
800740
return;
801741

802-
if (cfgUseAdditionalTrackCut && !trackSelected(track, field))
803-
return;
804-
805742
int pidIndex = 0;
806743
if (cfgUsePID) {
807744
// pid_index = getBayesPIDIndex(track);
@@ -868,11 +805,20 @@ struct FlowGenericFramework {
868805
if (withinPtNch && withinPtRef)
869806
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), waccPOI, 32);
870807
} else { // Analysing only integrated flow
808+
bool withinPtRef = (track.pt() > ptreflow && track.pt() < ptrefup);
809+
bool withinPtPOI = (track.pt() > ptpoilow && track.pt() < ptpoiup);
810+
if (!withinPtPOI && !withinPtRef)
811+
return;
871812
double weff = (dt == kGen) ? 1. : getEfficiency(track);
872813
if (weff < 0)
873814
return;
874815
double wacc = (dt == kGen) ? 1. : getAcceptance(track, vtxz, 0);
875-
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), weff * wacc, 1);
816+
if (withinPtRef)
817+
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), weff * wacc, 1);
818+
if (withinPtPOI)
819+
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), weff * wacc, 2);
820+
if (withinPtRef && withinPtPOI)
821+
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), weff * wacc, 4);
876822
}
877823
return;
878824
}
@@ -955,8 +901,7 @@ struct FlowGenericFramework {
955901
return;
956902
if (cfgFillQA)
957903
fillEventQA<kAfter>(collision, tracks);
958-
auto field = (cfgMagField == 99999) ? getMagneticField(bc.timestamp()) : cfgMagField;
959-
processCollision<kReco>(collision, tracks, centrality, field, run);
904+
processCollision<kReco>(collision, tracks, centrality, run);
960905
}
961906
PROCESS_SWITCH(FlowGenericFramework, processData, "Process analysis for non-derived data", true);
962907

@@ -981,8 +926,7 @@ struct FlowGenericFramework {
981926

982927
if (!cfgFillWeights)
983928
loadCorrections(bc);
984-
auto field = (cfgMagField == 99999) ? getMagneticField(bc.timestamp()) : cfgMagField;
985-
processCollision<kReco>(collision, tracks, centrality, field, run);
929+
processCollision<kReco>(collision, tracks, centrality, run);
986930
}
987931
PROCESS_SWITCH(FlowGenericFramework, processMCReco, "Process analysis for MC reconstructed events", false);
988932

@@ -995,7 +939,7 @@ struct FlowGenericFramework {
995939
for (const auto& collision : collisions) {
996940
centrality = collision.centFT0C();
997941
}
998-
processCollision<kGen>(mcCollision, particles, centrality, -999, 0);
942+
processCollision<kGen>(mcCollision, particles, centrality, 0);
999943
}
1000944
PROCESS_SWITCH(FlowGenericFramework, processMCGen, "Process analysis for MC generated events", false);
1001945

@@ -1013,8 +957,7 @@ struct FlowGenericFramework {
1013957
const auto centrality = collision.centRun2V0M();
1014958
if (!cfgFillWeights)
1015959
loadCorrections(bc);
1016-
auto field = (cfgMagField == 99999) ? getMagneticField(bc.timestamp()) : cfgMagField;
1017-
processCollision<kReco>(collision, tracks, centrality, field, run);
960+
processCollision<kReco>(collision, tracks, centrality, run);
1018961
}
1019962
PROCESS_SWITCH(FlowGenericFramework, processRun2, "Process analysis for Run 2 converted data", false);
1020963
};

0 commit comments

Comments
 (0)