herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
FFMsqgxDipole.h
1 // -*- C++ -*-
2 //
3 // FFMsqgxDipole.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_FFMsqgxDipole_H
10 #define HERWIG_FFMsqgxDipole_H
11 //
12 // This is the declaration of the FFMsqgxDipole class.
13 //
14 
15 #include "Herwig/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h"
16 
17 namespace Herwig {
18 
19 using namespace ThePEG;
20 
29 
30 public:
31 
37  FFMsqgxDipole();
38 
42  virtual ~FFMsqgxDipole();
44 
45 public:
46 
51  virtual bool canHandleEmitter(const cPDVector& partons, int emitter) const {
52  return
53  emitter > 1 &&
54  (abs(abs(partons[emitter]->id()) - 1000000) < 7 || abs(abs(partons[emitter]->id()) - 2000000) < 7);
55  }
56 
61  virtual bool canHandleSplitting(const cPDVector& partons, int emitter, int emission) const {
62  return
63  canHandleEmitter(partons,emitter) &&
64  partons[emission]->id() == ParticleID::g;
65  }
66 
71  virtual bool canHandleSpectator(const cPDVector& partons, int spectator) const {
72  return spectator > 1 && partons[spectator]->coloured();
73  }
74 
79  virtual bool canHandle(const cPDVector& partons,
80  int emitter, int emission, int spectator) const;
81 
90  virtual int samplingZ() const {return 3;}
91 
97  virtual double me2() const;
98 
102  virtual double me2Avg(double ccme2) const;
103 
104 public:
105 
112  void persistentOutput(PersistentOStream & os) const;
113 
119  void persistentInput(PersistentIStream & is, int version);
121 
128  static void Init();
129 
130 protected:
131 
138  virtual IBPtr clone() const;
139 
144  virtual IBPtr fullclone() const;
146 
147 
148 // If needed, insert declarations of virtual function defined in the
149 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
150 
151 
152 private:
153 
158  FFMsqgxDipole & operator=(const FFMsqgxDipole &) = delete;
159 
160 };
161 
162 }
163 
164 #endif /* HERWIG_FFMsqgxDipole_H */
FFMsqgxDipole implements the D_{sq,g;k} subtraction dipole.
Definition: FFMsqgxDipole.h:28
virtual bool canHandleSplitting(const cPDVector &partons, int emitter, int emission) const
Return true, if this dipole can possibly handle the indicated splitting.
Definition: FFMsqgxDipole.h:61
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual bool canHandleEmitter(const cPDVector &partons, int emitter) const
Return true, if this dipole can possibly handle the indicated emitter.
Definition: FFMsqgxDipole.h:51
virtual int samplingZ() const
How to sample the z-distribution.
Definition: FFMsqgxDipole.h:90
virtual bool canHandleSpectator(const cPDVector &partons, int spectator) const
Return true, if this dipole can possibly handle the indicated spectator.
Definition: FFMsqgxDipole.h:71
vector< cPDPtr > cPDVector
SubtractionDipole represents a dipole subtraction term in the formalism of Catani and Seymour...
-*- C++ -*-