herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MatchboxScaleChoice.h
1 // -*- C++ -*-
2 //
3 // MatchboxScaleChoice.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_MatchboxScaleChoice_H
10 #define Herwig_MatchboxScaleChoice_H
11 //
12 // This is the declaration of the MatchboxScaleChoice class.
13 //
14 
15 #include "ThePEG/Handlers/HandlerBase.h"
16 #include "ThePEG/Handlers/StandardXComb.h"
17 #include "ThePEG/Handlers/LastXCombInfo.h"
18 
19 namespace Herwig {
20 
21 using namespace ThePEG;
22 
31 class MatchboxScaleChoice: public HandlerBase, public LastXCombInfo<StandardXComb> {
32 
33 public:
34 
41 
45  virtual ~MatchboxScaleChoice();
47 
48 public:
49 
53  Ptr<MatchboxScaleChoice>::ptr cloneMe() const {
54  return dynamic_ptr_cast<Ptr<MatchboxScaleChoice>::ptr>(clone());
55  }
56 
60  virtual void setXComb(tStdXCombPtr xc) {
61  theLastXComb = xc;
62  }
63 
68  virtual Energy2 renormalizationScale() const {
69  return theFixedScale == ZERO ? lastSHat() : sqr(theFixedScale);
70  }
71 
76  virtual Energy2 factorizationScale() const {
77  return theFixedScale == ZERO ? lastSHat() : sqr(theFixedScale);
78  }
79 
84  virtual Energy2 renormalizationScaleQED() const {
85  if ( theFixedQEDScale != ZERO )
86  return sqr(theFixedQEDScale);
87  Energy mZ = getParticleData(ParticleID::Z0)->hardProcessMass();
88  return mZ*mZ;
89  }
90 
95  virtual Energy2 showerScale() const {
96  return factorizationScale();
97  }
98 
99 public:
100 
107  void persistentOutput(PersistentOStream & os) const;
108 
114  void persistentInput(PersistentIStream & is, int version);
116 
123  static void Init();
124 
125 protected:
126 
133  virtual IBPtr clone() const;
134 
139  virtual IBPtr fullclone() const;
141 
142 
143 // If needed, insert declarations of virtual function defined in the
144 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
145 
146 
147 private:
148 
153 
158 
163  MatchboxScaleChoice & operator=(const MatchboxScaleChoice &) = delete;
164 
165 };
166 
167 }
168 
169 #endif /* Herwig_MatchboxScaleChoice_H */
virtual Energy2 renormalizationScaleQED() const
Return the QED renormalization scale.
Energy theFixedScale
A fixed scale choice.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual Energy2 factorizationScale() const
Return the factorization scale.
constexpr auto sqr(const T &x) -> decltype(x *x)
Energy theFixedQEDScale
A fixed QED scale choice.
MatchboxScaleChoice is the base class for scale choices within Matchbox.
virtual Energy2 showerScale() const
Return the shower hard scale.
-*- C++ -*-
virtual Energy2 renormalizationScale() const
Return the renormalization scale.
constexpr ZeroUnit ZERO
Ptr< MatchboxScaleChoice >::ptr cloneMe() const
Clone this scale choice.
virtual void setXComb(tStdXCombPtr xc)
Set the XComb object.