/****************************************************************************** * ShowerMaxCluster class header file * * * * Author: Bob Wagner, Argonne CDF Group * * Phone 630-252-6321 (Argonne) 630-840-8436 (Fermilab) * * * * Description: Abstract base interface class for shower max objects * * * * Revision History: * * 07-Oct-1999 Bob Wagner Initial creation * * 15-Oct-1999 Bob Wagner Change interface to provide a localCoord * * accessor that returns a string and a double * * string can be used to identify what the coord* * is and double is its value. Remove the 3-d * * space coord accessor * * 19-Oct.1999 Bob Wagner Add accessors for detector, side, module, * * view and local coordinate. Local coordinate * * will now simply return a double * * Also add print function * * 26-Oct-1999 Bob Wagner Add a clone method to the class to allow for * * copying polymorphically * * 12-Nov-1999 Marc Paterno Made into a StreamableObject * * Added class_name() function * * 10-May-2000 Bob Wagner Change return type of region() to Detector * * which is enumeration in CalConstants.hh * * Remove EDM2 directives. * * 01-Jun-2000 Dave Waters Add version information. * * * *********** WARNING: Under development. Not all functions **************** *********** implemented. Correct implementation **************** *********** of algorithm not guaranteed. **************** * * *****************************************************************************/ #ifndef SHOWERMAXCLUSTER_HH_ #define SHOWERMAXCLUSTER_HH_ //--------------- // C++ Headers -- //--------------- #include "Edm/StreamableObject.hh" #include "CalorGeometry/CalConstants.hh" #include "Rtypes.h" //---------------------------------- // Forward Declaration of Classes -- //---------------------------------- // Class Declaration // class ShowerMaxCluster : public StreamableObject { public: /*===========================================================================*\ * Minimal functions for good class definition * \*===========================================================================*/ // Don't need to define constructors for interface classes /*===========================================================================*\ * Accessor functions common to all shower max objects * \*===========================================================================*/ virtual float clusterWidth( void ) const = 0; virtual Detector region( void ) const = 0; virtual float energy( void ) const = 0; virtual float localCoord( void ) const = 0; virtual float globalCoord( void ) const = 0; virtual int module( void ) const = 0; virtual int side( void ) const = 0; virtual int view( void ) const = 0; // virtual std::string class_name() const = 0; /*===========================================================================*\ * Additional functions common to all shower max objects * \*===========================================================================*/ virtual ~ShowerMaxCluster(){} // virtual ShowerMaxCluster* clone( void ) const = 0; //--------------------------------------------------------------------------- // Input/Output Requirements: // Child classes should call base class methods, // then treat own data members //--------------------------------------------------------------------------- virtual void Streamer(TBuffer& iobuffer) ; virtual bool postread( EventRecord* p_record) ; virtual bool prewrite( EventRecord* p_record) ; // VERSION INFORMATION : static Version_t class_version(){return _VERSION;} private: // EDM VERSION : static const Version_t _VERSION; }; /****************************************************************************** * ALL DONE * *****************************************************************************/ #endif /* SHOWERMAXCLUSTER_HH_ */