ThePEG  1.8.0
SimpleDISCut.h
1 // -*- C++ -*-
2 //
3 // SimpleDISCut.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_SimpleDISCut_H
10 #define THEPEG_SimpleDISCut_H
11 //
12 // This is the declaration of the SimpleDISCut class.
13 //
14 
15 #include "ThePEG/Cuts/TwoCutBase.h"
16 
17 namespace ThePEG {
18 
27 class SimpleDISCut: public TwoCutBase {
28 
29 public:
30 
35  : theMinQ2(1.0*GeV2), theMaxQ2(100.0*GeV2),
36  theMinW2(100.0*GeV2), theMaxW2(1000000.0*GeV2), chargedCurrent(false) {}
37 
38 public:
39 
46  virtual Energy2 minSij(tcPDPtr pi, tcPDPtr pj) const;
47 
54  virtual Energy2 minTij(tcPDPtr pi, tcPDPtr po) const;
55 
61  virtual double minDeltaR(tcPDPtr pi, tcPDPtr pj) const;
62 
73  virtual Energy minKTClus(tcPDPtr pi, tcPDPtr pj) const;
74 
81  virtual double minDurham(tcPDPtr pi, tcPDPtr pj) const;
82 
89  virtual bool passCuts(tcCutsPtr parent, tcPDPtr pitype, tcPDPtr pjtype,
91  bool inci = false, bool incj = false) const;
93 
97  virtual void describe() const;
98 
99 protected:
100 
105  bool check(long idi, long ido) const;
106 
107 public:
108 
115  void persistentOutput(PersistentOStream & os) const;
116 
122  void persistentInput(PersistentIStream & is, int version);
124 
131  static void Init();
132 
133 protected:
134 
141  virtual IBPtr clone() const;
142 
147  virtual IBPtr fullclone() const;
149 
150 private:
151 
155  Energy2 maxMinQ2() const;
156 
160  Energy2 minMaxQ2() const;
161 
165  Energy2 maxMinW2() const;
166 
170  Energy2 minMaxW2() const;
171 
172 private:
173 
177  Energy2 theMinQ2;
178 
182  Energy2 theMaxQ2;
183 
187  Energy2 theMinW2;
188 
192  Energy2 theMaxW2;
193 
199 
200 private:
201 
207 
213 
214 };
215 
216 }
217 
218 #include "ThePEG/Utilities/ClassTraits.h"
219 
220 namespace ThePEG {
221 
226 template <>
227 struct BaseClassTrait<SimpleDISCut,1> {
229  typedef TwoCutBase NthBase;
230 };
231 
234 template <>
235 struct ClassTraits<SimpleDISCut>
236  : public ClassTraitsBase<SimpleDISCut> {
238  static string className() { return "ThePEG::SimpleDISCut"; }
242  static string library() { return "SimpleDISCut.so"; }
243 };
244 
247 }
248 
249 #endif /* THEPEG_SimpleDISCut_H */