herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
VectorCurrentDecayer.h
1// -*- C++ -*-
2//
3// VectorCurrentDecayer.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_VectorCurrentDecayer_H
10#define HERWIG_VectorCurrentDecayer_H
11//
12// This is the declaration of the VectorCurrentDecayer class.
13//
14
15#include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
16#include "Herwig/Decay/DecayIntegrator.h"
17#include "Herwig/Decay/WeakCurrents/WeakCurrent.h"
18#include "Herwig/Decay/PhaseSpaceMode.h"
19#include "VectorCurrentDecayer.fh"
20
21namespace Herwig {
22using namespace ThePEG;
24
32
33public:
34
39 {}
40
49 virtual int modeNumber(bool & cc, tcPDPtr parent,const tPDVector & children) const;
51
54
64 double me2(const int ichan,const Particle & part,
65 const tPDVector & outgoing,
66 const vector<Lorentz5Momentum> & momenta,
67 MEOption meopt) const;
68
72 virtual void constructSpinInfo(const Particle & part,
74
80 virtual Energy partialWidth(tPDPtr inpart, vector<tPDPtr> out);
82
86 void setDecayInfo(PDPtr in, const vector<tPDPtr> & outCurrent,
87 WeakCurrentPtr current);
88
89public:
90
98
104 void persistentInput(PersistentIStream & is, int version);
106
113 static void Init();
114
115protected:
116
123 virtual IBPtr clone() const;
124
129 virtual IBPtr fullclone() const;
131
132protected:
133
141 virtual void doinit();
142
147 virtual void doinitrun();
149
150protected:
151
157 int modeNumber(bool & cc, vector<long> id) const;
158
163 unsigned int mode() const { return mode_; }
164
168 WeakCurrentPtr weakCurrent() const { return current_; }
169
170private:
171
177
178private:
179
184
188 vector<tPDPtr> currentOut_;
189
194
198 vector<Complex> cSMmed_;
199
203 WeakCurrentPtr current_;
204
208 unsigned int mode_;
209
214
218 double wgtmax_;
219
223 vector<double> weights_;
224
229
233 mutable vector<VectorWaveFunction> vectors_;
234};
235
236}
237
238#endif /* HERWIG_VectorCurrentDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
Here is the documentation of the VectorCurrentDecayer class.
VectorCurrentDecayer & operator=(const VectorCurrentDecayer &)=delete
The assignment operator is private and must never be called.
vector< tPDPtr > currentOut_
Outgoing particles from the current.
vector< Complex > cSMmed_
SM couplings to the dark mediator.
int wgtloc_
location of the weights
vector< VectorWaveFunction > vectors_
Polarization vectors for the decaying particle.
vector< double > weights_
The weights for the different channels.
int modeNumber(bool &cc, vector< long > id) const
The number of the mode.
WeakCurrentPtr current_
Pointer to the current.
static void Init()
The standard Init function used to initialize the interfaces.
void setDecayInfo(PDPtr in, const vector< tPDPtr > &outCurrent, WeakCurrentPtr current)
set up the decay
double me2(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Return the matrix element squared for a given mode and phase-space channel.
double wgtmax_
the maximum weight
PDPtr inpart_
Incoming particle.
virtual Energy partialWidth(tPDPtr inpart, vector< tPDPtr > out)
Function to return partial Width.
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Complex cDMmed_
DM coupling to the dark mediator.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
unsigned int mode() const
Access to the map between the number of the mode and the modes in the current.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
RhoDMatrix rho_
Spin density matrix.
unsigned int mode_
mapping of the modes to the currents
virtual IBPtr clone() const
Make a simple clone of this object.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
VectorCurrentDecayer()
The default constructor.
virtual void doinitrun()
Initialize this object.
WeakCurrentPtr weakCurrent() const
Access to the weak current.
-*- C++ -*-
ThePEG::Ptr< ParticleData >::transient_pointer tPDPtr
std::complex< double > Complex
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr