Main Page | Class List | File List | Class Members | Related Pages

EEmcTower.h

00001 // Hey Emacs this is -*-c++-*-
00002 #ifndef STAR_EEmcTower_h
00003 #define STAR_EEmcTower_h
00004 // $Id: EEmcTower.h,v 1.4 2004/05/10 21:10:19 zolnie Exp $
00005 
00006 
00007 #include <ostream>
00008 
00009 #include "TObject.h"
00010 #include "TVector3.h"
00011 
00012 #if !defined(ST_NO_NAMESPACES)
00013 using std::ostream;
00014 #endif
00015 
00016 
00017 class EEmcTower : public TObject  {
00018 public:
00020   EEmcTower()  { mSec=mSub=mEta=-1; mADC=mEdep=0.0; };
00021   
00023   EEmcTower(int s, int ss, int e, float adc=0.0, float ene=0.0) { 
00024     mSec  = (char)s;
00025     mSub  = (char)ss;
00026     mEta  = (char)e;
00027     mADC  = adc;
00028     mEdep = ene;
00029   };
00030 
00032   EEmcTower(const char *label, float adc=0.0, float ene=0.0);
00033   
00035   EEmcTower(const EEmcTower& t) {
00036     mSec  = (char) t.Sec();
00037     mSub  = (char) t.SubSec();
00038     mEta  = (char) t.Eta();
00039     mADC  = t.ADC();
00040     mEdep = t.dE();
00041   }
00042 
00044   ~EEmcTower() { };
00045 
00047   float ADC() const    { return mADC; }
00049   float ADC(float d)   { mADC=d; return mADC; }
00050 
00052   float dE() const    { return mEdep; }
00054   float dE(float e)   { mEdep=e; return mEdep; }
00055   
00057   int  Sec   () const { return mSec; }
00059   int  Sec   (int s)  { mSec=(char)s; return s; }
00060 
00062   int  SubSec() const { return mSub; }
00064   int  SubSec(int s)  { mSub=(char)s; return s; }
00065 
00067   int  Eta   () const { return mEta; }
00069   int  Eta   (int e)  { mEta=(char)e; return e; }
00070   
00071 
00073   int  SecLabel   () const { return mSec+1; }
00075   int  SecLabel   (int s)  { mSec=(char)(s-1  ); return s; }
00076 
00078   int  SubSecLabel() const { return mSub+'A'; }
00080   int  SubSecLabel(int s)  { mSub=(char)(s-'A'); return s; }
00081 
00083   int  EtaLabel   () const { return mEta+1; }
00085   int  EtaLabel   (int e)  { mEta=(char)(e-1  ); return e; }
00086 
00088   const char *TowerLabel() const; 
00089 
00091   ostream& Out ( ostream &out ) const ;  
00092 
00094   bool operator==(const EEmcTower &t) {
00095     if(mSec!=t.Sec())    return false;
00096     if(mSub!=t.SubSec()) return false;
00097     if(mEta!=t.Eta())    return false;
00098     return true;
00099   }
00100   
00102   bool operator!=(const EEmcTower &t) {
00103     if(mSec==t.Sec())    return false;
00104     if(mSub==t.SubSec()) return false;
00105     if(mEta==t.Eta())    return false;
00106     return true;
00107   }
00108   
00111 
00112 private:
00113   bool  ParseLabel(const char* label);
00114   //
00115   char  mSec;   //
00116   char  mSub;   //
00117   char  mEta;   //
00118   char  mDummy; // byte align
00119   float mADC;   //
00120   float mEdep;  //
00121 public:
00122   ClassDef(EEmcTower, 3)   // 
00123 };
00124 
00128 ostream&  operator<<(ostream &out, const EEmcTower    &t  );
00129 
00130 #endif

Generated on Thu Jun 3 17:02:37 2004 for Tower to Track Match Maker by doxygen 1.3.5