00001 // -*- C++ -*- 00002 // 00003 // OneCutBase.h is a part of ThePEG - Toolkit for HEP Event Generation 00004 // Copyright (C) 1999-2007 Leif Lonnblad 00005 // 00006 // ThePEG is licenced under version 2 of the GPL, see COPYING for details. 00007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 00008 // 00009 #ifndef THEPEG_OneCutBase_H 00010 #define THEPEG_OneCutBase_H 00011 // 00012 // This is the declaration of the OneCutBase class. 00013 // 00014 00015 #include "ThePEG/Interface/Interfaced.h" 00016 #include "OneCutBase.fh" 00017 #include "Cuts.fh" 00018 00019 namespace ThePEG { 00020 00039 class OneCutBase: public Interfaced { 00040 00041 public: 00042 00048 OneCutBase() {} 00049 00053 virtual ~OneCutBase(); 00055 00056 public: 00057 00064 virtual Energy minKT(tcPDPtr p) const = 0; 00065 00071 virtual double minEta(tcPDPtr p) const = 0; 00072 00078 virtual double maxEta(tcPDPtr p) const = 0; 00079 00085 virtual Energy minMaxKT(tcPDPtr p) const; 00086 00093 virtual double minMaxEta(tcPDPtr p) const; 00094 00101 virtual double maxMinEta(tcPDPtr p) const; 00102 00108 virtual bool passCuts(tcCutsPtr parent, 00109 tcPDPtr ptype, LorentzMomentum p) const; 00110 00116 bool passCuts(tcCutsPtr parent, tcPPtr p) const; 00118 00122 virtual void describe() const; 00123 00124 public: 00125 00132 static void Init(); 00133 00134 private: 00135 00140 static AbstractNoPIOClassDescription<OneCutBase> initOneCutBase; 00141 00146 OneCutBase & operator=(const OneCutBase &); 00147 00148 }; 00149 00150 } 00151 00152 #include "ThePEG/Utilities/ClassTraits.h" 00153 00154 namespace ThePEG { 00155 00160 template <> 00161 struct BaseClassTrait<OneCutBase,1> { 00163 typedef Interfaced NthBase; 00164 }; 00165 00168 template <> 00169 struct ClassTraits<OneCutBase> 00170 : public ClassTraitsBase<OneCutBase> { 00172 static string className() { return "ThePEG::OneCutBase"; } 00173 }; 00174 00177 } 00178 00179 #endif /* THEPEG_OneCutBase_H */