CDF_2009_S8233977.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/FinalState.hh" 00006 #include "Rivet/Projections/ChargedFinalState.hh" 00007 #include "Rivet/Projections/TriggerCDFRun2.hh" 00008 00009 namespace Rivet { 00010 00011 00012 /// @brief CDF Run II min-bias cross-section 00013 /// @author Hendrik Hoeth 00014 /// 00015 /// Measurement of \f$ \langle p_T \rangle \f$ vs. \f$ n_\text{ch} \f$, 00016 /// the track \f$ p_T \f$ distribution, and the \f$ \sum E_T \f$ distribution. 00017 /// Particles are selected within |eta|<1 and with pT>0.4 GeV. 00018 /// There is no pT cut for the \f$ \sum E_T \f$ measurement. 00019 /// 00020 /// @par Run conditions 00021 /// 00022 /// @arg \f$ \sqrt{s} = \f$ 1960 GeV 00023 /// @arg Run with generic QCD events. 00024 /// @arg Set particles with c*tau > 10 mm stable 00025 class CDF_2009_S8233977 : public Analysis { 00026 public: 00027 00028 /// Constructor 00029 CDF_2009_S8233977() 00030 : Analysis("CDF_2009_S8233977"), 00031 _sumWeightSelected(0.0) 00032 { } 00033 00034 00035 /// @name Analysis methods 00036 //@{ 00037 00038 /// Book histograms and projections 00039 void init() { 00040 addProjection(TriggerCDFRun2(), "Trigger"); 00041 addProjection(FinalState(-1.0, 1.0, 0.0*GeV), "EtFS"); 00042 addProjection(ChargedFinalState(-1.0, 1.0, 0.4*GeV), "CFS"); 00043 00044 _hist_pt = bookHisto1D(1, 1, 1); 00045 _hist_pt_vs_multiplicity = bookProfile1D(2, 1, 1); 00046 _hist_sumEt = bookHisto1D(3, 1, 1); 00047 } 00048 00049 00050 00051 /// Do the analysis 00052 void analyze(const Event& evt) { 00053 // MinBias Trigger 00054 const bool trigger = applyProjection<TriggerCDFRun2>(evt, "Trigger").minBiasDecision(); 00055 if (!trigger) vetoEvent; 00056 00057 // Get the event weight 00058 const double weight = evt.weight(); 00059 00060 /// @todo The pT and sum(ET) distributions look slightly different from 00061 /// Niccolo's Monte Carlo plots. Still waiting for his answer. 00062 00063 const ChargedFinalState& trackfs = applyProjection<ChargedFinalState>(evt, "CFS"); 00064 const size_t numParticles = trackfs.size(); 00065 foreach (const Particle& p, trackfs.particles()) { 00066 const double pT = p.momentum().pT() / GeV; 00067 _hist_pt_vs_multiplicity->fill(numParticles, pT, weight); 00068 00069 // The weight for entries in the pT distribution should be weight/(pT*dPhi*dy). 00070 // 00071 // - dPhi = 2*PI 00072 // 00073 // - dy depends on the pT: They calculate y assuming the particle has the 00074 // pion mass and assuming that eta=1: 00075 // dy = 2 * 1/2 * ln [(sqrt(m^2 + (a+1)*pT^2) + a*pT) / (sqrt(m^2 + (a+1)*pT^2) - a*pT)] 00076 // with a = sinh(1). 00077 // 00078 // sinh(1) = 1.1752012 00079 // m(charged pion)^2 = (139.57 MeV)^2 = 0.019479785 GeV^2 00080 const double sinh1 = 1.1752012; 00081 const double apT = sinh1 * pT; 00082 const double mPi = 139.57*MeV; 00083 const double root = sqrt(mPi*mPi + (1+sinh1)*pT*pT); 00084 const double dy = std::log((root+apT)/(root-apT)); 00085 const double dphi = TWOPI; 00086 _hist_pt->fill(pT, weight/(pT*dphi*dy)); 00087 } 00088 00089 // Calc sum(Et) from calo particles 00090 const FinalState& etfs = applyProjection<FinalState>(evt, "EtFS"); 00091 double sumEt = 0.0; 00092 foreach (const Particle& p, etfs.particles()) { 00093 sumEt += p.momentum().Et(); 00094 } 00095 _hist_sumEt->fill(sumEt, weight); 00096 _sumWeightSelected += evt.weight(); 00097 } 00098 00099 00100 00101 /// Normalize histos 00102 void finalize() { 00103 scale(_hist_sumEt, crossSection()/millibarn/(4*M_PI*_sumWeightSelected)); 00104 scale(_hist_pt, crossSection()/millibarn/_sumWeightSelected); 00105 MSG_DEBUG("sumOfWeights() = " << sumOfWeights()); 00106 MSG_DEBUG("_sumWeightSelected = " << _sumWeightSelected); 00107 } 00108 00109 //@} 00110 00111 00112 private: 00113 00114 double _sumWeightSelected; 00115 Profile1DPtr _hist_pt_vs_multiplicity; 00116 Histo1DPtr _hist_pt; 00117 Histo1DPtr _hist_sumEt; 00118 00119 }; 00120 00121 00122 00123 // The hook for the plugin system 00124 DECLARE_RIVET_PLUGIN(CDF_2009_S8233977); 00125 00126 } Generated on Fri Dec 21 2012 15:03:40 for The Rivet MC analysis system by ![]() |