Skip to content

Commit cc8987e

Browse files
authored
Merge branch 'AliceO2Group:master' into master
2 parents 05e0ada + e7a258c commit cc8987e

34 files changed

+2760
-365
lines changed

Common/TableProducer/qVectorsTable.cxx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@
1919
///
2020

2121
// C++/ROOT includes.
22+
#include <TComplex.h>
23+
#include <TH3F.h>
24+
2225
#include <chrono>
2326
#include <string>
27+
#include <unordered_map>
2428
#include <vector>
25-
#include <TComplex.h>
26-
#include <TH3F.h>
2729

2830
// o2Physics includes.
2931
#include "Framework/AnalysisDataModel.h"
@@ -78,6 +80,9 @@ struct qVectorsTable {
7880

7981
Configurable<float> cfgMinPtOnTPC{"cfgMinPtOnTPC", 0.15, "minimum transverse momentum selection for TPC tracks participating in Q-vector reconstruction"};
8082
Configurable<float> cfgMaxPtOnTPC{"cfgMaxPtOnTPC", 5., "maximum transverse momentum selection for TPC tracks participating in Q-vector reconstruction"};
83+
Configurable<float> cfgEtaMax{"cfgEtaMax", 0.8, "Maximum pseudorapidiy for charged track"};
84+
Configurable<float> cfgEtaMin{"cfgEtaMin", -0.8, "Minimum pseudorapidiy for charged track"};
85+
8186
Configurable<int> cfgCorrLevel{"cfgCorrLevel", 4, "calibration step: 0 = no corr, 1 = gain corr, 2 = rectr, 3 = twist, 4 = full"};
8287
Configurable<std::vector<int>> cfgnMods{"cfgnMods", {2, 3}, "Modulation of interest"};
8388
Configurable<float> cfgMaxCentrality{"cfgMaxCentrality", 100.f, "max. centrality for Q vector calibration"};
@@ -437,7 +442,10 @@ struct qVectorsTable {
437442
continue;
438443
}
439444
histosQA.fill(HIST("ChTracks"), trk.pt(), trk.eta(), trk.phi(), cent);
440-
if (std::abs(trk.eta()) > 0.8) {
445+
if (trk.eta() > cfgEtaMax) {
446+
continue;
447+
}
448+
if (trk.eta() < cfgEtaMin) {
441449
continue;
442450
}
443451
qVectTPCall[0] += trk.pt() * std::cos(trk.phi() * nmode);

DPG/Tasks/AOTEvent/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ o2physics_add_dpl_workflow(rof-occupancy-qa
4444
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::AnalysisCCDB O2::DetectorsBase
4545
COMPONENT_NAME Analysis)
4646

47+
o2physics_add_dpl_workflow(light-ions-evsel-qa
48+
SOURCES lightIonsEvSelQa.cxx
49+
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::AnalysisCCDB O2::DetectorsBase
50+
COMPONENT_NAME Analysis)
51+
4752
o2physics_add_dpl_workflow(occupancy-vs-dedx-qa
4853
SOURCES dEdxVsOccupancyWithTrackQAinfo.cxx
4954
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::AnalysisCCDB O2::DetectorsBase

DPG/Tasks/AOTEvent/eventSelectionQa.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1185,7 +1185,7 @@ struct EventSelectionQaTask {
11851185
histos.fill(HIST("occupancyQA/tpcNCrossedRows_vs_V0A_vs_occupancy"), multV0A, track.tpcNClsFindable() - tpcNClsFindableMinusCrossedRowsCorrected, occupancyByTracks);
11861186
}
11871187
} // end of hasTPC
1188-
if (track.tpcNClsFound() > 50 && track.tpcNClsCrossedRows() > 80 && track.itsChi2NCl() < 36 && track.tpcChi2NCl() < 4) {
1188+
if (col.sel8() && fabs(col.posZ()) < 10 && track.tpcNClsFound() > 50 && track.tpcNClsCrossedRows() > 80 && track.itsChi2NCl() < 36 && track.tpcChi2NCl() < 4) {
11891189
nContributorsAfterEtaTPCCuts++;
11901190
// ROF border QA
11911191
histos.fill(HIST("ITSROFborderQA/hFoundBC_kTVX_nITSlayers_for_ITSTPCtracks"), localBC, track.itsNCls());

DPG/Tasks/AOTEvent/lightIonsEvSelQa.cxx

Lines changed: 1079 additions & 0 deletions
Large diffs are not rendered by default.

PWGCF/Flow/Tasks/flowZdcTask.cxx

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ struct FlowZdcTask {
6262
Configurable<float> maxZem{"maxZem", 3099.5, "Max ZEM signal"};
6363
// for ZDC info and analysis
6464
Configurable<int> nBinsAmp{"nBinsAmp", 1025, "nbinsAmp"};
65+
Configurable<int> nBinsCent{"nBinsCent", 90, "nBinsCent"};
6566
Configurable<float> maxZn{"maxZn", 125.5, "Max ZN signal"};
6667
Configurable<float> vtxRange{"vtxRange", 10.0f, "Vertex Z range to consider"};
6768
Configurable<float> etaRange{"etaRange", 1.0f, "Eta range to consider"};
@@ -76,6 +77,7 @@ struct FlowZdcTask {
7677
Configurable<int> nBinsZP{"nBinsZP", 160, "N bins ZP"};
7778
Configurable<float> minNch{"minNch", 0, "Min Nch (|eta|<0.8)"};
7879
Configurable<float> maxNch{"maxNch", 2500, "Max Nch (|eta|<0.8)"};
80+
Configurable<float> oneNeutron{"oneNeutron", 1.0, "one neutron, energy or integer"};
7981
Configurable<int> nBinsTDC{"nBinsTDC", 150, "nbinsTDC"};
8082
Configurable<float> minTdc{"minTdc", -15.0, "minimum TDC"};
8183
Configurable<float> maxTdc{"maxTdc", 15.0, "maximum TDC"};
@@ -95,6 +97,7 @@ struct FlowZdcTask {
9597
Configurable<bool> applyEff{"applyEff", true, "Apply track-by-track efficiency correction"};
9698
Configurable<bool> applyFD{"applyFD", false, "Apply track-by-track feed down correction"};
9799
Configurable<bool> correctNch{"correctNch", true, "Correct also Nch"};
100+
Configurable<bool> isOneNeutronFound{"isOneNeutronFound", true, "Require at least 1 neutron in ZNA/ZNC to fill ZPA/ZPC"};
98101

99102
Configurable<float> nSigmaNchCut{"nSigmaNchCut", 1., "nSigma Nch selection"};
100103
Configurable<double> minNchSel{"minNchSel", 5., "min Nch Selection"};
@@ -305,6 +308,10 @@ struct FlowZdcTask {
305308
histos.add("ZNAVsNch", ";#it{N}_{ch} (|#eta|<0.8);ZNA;", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZn}}});
306309
histos.add("ZNVsNch", ";#it{N}_{ch} (|#eta|<0.8);ZNA+ZNC;", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZn}}});
307310
histos.add("ZNDifVsNch", ";#it{N}_{ch} (|#eta|<0.8);ZNA-ZNC;", kTH2F, {{{nBinsNch, minNch, maxNch}, {100, -50., 50.}}});
311+
histos.add("ZPAvsCent", ";centFT0C;ZPA", kTH2F, {{{axisCent}, {nBinsZDC, -0.5, maxZp}}});
312+
histos.add("ZPCvsCent", ";centFT0C;ZPC", kTH2F, {{{axisCent}, {nBinsZDC, -0.5, maxZp}}});
313+
histos.add("pZPAvsFT0Ccent", ";FT0C centrality;ZPA Amplitude", kTProfile, {{nBinsCent, minT0CcentCut, maxT0CcentCut}});
314+
histos.add("pZPCvsFT0Ccent", ";FT0C centrality;ZPC Amplitude", kTProfile, {{nBinsCent, minT0CcentCut, maxT0CcentCut}});
308315
}
309316

310317
ccdb->setURL("http://alice-ccdb.cern.ch");
@@ -403,6 +410,7 @@ struct FlowZdcTask {
403410
void processQA(ColEvSels::iterator const& collision, BCsRun3 const& /*bcs*/, aod::Zdcs const& /*zdcsData*/, aod::FV0As const& /*fv0as*/, aod::FT0s const& /*ft0s*/, TheFilteredTracks const& tracks)
404411
{
405412
const auto& foundBC = collision.foundBC_as<BCsRun3>();
413+
const auto cent = collision.centFT0C();
406414
if (!isEventSelected(collision)) {
407415
return;
408416
}
@@ -533,39 +541,56 @@ struct FlowZdcTask {
533541
}
534542
histos.fill(HIST("zPos"), collision.posZ());
535543
histos.fill(HIST("T0Ccent"), collision.centFT0C());
536-
537544
histos.fill(HIST("ZNCcvsZNCsum"), sumZNC / cfgCollisionEnergy, zdc.energyCommonZNC() / cfgCollisionEnergy);
538545
histos.fill(HIST("ZNAcvsZNAsum"), sumZNA / cfgCollisionEnergy, zdc.energyCommonZNA() / cfgCollisionEnergy);
539546
histos.fill(HIST("ZPCcvsZPCsum"), sumZPC / cfgCollisionEnergy, zdc.energyCommonZPC() / cfgCollisionEnergy);
540547
histos.fill(HIST("ZPAcvsZPAsum"), sumZPA / cfgCollisionEnergy, zdc.energyCommonZPA() / cfgCollisionEnergy);
541-
542548
histos.fill(HIST("GlbTracks"), glbTracks);
549+
550+
// Neutron ZDC
543551
histos.fill(HIST("ZNA"), znA);
544552
histos.fill(HIST("ZNC"), znC);
545-
histos.fill(HIST("ZPA"), zpA);
546-
histos.fill(HIST("ZPC"), zpC);
547553
histos.fill(HIST("ZNASector"), sumZNA / cfgCollisionEnergy);
548554
histos.fill(HIST("ZNCSector"), sumZNC / cfgCollisionEnergy);
549-
histos.fill(HIST("ZPASector"), sumZPA / cfgCollisionEnergy);
550-
histos.fill(HIST("ZPCSector"), sumZPC / cfgCollisionEnergy);
551555
histos.fill(HIST("ZN"), znA + znC);
552-
histos.fill(HIST("ZNAVsZNC"), znC, znA);
553-
histos.fill(HIST("ZNAVsZPA"), zpA, znA);
554-
histos.fill(HIST("ZNCVsZPC"), zpC, znC);
555-
histos.fill(HIST("ZPAVsZPC"), zpC, zpA);
556556
histos.fill(HIST("ZNVsZEM"), sumZEMs, sumZNs);
557557
histos.fill(HIST("ZNCVstdc"), tZNC, znC);
558558
histos.fill(HIST("ZNAVstdc"), tZNA, znA);
559559
histos.fill(HIST("ZPCVstdc"), tZPC, zpC);
560-
histos.fill(HIST("ZPAVstdc"), tZPA, zpA);
561-
histos.fill(HIST("ZEM1Vstdc"), tZEM1, aZEM1);
562-
histos.fill(HIST("ZEM2Vstdc"), tZEM2, aZEM2);
563-
histos.fill(HIST("debunch"), tZDCdif, tZDCsum);
564-
565560
histos.fill(HIST("ZNVsFT0A"), aT0A / 100., sumZNs);
566561
histos.fill(HIST("ZNVsFT0C"), aT0C / 100., sumZNs);
567562
histos.fill(HIST("ZNVsFT0M"), (aT0A + aT0C) / 100., sumZNs);
568563

564+
// Proton ZDC
565+
if (!isOneNeutronFound || znA >= oneNeutron) {
566+
histos.fill(HIST("ZPA"), zpA);
567+
histos.fill(HIST("ZPASector"), sumZPA / cfgCollisionEnergy);
568+
histos.fill(HIST("ZPAVstdc"), tZPA, zpA);
569+
histos.fill(HIST("ZPAvsCent"), cent, zpA);
570+
if (std::isfinite(zpA) && !std::isnan(zpA) &&
571+
cent >= minT0CcentCut && cent < maxT0CcentCut) {
572+
histos.fill(HIST("pZPAvsFT0Ccent"), cent, zpA);
573+
}
574+
}
575+
if (!isOneNeutronFound || znC >= oneNeutron) {
576+
histos.fill(HIST("ZPC"), zpC);
577+
histos.fill(HIST("ZPCSector"), sumZPC / cfgCollisionEnergy);
578+
histos.fill(HIST("ZPCvsCent"), cent, zpC);
579+
if (std::isfinite(zpC) && !std::isnan(zpC) &&
580+
cent >= minT0CcentCut && cent < maxT0CcentCut) {
581+
histos.fill(HIST("pZPCvsFT0Ccent"), cent, zpC);
582+
}
583+
}
584+
585+
// ZDC Correlations
586+
histos.fill(HIST("ZNAVsZNC"), znC, znA);
587+
histos.fill(HIST("ZNAVsZPA"), zpA, znA);
588+
histos.fill(HIST("ZNCVsZPC"), zpC, znC);
589+
histos.fill(HIST("ZPAVsZPC"), zpC, zpA);
590+
histos.fill(HIST("ZEM1Vstdc"), tZEM1, aZEM1);
591+
histos.fill(HIST("ZEM2Vstdc"), tZEM2, aZEM2);
592+
histos.fill(HIST("debunch"), tZDCdif, tZDCsum);
593+
569594
if (sumZNs > znBasedCut) {
570595
return;
571596
}

PWGEM/Dilepton/Core/DielectronCut.cxx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,13 @@ void DielectronCut::SelectPhotonConversion(bool flag)
6767
mSelectPC = flag;
6868
LOG(info) << "Dielectron Cut, select photon conversion: " << mSelectPC;
6969
}
70-
void DielectronCut::SetMindEtadPhi(bool flag, float min_deta, float min_dphi)
70+
void DielectronCut::SetMindEtadPhi(bool flag1, bool flag2, float min_deta, float min_dphi)
7171
{
72-
mApplydEtadPhi = flag;
72+
mApplydEtadPhi = flag1;
73+
mApplydEtadPhiPosition = flag2;
7374
mMinDeltaEta = min_deta;
7475
mMinDeltaPhi = min_dphi;
75-
LOG(info) << "Dielectron Cut, set apply deta-dphi cut: " << mApplydEtadPhi << " min_deta: " << mMinDeltaEta << " min_dphi: " << mMinDeltaPhi;
76+
LOG(info) << "Dielectron Cut, set apply deta-dphi cut: " << mApplydEtadPhi << " apply deta-dphi* cut: " << mApplydEtadPhiPosition << " min_deta: " << mMinDeltaEta << " min_dphi: " << mMinDeltaPhi;
7677
}
7778
void DielectronCut::SetRequireDifferentSides(bool flag)
7879
{

PWGEM/Dilepton/Core/DielectronCut.h

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class DielectronCut : public TNamed
101101
}
102102

103103
template <bool dont_require_rapidity = false, typename TTrack1, typename TTrack2>
104-
bool IsSelectedPair(TTrack1 const& t1, TTrack2 const& t2, const float bz) const
104+
bool IsSelectedPair(TTrack1 const& t1, TTrack2 const& t2, const float bz, const float refR) const
105105
{
106106
ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassElectron);
107107
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassElectron);
@@ -137,13 +137,28 @@ class DielectronCut : public TNamed
137137
return false;
138138
}
139139

