00001 #ifndef EMCSTRUCTURE_H 00002 #define EMCSTRUCTURE_H 00003 #include "Identifier/EmcID.h" 00004 00005 class EmcStructure 00006 { 00007 public: 00008 00009 // Constructors 00010 EmcStructure(); 00011 00012 // Destructors 00013 ~EmcStructure(); 00014 00015 long getIndex( unsigned int thetaIndex, unsigned int phiIndex ) const; 00016 00017 bool isOutofAccep(unsigned int thetaIndex,unsigned int phiIndex) const; 00018 00019 //number Of Theta Rings (from 0 to 55) 00020 unsigned int getNumberOfTheRings(); 00021 00022 unsigned int getNumberOfXtals(); 00023 00024 //The theta index is defined by Endcap_east(0-5),Barrel(6-49),Endcap_west(50-55) 00025 //in Emc Bhabha Calibration 00026 unsigned int startingTheta() {return 0;} 00027 00028 unsigned int crystalsInRing( unsigned int theta ) const; 00029 00030 // First call setEmcStruc(), and then getThisThetaMaxIndex, 00031 // getPartId. getTheta, getPhi, or getGeomIndex can use. 00032 void setEmcStruc(); 00033 00034 long getThisThetaMaxIndex(int Theta) const {return m_ThetaMaxIndex[Theta];} 00035 unsigned int getPartId( long Index) const {return m_partID[Index];} 00036 unsigned int getTheta( long Index) const {return m_thetaIndex[Index];} 00037 unsigned int getPhi( long Index) const {return m_phiIndex[Index];} 00038 int getGeomIndex( unsigned int PartId, 00039 unsigned int ThetaIndex, 00040 unsigned int PhiIndex) const; 00041 00042 private: 00043 00044 EmcID* aEmcId; 00045 static const unsigned int numberOfOneEndcapRings = 2; 00046 static const unsigned int numberOfTwoEndcapRings = 2; 00047 static const unsigned int numberOfThreeEndcapRings = 2; 00048 long m_ThetaMaxIndex[56]; 00049 unsigned int m_partID[6240]; 00050 unsigned int m_thetaIndex[6240]; 00051 unsigned int m_phiIndex[6240]; 00052 00053 }; 00054 00055 #endif // EMCSTRUCTURE_H 00056