rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ALICE_2022_I2088201

Sigma(1385) resonance production in PbPb collisions at 5.02 TeV
Experiment: ALICE (LHC)
Inspire ID: 2088201
Status: VALIDATED
Authors:
  • Enrico Fragiacomo
References:
  • Eur. Phys. J. C (2023) 83:351
  • DOI:10.1140/epjc/s10052-023-11475-1
  • arXiv: 2205.13998
  • Public page: ALICE-7190
Beams: 1000822080 1000822080
Beam energies: (261196.0, 261196.0); (261196.0, 261196.0) GeV
    No run details listed

Hadronic resonances are used to probe the hadron gas produced in the late stage of heavy-ion collisions since they decay on the same timescale, of the order of 1 to 10 fm/$c$, as the decoupling time of the system. In the hadron gas, (pseudo)elastic scatterings among the products of resonances that decayed before the kinetic freeze-out and regeneration processes counteract each other, the net effect depending on the resonance lifetime, the duration of the hadronic phase, and the hadronic cross sections at play. In this context, the $\Sigma(1385)^\pm$ particle is of particular interest as models predict that regeneration dominates over rescattering despite its relatively short lifetime of about 5.5 fm/$c$. The first measurement of the $\Sigma(1385)^\pm$ resonance production at mid-rapidity in Pb-Pb collisions at $\sqrt{s_\text{NN}}= 5.02$ TeV with the ALICE detector is presented in this Letter. The resonances are reconstructed via their hadronic decay channel, $\Lambda\pi$, as a function of the transverse momentum ($p_\text{T}$) and the collision centrality. The results are discussed in comparison with the measured yield of pions and with expectations from the statistical hadronization model as well as commonly employed event generators, including Angantyr and EPOS3 coupled to the UrQMD hadronic cascade afterburner. None of the models can describe the data. For $\Sigma(1385)^\pm$, a similar behaviour as $\text{K}^\ast(892)^{0}$ is observed in data unlike the predictions of EPOS3 with afterburner.

