herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
SemiLeptonicBaryonDecayer.h
1// -*- C++ -*-
2#ifndef HERWIG_SemiLeptonicBaryonDecayer_H
3#define HERWIG_SemiLeptonicBaryonDecayer_H
4//
5// This is the declaration of the SemiLeptonicBaryonDecayer class.
6//
7#include "Herwig/Decay/DecayIntegrator.h"
8#include "Herwig/Decay/WeakCurrents/LeptonNeutrinoCurrent.h"
9#include "Herwig/Decay/FormFactors/BaryonFormFactor.h"
10#include "Herwig/Decay/PhaseSpaceMode.h"
11#include "ThePEG/Helicity/LorentzRSSpinorBar.h"
12
13namespace Herwig {
14using namespace ThePEG;
15
31
32public:
33
38
44 virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
45
52 virtual int modeNumber(bool & cc, tcPDPtr parent,
53 const tPDVector & children) const;
54
64 double me2(const int ichan,const Particle & part,
65 const tPDVector & outgoing,
66 const vector<Lorentz5Momentum> & momenta,
67 MEOption meopt) const;
68
72 virtual void constructSpinInfo(const Particle & part,
74
80 virtual void dataBaseOutput(ofstream & os,bool header) const;
81
82public:
83
91
97 void persistentInput(PersistentIStream & is, int version);
99
103 static void Init();
104
105protected:
106
113 virtual IBPtr clone() const {return new_ptr(*this);}
114
119 virtual IBPtr fullclone() const {return new_ptr(*this);}
121
122protected:
123
131 virtual void doinit();
132
136 virtual void doinitrun();
138
139protected:
140
149 double halfHalf(const Particle & part,
150 const tPDVector & outgoing,
151 const vector<Lorentz5Momentum> & momenta,
152 MEOption meopt) const;
153
162 double halfThreeHalf(const Particle & part,
163 const tPDVector & outgoing,
164 const vector<Lorentz5Momentum> & momenta,
165 MEOption meopt) const;
166
167private:
168
173
174private:
175
179 LeptonNeutrinoCurrentPtr _current;
180
184 BaryonFormFactorPtr _form;
185
189 vector<double> _maxwgt;
190
194 vector<int> _modemap;
195
200
204 mutable vector<LorentzSpinor<SqrtEnergy> > _inHalf;
205
209 mutable vector<LorentzSpinorBar<SqrtEnergy> > _inHalfBar;
210
214 mutable vector<LorentzRSSpinor<SqrtEnergy> > _inThreeHalf;
215
219 mutable vector<LorentzRSSpinorBar<SqrtEnergy> > _inThreeHalfBar;
220
224 mutable vector<unsigned int> _constants;
225
229 mutable vector<PDT::Spin> _ispin;
230
234 mutable unsigned int _ibar;
235};
236
237}
238
239
240#endif /* HERWIG_SemiLeptonicBaryonDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
The SemiLeptonicBaryonDecayer class is designed for the semi-leptonic decay of the baryons.
LeptonNeutrinoCurrentPtr _current
The current for the leptons.
vector< LorentzSpinorBar< SqrtEnergy > > _inHalfBar
Spin- barred spinors.
virtual void doinitrun()
Initialize this object to the begining of the run phase.
double me2(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Return the matrix element squared for a given mode and phase-space channel.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
virtual bool accept(tcPDPtr parent, const tPDVector &children) const
Check if this decayer can perfom the decay for a particular mode.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< LorentzRSSpinor< SqrtEnergy > > _inThreeHalf
Spin- spinors.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
RhoDMatrix _rho
Spin density matrix.
double halfHalf(const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Matrix element for .
BaryonFormFactorPtr _form
form-factor
double halfThreeHalf(const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Matrix element for .
vector< int > _modemap
mapping of the mode to the form-factor
vector< PDT::Spin > _ispin
Spins of the particles.
vector< double > _maxwgt
the maximum weight
vector< LorentzRSSpinorBar< SqrtEnergy > > _inThreeHalfBar
Spin- barred spinors.
unsigned int _ibar
Location of the outgoing baryon.
SemiLeptonicBaryonDecayer()
Default constructor.
static void Init()
Standard Init function used to initialize the interfaces.
vector< LorentzSpinor< SqrtEnergy > > _inHalf
Spin- spinors.
vector< unsigned int > _constants
Constants for the mapping of the leptonic vector.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
SemiLeptonicBaryonDecayer & operator=(const SemiLeptonicBaryonDecayer &)=delete
Private and non-existent assignment operator.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr