SFM_1984_S1178091.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/RivetYODA.hh" 00004 #include "Rivet/Tools/Logging.hh" 00005 #include "Rivet/Projections/ChargedFinalState.hh" 00006 00007 namespace Rivet { 00008 00009 00010 /// @brief SFM charged multiplicities in NSD and inelastic minbias events 00011 class SFM_1984_S1178091 : public Analysis { 00012 public: 00013 00014 /// Constructor 00015 SFM_1984_S1178091() : Analysis("SFM_1984_S1178091") { 00016 _sumW = 0; 00017 _sumWDiff = 0; 00018 } 00019 00020 00021 /// @name Analysis methods 00022 //@{ 00023 00024 void init() { 00025 // Projections 00026 /// @todo Corrected to full phase space? 00027 addProjection(ChargedFinalState(), "FS"); 00028 00029 // Histograms 00030 if (fuzzyEquals(sqrtS()/GeV, 30.4, 1E-1)) { 00031 _hist_multiplicity_inel = bookHisto1D(1, 1, 1); 00032 _hist_multiplicity_nsd = bookHisto1D(2, 1, 1); 00033 } else if (fuzzyEquals(sqrtS(), 44.5, 1E-1)) { 00034 _hist_multiplicity_inel = bookHisto1D(1, 1, 2); 00035 _hist_multiplicity_nsd = bookHisto1D(2, 1, 2); 00036 } else if (fuzzyEquals(sqrtS(), 52.2, 1E-1)) { 00037 _hist_multiplicity_inel = bookHisto1D(1, 1, 3); 00038 _hist_multiplicity_nsd = bookHisto1D(2, 1, 3); 00039 } else if (fuzzyEquals(sqrtS(), 62.2, 1E-1)) { 00040 _hist_multiplicity_inel = bookHisto1D(1, 1, 4); 00041 _hist_multiplicity_nsd = bookHisto1D(2, 1, 4); 00042 } 00043 00044 } 00045 00046 00047 // Analyse each event 00048 void analyze(const Event& event) { 00049 const double weight = event.weight(); 00050 const ChargedFinalState& fs = applyProjection<ChargedFinalState>(event, "FS"); 00051 const size_t numParticles = fs.particles().size(); 00052 00053 /// @todo Any trigger? 00054 00055 // Decide whether event is of diffractive type or not 00056 // @todo It is not so clear in the paper how this distinction is made. 00057 // They seem to require either exactly one particle with Feynman x larger 00058 // than 0.8 to call an event diffractive or that there are no tracks 00059 // reconstructed in either of the two hemispheres. For the latter 00060 // they require in addition also the number of charged particles 00061 // to be smaller than 8. 00062 int n_left(0), n_right(0), n_large_x(0); 00063 foreach (const Particle& p, fs.particles()) { 00064 // Calculate the particles' Feynman x 00065 const double x_feyn = 2.0 * fabs(p.momentum().pz())/sqrtS(); 00066 if (x_feyn > 0.8 ) n_large_x += 1; 00067 00068 // Pseudorapidity 00069 const double eta = p.momentum().pseudorapidity(); 00070 if (eta > 0.0) n_right += 1; 00071 else if (eta < 0.0) n_left += 1; 00072 } 00073 MSG_DEBUG("N_left: " << n_left << ", " 00074 << "N_right: " << n_right << ", " 00075 << "N_large_x: " << n_large_x); 00076 00077 // Not sure about the "=="! 00078 // @todo Not sure about the "== 1", the paper says no charged particle 00079 // that was reconstructed so the incoming protons must run down the beam 00080 // pipe. Since we look a the complete final state here no particle being 00081 // reconstructed should be equal to one particle (proton) in each 00082 // hemisphere. The "< 8" is also not certain. 00083 const bool isDiffractive = (n_large_x == 1) || 00084 ((n_left == 1 || n_right == 1) && numParticles < 8 ); 00085 00086 // Increment weight counters 00087 _sumW += weight; 00088 _sumWDiff += weight; 00089 00090 // Fill histos of charged multiplicity distributions 00091 _hist_multiplicity_inel->fill(numParticles, weight); 00092 if (!isDiffractive) _hist_multiplicity_nsd->fill(numParticles, weight); 00093 } 00094 00095 00096 void finalize() { 00097 scale(_hist_multiplicity_inel, 1.0/_sumWDiff); 00098 scale(_hist_multiplicity_nsd, 1.0/_sumW ); 00099 } 00100 00101 //@} 00102 00103 00104 private: 00105 00106 /// @name Weight counters 00107 //@{ 00108 double _sumW, _sumWDiff; 00109 //@} 00110 00111 /// @name Histograms 00112 //@{ 00113 Histo1DPtr _hist_multiplicity_inel; 00114 Histo1DPtr _hist_multiplicity_nsd; 00115 //@} 00116 00117 }; 00118 00119 00120 00121 // The hook for the plugin system 00122 DECLARE_RIVET_PLUGIN(SFM_1984_S1178091); 00123 00124 } Generated on Fri Dec 21 2012 15:03:42 for The Rivet MC analysis system by ![]() |