herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
BaryonFactorizedDecayer.h
1// -*- C++ -*-
2#ifndef HERWIG_BaryonFactorizedDecayer_H
3#define HERWIG_BaryonFactorizedDecayer_H
4//
5// This is the declaration of the BaryonFactorizedDecayer class.
6//
7
8#include "Herwig/Decay/DecayIntegrator.h"
9#include "Herwig/Decay/WeakCurrents/WeakCurrent.h"
10#include "Herwig/Decay/FormFactors/BaryonFormFactor.h"
11#include "ThePEG/StandardModel/StandardModelBase.h"
12#include "ThePEG/Helicity/LorentzPolarizationVector.h"
13#include "Herwig/Decay/PhaseSpaceMode.h"
14#include "Herwig/Models/StandardModel/StandardCKM.h"
15#include "ThePEG/Helicity/LorentzRSSpinorBar.h"
16
17namespace Herwig {
18using namespace ThePEG;
19
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
82protected:
83
93 double halfHalf(const int ichan,
94 const Particle & part,
95 const tPDVector & outgoing,
96 const vector<Lorentz5Momentum> & momenta,
97 MEOption meopt) const;
98
108 double halfThreeHalf(const int ichan,
109 const Particle & part,
110 const tPDVector & outgoing,
111 const vector<Lorentz5Momentum> & momenta,
112 MEOption meopt) const;
113
114public:
115
123
129 void persistentInput(PersistentIStream & is, int version);
131
138 static void Init();
139
140protected:
141
148 virtual IBPtr clone() const {return new_ptr(*this);}
149
154 virtual IBPtr fullclone() const {return new_ptr(*this);}
156
157protected:
158
161
167 virtual void doinit();
168
173 virtual void doinitrun();
175
176private:
177
186 void findModes(unsigned int imode,
188 vector<tPDVector> & outgoing,
189 vector<unsigned int> & loc,vector<bool> & cc);
190
191private:
192
198
199private:
200
204 WeakCurrentPtr _current;
205
209 BaryonFormFactorPtr _form;
210
218 double _a1b;
219
223 double _a2b;
224
228 double _a1c;
229
233 double _a2c;
235
239 vector<vector<unsigned int> > _currentmap;
240
244 vector<vector<unsigned int> > _formmap;
245
249 vector<vector <Complex> > _factCKM;
250
254 vector<int> _wgtloc;
255
259 vector<double> _wgtmax;
260
264 vector<double> _weights;
265
269 Ptr<StandardCKM>::pointer _theCKM;
270
275
279 mutable vector<LorentzSpinor<SqrtEnergy> > _inHalf;
280
284 mutable vector<LorentzSpinorBar<SqrtEnergy> > _inHalfBar;
285
289 mutable vector<LorentzRSSpinor<SqrtEnergy> > _inThreeHalf;
290
294 mutable vector<LorentzRSSpinorBar<SqrtEnergy> > _inThreeHalfBar;
295};
296
297}
298
299#endif /* HERWIG_BaryonFactorizedDecayer_H */
The BaryonFactorizedDecayer class is designed to combine the form factor for a weak baryon transition...
vector< int > _wgtloc
location of the weights
vector< vector< Complex > > _factCKM
The CKM factors.
double _a1b
The perturbative coefficients.
double _a2b
The perturbative coefficient for b decays.
vector< LorentzSpinor< SqrtEnergy > > _inHalf
Spin- spinors.
BaryonFactorizedDecayer()
The default constructor.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
WeakCurrentPtr _current
The weak decay current.
BaryonFormFactorPtr _form
The baryon form factor.
Ptr< StandardCKM >::pointer _theCKM
Pointer to the CKM object.
double halfHalf(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Matrix element for .
void findModes(unsigned int imode, tPDVector &incoming, vector< tPDVector > &outgoing, vector< unsigned int > &loc, vector< bool > &cc)
Find duplicate modes in the list of particles.
vector< vector< unsigned int > > _formmap
Mapping of the modes to the form factors.
RhoDMatrix _rho
Spin density matrix.
vector< LorentzSpinorBar< SqrtEnergy > > _inHalfBar
Spin- barred spinors.
virtual IBPtr clone() const
Make a simple clone of this object.
vector< double > _wgtmax
the maximum weights
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
vector< LorentzRSSpinorBar< SqrtEnergy > > _inThreeHalfBar
Spin- barred spinors.
double _a1c
The perturbative coefficient for c decays.
vector< double > _weights
weights for the different channels
BaryonFactorizedDecayer & operator=(const BaryonFactorizedDecayer &)=delete
The assignment operator is private and must never be called.
vector< vector< unsigned int > > _currentmap
Mapping of the modes to the currents.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
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 doinitrun()
Initialize this object.
double _a2c
The perturbative coefficient for c decays.
double halfThreeHalf(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Matrix element for .
vector< LorentzRSSpinor< SqrtEnergy > > _inThreeHalf
Spin- spinors.
virtual bool accept(tcPDPtr parent, const tPDVector &children) const
Check if this decayer can perfom the decay for a particular mode.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
static void Init()
The standard Init function used to initialize the interfaces.
Main class for Decayers implementing multi-channel phase space integration.
int imode() const
The mode being used for this decay.
MEOption
Enum for the matrix element option.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr