herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
KPiKStarCurrent.h
1// -*- C++ -*-
2//
3// KPiKStarCurrent.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_KPiKStarCurrent_H
10#define HERWIG_KPiKStarCurrent_H
11// This is the declaration of the KPiKStarCurrent 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
55
56public:
57
62
83 virtual bool createMode(int icharge, tcPDPtr resonance,
84 FlavourInfo flavour,
85 unsigned int imode,PhaseSpaceModePtr mode,
86 unsigned int iloc,int ires,
87 PhaseSpaceChannel phase, Energy upp );
88
98 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia);
100
114 virtual vector<LorentzPolarizationVectorE>
115 current(tcPDPtr resonance,
116 FlavourInfo flavour,
117 const int imode, const int ichan,Energy & scale,
118 const tPDVector & outgoing,
119 const vector<Lorentz5Momentum> & momenta,
120 DecayIntegrator::MEOption meopt) const;
121
127 virtual bool accept(vector<int> id);
128
134 virtual unsigned int decayMode(vector<int> id);
135
142 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
143
144public:
145
153
159 void persistentInput(PersistentIStream & is, int version);
161
165 static void Init();
166
167protected:
168
175 virtual IBPtr clone() const {return new_ptr(*this);}
176
181 virtual IBPtr fullclone() const {return new_ptr(*this);}
183
184protected:
185
188
194 virtual void doinit();
196
197private:
198
203
204private:
205
213 Complex BreitWigner(Energy2 q2, unsigned int imodel,
214 unsigned int ires) const {
215 // workout the index of the resonace
216 // calculate the BW
217 if(imodel==0) {
218 return Resonance::BreitWignerPWave(q2,_mass[ires],_width[ires],
219 _massa[ires],_massb[ires]);
220 }
221 else if(imodel==1) {
222 return Resonance::BreitWignerGS(q2,_mass[ires],_width[ires],
223 _massa[ires],_massb[ires],
224 _h0[ires],_dh[ires],_hres[ires]);
225 }
226 else
227 assert(false);
228 }
229
230private:
231
239 vector<Complex> _kwgt;
240
244 vector<double> _kmag;
245
249 vector<double> _kphase;
251
256
261
265 vector<Energy> _kstarmasses;
266
270 vector<Energy> _kstarwidths;
271
279 vector<Energy> _mass;
280
284 vector<Energy> _width;
285
289 vector<Energy> _massa,_massb;
290
295 vector<double> _dh;
296
301 vector<Energy2> _hres;
302
307 vector<Energy2> _h0;
309};
310
311}
312
313
314#endif /* HERWIG_KPiKStarCurrent_H */
MEOption
Enum for the matrix element option.
Weak current for the production of two mesons via the or resonances.
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
static void Init()
Standard Init function used to initialize the interfaces.
vector< Energy > _kstarwidths
The masses of the resonances.
vector< Energy > _kstarmasses
The masses of the resonances.
vector< Energy2 > _hres
The function at for the GS form of the Breit-Wigner.
int _kmodel
Model to use for the propagator.
vector< double > _dh
The function at for the GS form of the Breit-Wigner.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
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.
vector< Energy > _mass
Parameters for the Breit-Wigners.
vector< double > _kphase
The phase for input.
KPiKStarCurrent & operator=(const KPiKStarCurrent &)=delete
Private and non-existent assignment operator.
vector< Energy > _width
The widths of the resonances.
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< Energy > _massa
Masses of the decay products for the momentum calculation.
vector< double > _kmag
The magnitude for input.
KPiKStarCurrent()
Default constructor.
virtual unsigned int decayMode(vector< int > id)
Return the decay mode number for a given set of particles in the current.
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.
Complex BreitWigner(Energy2 q2, unsigned int imodel, unsigned int ires) const
-wave breit wigner for form-factors
virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia)
The particles produced by the current.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
vector< Complex > _kwgt
Weights for the different resonances in the current, .
bool _kstarparameters
Option not to use the physical masses and widths for the .
This class is designed to store the information needed for a given phase-space channel for use by the...
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