herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
PScalarLeptonNeutrinoDecayer.h
1 // -*- C++ -*-
2 //
3 // PScalarLeptonNeutrinoDecayer.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_PScalarLeptonNeutrinoDecayer_H
10 #define HERWIG_PScalarLeptonNeutrinoDecayer_H
11 // This is the declaration of the PScalarLeptonNeutrinoDecayer 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 
40 
41 public:
42 
47 
54  virtual int modeNumber(bool & cc, tcPDPtr parent,
55  const tPDVector & children) const;
56 
65  double me2( const int ichan,const Particle & part,
66  const ParticleVector & decay, MEOption meopt) const;
67 
73  virtual void dataBaseOutput(ofstream & os,bool header) const;
74 
75 public:
76 
83  void persistentOutput(PersistentOStream & os) const;
84 
90  void persistentInput(PersistentIStream & is, int version);
92 
96  static void Init();
97 
98 protected:
99 
106  virtual IBPtr clone() const {return new_ptr(*this);}
107 
112  virtual IBPtr fullclone() const {return new_ptr(*this);}
114 
115 protected:
116 
119 
125  virtual void doinit();
126 
130  virtual void doinitrun();
132 
133 private:
134 
138  PScalarLeptonNeutrinoDecayer & operator=(const PScalarLeptonNeutrinoDecayer &) = delete;
139 
140 private:
141 
145  vector<int> _incoming;
146 
151  vector<Energy> _decayconstant;
152 
156  vector<unsigned int> _leptons;
157 
161  vector<double> _maxweighte;
162 
166  vector<double> _maxweightmu;
167 
171  vector<double> _maxweighttau;
172 
176  unsigned int _initsize;
177 
181  mutable RhoDMatrix _rho;
182 
186  mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > _wave;
187 
191  mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _wavebar;
192 
193 };
194 
195 }
196 
197 
198 #endif /* HERWIG_PScalarLeptonNeutrinoDecayer_H */
vector< int > _incoming
the PDG code for the incoming particle
virtual IBPtr clone() const
Make a simple clone of this object.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< Helicity::LorentzSpinor< SqrtEnergy > > _wave
Spinors for the decay products.
vector< Energy > _decayconstant
the meson decay constant for a particular particle multiplied by the CKM matrix element, i.e.
vector< double > _maxweightmu
the maximum weight for the integration of a given decay to .
vector< Helicity::LorentzSpinorBar< SqrtEnergy > > _wavebar
barred spinors for the decay products
MEOption
Enum for the matrix element option.
vector< tPDPtr > tPDVector
unsigned int _initsize
initial number of modes
Main class for Decayers implementing multi-channel phase space integration.
vector< double > _maxweighttau
the maximum weight for the integration of a given decay to .
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
The PScalarLeptonNeutrinoDecayer class is designed for the decay of pseudoscalar mesons to a lepton a...
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< unsigned int > _leptons
which outgoing leptons are allowed for a particular decay
vector< double > _maxweighte
the maximum weight for the integration of a given decay to .
-*- C++ -*-
vector< PPtr > ParticleVector