herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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#include "Herwig/Utilities/Reshuffler.h"
21#include "GluonMassGenerator.h"
22
23namespace Herwig {
24using namespace ThePEG;
25
26
54 public HadronizationHandler, public Reshuffler {
55
56public:
57
65 virtual void handle(EventHandler & ch, const tPVector & tagged,
66 const Hint & hint);
67
72 Energy2 minVirtuality2() const
73 { return _minVirtuality2; }
74
79 Length maxDisplacement() const
80 { return _maxDisplacement; }
81
87 { return _underlyingEventHandler; }
88
93 if(!currentHandler_){
94 cerr<< " \nCreating new ClusterHadronizationHandler without input from infiles.";
95 cerr<< " \nWhen using for example the string model ";
96 cerr<< " hadronic decays are still treated by the Cluster model\n";
98 }
99 return currentHandler_;
100 }
101
105 Ptr<GluonMassGenerator>::tptr gluonMassGenerator() const {
106 return gluonMassGenerator_;
107 }
108
109public:
110
118
124 void persistentInput(PersistentIStream & is, int version);
126
130 static void Init();
131
132protected:
133
140 virtual IBPtr clone() const;
141
146 virtual IBPtr fullclone() const;
148
149private:
150
155
159 PartonSplitterPtr _partonSplitter;
160
164 ClusterFinderPtr _clusterFinder;
165
169 ColourReconnectorPtr _colourReconnector;
170
174 ClusterFissionerPtr _clusterFissioner;
175
179 LightClusterDecayerPtr _lightClusterDecayer;
180
184 ClusterDecayerPtr _clusterDecayer;
185
189 bool reshuffle_ = false;
190
195
199 Ptr<GluonMassGenerator>::ptr gluonMassGenerator_;
200
205 Energy2 _minVirtuality2 = 0.1_GeV2;
206
211 Length _maxDisplacement = 1.0e-10_mm;
212
217
222
226 void _setChildren(const ClusterVector & clusters) const;
227
228
233 vector<PVector>& reshufflelists);
234
235
240
241
242};
243
244
245}
246
247#endif /* HERWIG_ClusterHadronizationHandler_H */
Class that controls the cluster hadronization algorithm.
ClusterFinderPtr _clusterFinder
This is a pointer to a Herwig::ClusterFinder object.
Energy2 _minVirtuality2
The minimum virtuality^2 of partons to use in calculating distances.
virtual void handle(EventHandler &ch, const tPVector &tagged, const Hint &hint)
The main method which manages the all cluster hadronization.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Ptr< GluonMassGenerator >::tptr gluonMassGenerator() const
A pointer to a gluon mass generator for the reshuffling.
virtual IBPtr clone() const
Make a simple clone of this object.
Length _maxDisplacement
The maximum displacement that is allowed for a particle (used to determine the position of a cluster ...
static ClusterHadronizationHandler * currentHandler_
pointer to "this", the current HadronizationHandler.
void _setChildren(const ClusterVector &clusters) const
Tag the constituents of the clusters as their parents.
static void Init()
Standard Init function used to initialize the interfaces.
static const ClusterHadronizationHandler * currentHandler()
pointer to "this", the current HadronizationHandler.
ColourReconnectorPtr _colourReconnector
This is a pointer to a Herwig::ColourReconnector object.
Energy2 minVirtuality2() const
It returns minimum virtuality^2 of partons to use in calculating distances.
int reshuffleMode_
Which type of reshuffling (global (default) or colour connected) is used.
StepHdlPtr _underlyingEventHandler
The pointer to the Underlying Event handler.
PartonSplitterPtr _partonSplitter
This is a pointer to a Herwig::PartonSplitter object.
bool isSoftUnderlyingEventON() const
It returns true/false according if the soft underlying model is switched on/off.
Length maxDisplacement() const
It returns the maximum displacement that is allowed for a particle (used to determine the position of...
ClusterHadronizationHandler & operator=(const ClusterHadronizationHandler &)=delete
Private and non-existent assignment operator.
LightClusterDecayerPtr _lightClusterDecayer
This is a pointer to a Herwig::LightClusterDecayer object.
ClusterDecayerPtr _clusterDecayer
This is a pointer to a Herwig::ClusterDecayer object.
ClusterFissionerPtr _clusterFissioner
This is a pointer to a Herwig::ClusterFissioner object.
Ptr< GluonMassGenerator >::ptr gluonMassGenerator_
A pointer to a gluon mass generator for the reshuffling.
bool reshuffle_
Perform reshuffling to constituent masses.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
bool _reduceToTwoComponents
How to handle baryon-number clusters.
void splitIntoColourSinglets(PVector thelist, vector< PVector > &reshufflelists)
Split the list of partons into colour connected sub-lists before reshuffling.
The Reshuffler class implements reshuffling of partons on their nominal mass shell to their constitue...
Definition: Reshuffler.h:29
vector< ClusterPtr > ClusterVector
This file contains the typedef declarations used in Hadronization.
Definition: CluHadConfig.h:38
-*- C++ -*-
ThePEG::Ptr< StepHandler >::pointer StepHdlPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPPtr > tPVector
vector< PPtr > PVector