Skip to content

Commit 44c0cae

Browse files
Paola Vargas TorresPaola Vargas Torres
authored andcommitted
Add ten different multiplicity selections
1 parent 44785ac commit 44c0cae

File tree

1 file changed

+112
-7
lines changed

1 file changed

+112
-7
lines changed

PWGLF/Tasks/Nuspex/dedxPidAnalysis.cxx

Lines changed: 112 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ using PIDTracks = soa::Join<
4949
aod::Tracks, aod::TracksExtra, aod::TrackSelectionExtension, aod::TracksDCA, aod::TrackSelection,
5050
aod::pidTOFFullPi, aod::pidTOFFullPr, aod::pidTOFFullEl, aod::pidTOFbeta, aod::pidTPCPi, aod::pidTPCPr, aod::pidTPCEl>;
5151

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

5556
static constexpr int NCentHists{10};
@@ -78,21 +79,35 @@ struct DedxPidAnalysis {
7879

7980
bool fillHist = false;
8081

81-
enum V0SelectionMode {
82+
enum MultSelectionMode : int {
83+
NoMultiplicity = 0,
84+
MultFV0A = 1,
85+
MultFT0M = 2,
86+
MultFDDM = 3,
87+
MultTracklets = 4,
88+
MultTPC = 5,
89+
MultNTracksPV = 6,
90+
MultNTracksPVeta1 = 7,
91+
CentralityFT0C = 8,
92+
CentralityFT0M = 9,
93+
CentralityFV0A = 10
94+
};
95+
96+
enum V0SelectionMode : int {
8297
V0TPC = 1,
8398
V0TOF = 2,
8499
V0TPCTOF = 3
85100

86101
};
87102

88-
enum NINELSelectionMode {
103+
enum NINELSelectionMode : int {
89104
NoSelINEL = 1,
90105
SelINELgt0 = 2,
91106
SelINELgt1 = 3
92107

93108
};
94109

95-
enum MomentumMode {
110+
enum MomentumMode : int {
96111
TpcInnerParam = 1,
97112
TotalMomentum = 2
98113
};
@@ -185,6 +200,7 @@ struct DedxPidAnalysis {
185200
Configurable<int> v0SelectionMode{"v0SelectionMode", 3, "V0 Selection base on TPC: 1, TOF:2 ,Both:3"};
186201
Configurable<int> momentumMode{"momentumMode", 2, "1: TPC inner param, 2: Total momentum p"};
187202
Configurable<uint8_t> v0TypeSelection{"v0TypeSelection", 1, "select on a certain V0 type (leave negative if no selection desired)"};
203+
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"};
188204
Configurable<double> lowParam1{"lowParam1", 0.119297, "First parameter for low phi cut"};
189205
Configurable<double> lowParam2{"lowParam2", 0.000379693, "Second parameter for low phi cut"};
190206
Configurable<double> highParam1{"highParam1", 0.16685, "First parameter for high phi cut"};
@@ -209,6 +225,7 @@ struct DedxPidAnalysis {
209225
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"};
210226
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"};
211227
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}, ""};
228+
ConfigurableAxis centBins{"centBins", {100, 0, 100}, "Binning for centralidad"};
212229

213230
// phi cut fits
214231
TF1* fphiCutHigh = nullptr;
@@ -300,6 +317,55 @@ struct DedxPidAnalysis {
300317
AxisSpec etaAxis{8, -0.8, 0.8, "#eta"};
301318
AxisSpec pAxis = {binP, "#it{p}/Z (GeV/c)"};
302319
AxisSpec pAxisTrack = {binP, "#it{p} (GeV/c)"};
320+
AxisSpec centAxis{centBins, "Undefined multiplicity estimator"};
321+
switch (multiplicityEstimator) {
322+
case MultSelectionMode::NoMultiplicity: // No multiplicity
323+
LOGF(info, "No multiplicity estimator applied");
324+
break;
325+
case MultSelectionMode::MultFV0A: // MultFV0A
326+
centAxis.title = "MultFV0A";
327+
LOGF(info, "MultFV0A estimator applied");
328+
break;
329+
case MultSelectionMode::MultFT0M: // MultFT0M
330+
centAxis.title = "MultFT0M";
331+
LOGF(info, "MultFT0M estimator applied");
332+
break;
333+
case MultSelectionMode::MultFDDM: // MultFDDM
334+
centAxis.title = "MultFDDM";
335+
LOGF(info, " MultFDDM estimator applied");
336+
break;
337+
case MultSelectionMode::MultTracklets: // MultTracklets
338+
centAxis.title = "MultTracklets";
339+
LOGF(info, "MultTracklets estimator applied");
340+
break;
341+
case MultSelectionMode::MultTPC: // MultTPC
342+
centAxis.title = "MultTPC";
343+
LOGF(info, "MultTPC estimator applied");
344+
break;
345+
case MultSelectionMode::MultNTracksPV: // MultNTracksPV
346+
centAxis.title = "MultNTracksPV";
347+
LOGF(info, "MultNTracksPV estimator applied");
348+
break;
349+
case MultSelectionMode::MultNTracksPVeta1: // MultNTracksPVeta1
350+
centAxis.title = "MultNTracksPVeta1";
351+
LOGF(info, "MultNTracksPVeta1 estimator applied");
352+
break;
353+
case MultSelectionMode::CentralityFT0C: // Centrality FT0C
354+
centAxis.title = "Centrality FT0C";
355+
LOGF(info, "Centrality FT0C estimator applied");
356+
break;
357+
case MultSelectionMode::CentralityFT0M: // Centrality FT0M
358+
centAxis.title = "Centrality FT0M";
359+
LOGF(info, "Centrality FT0M estimator applied");
360+
break;
361+
case MultSelectionMode::CentralityFV0A: // Centrality FV0A
362+
centAxis.title = "Centrality FV0A";
363+
LOGF(info, "Centrality FV0A estimator applied");
364+
break;
365+
default:
366+
LOG(fatal) << "Unrecognized option for multiplicity " << multiplicityEstimator;
367+
}
368+
303369
fphiCutLow = new TF1("StandardPhiCutLow",
304370
Form("%f/x/x+pi/18.0-%f", lowParam1.value, lowParam2.value),
305371
0, 50);
@@ -555,7 +621,7 @@ struct DedxPidAnalysis {
555621
registryDeDx.add("histRecVtxZData", "collision z position", HistType::kTH1F, {{100, -20.0, +20.0, "z_{vtx} (cm)"}});
556622

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

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

12301296
return true;
12311297
}
1232-
1298+
// Get Multiplicity
1299+
template <typename T>
1300+
float getMultiplicity(const T& collision)
1301+
{
1302+
switch (multiplicityEstimator) {
1303+
case MultSelectionMode::NoMultiplicity: // No multiplicity
1304+
return 50.f; // to check if its filled
1305+
break;
1306+
case MultSelectionMode::MultFV0A: // MultFV0M
1307+
return collision.multZeqFV0A();
1308+
break;
1309+
case MultSelectionMode::MultFT0M:
1310+
return collision.multZeqFT0A() + collision.multZeqFT0C();
1311+
break;
1312+
case MultSelectionMode::MultFDDM: // MultFDDM
1313+
return collision.multZeqFDDA() + collision.multZeqFDDC();
1314+
break;
1315+
case MultSelectionMode::MultTracklets: // MultTracklets
1316+
return 0.f; // Undefined in Run3
1317+
break;
1318+
case MultSelectionMode::MultTPC: // MultTPC
1319+
return collision.multTPC();
1320+
break;
1321+
case MultSelectionMode::MultNTracksPV: // MultNTracksPV
1322+
return collision.multZeqNTracksPV();
1323+
break;
1324+
case MultSelectionMode::MultNTracksPVeta1: // MultNTracksPVeta1
1325+
return collision.multNTracksPVeta1();
1326+
break;
1327+
case MultSelectionMode::CentralityFT0C: // Centrality FT0C
1328+
return collision.centFT0C();
1329+
break;
1330+
case MultSelectionMode::CentralityFT0M: // Centrality FT0M
1331+
return collision.centFT0M();
1332+
break;
1333+
default:
1334+
LOG(fatal) << "Unknown multiplicity estimator: " << multiplicityEstimator;
1335+
return 0.f;
1336+
}
1337+
}
12331338
// Process Data
12341339
void process(SelectedCollisions::iterator const& collision, BCsRun3 const& /**/,
12351340
aod::V0Datas const& fullV0s, PIDTracks const& tracks)
@@ -1277,7 +1382,7 @@ struct DedxPidAnalysis {
12771382
const uint64_t timeStamp{foundBC.timestamp()};
12781383
const int magField{getMagneticField(timeStamp)};
12791384

1280-
float centrality = collision.centFT0C();
1385+
float centrality = getMultiplicity(collision);
12811386
if (centrality < CentClasses[0] || centrality > CentClasses[10])
12821387
return;
12831388

0 commit comments

Comments
 (0)