herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
LeptonNeutrinoCurrent.h
1 // -*- C++ -*-
2 //
3 // LeptonNeutrinoCurrent.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 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_LeptonNeutrinoCurrent_H
10 #define HERWIG_LeptonNeutrinoCurrent_H
11 //
12 // This is the declaration of the LeptonNeutrinoCurrent class.
13 //
14 #include "WeakDecayCurrent.h"
15 #include "LeptonNeutrinoCurrent.fh"
16 
17 namespace Herwig {
18 using namespace ThePEG;
20 
34 
35 public:
36 
41  // set up the modes in the base class
42  addDecayMode(11,-12);
43  addDecayMode(13,-15);
44  addDecayMode(15,-16);
45  setInitialModes(3);
46  }
47 
48 public:
49 
66  virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode,
67  unsigned int iloc,unsigned int ires,
68  DecayPhaseSpaceChannelPtr phase,Energy upp);
69 
78  virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia);
80 
90  virtual vector<LorentzPolarizationVectorE>
91  current(const int imode, const int ichan,Energy & scale,
92  const ParticleVector & decay, DecayIntegrator::MEOption meopt) const;
93 
99  virtual bool accept(vector<int> id);
100 
106  virtual unsigned int decayMode(vector<int> id);
107 
114  virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
115 
116 public:
117 
121  static void Init();
122 
123 protected:
124 
131  virtual IBPtr clone() const {return new_ptr(*this);}
132 
137  virtual IBPtr fullclone() const {return new_ptr(*this);}
139 
140 private:
141 
146 
150  LeptonNeutrinoCurrent & operator=(const LeptonNeutrinoCurrent &) = delete;
151 
152 };
153 
154 }
155 
156 
157 #include "ThePEG/Utilities/ClassTraits.h"
158 
159 namespace ThePEG {
160 
167 template <>
168  struct BaseClassTrait<Herwig::LeptonNeutrinoCurrent,1> {
170  typedef Herwig::WeakDecayCurrent NthBase;
171 };
172 
177 template <>
178 struct ClassTraits<Herwig::LeptonNeutrinoCurrent>
179  : public ClassTraitsBase<Herwig::LeptonNeutrinoCurrent> {
181  static string className() { return "Herwig::LeptonNeutrinoCurrent"; }
187  static string library() { return "HwWeakCurrents.so"; }
188 
189 };
190 
193 }
194 
195 #endif /* HERWIG_LeptonNeutrinoCurrent_H */
The WeakDecayCurrent class is the base class for the hadronic currents produced in weak decays...
This class implements the weak decay current for a lepton and a neutrino.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
MEOption
Enum for the matrix element option.
vector< tPDPtr > tPDVector
LeptonNeutrinoCurrent()
Default constructor.
-*- C++ -*-
LorentzVector< complex< double > > LorentzPolarizationVector
static NoPIOClassDescription< LeptonNeutrinoCurrent > initLeptonNeutrinoCurrent
Describe a concrete class with no persistent data.
virtual IBPtr clone() const
Make a simple clone of this object.
vector< PPtr > ParticleVector