herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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/WeakDecayCurrent.h"
17 #include "Herwig/Decay/FormFactors/ScalarFormFactor.h"
18 #include "ThePEG/StandardModel/StandardModelBase.h"
19 #include "ThePEG/Helicity/LorentzPolarizationVector.h"
20 #include "Herwig/Decay/DecayPhaseSpaceMode.h"
21 #include "Herwig/Models/StandardModel/StandardCKM.h"
22 
23 namespace Herwig {
24 using namespace ThePEG;
25 
39 
40 public:
41 
46 
47 public:
48 
57  virtual int modeNumber(bool & cc, tcPDPtr parent,
58  const tPDVector & children) const;
59 
66  virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
67 
78  virtual double me2( const int ichan, const Particle & part,
79  const ParticleVector & decay, MEOption meopt) const;
81 
87  virtual void dataBaseOutput(ofstream & os,bool header) const;
88 
89 public:
90 
97  void persistentOutput(PersistentOStream & os) const;
98 
104  void persistentInput(PersistentIStream & is, int version);
106 
113  static void Init();
114 
115 protected:
116 
123  virtual IBPtr clone() const {return new_ptr(*this);}
124 
129  virtual IBPtr fullclone() const {return new_ptr(*this);}
131 
132 protected:
133 
141  virtual void doinit();
142 
147  virtual void doinitrun();
148 
158  virtual void rebind(const TranslationMap & trans)
159  ;
160 
166  virtual IVector getReferences();
168 
169 
170 private:
171 
179  void findModes(unsigned int imode,vector<tPDVector> & particles,
180  vector<unsigned int> & loc,vector<bool> & cc);
181 
182 private:
183 
188  ScalarMesonFactorizedDecayer & operator=(const ScalarMesonFactorizedDecayer &) = delete;
189 
190 private:
191 
195  vector<WeakDecayCurrentPtr> _current;
196 
200  vector<ScalarFormFactorPtr> _form;
201 
209  double _a1b;
210 
214  double _a2b;
215 
219  double _a1c;
220 
224  double _a2c;
226 
234  vector<vector<unsigned int> > _currentmapA;
235 
239  vector<vector<unsigned int> > _currentmapB;
241 
249  vector<vector<unsigned int> > _formmapA;
250 
254  vector<vector<unsigned int> > _formmapB;
256 
259  vector<vector<unsigned int> > _formpart;
260 
264  vector<vector<Complex> > _CKMfact;
265 
269  vector<int> _wgtloc;
270 
274  vector<double> _wgtmax;
275 
279  vector<double> _weights;
280 
284  Ptr<StandardCKM>::pointer _ckm;
285 
289  mutable RhoDMatrix _rho;
290 
294  mutable vector<vector<Helicity::LorentzPolarizationVector> > _vectors;
295 
299  mutable vector<vector<Helicity::LorentzTensor<double> > > _tensors;
300 
301 };
302 
303 }
304 
305 #endif /* HERWIG_ScalarMesonFactorizedDecayer_H */
vector< WeakDecayCurrentPtr > _current
The weak decay current.
double _a2b
The perturbative coefficient for b decays.
double _a2c
The perturbative coefficient for c decays.
vector< vector< unsigned int > > _currentmapB
Second map.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< int > _wgtloc
location of the weights
vector< vector< unsigned int > > _formmapB
Second map.
vector< double > _weights
Weights for the different channels.
Ptr< StandardCKM >::pointer _ckm
Pointer to the CKM object.
double _a1c
The perturbative coefficient for c decays.
vector< vector< Complex > > _CKMfact
The CKM factors.
MEOption
Enum for the matrix element option.
vector< ScalarFormFactorPtr > _form
The baryon form factor.
vector< tPDPtr > tPDVector
virtual IBPtr clone() const
Make a simple clone of this object.
double _a1b
The perturbative coefficients.
vector< vector< Helicity::LorentzTensor< double > > > _tensors
Polarization tensors for the decay products.
Main class for Decayers implementing multi-channel phase space integration.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< vector< unsigned int > > _formpart
Outgoing particle from the form factor.
The ScalarMesonFactorizedDecayer class is a class which combines a WeakDecayCurrent and a ScalarFormF...
-*- C++ -*-
vector< vector< unsigned int > > _currentmapA
Mapping of the modes to the currents.
vector< vector< Helicity::LorentzPolarizationVector > > _vectors
Polarization vectors for the decay products.
vector< IBPtr > IVector
vector< PPtr > ParticleVector
vector< vector< unsigned int > > _formmapA
Mapping of the modes to the form factors.
vector< double > _wgtmax
the maximum weights