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