herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
FFMqqxDipole.h
1 // -*- C++ -*-
2 //
3 // FFMqqxDipole.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_FFMqqxDipole_H
10 #define HERWIG_FFMqqxDipole_H
11 //
12 // This is the declaration of the FFMqqxDipole 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  FFMqqxDipole();
38 
42  virtual ~FFMqqxDipole();
44 
45 public:
46 
51  virtual bool canHandleEmitter(const cPDVector& partons, int emitter) const {
52  return emitter > 1 && abs(partons[emitter]->id()) < 7;
53  }
54 
59  virtual bool canHandleSplitting(const cPDVector& partons, int emitter, int emission) const {
60  return
61  canHandleEmitter(partons,emitter) &&
62  partons[emitter]->id() + partons[emission]->id() == 0;
63  }
64 
69  virtual bool canHandleSpectator(const cPDVector& partons, int spectator) const {
70  return spectator > 1 && partons[spectator]->coloured();
71  }
72 
77  virtual bool canHandle(const cPDVector& partons,
78  int emitter, int emission, int spectator) const;
79 
88  virtual int samplingZ() const {return 1;}
89 
94  virtual bool isSymmetric() const { return true; }
95 
101  virtual double me2() const;
102 
106  virtual double me2Avg(double ccme2) const;
107 
108 public:
109 
116  void persistentOutput(PersistentOStream & os) const;
117 
123  void persistentInput(PersistentIStream & is, int version);
125 
132  static void Init();
133 
134 protected:
135 
142  virtual IBPtr clone() const;
143 
148  virtual IBPtr fullclone() const;
150 
151 
152 // If needed, insert declarations of virtual function defined in the
153 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
154 
155 
156 private:
157 
162  FFMqqxDipole & operator=(const FFMqqxDipole &) = delete;
163 
164 };
165 
166 }
167 
168 #endif /* HERWIG_FFMqqxDipole_H */
virtual bool canHandleSplitting(const cPDVector &partons, int emitter, int emission) const
Return true, if this dipole can possibly handle the indicated splitting.
Definition: FFMqqxDipole.h:59
FFMqqxDipole implements the D_{q,qbar;k} subtraction dipole.
Definition: FFMqqxDipole.h:28
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual bool canHandleSpectator(const cPDVector &partons, int spectator) const
Return true, if this dipole can possibly handle the indicated spectator.
Definition: FFMqqxDipole.h:69
virtual int samplingZ() const
How to sample the z-distribution.
Definition: FFMqqxDipole.h:88
vector< cPDPtr > cPDVector
SubtractionDipole represents a dipole subtraction term in the formalism of Catani and Seymour...
-*- C++ -*-
virtual bool isSymmetric() const
Return true, if this dipole is symmetric with respect to emitter and emission.
Definition: FFMqqxDipole.h:94
virtual bool canHandleEmitter(const cPDVector &partons, int emitter) const
Return true, if this dipole can possibly handle the indicated emitter.
Definition: FFMqqxDipole.h:51