rivet is hosted by Hepforge, IPPP Durham
ATLAS_2014_I1288706.cc
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include "Rivet/Analysis.hh"
00003 #include "Rivet/Projections/FinalState.hh" 
00004 #include "Rivet/Projections/ZFinder.hh"
00005 #include "Rivet/Particle.fhh"
00006 
00007 namespace Rivet {
00008 
00009 
00010   class ATLAS_2014_I1288706 : public Analysis {
00011   public:
00012 
00013     /// Constructor
00014     ATLAS_2014_I1288706()
00015       : Analysis("ATLAS_2014_I1288706")
00016     {   
00017        _sumw_ext_mu_dressed = 0; 
00018        _sumw_mu_dressed     = 0;
00019        _sumw_el_dressed     = 0;     
00020      }
00021 
00022 
00023   public:
00024 
00025     /// @name Analysis methods
00026     //@{
00027 
00028     /// Book histograms and initialise projections before the run
00029     void init() {
00030 
00031        // Set up projections
00032        FinalState fs;
00033 
00034        ZFinder zfinder_ext_dressed_mu(fs, Cuts::abseta<2.4 && Cuts::pT>6.0*GeV, PID::MUON, 12.0*GeV, 66.0*GeV, 0.1);
00035        addProjection(zfinder_ext_dressed_mu, "ZFinder_ext_dressed_mu");       
00036        
00037        ZFinder zfinder_dressed_mu(fs, Cuts::abseta<2.4 && Cuts::pT>12*GeV, PID::MUON, 26.0*GeV, 66.0*GeV, 0.1);
00038        addProjection(zfinder_dressed_mu, "ZFinder_dressed_mu"); 
00039         
00040        ZFinder zfinder_dressed_el(fs, Cuts::abseta<2.4 && Cuts::pT>12*GeV, PID::ELECTRON, 26.0*GeV, 66.0*GeV, 0.1);
00041        addProjection(zfinder_dressed_el, "ZFinder_dressed_el");   
00042        
00043        _hist_ext_mu_dressed = bookHisto1D(1, 1, 1); // muon, dressed level, extended phase space
00044        _hist_mu_dressed     = bookHisto1D(2, 1, 1); // muon, dressed level, nominal phase space
00045        _hist_el_dressed     = bookHisto1D(2, 1, 2); // electron, dressed level, nominal phase space
00046     }
00047 
00048 
00049     /// Perform the per-event analysis
00050     void analyze(const Event& event) {
00051       const double weight = event.weight();
00052       const ZFinder& zfinder_ext_dressed_mu = applyProjection<ZFinder>(event, "ZFinder_ext_dressed_mu");
00053       const ZFinder& zfinder_dressed_mu     = applyProjection<ZFinder>(event, "ZFinder_dressed_mu"    );       
00054       const ZFinder& zfinder_dressed_el     = applyProjection<ZFinder>(event, "ZFinder_dressed_el"    ); 
00055       
00056       FillPlots(zfinder_ext_dressed_mu, _hist_ext_mu_dressed, 9.0, weight);
00057       FillPlots(zfinder_dressed_mu,     _hist_mu_dressed,    15.0, weight);      
00058       FillPlots(zfinder_dressed_el,     _hist_el_dressed,    15.0, weight);   
00059     }
00060     
00061     
00062     void FillPlots(const ZFinder& zfinder, Histo1DPtr hist, double leading_pT, double weight) {
00063 
00064       if(zfinder.bosons().size() != 1) return;
00065 
00066       const FourMomentum el1 = zfinder.particles()[0].momentum();
00067       const FourMomentum el2 = zfinder.particles()[1].momentum();
00068 
00069       if (el1.pT() > leading_pT*GeV || el2.pT() > leading_pT*GeV) {
00070         double mass = zfinder.bosons()[0].mass()/GeV;
00071         hist->fill(mass, weight);
00072       }    
00073     }
00074 
00075 
00076     /// Normalise histograms etc., after the run
00077     void finalize() {
00078 
00079       scale(_hist_ext_mu_dressed, crossSection()/sumOfWeights());
00080       scale(_hist_mu_dressed,     crossSection()/sumOfWeights());      
00081       scale(_hist_el_dressed,     crossSection()/sumOfWeights());
00082   
00083     }
00084 
00085     //@}
00086 
00087 
00088   private:
00089 
00090     // Data members like post-cuts event weight counters go here
00091      double _sumw_ext_mu_dressed;
00092      double _sumw_mu_dressed;  
00093      double _sumw_el_dressed; 
00094 
00095   private:
00096 
00097     /// @name Histograms
00098     //@{
00099     Histo1DPtr _hist_ext_mu_dressed;
00100     Histo1DPtr _hist_mu_dressed;    
00101     Histo1DPtr _hist_el_dressed;    
00102     //@}
00103 
00104   };
00105 
00106 
00107 
00108   // The hook for the plugin system
00109   DECLARE_RIVET_PLUGIN(ATLAS_2014_I1288706);
00110 
00111 }