HepEx9506012.hh

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #ifndef RIVET_HepEx9506012_HH
00003 #define RIVET_HepEx9506012_HH
00004 
00005 #include "Rivet/Analysis.hh"
00006 #include "Rivet/Projections/FinalStateHCM.hh"
00007 #include "Rivet/Projections/CentralEtHCM.hh"
00008 #include "Rivet/RivetAIDA.fhh"
00009 
00010 
00011 namespace Rivet {
00012 
00013   /// This analysis measures energy flow in DIS?
00014   class HepEx9506012 : public Analysis {
00015 
00016   public:
00017 
00018     /// The default constructor.
00019     inline HepEx9506012()
00020       : _beamsproj(), 
00021         _leptonproj(_beamsproj, _fsproj, ELECTRON, POSITRON), 
00022         _diskinproj(_beamsproj, _leptonproj, PROTON),
00023         _fshcmproj(_leptonproj, _diskinproj, _fsproj), 
00024         _y1hcmproj(_fshcmproj)
00025     { 
00026       setBeams(ELECTRON, PROTON);
00027       addProjection(_beamsproj);
00028       addProjection(_leptonproj);
00029       addProjection(_diskinproj);
00030       addProjection(_fshcmproj);
00031       addProjection(_y1hcmproj);
00032       addCut("x", MORE_EQ, _xmin);
00033       addCut("x", LESS_EQ, _xmax);
00034     }
00035 
00036   public:
00037 
00038     /// Factory method
00039     static Analysis* create() { return new HepEx9506012(); }
00040 
00041     /// Get the name of this analysis.
00042     inline string getName() const {
00043       return "HepEx9506012";
00044     }
00045     
00046     /// Initialize this analysis object.
00047     void init();
00048     
00049     /// Analyze one event.
00050     void analyze(const Event& event);
00051     
00052     /// Finalize this analysis object.
00053     void finalize();
00054     
00055   protected:
00056 
00057     /// Calculate the bin number from the DISKinematics projection.
00058     int getbin(const DISKinematics& dk);
00059 
00060 
00061   private:
00062     
00063     /// The Beam projector used.
00064     Beam _beamsproj;
00065     
00066     /// The DISLepton projector used.
00067     DISLepton _leptonproj;
00068     
00069     /// The DISKinematics projector used.
00070     DISKinematics _diskinproj;
00071     
00072     /// The FinalState projector used.
00073     FinalState _fsproj;
00074     
00075     /// The FinalStateHCM projector used.
00076     FinalStateHCM _fshcmproj;
00077     
00078     /// The CentralEtHCM projector used.
00079     CentralEtHCM _y1hcmproj;
00080     
00081     /// Some integer constants used.
00082     static const int _nb = 24, _nbin = 9;
00083     
00084     /// Some double constants used.
00085     static const double _xmin, _xmax;
00086 
00087     /// Histograms for the \f$ E_T \f$ flows
00088     vector<AIDA::IHistogram1D*> _hEtFlow, _hEtFlowStat;
00089 
00090     /// Histograms for averages in different kinematical bins.
00091     AIDA::IHistogram1D *_hAvEt, *_hAvX, *_hAvQ2, *_hN;
00092 
00093     /// Helper vector;
00094     vector<double> _nev;
00095 
00096   private:
00097 
00098     /// Hidden assignment operator.
00099     HepEx9506012& operator=(const HepEx9506012&);
00100 
00101   };
00102 
00103 }
00104 
00105 #endif