herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Decay
WeakCurrents
WeakCurrent.h
1
// -*- C++ -*-
2
//
3
// WeakCurrent.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_WeakCurrent_H
10
#define HERWIG_WeakCurrent_H
11
//
12
// This is the declaration of the WeakCurrent class.
13
//
14
#include "ThePEG/Interface/Interfaced.h"
15
#include "WeakCurrent.fh"
16
#include "Herwig/Decay/DecayIntegrator.h"
17
#include "Herwig/Decay/PhaseSpaceMode.h"
18
#include "Herwig/Decay/PhaseSpaceChannel.h"
19
#include "ThePEG/Helicity/LorentzPolarizationVector.h"
20
#include "Herwig/Decay/IsoSpin.h"
21
22
namespace
Herwig
{
23
using namespace
ThePEG
;
24
using
ThePEG::Helicity::LorentzPolarizationVector
;
25
using
ThePEG::Helicity::LorentzPolarizationVectorE
;
26
59
class
WeakCurrent
:
public
Interfaced
{
60
61
public
:
62
66
WeakCurrent
() :
numberModes_
(0) {}
67
68
public
:
69
90
virtual
bool
createMode
(
int
icharge,
tcPDPtr
resonance,
91
FlavourInfo
flavour,
92
unsigned
int
imode,PhaseSpaceModePtr mode,
93
unsigned
int
iloc,
int
ires,
94
PhaseSpaceChannel
phase, Energy upp )=0;
95
105
virtual
tPDVector
particles
(
int
icharge,
unsigned
int
imode,
int
iq,
int
ia)=0;
107
111
unsigned
int
numberOfModes
()
const
{
return
quark_
.size();}
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
=0;
133
137
virtual
void
constructSpinInfo
(
ParticleVector
decay)
const
;
138
145
virtual
bool
accept
(vector<int>
id
)=0;
146
154
virtual
unsigned
int
decayMode
(vector<int>
id
)=0;
155
162
void
decayModeInfo
(
unsigned
int
imode,
int
& iq,
int
& ia)
const
{
163
if
(imode<
quark_
.size()) {
164
iq=
quark_
[imode];
165
ia=
antiquark_
[imode];
166
}
167
else
{
168
iq=0;
169
ia=0;
170
}
171
}
172
179
virtual
void
dataBaseOutput
(ofstream & os,
bool
header,
bool
create)
const
;
180
181
public
:
182
189
void
persistentOutput
(
PersistentOStream
& os)
const
;
190
196
void
persistentInput
(
PersistentIStream
& is,
int
version);
198
202
static
void
Init
();
203
204
protected
:
205
211
void
addDecayMode
(
int
iq,
int
ia) {
212
quark_
.push_back(iq);
213
antiquark_
.push_back(ia);
214
}
215
220
void
setInitialModes
(
unsigned
int
nmodes) {
numberModes_
=nmodes;}
221
222
private
:
223
227
WeakCurrent
&
operator=
(
const
WeakCurrent
&) =
delete
;
228
229
private
:
230
234
vector<int>
quark_
;
235
239
vector<int>
antiquark_
;
240
244
unsigned
int
numberModes_
;
245
246
};
247
248
}
249
250
251
#endif
/* HERWIG_WeakCurrent_H */
Herwig::DecayIntegrator::MEOption
MEOption
Enum for the matrix element option.
Definition:
DecayIntegrator.h:72
Herwig::PhaseSpaceChannel
This class is designed to store the information needed for a given phase-space channel for use by the...
Definition:
PhaseSpaceChannel.h:52
Herwig::WeakCurrent
The WeakCurrent class is the base class for the hadronic currents produced in weak decays.
Definition:
WeakCurrent.h:59
Herwig::WeakCurrent::antiquark_
vector< int > antiquark_
The PDG codes for the antiquarks contained in the current.
Definition:
WeakCurrent.h:239
Herwig::WeakCurrent::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::WeakCurrent::addDecayMode
void addDecayMode(int iq, int ia)
Add a decay mode to the list.
Definition:
WeakCurrent.h:211
Herwig::WeakCurrent::numberModes_
unsigned int numberModes_
The initial number of modes.
Definition:
WeakCurrent.h:244
Herwig::WeakCurrent::operator=
WeakCurrent & operator=(const WeakCurrent &)=delete
Private and non-existent assignment operator.
Herwig::WeakCurrent::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::WeakCurrent::WeakCurrent
WeakCurrent()
Default constructor.
Definition:
WeakCurrent.h:66
Herwig::WeakCurrent::accept
virtual bool accept(vector< int > id)=0
Accept the decay.
Herwig::WeakCurrent::decayModeInfo
void decayModeInfo(unsigned int imode, int &iq, int &ia) const
Information on a decay mode.
Definition:
WeakCurrent.h:162
Herwig::WeakCurrent::createMode
virtual bool createMode(int icharge, tcPDPtr resonance, FlavourInfo flavour, unsigned int imode, PhaseSpaceModePtr mode, unsigned int iloc, int ires, PhaseSpaceChannel phase, Energy upp)=0
Complete the construction of the decay mode for integration.classes inheriting from this one.
Herwig::WeakCurrent::particles
virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia)=0
The particles produced by the current.
Herwig::WeakCurrent::dataBaseOutput
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
Herwig::WeakCurrent::constructSpinInfo
virtual void constructSpinInfo(ParticleVector decay) const
Construct the SpinInfo for the decay products.
Herwig::WeakCurrent::decayMode
virtual unsigned int decayMode(vector< int > id)=0
Return the decay mode number for a given set of particles in the current.
Herwig::WeakCurrent::Init
static void Init()
Standard Init function used to initialize the interfaces.
Herwig::WeakCurrent::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 =0
Hadronic current.
Herwig::WeakCurrent::numberOfModes
unsigned int numberOfModes() const
Return the number of modes handled by this current.
Definition:
WeakCurrent.h:111
Herwig::WeakCurrent::setInitialModes
void setInitialModes(unsigned int nmodes)
Set initial number of modes.
Definition:
WeakCurrent.h:220
Herwig::WeakCurrent::quark_
vector< int > quark_
The PDG codes for the quarks contained in the current.
Definition:
WeakCurrent.h:234
ThePEG::Interfaced
ThePEG::LorentzVector< complex< double > >
ThePEG::PersistentIStream
ThePEG::PersistentOStream
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::Helicity::outgoing
outgoing
ThePEG
ThePEG::tPDVector
vector< tPDPtr > tPDVector
ThePEG::ParticleVector
vector< PPtr > ParticleVector
ThePEG::tcPDPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
Herwig::FlavourInfo
Definition:
IsoSpin.h:46
Generated on Thu Jun 20 2024 17:50:52 for Herwig by
1.9.6