ThePEG  1.8.0
TwoCutBase.h
1 // -*- C++ -*-
2 //
3 // TwoCutBase.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_TwoCutBase_H
10 #define THEPEG_TwoCutBase_H
11 //
12 // This is the declaration of the TwoCutBase class.
13 //
14 
15 #include "ThePEG/Interface/Interfaced.h"
16 #include "TwoCutBase.fh"
17 #include "Cuts.fh"
18 
19 namespace ThePEG {
20 
35 class TwoCutBase: public Interfaced {
36 
37 public:
38 
45 
49  virtual ~TwoCutBase();
51 
52 public:
53 
60  virtual Energy2 minSij(tcPDPtr pi, tcPDPtr pj) const = 0;
61 
67  virtual Energy2 minTij(tcPDPtr pi, tcPDPtr po) const = 0;
68 
74  virtual double minDeltaR(tcPDPtr pi, tcPDPtr pj) const = 0;
75 
86  virtual Energy minKTClus(tcPDPtr pi, tcPDPtr pj) const = 0;
87 
94  virtual double minDurham(tcPDPtr pi, tcPDPtr pj) const = 0;
95 
102  virtual bool passCuts(tcCutsPtr parent, tcPDPtr pitype, tcPDPtr pjtype,
104  bool inci = false, bool incj = false) const;
105 
111  bool passCuts(tcCutsPtr parent, tcPPtr pi, tcPPtr pj,
112  bool inci = false, bool incj = false) const;
114 
118  virtual void describe() const;
119 
120 public:
121 
128  static void Init();
129 
130 private:
131 
137 
142  TwoCutBase & operator=(const TwoCutBase &);
143 
144 };
145 
146 }
147 
148 #include "ThePEG/Utilities/ClassTraits.h"
149 
150 namespace ThePEG {
151 
156 template <>
157 struct BaseClassTrait<TwoCutBase,1> {
159  typedef Interfaced NthBase;
160 };
161 
164 template <>
165 struct ClassTraits<TwoCutBase>
166  : public ClassTraitsBase<TwoCutBase> {
168  static string className() { return "ThePEG::TwoCutBase"; }
169 };
170 
173 }
174 
175 #endif /* THEPEG_TwoCutBase_H */