herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MEMultiChannel.h
1// -*- C++ -*-
2#ifndef Herwig_MEMultiChannel_H
3#define Herwig_MEMultiChannel_H
4//
5// This is the declaration of the MEMultiChannel class.
6//
7
8#include "ThePEG/MatrixElement/MEBase.h"
9#include "Herwig/Decay/PhaseSpaceMode.fh"
10
11namespace Herwig {
12
13using namespace ThePEG;
14
21class MEMultiChannel: public MEBase {
22
23public:
24
29
33 virtual ~MEMultiChannel();
35
36public:
37
40
48 double me2() const {return me2(-1);}
49
53 virtual Energy2 scale() const;
54
59 virtual int nDim() const;
60
69 virtual bool generateKinematics(const double * r);
70
75 virtual CrossSection dSigHatDR() const;
76
80 virtual void getDiagrams() const;
81
91
100 colourGeometries(tcDiagPtr diag) const;
102
103protected :
104
108 void addMode(PhaseSpaceModePtr mode) {
109 modes_.push_back(mode);
110 }
111
115 tPhaseSpaceModePtr mode(unsigned int imode) const {
116 return modes_[imode];
117 }
118
119public:
120
128
134 void persistentInput(PersistentIStream & is, int version);
136
143 static void Init();
144
145protected:
146
154 virtual void doinit();
155
160 virtual void doinitrun();
162
163protected:
164
174 virtual double me2(const int ichan) const = 0;
175
179 unsigned int iMode() {return iMode_;}
180
184 void iMode(unsigned int in) const {iMode_=in;}
185
186private:
187
193
194private:
195
199 vector<PhaseSpaceModePtr> modes_;
200
204 mutable vector<map <int,int> > channelMap_;
205
209 mutable unsigned int iMode_;
210};
211
212}
213
214#endif /* Herwig_MEMultiChannel_H */
Here is the documentation of the MEMultiChannel class.
virtual void getDiagrams() const
Add all possible diagrams with the add() function.
virtual ~MEMultiChannel()
The destructor.
MEMultiChannel & operator=(const MEMultiChannel &)=delete
The assignment operator is private and must never be called.
tPhaseSpaceModePtr mode(unsigned int imode) const
Access to the modes.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< map< int, int > > channelMap_
Map from the phase space channels to the modes.
static void Init()
The standard Init function used to initialize the interfaces.
virtual bool generateKinematics(const double *r)
Generate internal degrees of freedom given nDim() uniform random numbers in the interval .
void iMode(unsigned int in) const
Set the mode currently begining used.
virtual void doinitrun()
Initialize this object.
unsigned int iMode_
The mode currently begining used.
virtual double me2(const int ichan) const =0
Return the matrix element squared for a given mode and phase-space channel.
virtual int nDim() const
The number of internal degrees of freedom used in the matrix element.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual Selector< DiagramIndex > diagrams(const DiagramVector &dv) const
Get diagram selector.
MEMultiChannel()
The default constructor.
double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
virtual Selector< const ColourLines * > colourGeometries(tcDiagPtr diag) const
Return a Selector with possible colour geometries for the selected diagram weighted by their relative...
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
void addMode(PhaseSpaceModePtr mode)
Add a phase-space mode.
virtual Energy2 scale() const
Return the scale associated with the last set phase space point.
vector< PhaseSpaceModePtr > modes_
The phase-space modes.
unsigned int iMode()
Access the mode currently being used.
virtual CrossSection dSigHatDR() const
Return the matrix element squared differential in the variables given by the last call to generateKin...
vector< DiagPtr > DiagramVector
-*- C++ -*-