Skip to content
Merged
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
da7c51b
replace Framework/Constants.h with CommonConstants/MathConstants.h fo…
Aug 6, 2026
2216d5e
Add flattenicityTask task to CMakeLists
Aug 6, 2026
06935f6
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 6, 2026
c38b9cb
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 6, 2026
e193c75
Fix some errors for flattenicityTask
PaolaVT Aug 7, 2026
33bec9e
Fix copyright for flattenicityTask
PaolaVT Aug 7, 2026
73368bf
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 7, 2026
cd97f05
Fix errors for flattenicityTask
PaolaVT Aug 7, 2026
be418d2
Fix linker errors for flattenicityTask
PaolaVT Aug 7, 2026
cc48bf1
Fix Megalinker errors for flattenicityTask
PaolaVT Aug 7, 2026
6dd2cee
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 8, 2026
da883cd
Fix code-check errors for flattenicityTask
PaolaVT Aug 8, 2026
fb1402e
Fix code-check errors for flattenicityTask
PaolaVT Aug 8, 2026
56e5613
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 13, 2026
811df3b
Add single flattenicity (FT0-only) definition and update percentiles
PaolaVT Aug 13, 2026
fc5a341
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 15, 2026
4475df5
Fix INEl calculation in multiplicityPt task
PaolaVT Aug 15, 2026
8b7ec53
Fix clang format issue
PaolaVT Aug 15, 2026
9e2016d
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 16, 2026
258525d
fix flattenicity: FT0 amplitude bug, multiplicity classes, code cleanup
PaolaVT Aug 16, 2026
9a5a550
fix flattenicity: clang error
PaolaVT Aug 16, 2026
0545234
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 18, 2026
78a7d6e
fix flattenicity: code-check error
PaolaVT Aug 18, 2026
fdecd4a
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 22, 2026
3e10c2d
fix flattenicity: filling histograms error
PaolaVT Aug 22, 2026
55eea0e
fix flattenicity: clang error
PaolaVT Aug 22, 2026
e7a3043
fix flattenicity: clang error
PaolaVT Aug 22, 2026
b5d541f
fix flattenicity: linker error
PaolaVT Aug 22, 2026
36ed6f2
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 22, 2026
c912106
fix flattenicity: code-check error
PaolaVT Aug 22, 2026
19b2c1e
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 24, 2026
a73d3b4
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 25, 2026
89d5096
fix flattenicity definition
PaolaVT Aug 25, 2026
86df0ba
fix flattenicity: clang format error
PaolaVT Aug 25, 2026
0abf95e
Merge branch 'AliceO2Group:master' into master
PaolaVT Sep 9, 2026
03581d0
Run-1 calibration task for FT0 flattenicity
PaolaVT Sep 9, 2026
0b91d75
Run-1 calibration task for FT0 flattenicity
PaolaVT Sep 9, 2026
400f834
Merge branch 'AliceO2Group:master' into master
PaolaVT Sep 9, 2026
2b7fd0a
Fix code-check errors
PaolaVT Sep 9, 2026
00096e3
Merge branch 'AliceO2Group:master' into master
PaolaVT Sep 23, 2026
d4c0760
Add configurable flags for optional track cuts
PaolaVT Sep 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 50 additions & 7 deletions PWGLF/Tasks/Nuspex/dedxPidAnalysis.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,11 @@ struct DedxPidAnalysis {

};

enum NDCAzSelectionMode : int {
DCAz1 = 1,
DCAzpT = 2,
};

enum MomentumMode : int {
TpcInnerParam = 1,
TotalMomentum = 2
Expand Down Expand Up @@ -205,7 +210,11 @@ struct DedxPidAnalysis {
"max z distance to IP"};
Configurable<float> etaMin{"etaMin", -0.8f, "etaMin"};
Configurable<float> etaMax{"etaMax", +0.8f, "etaMax"};
// Configurable<float> minNCrossedRowsOverFindableClustersTPC{"minNCrossedRowsOverFindableClustersTPC", 0.8f, "Additional cut on the minimum value of the ratio between crossed rows and findable clusters in the TPC"};
// Configurables para activar/desactivar cortes
Configurable<bool> requireITSRefit{"requireITSRefit", true, "Require ITS refit"};
Configurable<bool> requireTPCRefit{"requireTPCRefit", true, "Require TPC refit"};
Configurable<bool> requireMinNCrossedRowsOverFindableClustersTPC{"requireMinNCrossedRowsOverFindableClustersTPC", true, "Require min N crossed rows / findable clusters TPC"};
Configurable<float> minNCrossedRowsOverFindableClustersTPC{"minNCrossedRowsOverFindableClustersTPC", 0.8f, "Additional cut on the minimum value of the ratio between crossed rows and findable clusters in the TPC"};
Configurable<float> nSigmaDCAxy{"nSigmaDCAxy", 3.0, "nSigma DCAxy selection"};
Configurable<float> dcaXYp0{"dcaXYp0", 0.0105f, "DCAxy formula: p0 + p1/pt^p2"};
Configurable<float> dcaXYp1{"dcaXYp1", 0.0350f, "DCAxy p1 parameter"};
Expand All @@ -214,7 +223,7 @@ struct DedxPidAnalysis {
Configurable<float> dcaZp1{"dcaZp1", 0.0350f, "DCAz p1 parameter"};
Configurable<float> dcaZp2{"dcaZp2", 1.1f, "DCAz p2 parameter"};
Configurable<float> nSigmaDCAz{"nSigmaDCAz", 3.0, "nSigma DCAz selection"};
// Configurable<float> maxDCAz{"maxDCAz", 0.1f, "maxDCAz"};
Configurable<float> maxDCAz{"maxDCAz", 0.1f, "maxDCAz"};
Configurable<float> pionMin{"pionMin", 0.35f, "pionMin"};
Configurable<float> pionMax{"pionMax", 0.45f, "pionMax"};
Configurable<float> elTofCut{"elTofCut", 0.1f, "elTofCut"};
Expand Down Expand Up @@ -252,6 +261,7 @@ struct DedxPidAnalysis {
Configurable<bool> nPileUp{"nPileUp", true, "Rejects events with pileup in the same bunch crossing"};
Configurable<int> nINELSelectionMode{"nINELSelectionMode", 2, "INEL event selection: 1 no sel, 2 INEL>0, 3 INEL>1"};
Configurable<bool> nGoodITS{"nGoodITS", true, "Numbers of inactive chips on all ITS layers are below maximum allowed values"};
Configurable<int> nDCAzOption{"nDCAzOption", 1, "DCA selection: 1: from -0.1 to 0.1, 2: pT dependent cut"};
Configurable<int> v0SelectionMode{"v0SelectionMode", 3, "V0 Selection base on TPC: 1, TOF:2 ,Both:3"};
Configurable<int> momentumMode{"momentumMode", 2, "1: TPC inner param, 2: Total momentum p"};
Configurable<uint8_t> v0TypeSelection{"v0TypeSelection", 1, "select on a certain V0 type (leave negative if no selection desired)"};
Expand Down Expand Up @@ -283,10 +293,16 @@ struct DedxPidAnalysis {
TrackSelection selectedTracks;
selectedTracks.SetPtRange(0.1f, 1e10f);
selectedTracks.SetEtaRange(etaMin, etaMax);
// selectedTracks.SetRequireITSRefit(true);
// selectedTracks.SetRequireTPCRefit(true);
if (requireITSRefit.value) {
selectedTracks.SetRequireITSRefit(true);
}
if (requireTPCRefit.value) {
selectedTracks.SetRequireTPCRefit(true);
}
selectedTracks.SetMinNCrossedRowsTPC(static_cast<int>(minNCrossedRowsTPC.value));
// selectedTracks.SetMinNCrossedRowsOverFindableClustersTPC(minNCrossedRowsOverFindableClustersTPC);
if (requireMinNCrossedRowsOverFindableClustersTPC.value) {
selectedTracks.SetMinNCrossedRowsOverFindableClustersTPC(minNCrossedRowsOverFindableClustersTPC.value);
}
selectedTracks.SetMaxChi2PerClusterTPC(maxChi2TPC);
selectedTracks.SetRequireHitsInITSLayers(1, {0, 1, 2});
selectedTracks.SetMaxChi2PerClusterITS(maxChi2ITS);
Expand All @@ -312,11 +328,33 @@ struct DedxPidAnalysis {
} else {
LOGF(info, "GoodZvtxFT0vsPV cut disabled");
}
if (requireITSRefit) {
LOGF(info, "Applying ITSRefit cut");
} else {
LOGF(info, "ITSRefit cut disabled");
}

if (requireTPCRefit) {
LOGF(info, "Applying TPCRefit cut");
} else {
LOGF(info, "TPCRefit cut disabled");
}
if (requireMinNCrossedRowsOverFindableClustersTPC) {
LOGF(info, "Applying MinNCrossedRowsOverFindableClustersTPC cut");
} else {
LOGF(info, "MinNCrossedRowsOverFindableClustersTPC cut disabled");
}

if (nGoodITS) {
LOGF(info, "Applying GoodITSLayersAll cut");
} else {
LOGF(info, "GoodITSLayersAll cut disabled");
}
if (nDCAzOption == DCAz1) {
LOGF(info, "Applying -0.1 to 0.1 cut");
} else if (nDCAzOption == DCAzpT) {
LOGF(info, "Applying pT-dependet cut");
}
if (nINELSelectionMode == NoSelINEL) {
LOGF(info, "Applying just INEL");
label = "INEL";
Expand Down Expand Up @@ -856,8 +894,13 @@ struct DedxPidAnalysis {
template <typename T1>
bool passesDCAzCut(const T1& track) const
{
const float maxiDcaZ = nSigmaDCAz.value * (dcaZp0.value + dcaZp1.value / std::pow(track.pt(), dcaZp2.value)) / 3.0;
return std::abs(track.dcaZ()) < maxiDcaZ;
if (nDCAzOption.value == DCAz1) {
return std::abs(track.dcaZ()) < maxDCAz.value;
} else if (nDCAzOption.value == DCAzpT) {
const float maxiDcaZ = nSigmaDCAz.value * (dcaZp0.value + dcaZp1.value / std::pow(track.pt(), dcaZp2.value)) / 3.0;
return std::abs(track.dcaZ()) < maxiDcaZ;
}
return true;
}
// Momentum
template <typename T1>
Expand Down
Loading