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