herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
SemiLeptonicScalarDecayer.h
1 // -*- C++ -*-
2 //
3 // SemiLeptonicScalarDecayer.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_SemiLeptonicScalarDecayer_H
10 #define HERWIG_SemiLeptonicScalarDecayer_H
11 //
12 // This is the declaration of the SemiLeptonicScalarDecayer class.
13 //
14 #include "Herwig/Decay/DecayIntegrator.h"
15 #include "Herwig/Decay/FormFactors/ScalarFormFactor.h"
16 #include "Herwig/Decay/WeakCurrents/LeptonNeutrinoCurrent.h"
17 #include "ThePEG/Helicity/LorentzTensor.h"
18 
19 namespace Herwig {
20 using namespace ThePEG;
21 
38 
39 public:
40 
45 
52  virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
53 
60  virtual int modeNumber(bool & cc, tcPDPtr parent,
61  const tPDVector & children) const ;
62 
71  double me2( const int ichan,const Particle & part,
72  const ParticleVector & decay, MEOption meopt) const;
73 
79  virtual void dataBaseOutput(ofstream & os,bool header) const;
80 
81 public:
82 
89  void persistentOutput(PersistentOStream & os) const;
90 
96  void persistentInput(PersistentIStream & is, int version);
98 
102  static void Init();
103 
104 protected:
105 
112  virtual IBPtr clone() const {return new_ptr(*this);}
113 
118  virtual IBPtr fullclone() const {return new_ptr(*this);}
120 
121 protected:
122 
125 
131  virtual void doinit();
132 
136  virtual void doinitrun();
138 
139 private:
140 
144  SemiLeptonicScalarDecayer & operator=(const SemiLeptonicScalarDecayer &) = delete;
145 
146 private:
147 
151  LeptonNeutrinoCurrentPtr _current;
152 
156  ScalarFormFactorPtr _form;
157 
161  vector<double> _maxwgt;
162 
166  vector<int> _modemap;
167 
171  mutable RhoDMatrix _rho;
172 
176  mutable vector<Helicity::LorentzPolarizationVector> _vectors;
177 
181  mutable vector<Helicity::LorentzTensor<double> > _tensors;
182 
186  mutable vector<unsigned int> _constants;
187 
191  mutable vector<PDT::Spin> _ispin;
192 
196  mutable unsigned int _imes;
197 };
198 
199 }
200 
201 
202 #endif /* HERWIG_SemiLeptonicScalarDecayer_H */
vector< double > _maxwgt
the maximum weight for the integration of a given decay
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
unsigned int _imes
Location of the outgoing meson.
vector< int > _modemap
mapping of the mode to the form factor
vector< Helicity::LorentzPolarizationVector > _vectors
Polarization vectors for the decay products.
vector< unsigned int > _constants
Constants for the mapping of the leptonic current.
MEOption
Enum for the matrix element option.
The SemiLeptonicScalarDecayer class is designed for the semileptonic decay of a (pesudo)scalar meson ...
vector< PDT::Spin > _ispin
Spins of the particles.
vector< tPDPtr > tPDVector
RhoDMatrix _rho
Spin density matrix.
Main class for Decayers implementing multi-channel phase space integration.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ScalarFormFactorPtr _form
The form factor.
virtual IBPtr clone() const
Make a simple clone of this object.
-*- C++ -*-
LeptonNeutrinoCurrentPtr _current
The leptonic current.
vector< Helicity::LorentzTensor< double > > _tensors
Polarization vectors for the decay products.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< PPtr > ParticleVector