herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MatchingHandler.h
1// -*- C++ -*-
2#ifndef Herwig_MatchingHandler_H
3#define Herwig_MatchingHandler_H
4//
5// This is the declaration of the MatchingHandler class.
6//
7
8#include "Herwig/Shower/QTilde/QTildeShowerHandler.h"
9#include "ThePEG/MatrixElement/MEBase.h"
10#include "Herwig/MatrixElement/HwMEBase.h"
11#include "ThePEG/MatrixElement/DiagramBase.fh"
12#include "ThePEG/PDF/PartonExtractor.h"
13#include "Herwig/Shower/QTilde/Base/HardBranching.h"
14#include "ProtoTree.h"
15#include "PotentialTree.h"
16
17namespace Herwig {
18
19using namespace ThePEG;
20
28
29public:
30
34 MatchingHandler(bool reWeight = false);
35
43
49 void persistentInput(PersistentIStream & is, int version);
51
58 static void Init();
59
60protected:
61
69 virtual void doinit();
71
72protected:
73
77 MEPtr matrixElement() const {return matrixElement_;}
78
82 HwMEBasePtr HWMatrixElement() const {return HWmatrixElement_;}
83
88
93 PartonPairVec partonBins() {return partonBins_;}
94
99 void partonBins(PartonPairVec bins) {partonBins_ = bins;}
100
104 CutsPtr & cuts() {return cuts_;}
105
109 void initialiseMatching(int minMult, int maxMult);
110
111protected:
112
116 ShowerAlphaPtr alphaS() {return alphaS_;}
117
123
129
137 Energy2 sHat() const {return sHat_;}
138
142 void sHat(Energy2 in) {sHat_ = in;}
143
147 Energy pdfScale() const {return pdfScale_;}
148
152 void pdfScale(Energy in) {pdfScale_ = in;}
153
157 double alphaSMG() const {return alphaSMG_;}
158
162 void alphaSMG(double in) {alphaSMG_ = in;}
163
168
172 bool highestMult() const {return highestMult_;}
173
177 bool lowestMult() const {return lowestMult_;}
179
187 set<ProtoBranchingPtr> & protoBranchings() {return protoBranchings_;}
188
192 set< ProtoTreePtr > & protoTrees() {return protoTrees_;}
193
198
203
207 CKKWTreePtr getCKKWTree() const {return hardTree_.tree();}
208
212 vector< pair< PotentialTree, double > > & hardTrees() {
213 return hardTrees_;
214 }
215
219 vector< pair< PotentialTree, double > > & nonOrderedTrees() {
220 return nonOrderedTrees_;
221 }
223
228
233 void fillProtoTrees( ProtoTreePtr );
234
239
244
248 virtual double sudakovWeight( CKKWTreePtr ) = 0;
249
253 virtual PotentialTree chooseHardTree(double totalWeight,
254 double nonOrderedWeight) = 0;
255
262 tProtoBranchingPtr getCluster( tProtoBranchingPtr, tProtoBranchingPtr );
263
269 bool repeatProtoTree( ProtoTreePtr currentProtoTree );
270
275 tProtoBranchingPtr &);
276
281 tProtoBranchingPtr &);
282
287
291 map<PPtr,ParticleVector>::const_iterator parent(PPtr parent);
292
297 map<PPtr,ParticleVector>::const_iterator decay,
298 const LorentzRotation & boost) const;
299
300private:
301
307
308private:
309
314
320
326
331
336
340 HwMEBasePtr HWmatrixElement_;
341
346
351 PartonPairVec partonBins_;
352
356 CutsPtr cuts_;
357
361 Energy2 sHat_;
362
366 ShowerAlphaPtr alphaS_;
367
371 Energy pdfScale_;
372
376 double alphaSMG_;
377
378private:
379
387 set<ProtoBranchingPtr> protoBranchings_;
388
392 set< ProtoTreePtr > protoTrees_;
393
398
402 vector< pair< PotentialTree, double > > hardTrees_;
403
407 vector< pair< PotentialTree, double > > nonOrderedTrees_;
408
412 map<PPtr,ParticleVector> decayingParticles_;
413
418
423
429
437 map<pair<long,long>,pair<SudakovPtr,IdList> > allowedFinal_;
438
442 multimap<long, pair<SudakovPtr,IdList> > allowedInitial_;
444};
445
446}
447
448#endif /* Herwig_MatchingHandler_H */
Here is the documentation of the MatchingHandler class.
void fillProtoTrees(ProtoTreePtr)
Recursive function to find all possible clustered trees.
double alphaSMG() const
The fixed alphaS value that was used to generate parton configurations.
set< ProtoBranchingPtr > & protoBranchings()
Storage of potential shower interpretations.
map< pair< long, long >, pair< SudakovPtr, IdList > > allowedFinal_
Which branchings are allowed?
BranchingElement allowedFinalStateBranching(tProtoBranchingPtr &, tProtoBranchingPtr &)
Returns the branching element for an FS-FS clustering.
bool rejectNonAngularOrdered()
whether to just reject event if there are no angular ordered histories (true) or to choose one of the...
vector< pair< PotentialTree, double > > & nonOrderedTrees()
The possible shower configurations that are not angular-ordered.
void hardTree(PotentialTree in)
Access to the select tree.
bool noShowerHistory()
Whether we are treating an event with no shower interpretation.
Energy pdfScale() const
The fixed factorization scale used in the MEs.
bool lowestMult_
Whether we are treating the lowest multiplicity contribution.
PExtrPtr partonExtractor()
The PartonExtractor object used to construct remnants.
Energy pdfScale_
The fixed factorization scale used in the MEs.
void addDecayProducts(SubProPtr subProcess, PPtr parent, map< PPtr, ParticleVector >::const_iterator decay, const LorentzRotation &boost) const
Add the decay products of a particle to the new SubProcess.
HwMEBasePtr HWmatrixElement_
The cast matrix element.
void alphaSMG(double in)
The fixed alphaS value that was used to generate parton configurations.
void pdfScale(Energy in)
The fixed factorization scale used in the MEs.
bool highestMult() const
whether the current event is a highest multiplicity event.
CutsPtr cuts_
The Cuts object to be used for this reader.
void partonBins(PartonPairVec bins)
The pairs of PartonBin objects describing the partons which can be extracted by the PartonExtractor o...
double alphaSMG_
The fixed alphaS value that was used to generate parton configurations.
MatchingHandler & operator=(const MatchingHandler &)=delete
The assignment operator is private and must never be called.
BranchingElement allowedInitialStateBranching(tProtoBranchingPtr &, tProtoBranchingPtr &)
Returns the branching element for an IS-FS clustering.
bool highestMult_
Whether we are treating the highest multiplicity contribution.
MEPtr matrixElement_
The matrix element for the core process.
PotentialTree & hardTree()
Access to the select tree.
PotentialTree hardTree_
The chosen hard tree.
ShowerAlphaPtr alphaS()
Pointer to the object calculating the strong coupling.
virtual PotentialTree chooseHardTree(double totalWeight, double nonOrderedWeight)=0
Select the hard tree.
bool repeatProtoTree(ProtoTreePtr currentProtoTree)
Checks whether a ProtoTree containing the same branchings already exists in protoTrees_ in which case...
set< ProtoBranchingPtr > protoBranchings_
Storage of the potential shower interpretation.
void findDecayingParticles(PPtr parent)
Find decaying particles.
Energy2 sHat() const
Access to basic info on the event.
bool rejectNOHistories_
whether to reject events (true) for which there is no parton shower interpretation or just shower the...
HwMEBasePtr HWMatrixElement() const
Access to the core Hw++ matrix element.
virtual double sudakovWeight(CKKWTreePtr)=0
Calculate the Sudakov weight.
vector< pair< PotentialTree, double > > nonOrderedTrees_
The possible shower configurations that are not angular-ordered.
PartonPairVec partonBins_
The pairs of PartonBin objects describing the partons which can be extracted by the PartonExtractor o...
MEPtr matrixElement() const
Access to the core matrix element.
PartonPairVec partonBins()
The pairs of PartonBin objects describing the partons which can be extracted by the PartonExtractor o...
void sHat(Energy2 in)
Centre of mass energy.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
set< ProtoTreePtr > & protoTrees()
The ProtoTrees which will become CKKWTrees.
PExtrPtr partonExtractor_
The PartonExtractor object used to construct remnants.
ShowerAlphaPtr alphaS_
Pointer to the object calculating the strong coupling.
MatchingHandler(bool reWeight=false)
The default constructor.
CKKWTreePtr getCKKWTree() const
access to the hard tree object
multimap< long, pair< SudakovPtr, IdList > > allowedInitial_
The allowed initial-state branchings.
bool rejectNonAO_
whether to just reject event if there are no angular ordered histories (true) or to choose one of the...
bool reWeight_
Whether or not to reweight.
vector< pair< PotentialTree, double > > & hardTrees()
The possible shower configurations that are angular-ordered.
tProtoBranchingPtr getCluster(tProtoBranchingPtr, tProtoBranchingPtr)
Function looks to see if a cluster of the branchings already exists in protoBranchings_ if so returns...
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
bool noShowerHists_
Whether we are treating an event with no shower interpretation.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
bool lowestMult() const
whether the current event is a lowest multiplicity event
Energy2 sHat_
Centre of mass energy.
CutsPtr & cuts()
The Cuts object to be used for this reader.
void initialiseMatching(int minMult, int maxMult)
Initialise the matching.
vector< pair< PotentialTree, double > > hardTrees_
The possible shower configurations that are angular-ordered.
map< PPtr, ParticleVector >::const_iterator parent(PPtr parent)
Check if a decayed particle.
double getDiagram(PotentialTree &)
Returns the diagram corresponding to the (leading-order) hardTree.
bool rejectNoShowerHistory()
whether to reject events (true) for which there is no parton shower interpretation or just shower the...
map< PPtr, ParticleVector > decayingParticles_
Any decays.
bool updateSubProcess()
update sub process based on the CKKWTree and Diagram
PotentialTree doClustering()
Creates all (ordered) cluster histories and selects one.
bool includeDecays_
Include decaying particles.
set< ProtoTreePtr > protoTrees_
The ProtoTrees which will become CKKWTrees.
static void Init()
The standard Init function used to initialize the interfaces.
This class is the main driver of the shower: it is responsible for the proper handling of all other s...
Definition: ShowerHandler.h:40
tDMPtr decay(PerturbativeProcessPtr, DecayProcessMap &decay, bool radPhotons=false) const
Decay a particle.
tSubProPtr subProcess() const
-*- C++ -*-
ThePEG::Ptr< SubProcess >::pointer SubProPtr
ThePEG::Ptr< Particle >::pointer PPtr
ThePEG::Ptr< PartonExtractor >::pointer PExtrPtr
typedef to pair the SudakovFormFactor and the particles in a branching
Definition: ShowerConfig.h:81
Struct to store a potential CKKWTree.
Definition: PotentialTree.h:17
CKKWTreePtr tree() const
Get the tree.
Definition: PotentialTree.h:35