#ifndef _CESCLUSTER_HH_ #define _CESCLUSTER_HH_ /****************************************************************************** * CesCluster class header file * * * * Author: Michael Riveline * * * * Description: Derived class from ShowerMaxCluster specific to central * * shower max objects * * * * Revision History: * * 23-May-2000 Bob Wagner Add a copy constructor declaration to the * * class. This is necessary in order that * * overriden pure virtual functions get pointed * * to properly * * Remove the ifndef __CINT__ around * * constructors * * Supply a default constructor with no * * arguments and a custom one with all data * * members as arguments. * * 01-Jun-2000 Dave Waters Add version information. * * 02-Jun-2000 Bob Wagner Add enumeration for CES View * * 05-Feb-2000 Michael Riveline Add accessors for track (link, distance * * track-cluster). * * Change all doubles to float. * * Add global coordinate accessor * * Add information on strip/wire in the * * cluster * * 27-Feb-2002 Bob Wagner Change deprecated data member * * Link _tempTheTrack to type * * Link per instructions of Rob * * Kennedy. This allows reading of old data * * version == 2 although the track link from * * those versions will no longer be useful as * * CdfTrack is no longer Storable but Streamable* * * *****************************************************************************/ #include using std::vector ; #ifdef DEFECT_OLD_IOSTREAM_HEADERS #include #else #include #endif //_OLD_STYLE_HEADER_FILE_NAMES //---------------------- // Base Class Headers -- //---------------------- #ifdef CDF #include "BaBar/Cdf.hh" #endif #include "TrackingObjects/Storable/CdfTrackColl.hh" #include "TrackingObjects/Storable/CdfTrackView.hh" #include "CalorObjects/ShowerMaxCluster.hh" #include "Rtypes.h" #include "CalorObjects/ScStrip.hh" #include "CalorObjects/ScWire.hh" typedef unsigned short int uint2; //***************************************************************************** // Class Declaration //***************************************************************************** class CesCluster : public ShowerMaxCluster{ //============================================================================= // Public section //============================================================================= public: typedef enum { WIRE, STRIP } CesView; /*=========================================================================*\ * Creation * \*=========================================================================*/ CesCluster(); // Default Constructor CesCluster( const CesCluster& ); // Copy Constructor CesCluster( int barrel, int module, int view, float fitted_position, float raw_position, float fitted_energy, float raw_energy, float chi2, float width, float width_error, float dist_track_clust, #ifndef __CINT__ const CdfTrack_clnk& theTrack, float global_pos, #endif uint2 first_el, uint2 num_el, const vector strips, const vector wires ); /*=========================================================================*\ * Destructor * \*=========================================================================*/ virtual ~CesCluster(){} /*=========================================================================*\ * Accessor functions * \*=========================================================================*/ float raw_position() const; float fitted_position() const; float global_position() const; float raw_energy() const; float fitted_energy() const; float chi2() const; float width() const; float width_error() const; float dist_track_cluster() const; // Distance track-cluster (for track // based strips/wire clusters only). int half_wedge() const; // = 0 if cluster is within 0121.83 cm. uint2 first_element() const; // First strip/wire (number) in the cluster uint2 number_elements() const; // Number of strips/wires in the cluster. #ifndef __CINT__ CdfTrack_clnk theTrack() const ; #endif const vector strips(); const vector wires(); /*=========================================================================*\ * 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; /*=========================================================================*\ * Old Accessor functions (to be removed soon) * \*=========================================================================*/ double raw_z_strip() const; double fitted_z_strip() const; double raw_energy_strip() const; double fitted_energy_strip() const; double chi2_strip() const; double width_strip() const; double width_error_strip() const; //=========================================================================== // Operator overloads //=========================================================================== CesCluster& operator = (const CesCluster&); bool operator == (const CesCluster&) const; bool operator != (const CesCluster&) const; /*=========================================================================*\ * Print methods * \*=========================================================================*/ virtual void print( std::ostream& = std::cout) const; /*=========================================================================*\ * StreamableObject requirements \*=========================================================================*/ 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 section //============================================================================= private: int _module; int _barrel; int _view; uint2 _first_el; uint2 _num_el; float _stripRawPosition; float _stripRawEnergy; float _stripFitPosition; float _stripFitEnergy; float _stripChi2; float _stripWidth; float _stripWidthError; float _distTrackClust; float _globalPosition; #ifndef __CINT__ CdfTrack_clnk _theTrack; Link _tempTheTrack; #endif vector _copyStrips; vector _copyWires; // EDM VERSION : static const Version_t _VERSION; Version_t _version; }; inline float CesCluster::fitted_position() const{ return(_stripFitPosition);} inline float CesCluster::raw_position() const{ return(_stripRawPosition);} inline float CesCluster::fitted_energy() const{ return(_stripFitEnergy);} inline float CesCluster::raw_energy() const{ return(_stripRawEnergy);} inline float CesCluster::chi2() const{ return(_stripChi2);} inline float CesCluster::width() const{ return(_stripWidth);} inline float CesCluster::width_error() const{ return(_stripWidthError);} inline float CesCluster::dist_track_cluster() const{ return(_distTrackClust);} #ifndef __CINT__ inline CdfTrack_clnk CesCluster::theTrack() const { return( _theTrack);} #endif inline float CesCluster::global_position() const{ return(_globalPosition);} inline int CesCluster::half_wedge() const { int hw =0; if (_view == 0 && _first_el>31) hw = 1; if (_view == 1 && _first_el>69) hw = 1; return(hw); } inline uint2 CesCluster::first_element() const{ return(_first_el);} inline uint2 CesCluster::number_elements() const{ return(_num_el);} inline const vector CesCluster::strips(){ return(_copyStrips);} inline const vector CesCluster::wires(){ return(_copyWires);} inline std::ostream& operator << (std::ostream& os, const CesCluster& inter) { inter.print(os); return os; } inline double CesCluster::fitted_z_strip() const{ return(double(_stripFitPosition));} inline double CesCluster::raw_z_strip() const{ return(double(_stripRawPosition));} inline double CesCluster::fitted_energy_strip() const{ return(double(_stripFitEnergy));} inline double CesCluster::raw_energy_strip() const{ return(double(_stripRawEnergy));} inline double CesCluster::chi2_strip() const{ return(double(_stripChi2));} inline double CesCluster::width_strip() const{ return(double(_stripWidth));} inline double CesCluster::width_error_strip() const{ return(double(_stripWidthError));} #include "CalorObjects/CesCluster.icc" #endif // !_CESCLUSTER_HH_