herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
DecayMatrixElement.h
1// -*- C++ -*-
2#ifndef Herwig_DecayMatrixElement_H
3#define Herwig_DecayMatrixElement_H
4//
5// This is the declaration of the DecayMatrixElement class.
6//
7
8#include "ThePEG/Pointer/ReferenceCounted.h"
11#include <ThePEG/EventRecord/RhoDMatrix.h>
12#include "DecayMatrixElement.fh"
13
14namespace Herwig {
15
16using namespace ThePEG;
17
22
23public:
24
30 DecayMatrixElement(unsigned int ntemp=999, PDT::Spin spin = PDT::SpinUndefined)
31 : nOut_(ntemp), inSpin_(spin) {}
32
38
39public:
40
48 PDT::Spin inspin() const {return inSpin_;}
49
53 const vector<PDT::Spin> & outspin() const {return outSpin_;}
55
59 unsigned int nOut() const {return nOut_;}
60
69 virtual RhoDMatrix calculateDMatrix(const vector<RhoDMatrix> & rhoout) const = 0;
70
77 virtual RhoDMatrix calculateRhoMatrix(int ipart,const RhoDMatrix & rhoin,
78 const vector<RhoDMatrix> & rhoout) const = 0;
79
85 virtual Complex contract(const RhoDMatrix & rhoin) const = 0;
86
87 // /**
88 // * Contract the matrix element with the \f$\rho\f$ matrix of the
89 // * incoming particle. The spins of the decay products are summed over.
90 // * @param con The conjugate matrix elemetn for the contraction
91 // * @param rhoin The \f$\rho\f$ matrix for the decaying particle.
92 // */
93 // Complex contract(const DecayMatrixElement & con,
94 // const RhoDMatrix & rhoin);
96
97public:
98
109 virtual Complex operator () (unsigned int inhel,unsigned int outhel1,
110 unsigned int outhel2) const = 0;
111
118 virtual Complex & operator () (unsigned int inhel,unsigned int outhel1,
119 unsigned int outhel2) = 0;
120
128 virtual Complex operator () (unsigned int inhel,unsigned int outhel1,
129 unsigned int outhel2,unsigned int outhel3) const = 0;
130
138 virtual Complex & operator () (unsigned int inhel,unsigned int outhel1,
139 unsigned int outhel2,unsigned int outhel3) = 0;
140
149 virtual Complex operator () (unsigned int inhel,unsigned int outhel1,
150 unsigned int outhel2,unsigned int outhel3,
151 unsigned int outhel4) const = 0;
152
161 virtual Complex & operator () (unsigned int inhel,unsigned int outhel1,
162 unsigned int outhel2,unsigned int outhel3,
163 unsigned int outhel4) = 0;
164
174 virtual Complex operator () (unsigned int inhel,unsigned int outhel1,
175 unsigned int outhel2,unsigned int outhel3,
176 unsigned int outhel4,unsigned int outhel5) const = 0;
177
187 virtual Complex & operator () (unsigned int inhel,unsigned int outhel1,
188 unsigned int outhel2,unsigned int outhel3,
189 unsigned int outhel4,unsigned int outhel5) = 0;
190
201 virtual Complex operator () (unsigned int inhel,unsigned int outhel1,
202 unsigned int outhel2,unsigned int outhel3,
203 unsigned int outhel4,unsigned int outhel5,
204 unsigned int outhel6) const = 0;
205
216 virtual Complex & operator () (unsigned int inhel,unsigned int outhel1,
217 unsigned int outhel2,unsigned int outhel3,
218 unsigned int outhel4,unsigned int outhel5,
219 unsigned int outhel6) = 0;
220
225 virtual Complex operator () (const vector<unsigned int> & in) const = 0;
226
231 virtual Complex & operator () (const vector<unsigned int> & in) = 0;
233
237 virtual void zero() = 0;
238
239private:
240
246
247protected:
248
252 vector<PDT::Spin> & outspin() {return outSpin_;}
253
254private:
255
259 unsigned int nOut_;
260
265
269 vector<PDT::Spin> outSpin_;
270
271};
272
273}
274
275#endif /* Herwig_DecayMatrixElement_H */
Here is the documentation of the DecayMatrixElement class.
unsigned int nOut() const
Get the number of outgoing particles.
virtual RhoDMatrix calculateRhoMatrix(int ipart, const RhoDMatrix &rhoin, const vector< RhoDMatrix > &rhoout) const =0
Calculate the matrix for a given outgoing particle.
PDT::Spin inspin() const
Access to the spins of the particles.
virtual ~DecayMatrixElement()
The destructor.
virtual RhoDMatrix calculateDMatrix(const vector< RhoDMatrix > &rhoout) const =0
Spin Density matrices.
PDT::Spin inSpin_
Spin of the incoming particle as 2s+1.
const vector< PDT::Spin > & outspin() const
Get the spins of the outgoing particles.
DecayMatrixElement(unsigned int ntemp=999, PDT::Spin spin=PDT::SpinUndefined)
The default constructor.
DecayMatrixElement & operator=(const DecayMatrixElement &)=delete
The assignment operator is private and must never be called.
unsigned int nOut_
Number of outgoing particles.
virtual void zero()=0
Member to zero all the elements for the matrix element.
virtual Complex operator()(unsigned int inhel, unsigned int outhel1, unsigned int outhel2) const =0
Access to the individual helicity components.
virtual Complex contract(const RhoDMatrix &rhoin) const =0
Contract the matrix element with the matrix of the incoming particle.
vector< PDT::Spin > outSpin_
Spins of the outgoing particles.
vector< PDT::Spin > & outspin()
Get the spins of the outgoing particles.
-*- C++ -*-
std::complex< double > Complex