// Interactor.h #ifndef Interactor_H #define Interactor_H // This is an interface base class for interactors, object that modify // an ETrack. Thes mican account for dE/dx, MS.. etc. #include "trfobj/TrfObject.h" namespace trf { class ETrack; class Interactor : public TrfObject { private: // Static data. // Return the type name. static TypeName get_type_name() { return "Interactor"; } // Return the creator. static ObjCreator get_creator(); // Return the type. static Type get_static_type() { return get_creator(); } public: // Destructor. virtual ~Interactor(); // Return the generic type. // This is only needed at this level. Type get_generic_type() const { return get_static_type(); } // Return the type. Type get_type() const { return get_static_type(); } // Interact: modify the track vector and error matrix. virtual void interact(ETrack& tre) const =0; // Make a clone of this object. virtual Interactor* new_copy() const =0; }; } // end namespace trf #endif