herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
TwoPionCzyzCurrent.h
1// -*- C++ -*-
2#ifndef Herwig_TwoPionCzyzCurrent_H
3#define Herwig_TwoPionCzyzCurrent_H
4//
5// This is the declaration of the TwoPionCzyzCurrent class.
6//
7
8#include "WeakCurrent.h"
9#include "Herwig/Utilities/Interpolator.h"
10
11namespace Herwig {
12
13using namespace ThePEG;
14
23
24public:
25
30
51 virtual bool createMode(int icharge, tcPDPtr resonance,
52 FlavourInfo flavour,
53 unsigned int imode,PhaseSpaceModePtr mode,
54 unsigned int iloc,int ires,
55 PhaseSpaceChannel phase, Energy upp );
56
66 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia);
68
82 virtual vector<LorentzPolarizationVectorE>
83 current(tcPDPtr resonance,
84 FlavourInfo flavour,
85 const int imode, const int ichan,Energy & scale,
86 const tPDVector & outgoing,
87 const vector<Lorentz5Momentum> & momenta,
88 DecayIntegrator::MEOption meopt) const;
89
95 virtual bool accept(vector<int> id);
96
102 virtual unsigned int decayMode(vector<int> id);
103
110 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
111
115 Complex Fpi(Energy2 q2,const int imode, const int ichan, tcPDPtr resonance,
116 Energy ma, Energy mb) const;
117
121 Complex FpiRemainder(Energy2 q2, Energy ma, Energy mb) const;
122
123public:
124
132
138 void persistentInput(PersistentIStream & is, int version);
140
147 static void Init();
148
149protected:
150
157 virtual IBPtr clone() const;
158
163 virtual IBPtr fullclone() const;
165
166protected:
167
170
176 virtual void doinit();
178
183
184private:
185
191
192private:
193
201 vector<Complex> rhoWgt_;
202
206 vector<double> rhoMag_;
207
211 vector<double> rhoPhase_;
213
218
222 double omegaMag_;
223
228
232 vector<Energy> rhoMasses_;
233
237 vector<Energy> rhoWidths_;
238
243
248
252 double beta_;
253
257 unsigned int nMax_;
258
262 vector<Energy> mass_;
263
267 vector<Energy> width_;
268
272 vector<Complex> coup_;
273
278 vector<double> dh_;
279
284 vector<Energy2> hres_;
285
290 vector<Energy2> h0_;
291
295 Energy eMax_;
296
301};
302
303}
304
305#endif /* Herwig_TwoPionCzyzCurrent_H */
MEOption
Enum for the matrix element option.
Ptr< Interpolator< ValT, ArgT > >::pointer Ptr
Pointer to an Interpolator.
Definition: Interpolator.h:38
This class is designed to store the information needed for a given phase-space channel for use by the...
The TwoPionCzyzCurrent class implements the current of PRD 81 094014 for two pions.
vector< double > rhoPhase_
The phase for input.
virtual IBPtr clone() const
Make a simple clone of this object.
Complex omegaWgt_
Weight for the omega resonance.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
double omegaMag_
The magnitude for input.
vector< Complex > coup_
Couplings of the resonaces.
virtual unsigned int decayMode(vector< int > id)
Return the decay mode number for a given set of particles in the current.
vector< double > rhoMag_
The magnitude for input.
Complex Fpi(Energy2 q2, const int imode, const int ichan, tcPDPtr resonance, Energy ma, Energy mb) const
Calculation of the pion form factor.
Energy omegaMass_
The mass of the resonance.
vector< Energy > rhoMasses_
The masses of the resonances.
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.
void constructInterpolators() const
Construct the interpolators.
Complex FpiRemainder(Energy2 q2, Energy ma, Energy mb) const
Calculation of the pion form factor.
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
vector< Energy > mass_
Masses of the resonances.
static void Init()
The standard Init function used to initialize the interfaces.
vector< Energy2 > h0_
The parameter for the GS form of the Breit-Wigner.
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.
Energy omegaWidth_
The width of the resonance.
vector< double > dh_
The function at for the GS form of the Breit-Wigner.
vector< Energy2 > hres_
The function at for the GS form of the Breit-Wigner.
TwoPionCzyzCurrent & operator=(const TwoPionCzyzCurrent &)=delete
The assignment operator is private and must never be called.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Energy eMax_
The maximum energy.
virtual bool accept(vector< int > id)
Accept the decay.
vector< Energy > width_
Widths of the resonances.
TwoPionCzyzCurrent()
The default constructor.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia)
The particles produced by the current.
vector< Energy > rhoWidths_
The widths of the resonances.
unsigned int nMax_
Number of resonaces at which to trucated the series.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
Interpolator< double, Energy2 >::Ptr fpiRe_
Interpolators for the higher resonance components for speed.
double beta_
Regge parameter.
double omegaPhase_
The phase for input.
vector< Complex > rhoWgt_
Weights for the different resonances in the current, .
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