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 #include "Rivet/Projections/LeptonClusters.hh" 00012 00013 namespace Rivet { 00014 00015 00016 /// @brief Convenience finder of leptonically decaying Zs 00017 /// 00018 /// Chain together different projections as convenience for finding Z's 00019 /// from two leptons in the final state, including photon clustering. 00020 class ZFinder : public FinalState { 00021 00022 public: 00023 00024 /// @name Constructors 00025 //@{ 00026 00027 /// Constructor taking single eta/pT bounds 00028 /// @param inputfs Input final state 00029 /// @param etaMin,etaMax,pTmin lepton cuts 00030 /// @param pid type of the leptons 00031 /// @param minmass,maxmass mass window 00032 /// @param dRmax maximum dR of photons around leptons to take into account 00033 /// for Z reconstruction (only relevant if one of the following are true) 00034 /// @param clusterPhotons whether such photons are supposed to be 00035 /// clustered to the lepton objects and thus Z mom 00036 /// @param trackPhotons whether such photons should be added to _theParticles 00037 /// (cf. _trackPhotons) 00038 ZFinder(const FinalState& inputfs, 00039 double etaMin, double etaMax, 00040 double pTmin, 00041 PdgId pid, 00042 double minmass, double maxmass, 00043 double dRmax, bool clusterPhotons, bool trackPhotons, 00044 double masstarget=91.2*GeV); 00045 00046 00047 /// Constructor taking multiple eta/pT bounds 00048 /// @param inputfs Input final state 00049 /// @param etaRanges,pTmin lepton cuts 00050 /// @param pid type of the leptons 00051 /// @param minmass,maxmass mass window 00052 /// @param dRmax maximum dR of photons around leptons to take into account 00053 /// for Z reconstruction (only relevant if one of the following are true) 00054 /// @param clusterPhotons whether such photons are supposed to be 00055 /// clustered to the lepton objects and thus Z mom 00056 /// @param trackPhotons whether such photons should be added to _theParticles 00057 /// (cf. _trackPhotons) 00058 ZFinder(const FinalState& inputfs, 00059 const std::vector<std::pair<double, double> >& etaRanges, 00060 double pTmin, 00061 PdgId pid, 00062 double minmass, const double maxmass, 00063 double dRmax, bool clusterPhotons, bool trackPhotons, 00064 double masstarget=91.2*GeV); 00065 00066 00067 /// @deprecated Constructors without inputfs -- only for backwards compatibility 00068 ZFinder(double, double, double, PdgId, double, double, double, 00069 bool, bool, double masstarget=91.2*GeV); 00070 /// @deprecated Constructors without inputfs -- only for backwards compatibility 00071 ZFinder(const std::vector<std::pair<double, double> >&, double, PdgId, 00072 double, double, double, bool, bool, double masstarget=91.2*GeV); 00073 00074 00075 /// Clone on the heap. 00076 virtual const Projection* clone() const { 00077 return new ZFinder(*this); 00078 } 00079 //@} 00080 00081 00082 /// Access to the found bosons (currently either 0 or 1) 00083 const Particles& bosons() const { return _bosons; } 00084 00085 /// Access to the Z constituent clustered leptons 00086 /// (e.g. for more fine-grained cuts on the clustered leptons) 00087 /// The order is going to be: positive charge constituent 1st, negative 2nd 00088 const vector<Particle>& constituents() const { return _constituents; } 00089 00090 /// Access to the remaining particles, after the Z and clustered photons 00091 /// have been removed from the full final state 00092 /// (e.g. for running a jet finder on it) 00093 const FinalState& remainingFinalState() const; 00094 00095 00096 protected: 00097 00098 /// Apply the projection on the supplied event. 00099 void project(const Event& e); 00100 00101 /// Compare projections. 00102 int compare(const Projection& p) const; 00103 00104 00105 public: 00106 00107 /// Clear the projection 00108 void clear() { 00109 _theParticles.clear(); 00110 _bosons.clear(); 00111 _constituents.clear(); 00112 } 00113 00114 00115 private: 00116 /// Common implementation of constructor operation, taking FS params. 00117 void _init(const FinalState& inputfs, 00118 const std::vector<std::pair<double, double> >& etaRanges, 00119 double pTmin, PdgId pid, 00120 double minmass, double maxmass, 00121 double dRmax, bool clusterPhotons, bool trackPhotons, 00122 double masstarget); 00123 00124 /// Mass cuts to apply to clustered leptons (cf. InvMassFinalState) 00125 double _minmass, _maxmass, _masstarget; 00126 00127 /// Switch for tracking of photons (whether to add them to _theParticles) 00128 /// This is relevant when the ZFinder::_theParticles are to be excluded 00129 /// from e.g. the input to a jet finder, to specify whether the clustered 00130 /// photons are to be excluded as well. 00131 /// (Yes, some experiments make a difference between clusterPhotons and 00132 /// trackPhotons!) 00133 bool _trackPhotons; 00134 00135 /// Lepton flavour 00136 PdgId _pid; 00137 00138 /// list of found bosons (currently either 0 or 1) 00139 Particles _bosons; 00140 00141 /// Clustered leptons 00142 vector<Particle> _constituents; 00143 00144 }; 00145 00146 00147 } 00148 00149 00150 00151 #endif Generated on Fri Oct 25 2013 12:41:48 for The Rivet MC analysis system by ![]() |