File indexing completed on 2025-05-12 09:05:02
0001
0002 #ifndef RIVET_InvMassFinalState_HH
0003 #define RIVET_InvMassFinalState_HH
0004
0005 #include "Rivet/Projections/FinalState.hh"
0006
0007 namespace Rivet {
0008
0009
0010
0011 class InvMassFinalState : public FinalState {
0012 public:
0013
0014
0015 InvMassFinalState(const FinalState& fsp,
0016 const std::pair<PdgId, PdgId>& idpair,
0017 double minmass,
0018 double maxmass,
0019 double masstarget=-1.0);
0020
0021
0022
0023 InvMassFinalState(const FinalState& fsp,
0024 const std::vector<std::pair<PdgId, PdgId> >& idpairs,
0025 double minmass,
0026 double maxmass,
0027 double masstarget=-1.0);
0028
0029
0030
0031 InvMassFinalState(const std::pair<PdgId, PdgId>& idpair,
0032 double minmass,
0033 double maxmass,
0034 double masstarget=-1.0);
0035 InvMassFinalState(const std::vector<std::pair<PdgId, PdgId> >& idpairs,
0036 double minmass,
0037 double maxmass,
0038 double masstarget=-1.0);
0039
0040
0041
0042 RIVET_DEFAULT_PROJ_CLONE(InvMassFinalState);
0043
0044
0045 using Projection::operator =;
0046
0047
0048
0049 const std::vector<std::pair<Particle, Particle> >& particlePairs() const;
0050
0051
0052
0053 void useTransverseMass(bool usetrans=true) {
0054 _useTransverseMass = usetrans;
0055 }
0056
0057
0058 void calc(const Particles& inparticles);
0059
0060
0061
0062 void project(const Event& e);
0063
0064
0065 CmpState compare(const Projection& p) const;
0066
0067
0068 protected:
0069
0070
0071 vector<PdgIdPair> _decayids;
0072
0073
0074 vector<pair<Particle, Particle> > _particlePairs;
0075
0076
0077 double _minmass;
0078
0079
0080 double _maxmass;
0081
0082
0083 double _masstarget;
0084
0085
0086 bool _useTransverseMass;
0087
0088 };
0089
0090
0091 }
0092
0093 #endif