#ifndef _CP2CLUSTER_HH_ #define _CP2CLUSTER_HH_ /****************************************************************************** Description: Cp2Cluster 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/Cp2Pad.hh" #include "TrackingObjects/Storable/CdfTrackView.hh" class Cp2Cluster : public ShowerMaxCluster{ public: Cp2Cluster(int barrel=0, int module=0, double x_pad=0, double dx_pad=0, double energy_pad=0, const CdfTrack_clnk& theTrack=NULL, const vector pads= vector()): _barrel(barrel), _module(module), _padPosition(x_pad), _errorPadPosition(dx_pad), _padEnergy(energy_pad), _theTrack(theTrack), _copyPads(pads){} virtual ~Cp2Cluster(){} double x_pad() const; double energy_pad() const; double dx_pad() const; CdfTrack_clnk Track() const ; int trackId() const; vector pads() 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 //=========================================================================== Cp2Cluster& operator = (const Cp2Cluster&); bool operator == (const Cp2Cluster&) const; bool operator != (const Cp2Cluster&) const; private: int _module; int _barrel; int _view; CdfTrack_clnk _theTrack; int _track_id; Version_t version; double _padPosition; double _padEnergy; double _errorPadPosition; vector _copyPads; 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 Cp2Cluster::x_pad() const{ return(_padPosition);} inline double Cp2Cluster::energy_pad() const{ return(_padEnergy);} inline double Cp2Cluster::dx_pad() const{ return(_errorPadPosition);} inline vector Cp2Cluster::pads() const { return(_copyPads);} inline CdfTrack_clnk Cp2Cluster::Track() const { return( _theTrack);} inline int Cp2Cluster::trackId() const{ return(_track_id);} inline std::ostream& operator << (std::ostream& os, const Cp2Cluster& inter) { inter.print(os); return os; } #include "CalorObjects/Cp2Cluster.icc" #endif