#ifndef _CPRCLUSTER_HH_ #define _CPRCLUSTER_HH_ /****************************************************************************** Description: CprCluster class header file Author List: 04/30/2000 Tania Moulik : created Revision History : 08/30/2000 Tania Moulik Remove ifndef _CINT_ around constructor 10/05/2000 Bob Wagner Fix syntax error in virtual destructor definition 11/29/2000 Tania Moulik Added Type of cluster(TrackBased or Unbiased) and Track Id. 02/05/2001 Tania Moulik Adding version information *******************************************************************************/ #include using std::vector ; #include //---------------------- // Base Class Headers -- //---------------------- #ifdef CDF #include "BaBar/Cdf.hh" #endif #include "CalorObjects/ShowerMaxCluster.hh" #include "CalorObjects/CprWire.hh" #include "TrackingObjects/Storable/CdfTrackView.hh" class CprCluster : public ShowerMaxCluster{ public: CprCluster(int barrel=0, int module=0, double x_wire=0, double dx_wire=0, double energy_wire=0, const CdfTrack_clnk& theTrack=NULL, const vector wires= vector()): _barrel(barrel), _module(module), _wirePosition(x_wire), _errorWirePosition(dx_wire), _wireEnergy(energy_wire), _theTrack(theTrack), _copyWires(wires){} virtual ~CprCluster(){} double x_wire() const; double energy_wire() const; double dx_wire() const; CdfTrack_clnk Track() const ; int trackId() const; vector wires() const; /*===========================================================================*\ * Accessor functions required by base class * \*===========================================================================*/ float clusterWidth( void ) const; Detector region( void ) const; float energy( void ) const; float localCoord( void ) const; float globalCoord( void ) const; int module( void ) const; int side( void ) const; int view( void ) const; //=========================================================================== // Operator overloads //=========================================================================== CprCluster& operator = (const CprCluster&); bool operator == (const CprCluster&) const; bool operator != (const CprCluster&) const; private: int _module; int _barrel; int _view; CdfTrack_clnk _theTrack; int _track_id; Version_t version; double _wirePosition; double _wireEnergy; double _errorWirePosition; vector _copyWires; public: virtual void print( std::ostream& = std::cout) const; //----------------------------------------------------------------------------- // 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; }; inline double CprCluster::x_wire() const{ return(_wirePosition);} inline double CprCluster::energy_wire() const{ return(_wireEnergy);} inline double CprCluster::dx_wire() const{ return(_errorWirePosition);} inline vector CprCluster::wires() const { return(_copyWires);} inline CdfTrack_clnk CprCluster::Track() const { return( _theTrack);} inline int CprCluster::trackId() const{ return(_track_id);} inline std::ostream& operator << (std::ostream& os, const CprCluster& inter) { inter.print(os); return os; } #include "CalorObjects/CprCluster.icc" #endif