herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
ThreePionCLEOCurrent.h
1// -*- C++ -*-
2//
3// ThreePionCLEOCurrent.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 THEPEG_ThreePionCLEOCurrent_H
10#define THEPEG_ThreePionCLEOCurrent_H
11//
12// This is the declaration of the ThreePionCLEOCurrent class.
13//
14#include "WeakCurrent.h"
15#include "Herwig/Utilities/Interpolator.h"
16#include "Herwig/Utilities/Kinematics.h"
17#include "ThePEG/StandardModel/StandardModelBase.h"
18
19namespace Herwig {
20using namespace ThePEG;
21
99
105
106public:
107
112
126 virtual vector<LorentzPolarizationVectorE>
127 current(tcPDPtr resonance,
128 FlavourInfo flavour,
129 const int imode, const int ichan,Energy & scale,
130 const tPDVector & outgoing,
131 const vector<Lorentz5Momentum> & momenta,
132 DecayIntegrator::MEOption meopt) const;
133
139 virtual bool accept(vector<int> id);
140
147 virtual unsigned int decayMode(vector<int> id);
148
157 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia);
158
159public:
160
181 virtual bool createMode(int icharge, tcPDPtr resonance,
182 FlavourInfo flavour,
183 unsigned int imode,PhaseSpaceModePtr mode,
184 unsigned int iloc,int ires,
185 PhaseSpaceChannel phase, Energy upp );
187
194 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
195
208 double threeBodyMatrixElement(const int iopt, const Energy2 q2,
209 const Energy2 s3, const Energy2 s2,
210 const Energy2 s1, const Energy m1,
211 const Energy m2, const Energy m3) const;
212
213public:
214
222
228 void persistentInput(PersistentIStream & is, int version);
230
234 static void Init();
235
236protected:
237
251 void CLEOFormFactor(int imode,int ichan,Energy2 q2,Energy2 s1, Energy2 s2,
252 Energy2 s3,Complex & F1, Complex & F2, Complex & F3) const;
253
254protected:
255
262 virtual IBPtr clone() const {return new_ptr(*this);}
263
268 virtual IBPtr fullclone() const {return new_ptr(*this);}
270
271protected:
272
280 virtual void doinit();
281
285 virtual void doinitrun();
286
290 virtual void doupdate();
292
293private:
294
299
300private:
301
307 Energy a1width(Energy2 q2) const;
308
313 void inita1Width(int iopt);
314
320 Complex a1BreitWigner(Energy2 q2) const {
321 Complex ii(0.,1.);
322 Energy2 m2=_a1mass*_a1mass; Energy q=sqrt(q2);
323 Complex output=m2/(m2-q2-ii*q*a1width(q2));
324 return output;
325 }
326
327private:
328
332 vector<Energy> _rhomass;
333
337 vector<Energy> _rhowidth;
338
342 Energy _f2mass;
343
347 Energy _f2width;
348
352 Energy _f0mass;
353
357 Energy _f0width;
358
363
368
372 Energy _mpi0;
373
377 Energy _mpic;
378
382 Energy _a1mass;
383
387 Energy _a1width;
388
392 Energy _mKstar;
393
397 Energy _mK;
398
402 double _gammk;
403
407 Energy _fpi;
408
412 InvEnergy _fact;
413
418 vector<double> _rhomagP;
419
424 vector<double> _rhophaseP;
425
430 vector<Complex> _rhocoupP;
431
436 vector<InvEnergy2> _rhomagD;
437
442 vector<double>_rhophaseD;
443
448 vector<complex<InvEnergy2> > _rhocoupD;
449
454 InvEnergy2 _f2mag;
455
460 double _f2phase;
461
466 complex<InvEnergy2> _f2coup;
467
472 double _f0mag;
473
478 double _f0phase;
479
485
490 double _sigmamag;
491
497
503
507 vector<Energy> _a1runwidth;
508
512 vector<Energy2> _a1runq2;
513
514
519
524
528 bool _a1opt;
529
533 Energy _maxmass;
534
538 Energy _maxcalc;
539
540};
541
542}
543
544#endif /* THEPEG_ThreePionCLEOCurrent_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 ThreePionCLEOCurrent class implements the decay of the weak current to three pions using the curr...
double _f2phase
Phase of the coupling of the resonance, , ( in the CLEO paper.)
virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia)
The particles produced by the current.
virtual void doupdate()
Check sanity of the object during the setup phase.
Energy _f0mass
Mass of the resonance.
Energy _f2width
Width of the resonance.
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 _maxmass
The maximum mass of the hadronic system.
double _f0mag
Magntiude of the coupling of the resonance, , ( in the CLEO paper.)
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
vector< Energy > _rhomass
Masses of the resonances.
Energy _mKstar
Mass of the resonace.
double _gammk
Coupling for the term in the running width.
complex< InvEnergy2 > _f2coup
Coupling of the resonance, , ( in the CLEO paper.)
vector< complex< InvEnergy2 > > _rhocoupD
-wave couplings of the rho resonance, , ( in the CLEO paper.)
bool _initializea1
Initialize the running width.
Energy a1width(Energy2 q2) const
The running width.
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.
bool _a1opt
Option for the width.
ThreePionCLEOCurrent()
Default constructor.
Energy _f0width
Width of the resonance.
Energy _mpi0
Mass of the neutral pion.
double _sigmaphase
Phase of the coupling of the resonance, , ( in the CLEO paper.)
InvEnergy _fact
The prefactor.
vector< double > _rhomagP
Magnitude of the -wave couplings of the rho resonance, , ( in the CLEO paper.)
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Energy _mK
Mass of the resonace.
Energy _sigmamass
Mass of the resonance.
virtual bool accept(vector< int > id)
Accept the decay.
friend class ThreePionCLEOa1MatrixElement
The matrix element for the running width is a friend to keep some members private.
Energy _sigmawidth
Width of the resonance.
vector< Complex > _rhocoupP
-wave couplings of the rho resonance, , ( in the CLEO paper.)
void inita1Width(int iopt)
Initialize the running width.
double threeBodyMatrixElement(const int iopt, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const
the matrix element for the a1 decay to calculate the running width
vector< Energy2 > _a1runq2
The for the running width calculation.
ThreePionCLEOCurrent & operator=(const ThreePionCLEOCurrent &)=delete
Private and non-existent assignment operator.
static void Init()
Standard Init function used to initialize the interfaces.
Energy _mpic
Mass of the charged pion.
Complex _f0coup
Coupling of the resonance, , ( in the CLEO paper.)
Energy _maxcalc
The maximum mass when the running width was calculated.
vector< double > _rhophaseP
Phase of the -wave couplings of the rho resonance, , ( in the CLEO paper.)
double _sigmamag
Magntiude of the coupling of the resonance, , ( in the CLEO paper.)
virtual unsigned int decayMode(vector< int > id)
Return the decay mode number for a given set of particles in the current.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
vector< Energy > _a1runwidth
The width for the running width calculation.
void CLEOFormFactor(int imode, int ichan, Energy2 q2, Energy2 s1, Energy2 s2, Energy2 s3, Complex &F1, Complex &F2, Complex &F3) const
Calculate CLEO form factors for the current.
vector< InvEnergy2 > _rhomagD
Magnitude of the -wave couplings of the rho resonance, , ( in the CLEO paper.)
Complex a1BreitWigner(Energy2 q2) const
Breit-Wigner
Interpolator< Energy, Energy2 >::Ptr _a1runinter
The interpolator for the running width calculation.
InvEnergy2 _f2mag
Magntiude of the coupling of the resonance, , ( in the CLEO paper.)
vector< double > _rhophaseD
Phase of the -wave couplings of the rho resonance, , ( in the CLEO paper.)
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
double _f0phase
Phase of the coupling of the resonance, , ( in the CLEO paper.)
Complex _sigmacoup
Coupling of the resonance, , ( in the CLEO paper.)
Energy _fpi
pion decay constant
Energy _f2mass
Mass of the resonance.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual void doinitrun()
Initialize this object to the begining of the run phase.
vector< Energy > _rhowidth
Widths of the resonances.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
The WeakCurrent class is the base class for the hadronic currents produced in weak decays.
Definition: WeakCurrent.h:59
-*- C++ -*-
double sqrt(int x)
std::complex< double > Complex
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr