herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
PartnerFinder.h
1 // -*- C++ -*-
2 //
3 // PartnerFinder.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_PartnerFinder_H
10 #define HERWIG_PartnerFinder_H
11 //
12 // This is the declaration of the PartnerFinder class.
13 //
14 #include "Herwig/Shower/QTilde/ShowerConfig.h"
15 #include "ThePEG/Interface/Interfaced.h"
16 #include "PartnerFinder.fh"
17 
18 namespace Herwig {
19 
20 using namespace ThePEG;
21 
25 typedef pair<tShowerParticlePtr,tShowerParticlePtr> ShowerPPair;
26 
45 class PartnerFinder: public Interfaced {
46 
47 public:
48 
52  PartnerFinder() : partnerMethod_(0), QEDPartner_(0), scaleChoice_(0) {}
53 
77  virtual void setInitialEvolutionScales(const ShowerParticleVector &particles,
78  const bool isDecayCase,
80  const bool setPartners=true);
82 protected:
83 
90  virtual IBPtr clone() const {return new_ptr(*this);}
91 
96  virtual IBPtr fullclone() const {return new_ptr(*this);}
98 
99 
100 public:
101 
108  void persistentOutput(PersistentOStream & os) const;
109 
115  void persistentInput(PersistentIStream & is, int version);
117 
124  static void Init();
125 
126 protected:
127 
135  virtual void setInitialQCDEvolutionScales(const ShowerParticleVector &particles,
136  const bool isDecayCase,
137  const bool setPartners=true);
138 
142  virtual void setInitialQEDEvolutionScales(const ShowerParticleVector &particles,
143  const bool isDecayCase,
144  const bool setPartners=true);
146 
152  vector< pair<ShowerPartnerType, tShowerParticlePtr> >
153  findQCDPartners(tShowerParticlePtr particle, const ShowerParticleVector &particles);
154 
160  vector< pair<double, tShowerParticlePtr> >
161  findQEDPartners(tShowerParticlePtr particle, const ShowerParticleVector &particles,
162  const bool isDecayCase);
163 
164 public:
177  pair<Energy,Energy> calculateInitialEvolutionScales(const ShowerPPair &,
178  const bool isDecayCase);
179 
183  pair<Energy,Energy> calculateFinalFinalScales(const Lorentz5Momentum & p1,
184  const Lorentz5Momentum & p2);
185 
189  pair<Energy,Energy> calculateInitialInitialScales(const Lorentz5Momentum& p1,
190  const Lorentz5Momentum& p2);
191 
195  pair<Energy,Energy> calculateInitialFinalScales(const Lorentz5Momentum& pb, const Lorentz5Momentum& pc,
196  const bool isDecayCase);
197 
198 
200 
201 private:
202 
207  PartnerFinder & operator=(const PartnerFinder &) = delete;
208 
209 private:
210 
215 
220 
225 
226 };
227 
228 }
229 
230 #endif /* HERWIG_PartnerFinder_H */
This class is responsible of two related tasks:
Definition: PartnerFinder.h:45
PartnerFinder()
The default constructor.
Definition: PartnerFinder.h:52
vector< ShowerParticlePtr > ShowerParticleVector
A Vector of ShowerParticle pointers.
Definition: ShowerConfig.h:54
ShowerInteraction
Handy header file to be included in all Shower classes.
int QEDPartner_
Choice for the QED radiation partner.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: PartnerFinder.h:96
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: PartnerFinder.h:90
int scaleChoice_
Choice of the scale.
-*- C++ -*-
int partnerMethod_
Method for choosing colour partner.
pair< tShowerParticlePtr, tShowerParticlePtr > ShowerPPair
typedef of a pair of particle for calculating the evolution scales
Definition: PartnerFinder.h:25