herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
PseudoVectorMesonVectorVectorDecayer.h
1// -*- C++ -*-
2//
3// PseudoVectorMesonVectorVectorDecayer.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_PseudoVectorMesonVectorVectorDecayer_H
10#define HERWIG_PseudoVectorMesonVectorVectorDecayer_H
11//
12// This is the declaration of the PseudoVectorMesonVectorVectorDecayer class.
13//
14#include "Herwig/Decay/DecayIntegrator.h"
15#include "Herwig/Decay/PhaseSpaceMode.h"
16#include "ThePEG/Helicity/LorentzPolarizationVector.h"
17
18namespace Herwig {
19using namespace ThePEG;
20
48class PseudoVectorMesonVectorVectorDecayer: public DecayIntegrator {
49
50public:
51
55 PseudoVectorMesonVectorVectorDecayer();
56
63 virtual int modeNumber(bool & cc, tcPDPtr parent,
64 const tPDVector & children) const;
65
74 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
75
85 double me2(const int ichan,const Particle & part,
86 const tPDVector & outgoing,
87 const vector<Lorentz5Momentum> & momenta,
88 MEOption meopt) const;
89
93 virtual void constructSpinInfo(const Particle & part,
94 ParticleVector outgoing) const;
95
101 virtual void dataBaseOutput(ofstream & os,bool header) const;
102
103public:
104
111 void persistentOutput(PersistentOStream & os) const;
112
118 void persistentInput(PersistentIStream & is, int version);
120
124 static void Init();
125
126protected:
127
134 virtual IBPtr clone() const {return new_ptr(*this);}
135
140 virtual IBPtr fullclone() const {return new_ptr(*this);}
142
143protected:
144
152 virtual void doinit();
153
157 virtual void doinitrun();
159
160private:
161
165 PseudoVectorMesonVectorVectorDecayer & operator=(const PseudoVectorMesonVectorVectorDecayer &) = delete;
166
167public:
168
172 string setUpDecayMode(string arg);
173
174private:
175
179 vector<double> coupling_;
180
184 vector<int> incoming_;
185
189 vector<pair<long,long> > outgoing_;
190
194 vector<double> maxWeight_;
195
199 mutable RhoDMatrix rho_;
200
204 mutable vector<Helicity::LorentzPolarizationVector> vectors_[3];
205
206};
207
208}
209
210
211#endif /* HERWIG_PseudoVectorMesonVectorVectorDecayer_H */
-*- C++ -*-
Ptr< T >::pointer new_ptr()
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr