herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
FourPionCzyzCurrent.h
1// -*- C++ -*-
2//
3// FourPionCzyzCurrent.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#ifndef Herwig_FourPionCzyzCurrent_H
9#define Herwig_FourPionCzyzCurrent_H
10//
11// This is the declaration of the FourPionCzyzCurrent class.
12//
13
14#include "WeakCurrent.h"
15
16namespace Herwig {
17
18using namespace ThePEG;
19
20
31
32public:
33
38
59 virtual bool createMode(int icharge, tcPDPtr resonance,
60 FlavourInfo flavour,
61 unsigned int imode,PhaseSpaceModePtr mode,
62 unsigned int iloc,int ires,
63 PhaseSpaceChannel phase, Energy upp );
64
74 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia);
76
90 virtual vector<LorentzPolarizationVectorE>
91 current(tcPDPtr resonance, FlavourInfo flavour,
92 const int imode, const int ichan,Energy & scale,
93 const tPDVector & outgoing,
94 const vector<Lorentz5Momentum> & momenta,
95 DecayIntegrator::MEOption meopt) const;
96
102 virtual bool accept(vector<int> id);
103
109 virtual unsigned int decayMode(vector<int> id);
110
117 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
118
119public:
120
128
134 void persistentInput(PersistentIStream & is, int version);
136
143 static void Init();
144
145protected:
146
150 void createChannels(unsigned int imode,
151 int icharge, tcPDPtr resonance,
152 unsigned int iloc,int ires,
153 tPDVector outgoing, PhaseSpaceModePtr mode,
154 PhaseSpaceChannel channel,
155 unsigned int j1, unsigned int j2,
156 unsigned int j3, unsigned int j4,
157 int & nchan);
158
163 tcPDPtr resonance,
164 const int ichan,
165 const Lorentz5Momentum & Q,
166 const Lorentz5Momentum & q1,
167 const Lorentz5Momentum & q2,
168 const Lorentz5Momentum & q3,
169 const Lorentz5Momentum & q4) const;
170protected:
171
178 virtual IBPtr clone() const;
179
184 virtual IBPtr fullclone() const;
186
187protected:
188
191
197 virtual void doinit();
199
200private:
201
207
208private:
209
217 vector<Energy> rhoMasses_;
221 vector<Energy> rhoWidths_;
222
226 vector<Energy> rhoMasses_Frho_;
230 vector<Energy> rhoWidths_Frho_;
231
240
244 Energy f0Mass_;
248 Energy f0Width_;
249
253 Energy a1Mass_;
257 Energy a1Width_;
259
267 vector<double> beta_a1_;
268
272 vector<double> beta_f0_;
273
277 vector<double> beta_omega_;
278
282 vector<double> beta_B_;
283
287 vector<double> beta_bar_;
288
292 InvEnergy2 c_a1_;
293
297 InvEnergy2 c_f0_;
298
302 InvEnergy c_omega_;
303
307 double c_rho_;
308
312 double g_rho_pi_pi_;
313
317 ThePEG::Qty<std::ratio<0,1>, std::ratio<-5,1>, std::ratio<0,1> > g_omega_pi_rho_;
318
322 Energy2 g_rho_gamma_;
324
328 Energy mpip_, mpi0_;
329
333 vector<vector<int> > channelMap_;
334};
335
336}
337
338#endif /* Herwig_FourPionCzyzCurrent_H */
MEOption
Enum for the matrix element option.
The FourMesonCzyzCurrent class implements the currents from Phys.Rev.
vector< double > beta_omega_
Coefficents for sum over resonances in term.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia)
The particles produced by the current.
vector< double > beta_f0_
Coefficents for sum over resonances in term.
FourPionCzyzCurrent & operator=(const FourPionCzyzCurrent &)=delete
The assignment operator is private and must never be called.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
InvEnergy2 c_f0_
Coupling for the term.
InvEnergy c_omega_
Coupling for the term.
static void Init()
The standard Init function used to initialize the interfaces.
void createChannels(unsigned int imode, int icharge, tcPDPtr resonance, unsigned int iloc, int ires, tPDVector outgoing, PhaseSpaceModePtr mode, PhaseSpaceChannel channel, unsigned int j1, unsigned int j2, unsigned int j3, unsigned int j4, int &nchan)
Create the channels for 1 term in the current.
vector< Energy > rhoWidths_Frho_
Rho widths for the piece.
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.
vector< double > beta_a1_
Couplings in the model.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
virtual bool accept(vector< int > id)
Accept the decay.
vector< double > beta_B_
Coefficents for sum over resonances in term.
vector< Energy > rhoMasses_Frho_
Rho masses for the piece.
FourPionCzyzCurrent()
The default constructor.
virtual unsigned int decayMode(vector< int > id)
Return the decay mode number for a given set of particles in the current.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
InvEnergy2 c_a1_
Coupling for the term.
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
LorentzVector< complex< InvEnergy > > baseCurrent(Energy2 Q2, tcPDPtr resonance, const int ichan, const Lorentz5Momentum &Q, const Lorentz5Momentum &q1, const Lorentz5Momentum &q2, const Lorentz5Momentum &q3, const Lorentz5Momentum &q4) const
Basis current in terms of which all the others can be calculated.
vector< Energy > rhoMasses_
Masses and widths of the particles.
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 > rhoWidths_
Rho widths (PDG for most of current)
vector< double > beta_bar_
Coefficents for sum over resonances in term.
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++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr