diff --git a/analyses/pluginALICE/ALICE_2010_I880049.cc b/analyses/pluginALICE/ALICE_2010_I880049.cc --- a/analyses/pluginALICE/ALICE_2010_I880049.cc +++ b/analyses/pluginALICE/ALICE_2010_I880049.cc @@ -1,67 +1,75 @@ // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/ChargedFinalState.hh" #include "Rivet/Tools/Cuts.hh" #include "Rivet/Projections/SingleValueProjection.hh" #include "Rivet/Tools/AliceCommon.hh" #include "Rivet/Projections/AliceCommon.hh" -//#include "Rivet/Tools/Percentile.hh" #include #define _USE_MATH_DEFINES #include namespace Rivet { // Analysis class ALICE_2010_I880049 : public Analysis { public: DEFAULT_RIVET_ANALYSIS_CTOR(ALICE_2010_I880049); /// Book histograms and initialise projections before the run void init() { // Declare centrality projection - declareCentrality(ALICE::V0MMultiplicity(), "ALICE_2015_PBPBCentrality", "V0M", "V0M"); + declareCentrality(ALICE::V0MMultiplicity(), + "ALICE_2015_PBPBCentrality", "V0M", "V0M"); // Charged final states with |eta| < 0.5 and pT > 50 MeV const Cut& cut = Cuts::abseta < 0.5 && Cuts::pT > 50*MeV; const ChargedFinalState cfs(cut); addProjection(cfs,"CFS"); // Histograms and variables initialization _histNchVsCentr = bookProfile1D(1, 1, 1); + _histNpartVsCentr = bookProfile1D(1, 1, 2); } /// Perform the per-event analysis void analyze(const Event& event) { - const ChargedFinalState& charged = applyProjection(event, "CFS"); + const ChargedFinalState& charged = apply(event, "CFS"); - const CentralityProjection& centrProj = apply(event, "V0M"); + const CentralityProjection& centrProj = + apply(event, "V0M"); double centr = centrProj(); - if ((centr < 0.) || (centr > 80.)) + double nch = charged.particles().size(); + if (centr > 80.) vetoEvent; - - _histNchVsCentr->fill(centr, charged.particles().size(), event.weight()); - + _histNchVsCentr->fill(centr, nch, event.weight()); + // Attempt to extract Npart form GenEvent. TODO: Unclear how to handle this + // in HepMC3 + const HepMC::HeavyIon* hi = event.genEvent()->heavy_ion(); + if (hi && hi->is_valid()) + _histNpartVsCentr->fill(centr, hi->Npart_proj() + hi->Npart_targ(), + event.weight()); } /// Normalise histograms etc., after the run void finalize() { } private: Profile1DPtr _histNchVsCentr; + Profile1DPtr _histNpartVsCentr; }; // The hook for the plugin system DECLARE_RIVET_PLUGIN(ALICE_2010_I880049); } diff --git a/analyses/pluginALICE/ALICE_2010_I880049.plot b/analyses/pluginALICE/ALICE_2010_I880049.plot --- a/analyses/pluginALICE/ALICE_2010_I880049.plot +++ b/analyses/pluginALICE/ALICE_2010_I880049.plot @@ -1,15 +1,14 @@ # BEGIN PLOT /ALICE_2010_I880049/d01-x01-y01 -Title=$N_\text{ch}$ vs. centrality, $\sqrt{s_\text{NN}} = \text{2.76~TeV}$ -XLabel=$c (%)$ -YLabel=$ \mathrm{d}N_\text{ch} / \mathrm{d}\eta $ +Title=$N_{ch}$ vs. centrality, Pb--Pb $\sqrt{s_{NN}}$ = 2.76 TeV +XLabel=Centrality [\%] +YLabel=$\mathrm{d}N_\text{ch} / \mathrm{d}\eta$ LogX=0 LogY=0 # END PLOT - -# BEGIN PLOT /ALICE_2010_I880049/d02-x01-y01 -Title=$N_\text{ch}$ vs. $N_\text{part}$, $\sqrt{s_\text{NN}} = \text{2.76~TeV}$ -XLabel=$N_\text{part}$ -YLabel=$ ((\mathrm{d}N_\text{ch}) / (\mathrm{d}\eta)) / (N_\text{part} / 2)$ +# BEGIN PLOT /ALICE_2010_I880049/d01-x01-y02 +Title=$N_{part}$ vs. centrality, Pb--Pb $\sqrt{s_{NN}}$ = 2.76 TeV +XLabel=Centrality [\%] +YLabel=$\langle N_{part} \rangle$ LogX=0 LogY=0 -# END PLOT \ No newline at end of file +# END PLOT diff --git a/analyses/pluginALICE/ALICE_2010_I880049.yoda b/analyses/pluginALICE/ALICE_2010_I880049.yoda --- a/analyses/pluginALICE/ALICE_2010_I880049.yoda +++ b/analyses/pluginALICE/ALICE_2010_I880049.yoda @@ -1,30 +1,80 @@ -# BEGIN YODA_SCATTER2D /REF/ALICE_2010_I880049/d01-x01-y01 -Path=/REF/ALICE_2010_I880049/d01-x01-y01 -Type=Scatter2D -# xval xerr- xerr+ yval yerr- yerr+ -2.5 2.5 2.5 1601.0 60.0 60.0 -7.5 2.5 2.5 1294.0 49.0 49.0 -15.0 5.0 5.0 966.0 37.0 37.0 -25.0 5.0 5.0 649.0 23.0 23.0 -35.0 5.0 5.0 426.0 15.0 15.0 -45.0 5.0 5.0 261.0 9.0 9.0 -55.0 5.0 5.0 149.0 6.0 6.0 -65.0 5.0 5.0 76.0 4.0 4.0 -75.0 5.0 5.0 35.0 2.0 2.0 -# END YODA_SCATTER2D +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2010_I880049/d01-x01-y01 +Variations: [""] +ErrorBreakdown: {0: {error: {dn: -60.0, up: 60.0}}, 1: {error: {dn: -49.0, up: 49.0}}, 2: {error: {dn: -37.0, up: 37.0}}, 3: {error: {dn: -23.0, up: 23.0}}, 4: {error: {dn: -15.0, up: 15.0}}, 5: {error: {dn: -9.0, up: 9.0}}, 6: {error: {dn: -6.0, up: 6.0}}, 7: {error: {dn: -4.0, up: 4.0}}, 8: {error: {dn: -2.0, up: 2.0}}} +IsRef: 1 +Path: /REF/ALICE_2010_I880049/d01-x01-y01 +Title: doi:10.17182/hepdata.57047.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +2.500000e+00 2.500000e+00 2.500000e+00 1.601000e+03 6.000000e+01 6.000000e+01 +7.500000e+00 2.500000e+00 2.500000e+00 1.294000e+03 4.900000e+01 4.900000e+01 +1.500000e+01 5.000000e+00 5.000000e+00 9.660000e+02 3.700000e+01 3.700000e+01 +2.500000e+01 5.000000e+00 5.000000e+00 6.490000e+02 2.300000e+01 2.300000e+01 +3.500000e+01 5.000000e+00 5.000000e+00 4.260000e+02 1.500000e+01 1.500000e+01 +4.500000e+01 5.000000e+00 5.000000e+00 2.610000e+02 9.000000e+00 9.000000e+00 +5.500000e+01 5.000000e+00 5.000000e+00 1.490000e+02 6.000000e+00 6.000000e+00 +6.500000e+01 5.000000e+00 5.000000e+00 7.600000e+01 4.000000e+00 4.000000e+00 +7.500000e+01 5.000000e+00 5.000000e+00 3.500000e+01 2.000000e+00 2.000000e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2010_I880049/d01-x01-y02 +Variations: [""] +ErrorBreakdown: {0: {error: {dn: -3.1, up: 3.1}}, 1: {error: {dn: -4.6, up: 4.6}}, 2: {error: {dn: -4.4, up: 4.4}}, 3: {error: {dn: -3.9, up: 3.9}}, 4: {error: {dn: -3.3, up: 3.3}}, 5: {error: {dn: -2.6, up: 2.6}}, 6: {error: {dn: -2.0, up: 2.0}}, 7: {error: {dn: -1.3, up: 1.3}}, 8: {error: {dn: -0.6, up: 0.6}}} -# BEGIN YODA_SCATTER2D /REF/ALICE_2010_I880049/d02-x01-y01 -Path=/REF/ALICE_2010_I880049/d02-x01-y01 -Type=Scatter2D -# xval xerr- xerr+ yval yerr- yerr+ -382.8 0.0 0.0 8.4 0.3 0.3 -329.7 0.0 0.0 7.9 0.3 0.3 -260.5 0.0 0.0 7.4 0.3 0.3 -186.4 0.0 0.0 7.0 0.3 0.3 -128.9 0.0 0.0 6.6 0.3 0.3 -85.0 0.0 0.0 6.1 0.3 0.3 -52.8 0.0 0.0 5.7 0.3 0.3 -30.0 0.0 0.0 5.1 0.3 0.3 -15.8 0.0 0.0 4.4 0.4 0.4 -# END YODA_SCATTER2D \ No newline at end of file +IsRef: 1 +Path: /REF/ALICE_2010_I880049/d01-x01-y02 +Title: doi:10.17182/hepdata.57047.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +2.500000e+00 2.500000e+00 2.500000e+00 3.828000e+02 3.100000e+00 3.100000e+00 +7.500000e+00 2.500000e+00 2.500000e+00 3.297000e+02 4.600000e+00 4.600000e+00 +1.500000e+01 5.000000e+00 5.000000e+00 2.605000e+02 4.400000e+00 4.400000e+00 +2.500000e+01 5.000000e+00 5.000000e+00 1.864000e+02 3.900000e+00 3.900000e+00 +3.500000e+01 5.000000e+00 5.000000e+00 1.289000e+02 3.300000e+00 3.300000e+00 +4.500000e+01 5.000000e+00 5.000000e+00 8.500000e+01 2.600000e+00 2.600000e+00 +5.500000e+01 5.000000e+00 5.000000e+00 5.280000e+01 2.000000e+00 2.000000e+00 +6.500000e+01 5.000000e+00 5.000000e+00 3.000000e+01 1.300000e+00 1.300000e+00 +7.500000e+01 5.000000e+00 5.000000e+00 1.580000e+01 6.000000e-01 6.000000e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2010_I880049/d01-x01-y03 +Variations: [""] +ErrorBreakdown: {0: {error: {dn: -0.3, up: 0.3}}, 1: {error: {dn: -0.3, up: 0.3}}, 2: {error: {dn: -0.3, up: 0.3}}, 3: {error: {dn: -0.3, up: 0.3}}, 4: {error: {dn: -0.3, up: 0.3}}, 5: {error: {dn: -0.3, up: 0.3}}, 6: {error: {dn: -0.3, up: 0.3}}, 7: {error: {dn: -0.3, up: 0.3}}, 8: {error: {dn: -0.4, up: 0.4}}} + +IsRef: 1 +Path: /REF/ALICE_2010_I880049/d01-x01-y03 +Title: doi:10.17182/hepdata.57047.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +2.500000e+00 2.500000e+00 2.500000e+00 8.400000e+00 3.000000e-01 3.000000e-01 +7.500000e+00 2.500000e+00 2.500000e+00 7.900000e+00 3.000000e-01 3.000000e-01 +1.500000e+01 5.000000e+00 5.000000e+00 7.400000e+00 3.000000e-01 3.000000e-01 +2.500000e+01 5.000000e+00 5.000000e+00 7.000000e+00 3.000000e-01 3.000000e-01 +3.500000e+01 5.000000e+00 5.000000e+00 6.600000e+00 3.000000e-01 3.000000e-01 +4.500000e+01 5.000000e+00 5.000000e+00 6.100000e+00 3.000000e-01 3.000000e-01 +5.500000e+01 5.000000e+00 5.000000e+00 5.700000e+00 3.000000e-01 3.000000e-01 +6.500000e+01 5.000000e+00 5.000000e+00 5.100000e+00 3.000000e-01 3.000000e-01 +7.500000e+01 5.000000e+00 5.000000e+00 4.400000e+00 4.000000e-01 4.000000e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2010_I880049/d02-x01-y01 +Variations: [""] +ErrorBreakdown: {0: {error: {dn: -0.3, up: 0.3}}, 1: {error: {dn: -0.3, up: 0.3}}, 2: {error: {dn: -0.3, up: 0.3}}, 3: {error: {dn: -0.3, up: 0.3}}, 4: {error: {dn: -0.3, up: 0.3}}, 5: {error: {dn: -0.3, up: 0.3}}, 6: {error: {dn: -0.3, up: 0.3}}, 7: {error: {dn: -0.3, up: 0.3}}, 8: {error: {dn: -0.4, up: 0.4}}} + +IsRef: 1 +Path: /REF/ALICE_2010_I880049/d02-x01-y01 +Title: doi:10.17182/hepdata.57047.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +1.580000e+01 0.000000e+00 0.000000e+00 4.400000e+00 4.000000e-01 4.000000e-01 +3.000000e+01 0.000000e+00 0.000000e+00 5.100000e+00 3.000000e-01 3.000000e-01 +5.280000e+01 0.000000e+00 0.000000e+00 5.700000e+00 3.000000e-01 3.000000e-01 +8.500000e+01 0.000000e+00 0.000000e+00 6.100000e+00 3.000000e-01 3.000000e-01 +1.289000e+02 0.000000e+00 0.000000e+00 6.600000e+00 3.000000e-01 3.000000e-01 +1.864000e+02 0.000000e+00 0.000000e+00 7.000000e+00 3.000000e-01 3.000000e-01 +2.605000e+02 0.000000e+00 0.000000e+00 7.400000e+00 3.000000e-01 3.000000e-01 +3.297000e+02 0.000000e+00 0.000000e+00 7.900000e+00 3.000000e-01 3.000000e-01 +3.828000e+02 0.000000e+00 0.000000e+00 8.400000e+00 3.000000e-01 3.000000e-01 +END YODA_SCATTER2D_V2 diff --git a/analyses/pluginALICE/ALICE_2012_I1127497.info b/analyses/pluginALICE/ALICE_2012_I1127497.info --- a/analyses/pluginALICE/ALICE_2012_I1127497.info +++ b/analyses/pluginALICE/ALICE_2012_I1127497.info @@ -1,39 +1,39 @@ Name: ALICE_2012_I1127497 Year: 2012 Summary: Centrality dependence of charged particle production at large transverse momentum in Pb-Pb collisions at $\sqrt{s_{\rm{NN}}} = 2.76$ TeV Experiment: ALICE Collider: LHC SpireID: InspireID: 1127497 Status: NEW Authors: References: - arXiv:1208.2711 [hep-ex] RunInfo: NumEvents: Options: - cent=REF,GEN,IMP,USR Beams: [1000822080, 1000822080] # This is _total_ energy of beams, so this becomes 208*2760=574080 Energies: [574080] Description: - 'The inclusive transverse momentum (pT) distributions of primary charged particles are measured in the pseudo-rapidity range |η|<0.8 as a function of event centrality in Pb-Pb collisions at sNN−−−√=2.76 TeV with ALICE at the LHC. The data are presented in the pT range 0.1530 GeV/c. In peripheral collisions (70-80%), the suppression is weaker with RAA≈0.7 almost independently of pT. The measured nuclear modification factors are compared to other measurements and model calculations.' + 'The inclusive transverse momentum ($p_T$) distributions of primary charged particles are measured in the pseudo-rapidity range $|\eta| < 0.8$ as a function of event centrality in Pb--Pb collisions at $\sqrt{s_{nn}} = 2.76$ TeV with ALICE at the LHC. The data are presented in the $p_T$ range $0.15 30$ GeV/c. In peripheral collisions (70-80%), the suppression is weaker with $R_{AA} \approx 0.7$ almost independently of $p_T$. The measured nuclear modification factors are compared to other measurements and model calculations.' BibKey: Abelev:2012hxa BibTeX: '@article{Abelev:2012hxa, author = "Abelev, Betty and others", title = "{Centrality Dependence of Charged Particle Production at Large Transverse Momentum in Pb--Pb Collisions at $\sqrt{s_{\rm{NN}}} = 2.76$ TeV}", collaboration = "ALICE", journal = "Phys. Lett.", volume = "B720", year = "2013", pages = "52-62", doi = "10.1016/j.physletb.2013.01.051", eprint = "1208.2711", archivePrefix = "arXiv", primaryClass = "hep-ex", reportNumber = "CERN-PH-EP-2012-233", SLACcitation = "%%CITATION = ARXIV:1208.2711;%%" }' Reentrant: True diff --git a/analyses/pluginALICE/ALICE_2012_I930312.cc b/analyses/pluginALICE/ALICE_2012_I930312.cc --- a/analyses/pluginALICE/ALICE_2012_I930312.cc +++ b/analyses/pluginALICE/ALICE_2012_I930312.cc @@ -1,310 +1,333 @@ // -*- C++ -*- #include "Rivet/Projections/ChargedFinalState.hh" #include "Rivet/Tools/Cuts.hh" #include "Rivet/Projections/SingleValueProjection.hh" #include "Rivet/Tools/AliceCommon.hh" #include "Rivet/Projections/AliceCommon.hh" #include #define _USE_MATH_DEFINES #include namespace Rivet { /// Analysis class ALICE_2012_I930312 : public Analysis { public: DEFAULT_RIVET_ANALYSIS_CTOR(ALICE_2012_I930312); /// Book histograms and initialise projections before the run void init() { // Declare centrality projection - declareCentrality(ALICE::V0MMultiplicity(), "ALICE_2015_PBPBCentrality", "V0M", "V0M"); + declareCentrality(ALICE::V0MMultiplicity(), "ALICE_2015_PBPBCentrality", + "V0M", "V0M"); - // Charged final states with |eta| < 1.0 and 8 < pT < 15 GeV/c for trigger particles - const Cut& cutTrigger = Cuts::abseta < 1.0 && Cuts::pT > 8*GeV && Cuts::pT < 15*GeV; + // Charged final states with |eta| < 1.0 and 8 < pT < 15 GeV/c for + // trigger particles + const Cut& cutTrigger = + Cuts::abseta < 1.0 && Cuts::pT > 8*GeV && Cuts::pT < 15*GeV; const ChargedFinalState cfsTrigger(cutTrigger); addProjection(cfsTrigger,"CFSTrigger"); // Set limit values of pT bins - pt_limits[0] = 3; - pt_limits[1] = 4; - pt_limits[2] = 6; - pt_limits[3] = 8; - pt_limits[4] = 10; + pt_limits[0] = 3.; + pt_limits[1] = 4.; + pt_limits[2] = 6.; + pt_limits[3] = 8.; + pt_limits[4] = 10.; - // Charged final states with |eta| < 1.0 and different pT bins for associated particles + // Charged final states with |eta| < 1.0 and different pT bins for + // associated particles. for (int ipt = 0; ipt < PT_BINS; ipt++) { - Cut mycut = Cuts::abseta < 1.0 && Cuts::pT > pt_limits[ipt]*GeV && Cuts::pT < pt_limits[ipt + 1]*GeV; - addProjection(ChargedFinalState(mycut), "CFSAssoc" + std::to_string(ipt)); + Cut mycut = Cuts::abseta < 1.0 && Cuts::pT > pt_limits[ipt]*GeV && + Cuts::pT < pt_limits[ipt + 1]*GeV; + declare(ChargedFinalState(mycut), "CFSAssoc" + std::to_string(ipt)); } // Create event strings event_string[0] = "pp"; event_string[1] = "central"; event_string[2] = "peripheral"; event_string[3] = "other"; // For each event type for (int itype = 0; itype < EVENT_TYPES; itype++) { // For each pT range for (int ipt = 0; ipt < PT_BINS; ipt++) { // Initialize yield histograms - _histYield[itype][ipt] = bookHisto1D("Yield_" + event_string[itype] + "_" + std::to_string(ipt), - 36, -0.5 * M_PI, 1.5 * M_PI, - "Associated particle per trigger particle yield", - "#Delta#eta (rad)", "1 / N_trig dN_assoc / d#Delta#eta (rad^-1)"); - _histYieldBkgRemoved[itype][ipt] = bookHisto1D("Yield_" + event_string[itype] + "_nobkg_" + std::to_string(ipt), - 36, -0.5 * M_PI, 1.5 * M_PI, - "Associated particle per trigger particle yield no bkg", - "#Delta#eta (rad)", "1 / N_trig dN_assoc / d#Delta#eta (rad^-1)"); - } + _histYield[itype][ipt] = bookHisto1D("Yield_" + event_string[itype] + + "_" + std::to_string(ipt), 36, -0.5 * M_PI, 1.5 * M_PI, + "Associated particle per trigger particle yield", + "$\\Delta\\eta$ (rad)", "$1 / N_{trig} dN_{assoc} / d\\Delta\\eta$ (rad$^-1$)"); + _histYieldBkgRemoved[itype][ipt] = bookHisto1D("Yield_" + + event_string[itype] + "_nobkg_" + std::to_string(ipt), 36, -0.5*M_PI, + 1.5 * M_PI, "Associated particle per trigger particle yield no bkg", + "$\\Delta\\eta$ (rad)", "$1 / N_{trig} dN_{assoc} / d\\Delta\\eta$ (rad$^-1$)"); + } } // Histogram for counting trigger particles for each event type - _histTriggerCounter = bookHisto1D("Trigger", EVENT_TYPES, 0.0, EVENT_TYPES, "Trigger counter", "event type", "N"); - - // Initialize IAA and ICP histograms - _histIAA[0] = bookScatter2D(1, 1, 1); - _histIAA[1] = bookScatter2D(2, 1, 1); - _histIAA[2] = bookScatter2D(5, 1, 1); - - _histIAA[3] = bookScatter2D(3, 1, 1); - _histIAA[4] = bookScatter2D(4, 1, 1); - _histIAA[5] = bookScatter2D(6, 1, 1); + _histTriggerCounter = bookHisto1D("Trigger", EVENT_TYPES, 0.0, + EVENT_TYPES, "Trigger counter", "event type", "N"); } /// Perform the per-event analysis void analyze(const Event& event) { const double weight = event.weight(); // Create charged final state for trigger particle - const ChargedFinalState& triggerFinalState = applyProjection(event, "CFSTrigger"); + const ChargedFinalState& triggerFinalState = + applyProjection(event, "CFSTrigger"); Particles triggerParticles = triggerFinalState.particlesByPt(); // Create charged final state for associated particle ChargedFinalState associatedFinalState[PT_BINS]; Particles associatedParticles[PT_BINS]; for (int ipt = 0; ipt < PT_BINS; ipt++) { - associatedFinalState[ipt] = applyProjection(event, "CFSAssoc" + std::to_string(ipt)); + associatedFinalState[ipt] = applyProjection(event, + "CFSAssoc" + std::to_string(ipt)); associatedParticles[ipt] = associatedFinalState[ipt].particlesByPt(); } // Check event type if (event.genEvent()->heavy_ion()) { // Prepare centrality projection and value - const CentralityProjection& centrProj = apply(event, "V0M"); + const CentralityProjection& centrProj = + apply(event, "V0M"); double centr = centrProj(); // Set the flag for the type of the event if (centr > 0.0 && centr < 5.0) event_type = 1; // PbPb, central else if (centr > 60.0 && centr < 90.0) event_type = 2; // PbPb, peripherial else event_type = 3; // PbPb, other } else { event_type = 0; // pp } // Veto event if not valid event type if (event_type == 3) vetoEvent; // Fill trigger histogram for a proper event type _histTriggerCounter->fill(event_type, triggerParticles.size()); // Loop over trigger particles - foreach (const Particle& triggerParticle, triggerParticles) { + for (const auto& triggerParticle : triggerParticles) { // For each pt bin for (int ipt = 0; ipt < PT_BINS; ipt++) { // Loop over associated particles - foreach (const Particle& associatedParticle, associatedParticles[ipt]) { - // If associated and trigger particle are not the same particles + for (const auto& associatedParticle : associatedParticles[ipt]) { + // If associated and trigger particle are not the same particles. if (associatedParticle != triggerParticle) { - // If pt of trigger particle is greater than pt of associated particle + // Test trigger particle. if (triggerParticle.pt() > associatedParticle.pt()) { - // Calculate delta phi in range (-0.5*PI, 1.5*PI) - double dPhi = triggerParticle.phi() - associatedParticle.phi(); + // Calculate delta phi in range (-0.5*PI, 1.5*PI). + double dPhi = triggerParticle.phi() - + associatedParticle.phi(); while (dPhi > 1.5 * M_PI) { dPhi -= 2 * M_PI; } while (dPhi < -0.5 * M_PI) { dPhi += 2 * M_PI; } // Fill yield histogram for calculated delta phi _histYield[event_type][ipt]->fill(dPhi, weight); } } } } } - } /// Normalise histograms etc., after the run void finalize() { // Check for the reentrant finalize reentrant_flag = true; // For each event type for (int itype = 0; itype < EVENT_TYPES; itype++) { // For each pT range for (int ipt = 0; ipt < PT_BINS; ipt++) { if (_histYield[itype][ipt]->numEntries() <= 0) reentrant_flag = false; } } // Postprocessing of the histograms if (reentrant_flag == true) { + // Initialize IAA and ICP histograms + _histIAA[0] = bookScatter2D(1, 1, 1, true); + _histIAA[1] = bookScatter2D(2, 1, 1, true); + _histIAA[2] = bookScatter2D(5, 1, 1, true); + + _histIAA[3] = bookScatter2D(3, 1, 1, true); + _histIAA[4] = bookScatter2D(4, 1, 1, true); + _histIAA[5] = bookScatter2D(6, 1, 1, true); // Variables for near and away side peak calculation double nearSide[EVENT_TYPES][PT_BINS] = { {0.0} }; double awaySide[EVENT_TYPES][PT_BINS] = { {0.0} }; // Variables for background error calculation double background[EVENT_TYPES][PT_BINS] = { {0.0} }; double backgroundError[EVENT_TYPES][PT_BINS] = { {0.0} }; // Variables for integration error calculation double scalingFactor[EVENT_TYPES] = {0.0}; double numberOfEntries[EVENT_TYPES][PT_BINS][2] = { { {0.0} } }; int numberOfBins[EVENT_TYPES][PT_BINS][2] = { { {0} } }; // For each event type for (int itype = 0; itype < EVENT_TYPES; itype++) { // For each pT range for (int ipt = 0; ipt < PT_BINS; ipt++) { - // Check if histograms are fine - if (_histTriggerCounter->numEntries() == 0 || _histYield[itype][ipt]->numEntries() == 0) { - std::cout << "There are no entries in one of the histograms" << std::endl; + if (_histTriggerCounter->numEntries() == 0 || + _histYield[itype][ipt]->numEntries() == 0) { + cout << "There are no entries in one of the histograms" << endl; continue; } // Scale yield histogram if ((_histTriggerCounter->bin(itype).sumW() != 0)) { - scalingFactor[itype] = 1. / _histTriggerCounter->bin(itype).sumW(); - scale(_histYield[itype][ipt], (1. / _histTriggerCounter->bin(itype).sumW())); + scalingFactor[itype] = 1. / + _histTriggerCounter->bin(itype).sumW(); + scale(_histYield[itype][ipt], + (1. / _histTriggerCounter->bin(itype).sumW())); } // Calculate background double sum = 0.0; int nbins = 0; for (unsigned int ibin = 0; ibin < _histYield[itype][ipt]->numBins(); ibin++) { if ((_histYield[itype][ipt]->bin(ibin).xMid() > (-0.5 * M_PI) && _histYield[itype][ipt]->bin(ibin).xMid() < (-0.5 * M_PI + 0.4)) || (_histYield[itype][ipt]->bin(ibin).xMid() > (0.5 * M_PI - 0.4) && _histYield[itype][ipt]->bin(ibin).xMid() < (0.5 * M_PI + 0.4)) || (_histYield[itype][ipt]->bin(ibin).xMid() > (1.5 * M_PI - 0.4) && _histYield[itype][ipt]->bin(ibin).xMid() < (1.5 * M_PI))) { sum += _histYield[itype][ipt]->bin(ibin).sumW(); nbins++; } } if (nbins == 0) { std::cout << "Failed to estimate background!" << std::endl; continue; } background[itype][ipt] = sum / nbins; // Calculate background error sum = 0.0; nbins = 0; for (unsigned int ibin = 0; ibin < _histYield[itype][ipt]->numBins(); ibin++) { if (_histYield[itype][ipt]->bin(ibin).xMid() > (0.5 * M_PI - 0.4) && _histYield[itype][ipt]->bin(ibin).xMid() < (0.5 * M_PI + 0.4)) { - sum += (_histYield[itype][ipt]->bin(ibin).sumW() - background[itype][ipt]) * + sum += (_histYield[itype][ipt]->bin(ibin).sumW() - background[itype][ipt]) * (_histYield[itype][ipt]->bin(ibin).sumW() - background[itype][ipt]); nbins++; } } backgroundError[itype][ipt] = sqrt(sum / (nbins - 1)); // Fill histograms with removed background for (unsigned int ibin = 0; ibin < _histYield[itype][ipt]->numBins(); ibin++) { - _histYieldBkgRemoved[itype][ipt]->fillBin(ibin, _histYield[itype][ipt]->bin(ibin).sumW() - background[itype][ipt]); + _histYieldBkgRemoved[itype][ipt]->fillBin(ibin, + _histYield[itype][ipt]->bin(ibin).sumW() - background[itype][ipt]); } // Integrate near-side yield unsigned int lowerBin = _histYield[itype][ipt]->binIndexAt(-0.7 + 0.02); unsigned int upperBin = _histYield[itype][ipt]->binIndexAt( 0.7 - 0.02) + 1; nbins = upperBin - lowerBin; numberOfBins[itype][ipt][0] = nbins; - nearSide[itype][ipt] = _histYield[itype][ipt]->integralRange(lowerBin, upperBin) - nbins * background[itype][ipt]; - numberOfEntries[itype][ipt][0] = _histYield[itype][ipt]->integralRange(lowerBin, upperBin) * _histTriggerCounter->bin(itype).sumW(); + nearSide[itype][ipt] = _histYield[itype][ipt]->integralRange(lowerBin, + upperBin) - nbins * background[itype][ipt]; + numberOfEntries[itype][ipt][0] = _histYield[itype][ipt]->integralRange( + lowerBin, upperBin) * _histTriggerCounter->bin(itype).sumW(); // Integrate away-side yield lowerBin = _histYield[itype][ipt]->binIndexAt(M_PI - 0.7 + 0.02); upperBin = _histYield[itype][ipt]->binIndexAt(M_PI + 0.7 - 0.02) + 1; nbins = upperBin - lowerBin; numberOfBins[itype][ipt][1] = nbins; - awaySide[itype][ipt] = _histYield[itype][ipt]->integralRange(lowerBin, upperBin) - nbins * background[itype][ipt]; - numberOfEntries[itype][ipt][1] = _histYield[itype][ipt]->integralRange(lowerBin, upperBin) * _histTriggerCounter->bin(itype).sumW(); + awaySide[itype][ipt] = _histYield[itype][ipt]->integralRange( + lowerBin, upperBin) - nbins * background[itype][ipt]; + numberOfEntries[itype][ipt][1] = + _histYield[itype][ipt]->integralRange(lowerBin, upperBin) * + _histTriggerCounter->bin(itype).sumW(); } } // Variables for IAA/ICP plots double dI = 0.0; int near = 0; int away = 1; double xval[PT_BINS] = { 3.5, 5.0, 7.0, 9.0 }; double xerr[PT_BINS] = { 0.5, 1.0, 1.0, 1.0 }; int types1[3] = {1, 2, 1}; int types2[3] = {0, 0, 2}; // Fill IAA/ICP plots for near side peak for (int ihist = 0; ihist < 3; ihist++) { int type1 = types1[ihist]; int type2 = types2[ihist]; for (int ipt = 0; ipt < PT_BINS; ipt++) { dI = scalingFactor[type1] * scalingFactor[type1] * numberOfEntries[type1][ipt][near] + - scalingFactor[type2] * scalingFactor[type2] * numberOfEntries[type2][ipt][near] * nearSide[type1][ipt] * nearSide[type1][ipt] / (nearSide[type2][ipt] * nearSide[type2][ipt]) + - numberOfBins[type1][ipt][near] * numberOfBins[type1][ipt][near] * backgroundError[type1][ipt] * backgroundError[type1][ipt] + - numberOfBins[type2][ipt][near] * numberOfBins[type2][ipt][near] * backgroundError[type2][ipt] * backgroundError[type2][ipt] * nearSide[type1][ipt] * nearSide[type1][ipt] / (nearSide[type2][ipt] * nearSide[type2][ipt]); + scalingFactor[type2] * scalingFactor[type2] * numberOfEntries[type2][ipt][near] * + nearSide[type1][ipt] * nearSide[type1][ipt] / (nearSide[type2][ipt] * nearSide[type2][ipt]) + + numberOfBins[type1][ipt][near] * numberOfBins[type1][ipt][near] * backgroundError[type1][ipt] * + backgroundError[type1][ipt] + numberOfBins[type2][ipt][near] * numberOfBins[type2][ipt][near] * + backgroundError[type2][ipt] * backgroundError[type2][ipt] * nearSide[type1][ipt] * + nearSide[type1][ipt] / (nearSide[type2][ipt] * nearSide[type2][ipt]); + dI = sqrt(dI)/nearSide[type2][ipt]; _histIAA[ihist]->addPoint(xval[ipt], nearSide[type1][ipt] / nearSide[type2][ipt], xerr[ipt], dI); } } // Fill IAA/ICP plots for away side peak for (int ihist = 0; ihist < 3; ihist++) { int type1 = types1[ihist]; int type2 = types2[ihist]; for (int ipt = 0; ipt < PT_BINS; ipt++) { dI = scalingFactor[type1] * scalingFactor[type1] * numberOfEntries[type1][ipt][away] + - scalingFactor[type2] * scalingFactor[type2] * numberOfEntries[type2][ipt][away] * awaySide[type1][ipt] * awaySide[type1][ipt] / (awaySide[type2][ipt] * awaySide[type2][ipt]) + - numberOfBins[type1][ipt][away] * numberOfBins[type1][ipt][away] * backgroundError[type1][ipt] * backgroundError[type1][ipt] + - numberOfBins[type2][ipt][away] * numberOfBins[type2][ipt][away] * backgroundError[type2][ipt] * backgroundError[type2][ipt] * awaySide[type1][ipt] * awaySide[type1][ipt] / (awaySide[type2][ipt] * awaySide[type2][ipt]); + scalingFactor[type2] * scalingFactor[type2] * numberOfEntries[type2][ipt][away] * + awaySide[type1][ipt] * awaySide[type1][ipt] / (awaySide[type2][ipt] * awaySide[type2][ipt]) + + numberOfBins[type1][ipt][away] * numberOfBins[type1][ipt][away] * backgroundError[type1][ipt] * + backgroundError[type1][ipt] + numberOfBins[type2][ipt][away] * numberOfBins[type2][ipt][away] * + backgroundError[type2][ipt] * backgroundError[type2][ipt] * awaySide[type1][ipt] * + awaySide[type1][ipt] / (awaySide[type2][ipt] * awaySide[type2][ipt]); + dI = sqrt(dI)/awaySide[type2][ipt]; _histIAA[ihist + 3]->addPoint(xval[ipt], awaySide[type1][ipt] / awaySide[type2][ipt], xerr[ipt], dI); } } - } } private: static const int PT_BINS = 4; static const int EVENT_TYPES = 3; Histo1DPtr _histYield[EVENT_TYPES][PT_BINS]; Histo1DPtr _histYieldBkgRemoved[EVENT_TYPES][PT_BINS]; Histo1DPtr _histTriggerCounter; Scatter2DPtr _histIAA[6]; - int pt_limits[5]; + double pt_limits[5]; int event_type; string event_string[EVENT_TYPES + 1]; bool reentrant_flag; }; // The hook for the plugin system DECLARE_RIVET_PLUGIN(ALICE_2012_I930312); } diff --git a/analyses/pluginALICE/ALICE_2012_I930312.info b/analyses/pluginALICE/ALICE_2012_I930312.info --- a/analyses/pluginALICE/ALICE_2012_I930312.info +++ b/analyses/pluginALICE/ALICE_2012_I930312.info @@ -1,39 +1,39 @@ Name: ALICE_2012_I930312 Year: 2012 Summary: Particle-yield modification in jet-like azimuthal di-hadron correlations in Pb-Pb collisions at $\sqrt{s_\rm{NN}} = 2.76$ TeV Experiment: ALICE Collider: LHC SpireID: InspireID: 930312 Status: NEW Authors: References: - arXiv:1110.0121 [nucl-ex] RunInfo: NumEvents: Options: - cent=REF,GEN,IMP,USR Beams: [[p, p], [1000822080, 1000822080]] # This is _total_ energy of beams, so this becomes 208*2760=574080 Energies: [2760, 574080] Description: - 'The yield of charged particles associated with high-pT trigger particles (83 GeV/c on the away-side drops to about 60% of that observed in pp collisions, while on the near-side a moderate enhancement of 20-30% is found.' + 'The yield of charged particles associated with high-pT trigger particles ($8 < p_{\perp} < 15$ GeV/c) is measured with the ALICE detector in Pb-Pb collisions at $\sqrt{s_{NN}} = 2.76$ TeV relative to proton-proton collisions at the same energy. The conditional per-trigger yields are extracted from the narrow jet-like correlation peaks in azimuthal di-hadron correlations. In the 5\% most central collisions, we observe that the yield of associated charged particles with transverse momenta $p_\perp > 3$ GeV/c on the away-side drops to about 60\% of that observed in pp collisions, while on the near-side a moderate enhancement of 20-30\% is found.' BibKey: Aamodt:2011vg BibTeX: '@article{Aamodt:2011vg, author = "Aamodt, K. and others", title = "{Particle-yield modification in jet-like azimuthal di-hadron correlations in Pb-Pb collisions at $\sqrt{s_{NN}} = 2.76$ TeV}", collaboration = "ALICE", journal = "Phys. Rev. Lett.", volume = "108", year = "2012", pages = "092301", doi = "10.1103/PhysRevLett.108.092301", eprint = "1110.0121", archivePrefix = "arXiv", primaryClass = "nucl-ex", reportNumber = "CERN-PH-EP-2011-161", SLACcitation = "%%CITATION = ARXIV:1110.0121;%%" }' Reentrant: True diff --git a/analyses/pluginALICE/ALICE_2012_I930312.plot b/analyses/pluginALICE/ALICE_2012_I930312.plot --- a/analyses/pluginALICE/ALICE_2012_I930312.plot +++ b/analyses/pluginALICE/ALICE_2012_I930312.plot @@ -1,47 +1,47 @@ # BEGIN PLOT /ALICE_2012_I930312/d01-x01-y01 -Title=$I_{AA}, near-side$ -XLabel=$p_{t,assoc} (GeV/c)$ +Title=$I_{AA}$ near-side +XLabel=$p_{t,assoc}$ [GeV/c] YLabel=$ I_{AA} $ LogX=0 LogY=0 # END PLOT # BEGIN PLOT /ALICE_2012_I930312/d02-x01-y01 -Title=$I_{AA}, near-side$ -XLabel=$p_{t,assoc} (GeV/c)$ -YLabel=$ I_{AA} $ +Title=$I_{AA}$ near-side +XLabel=$p_{t,assoc}$ [GeV/c] +YLabel=$I_{AA}$ LogX=0 LogY=0 # END PLOT # BEGIN PLOT /ALICE_2012_I930312/d03-x01-y01 -Title=$I_{AA}, away-side$ -XLabel=$p_{t,assoc} (GeV/c)$ -YLabel=$ I_{AA} $ +Title=$I_{AA}$ away-side +XLabel=$p_{t,assoc}$ [GeV/c] +YLabel=$I_{AA}$ LogX=0 LogY=0 # END PLOT # BEGIN PLOT /ALICE_2012_I930312/d04-x01-y01 -Title=$I_{AA}, away-side$ -XLabel=$p_{t,assoc} (GeV/c)$ -YLabel=$ I_{AA} $ +Title=$I_{AA}$ away-side +XLabel=$p_{t,assoc}$ [GeV/c] +YLabel=$I_{AA}$ LogX=0 LogY=0 # END PLOT # BEGIN PLOT /ALICE_2012_I930312/d05-x01-y01 -Title=$I_{CP} (0-5% / 60-90%), near-side$ -XLabel=$p_{t,assoc} (GeV/c)$ -YLabel=$ I_{CP} (0-5% / 60-90%)$ +Title=$I_{CP}$ (0-5\% / 60-90\%) near-side +XLabel=$p_{t,assoc}$ [GeV/c] +YLabel=$I_{CP}$ (0-5\% / 60-90\%) LogX=0 LogY=0 # END PLOT # BEGIN PLOT /ALICE_2012_I930312/d06-x01-y01 -Title=$I_{CP} (0-5% / 60-90%), away-side$ -XLabel=$p_{t,assoc} (GeV/c)$ -YLabel=$ I_{CP} (0-5% / 60-90%)$ +Title=$I_{CP}$ (0-5\% / 60-90\%), away-side +XLabel=$p_{t,assoc}$ [GeV/c] +YLabel=$I_{CP}$ (0-5\% / 60-90\%) LogX=0 LogY=0 -# END PLOT \ No newline at end of file +# END PLOT