herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
DipoleVertexRecord.h
1 // -*- C++ -*-
2 #ifndef Herwig_DipoleVertexRecord_H
3 #define Herwig_DipoleVertexRecord_H
4 //
5 // This is the declaration of the DipoleVertexRecord class.
6 //
7 
8 #include "ThePEG/Config/ThePEG.h"
9 #include "Herwig/Shower/Dipole/Base/DipoleSplittingInfo.h"
10 #include "Herwig/Shower/Dipole/Base/Dipole.h"
11 #include "ThePEG/EventRecord/RhoDMatrix.h"
12 #include "DipoleShowerParticle.h"
13 
14 namespace Herwig {
15 
16  using namespace ThePEG;
17 
21  class DipoleVertexRecord: public Base {
22 
23  public:
24 
31 
35  virtual ~DipoleVertexRecord() { clear(); }
37 
38  public:
39 
44  void prepareSplitting( const DipoleSplittingInfo& dInfo, const Dipole& dip);
45 
50  void initDecayMatrix(PPtr& particle, Helicity::Direction dir);
51 
58  RhoDMatrix emitterDensityMatrix(PPtr emitter);
59 
63  void generatePhi(DipoleSplittingInfo& dInfo, Dipole& dip);
64 
65 
71  void createSpinInfo(PPtr& part,
72  const Helicity::Direction& dir);
73 
78  void createFermionSpinInfo(PPtr& part,
79  const Helicity::Direction& dir);
80 
85  void createVectorSpinInfo(PPtr& part,
86  const Helicity::Direction& dir);
87 
91  void update(const DipoleSplittingInfo& dInfo);
92 
97  void updateSpinInfo( PPtr& oldPart,
98  PPtr& newPart );
99 
104  void prepareParticleDecay( const PPtr& parent );
105 
110  void updateParticleDecay();
111 
116  //map<PPtr,DipoleSplittingInfo> emitterInfoRecord() const {
117  //return theEmitterInfoRecord;
118  //}
119 
124  // void addToRecord(const DipoleSplittingInfo& dInfo) {
125  // assert(dInfo.emitter());
126  // theEmitterInfoRecord[dInfo.emitter()] = dInfo;
127  // }
128 
133  virtual void clear();
134 
141  static void Init();
142 
143  private:
144 
149 
155  //map<PPtr, DipoleSplittingInfo> theEmitterInfoRecord;
156 
162 
167  DipoleVertexRecord & operator=(const DipoleVertexRecord &);
168 
169  };
170 
171 }
172 
173 #include "ThePEG/Utilities/ClassTraits.h"
174 
175 namespace ThePEG {
176 
181  template <>
184  typedef Base NthBase;
185  };
186 
189  template <>
191  : public ClassTraitsBase<Herwig::DipoleVertexRecord> {
193  static string className() { return "Herwig::DipoleVertexRecord"; }
201  static string library() { return "HwDipoleShower.so"; }
202  };
203 
206 }
207 #endif /* Herwig_DipoleVertexRecord_H */
ThePEG::Ptr< Particle >::pointer PPtr
tcSpinPtr theDecayParentSpinInfo
SW 06/02/2019: Required for NearestNeighbourDipoleAnalysis tests.
DipoleVertexRecord()
The default constructor.
virtual ~DipoleVertexRecord()
The destructor.
DipoleShowerParticle theCurrentEmitter
The current emitter.
Here is the documentation of the DipoleVertexRecord class.
ThePEG::Ptr< SpinInfo >::transient_const_pointer tcSpinPtr
The Dipole class is used by the dipole shower to represent a dipole of two coloured partons...
Definition: Dipole.h:30
-*- C++ -*-
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.