herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
EtaPiPiDefaultCurrent.h
1// -*- C++ -*-
2//
3// EtaPiPiDefaultCurrent.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_EtaPiPiDefaultCurrent_H
10#define HERWIG_EtaPiPiDefaultCurrent_H
11//
12// This is the declaration of the EtaPiPiDefaultCurrent 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#include "Herwig/Decay/ResonanceHelpers.h"
19#include <numeric>
20
21namespace Herwig {
22using namespace ThePEG;
23
34
35public:
36
41
55 virtual vector<LorentzPolarizationVectorE>
56 current(tcPDPtr resonance,
57 FlavourInfo flavour,
58 const int imode, const int ichan,Energy & scale,
59 const tPDVector & outgoing,
60 const vector<Lorentz5Momentum> & momenta,
61 DecayIntegrator::MEOption meopt) const;
62
68 virtual bool accept(vector<int> id);
69
76 virtual unsigned int decayMode(vector<int> id);
77
86 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia);
87
88public:
89
97
103 void persistentInput(PersistentIStream & is, int version);
105
109 static void Init();
110
111public:
112
133 virtual bool createMode(int icharge, tcPDPtr resonance,
134 FlavourInfo flavour,
135 unsigned int imode,PhaseSpaceModePtr mode,
136 unsigned int iloc,int ires,
137 PhaseSpaceChannel phase, Energy upp );
139
146 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
147
148protected:
149
156 virtual IBPtr clone() const {return new_ptr(*this);}
157
162 virtual IBPtr fullclone() const {return new_ptr(*this);}
164
165protected:
166
172 virtual void doinit();
173
174private:
175
180
181private:
182
189 Complex BrhoF123(Energy2 q2,int ires) const {
190 Complex output(0.);
191 Complex norm = std::accumulate(_rhoF123wgts.begin(),_rhoF123wgts.end(),Complex(0.));
192 if(ires<0) {
193 for(unsigned int ix=0;ix<_rhoF123wgts.size();++ix) {
194 output+=_rhoF123wgts[ix]*
195 Resonance::BreitWignerPWave(q2,_rhoF123masses[ix],
197 }
198 }
199 else {
200 assert(ires<=int(_rhoF123wgts.size()));
201 output=_rhoF123wgts[ires]*
202 Resonance::BreitWignerPWave(q2,_rhoF123masses[ires],
203 _rhoF123widths[ires],_mpi,_mpi);
204 }
205 return output/norm;
206 }
207
214 Complex BrhoF5(Energy2 q2,int ires) const {
215 Complex output(0.);
216 Complex norm = std::accumulate(_rhoF5wgts.begin(),_rhoF5wgts.end(),Complex(0.0));
217 if(ires<0) {
218 for(unsigned int ix=0;ix<_rhoF5wgts.size();++ix) {
219 output+=_rhoF5wgts[ix]*
220 Resonance::BreitWignerPWave(q2,_rhoF5masses[ix],
222 }
223 }
224 else {
225 assert(ires<=int(_rhoF123wgts.size()));
226 output=_rhoF5wgts[ires]*
227 Resonance::BreitWignerPWave(q2,_rhoF5masses[ires],
228 _rhoF5widths[ires],_mpi,_mpi);
229 }
230 return output/norm;
231 }
232
233private:
234
239 vector<double> _rhoF123wgts;
240
245 vector<double> _rhoF5wgts;
246
250 Energy _fpi;
251
255 Energy _mpi;
256
260 vector<Energy> _rhoF123masses;
261
265 vector<Energy> _rhoF5masses;
266
270 vector<Energy> _rhoF123widths;
271
275 vector<Energy> _rhoF5widths;
276};
277
278}
279
280#endif /* HERWIG_EtaPiPiDefaultCurrent_H */
MEOption
Enum for the matrix element option.
The EtaPiPiDefaultCurrent class implements the current from Z.Phys.C58:445 (1992),...
static void Init()
Standard Init function used to initialize the interfaces.
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
Complex BrhoF123(Energy2 q2, int ires) const
The Breit-Wigner for the form factors.
vector< Energy > _rhoF5masses
The masses for the form factors.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual bool accept(vector< int > id)
Accept the decay.
vector< Energy > _rhoF5widths
The widths for the form factors.
vector< Energy > _rhoF123masses
The masses for the form factors.
virtual unsigned int decayMode(vector< int > id)
Return the decay mode number for a given set of particles in the current.
EtaPiPiDefaultCurrent & operator=(const EtaPiPiDefaultCurrent &)=delete
Private and non-existent assignment operator.
EtaPiPiDefaultCurrent()
Default constructor.
vector< double > _rhoF123wgts
Parameters for the Breit-Wigner in the form factors.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< Energy > _rhoF123widths
The widths for the form factors.
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 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 BrhoF5(Energy2 q2, int ires) const
The Breit-Wigner for the form factors.
vector< double > _rhoF5wgts
Parameters for the Breit-Wigner in the form factors.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Energy _fpi
The pion decay constant, .
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