rivet is hosted by Hepforge, IPPP Durham
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 }