herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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"
9 #include <ThePEG/Config/ThePEG.h>
11 #include <ThePEG/EventRecord/RhoDMatrix.h>
12 #include "DecayMatrixElement.fh"
13 
14 namespace Herwig {
15 
16 using namespace ThePEG;
17 
22 
23 public:
24 
30  DecayMatrixElement(unsigned int ntemp=999, PDT::Spin spin = PDT::SpinUndefined)
31  : nOut_(ntemp), inSpin_(spin) {}
32 
36  virtual ~DecayMatrixElement();
38 
39 public:
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 
97 public:
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 
239 private:
240 
245  DecayMatrixElement & operator=(const DecayMatrixElement &) = delete;
246 
247 protected:
248 
252  vector<PDT::Spin> & outspin() {return outSpin_;}
253 
254 private:
255 
259  unsigned int nOut_;
260 
265 
269  vector<PDT::Spin> outSpin_;
270 
271 };
272 
273 }
274 
275 #endif /* Herwig_DecayMatrixElement_H */
PDT::Spin inspin() const
Access to the spins of the particles.
std::complex< double > Complex
PDT::Spin inSpin_
Spin of the incoming particle as 2s+1.
Here is the documentation of the DecayMatrixElement class.
unsigned int nOut_
Number of outgoing particles.
Generator< Zero > zero(double low, double up)
Construct a zero density.
unsigned int nOut() const
Get the number of outgoing particles.
DecayMatrixElement(unsigned int ntemp=999, PDT::Spin spin=PDT::SpinUndefined)
The default constructor.
vector< PDT::Spin > & outspin()
Get the spins of the outgoing particles.
-*- C++ -*-
vector< PDT::Spin > outSpin_
Spins of the outgoing particles.
const vector< PDT::Spin > & outspin() const
Get the spins of the outgoing particles.