herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
PScalar4FermionsDecayer.h
1 // -*- C++ -*-
2 //
3 // PScalar4FermionsDecayer.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_PScalar4FermionsDecayer_H
10 #define HERWIG_PScalar4FermionsDecayer_H
11 // This is the declaration of the PScalar4FermionsDecayer class.
12 
13 #include "Herwig/Decay/DecayIntegrator.h"
14 #include "Herwig/Decay/DecayPhaseSpaceMode.h"
15 #include "ThePEG/Helicity/LorentzSpinorBar.h"
16 
17 namespace Herwig {
18 using namespace ThePEG;
19 
45 
46 public:
47 
52 
59  virtual int modeNumber(bool & cc, tcPDPtr parent,
60  const tPDVector & children) const;
61 
70  double me2(const int ichan,const Particle & part,
71  const ParticleVector & decay, MEOption meopt) const;
72 
78  virtual void dataBaseOutput(ofstream & os,bool header) const;
79 
80 public:
81 
88  void persistentOutput(PersistentOStream & os) const;
89 
95  void persistentInput(PersistentIStream & is, int version);
97 
101  static void Init();
102 
103 protected:
104 
111  virtual IBPtr clone() const {return new_ptr(*this);}
112 
117  virtual IBPtr fullclone() const {return new_ptr(*this);}
119 
120 protected:
121 
124 
130  virtual void doinit();
131 
135  virtual void doinitrun();
137 
138 private:
139 
143  PScalar4FermionsDecayer & operator=(const PScalar4FermionsDecayer &) = delete;
144 
145 private:
146 
150  vector<InvEnergy> _coupling;
151 
155  vector<int> _incoming;
156 
160  vector<int> _outgoing1;
161 
165  vector<int> _outgoing2;
166 
170  vector<double> _maxweight;
171 
175  vector<int> _includeVMD;
176 
180  vector<int> _VMDid;
181 
185  vector<Energy> _VMDmass;
186 
190  vector<Energy> _VMDwidth;
191 
195  unsigned int _initsize;
196 
200  mutable RhoDMatrix _rho;
201 
205  mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > _wave[2];
206 
210  mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _wavebar[2];
211 };
212 
213 }
214 
215 
216 #endif /* HERWIG_PScalar4FermionsDecayer_H */
vector< Energy > _VMDmass
Mass of the particle for the VMD factor.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
unsigned int _initsize
initial number of modes
vector< int > _VMDid
PDG code of the particle for the VMD factor.
vector< InvEnergy > _coupling
coupling for a decay
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< int > _outgoing1
the PDG codes for the first outgoing fermion
vector< int > _incoming
the PDG codes for the incoming particle
vector< int > _includeVMD
Include the VMD factor.
MEOption
Enum for the matrix element option.
vector< double > _maxweight
maximum weight for a decay
virtual IBPtr clone() const
Make a simple clone of this object.
RhoDMatrix _rho
Spin density matrix.
vector< tPDPtr > tPDVector
Main class for Decayers implementing multi-channel phase space integration.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< int > _outgoing2
the PDG codes for the second outgoing
vector< Energy > _VMDwidth
Width of the particle for the VMD factor.
The PScalar4FermionsDecayer class is designed for the decay of the neutral pion to four leptons...
-*- C++ -*-
vector< PPtr > ParticleVector