Skip to content

Commit a08db2b

Browse files
Paola Vargas TorresPaola Vargas Torres
authored andcommitted
Added histograms with finer binning for MC and make momentum configurable
1 parent fc3b28b commit a08db2b

2 files changed

Lines changed: 128 additions & 6 deletions

File tree

PWGLF/Tasks/Nuspex/dedxPidAnalysis.cxx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ struct DedxPidAnalysis {
251251
static constexpr std::string_view DedxvsMomentumvsCentPos[CentralityClasses] = {"dEdx_vs_Momentum_Cent0_1_Pos", "dEdx_vs_Momentum_Cent1_5_Pos", "dEdx_vs_Momentum_Cent5_10_Pos", "dEdx_vs_Momentum_Cent10_15_Pos", "dEdx_vs_Momentum_Cent15_20_Pos", "dEdx_vs_Momentum_Cent20_30_Pos", "dEdx_vs_Momentum_Cent30_40_Pos", "dEdx_vs_Momentum_Cent40_50_Pos", "dEdx_vs_Momentum_Cent50_70_Pos", "dEdx_vs_Momentum_Cent70_100_Pos"};
252252
static constexpr std::string_view DedxvsMomentumvsCentNeg[CentralityClasses] = {"dEdx_vs_Momentum_Cent0_1_Neg", "dEdx_vs_Momentum_Cent1_5_Neg", "dEdx_vs_Momentum_Cent5_10_Neg", "dEdx_vs_Momentum_Cent10_15_Neg", "dEdx_vs_Momentum_Cent15_20_Neg", "dEdx_vs_Momentum_Cent20_30_Neg", "dEdx_vs_Momentum_Cent30_40_Neg", "dEdx_vs_Momentum_Cent40_50_Neg", "dEdx_vs_Momentum_Cent50_70_Neg", "dEdx_vs_Momentum_Cent70_100_Neg"};
253253
static constexpr std::string_view DedxvspTMomentumvsCent[CentralityClasses + 1] = {"dEdx_vs_pTMomentum_Cent0_1", "dEdx_vs_pTMomentum_Cent1_5", "dEdx_vs_pTMomentum_Cent5_10", "dEdx_vs_pTMomentum_Cent10_15", "dEdx_vs_pTMomentum_Cent15_20", "dEdx_vs_pTMomentum_Cent20_30", "dEdx_vs_pTMomentum_Cent30_40", "dEdx_vs_pTMomentum_Cent40_50", "dEdx_vs_pTMomentum_Cent50_70", "dEdx_vs_pTMomentum_Cent70_100", "dEdx_vs_pTMomentum_all_Pos"};
254-
// Fine binnind
254+
// Fine binning
255255
static constexpr std::string_view CentpPos[CentralityClasses + 1] = {"p_vs_eta_Cent0_1_Pos", "p_vs_eta_Cent1_5_Pos", "p_vs_eta_Cent5_10_Pos", "p_vs_eta_Cent10_15_Pos", "p_vs_eta_Cent15_20_Pos", "p_vs_eta_Cent20_30_Pos", "p_vs_eta_Cent30_40_Pos", "p_vs_eta_Cent40_50_Pos", "p_vs_eta_Cent50_70_Pos", "p_vs_eta_Cent70_100_Pos", "p_vs_eta_MB_Pos"};
256256
static constexpr std::string_view CentpNeg[CentralityClasses + 1] = {"p_vs_eta_Cent0_1_Neg", "p_vs_eta_Cent1_5_Neg", "p_vs_eta_Cent5_10_Neg", "p_vs_eta_Cent10_15_Neg", "p_vs_eta_Cent15_20_Neg", "p_vs_eta_Cent20_30_Neg", "p_vs_eta_Cent30_40_Neg", "p_vs_eta_Cent40_50_Neg", "p_vs_eta_Cent50_70_Neg", "p_vs_eta_Cent70_100_Neg", "p_vs_eta_MB_Neg"};
257257
static constexpr std::string_view CentpTPos[CentralityClasses + 1] = {"pT_vs_eta_Cent0_1_Pos", "pT_vs_eta_Cent1_5_Pos", "pT_vs_eta_Cent5_10_Pos", "pT_vs_eta_Cent10_15_Pos", "pT_vs_eta_Cent15_20_Pos", "pT_vs_eta_Cent20_30_Pos", "pT_vs_eta_Cent30_40_Pos", "pT_vs_eta_Cent40_50_Pos", "pT_vs_eta_Cent50_70_Pos", "pT_vs_eta_Cent70_100_Pos", "pT_vs_eta_MB_Pos"};
@@ -272,6 +272,7 @@ struct DedxPidAnalysis {
272272
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"};
273273
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}, ""};
274274
ConfigurableAxis centBins{"centBins", {100, 0, 100}, "Binning for centralidad"};
275+
ConfigurableAxis dedxBins{"dedxBins", {100, 0, 100}, "Binning for dedx"};
275276
ConfigurableAxis pFineBins{"pFineBins", {1995, 0.1, 40}, "Binning for momentum"};
276277

