ThePEG  1.8.0
MultiCutBase.h
1 // -*- C++ -*-
2 //
3 // MultiCutBase.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_MultiCutBase_H
10 #define THEPEG_MultiCutBase_H
11 //
12 // This is the declaration of the MultiCutBase class.
13 //
14 
15 #include "ThePEG/Interface/Interfaced.h"
16 #include "MultiCutBase.fh"
17 #include "Cuts.fh"
18 
19 namespace ThePEG {
20 
34 class MultiCutBase: public Interfaced {
35 
36 public:
37 
45  virtual Energy2 minS(const tcPDVector & pv) const = 0;
46 
52  virtual Energy2 maxS(const tcPDVector & pv) const = 0;
53 
58  virtual bool passCuts(tcCutsPtr parent, const tcPDVector & ptype,
59  const vector<LorentzMomentum> & p) const;
60 
64  bool passCuts(tcCutsPtr parent, const tcPVector & p) const;
66 
70  virtual void describe() const;
71 
72 public:
73 
80  static void Init();
81 
82 private:
83 
89 
95 
96 };
97 
98 }
99 
100 #include "ThePEG/Utilities/ClassTraits.h"
101 
102 namespace ThePEG {
103 
108 template <>
109 struct BaseClassTrait<MultiCutBase,1> {
111  typedef Interfaced NthBase;
112 };
113 
116 template <>
117 struct ClassTraits<MultiCutBase>
118  : public ClassTraitsBase<MultiCutBase> {
120  static string className() { return "ThePEG::MultiCutBase"; }
121 };
122 
125 }
126 
127 #endif /* THEPEG_MultiCutBase_H */