00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef THEPEG_MultiCutBase_H
00010 #define THEPEG_MultiCutBase_H
00011
00012
00013
00014
00015 #include "ThePEG/Interface/Interfaced.h"
00016 #include "MultiCutBase.fh"
00017 #include "Cuts.fh"
00018
00019 namespace ThePEG {
00020
00034 class MultiCutBase: public Interfaced {
00035
00036 public:
00037
00045 virtual Energy2 minS(const tcPDVector & pv) const = 0;
00046
00052 virtual Energy2 maxS(const tcPDVector & pv) const = 0;
00053
00058 virtual bool passCuts(tcCutsPtr parent, const tcPDVector & ptype,
00059 const vector<LorentzMomentum> & p) const;
00060
00064 bool passCuts(tcCutsPtr parent, const tcPVector & p) const;
00066
00070 virtual void describe() const;
00071
00072 public:
00073
00080 static void Init();
00081
00082 private:
00083
00088 static AbstractNoPIOClassDescription<MultiCutBase> initMultiCutBase;
00089
00094 MultiCutBase & operator=(const MultiCutBase &);
00095
00096 };
00097
00098 }
00099
00100 #include "ThePEG/Utilities/ClassTraits.h"
00101
00102 namespace ThePEG {
00103
00108 template <>
00109 struct BaseClassTrait<MultiCutBase,1> {
00111 typedef Interfaced NthBase;
00112 };
00113
00116 template <>
00117 struct ClassTraits<MultiCutBase>
00118 : public ClassTraitsBase<MultiCutBase> {
00120 static string className() { return "ThePEG::MultiCutBase"; }
00121 };
00122
00125 }
00126
00127 #endif