herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
ClusterHadronizationHandler.h
1 // -*- C++ -*-
2 //
3 // ClusterHadronizationHandler.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_ClusterHadronizationHandler_H
10 #define HERWIG_ClusterHadronizationHandler_H
11 
12 #include <ThePEG/Handlers/HadronizationHandler.h>
13 #include "PartonSplitter.h"
14 #include "ClusterFinder.h"
15 #include "ColourReconnector.h"
16 #include "ClusterFissioner.h"
17 #include "LightClusterDecayer.h"
18 #include "ClusterDecayer.h"
19 #include "ClusterHadronizationHandler.fh"
20 
21 namespace Herwig {
22 using namespace ThePEG;
23 
24 
52 
53 public:
54 
62  virtual void handle(EventHandler & ch, const tPVector & tagged,
63  const Hint & hint);
64 
69  Energy2 minVirtuality2() const
70  { return _minVirtuality2; }
71 
76  Length maxDisplacement() const
77  { return _maxDisplacement; }
78 
84  { return _underlyingEventHandler; }
85 
90  if(!currentHandler_){
91  cerr<< " \nCreating new ClusterHadronizationHandler without input from infiles.";
92  cerr<< " \nWhen using for example the string model ";
93  cerr<< " hadronic decays are still treated by the Cluster model\n";
94  currentHandler_=new ClusterHadronizationHandler();;
95  }
96  return currentHandler_;
97  }
98 
99 public:
100 
107  void persistentOutput(PersistentOStream & os) const;
108 
114  void persistentInput(PersistentIStream & is, int version);
116 
120  static void Init();
121 
122 protected:
123 
130  virtual IBPtr clone() const;
131 
136  virtual IBPtr fullclone() const;
138 
139 private:
140 
144  ClusterHadronizationHandler & operator=(const ClusterHadronizationHandler &) = delete;
145 
149  PartonSplitterPtr _partonSplitter;
150 
154  ClusterFinderPtr _clusterFinder;
155 
159  ColourReconnectorPtr _colourReconnector;
160 
164  ClusterFissionerPtr _clusterFissioner;
165 
169  LightClusterDecayerPtr _lightClusterDecayer;
170 
174  ClusterDecayerPtr _clusterDecayer;
175 
180  Energy2 _minVirtuality2 = 0.1_GeV2;
181 
186  Length _maxDisplacement = 1.0e-10_mm;
187 
192 
196  bool _reduceToTwoComponents = true;
197 
201  void _setChildren(const ClusterVector & clusters) const;
202 
207 
208 
209 };
210 
211 
212 }
213 
214 #endif /* HERWIG_ClusterHadronizationHandler_H */
bool isSoftUnderlyingEventON() const
It returns true/false according if the soft underlying model is switched on/off.
ClusterFissionerPtr _clusterFissioner
This is a pointer to a Herwig::ClusterFissioner object.
static ClusterHadronizationHandler * currentHandler_
pointer to "this", the current HadronizationHandler.
Energy2 minVirtuality2() const
It returns minimum virtuality^2 of partons to use in calculating distances.
static const ClusterHadronizationHandler * currentHandler()
pointer to "this", the current HadronizationHandler.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
Length maxDisplacement() const
It returns the maximum displacement that is allowed for a particle (used to determine the position of...
ThePEG::Ptr< StepHandler >::pointer StepHdlPtr
ClusterFinderPtr _clusterFinder
This is a pointer to a Herwig::ClusterFinder object.
StepHdlPtr _underlyingEventHandler
The pointer to the Underlying Event handler.
Class that controls the cluster hadronization algorithm.
vector< ClusterPtr > ClusterVector
This file contains the typedef declarations used in Hadronization.
Definition: CluHadConfig.h:38
PartonSplitterPtr _partonSplitter
This is a pointer to a Herwig::PartonSplitter object.
-*- C++ -*-
ColourReconnectorPtr _colourReconnector
This is a pointer to a Herwig::ColourReconnector object.
vector< tPPtr > tPVector
ClusterDecayerPtr _clusterDecayer
This is a pointer to a Herwig::ClusterDecayer object.
LightClusterDecayerPtr _lightClusterDecayer
This is a pointer to a Herwig::LightClusterDecayer object.