ThePEG  1.8.0
ME2to2QCD.h
1 // -*- C++ -*-
2 //
3 // ME2to2QCD.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_ME2to2QCD_H
10 #define ThePEG_ME2to2QCD_H
11 // This is the declaration of the ME2to2QCD class.
12 
13 #include "ThePEG/MatrixElement/ME2to2Base.h"
14 
15 namespace ThePEG {
16 
28 class ME2to2QCD: public ME2to2Base {
29 
30 public:
31 
38  : theMaxFlavour(5), theKfac(1.0), theKfacA(1.0), useInterference(true) {}
39 
43  virtual ~ME2to2QCD();
45 
46 public:
47 
54  virtual unsigned int orderInAlphaS() const;
55 
60  virtual unsigned int orderInAlphaEW() const;
61 
66  double comfac() const;
67 
71  int maxFlavour() const { return theMaxFlavour; }
72 
76  double Kfac() const { return theKfac; }
77 
81  double KfacA() const { return theKfacA >= 0.0? theKfacA: theKfac; }
82 
86  bool interference() const { return useInterference; }
87 
91  bool isQuark(const ParticleData & p) const {
92  return ( p.id() && abs(p.id()) <= maxFlavour() );
93  }
94 
98  tcPDPtr quark(int i) const;
100 
101 public:
102 
109  void persistentOutput(PersistentOStream & os) const;
110 
116  void persistentInput(PersistentIStream & is, int version);
118 
122  static void Init();
123 
124 private:
125 
130 
134  double theKfac;
135 
140  double theKfacA;
141 
146 
147 private:
148 
153 
157  ME2to2QCD & operator=(const ME2to2QCD &);
158 
159 };
160 
161 }
162 
163 
164 namespace ThePEG {
165 
172 template <>
173 struct BaseClassTrait<ME2to2QCD,1>: public ClassTraitsType {
175  typedef ME2to2Base NthBase;
176 };
177 
182 template <>
183 struct ClassTraits<ME2to2QCD>: public ClassTraitsBase<ME2to2QCD> {
185  static string className() { return "ThePEG::ME2to2QCD"; }
186 };
187 
190 }
191 
192 #endif /* ThePEG_ME2to2QCD_H */