Rivet
1.8.0
|
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 #include "Rivet/Projections/LeptonClusters.hh" 00012 00013 namespace Rivet { 00014 00015 00020 class WFinder : public FinalState { 00021 public: 00022 00024 00025 00039 WFinder(const FinalState& inputfs, 00040 double etaMin, double etaMax, 00041 double pTmin, 00042 PdgId pid, 00043 double minmass, double maxmass, 00044 double missingET, 00045 double dRmax, bool clusterPhotons=true, bool trackPhotons=false, 00046 double masstarget=80.4, 00047 bool useTransverseMass=false); 00048 00049 00063 WFinder(const FinalState& inputfs, 00064 const std::vector<std::pair<double, double> >& etaRanges, 00065 double pTmin, 00066 PdgId pid, 00067 double minmass, const double maxmass, 00068 double missingET, 00069 double dRmax, bool clusterPhotons=true, bool trackPhotons=false, 00070 double masstarget=80.4, 00071 bool useTransverseMass=false); 00072 00073 00075 WFinder(double, double, double, PdgId, double, double, double, double, 00076 bool clusterPhotons=true, bool trackPhotons=false, 00077 double masstarget=80.4, bool useTransverseMass=false); 00079 WFinder(const std::vector<std::pair<double, double> >&, double, 00080 PdgId, double, double, double, double, 00081 bool clusterPhotons=true, bool trackPhotons=false, 00082 double masstarget=80.4, bool useTransverseMass=false); 00083 00085 virtual const Projection* clone() const { 00086 return new WFinder(*this); 00087 } 00089 00090 00092 const ParticleVector& bosons() const { return _bosons; } 00093 00096 const vector<Particle>& constituentLeptons() const { return _constituentLeptons; } 00097 00100 const vector<Particle>& constituentNeutrinos() const { return _constituentNeutrinos; } 00101 00105 const FinalState& remainingFinalState() const; 00106 00107 protected: 00108 00110 void project(const Event& e); 00111 00113 int compare(const Projection& p) const; 00114 00115 00116 public: 00117 00119 void clear() { 00120 _theParticles.clear(); 00121 _bosons.clear(); 00122 _constituentLeptons.clear(); 00123 _constituentNeutrinos.clear(); 00124 } 00125 00126 00127 private: 00128 00130 void _init(const FinalState& inputfs, 00131 const std::vector<std::pair<double, double> >& etaRanges, 00132 double pTmin, PdgId pid, 00133 double minmass, double maxmass, 00134 double missingET, 00135 double dRmax, bool clusterPhotons, bool trackPhotons, 00136 double masstarget, 00137 bool useTransverseMass); 00138 00139 00140 private: 00141 00143 double _minmass, _maxmass, _masstarget; 00144 bool _useTransverseMass; 00145 00147 double _etMiss; 00148 00155 bool _trackPhotons; 00156 00158 PdgId _pid; 00159 00161 PdgId _nu_pid; 00162 00164 ParticleVector _bosons; 00165 00167 ParticleVector _constituentLeptons; 00168 00170 ParticleVector _constituentNeutrinos; 00171 00172 }; 00173 00174 00175 } 00176 00177 00178 #endif