140+
if (mApplydEtadPhi && mApplydEtadPhiPosition) { // applying both cuts is not allowed.
141+
return false;
142+
}
143+
140144
float deta = v1.Eta() - v2.Eta();
141145
float dphi = v1.Phi() - v2.Phi();
142146
o2::math_utils::bringToPMPi(dphi);
143147
if (mApplydEtadPhi && std::pow(deta / mMinDeltaEta, 2) + std::pow(dphi / mMinDeltaPhi, 2) < 1.f) {
144148
return false;
145149
}
146150

151+
float phiPosition1 = t1.phi() + std::asin(t1.sign() * 0.30282 * (bz * 0.1) * refR / (2.f * t1.pt()));
152+
float phiPosition2 = t2.phi() + std::asin(t2.sign() * 0.30282 * (bz * 0.1) * refR / (2.f * t2.pt()));
153+
154+
phiPosition1 = RecoDecay::constrainAngle(phiPosition1, 0, 1); // 0-2pi
155+
phiPosition2 = RecoDecay::constrainAngle(phiPosition2, 0, 1); // 0-2pi
156+
float dphiPosition = phiPosition1 - phiPosition2;
157+
o2::math_utils::bringToPMPi(dphiPosition);
158+
if (mApplydEtadPhiPosition && std::pow(deta / mMinDeltaEta, 2) + std::pow(dphiPosition / mMinDeltaPhi, 2) < 1.f) {
159+
return false;
160+
}
161+
147162
return true;
148163
}
149164

@@ -444,7 +459,7 @@ class DielectronCut : public TNamed
444459
void SetPairOpAng(float minOpAng = 0.f, float maxOpAng = 1e10f);
445460
void SetMaxMeePhiVDep(std::function<float(float)> phivDepCut, float min_phiv, float max_phiv);
446461
void SelectPhotonConversion(bool flag);
447-
void SetMindEtadPhi(bool flag, float min_deta, float min_dphi);
462+
void SetMindEtadPhi(bool applydEtadPhi, bool applydEtadPhiPosition, float min_deta, float min_dphi);
448463
void SetRequireDifferentSides(bool flag);
449464

450465
void SetTrackPtRange(float minPt = 0.f, float maxPt = 1e10f);
@@ -517,6 +532,7 @@ class DielectronCut : public TNamed
517532
std::function<float(float)> mMaxMeePhiVDep{}; // max mee as a function of phiv
518533
bool mSelectPC{false}; // flag to select photon conversion used in mMaxPhivPairMeeDep
519534
bool mApplydEtadPhi{false}; // flag to apply deta, dphi cut between 2 tracks
535+
bool mApplydEtadPhiPosition{false}; // flag to apply deta, dphi cut between 2 tracks
520536
float mMinDeltaEta{0.f};
521537
float mMinDeltaPhi{0.f};
522538
float mMinOpAng{0.f}, mMaxOpAng{1e10f};

