Rivet
1.8.0
|
00001 // -*- C++ -*- 00002 #ifndef RIVET_InvMassFinalState_HH 00003 #define RIVET_InvMassFinalState_HH 00004 00005 #include "Rivet/Projections/FinalState.hh" 00006 00007 namespace Rivet { 00008 00009 00011 class InvMassFinalState : public FinalState { 00012 public: 00013 00015 InvMassFinalState(const FinalState& fsp, 00016 const std::pair<PdgId, PdgId>& idpair, // pair of decay products 00017 double minmass, // min inv mass 00018 double maxmass, // max inv mass 00019 double masstarget=-1.0); 00020 00021 00023 InvMassFinalState(const FinalState& fsp, 00024 const std::vector<std::pair<PdgId, PdgId> >& idpairs, // vector of pairs of decay products 00025 double minmass, // min inv mass 00026 double maxmass, // max inv mass 00027 double masstarget=-1.0); 00028 00029 00031 InvMassFinalState(const std::pair<PdgId, PdgId>& idpair, // pair of decay products 00032 double minmass, // min inv mass 00033 double maxmass, // max inv mass 00034 double masstarget=-1.0); 00035 InvMassFinalState(const std::vector<std::pair<PdgId, PdgId> >& idpairs, // vector of pairs of decay products 00036 double minmass, // min inv mass 00037 double maxmass, // max inv mass 00038 double masstarget=-1.0); 00039 00040 00042 virtual const Projection* clone() const { 00043 return new InvMassFinalState(*this); 00044 } 00045 00046 00047 public: 00048 00050 const std::vector<std::pair<Particle, Particle> >& particlePairs() const; 00051 00052 00054 void useTransverseMass(bool usetrans=true) { 00055 _useTransverseMass = usetrans; 00056 } 00057 00059 void calc(const ParticleVector& inparticles); 00060 00061 00062 protected: 00063 00065 void project(const Event& e); 00066 00068 int compare(const Projection& p) const; 00069 00070 00071 private: 00072 00074 std::vector<PdgIdPair> _decayids; 00075 00077 std::vector<std::pair<Particle, Particle> > _particlePairs; 00078 00080 double _minmass; 00081 00083 double _maxmass; 00084 00086 double _masstarget; 00087 00089 bool _useTransverseMass; 00090 }; 00091 00092 00093 } 00094 00095 00096 #endif