rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### BRAHMS_2004_I647076

Charged meson pT spectra for various rapidities in central Au--Au collisions at 200 GeV.
Experiment: BRAHMS (RHIC)
Inspire ID: 647076
Status: UNVALIDATED
Authors:
• Christian Bierlich
References:
• Phys.Rev.Lett. 94 (2005) 162301
• 10.1103/PhysRevLett.94.162301
• arXiv: nucl-ex/043050
Beams: 1000791970 1000791970
Beam energies: (19700.0, 19700.0) GeV
Run details:
• Au Au minimum bias events, only 5% most central events used in analysis.

Measurements of invariant $p_\perp$ spectra for pions and kaons in the 5% most central Au--Au collisions at $\sqrt{s_{NN}} = 200$ GeV, over a broad rapidity range $-0.1 < y < 3.5$. The paper quotes several derived quantities, like total $dN/dy$ and $\langle p_\perp \rangle$, which can be fitted from the spectra produced in this analysis.

Source code: BRAHMS_2004_I647076.cc
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/SingleValueProjection.hh" #include "Rivet/Projections/ImpactParameterProjection.hh" #include "Rivet/Projections/FinalState.hh" #include "Rivet/Projections/UnstableParticles.hh" #include "Rivet/Projections/ChargedFinalState.hh" #include "Rivet/Tools/RHICCommon.hh" namespace Rivet { /// @brief Brahms pT spectra for id particles (pi+, pi-, K+, K-) // in small bins of rapidity, 5% central collisions. // System: AuAu @ 200GeV/nn. class BRAHMS_2004_I647076 : public Analysis { public: /// Constructor DEFAULT_RIVET_ANALYSIS_CTOR(BRAHMS_2004_I647076); /// @name Analysis methods //@{ /// Book histograms and initialise projections before the run void init() { // Initialise and register projections // Centrality Projection. declareCentrality(BRAHMSCentrality(), "BRAHMS_2004_AUAUCentrality","mult","BCEN"); // TODO: Feed down correction is unclear. declare(FinalState(Cuts::rap < 4 && Cuts::rap > -0.1 && Cuts::pT > 100*MeV), "FS"); // The measured rapidity intervals for pions. rapIntervalsPi = {{-0.1,0.},{0.,0.1},{0.4,0.6},{0.6,0.8},{0.8,1.0}, {1.0,1.2},{1.2,1.4},{2.1,2.3},{2.4,2.6},{3.0,3.1},{3.1,3.2},{3.2,3.3}, {3.3,3.4},{3.4,3.66}}; // The measured rapidity intervals for kaons. rapIntervalsK = {{-0.1,0.},{0.,0.1},{0.4,0.6},{0.6,0.8},{0.8,1.0}, {1.0,1.2},{2.0,2.2},{2.3,2.5},{2.9,3.0},{3.0,3.1},{3.1,3.2},{3.2,3.4}}; // Book histograms piPlus.resize(rapIntervalsPi.size()); piMinus.resize(rapIntervalsPi.size()); for (int i = 0, N = rapIntervalsPi.size(); i < N; ++i) { book(piPlus[i], 1, 1, 1 + i); book(piMinus[i], 1, 1, 15 + i); } kPlus.resize(rapIntervalsK.size()); kMinus.resize(rapIntervalsK.size()); for (int i = 0, N = rapIntervalsK.size(); i < N; ++i) { book(kPlus[i], 2, 1, 1 + i); book(kMinus[i], 2, 1, 13 + i); } // Counter for accepted sum of weights (centrality cut). book(centSow, "centSow"); } /// Perform the per-event analysis void analyze(const Event& event) { // Reject all non-central events. The paper does not speak of // any other event trigger, which in any case should matter // little for central events. if(apply(event,"BCEN")() > 5.0) return; // Keep track of sum of weights. centSow->fill(); const FinalState& fs = apply(event,"FS"); // Loop over particles. for (const auto& p : fs.particles()) { const double y = p.rapidity(); const double pT = p.pT(); const int id = p.pid(); // First pions. if (abs(id) == 211) { // Protect against decaying K0S and Lambda if (p.hasAncestor(310) || p.hasAncestor(-310) || p.hasAncestor(3122) || p.hasAncestor(3122)) continue; for (int i = 0, N = rapIntervalsPi.size(); i < N; ++i) { if (y > rapIntervalsPi[i].first && y <= rapIntervalsPi[i].second) { const double dy = rapIntervalsPi[i].second - rapIntervalsPi[i].first; const double nWeight = 1.0 / ( 2.*M_PI*pT*dy); if (id == 211) piPlus[i]->fill(pT, nWeight); else piMinus[i]->fill(pT, nWeight); break; } } } // Then kaons. else if (abs(id) == 321) { for (int i = 0, N = rapIntervalsK.size(); i < N; ++i) { if (y > rapIntervalsK[i].first && y <= rapIntervalsK[i].second) { const double dy = rapIntervalsK[i].second - rapIntervalsK[i].first; const double nWeight = 1.0 / ( 2.*M_PI*pT*dy); if (id == 321) kPlus[i]->fill(pT, nWeight); else kMinus[i]->fill(pT, nWeight); break; } } } } } /// Normalise histograms etc., after the run void finalize() { // Normalize all histograms to per-event yields. for (int i = 0, N = rapIntervalsPi.size(); i < N; ++i) { piPlus[i]->scaleW(1./centSow->sumW()); piMinus[i]->scaleW(1./centSow->sumW()); } for (int i = 0, N = rapIntervalsK.size(); i < N; ++i) { kPlus[i]->scaleW(1./centSow->sumW()); kMinus[i]->scaleW(1./centSow->sumW()); } } //@} // The rapidity intervals. vector > rapIntervalsPi; vector > rapIntervalsK; /// @name Histograms //@{ vector piPlus; vector piMinus; vector kPlus; vector kMinus; CounterPtr centSow; //@} }; // The hook for the plugin system DECLARE_RIVET_PLUGIN(BRAHMS_2004_I647076); }