277278
// phi cut fits
@@ -360,7 +361,7 @@ struct DedxPidAnalysis {
360361
}
361362
LOGF(info, "Centrality clases between %.1f - %.1f", CentClasses[0], CentClasses[10]);
362363

363-
AxisSpec dedxAxis{100, 0.0, 100.0, "dE/dx (a. u.)"};
364+
AxisSpec dedxAxis = {dedxBins, "dE/dx (a. u.)"};
364365
AxisSpec ptAxis = {binP, "#it{p}_{T} (GeV/c)"};
365366
AxisSpec etaAxis{8, -0.8, 0.8, "#eta"};
366367
AxisSpec pAxis = {binP, "#it{p}/Z (GeV/c)"};

PWGLF/Tasks/Nuspex/multiplicityPt.cxx

Lines changed: 125 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ struct MultiplicityPt {
7070
static constexpr int RecMultBinMax = 100;
7171
static constexpr int ParticlesType = 4;
7272
static constexpr int ResponseMatrixTypes = 7;
73+
static constexpr int CentralityClasses = 10;
7374

7475
enum INELCutSelection : int {
7576
INEL = 0,
@@ -114,6 +115,11 @@ struct MultiplicityPt {
114115
Configurable<float> cfgCutNsigmaPi{"cfgCutNsigmaPi", 3.0f, "nsigma cut for pions"};
115116
Configurable<float> cfgCutNsigmaKa{"cfgCutNsigmaKa", 2.5f, "nsigma cut for kaons"};
116117
Configurable<float> cfgCutNsigmaPr{"cfgCutNsigmaPr", 2.5f, "nsigma cut for protons"};
118+
ConfigurableAxis ptBinning{"ptBinning", {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}, "pT bin limits"};
119+
ConfigurableAxis pFineBins{"pFineBins", {1995, 0.1, 40}, "Binning for momentum"};
120+
ConfigurableAxis dedxBins{"dedxBins", {100, 0, 100}, "Binning for dedx"};
121+
122+
std::vector<double> centBinningStd = {0., 1., 5., 10., 15., 20., 30., 40., 50., 70., 100.};
117123
// Histogram names for V0s dE/dx analysis
118124
static constexpr std::string_view DedxvsMomentumPos[ParticlesType] = {"dEdx_vs_Momentum_all_Pos", "dEdx_vs_Momentum_Pi_v0_Pos", "dEdx_vs_Momentum_Pr_v0_Pos", "dEdx_vs_Momentum_El_v0_Pos"};
119125
static constexpr std::string_view DedxvsMomentumNeg[ParticlesType] = {"dEdx_vs_Momentum_all_Neg", "dEdx_vs_Momentum_Pi_v0_Neg", "dEdx_vs_Momentum_Pr_v0_Neg", "dEdx_vs_Momentum_El_v0_Neg"};
@@ -128,6 +134,12 @@ struct MultiplicityPt {
128134

129135
static constexpr std::string_view ParticleFractionsVsPtNeg[ParticlesType + 1] = {"hFractionVsPt_Pion_Neg", "hFractionVsPt_Kaon_Neg", "hFractionVsPt_Proton_Neg", "hFractionVsPt_Electron_Neg", "hFractionVsPt_Muon_Neg"};
130136

137+
// Fine binning
138+
static constexpr std::string_view CentpPos[CentralityClasses + 1] = {"p_vs_eta_Cent0_1_Pos", "p_vs_eta_Cent1_5_Pos", "p_vs_eta_Cent5_10_Pos", "p_vs_eta_Cent10_15_Pos", "p_vs_eta_Cent15_20_Pos", "p_vs_eta_Cent20_30_Pos", "p_vs_eta_Cent30_40_Pos", "p_vs_eta_Cent40_50_Pos", "p_vs_eta_Cent50_70_Pos", "p_vs_eta_Cent70_100_Pos", "p_vs_eta_MB_Pos"};
139+
static constexpr std::string_view CentpNeg[CentralityClasses + 1] = {"p_vs_eta_Cent0_1_Neg", "p_vs_eta_Cent1_5_Neg", "p_vs_eta_Cent5_10_Neg", "p_vs_eta_Cent10_15_Neg", "p_vs_eta_Cent15_20_Neg", "p_vs_eta_Cent20_30_Neg", "p_vs_eta_Cent30_40_Neg", "p_vs_eta_Cent40_50_Neg", "p_vs_eta_Cent50_70_Neg", "p_vs_eta_Cent70_100_Neg", "p_vs_eta_MB_Neg"};
140+
static constexpr std::string_view CentpTPos[CentralityClasses + 1] = {"pT_vs_eta_Cent0_1_Pos", "pT_vs_eta_Cent1_5_Pos", "pT_vs_eta_Cent5_10_Pos", "pT_vs_eta_Cent10_15_Pos", "pT_vs_eta_Cent15_20_Pos", "pT_vs_eta_Cent20_30_Pos", "pT_vs_eta_Cent30_40_Pos", "pT_vs_eta_Cent40_50_Pos", "pT_vs_eta_Cent50_70_Pos", "pT_vs_eta_Cent70_100_Pos", "pT_vs_eta_MB_Pos"};
141+
static constexpr std::string_view CentpTNeg[CentralityClasses + 1] = {"pT_vs_eta_Cent0_1_Neg", "pT_vs_eta_Cent1_5_Neg", "pT_vs_eta_Cent5_10_Neg", "pT_vs_eta_Cent10_15_Neg", "pT_vs_eta_Cent15_20_Neg", "pT_vs_eta_Cent20_30_Neg", "pT_vs_eta_Cent30_40_Neg", "pT_vs_eta_Cent40_50_Neg", "pT_vs_eta_Cent50_70_Neg", "pT_vs_eta_Cent70_100_Neg", "pT_vs_eta_MB_Neg"};
142+
131143
TrackSelection customTrackCuts;
132144
TF1* fphiCutLow = nullptr;
133145
TF1* fphiCutHigh = nullptr;
@@ -360,13 +372,12 @@ void MultiplicityPt::init(InitContext const&)
360372
}
361373

362374
// Axis definitions
363-
ConfigurableAxis ptBinning{"ptBinning", {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}, "pT bin limits"};
364375
AxisSpec ptAxis = {ptBinning, "#it{p}_{T} (GeV/#it{c})"};
365-
AxisSpec dedxAxis{100, 0.0, 100.0, "dE/dx (a. u.)"};
376+
AxisSpec dedxAxis = {dedxBins, "dE/dx (a. u.)"};
366377
AxisSpec etaAxis{8, -0.8, 0.8, "#eta"};
367378
AxisSpec pAxis = {ptBinning, "#it{p} (GeV/#it{c})"};
368-
369-
std::vector<double> centBinningStd = {0., 1., 5., 10., 15., 20., 30., 40., 50., 60., 70., 80., 90., 100.};
379+
AxisSpec pFineAxis{pFineBins, "#it{p} (GeV/c)"};
380+
AxisSpec pTFineAxis{pFineBins, "#it{p}_{T} (GeV/c)"};
370381
AxisSpec centAxis = {centBinningStd, "FT0M Centrality (%)"};
371382

372383
std::vector<double> centBinningFine;
@@ -496,6 +507,13 @@ void MultiplicityPt::init(InitContext const&)
496507
{{etaAxis}, {ptAxis}, {pAxis}});
497508
}
498509

510+
for (int i = 0; i < CentralityClasses + 1; ++i) {
511+
ue.add(("Binning/" + std::string(CentpPos[i])).c_str(), "p vs eta", HistType::kTH2F, {{etaAxis}, {pFineAxis}});
512+
ue.add(("Binning/" + std::string(CentpNeg[i])).c_str(), "p vs eta", HistType::kTH2F, {{etaAxis}, {pFineAxis}});
513+
ue.add(("Binning/" + std::string(CentpTPos[i])).c_str(), "pT vs eta", HistType::kTH2F, {{etaAxis}, {pTFineAxis}});
514+
ue.add(("Binning/" + std::string(CentpTNeg[i])).c_str(), "pT vs eta", HistType::kTH2F, {{etaAxis}, {pTFineAxis}});
515+
}
516+
499517
// ===== Particle Fractions as function of p and pT =====
500518
ue.add("ParticleFractions/hTotalCountsVsMomentumPos", "Total counts vs momentum;#it{p} (GeV/#it{c});Counts", HistType::kTH2D, {{etaAxis}, {pAxis}});
501519
ue.add("ParticleFractions/hTotalCountsVsPtPos", "Total counts vs pT;#it{p}_{T} (GeV/#it{c});Counts", HistType::kTH2D, {{etaAxis}, {ptAxis}});
@@ -757,13 +775,116 @@ void MultiplicityPt::processMC(TrackTableMC const& tracks,
757775
float eta = track.eta();
758776
int charge = track.sign();
759777

778+
int centIndex = -1;
779+
for (int j = 0; j < CentralityClasses; ++j) {
780+
if (cent >= centBinningStd[j] && cent < centBinningStd[j + 1]) {
781+
centIndex = j;
782+
break;
783+
}
784+
}
785+
if (centIndex == -1)
786+
continue;
787+
760788
// dedx for all particles
761789
if (charge > 0) {
762790
ue.fill(HIST("DedxVsMomentum/dEdx_vs_Momentum_all_Pos"), momentum, tpcSignal, eta);
763791
ue.fill(HIST("ResponseMatrix/heta_vs_pt_vs_p_all_Pos"), eta, track.pt(), momentum);
792+
// binning
793+
ue.fill(HIST("Binning/p_vs_eta_MB_Pos"), eta, momentum);
794+
ue.fill(HIST("Binning/pT_vs_eta_MB_Pos"), eta, track.pt());
795+
796+
// For centrality
797+
switch (centIndex) {
798+
case 0:
799+
ue.fill(HIST("Binning/p_vs_eta_Cent0_1_Pos"), eta, momentum);
800+
ue.fill(HIST("Binning/pT_vs_eta_Cent0_1_Pos"), eta, track.pt());
801+
break;
802+
case 1:
803+
ue.fill(HIST("Binning/p_vs_eta_Cent1_5_Pos"), eta, momentum);
804+
ue.fill(HIST("Binning/pT_vs_eta_Cent1_5_Pos"), eta, track.pt());
805+
break;
806+
case 2:
807+
ue.fill(HIST("Binning/p_vs_eta_Cent5_10_Pos"), eta, momentum);
808+
ue.fill(HIST("Binning/pT_vs_eta_Cent5_10_Pos"), eta, track.pt());
809+
break;
810+
case 3:
811+
ue.fill(HIST("Binning/p_vs_eta_Cent10_15_Pos"), eta, momentum);
812+
ue.fill(HIST("Binning/pT_vs_eta_Cent10_15_Pos"), eta, track.pt());
813+
break;
814+
case 4:
815+
ue.fill(HIST("Binning/p_vs_eta_Cent15_20_Pos"), eta, momentum);
816+
ue.fill(HIST("Binning/pT_vs_eta_Cent15_20_Pos"), eta, track.pt());
817+
break;
818+
case 5:
819+
ue.fill(HIST("Binning/p_vs_eta_Cent20_30_Pos"), eta, momentum);
820+
ue.fill(HIST("Binning/pT_vs_eta_Cent20_30_Pos"), eta, track.pt());
821+
break;
822+
case 6:
823+
ue.fill(HIST("Binning/p_vs_eta_Cent30_40_Pos"), eta, momentum);
824+
ue.fill(HIST("Binning/pT_vs_eta_Cent30_40_Pos"), eta, track.pt());
825+
break;
826+
case 7:
827+
ue.fill(HIST("Binning/p_vs_eta_Cent40_50_Pos"), eta, momentum);
828+
ue.fill(HIST("Binning/pT_vs_eta_Cent40_50_Pos"), eta, track.pt());
829+
break;
830+
case 8:
831+
ue.fill(HIST("Binning/p_vs_eta_Cent50_70_Pos"), eta, momentum);
832+
ue.fill(HIST("Binning/pT_vs_eta_Cent50_70_Pos"), eta, track.pt());
833+
break;
834+
case 9:
835+
ue.fill(HIST("Binning/p_vs_eta_Cent70_100_Pos"), eta, momentum);
836+
ue.fill(HIST("Binning/pT_vs_eta_Cent70_100_Pos"), eta, track.pt());
837+
break;
838+
}
764839
} else {
765840
ue.fill(HIST("DedxVsMomentum/dEdx_vs_Momentum_all_Neg"), momentum, tpcSignal, eta);
766841
ue.fill(HIST("ResponseMatrix/heta_vs_pt_vs_p_all_Neg"), eta, track.pt(), momentum);
842+
// binning
843+
ue.fill(HIST("Binning/p_vs_eta_MB_Neg"), eta, momentum);
844+
ue.fill(HIST("Binning/pT_vs_eta_MB_Neg"), eta, track.pt());
845+
846+
switch (centIndex) {
847+
case 0:
848+
ue.fill(HIST("Binning/p_vs_eta_Cent0_1_Neg"), eta, momentum);
849+
ue.fill(HIST("Binning/pT_vs_eta_Cent0_1_Neg"), eta, track.pt());
850+
break;
851+
case 1:
852+
ue.fill(HIST("Binning/p_vs_eta_Cent1_5_Neg"), eta, momentum);
853+
ue.fill(HIST("Binning/pT_vs_eta_Cent1_5_Neg"), eta, track.pt());
854+
break;
855+
case 2:
856+
ue.fill(HIST("Binning/p_vs_eta_Cent5_10_Neg"), eta, momentum);
857+
ue.fill(HIST("Binning/pT_vs_eta_Cent5_10_Neg"), eta, track.pt());
858+
break;
859+
case 3:
860+
ue.fill(HIST("Binning/p_vs_eta_Cent10_15_Neg"), eta, momentum);
861+
ue.fill(HIST("Binning/pT_vs_eta_Cent10_15_Neg"), eta, track.pt());
862+
break;
863+
case 4:
864+
ue.fill(HIST("Binning/p_vs_eta_Cent15_20_Neg"), eta, momentum);
865+
ue.fill(HIST("Binning/pT_vs_eta_Cent15_20_Neg"), eta, track.pt());
866+
break;
867+
case 5:
868+
ue.fill(HIST("Binning/p_vs_eta_Cent20_30_Neg"), eta, momentum);
869+
ue.fill(HIST("Binning/pT_vs_eta_Cent20_30_Neg"), eta, track.pt());
870+
break;
871+
case 6:
872+
ue.fill(HIST("Binning/p_vs_eta_Cent30_40_Neg"), eta, momentum);
873+
ue.fill(HIST("Binning/pT_vs_eta_Cent30_40_Neg"), eta, track.pt());
874+
break;
875+
case 7:
876+
ue.fill(HIST("Binning/p_vs_eta_Cent40_50_Neg"), eta, momentum);
877+
ue.fill(HIST("Binning/pT_vs_eta_Cent40_50_Neg"), eta, track.pt());
878+
break;
879+
case 8:
880+
ue.fill(HIST("Binning/p_vs_eta_Cent50_70_Neg"), eta, momentum);
881+
ue.fill(HIST("Binning/pT_vs_eta_Cent50_70_Neg"), eta, track.pt());
882+
break;
883+
case 9:
884+
ue.fill(HIST("Binning/p_vs_eta_Cent70_100_Neg"), eta, momentum);
885+
ue.fill(HIST("Binning/pT_vs_eta_Cent70_100_Neg"), eta, track.pt());
886+
break;
887+
}
767888
}
768889

769890
if (track.mcParticle().isPhysicalPrimary()) {

0 commit comments

Comments
 (0)