PWGEM/Dilepton/Core/Dilepton.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,8 @@ struct Dilepton {
178178
Configurable<float> cfg_phiv_intercept{"cfg_phiv_intercept", -0.0280, "intercept for m vs. phiv"};
179179
Configurable<float> cfg_min_phiv{"cfg_min_phiv", 0.0, "min phiv (constant)"};
180180
Configurable<float> cfg_max_phiv{"cfg_max_phiv", 3.2, "max phiv (constant)"};
181-
Configurable<bool> cfg_apply_detadphi{"cfg_apply_detadphi", false, "flag to apply deta-dphi elliptic cut"};
181+
Configurable<bool> cfg_apply_detadphi{"cfg_apply_detadphi", false, "flag to apply deta-dphi elliptic cut at PV"};
182+
Configurable<bool> cfg_apply_detadphiposition{"cfg_apply_detadphiposition", false, "flag to apply deta-dphi elliptic cut at certain radius"};
182183
Configurable<float> cfg_min_deta{"cfg_min_deta", 0.02, "min deta between 2 electrons (elliptic cut)"};
183184
Configurable<float> cfg_min_dphi{"cfg_min_dphi", 0.2, "min dphi between 2 electrons (elliptic cut)"};
184185
Configurable<float> cfg_min_opang{"cfg_min_opang", 0.0, "min opening angle"};
@@ -673,7 +674,7 @@ struct Dilepton {
673674
fDielectronCut.SetPairDCARange(dielectroncuts.cfg_min_pair_dca3d, dielectroncuts.cfg_max_pair_dca3d); // in sigma
674675
fDielectronCut.SetMaxMeePhiVDep([&](float phiv) { return dielectroncuts.cfg_phiv_intercept + phiv * dielectroncuts.cfg_phiv_slope; }, dielectroncuts.cfg_min_phiv, dielectroncuts.cfg_max_phiv);
675676
fDielectronCut.ApplyPhiV(dielectroncuts.cfg_apply_phiv);
676-
fDielectronCut.SetMindEtadPhi(dielectroncuts.cfg_apply_detadphi, dielectroncuts.cfg_min_deta, dielectroncuts.cfg_min_dphi);
677+
fDielectronCut.SetMindEtadPhi(dielectroncuts.cfg_apply_detadphi, dielectroncuts.cfg_apply_detadphiposition, dielectroncuts.cfg_min_deta, dielectroncuts.cfg_min_dphi);
677678
fDielectronCut.SetPairOpAng(dielectroncuts.cfg_min_opang, dielectroncuts.cfg_max_opang);
678679
fDielectronCut.SetRequireDifferentSides(dielectroncuts.cfg_require_diff_sides);
679680

@@ -858,7 +859,7 @@ struct Dilepton {
858859
}
859860

860861
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
861-
if (!cut.IsSelectedPair(t1, t2, d_bz)) {
862+
if (!cut.IsSelectedPair(t1, t2, d_bz, dielectroncuts.cfgRefR)) {
862863
return false;
863864
}
864865
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {
@@ -1403,7 +1404,7 @@ struct Dilepton {
14031404
}
14041405

14051406
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
1406-
if (!cut.IsSelectedPair(t1, t2, d_bz)) {
1407+
if (!cut.IsSelectedPair(t1, t2, d_bz, dielectroncuts.cfgRefR)) {
14071408
return false;
14081409
}
14091410
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {

PWGEM/Dilepton/Core/DileptonHadronMPC.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,8 @@ struct DileptonHadronMPC {
183183
Configurable<float> cfg_phiv_intercept{"cfg_phiv_intercept", -0.0280, "intercept for m vs. phiv"};
184184
Configurable<float> cfg_min_phiv{"cfg_min_phiv", 0.0, "min phiv (constant)"};
185185
Configurable<float> cfg_max_phiv{"cfg_max_phiv", 3.2, "max phiv (constant)"};
186-
Configurable<bool> cfg_apply_detadphi{"cfg_apply_detadphi", false, "flag to apply deta-dphi elliptic cut"};
186+
Configurable<bool> cfg_apply_detadphi{"cfg_apply_detadphi", false, "flag to apply deta-dphi elliptic cut at PV"};
187+
Configurable<bool> cfg_apply_detadphiposition{"cfg_apply_detadphiposition", false, "flag to apply deta-dphi elliptic cut at certain radius"};
187188
Configurable<float> cfg_min_deta{"cfg_min_deta", 0.02, "min deta between 2 electrons (elliptic cut)"};
188189
Configurable<float> cfg_min_dphi{"cfg_min_dphi", 0.2, "min dphi between 2 electrons (elliptic cut)"};
189190

@@ -210,6 +211,7 @@ struct DileptonHadronMPC {
210211
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 1.0, "max dca Z for single track in cm"};
211212
Configurable<bool> cfg_require_itsib_any{"cfg_require_itsib_any", false, "flag to require ITS ib any hits"};
212213
Configurable<bool> cfg_require_itsib_1st{"cfg_require_itsib_1st", true, "flag to require ITS ib 1st hit"};
214+
Configurable<float> cfgRefR{"cfgRefR", 1.2, "reference R (in m) for extrapolation"}; // https://cds.cern.ch/record/1419204
213215

214216
Configurable<int> cfg_pid_scheme{"cfg_pid_scheme", static_cast<int>(DielectronCut::PIDSchemes::kTPChadrejORTOFreq), "pid scheme [kTOFreq : 0, kTPChadrej : 1, kTPChadrejORTOFreq : 2, kTPConly : 3, kTOFif : 4, kPIDML : 5, kTPChadrejORTOFreq_woTOFif : 6]"};
215217
Configurable<float> cfg_min_TPCNsigmaEl{"cfg_min_TPCNsigmaEl", -2.0, "min. TPC n sigma for electron inclusion"};
@@ -588,7 +590,7 @@ struct DileptonHadronMPC {
588590
fDielectronCut.SetPairDCARange(dielectroncuts.cfg_min_pair_dca3d, dielectroncuts.cfg_max_pair_dca3d); // in sigma
589591
fDielectronCut.SetMaxMeePhiVDep([&](float phiv) { return dielectroncuts.cfg_phiv_intercept + phiv * dielectroncuts.cfg_phiv_slope; }, dielectroncuts.cfg_min_phiv, dielectroncuts.cfg_max_phiv);
590592
fDielectronCut.ApplyPhiV(dielectroncuts.cfg_apply_phiv);
591-
fDielectronCut.SetMindEtadPhi(dielectroncuts.cfg_apply_detadphi, dielectroncuts.cfg_min_deta, dielectroncuts.cfg_min_dphi);
593+
fDielectronCut.SetMindEtadPhi(dielectroncuts.cfg_apply_detadphi, dielectroncuts.cfg_apply_detadphiposition, dielectroncuts.cfg_min_deta, dielectroncuts.cfg_min_dphi);
592594
fDielectronCut.SetPairOpAng(0.f, 6.3);
593595
fDielectronCut.SetRequireDifferentSides(false);
594596

@@ -744,7 +746,7 @@ struct DileptonHadronMPC {
744746
}
745747

746748
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
747-
if (!cut.IsSelectedPair(t1, t2, d_bz)) {
749+
if (!cut.IsSelectedPair(t1, t2, d_bz, dielectroncuts.cfgRefR)) {
748750
return false;
749751
}
750752
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {
@@ -915,7 +917,7 @@ struct DileptonHadronMPC {
915917
}
916918

917919
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
918-
if (!cut.IsSelectedPair(t1, t2, d_bz)) {
920+
if (!cut.IsSelectedPair(t1, t2, d_bz, dielectroncuts.cfgRefR)) {
919921
return false;
920922
}
921923
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {
@@ -1312,7 +1314,7 @@ struct DileptonHadronMPC {
13121314
}
13131315

13141316
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
1315-
if (!cut.IsSelectedPair(t1, t2, d_bz)) {
1317+
if (!cut.IsSelectedPair(t1, t2, d_bz, dielectroncuts.cfgRefR)) {
13161318
return false;
13171319
}
13181320
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {

0 commit comments

Comments
 (0)