Skip to content
Merged
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
2e43b1c
Phi parametrizations were updated
PaolaVT Jul 29, 2025
2c6e7c6
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 1, 2025
ea986ae
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 1, 2025
49fe700
The analysis task dedxPidAnalysis.cxx was added
PaolaVT Aug 1, 2025
0648cf8
Merge branch 'AliceO2Group:master' into master
PaolaVT Aug 22, 2025
a5bcb83
Event selection was modified
PaolaVT Aug 22, 2025
3ca59ec
Event selection was modified
PaolaVT Aug 22, 2025
02a6722
Merge branch 'AliceO2Group:master' into master
PaolaVT Sep 4, 2025
55663dd
New cuts and some modifications on their names were implemented
PaolaVT Sep 4, 2025
3135ed6
Merge branch 'AliceO2Group:master' into master
PaolaVT Sep 11, 2025
d97f118
New histograms, event and track seleccions were implemented
Sep 11, 2025
1e19413
New histograms, event and track seleccions were implemented
Sep 11, 2025
3306434
Merge branch 'AliceO2Group:master' into master
PaolaVT Sep 14, 2025
bff8740
The issue with the macOS-arm checks has been resolved
Sep 14, 2025
637b03a
The issue with the macOS-arm checks has been resolved
Sep 14, 2025
b0aa343
Merge branch 'AliceO2Group:master' into master
PaolaVT Sep 15, 2025
b6ee179
Update code following review feedback
Sep 15, 2025
406d558
Update code following review feedback
Sep 15, 2025
bfbc003
Merge branch 'AliceO2Group:master' into master
PaolaVT Oct 4, 2025
17cb397
Add centrality classes and update V0 selection cuts
Oct 4, 2025
e33838a
Merge branch 'AliceO2Group:master' into master
PaolaVT Feb 4, 2026
e8e39e7
A problem in the track counter was fixed
Feb 4, 2026
5a42559
Merge branch 'AliceO2Group:master' into master
PaolaVT Feb 6, 2026
803e834
INEL cut was added
Feb 6, 2026
78fce6e
Merge branch 'AliceO2Group:master' into master
PaolaVT Feb 8, 2026
44785ac
Merge branch 'AliceO2Group:master' into master
PaolaVT Feb 13, 2026
44c0cae
Add ten different multiplicity selections
Feb 13, 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
119 changes: 112 additions & 7 deletions PWGLF/Tasks/Nuspex/dedxPidAnalysis.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ using PIDTracks = soa::Join<
aod::Tracks, aod::TracksExtra, aod::TrackSelectionExtension, aod::TracksDCA, aod::TrackSelection,
aod::pidTOFFullPi, aod::pidTOFFullPr, aod::pidTOFFullEl, aod::pidTOFbeta, aod::pidTPCPi, aod::pidTPCPr, aod::pidTPCEl>;

using SelectedCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, o2::aod::BarrelMults>;
using SelectedCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::TPCMults, aod::PVMults, aod::MultZeqs,
aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, o2::aod::BarrelMults>;
using BCsRun3 = soa::Join<aod::BCsWithTimestamps, aod::BcSels, aod::Run3MatchedToBCSparse>;

static constexpr int NCentHists{10};
Expand Down Expand Up @@ -78,21 +79,35 @@ struct DedxPidAnalysis {

bool fillHist = false;

enum V0SelectionMode {
enum MultSelectionMode : int {
NoMultiplicity = 0,
MultFV0A = 1,
MultFT0M = 2,
MultFDDM = 3,
MultTracklets = 4,
MultTPC = 5,
MultNTracksPV = 6,
MultNTracksPVeta1 = 7,
CentralityFT0C = 8,
CentralityFT0M = 9,
CentralityFV0A = 10
};

enum V0SelectionMode : int {
V0TPC = 1,
V0TOF = 2,
V0TPCTOF = 3

};

enum NINELSelectionMode {
enum NINELSelectionMode : int {
NoSelINEL = 1,
SelINELgt0 = 2,
SelINELgt1 = 3

};

enum MomentumMode {
enum MomentumMode : int {
TpcInnerParam = 1,
TotalMomentum = 2
};
Expand Down Expand Up @@ -185,6 +200,7 @@ struct DedxPidAnalysis {
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)"};
Configurable<int> multiplicityEstimator{"multiplicityEstimator", 9, "Flag to use a multiplicity estimator; No multiplicity: 0, MultFV0A: 1, MultFT0M: 2, MultFDDM: 3 ,MultTracklets: 4,MultTPC: 5,MultNTracksPV: 6 ,MultNTracksPVeta1: 7,CentralityFT0C: 8 ,CentralityFT0M: 9, CentralityFV0A: 10"};
Configurable<double> lowParam1{"lowParam1", 0.119297, "First parameter for low phi cut"};
Configurable<double> lowParam2{"lowParam2", 0.000379693, "Second parameter for low phi cut"};
Configurable<double> highParam1{"highParam1", 0.16685, "First parameter for high phi cut"};
Expand All @@ -209,6 +225,7 @@ struct DedxPidAnalysis {
Configurable<std::vector<float>> calibrationFactorNeg{"calibrationFactorNeg", {50.4011, 50.4764, 50.186, 49.2955, 48.8222, 49.4273, 49.9292, 50.0556}, "negative calibration factors"};
Configurable<std::vector<float>> calibrationFactorPos{"calibrationFactorPos", {50.5157, 50.6359, 50.3198, 49.3345, 48.9197, 49.4931, 50.0188, 50.1406}, "positive calibration factors"};
ConfigurableAxis binP{"binP", {VARIABLE_WIDTH, 0.1, 0.12, 0.14, 0.16, 0.18, 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.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 18.0, 20.0}, ""};
ConfigurableAxis centBins{"centBins", {100, 0, 100}, "Binning for centralidad"};

// phi cut fits
TF1* fphiCutHigh = nullptr;
Expand Down Expand Up @@ -300,6 +317,55 @@ struct DedxPidAnalysis {
AxisSpec etaAxis{8, -0.8, 0.8, "#eta"};
AxisSpec pAxis = {binP, "#it{p}/Z (GeV/c)"};
AxisSpec pAxisTrack = {binP, "#it{p} (GeV/c)"};
AxisSpec centAxis{centBins, "Undefined multiplicity estimator"};
switch (multiplicityEstimator) {
case MultSelectionMode::NoMultiplicity: // No multiplicity
LOGF(info, "No multiplicity estimator applied");
break;
case MultSelectionMode::MultFV0A: // MultFV0A
centAxis.title = "MultFV0A";
LOGF(info, "MultFV0A estimator applied");
break;
case MultSelectionMode::MultFT0M: // MultFT0M
centAxis.title = "MultFT0M";
LOGF(info, "MultFT0M estimator applied");
break;
case MultSelectionMode::MultFDDM: // MultFDDM
centAxis.title = "MultFDDM";
LOGF(info, " MultFDDM estimator applied");
break;
case MultSelectionMode::MultTracklets: // MultTracklets
centAxis.title = "MultTracklets";
LOGF(info, "MultTracklets estimator applied");
break;
case MultSelectionMode::MultTPC: // MultTPC
centAxis.title = "MultTPC";
LOGF(info, "MultTPC estimator applied");
break;
case MultSelectionMode::MultNTracksPV: // MultNTracksPV
centAxis.title = "MultNTracksPV";
LOGF(info, "MultNTracksPV estimator applied");
break;
case MultSelectionMode::MultNTracksPVeta1: // MultNTracksPVeta1
centAxis.title = "MultNTracksPVeta1";
LOGF(info, "MultNTracksPVeta1 estimator applied");
break;
case MultSelectionMode::CentralityFT0C: // Centrality FT0C
centAxis.title = "Centrality FT0C";
LOGF(info, "Centrality FT0C estimator applied");
break;
case MultSelectionMode::CentralityFT0M: // Centrality FT0M
centAxis.title = "Centrality FT0M";
LOGF(info, "Centrality FT0M estimator applied");
break;
case MultSelectionMode::CentralityFV0A: // Centrality FV0A
centAxis.title = "Centrality FV0A";
LOGF(info, "Centrality FV0A estimator applied");
break;
default:
LOG(fatal) << "Unrecognized option for multiplicity " << multiplicityEstimator;
}

fphiCutLow = new TF1("StandardPhiCutLow",
Form("%f/x/x+pi/18.0-%f", lowParam1.value, lowParam2.value),
0, 50);
Expand Down Expand Up @@ -555,7 +621,7 @@ struct DedxPidAnalysis {
registryDeDx.add("histRecVtxZData", "collision z position", HistType::kTH1F, {{100, -20.0, +20.0, "z_{vtx} (cm)"}});

// Event Counter by centrality
registryDeDx.add("histCentrality", "collision centrality", HistType::kTH1F, {{100, 0.0, 100, "cent"}});
registryDeDx.add("histCentrality", "Centrality", HistType::kTH1F, {centAxis});

// Event Counter
registryDeDx.add("evsel", "events selected", HistType::kTH1F, {{6, 0.5, 6.5, ""}});
Expand Down Expand Up @@ -1229,7 +1295,46 @@ struct DedxPidAnalysis {

return true;
}

// Get Multiplicity
template <typename T>
float getMultiplicity(const T& collision)
{
switch (multiplicityEstimator) {
case MultSelectionMode::NoMultiplicity: // No multiplicity
return 50.f; // to check if its filled
break;
case MultSelectionMode::MultFV0A: // MultFV0M
return collision.multZeqFV0A();
break;
case MultSelectionMode::MultFT0M:
return collision.multZeqFT0A() + collision.multZeqFT0C();
break;
case MultSelectionMode::MultFDDM: // MultFDDM
return collision.multZeqFDDA() + collision.multZeqFDDC();
break;
case MultSelectionMode::MultTracklets: // MultTracklets
return 0.f; // Undefined in Run3
break;
case MultSelectionMode::MultTPC: // MultTPC
return collision.multTPC();
break;
case MultSelectionMode::MultNTracksPV: // MultNTracksPV
return collision.multZeqNTracksPV();
break;
case MultSelectionMode::MultNTracksPVeta1: // MultNTracksPVeta1
return collision.multNTracksPVeta1();
break;
case MultSelectionMode::CentralityFT0C: // Centrality FT0C
return collision.centFT0C();
break;
case MultSelectionMode::CentralityFT0M: // Centrality FT0M
return collision.centFT0M();
break;
default:
LOG(fatal) << "Unknown multiplicity estimator: " << multiplicityEstimator;
return 0.f;
}
}
// Process Data
void process(SelectedCollisions::iterator const& collision, BCsRun3 const& /**/,
aod::V0Datas const& fullV0s, PIDTracks const& tracks)
Expand Down Expand Up @@ -1277,7 +1382,7 @@ struct DedxPidAnalysis {
const uint64_t timeStamp{foundBC.timestamp()};
const int magField{getMagneticField(timeStamp)};

float centrality = collision.centFT0C();
float centrality = getMultiplicity(collision);
if (centrality < CentClasses[0] || centrality > CentClasses[10])
return;

Expand Down
Loading