herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
PhasespaceCouplings.h
1 // -*- C++ -*-
2 //
3 // PhasespaceCouplings.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_PhasespaceCouplings_H
10 #define Herwig_PhasespaceCouplings_H
11 //
12 // This is the declaration of the PhasespaceCouplings class.
13 //
14 
15 #include "ThePEG/Handlers/HandlerBase.h"
16 #include "ThePEG/Persistency/PersistentOStream.h"
17 #include "ThePEG/Persistency/PersistentIStream.h"
18 
19 namespace Herwig {
20 
21 using namespace ThePEG;
22 
23 typedef std::tuple<long,long,long> LTriple;
24 
25 inline PersistentOStream& operator<<(PersistentOStream& os, const LTriple& t) {
26  os << std::get<0>(t) << std::get<1>(t) << std::get<2>(t);
27  return os;
28 }
29 
30 inline PersistentIStream& operator>>(PersistentIStream& is, LTriple& t) {
31  is >> std::get<0>(t) >> std::get<1>(t) >> std::get<2>(t);
32  return is;
33 }
34 
46 
47 public:
48 
55 
59  virtual ~PhasespaceCouplings();
61 
62 public:
63 
67  map<LTriple,double>& couplings() { return theCouplings; }
68 
72  const map<LTriple,double>& couplings() const { return theCouplings; }
73 
74 public:
75 
82  void persistentOutput(PersistentOStream & os) const;
83 
89  void persistentInput(PersistentIStream & is, int version);
91 
98  static void Init();
99 
100 protected:
101 
108  virtual IBPtr clone() const;
109 
114  virtual IBPtr fullclone() const;
116 
117 
118 // If needed, insert declarations of virtual function defined in the
119 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
120 
121 
122 private:
123 
127  map<LTriple,double> theCouplings;
128 
133  PhasespaceCouplings & operator=(const PhasespaceCouplings &) = delete;
134 
135 };
136 
137 }
138 
139 #endif /* Herwig_PhasespaceCouplings_H */
const map< LTriple, double > & couplings() const
Couplings to be used in diagram weighting.
map< LTriple, double > & couplings()
Couplings to be used in diagram weighting.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
Store couplings for the phase space generator.
ostream & operator<<(ostream &, const DecayIntegrator &)
Output information on the DecayIntegrator for debugging purposes.
vector< T > & operator>>(vector< T > &tv, U &u)
map< LTriple, double > theCouplings
Couplings to be used in diagram weighting.
-*- C++ -*-