ThePEG  1.8.0
SimpleKTCut.h
1 // -*- C++ -*-
2 //
3 // SimpleKTCut.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_SimpleKTCut_H
10 #define THEPEG_SimpleKTCut_H
11 //
12 // This is the declaration of the SimpleKTCut class.
13 //
14 
15 #include "ThePEG/Cuts/OneCutBase.h"
16 
17 namespace ThePEG {
18 
29 class SimpleKTCut: public OneCutBase {
30 
31 public:
32 
39  : theMinKT(minKT), theMaxKT(Constants::MaxEnergy),
40  theMinEta(-Constants::MaxRapidity),
41  theMaxEta(Constants::MaxRapidity) {}
42 
46  virtual ~SimpleKTCut();
48 
49 public:
50 
57  virtual Energy minKT(tcPDPtr p) const;
58 
64  virtual double minEta(tcPDPtr p) const;
65 
71  virtual double maxEta(tcPDPtr p) const;
72 
78  virtual bool passCuts(tcCutsPtr parent,
79  tcPDPtr ptype, LorentzMomentum p) const;
81 
85  virtual void describe() const;
86 
87 public:
88 
95  void persistentOutput(PersistentOStream & os) const;
96 
102  void persistentInput(PersistentIStream & is, int version);
104 
111  static void Init();
112 
113 protected:
114 
121  virtual IBPtr clone() const;
122 
127  virtual IBPtr fullclone() const;
129 
130 private:
131 
135  Energy maxKTMin() const;
136 
140  Energy minKTMax() const;
141 
145  double maxEtaMin() const;
146 
150  double minEtaMax() const;
151 
152 private:
153 
159 
165 
170  double theMinEta;
171 
176  double theMaxEta;
177 
183 
184 private:
185 
191 
196  SimpleKTCut & operator=(const SimpleKTCut &);
197 
198 };
199 
200 }
201 
202 #include "ThePEG/Utilities/ClassTraits.h"
203 
204 namespace ThePEG {
205 
210 template <>
211 struct BaseClassTrait<SimpleKTCut,1> {
213  typedef OneCutBase NthBase;
214 };
215 
218 template <>
219 struct ClassTraits<SimpleKTCut>
220  : public ClassTraitsBase<SimpleKTCut> {
222  static string className() { return "ThePEG::SimpleKTCut"; }
226  static string library() { return "SimpleKTCut.so"; }
227 };
228 
231 }
232 
233 #endif /* THEPEG_SimpleKTCut_H */