herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
PScalarPScalarVectorDecayer.h
1 // -*- C++ -*-
2 //
3 // PScalarPScalarVectorDecayer.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_PScalarPScalarVectorDecayer_H
10 #define HERWIG_PScalarPScalarVectorDecayer_H
11 //
12 // This is the declaration of the PScalarPScalarVectorDecayer class.
13 //
14 #include "Herwig/Decay/DecayIntegrator.h"
15 #include "Herwig/Decay/DecayPhaseSpaceMode.h"
16 #include "ThePEG/Helicity/LorentzPolarizationVector.h"
17 
18 namespace Herwig {
19 using namespace ThePEG;
20 
40 
41 public:
42 
47 
54  virtual int modeNumber(bool & cc, tcPDPtr parent,
55  const tPDVector & children) const;
56 
65  double me2( const int ichan,const Particle & part,
66  const ParticleVector & decay, MEOption meopt) const;
67 
76  bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
77 
78 public:
79 
86  void persistentOutput(PersistentOStream & os) const;
87 
93  void persistentInput(PersistentIStream & is, int version);
95 
99  static void Init();
100 
106  virtual void dataBaseOutput(ofstream & os,bool header) const;
107 
108 protected:
109 
116  virtual IBPtr clone() const {return new_ptr(*this);}
117 
122  virtual IBPtr fullclone() const {return new_ptr(*this);}
124 
125 protected:
126 
129 
135  virtual void doinit();
136 
140  virtual void doinitrun();
142 
143 private:
144 
148  PScalarPScalarVectorDecayer & operator=(const PScalarPScalarVectorDecayer &) = delete;
149 
150 private:
151 
155  vector<int> _incoming;
156 
160  vector<int> _outgoingP;
161 
165  vector<int> _outgoingV;
166 
170  vector<double> _coupling;
171 
175  vector<double> _maxweight;
176 
180  unsigned int _initsize;
181 
185  mutable RhoDMatrix _rho;
186 
190  mutable vector<Helicity::LorentzPolarizationVector> _vectors;
191 };
192 
193 }
194 
195 
196 #endif /* HERWIG_PScalarPScalarVectorDecayer_H */
vector< Helicity::LorentzPolarizationVector > _vectors
Polarization vectors for the decay products.
vector< double > _coupling
the coupling for the decay
The PScalarPScalarVectorDecayer class is designed to perform the decay of a pseudoscalar meson to ano...
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual IBPtr clone() const
Make a simple clone of this object.
MEOption
Enum for the matrix element option.
vector< tPDPtr > tPDVector
Main class for Decayers implementing multi-channel phase space integration.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< double > _maxweight
the maximum weight for the decay
vector< int > _incoming
the PDG code for the incoming particle
unsigned int _initsize
initial number of modes
vector< int > _outgoingV
the PDG code for the outgoing vector
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
-*- C++ -*-
vector< int > _outgoingP
the PDG code for the outgoing pseudoscalar
vector< PPtr > ParticleVector