herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
PairPtCut.h
1 // -*- C++ -*-
2 //
3 // PairPtCut.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_PairPtCut_H
10 #define Herwig_PairPtCut_H
11 //
12 // This is the declaration of the PairPtCut 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 
31 class PairPtCut: public TwoCutBase {
32 
33 public:
34 
40  PairPtCut() :
41  theMinPt(0*GeV), theMaxPt(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 minPt() const { return theMinPt; }
112 
116  Energy maxPt() const { return theMaxPt; }
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 theMinPt;
191 
195  Energy theMaxPt;
196 
202 
208 
214  Ptr<MatcherBase>::ptr theSecondMatcher;
215 
216 private:
217 
222  PairPtCut & operator=(const PairPtCut &) = delete;
223 
224 };
225 
226 }
227 
228 #endif /* Herwig_PairPtCut_H */
229 
bool oppositeSignOnly() const
Return whether cut acts on opposite-sign fermions only.
Definition: PairPtCut.h:126
virtual double minDurham(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of the Durham -algorithms distance measure.
Definition: PairPtCut.h:97
bool sameFlavourOnly() const
Return whether cut acts on same-flavour fermions only.
Definition: PairPtCut.h:121
constexpr Energy MaxEnergy
transient_pointer tptr
Energy theMaxPt
The maximal allowed pT cut value.
Definition: PairPtCut.h:195
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
constexpr double pi
This class implements a cut on the transverse momentum of a pair of particles.
Definition: PairPtCut.h:31
Ptr< MatcherBase >::tptr firstMatcher() const
Return the matchers for a pair of particles to cut on.
Definition: PairPtCut.h:132
virtual Energy2 minSij(tcPDPtr, tcPDPtr) const
Return the minimum allowed squared invariant mass of two outgoing partons of type pi and pj...
Definition: PairPtCut.h:63
Energy maxPt() const
Return the maximal allowed pair pT.
Definition: PairPtCut.h:116
bool theSameFlavourOnly
Whether the cut is active on same-flavour fermions only (ignored for pairs not consisting of two ferm...
Definition: PairPtCut.h:201
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
Energy minPt() const
Return the minimal allowed pair pT.
Definition: PairPtCut.h:111
Ptr< MatcherBase >::ptr theFirstMatcher
Matchers for a pair of particles to cut on.
Definition: PairPtCut.h:213
PairPtCut()
The default constructor.
Definition: PairPtCut.h:40
-*- C++ -*-
virtual Energy minKTClus(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of the longitudinally invariant -algorithms distance measure...
Definition: PairPtCut.h:89
virtual double minDeltaR(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of of two outgoing partons of type pi and pj.
Definition: PairPtCut.h:77
Energy theMinPt
The minimal allowed pT cut value.
Definition: PairPtCut.h:190
constexpr ZeroUnit ZERO
bool theOppositeSignOnly
Whether the cut is active on opposite-sign fermions only (ignored for pairs not consisting of two fer...
Definition: PairPtCut.h:207
virtual Energy2 minTij(tcPDPtr, tcPDPtr) const
Return the minimum allowed value of the negative of the squared invariant mass of an incoming parton ...
Definition: PairPtCut.h:70