herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
SimpleColourBasis2.h
1 // -*- C++ -*-
2 //
3 // SimpleColourBasis2.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_SimpleColourBasis2_H
10 #define Herwig_SimpleColourBasis2_H
11 //
12 // This is the declaration of the SimpleColourBasis2 class.
13 //
14 
15 #include "Herwig/MatrixElement/Matchbox/Utility/ColourBasis.h"
16 
17 namespace Herwig {
18 
19 using namespace ThePEG;
20 
31 
32 public:
33 
40 
44  virtual ~SimpleColourBasis2();
46 
47 public:
48 
53  virtual size_t prepareBasis(const vector<PDT::Colour>&);
54 
59  virtual double scalarProduct(size_t a, size_t b,
60  const vector<PDT::Colour>& abBasis) const;
61 
67  virtual double tMatrixElement(size_t i, size_t a, size_t b,
68  const vector<PDT::Colour>& aBasis,
69  const vector<PDT::Colour>& bBasis,
70  size_t k, size_t l,
71  const map<size_t,size_t>& dict) const;
72 
73  /*
74  * Temporary to make it compile
75  */
76  virtual double sMatrixElement(size_t, size_t, size_t,
77  const vector<PDT::Colour>&,
78  const vector<PDT::Colour>&,
79  size_t, size_t,
80  const map<size_t,size_t>&
81  ) const {
82  assert( 0 == 1 );
83  return 0;
84  }
85 
89  virtual bool canSplitGluons() const {
90  return false;
91  }
92 
97  virtual bool colourConnected(const cPDVector&,
98  const vector<PDT::Colour>&,
99  const pair<int,bool>&,
100  const pair<int,bool>&,
101  size_t) const;
102 
107  virtual bool haveColourFlows() const { return true; }
108 
112  void makeIds() const;
113 
119  virtual map<size_t,vector<vector<size_t> > > basisList(const vector<PDT::Colour>&) const;
120 
121 public:
122 
129  void persistentOutput(PersistentOStream & os) const;
130 
136  void persistentInput(PersistentIStream & is, int version);
138 
145  static void Init();
146 
147 protected:
148 
155  virtual IBPtr clone() const;
156 
161  virtual IBPtr fullclone() const;
163 
164 
165 // If needed, insert declarations of virtual function defined in the
166 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
167 
168 
169 private:
170 
174  mutable vector<PDT::Colour> id88;
175 
179  mutable vector<PDT::Colour> id33bar;
180 
184  mutable vector<PDT::Colour> id888;
185 
189  mutable vector<PDT::Colour> id33bar8;
190 
194  mutable vector<PDT::Colour> id8888;
195 
199  mutable vector<PDT::Colour> id33bar88;
200 
204  mutable vector<PDT::Colour> id33bar33bar;
205 
209  mutable vector<PDT::Colour> id88888;
210 
214  mutable vector<PDT::Colour> id33bar888;
215 
219  mutable vector<PDT::Colour> id33bar33bar8;
220 
221 private:
222 
227  SimpleColourBasis2 & operator=(const SimpleColourBasis2 &) = delete;
228 
229 };
230 
231 }
232 
233 #endif /* Herwig_SimpleColourBasis2_H */
vector< PDT::Colour > id33bar88
id for 33bar88
vector< PDT::Colour > id33bar888
id for 33bar888
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< PDT::Colour > id33bar33bar8
id for 33bar33bar8
vector< PDT::Colour > id88
id for 88
vector< PDT::Colour > id888
id for 888
vector< PDT::Colour > id8888
id for 8888
SimpleColourBasis2 implements the colour algebra needed for processes with four coloured legs at NLO...
virtual bool canSplitGluons() const
Return true, if this colour basis supports gluon splittings.
virtual bool haveColourFlows() const
Return true, if the colour basis is capable of assigning colour flows.
vector< PDT::Colour > id33bar
id for 33bar
vector< PDT::Colour > id88888
id for 88888
vector< cPDPtr > cPDVector
-*- C++ -*-
ColourBasis is an interface to a colour basis implementation.
Definition: ColourBasis.h:46
vector< PDT::Colour > id33bar8
id for 33bar8
vector< PDT::Colour > id33bar33bar
id for 33bar33bar