ThePEG  1.8.0
MEGG2GG.h
1 // -*- C++ -*-
2 //
3 // MEGG2GG.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2011 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 2 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef ThePEG_MEGG2GG_H
10 #define ThePEG_MEGG2GG_H
11 // This is the declaration of the MEGG2GG class.
12 
13 #include "ThePEG/MatrixElement/ME2to2QCD.h"
14 
15 namespace ThePEG {
16 
25 class MEGG2GG: public ME2to2QCD {
26 
27 public:
28 
38  virtual double me2() const;
39 
43  virtual void getDiagrams() const;
44 
53  colourGeometries(tcDiagPtr diag) const;
54 
63  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
65 
66 protected:
67 
75  double colA1() const { return sqr(1.0 + sHat()/tHat()) + 0.5; }
76 
81  double colB1() const { return sqr(1.0 + uHat()/sHat()) + 0.5; }
82 
87  double colC1() const { return sqr(1.0 + tHat()/uHat()) + 0.5; }
88 
93  double colA2() const { return 0.5 + sqr(1.0 + tHat()/sHat()); }
94 
99  double colB2() const { return 0.5 + sqr(1.0 + sHat()/uHat()); }
100 
105  double colC2() const { return 0.5 + sqr(1.0 + uHat()/tHat()); }
107 
108 public:
109 
113  static void Init();
114 
115 protected:
116 
123  virtual IBPtr clone() const;
124 
129  virtual IBPtr fullclone() const;
131 
132 private:
133 
138 
142  MEGG2GG & operator=(const MEGG2GG &);
143 
144 };
145 
146 }
147 
148 
149 namespace ThePEG {
150 
155 template <>
156 struct BaseClassTrait<MEGG2GG,1>: public ClassTraitsType {
158  typedef ME2to2QCD NthBase;
159 };
160 
163 template <>
164 struct ClassTraits<MEGG2GG>: public ClassTraitsBase<MEGG2GG> {
166  static string className() { return "ThePEG::MEGG2GG"; }
170  static string library() { return "MEQCD.so"; }
171 };
172 
175 }
176 
177 #endif /* ThePEG_MEGG2GG_H */