herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
TwoPionRhoCurrent.h
1// -*- C++ -*-
2//
3// TwoPionRhoCurrent.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_TwoPionRhoCurrent_H
10#define HERWIG_TwoPionRhoCurrent_H
11// This is the declaration of the TwoPionRhoCurrent class.
12
13#include "WeakCurrent.h"
14#include "ThePEG/PDT/EnumParticles.h"
15#include "Herwig/Utilities/Kinematics.h"
16#include "ThePEG/StandardModel/StandardModelBase.h"
17#include "Herwig/Decay/ResonanceHelpers.h"
18
19namespace Herwig {
20using namespace ThePEG;
21
54
55public:
56
61
82 virtual bool createMode(int icharge, tcPDPtr resonance,
83 FlavourInfo flavour,
84 unsigned int imode,PhaseSpaceModePtr mode,
85 unsigned int iloc,int ires,
86 PhaseSpaceChannel phase, Energy upp );
87
97 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia);
99
113 virtual vector<LorentzPolarizationVectorE>
114 current(tcPDPtr resonance,
115 FlavourInfo flavour,
116 const int imode, const int ichan,Energy & scale,
117 const tPDVector & outgoing,
118 const vector<Lorentz5Momentum> & momenta,
119 DecayIntegrator::MEOption meopt) const;
120
126 virtual bool accept(vector<int> id);
127
133 virtual unsigned int decayMode(vector<int> id);
134
141 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
142
143public:
144
152
158 void persistentInput(PersistentIStream & is, int version);
160
164 static void Init();
165
166protected:
167
174 virtual IBPtr clone() const {return new_ptr(*this);}
175
180 virtual IBPtr fullclone() const {return new_ptr(*this);}
182
183protected:
184
187
193 virtual void doinit();
195
196private:
197
202
203private:
204
212 Complex BreitWigner(Energy2 q2, unsigned int imodel,
213 unsigned int ires) const {
214 // calculate the BW
215 if(imodel==0) {
216 return Resonance::BreitWignerPWave(q2,_mass[ires],_width[ires],
217 _massa[ires],_massb[ires]);
218 }
219 else if(imodel==1) {
220 return Resonance::BreitWignerGS(q2,_mass[ires],_width[ires],
221 _massa[ires],_massb[ires],
222 _h0[ires],_dh[ires],_hres[ires]);
223 }
224 else
225 assert(false);
226 }
227
228private:
229
237 vector<Complex> _piwgt;
238
242 vector<double> _pimag;
243
247 vector<double> _piphase;
249
254
259
263 vector<Energy> _rhomasses;
264
268 vector<Energy> _rhowidths;
269
277 vector<Energy> _mass;
278
282 vector<Energy> _width;
283
287 vector<Energy> _massa,_massb;
288
293 vector<double> _dh;
294
299 vector<Energy2> _hres;
300
305 vector<Energy2> _h0;
307};
308
309}
310
311
312#endif /* HERWIG_TwoPionRhoCurrent_H */
MEOption
Enum for the matrix element option.
This class is designed to store the information needed for a given phase-space channel for use by the...
Weak current for the production of two mesons via the resonances.
vector< Energy2 > _hres
The function at for the GS form of the Breit-Wigner.
virtual bool accept(vector< int > id)
Accept the decay.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< Energy2 > _h0
The parameter for the GS form of the Breit-Wigner.
vector< Complex > _piwgt
Weights for the different resonances in the current, .
vector< Energy > _rhomasses
The masses of the resonances.
Complex BreitWigner(Energy2 q2, unsigned int imodel, unsigned int ires) const
-wave breit wigner for form-factors
vector< double > _dh
The function at for the GS form of the Breit-Wigner.
static void Init()
Standard Init function used to initialize the interfaces.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
vector< double > _piphase
The phase for input.
virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia)
The particles produced by the current.
virtual vector< LorentzPolarizationVectorE > current(tcPDPtr resonance, FlavourInfo flavour, const int imode, const int ichan, Energy &scale, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, DecayIntegrator::MEOption meopt) const
Hadronic current.
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
virtual bool createMode(int icharge, tcPDPtr resonance, FlavourInfo flavour, unsigned int imode, PhaseSpaceModePtr mode, unsigned int iloc, int ires, PhaseSpaceChannel phase, Energy upp)
Complete the construction of the decay mode for integration.classes inheriting from this one.
TwoPionRhoCurrent & operator=(const TwoPionRhoCurrent &)=delete
Private and non-existent assignment operator.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
int _pimodel
Model to use for the propagator.
vector< Energy > _width
The widths of the resonances.
virtual unsigned int decayMode(vector< int > id)
Return the decay mode number for a given set of particles in the current.
vector< Energy > _mass
Parameters for the Breit-Wigners.
vector< Energy > _rhowidths
The widths of the resonances.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual IBPtr clone() const
Make a simple clone of this object.
vector< double > _pimag
The magnitude for input.
bool _rhoparameters
Option not to use the physical masses and widths for the .
TwoPionRhoCurrent()
Default constructor.
vector< Energy > _massa
Masses of the decay products for the momentum calculation.
The WeakCurrent class is the base class for the hadronic currents produced in weak decays.
Definition: WeakCurrent.h:59
-*- C++ -*-
std::complex< double > Complex
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr