herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
ScalarMesonFactorizedDecayer.h
1// -*- C++ -*-
2//
3// ScalarMesonFactorizedDecayer.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_ScalarMesonFactorizedDecayer_H
10#define HERWIG_ScalarMesonFactorizedDecayer_H
11//
12// This is the declaration of the ScalarMesonFactorizedDecayer class.
13//
14
15#include "Herwig/Decay/DecayIntegrator.h"
16#include "Herwig/Decay/WeakCurrents/WeakCurrent.h"
17#include "Herwig/Decay/FormFactors/ScalarFormFactor.h"
18#include "ThePEG/StandardModel/StandardModelBase.h"
19#include "ThePEG/Helicity/LorentzPolarizationVector.h"
20#include "Herwig/Models/StandardModel/StandardCKM.h"
21
22namespace Herwig {
23using namespace ThePEG;
24
38
39public:
40
45
46public:
47
56 virtual int modeNumber(bool & cc, tcPDPtr parent,
57 const tPDVector & children) const;
58
65 virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
66
76 double me2(const int ichan,const Particle & part,
77 const tPDVector & outgoing,
78 const vector<Lorentz5Momentum> & momenta,
79 MEOption meopt) const;
80
84 virtual void constructSpinInfo(const Particle & part,
87
93 virtual void dataBaseOutput(ofstream & os,bool header) const;
94
95public:
96
104
110 void persistentInput(PersistentIStream & is, int version);
112
119 static void Init();
120
121protected:
122
129 virtual IBPtr clone() const {return new_ptr(*this);}
130
135 virtual IBPtr fullclone() const {return new_ptr(*this);}
137
138protected:
139
147 virtual void doinit();
148
153 virtual void doinitrun();
154
164 virtual void rebind(const TranslationMap & trans)
165 ;
166
174
175
176private:
177
186 void findModes(unsigned int imode, tPDVector & incoming,
187 vector<tPDVector> & outgoing,
188 vector<unsigned int> & loc,vector<bool> & cc);
189
190private:
191
197
198private:
199
203 vector<WeakCurrentPtr> _current;
204
208 vector<ScalarFormFactorPtr> _form;
209
217 double _a1b;
218
222 double _a2b;
223
227 double _a1c;
228
232 double _a2c;
234
242 vector<vector<unsigned int> > _currentmapA;
243
247 vector<vector<unsigned int> > _currentmapB;
249
257 vector<vector<unsigned int> > _formmapA;
258
262 vector<vector<unsigned int> > _formmapB;
264
267 vector<vector<unsigned int> > _formpart;
268
272 vector<vector<Complex> > _CKMfact;
273
277 vector<int> _wgtloc;
278
282 vector<double> _wgtmax;
283
287 vector<double> _weights;
288
292 Ptr<StandardCKM>::pointer _ckm;
293
298
302 mutable vector<vector<Helicity::LorentzPolarizationVector> > _vectors;
303
307 mutable vector<vector<Helicity::LorentzTensor<double> > > _tensors;
308
309};
310
311}
312
313#endif /* HERWIG_ScalarMesonFactorizedDecayer_H */
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.
The ScalarMesonFactorizedDecayer class is a class which combines a WeakCurrent and a ScalarFormFactor...
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual IBPtr clone() const
Make a simple clone of this object.
vector< vector< Complex > > _CKMfact
The CKM factors.
virtual void rebind(const TranslationMap &trans)
Rebind pointer to other Interfaced objects.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< vector< unsigned int > > _formmapB
Second map.
double _a2c
The perturbative coefficient for c decays.
vector< vector< Helicity::LorentzPolarizationVector > > _vectors
Polarization vectors for the decay products.
vector< ScalarFormFactorPtr > _form
The baryon form factor.
vector< double > _weights
Weights for the different channels.
static void Init()
The standard Init function used to initialize the interfaces.
double _a2b
The perturbative coefficient for b decays.
vector< int > _wgtloc
location of the weights
double _a1c
The perturbative coefficient for c decays.
virtual bool accept(tcPDPtr parent, const tPDVector &children) const
Check if this decayer can perfom the decay for a particular mode.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
Ptr< StandardCKM >::pointer _ckm
Pointer to the CKM object.
virtual IVector getReferences()
Return a vector of all pointers to Interfaced objects used in this object.
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.
virtual void doinitrun()
Initialize this object.
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
vector< vector< unsigned int > > _currentmapA
Mapping of the modes to the currents.
vector< vector< Helicity::LorentzTensor< double > > > _tensors
Polarization tensors for the decay products.
vector< vector< unsigned int > > _formpart
Outgoing particle from the form factor.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
ScalarMesonFactorizedDecayer()
The default constructor.
vector< double > _wgtmax
the maximum weights
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.
double _a1b
The perturbative coefficients.
vector< vector< unsigned int > > _currentmapB
Second map.
vector< WeakCurrentPtr > _current
The weak decay current.
vector< vector< unsigned int > > _formmapA
Mapping of the modes to the form factors.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
ScalarMesonFactorizedDecayer & operator=(const ScalarMesonFactorizedDecayer &)=delete
The assignment operator is private and must never be called.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< IBPtr > IVector