herwig is hosted by Hepforge, IPPP Durham
 Herwig  7.1.5
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
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.