herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
ColourReconnector.h
1 // -*- C++ -*-
2 //
3 // ColourReconnector.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_ColourReconnector_H
10 #define HERWIG_ColourReconnector_H
11 
12 #include <ThePEG/Interface/Interfaced.h>
13 #include "CluHadConfig.h"
14 #include "ColourReconnector.fh"
15 
16 namespace Herwig {
17 
18 
19 using namespace ThePEG;
20 
37 
38 public:
39 
46  void rearrange(ClusterVector & clusters);
47 
48  using CluVecIt = ClusterVector::iterator;
49 
50 private:
51 
59  Energy2 _clusterMassSum(const PVector & q, const PVector & aq) const;
60 
61 
69  bool _containsColour8(const ClusterVector & cv, const vector<size_t> & P) const;
70 
76  void _doRecoStatistical(ClusterVector & cv) const;
77 
82  void _doRecoPlain(ClusterVector & cv) const;
83 
84 
88  void _doRecoBaryonic(ClusterVector & cv) const;
89 
90 
91  void _makeBaryonicClusters(ClusterPtr &c1, ClusterPtr &c2, ClusterPtr &c3,
92  ClusterPtr &newcluster1, ClusterPtr &newcluster2) const;
93 
94 
107  CluVecIt _findRecoPartner(CluVecIt cl, ClusterVector & cv) const;
108 
109  CluVecIt _findPartnerRapidity(CluVecIt cl, ClusterVector & cv) const;
110 
111  CluVecIt _findPartnerBaryonic(CluVecIt cl, ClusterVector & cv,
112  bool & tetraCand,
113  const ClusterVector& a,
114  CluVecIt &baryonic1,
115  CluVecIt &baryonic2 ) const;
116 
117 
118 
119 
125  pair <ClusterPtr,ClusterPtr> _reconnect(ClusterPtr &c1, ClusterPtr &c2) const;
126 
130  pair <ClusterPtr,ClusterPtr> _reconnectBaryonic(ClusterPtr &c1, ClusterPtr &c2) const;
131 
132 
143  pair <int,int>
144  _shuffle(const PVector & q, const PVector & aq, unsigned maxtries = 10) const;
145 
146 
152  int _algorithm = 0;
153 
157  int _clreco = 0;
158 
159 
166  double _initTemp = 0.01;
167 
173  double _annealingFactor = 0.21;
174 
179  unsigned int _annealingSteps = 10;
180 
186  double _triesPerStepFactor = 0.66;
187 
191  double _preco = 0.5;
192 
193 
194  double _precoBaryonic = 0.5;
195 
203  Length _maxDistance = picometer;
204 
209  bool _isColour8(tcPPtr p, tcPPtr q) const;
210 
214  unsigned int _octetOption = 0;
215 
216 public:
217 
224  void persistentOutput(PersistentOStream & os) const;
225 
231  void persistentInput(PersistentIStream & is, int version);
233 
237  static void Init();
238 
239 protected:
240 
247  virtual IBPtr clone() const;
248 
253  virtual IBPtr fullclone() const;
255 
256 
257 private:
258 
262  ColourReconnector & operator=(const ColourReconnector &) = delete;
263 
264 
265 };
266 
267 
268 }
269 
270 #endif /* HERWIG_ColourReconnector_H */
271 
Class for changing colour reconnections of partons.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< ClusterPtr > ClusterVector
This file contains the typedef declarations used in Hadronization.
Definition: CluHadConfig.h:38
ThePEG::Ptr< Particle >::transient_const_pointer tcPPtr
-*- C++ -*-
vector< PPtr > PVector