herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
FIMqgxDipole.h
1 // -*- C++ -*-
2 //
3 // FIMqgxDipole.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_FIMqgxDipole_H
10 #define HERWIG_FIMqgxDipole_H
11 //
12 // This is the declaration of the FIMqgxDipole class.
13 //
14 
15 #include "Herwig/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h"
16 
17 namespace Herwig {
18 
19 using namespace ThePEG;
20 
30 
31 public:
32 
38  FIMqgxDipole();
39 
43  virtual ~FIMqgxDipole();
45 
46 public:
47 
52  virtual bool canHandleEmitter(const cPDVector& partons, int emitter) const {
53  return emitter > 1 && abs(partons[emitter]->id()) < 7;
54  }
55 
60  virtual bool canHandleSplitting(const cPDVector& partons, int emitter, int emission) const {
61  return canHandleEmitter(partons,emitter) && partons[emission]->id() == ParticleID::g;
62  }
63 
68  virtual bool canHandleSpectator(const cPDVector& partons, int spectator) const {
69  return spectator < 2 && partons[spectator]->coloured();
70  }
71 
76  virtual bool canHandle(const cPDVector& partons,
77  int emitter, int emission, int spectator) const;
78 
87  virtual int samplingZ() const {return 3;}
88 
94  virtual double me2() const;
95 
99  virtual double me2Avg(double ccme2) const;
100 
101 public:
102 
109  void persistentOutput(PersistentOStream & os) const;
110 
116  void persistentInput(PersistentIStream & is, int version);
118 
125  static void Init();
126 
127 protected:
128 
135  virtual IBPtr clone() const;
136 
141  virtual IBPtr fullclone() const;
143 
144 
145 // If needed, insert declarations of virtual function defined in the
146 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
147 
148 
149 private:
150 
155  FIMqgxDipole & operator=(const FIMqgxDipole &) = delete;
156 
157 };
158 
159 }
160 
161 #endif /* HERWIG_FIMqgxDipole_H */
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
FIMqgxDipole implements the D_{Q,g}^a subtraction dipole, as well as the D_{gluino,g}^a subtraction dipole.
Definition: FIMqgxDipole.h:29
virtual bool canHandleSpectator(const cPDVector &partons, int spectator) const
Return true, if this dipole can possibly handle the indicated spectator.
Definition: FIMqgxDipole.h:68
virtual bool canHandleSplitting(const cPDVector &partons, int emitter, int emission) const
Return true, if this dipole can possibly handle the indicated splitting.
Definition: FIMqgxDipole.h:60
virtual bool canHandleEmitter(const cPDVector &partons, int emitter) const
Return true, if this dipole can possibly handle the indicated emitter.
Definition: FIMqgxDipole.h:52
vector< cPDPtr > cPDVector
virtual int samplingZ() const
How to sample the z-distribution.
Definition: FIMqgxDipole.h:87
SubtractionDipole represents a dipole subtraction term in the formalism of Catani and Seymour...
-*- C++ -*-