00001 // -*- C++ -*- 00002 // 00003 // EventManipulator.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_EventManipulator_H 00010 #define ThePEG_EventManipulator_H 00011 // This is the declaration of the EventManipulator class. 00012 00013 #include "ThePEG/Interface/Interfaced.h" 00014 #include "ThePEG/Handlers/EventHandler.fh" 00015 #include <stdexcept> 00016 00017 namespace ThePEG { 00018 00041 class EventManipulator: public Interfaced { 00042 00043 public: 00044 00053 virtual int manipulate(tEHPtr eh, tEventPtr event) = 0; 00054 00055 public: 00056 00060 static void Init(); 00061 00062 protected: 00063 00064 private: 00065 00069 static AbstractNoPIOClassDescription<EventManipulator> initEventManipulator; 00070 00074 EventManipulator & operator=(const EventManipulator &); 00075 00076 }; 00077 00084 template <> 00085 struct BaseClassTrait<EventManipulator,1>: public ClassTraitsType { 00087 typedef Interfaced NthBase; 00088 }; 00089 00094 template <> 00095 struct ClassTraits<EventManipulator>: 00096 public ClassTraitsBase<EventManipulator> { 00098 static string className() { return "ThePEG::EventManipulator"; } 00099 }; 00100 00103 } 00104 00105 #endif /* ThePEG_EventManipulator_H */