herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
22 namespace Herwig {
23 
24 using namespace ThePEG;
25 
56 
57 public:
58 
64  SplittingGenerator() : _deTuning(1.) {}
66 
67 public:
68 
92  Branching chooseForwardBranching(ShowerParticle & particle,
93  double enhance,
94  ShowerInteraction type) const;
95 
106  Branching chooseDecayBranching(ShowerParticle & particle,
107  const ShowerParticle::EvolutionScales & maxScales,
108  Energy minmass,double enhance,
109  ShowerInteraction type) const;
110 
132  Branching
133  chooseBackwardBranching(ShowerParticle & particle,
134  PPtr beamparticle,
135  double enhance,
136  Ptr<BeamParticleData>::transient_const_pointer beam,
137  ShowerInteraction type,
138  tcPDFPtr , Energy ) const;
140 
141 public:
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 
176  const BranchingList & finalStateBranchings() const { return _fbranchings; }
177 
181  const BranchingList & initialStateBranchings() const { return _bbranchings; }
183 
184 
185 public:
186 
193  void persistentOutput(PersistentOStream & os) const;
194 
200  void persistentInput(PersistentIStream & is, int version);
202 
209  static void Init();
210 
211 protected:
212 
219  virtual IBPtr clone() const;
220 
225  virtual IBPtr fullclone() const;
227 
228 protected:
229 
241  virtual void rebind(const TranslationMap & trans)
242  ;
243 
249  virtual IVector getReferences();
251 
252 private:
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 
293 private:
294 
299  SplittingGenerator & operator=(const SplittingGenerator &) = delete;
300 
301 private:
302 
307 
312 
316  double _deTuning;
317 };
318 
319 }
320 
321 #endif /* HERWIG_SplittingGenerator_H */
ThePEG::Ptr< Particle >::pointer PPtr
string addInitialSplitting(string arg)
Add an initial-state splitting.
ShowerInteraction
Handy header file to be included in all Shower classes.
ThePEG::Ptr< PDFBase >::transient_const_pointer tcPDFPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
string deleteInitialSplitting(string arg)
Add an initial-state splitting.
BranchingList _bbranchings
Lists of the branchings and the appropriate Sudakovs for backward branchings.
BranchingList _fbranchings
List of the branchings and the appropriate Sudakovs for forward branchings.
multimap< long, BranchingElement > BranchingList
typedef to pair the PDG code of the particle and the BranchingElement
Definition: ShowerConfig.h:125
SplittingGenerator()
The default constructor.
vector< tcPDPtr > IdList
Definition of the IdList for branchings.
Definition: ShowerConfig.h:64
double _deTuning
The detuning parameter.
const BranchingList & finalStateBranchings() const
Access to the splittings.
const BranchingList & initialStateBranchings() const
Access the initial-state branchings.
string addFinalSplitting(string arg)
Methods to parse the information from the input files to create the branchings.
The branching struct is used to store information on the branching.
Definition: Branching.h:20
This class represents a particle in the showering process.
-*- C++ -*-
string deleteFinalSplitting(string arg)
Add a final-state splitting.
vector< IBPtr > IVector
This class is responsible for creating, at the beginning of the Run, all the SplittingFunction object...
Struct to store the evolution scales.