WFinder.hh

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #ifndef RIVET_WFinder_HH
00003 #define RIVET_WFinder_HH
00004 
00005 #include "Rivet/Tools/Logging.hh"
00006 #include "Rivet/Rivet.hh"
00007 #include "Rivet/Particle.hh"
00008 #include "Rivet/Event.hh"
00009 #include "Rivet/Projection.hh"
00010 #include "Rivet/Projections/ChargedFinalState.hh"
00011 
00012 namespace Rivet {
00013 
00014 
00015   /// Chain together different projections as convenience for finding W's
00016   /// from two leptons in the final state
00017   class WFinder : public FinalState {
00018   public:
00019  
00020     /// @name Constructors
00021     //@{
00022 
00023     /// Constructor taking a FinalState and type of the charged lepton, mass window,
00024     /// and maximum dR of photons around the charged lepton to take into account for W
00025     /// reconstruction.
00026     WFinder(const ChargedFinalState& fs_l,
00027             PdgId pid,
00028             double m2_min, double m2_max,
00029             double missingET,
00030             double dRmax);
00031 
00032 
00033     /// Constructor taking single eta/pT bounds and type of the charged lepton, mass
00034     /// window, and maximum dR of photons around the charged lepton to take into account
00035     /// for W reconstruction.
00036     WFinder(double etaMin, double etaMax,
00037             double pTmin,
00038             PdgId pid,
00039             double m2_min, double m2_max,
00040             double missingET,
00041             double dRmax);
00042 
00043 
00044     /// Constructor taking multiple eta/pT bounds and type of the charged lepton, mass
00045     /// window, and maximum dR of photons around the charged lepton to take into account
00046     /// for W reconstruction.
00047     WFinder(const std::vector<std::pair<double, double> >& etaRanges,
00048             double pTmin,
00049             PdgId pid,
00050             double m2_min, const double m2_max,
00051             double missingET,
00052             double dRmax);
00053 
00054 
00055     /// Clone on the heap.
00056     virtual const Projection* clone() const {
00057       return new WFinder(*this);
00058     }
00059     //@}
00060 
00061 
00062     /// Access to the remaining particles, after the W and clustered photons
00063     /// have been removed from the full final state
00064     /// (e.g. for running a jet finder on it)
00065     const FinalState& remainingFinalState() const;
00066 
00067     /// Access to the W constituent leptons and photons
00068     const FinalState& constituentsFinalState() const;
00069 
00070     /// Access to the W constituent leptons
00071     const FinalState& constituentLeptonsFinalState() const;
00072 
00073 
00074   protected:
00075  
00076     /// Apply the projection on the supplied event.
00077     void project(const Event& e);
00078  
00079     /// Compare projections.
00080     int compare(const Projection& p) const;
00081 
00082 
00083   public:
00084 
00085     /// Clear the projection
00086     void clear();
00087 
00088 
00089   private:
00090 
00091     /// Common implementation of constructor operation, taking FS params.
00092     void _init(const std::vector<std::pair<double, double> >& etaRanges,
00093                double pTmin,  PdgId pid,
00094                double m2_min, double m2_max,
00095                double missingET,
00096                double dRmax);
00097 
00098     /// Common implementation of constructor operation, taking FS.
00099     void _init(const ChargedFinalState& fs_l,
00100                PdgId pid,
00101                double m2_min, double m2_max,
00102                double missingET,
00103                double dRmax);
00104 
00105 
00106   private:
00107 
00108     // Mass range
00109     double _m2_min, _m2_max;
00110 
00111     // Missing ET cut
00112     double _etMiss;
00113 
00114   };
00115 
00116 
00117 }
00118 
00119 
00120 #endif