ZFinder.hh

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #ifndef RIVET_ZFinder_HH
00003 #define RIVET_ZFinder_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/FinalState.hh"
00011 
00012 namespace Rivet {
00013 
00014 
00015   /// @brief Convenience finder of leptonically decaying Zs
00016   ///
00017   /// Chain together different projections as convenience for finding Z's
00018   /// from two leptons in the final state, including photon clustering.
00019   class ZFinder : public FinalState {
00020 
00021   public:
00022 
00023     /// @name Constructors
00024     //@{
00025 
00026     /// Constructor taking a FinalState and type of the leptons, mass window,
00027     /// and maximum dR of photons around leptons to take into account for Z
00028     /// reconstruction.
00029     ZFinder(const FinalState& fs,
00030             PdgId pid,
00031             double m2_min, double m2_max,
00032             double dRmax);
00033 
00034 
00035     /// Constructor taking single eta/pT bounds and type of the leptons, mass
00036     /// window, and maximum dR of photons around leptons to take into account
00037     /// for Z reconstruction.
00038     ZFinder(double etaMin, double etaMax,
00039             double pTmin,
00040             PdgId pid,
00041             double m2_min, double m2_max,
00042             double dRmax);
00043 
00044 
00045     /// Constructor taking multiple eta/pT bounds and type of the leptons, mass
00046     /// window, and maximum dR of photons around leptons to take into account
00047     /// for Z reconstruction.
00048     ZFinder(const std::vector<std::pair<double, double> >& etaRanges,
00049             double pTmin,
00050             PdgId pid,
00051             double m2_min, const double m2_max,
00052             double dRmax);
00053 
00054 
00055     /// Clone on the heap.
00056     virtual const Projection* clone() const {
00057       return new ZFinder(*this);
00058     }
00059     //@}
00060 
00061 
00062     /// Access to the remaining particles, after the Z 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 Z constituent leptons final state
00068     /// (e.g. for more fine-grained cuts on the leptons)
00069     const FinalState& constituentsFinalState() const;
00070 
00071     /// Access to the photons which have been clustered to the leptons
00072     const FinalState& clusteredPhotonsFinalState() const;
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   private:
00084     /// Common implementation of constructor operation, taking FS params.
00085     void _init(const std::vector<std::pair<double, double> >& etaRanges,
00086                double pTmin,  PdgId pid,
00087                double m2_min, double m2_max,
00088                double dRmax);
00089 
00090     /// Common implementation of constructor operation, taking FS.
00091     void _init(const FinalState& fs,
00092                PdgId pid,
00093                double m2_min, double m2_max,
00094                double dRmax);
00095 
00096   };
00097 
00098 
00099 }
00100 
00101 
00102 #endif