CDF_2002_S4796047.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/Beam.hh" 00006 #include "Rivet/Projections/ChargedFinalState.hh" 00007 #include "Rivet/Projections/TriggerCDFRun0Run1.hh" 00008 00009 namespace Rivet { 00010 00011 00012 /// @brief CDF Run I charged multiplicity measurement 00013 /// @author Hendrik Hoeth 00014 /// 00015 /// This analysis measures the charged multiplicity distribution 00016 /// in minimum bias events at two different center-of-mass energies: 00017 /// \f$ \sqrt{s} = \f$ 630 and 1800 GeV. 00018 /// 00019 /// Particles with c*tau > 10 mm are considered stable, i.e. they 00020 /// are reconstructed and their decay products removed. Selection 00021 /// cuts are |eta|<1 and pT>0.4 GeV. 00022 /// 00023 /// @par Run conditions 00024 /// 00025 /// @arg Two different beam energies: \f$ \sqrt{s} = \$f 630 & 1800 GeV 00026 /// @arg Run with generic QCD events. 00027 /// @arg Set particles with c*tau > 10 mm stable 00028 class CDF_2002_S4796047 : public Analysis { 00029 public: 00030 00031 /// Constructor 00032 CDF_2002_S4796047() 00033 : Analysis("CDF_2002_S4796047") 00034 { 00035 _sumWTrig = 0; 00036 } 00037 00038 00039 /// @name Analysis methods 00040 //@{ 00041 00042 /// Book projections and histograms 00043 void init() { 00044 addProjection(TriggerCDFRun0Run1(), "Trigger"); 00045 const ChargedFinalState cfs(-1.0, 1.0, 0.4*GeV); 00046 addProjection(cfs, "FS"); 00047 00048 // Histos 00049 if (fuzzyEquals(sqrtS()/GeV, 630)) { 00050 _hist_multiplicity = bookHisto1D(1, 1, 1); 00051 _hist_pt_vs_multiplicity = bookProfile1D(3, 1, 1); 00052 } else if (fuzzyEquals(sqrtS()/GeV, 1800)) { 00053 _hist_multiplicity = bookHisto1D(2, 1, 1); 00054 _hist_pt_vs_multiplicity = bookProfile1D(4, 1, 1); 00055 } 00056 } 00057 00058 00059 /// Do the analysis 00060 void analyze(const Event& evt) { 00061 // Trigger 00062 const bool trigger = applyProjection<TriggerCDFRun0Run1>(evt, "Trigger").minBiasDecision(); 00063 if (!trigger) vetoEvent; 00064 const double weight = evt.weight(); 00065 _sumWTrig += weight; 00066 00067 // Get beam energy and tracks 00068 const ChargedFinalState& fs = applyProjection<ChargedFinalState>(evt, "FS"); 00069 const size_t numParticles = fs.particles().size(); 00070 00071 // Fill histos of charged multiplicity distributions 00072 _hist_multiplicity->fill(numParticles, weight); 00073 00074 // Fill histos for <pT> vs. charged multiplicity 00075 foreach (const Particle& p, fs.particles()) { 00076 const double pT = p.momentum().pT(); 00077 _hist_pt_vs_multiplicity->fill(numParticles, pT/GeV, weight); 00078 } 00079 00080 } 00081 00082 00083 void finalize() { 00084 // This normalisation is NOT a cross-section. 00085 // In the paper the x-axes (!) of the histograms are 00086 // scaled such that they can put both energies in the 00087 // same plot. Of course this affects the area, too. 00088 // Since we want to plot the actual multiplicity, we 00089 // scale the x-axes back and have to adjust the areas 00090 // accordingly. The scale factors are given in the 00091 // legend of the plot in the paper. Have a look at 00092 // figure 1 and everything immediately becomes clear. 00093 // DON'T TRY TO REPAIR THIS, YOU WILL BREAK IT. 00094 if (fuzzyEquals(sqrtS()/GeV, 630)) { 00095 normalize(_hist_multiplicity, 3.21167); // fixed norm OK 00096 } else if (fuzzyEquals(sqrtS()/GeV, 1800)) { 00097 normalize(_hist_multiplicity, 4.19121); // fixed norm OK 00098 } 00099 } 00100 00101 //@} 00102 00103 00104 private: 00105 00106 /// @name Counter 00107 //@{ 00108 double _sumWTrig; 00109 //@} 00110 00111 /// @name Histos 00112 //@{ 00113 Histo1DPtr _hist_multiplicity; 00114 Profile1DPtr _hist_pt_vs_multiplicity; 00115 //@} 00116 00117 }; 00118 00119 00120 00121 // The hook for the plugin system 00122 DECLARE_RIVET_PLUGIN(CDF_2002_S4796047); 00123 00124 } Generated on Fri Dec 21 2012 15:03:39 for The Rivet MC analysis system by ![]() |