herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Shower
QTilde
Matching
PowhegShowerHandler.h
1
// -*- C++ -*-
2
//
3
// PowhegShowerHandler.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_PowhegShowerHandler_H
10
#define HERWIG_PowhegShowerHandler_H
11
//
12
// This is the declaration of the PowhegShowerHandler class.
13
//
14
15
#include "Herwig/Shower/QTilde/QTildeShowerHandler.h"
16
#include "Herwig/MatrixElement/Matchbox/MatchboxFactory.h"
17
#include "Herwig/MatrixElement/HwMEBase.h"
18
#include "Herwig/Shower/QTilde/Base/HardBranching.h"
19
20
#include "Herwig/Shower/QTilde/Matching/CKKWTree.h"
21
#include "Herwig/Shower/QTilde/Matching/ProtoTree.h"
22
#include "Herwig/Shower/QTilde/Matching/ProtoBranching.h"
23
#include "Herwig/Shower/QTilde/Matching/PotentialTree.h"
24
25
#include "ThePEG/MatrixElement/DiagramBase.fh"
26
#include "ThePEG/MatrixElement/MEBase.h"
27
#include "ThePEG/PDF/PartonExtractor.h"
28
#include "Herwig/Shower/QTilde/Base/HardTree.h"
29
30
// #include "Herwig/Shower/QTilde/SplittingFunctions/SplittingGenerator.h"
31
// #include "Herwig/Shower/QTilde/Base/ShowerModel.h"
32
// #include "ThePEG/PDF/BeamParticleData.h"
33
// #include "Herwig/Shower/QTilde/Base/ShowerTree.h"
34
// #include "Herwig/Shower/QTilde/Base/ShowerProgenitor.fh"
35
// #include "Herwig/Shower/QTilde/QTildeShowerHandler.fh"
36
// #include "Herwig/Shower/QTilde/Base/Branching.h"
37
// #include "Herwig/Shower/QTilde/Base/ShowerVeto.h"
38
// #include "ThePEG/Handlers/XComb.h"
39
// #include "Herwig/Decay/HwDecayerBase.h"
40
41
42
namespace
Herwig
{
43
44
using namespace
ThePEG
;
45
46
class
PowhegShowerHandler
:
public
QTildeShowerHandler
{
47
48
public
:
49
53
PowhegShowerHandler
() :
subtractionIntegral_
(false),
54
enforceColourConsistency_
(false),
55
forcePartners_
(false),
56
decayRadiation_
(0)
57
{}
58
59
public
:
60
61
Ptr<MatchboxFactory>::tptr Factory()
const
{
return
MatchboxFactory::currentFactory
();}
62
67
virtual
bool
canHandleMatchboxTrunc
()
const
{
return
true
; }
68
69
protected
:
70
74
virtual
HardTreePtr
generateCKKW
(ShowerTreePtr tree)
const
;
75
76
protected
:
77
81
MEPtr
matrixElement
()
const
{
return
matrixElement_
;}
82
86
PotentialTree
doClustering
(
tSubProPtr
sub,ShowerTreePtr showerTree)
const
;
87
91
PotentialTree
&
hardTree
() {
return
hardTree_
;}
92
const
PotentialTree
&
hardTree
()
const
{
return
hardTree_
;}
93
97
void
hardTree
(
PotentialTree
in)
const
{
hardTree_
= in;}
98
102
bool
fuzzyEqual
(Lorentz5Momentum a, Lorentz5Momentum b)
const
;
103
107
set<ProtoBranchingPtr> &
protoBranchings
()
const
{
return
protoBranchings_
;}
108
112
set< ProtoTreePtr > &
protoTrees
()
const
{
return
protoTrees_
;}
113
118
void
fillProtoTrees
( ProtoTreePtr ,
long
id
)
const
;
119
126
tProtoBranchingPtr
getCluster
( tProtoBranchingPtr, tProtoBranchingPtr )
const
;
127
133
bool
repeatProtoTree
( ProtoTreePtr currentProtoTree )
const
;
134
138
BranchingElement
allowedFinalStateBranching
( tProtoBranchingPtr &,
139
tProtoBranchingPtr &)
const
;
140
144
BranchingElement
allowedInitialStateBranching
( tProtoBranchingPtr & ,
145
tProtoBranchingPtr &)
const
;
146
150
bool
checkDiagram
(
PotentialTree
&,tcDiagPtr)
const
;
151
152
bool
subtractionIntegral()
const
{
return
subtractionIntegral_
;}
153
154
void
setSubtractionIntegral(
bool
subInt)
const
{
subtractionIntegral_
=subInt;}
155
156
157
private
:
158
162
mutable
MEPtr
matrixElement_
;
163
167
mutable
PotentialTree
hardTree_
;
168
172
mutable
set<ProtoBranchingPtr>
protoBranchings_
;
173
177
mutable
set< ProtoTreePtr >
protoTrees_
;
178
182
mutable
vector< pair< PotentialTree, double > >
hardTrees_
;
183
191
mutable
map<pair<long,long>,
BranchingElement
>
allowedFinal_
;
192
196
mutable
multimap<long, BranchingElement >
allowedInitial_
;
198
199
public
:
200
207
void
persistentOutput
(
PersistentOStream
& os)
const
;
208
214
void
persistentInput
(
PersistentIStream
& is,
int
version);
216
223
static
void
Init
();
224
225
protected
:
226
233
virtual
IBPtr
clone
()
const
;
234
239
virtual
IBPtr
fullclone
()
const
;
241
242
protected
:
243
251
virtual
void
doinit
();
253
254
private
:
255
260
PowhegShowerHandler
&
operator=
(
const
PowhegShowerHandler
&) =
delete
;
261
262
private
:
263
267
mutable
int
emitter_
;
268
272
mutable
int
spectator_
;
273
277
mutable
bool
subtractionIntegral_
;
278
282
bool
enforceColourConsistency_
;
283
287
bool
forcePartners_
;
288
292
unsigned
int
decayRadiation_
;
293
294
};
295
296
}
297
298
#endif
/* HERWIG_PowhegShowerHandler_H */
Herwig::MatchboxFactory::currentFactory
static const Ptr< MatchboxFactory >::tptr currentFactory()
Pointer to the current factory object.
Definition:
MatchboxFactory.h:54
Herwig::PowhegShowerHandler
Definition:
PowhegShowerHandler.h:46
Herwig::PowhegShowerHandler::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::PowhegShowerHandler::hardTree
void hardTree(PotentialTree in) const
Access to the select tree.
Definition:
PowhegShowerHandler.h:97
Herwig::PowhegShowerHandler::repeatProtoTree
bool repeatProtoTree(ProtoTreePtr currentProtoTree) const
Checks whether a ProtoTree containing the same branchings already exists in protoTrees_ in which case...
Herwig::PowhegShowerHandler::allowedFinalStateBranching
BranchingElement allowedFinalStateBranching(tProtoBranchingPtr &, tProtoBranchingPtr &) const
Returns the branching element for an FS-FS clustering.
Herwig::PowhegShowerHandler::matrixElement
MEPtr matrixElement() const
Access to the core matrix element.
Definition:
PowhegShowerHandler.h:81
Herwig::PowhegShowerHandler::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Herwig::PowhegShowerHandler::emitter_
int emitter_
Emitter particle from the original generation.
Definition:
PowhegShowerHandler.h:267
Herwig::PowhegShowerHandler::subtractionIntegral_
bool subtractionIntegral_
Whether or not a subtraction integral.
Definition:
PowhegShowerHandler.h:277
Herwig::PowhegShowerHandler::allowedInitialStateBranching
BranchingElement allowedInitialStateBranching(tProtoBranchingPtr &, tProtoBranchingPtr &) const
Returns the branching element for an IS-FS clustering.
Herwig::PowhegShowerHandler::hardTrees_
vector< pair< PotentialTree, double > > hardTrees_
The possible shower configurations that are angular-ordered.
Definition:
PowhegShowerHandler.h:182
Herwig::PowhegShowerHandler::getCluster
tProtoBranchingPtr getCluster(tProtoBranchingPtr, tProtoBranchingPtr) const
Function looks to see if a cluster of the branchings already exists in protoBranchings_ if so returns...
Herwig::PowhegShowerHandler::hardTree_
PotentialTree hardTree_
The chosen hard tree.
Definition:
PowhegShowerHandler.h:167
Herwig::PowhegShowerHandler::allowedFinal_
map< pair< long, long >, BranchingElement > allowedFinal_
Which branchings are allowed?
Definition:
PowhegShowerHandler.h:191
Herwig::PowhegShowerHandler::protoTrees
set< ProtoTreePtr > & protoTrees() const
The ProtoTrees which will become CKKWTrees.
Definition:
PowhegShowerHandler.h:112
Herwig::PowhegShowerHandler::fuzzyEqual
bool fuzzyEqual(Lorentz5Momentum a, Lorentz5Momentum b) const
Check if two momenta are equal within 1%.
Herwig::PowhegShowerHandler::fillProtoTrees
void fillProtoTrees(ProtoTreePtr, long id) const
Recursive function to find all possible clustered trees.
Herwig::PowhegShowerHandler::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Herwig::PowhegShowerHandler::generateCKKW
virtual HardTreePtr generateCKKW(ShowerTreePtr tree) const
Generate hard emissions for CKKW etc.
Herwig::PowhegShowerHandler::canHandleMatchboxTrunc
virtual bool canHandleMatchboxTrunc() const
Return true, if the shower handler can generate a truncated shower for POWHEG style events generated ...
Definition:
PowhegShowerHandler.h:67
Herwig::PowhegShowerHandler::enforceColourConsistency_
bool enforceColourConsistency_
Whether or not do enforce consistency of the Born and real colour flows.
Definition:
PowhegShowerHandler.h:282
Herwig::PowhegShowerHandler::doClustering
PotentialTree doClustering(tSubProPtr sub, ShowerTreePtr showerTree) const
Creates all (ordered) cluster histories and selects one.
Herwig::PowhegShowerHandler::protoBranchings
set< ProtoBranchingPtr > & protoBranchings() const
Access to the potential branchings.
Definition:
PowhegShowerHandler.h:107
Herwig::PowhegShowerHandler::spectator_
int spectator_
Spectator particle from the original generation.
Definition:
PowhegShowerHandler.h:272
Herwig::PowhegShowerHandler::PowhegShowerHandler
PowhegShowerHandler()
The default constructor.
Definition:
PowhegShowerHandler.h:53
Herwig::PowhegShowerHandler::allowedInitial_
multimap< long, BranchingElement > allowedInitial_
The allowed initial-state branchings.
Definition:
PowhegShowerHandler.h:196
Herwig::PowhegShowerHandler::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::PowhegShowerHandler::protoBranchings_
set< ProtoBranchingPtr > protoBranchings_
All the Protobranchings used in finding the shower histories.
Definition:
PowhegShowerHandler.h:172
Herwig::PowhegShowerHandler::forcePartners_
bool forcePartners_
Force emitter and spectator partners.
Definition:
PowhegShowerHandler.h:287
Herwig::PowhegShowerHandler::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::PowhegShowerHandler::checkDiagram
bool checkDiagram(PotentialTree &, tcDiagPtr) const
Returns the diagram corresponding to the (leading-order) hardTree.
Herwig::PowhegShowerHandler::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::PowhegShowerHandler::protoTrees_
set< ProtoTreePtr > protoTrees_
The ProtoTrees which will become CKKWTrees.
Definition:
PowhegShowerHandler.h:177
Herwig::PowhegShowerHandler::matrixElement_
MEPtr matrixElement_
The matrix element for the core process.
Definition:
PowhegShowerHandler.h:162
Herwig::PowhegShowerHandler::operator=
PowhegShowerHandler & operator=(const PowhegShowerHandler &)=delete
The assignment operator is private and must never be called.
Herwig::PowhegShowerHandler::hardTree
PotentialTree & hardTree()
Access to the select tree.
Definition:
PowhegShowerHandler.h:91
Herwig::PowhegShowerHandler::decayRadiation_
unsigned int decayRadiation_
Handling of radiation in decays.
Definition:
PowhegShowerHandler.h:292
Herwig::QTildeShowerHandler
The QTildeShowerHandler class.
Definition:
QTildeShowerHandler.h:36
ThePEG::PersistentIStream
ThePEG::PersistentOStream
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::tSubProPtr
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
Herwig::BranchingElement
typedef to pair the SudakovFormFactor and the particles in a branching
Definition:
ShowerConfig.h:81
Herwig::PotentialTree
Struct to store a potential CKKWTree.
Definition:
PotentialTree.h:17
Generated on Thu Jun 20 2024 17:50:53 for Herwig by
1.9.6