Rivet
1.8.0
|
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 00020 class ZFinder : public FinalState { 00021 00022 public: 00023 00025 00026 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 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 00068 ZFinder(double, double, double, PdgId, double, double, double, 00069 bool, bool, double masstarget=91.2*GeV); 00071 ZFinder(const std::vector<std::pair<double, double> >&, double, PdgId, 00072 double, double, double, bool, bool, double masstarget=91.2*GeV); 00073 00074 00076 virtual const Projection* clone() const { 00077 return new ZFinder(*this); 00078 } 00080 00081 00083 const ParticleVector& bosons() const { return _bosons; } 00084 00087 const vector<Particle>& constituents() const { return _constituents; } 00088 00092 const FinalState& remainingFinalState() const; 00093 00094 00095 protected: 00096 00098 void project(const Event& e); 00099 00101 int compare(const Projection& p) const; 00102 00103 00104 public: 00105 00107 void clear() { 00108 _theParticles.clear(); 00109 _bosons.clear(); 00110 _constituents.clear(); 00111 } 00112 00113 00114 private: 00116 void _init(const FinalState& inputfs, 00117 const std::vector<std::pair<double, double> >& etaRanges, 00118 double pTmin, PdgId pid, 00119 double minmass, double maxmass, 00120 double dRmax, bool clusterPhotons, bool trackPhotons, 00121 double masstarget); 00122 00124 double _minmass, _maxmass, _masstarget; 00125 00132 bool _trackPhotons; 00133 00135 PdgId _pid; 00136 00138 ParticleVector _bosons; 00139 00141 vector<Particle> _constituents; 00142 00143 }; 00144 00145 00146 } 00147 00148 00149 00150 #endif