herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
SplittingGenerator.h
1// -*- C++ -*-
2//
3// SplittingGenerator.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_SplittingGenerator_H
10#define HERWIG_SplittingGenerator_H
11//
12// This is the declaration of the SplittingGenerator class.
13//
14
15#include "ThePEG/Interface/Interfaced.h"
16#include "Herwig/Shower/QTilde/Base/Branching.h"
17#include "Herwig/Shower/QTilde/SplittingFunctions/SudakovFormFactor.h"
18#include "SplittingGenerator.fh"
19#include "Herwig/Shower/QTilde/Base/ShowerParticle.h"
20#include "Herwig/Shower/QTilde/Kinematics/ShowerKinematics.h"
21
22namespace Herwig {
23
24using namespace ThePEG;
25
56
57public:
58
66
67public:
68
93 double enhance,
94 ShowerInteraction type) const;
95
107 const ShowerParticle::EvolutionScales & maxScales,
108 Energy minmass,double enhance,
109 ShowerInteraction type) const;
110
132 Branching
134 PPtr beamparticle,
135 double enhance,
136 Ptr<BeamParticleData>::transient_const_pointer beam,
138 tcPDFPtr , Energy ) const;
140
141public:
142
151 string addFinalSplitting(string arg) { return addSplitting(arg,true); }
152
156 string addInitialSplitting(string arg) { return addSplitting(arg,false); }
157
161 string deleteFinalSplitting(string arg) { return deleteSplitting(arg,true); }
162
166 string deleteInitialSplitting(string arg) { return deleteSplitting(arg,false); }
168
177
183
184
185public:
186
194
200 void persistentInput(PersistentIStream & is, int version);
202
209 static void Init();
210
211protected:
212
219 virtual IBPtr clone() const;
220
225 virtual IBPtr fullclone() const;
227
228protected:
229
241 virtual void rebind(const TranslationMap & trans)
242 ;
243
251
252private:
253
260 void addToMap(const IdList & ids, const SudakovPtr & sudakov, bool final);
261
268 void deleteFromMap(const IdList & ids, const SudakovPtr & sudakov, bool final);
269
276 void finalStateBasisVectors(ShowerParticle particle, Lorentz5Momentum & p,
277 Lorentz5Momentum & n) const;
278
284 string addSplitting(string in ,bool final);
285
291 string deleteSplitting(string in ,bool final);
292
293private:
294
300
301private:
302
307
312
316 double _deTuning;
317};
318
319}
320
321#endif /* HERWIG_SplittingGenerator_H */
This class represents a particle in the showering process.
This class is responsible for creating, at the beginning of the Run, all the SplittingFunction object...
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
string deleteFinalSplitting(string arg)
Add a final-state splitting.
const BranchingList & initialStateBranchings() const
Access the initial-state branchings.
string addInitialSplitting(string arg)
Add an initial-state splitting.
virtual IBPtr clone() const
Make a simple clone of this object.
Branching chooseBackwardBranching(ShowerParticle &particle, PPtr beamparticle, double enhance, Ptr< BeamParticleData >::transient_const_pointer beam, ShowerInteraction type, tcPDFPtr, Energy) const
Choose a new backward branching for a space-like particle.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
static void Init()
The standard Init function used to initialize the interfaces.
Branching chooseDecayBranching(ShowerParticle &particle, const ShowerParticle::EvolutionScales &maxScales, Energy minmass, double enhance, ShowerInteraction type) const
Select the next branching of a particles for the initial-state shower in the particle's decay.
virtual IVector getReferences()
Return a vector of all pointers to Interfaced objects used in this object.
void finalStateBasisVectors(ShowerParticle particle, Lorentz5Momentum &p, Lorentz5Momentum &n) const
Obtain the reference vectors for a final-state particle.
Branching chooseForwardBranching(ShowerParticle &particle, double enhance, ShowerInteraction type) const
Methods to select the next branching and reconstruct the kinematics.
void addToMap(const IdList &ids, const SudakovPtr &sudakov, bool final)
Add a branching to the map.
void deleteFromMap(const IdList &ids, const SudakovPtr &sudakov, bool final)
Remove a branching to the map.
string deleteInitialSplitting(string arg)
Add an initial-state splitting.
BranchingList _fbranchings
List of the branchings and the appropriate Sudakovs for forward branchings.
string addSplitting(string in, bool final)
Add a splitting.
virtual void rebind(const TranslationMap &trans)
Rebind pointer to other Interfaced objects.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
SplittingGenerator()
The default constructor.
BranchingList _bbranchings
Lists of the branchings and the appropriate Sudakovs for backward branchings.
const BranchingList & finalStateBranchings() const
Access to the splittings.
string addFinalSplitting(string arg)
Methods to parse the information from the input files to create the branchings.
SplittingGenerator & operator=(const SplittingGenerator &)=delete
The assignment operator is private and must never be called.
string deleteSplitting(string in, bool final)
Delete a splitting.
double _deTuning
The detuning parameter.
ShowerInteraction
Handy header file to be included in all Shower classes.
-*- C++ -*-
vector< tcPDPtr > IdList
Definition of the IdList for branchings.
Definition: ShowerConfig.h:64
multimap< long, BranchingElement > BranchingList
typedef to pair the PDG code of the particle and the BranchingElement
Definition: ShowerConfig.h:127
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< PDFBase >::transient_const_pointer tcPDFPtr
ThePEG::Ptr< Particle >::pointer PPtr
vector< IBPtr > IVector
The branching struct is used to store information on the branching.
Definition: Branching.h:20
Struct to store the evolution scales.