herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MergingFactory.h
1
2 //
5 //
8 //
9#ifndef HERWIG_MergingFactory_H
10#define HERWIG_MergingFactory_H
11 //
13 //
14
15#include "MergingFactory.fh"
16#include "Herwig/MatrixElement/Matchbox/MatchboxFactory.h"
17#include "Node.fh"
18#include "Merger.h"
19#include "ThePEG/Persistency/PersistentOStream.h"
20#include "ThePEG/Persistency/PersistentIStream.h"
21namespace Herwig {
22
23 using namespace ThePEG;
24
36 public:
40 virtual void setup();
42 void fillMEsMap();
44 void prepare_BV(int i);
46 void prepare_R(int i);
48 void pushB(MatchboxMEBasePtr, int);
49 //push the virtual contributions to the ME vector.
50 void pushV(MatchboxMEBasePtr, int);
52 void pushR(MatchboxMEBasePtr, int);
54 void orderOLPs();
57 int onlymulti()const {
58 return theonlymulti==-1?-1:(theonlymulti+int(processMap.find(0)->second.size()));
59 }
61 MergerPtr MH() {return theMergingHelper;}
63 int M() const {return theM-1;}
65 int N() const {return theN;}
68 const map<int, vector<MatchboxMEBasePtr> >& pureMEsMap() const {
69 return thePureMEsMap;
70 }
73 map<int, vector<MatchboxMEBasePtr> >& pureMEsMap() {
74 return thePureMEsMap;
75 }
76 //Parse a process description
77 virtual vector<string> parseProcess(string);
78 // fill the virtuals vector (these are IPK-operators)
79 void getVirtuals(MatchboxMEBasePtr nlo, bool clone );
80 // In the merged setup we only produce single phase space points.
81 bool subProcessGroups() const { return false;}
82 // Cut on non-QCD observables.
83 Ptr<Cuts>::ptr nonQCDCuts(){return theNonQCDCuts;}
84
85 public:
86
94
102
103 static void Init();
104
105 protected:
106
114 virtual void doinit();
115
117
118 protected:
119
126 virtual IBPtr clone() const;
127
133 virtual IBPtr fullclone() const;
135
136 private:
137
139 bool unitarized = true;
141 bool ransetup = false;
144 int theonlymulti = -1;
146 int theM = -1;
148 int theN = -1;
150 map< int, vector<string> > processMap;
151 //The matrix elements: int = number of additional jets
152 map< int, vector<MatchboxMEBasePtr> > thePureMEsMap;
156 Ptr<Cuts>::ptr theNonQCDCuts;
157
162 int theChunk=0;
166
167
173
174
175 };
176
177}
178
179#endif /* HERWIG_MergingFactory_H */
MatchboxFactory automatically sets up a NLO QCD calculation carried out in dipole subtraction.
MergingFactory automatically sets up a NLO QCD merging.
int theChunkPart
This parameter selects a part chunkpart of the chunked subprocesses.
map< int, vector< string > > processMap
map for processes.
bool ransetup
did run setup.
const map< int, vector< MatchboxMEBasePtr > > & pureMEsMap() const
Return the Map of matrix elements to be considered (the Key is the number of additional jets)
void orderOLPs()
order matrix elements from one loop provider.
void prepare_BV(int i)
prepare the Born and virtual matrix elements.
MergerPtr MH()
pointer to the merging helper.
void prepare_R(int i)
prepare the real emission matrix elements.
void pushR(MatchboxMEBasePtr, int)
push the real contributions to the ME vector.
bool subProcessGroups() const
Return true, if SubProcessGroups should be setup from this MEGroup.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual IBPtr clone() const
Make a simple clone of this object.
int theonlymulti
Debugging: push only multiplicities to the ME vector in range of specified mulltiplicity.
MergingFactory & operator=(const MergingFactory &)=delete
The assignment operator is private and must never be called.
int N() const
leg size of highest multiplicity.
map< int, vector< MatchboxMEBasePtr > > & pureMEsMap()
Access the Map of matrix elements to be considered (the Key is the number of additional jets)
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
void productionMode()
Check consistency and switch to porduction mode.
bool unitarized
unitarise the LO contributions.
virtual vector< string > parseProcess(string)
Parse a process description.
MergerPtr theMergingHelper
the merging helper
void persistentInput(PersistentIStream &is, int)
Function used to read in object persistently.
void fillMEsMap()
fill all amplitudes, stored in pureMEsMap
int theN
maximal legsize for LO contributions.
int M() const
maximal NLO mulitplicity: 0=NLO corrections to the productio process.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
int onlymulti() const
Debugging: push only multiplicities to the ME vector in range of specified mulltiplicity.
int theChunk
For more complicated processes the number of subprocesses is large.
void pushB(MatchboxMEBasePtr, int)
push the born contributions to the ME vector.
virtual void setup()
main method to setup the ME vector
int theM
maximal legsize for NLO corrections.
Ptr< Cuts >::ptr theNonQCDCuts
Cut on non-QCD modified observables.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr