herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
TauDecayer.h
1// -*- C++ -*-
2//
3// TauDecayer.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_TauDecayer_H
10#define HERWIG_TauDecayer_H
11// This is the declaration of the TauDecayer class.
12
13#include "Herwig/Decay/DecayIntegrator.h"
14#include "Herwig/Decay/PhaseSpaceMode.h"
15#include "ThePEG/Helicity/LorentzPolarizationVector.h"
16#include "Herwig/Decay/WeakCurrents/WeakCurrent.h"
17#include "ThePEG/Helicity/LorentzSpinor.h"
18#include "ThePEG/Helicity/LorentzSpinorBar.h"
19
20namespace Herwig {
21using namespace ThePEG;
23
24
51
52public:
53
57 TauDecayer() : polOpt_(false), tauMpol_(0.), tauPpol_(0.) {
59 }
60
66 virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
67
74 virtual int modeNumber(bool & cc, tcPDPtr parent,
75 const tPDVector & children) const;
76
86 double me2(const int ichan,const Particle & part,
87 const tPDVector & outgoing,
88 const vector<Lorentz5Momentum> & momenta,
89 MEOption meopt) const;
90
94 virtual void constructSpinInfo(const Particle & part,
96
100 void dataBaseOutput(ofstream & os,bool header) const;
101
102public:
103
111
117 void persistentInput(PersistentIStream & is, int version);
119
123 static void Init();
124
125protected:
126
133 virtual IBPtr clone() const {return new_ptr(*this);}
134
139 virtual IBPtr fullclone() const {return new_ptr(*this);}
141
142protected:
143
146
152 virtual void doinit();
153
157 virtual void doinitrun();
159
160private:
161
165 TauDecayer & operator=(const TauDecayer &) = delete;
166
167private:
168
172 vector<unsigned int> modeMap_;
173
177 WeakCurrentPtr current_;
178
182 vector<int> wgtLoc_;
183
187 vector<double> wgtMax_;
188
192 vector<double> weights_;
193
197 mutable vector<LorentzSpinor <SqrtEnergy> > inSpin_;
198
202 mutable vector<LorentzSpinorBar<SqrtEnergy> > inBar_ ;
203
208
212 mutable vector<unsigned int> constants_;
213
217 mutable vector<PDT::Spin> iSpin_;
218
223
227 double tauMpol_;
228
232 double tauPpol_;
233};
234
235}
236
237
238#endif /* HERWIG_TauDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
bool generateIntermediates() const
Set whether or not the intermediates are included.
MEOption
Enum for the matrix element option.
The TauDecayer class performs the decay of the .
Definition: TauDecayer.h:50
void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
vector< double > weights_
The weights for the different channels.
Definition: TauDecayer.h:192
vector< LorentzSpinorBar< SqrtEnergy > > inBar_
Barred spinors for the deaying particle.
Definition: TauDecayer.h:202
bool polOpt_
Option to force the polarizations of the tau leptons.
Definition: TauDecayer.h:222
vector< unsigned int > constants_
Maps for the vectors.
Definition: TauDecayer.h:212
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
double tauMpol_
Polarization for .
Definition: TauDecayer.h:227
RhoDMatrix rho_
Rho matrix.
Definition: TauDecayer.h:207
vector< PDT::Spin > iSpin_
Spins of the particles.
Definition: TauDecayer.h:217
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
double tauPpol_
Polarization of .
Definition: TauDecayer.h:232
double me2(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Return the matrix element squared for a given mode and phase-space channel.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: TauDecayer.h:139
TauDecayer()
Default constructor.
Definition: TauDecayer.h:57
vector< LorentzSpinor< SqrtEnergy > > inSpin_
The spinors for the decaying particle.
Definition: TauDecayer.h:197
virtual void doinitrun()
Initialize this object to the begining of the run phase.
virtual bool accept(tcPDPtr parent, const tPDVector &children) const
Check if this decayer can perfom the decay for a particular mode.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: TauDecayer.h:133
TauDecayer & operator=(const TauDecayer &)=delete
Private and non-existent assignment operator.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
static void Init()
Standard Init function used to initialize the interfaces.
WeakCurrentPtr current_
the hadronic current
Definition: TauDecayer.h:177
vector< double > wgtMax_
the maximum weight
Definition: TauDecayer.h:187
vector< unsigned int > modeMap_
mapping of the modes to the currents
Definition: TauDecayer.h:172
vector< int > wgtLoc_
location of the weights
Definition: TauDecayer.h:182
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr