ThePEG  1.8.0
OneCutBase.h
1 // -*- C++ -*-
2 //
3 // OneCutBase.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_OneCutBase_H
10 #define THEPEG_OneCutBase_H
11 //
12 // This is the declaration of the OneCutBase class.
13 //
14 
15 #include "ThePEG/Interface/Interfaced.h"
16 #include "OneCutBase.fh"
17 #include "Cuts.fh"
18 
19 namespace ThePEG {
20 
39 class OneCutBase: public Interfaced {
40 
41 public:
42 
49 
53  virtual ~OneCutBase();
55 
56 public:
57 
64  virtual Energy minKT(tcPDPtr p) const = 0;
65 
71  virtual double minEta(tcPDPtr p) const = 0;
72 
78  virtual double maxEta(tcPDPtr p) const = 0;
79 
85  virtual double minRapidityMax(tcPDPtr p) const;
86 
92  virtual double maxRapidityMin(tcPDPtr p) const;
93 
99  virtual Energy minMaxKT(tcPDPtr p) const;
100 
107  virtual double minMaxEta(tcPDPtr p) const;
108 
115  virtual double maxMinEta(tcPDPtr p) const;
116 
122  virtual bool passCuts(tcCutsPtr parent,
123  tcPDPtr ptype, LorentzMomentum p) const;
124 
130  bool passCuts(tcCutsPtr parent, tcPPtr p) const;
132 
136  virtual void describe() const;
137 
138 public:
139 
146  static void Init();
147 
148 private:
149 
155 
160  OneCutBase & operator=(const OneCutBase &);
161 
162 };
163 
164 }
165 
166 #include "ThePEG/Utilities/ClassTraits.h"
167 
168 namespace ThePEG {
169 
174 template <>
175 struct BaseClassTrait<OneCutBase,1> {
177  typedef Interfaced NthBase;
178 };
179 
182 template <>
183 struct ClassTraits<OneCutBase>
184  : public ClassTraitsBase<OneCutBase> {
186  static string className() { return "ThePEG::OneCutBase"; }
187 };
188 
191 }
192 
193 #endif /* THEPEG_OneCutBase_H */