00001 #ifndef BesEmcEndGeometry_h 00002 #define BesEmcEndGeometry_h 1 00003 00004 #include "globals.hh" 00005 #include "G4ThreeVector.hh" 00006 class BesEmcConstruction; 00007 class BesEmcDigitizer; 00008 class EmcGdmlWriter; 00009 00010 class BesEmcEndGeometry 00011 { 00012 public: 00013 BesEmcEndGeometry(); 00014 ~BesEmcEndGeometry(); 00015 friend class BesEmcConstruction; 00016 friend class BesEmcDigitizer; 00017 friend class EmcGdmlWriter; 00018 00019 public: 00020 void ReadParameters(); 00021 void ComputeParameters(); 00022 void Exchange(G4int cry1, G4int cry2); 00023 void ExchangeSector7(G4int cry1, G4int cry2); 00024 void ReflectX(); 00025 void Zoom(const G4ThreeVector pos[8], const G4double factor); 00026 void ModifyForCasing(G4ThreeVector pos[8], G4int CryNb); 00027 G4ThreeVector ComputeDimAndPos(const G4int, const G4int, const G4int); 00028 00029 public: 00030 inline G4int GetCryNumInOneLayer(G4int num){ return cryNumInOneLayer[num]; } 00031 00032 private: 00033 G4double WorldRmin1; 00034 G4double WorldRmax1; 00035 G4double WorldRmin2; 00036 G4double WorldRmax2; 00037 G4double WorldDz; 00038 G4double WorldZPosition; 00039 00040 G4double SectorRmin1; 00041 G4double SectorRmax1; 00042 G4double SectorRmin2; 00043 G4double SectorRmax2; 00044 G4double SectorDz; 00045 G4double SectorZPosition; 00046 00047 G4double fTyvekThickness; 00048 G4double fAlThickness; 00049 G4double fMylarThickness; 00050 G4double totalThickness; 00051 G4double CrystalLength; 00052 00053 private: 00054 G4double param[35][24]; 00055 G4double penta[5][6]; 00056 G4int cryNumInOneLayer[6]; 00057 G4int pentaInOneSector[5]; 00058 G4ThreeVector fPnt[35][8]; //8 point of one crystal 00059 G4ThreeVector fPnt1[35][8]; 00060 G4ThreeVector cryPoint[8]; 00061 G4ThreeVector zoomPoint[8]; 00062 }; 00063 00064 #endif