10 #ifndef Pythia8_ShowerMEs_H
11 #define Pythia8_ShowerMEs_H
14 #include "Pythia8/Basics.h"
15 #include "Pythia8/PythiaComplex.h"
16 #include "Pythia8/Event.h"
17 #include "Pythia8/Info.h"
18 #include "Pythia8/ParticleData.h"
19 #include "Pythia8/PythiaStdlib.h"
20 #include "Pythia8/Settings.h"
21 #include "Pythia8/StandardModel.h"
22 #include "Pythia8/SusyLesHouches.h"
25 #include "Pythia8/VinciaCommon.h"
45 virtual bool initVincia() = 0;
47 virtual bool hasProcessVincia
48 (vector<int> idIn, vector<int> idOut, set<int> sChan) = 0;
50 virtual double me2Vincia(vector<Particle> state,
int nIn) = 0;
53 virtual bool selectHelicitiesVincia(vector<Particle>& state,
int nIn);
55 virtual void setColourDepthVincia(
int colourDepthIn) {
56 colourDepth = colourDepthIn;}
57 virtual int getColourDepthVincia() {
return colourDepth;}
59 string makeLabelVincia
60 (vector<int>&
id,
int nIn,
bool convertToNames =
false)
const;
62 virtual void setVerboseVincia(
int verboseIn) {verbose = verboseIn;}
65 virtual bool initDire(
Info* infoPtrIn,
string card) = 0;
66 virtual bool isAvailableMEDire(vector <int> in, vector<int> out) = 0;
72 void fillIds(
const Event& event, vector<int>& in, vector<int>& out)
const;
74 void fillMoms(
const Event& event, vector<Vec4>& p)
const;
76 void fillCols(
const Event& event, vector<int>& colors)
const;
78 vector<vector<double> > fillMoms(
const Event& event)
const;
83 bool isInitPtr{
false}, isInit{
false};
86 map< vector<int> ,
double > me2hel{};
116 libPtr(
nullptr), name(nameIn) {};
124 bool initVincia()
override;
126 double me2Vincia(vector<Particle> state,
int nIn)
override {
127 return mesPtr !=
nullptr ? mesPtr->me2Vincia(state, nIn) : -1;}
129 bool hasProcessVincia(vector<int> idIn, vector<int> idOut,
130 set<int> sChan)
override {
return mesPtr !=
nullptr ?
131 mesPtr->hasProcessVincia(idIn, idOut, sChan) :
false;}
134 bool selectHelicitiesVincia(vector<Particle>& state,
int nIn)
override {
135 return mesPtr !=
nullptr ?
136 mesPtr->selectHelicitiesVincia(state, nIn) :
false;}
138 void setColourDepthVincia(
int colourDepthIn)
override {
139 if (mesPtr !=
nullptr) mesPtr->setColourDepthVincia(colourDepthIn);}
140 int getColourDepthVincia()
override {
141 return mesPtr !=
nullptr ? mesPtr->getColourDepthVincia() : 0;}
143 void setVerboseVincia(
int verboseIn)
override {
144 if (mesPtr !=
nullptr) mesPtr->setVerboseVincia(verboseIn);}
147 bool initDire(
Info* infoPtrIn,
string card)
override;
148 bool isAvailableMEDire(vector <int> in, vector<int> out)
override {
149 return mesPtr !=
nullptr ? mesPtr->isAvailableMEDire(in, out) :
false;}
151 return mesPtr !=
nullptr ? mesPtr->isAvailableMEDire(event) :
false;}
153 return mesPtr !=
nullptr ? mesPtr->calcMEDire(event) : 0;}
159 typedef void DeleteShowerMEs(
ShowerMEs*);
172 #endif // end Pythia8_ShowerMEs_H