Source code: ALICE_2022_I2088201.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Beam.hh"
  4#include "Rivet/Projections/FinalState.hh"
  5#include "Rivet/Projections/UnstableParticles.hh"
  6#include "Rivet/Projections/SingleValueProjection.hh"
  7#include "Rivet/Projections/AliceCommon.hh"
  8#include "Rivet/Tools/AliceCommon.hh"
  9#include "Rivet/Projections/HepMCHeavyIon.hh"
 10
 11namespace Rivet {
 12
 13
 14  // @brief Sigma(1385) resonance production in PbPb collisions at 5.02 TeV
 15  class ALICE_2022_I2088201 : public Analysis {
 16  public:
 17
 18    /// Constructor
 19    RIVET_DEFAULT_ANALYSIS_CTOR(ALICE_2022_I2088201);
 20
 21    /// Book histograms and initialise projections before the run
 22    void init() {
 23
 24      // Access the HepMC heavy ion info
 25      declare(HepMCHeavyIon(), "HepMC");
 26
 27      // Declare centrality projection
 28      declareCentrality(ALICE::V0MMultiplicity(), "ALICE_2015_PBPBCentrality", "V0M", "V0M");
 29
 30      // Charged, primary particles with |y| < 0.5
 31      declare(ALICE::PrimaryParticles(Cuts::absrap < 0.5 && Cuts::abscharge > 0), "APRIM");
 32
 33      // Resonances
 34      declare(UnstableParticles(Cuts::absrap<0.5), "RSN");
 35      //----------------------------------------------------------------------------------
 36
 37      //----------------------------------------------------------------------------------
 38      // Loop over all histograms
 39      for (size_t ihist = 0; ihist < NHISTOS; ++ihist) {
 40
 41        std::string nameCounterPbPb = "/TMP/counter." + std::to_string(ihist);
 42        book(_counterSOW[ihist], nameCounterPbPb); // Sum of weights counter
 43
 44        // SigmaStarPlus+cc pt spectra in PbPb (Tables 1-3 in HEPData)
 45        book(_hist_SigmaStarPlus[ihist], ihist+1, 1, 1);
 46
 47        // SigmaStarMinus+cc pt spectra in PbPb (Tables 4-6 in HEPData)
 48        book(_hist_SigmaStarMinus[ihist], ihist+4, 1, 1);
 49
 50      } // end loop
 51
 52
 53      book(_hist_cent, "/TMP/cent", refData(7, 1, 1));
 54      book(_hist_ySigmaStarPlus, "/TMP/SigmaStarPlus", refData(7, 1, 1));
 55      book(_hist_ySigmaStarMinus, "/TMP/SigmaStarMinus", refData(8, 1, 1));
 56
 57      book(_hist_integrated_yield_SigmaStarPlus, 7, 1, 1);
 58      book(_hist_integrated_yield_SigmaStarMinus, 8, 1, 1);
 59
 60      book(_hist_mean_pt_SigmaStarPlus, 9, 1, 1);
 61      book(_hist_mean_pt_SigmaStarMinus, 10, 1, 1);
 62
 63      book(_hist_integrated_yield_pion, "/TMP/integrated_yield_pion", refData( 11, 1, 1));
 64      book(_hist_integrated_yield_SigmaStar, "/TMP/integrated_yield_SigmaStar", refData( 11, 1, 1));
 65      book(_hist_integrated_SigmaStar_pion_ratio, 11, 1, 1);
 66
 67
 68    } // end init
 69
 70    /// Perform the per-event analysis
 71    void analyze(const Event& event) {
 72
 73      if (int_edges.empty()) {
 74        int_edges.push_back(_hist_integrated_yield_pion->bin(1).xMid());
 75        int_edges.push_back(_hist_integrated_yield_pion->bin(3).xMid());
 76        int_edges.push_back(_hist_integrated_yield_pion->bin(5).xMid());
 77      }
 78
 79      // Charged, primary particles in eta range of |eta| < 0.5
 80      Particles chargedParticles = apply<ALICE::PrimaryParticles>(event,"APRIM").particlesByPt();
 81
 82      // Resonances
 83      const UnstableParticles &rsn = apply<UnstableParticles>(event, "RSN");
 84
 85      const HepMCHeavyIon & hi = apply<HepMCHeavyIon>(event, "HepMC");
 86      if (!hi.ok()) {
 87        MSG_WARNING("HEPMC Heavy ion container needed for this analysis, "
 88                    "but not found for this event. Skipping.");
 89        vetoEvent;
 90      }
 91
 92      // Prepare centrality projection and value
 93      const CentralityProjection& centrProj = apply<CentralityProjection>(event, "V0M");
 94      double centr = centrProj();
 95      // Veto event for too large centralities since those are not used
 96      // in the analysis at all
 97      if ( (centr < 0.) || ((centr > 10.) && (centr < 30.)) || (centr > 90.)) vetoEvent;
 98
 99
100      // Fill histograms and add weights based on centrality value
101      size_t ihist = 0;
102      for (const auto& cent_bin : _hist_cent->bins()) {
103
104        if (cent_bin.isMasked())  continue;
105
106        const double low_edge_SigmaStarPlus = _hist_SigmaStarPlus[ihist]->xMin();
107        const double high_edge_SigmaStarPlus = _hist_SigmaStarPlus[ihist]->xMax();
108        const double low_edge_SigmaStarMinus = _hist_SigmaStarMinus[ihist]->xMin();
109        const double high_edge_SigmaStarMinus = _hist_SigmaStarMinus[ihist]->xMax();
110        const double cent_edge = cent_bin.xMid();
111
112        if (inRange(centr, cent_bin.xMin(), cent_bin.xMax())) {
113
114          _counterSOW[ihist]->fill();
115          _hist_cent->fill(cent_edge);
116
117          for (const Particle &p : rsn.particles()) {
118
119            int pid = p.abspid();
120            if (pid==3224) {
121
122              _hist_ySigmaStarPlus->fill(cent_edge);
123              _hist_integrated_yield_SigmaStar->fill(int_edges[2-ihist]);
124
125              double pT = p.pT()/GeV;
126              _hist_mean_pt_SigmaStarPlus->fill(cent_edge, pT);
127
128              if (pT > low_edge_SigmaStarPlus && pT < high_edge_SigmaStarPlus) {
129                _hist_SigmaStarPlus[ihist]->fill(pT);
130              } // condition on pT
131
132            } // is SigmaStarPlus or cc
133            else if (pid==3114) {
134
135              _hist_ySigmaStarMinus->fill(cent_edge);
136              _hist_integrated_yield_SigmaStar->fill(int_edges[2-ihist]);
137
138              const double pT = p.pT()/GeV;
139              _hist_mean_pt_SigmaStarMinus->fill(cent_edge, pT);
140
141              if ( (pT > low_edge_SigmaStarMinus) && (pT < high_edge_SigmaStarMinus)) {
142                _hist_SigmaStarMinus[ihist]->fill(pT);
143              } // condition on pT
144
145            } // is SigmaStarMinus or cc
146
147          } // end loop over resonances
148
149          for (const Particle& p : chargedParticles) {
150            if (p.abspid() == PID::PIPLUS) {
151              _hist_integrated_yield_pion->fill(int_edges[2-ihist]);
152            }
153          }
154
155        } // centrality
156        ++ihist;
157
158      } // histo loop
159
160    } // end analyze
161
162
163    /// Normalise histograms etc., after the run
164    void finalize() {
165
166      for (size_t ihist = 0; ihist < NHISTOS; ++ihist) {
167
168        if (_counterSOW[ihist]->sumW() > 0.) {
169
170          scale(_hist_SigmaStarPlus[ihist], (1. / _counterSOW[ihist]->sumW() ));
171          scale(_hist_SigmaStarMinus[ihist], (1. / _counterSOW[ihist]->sumW() ));
172
173        }
174      } // end loop
175
176      if ( _hist_cent->numEntries() > 0. ) {
177        divide(_hist_ySigmaStarPlus, _hist_cent, _hist_integrated_yield_SigmaStarPlus);
178        divide(_hist_ySigmaStarMinus, _hist_cent, _hist_integrated_yield_SigmaStarMinus);
179      }
180
181      scale( _hist_integrated_yield_SigmaStar, 0.5);
182      if ( _hist_integrated_yield_pion->numEntries() > 0. ) {
183        divide( _hist_integrated_yield_SigmaStar, _hist_integrated_yield_pion,
184          _hist_integrated_SigmaStar_pion_ratio);
185      }
186
187    } // end finalize
188
189    static const int NHISTOS = 3;
190
191    Histo1DPtr _hist_SigmaStarPlus[NHISTOS];
192    Histo1DPtr _hist_SigmaStarMinus[NHISTOS];
193    CounterPtr _counterSOW[NHISTOS];
194
195    Histo1DPtr _hist_cent;
196
197    Histo1DPtr _hist_ySigmaStarPlus;
198    Histo1DPtr _hist_ySigmaStarMinus;
199    Estimate1DPtr _hist_integrated_yield_SigmaStarPlus;
200    Estimate1DPtr _hist_integrated_yield_SigmaStarMinus;
201
202    Histo1DPtr _hist_integrated_yield_SigmaStar;
203    Histo1DPtr _hist_integrated_yield_pion;
204    Estimate1DPtr _hist_integrated_SigmaStar_pion_ratio;
205
206    Profile1DPtr _hist_mean_pt_SigmaStarPlus;
207    Profile1DPtr _hist_mean_pt_SigmaStarMinus;
208    vector<double> int_edges;
209
210  };
211
212
213  RIVET_DECLARE_PLUGIN(ALICE_2022_I2088201);
214
215}