herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
InvariantMassCut.h
1 // -*- C++ -*-
2 //
3 // InvariantMassCut.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2019 The Herwig Collaboration
5 //
6 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef Herwig_InvariantMassCut_H
10 #define Herwig_InvariantMassCut_H
11 //
12 // This is the declaration of the InvariantMassCut class.
13 //
14 
15 #include "ThePEG/Cuts/TwoCutBase.h"
16 #include "ThePEG/PDT/MatcherBase.h"
17 
18 namespace Herwig {
19 
20 using namespace ThePEG;
21 
32 
33 public:
34 
41  theMinMass(0*GeV), theMaxMass(Constants::MaxEnergy),
42  theSameFlavourOnly(false), theOppositeSignOnly(false) {}
44 
45 public:
46 
55  virtual bool passCuts(tcCutsPtr parent, tcPDPtr pitype, tcPDPtr pjtype,
56  LorentzMomentum pi, LorentzMomentum pj,
57  bool inci = false, bool incj = false) const;
58 
63  virtual Energy2 minSij(tcPDPtr , tcPDPtr ) const { return ZERO; }
64 
70  virtual Energy2 minTij(tcPDPtr , tcPDPtr ) const { return ZERO; }
71 
77  virtual double minDeltaR(tcPDPtr , tcPDPtr ) const { return ZERO; }
78 
89  virtual Energy minKTClus(tcPDPtr , tcPDPtr ) const { return ZERO; }
90 
97  virtual double minDurham(tcPDPtr , tcPDPtr ) const { return ZERO; }
98 
100 
104  virtual void describe() const;
105 
106 public:
107 
111  Energy minMass() const { return theMinMass; }
112 
116  Energy maxMass() const { return theMaxMass; }
117 
121  bool sameFlavourOnly() const { return theSameFlavourOnly; }
122 
126  bool oppositeSignOnly() const { return theOppositeSignOnly; }
127 
132  Ptr<MatcherBase>::tptr firstMatcher() const { return theFirstMatcher; }
133  Ptr<MatcherBase>::tptr secondMatcher() const { return theSecondMatcher; }
134 
135 protected:
136 
140  int family(long id) const;
141 
142 public:
143 
150  void persistentOutput(PersistentOStream & os) const;
151 
157  void persistentInput(PersistentIStream & is, int version);
159 
166  static void Init();
167 
168 protected:
169 
176  virtual IBPtr clone() const;
177 
182  virtual IBPtr fullclone() const;
184 
185 private:
186 
190  Energy theMinMass;
191 
195  Energy theMaxMass;
196 
202 
208 
214  Ptr<MatcherBase>::ptr theSecondMatcher;
215 
216 private:
217 
222  InvariantMassCut & operator=(const InvariantMassCut &) = delete;
223 
224 };
225 
226 }
227 
228 #endif /* Herwig_InvariantMassCut_H */
Energy theMaxMass
The maximal allowed mass cut value.
virtual Energy2 minSij(tcPDPtr, tcPDPtr) const
Return the minimum allowed squared invariant mass of two outgoing partons of type pi and pj...
constexpr Energy MaxEnergy
transient_pointer tptr
bool oppositeSignOnly() const
Return whether cut acts on opposite-sign fermions only.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual double minDurham(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of the Durham -algorithms distance measure.
constexpr double pi
Ptr< MatcherBase >::ptr theFirstMatcher
Matchers for a pair of particles to cut on.
bool theOppositeSignOnly
Whether the cut is active on opposite-sign fermions only (ignored for pairs not consisting of two fer...
Energy minMass() const
Return the minimal allowed invariant mass.
This class implements a cut on the invariant mass.
Energy maxMass() const
Return the maximal allowed invariant mass.
virtual double minDeltaR(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of of two outgoing partons of type pi and pj.
virtual Energy2 minTij(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of the negative of the squared invariant mass of an incoming parton ...
Energy theMinMass
The minimal allowed mass cut value.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
InvariantMassCut()
The default constructor.
virtual Energy minKTClus(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of the longitudinally invariant -algorithms distance measure...
bool theSameFlavourOnly
Whether the cut is active on same-flavour fermions only (ignored for pairs not consisting of two ferm...
-*- C++ -*-
Ptr< MatcherBase >::tptr firstMatcher() const
Return the matchers for a pair of particles to cut on.
bool sameFlavourOnly() const
Return whether cut acts on same-flavour fermions only.
constexpr ZeroUnit ZERO