00001 //---------------------------------------------------------------------------// 00002 // BESIII Object_Oreiented Simulation and Reconstruction Tool // 00003 //---------------------------------------------------------------------------// 00004 //Descpirtion: Geometry of EMC detector 00005 //Author: Fu Chengdong 00006 //Created: Oct 23, 2003 00007 //Comment: 00008 //---------------------------------------------------------------------------// 00009 // 00010 #ifndef BesEmcGeometry_h 00011 #define BesEmcGeometry_h 1 00012 00013 #include "globals.hh" 00014 #include "G4ThreeVector.hh" 00015 00016 class BesEmcConstruction; 00017 class G4VPhysicalVolume; 00018 class EmcGdmlWriter; 00019 00020 class BesEmcGeometry 00021 { 00022 public: 00023 BesEmcGeometry(); 00024 ~BesEmcGeometry(); 00025 friend class BesEmcConstruction; 00026 friend class EmcGdmlWriter; 00027 public: 00028 void ReadEMCParameters();// Read EMC parameters from database 00029 void ComputeEMCParameters();// Compute derived parameters of the calorimeter 00030 void ModifyForCasing();// Compute the sizes of the naked crystals 00031 // and the casing 00032 void PrintEMCParameters();// Print EMC parameters 00033 public: 00034 00035 inline void SetVerboseLevel(G4int val){ verboseLevel=val;} 00036 00037 inline void SetBSCRmin(G4double val){ BSCRmin=val;}; 00038 inline void SetBSCDz(G4double val){ BSCDz=val;}; 00039 inline void SetBSCNbPhi(G4int val){BSCNbPhi=val;}; 00040 inline void SetBSCNbTheta(G4int val){BSCNbTheta=val;}; 00041 inline void SetBSCCrystalLength(G4double val){BSCCryLength=val;}; 00042 inline void SetBSCCrystalLength1(G4double val){BSCCryLength1=val;}; 00043 inline void SetBSCYFront0(G4double val){BSCYFront0=val;}; 00044 inline void SetBSCYFront(G4double val){BSCYFront=val;}; 00045 inline void SetBSCPosition0(G4double val){BSCPosition0=val;}; 00046 inline void SetBSCPosition1(G4double val){BSCPosition1=val;}; 00047 inline void SetBSCAngleRotat(G4double val){BSCAngleRotat=val;}; 00048 00049 void SetCasingThickness(G4ThreeVector); 00050 00051 public: 00052 G4int GetVerboseLevel() {return verboseLevel;}; 00053 00054 G4double GetBSCRmin() {return BSCRmin;}; 00055 G4double GetBSCDz() {return BSCDz;}; 00056 G4int GetBSCNbPhi() {return BSCNbPhi;}; 00057 G4int GetBSCNbTheta() {return BSCNbTheta;}; 00058 G4double GetBSCCryLength() {return BSCCryLength;}; 00059 G4double GetBSCCryLength1() {return BSCCryLength1;}; 00060 G4double GetBSCYFront() {return BSCYFront;}; 00061 G4double GetBSCYFront0() {return BSCYFront0;}; 00062 G4double GetBSCPositon0() {return BSCPosition0;}; 00063 G4double GetBSCPositon1() {return BSCPosition1;}; 00064 G4double GetBSCAngleRotat() {return BSCAngleRotat;}; 00065 00066 G4ThreeVector GetCasingThickness() {return G4ThreeVector(fTyvekThickness,fAlThickness,fMylarThickness);}; 00067 00068 G4double GetXPosition(G4int NbCrystal); 00069 G4double GetYPosition(G4int NbCrystal); 00070 G4double GetZPosition(G4int NbCrystal); 00071 G4double GetThetaPosition(G4int NbCrystal); 00072 G4double GetZHalfLength(G4int NbCrystal); 00073 G4double GetThetaAxis(G4int NbCrystal); 00074 G4double GetPhiAxis(G4int NbCrystal); 00075 G4double GetYHalfLength1(G4int NbCrystal); 00076 G4double GetXHalfLength1(G4int NbCrystal); 00077 G4double GetXHalfLength2(G4int NbCrystal); 00078 G4double GetTanAlpha1(G4int NbCrystal); 00079 G4double GetYHalfLength2(G4int NbCrystal); 00080 G4double GetXHalfLength3(G4int NbCrystal); 00081 G4double GetXHalfLength4(G4int NbCrystal); 00082 G4double GetTanAlpha2(G4int NbCrystal); 00083 G4VPhysicalVolume* GetPhysiBSCCrystal(G4int NbCrystal); 00084 00085 G4double GetRearBoxLength(G4int NbCrystal); 00086 G4double GetRearBoxDz(G4int NbCrystal); 00087 G4double GetRearBoxPosX(G4int NbCrystal); 00088 G4double GetRearBoxPosY(G4int NbCrystal); 00089 G4double GetRearBoxPosZ(G4int NbCrystal); 00090 G4double GetRearBoxPosTheta(G4int NbCrystal); 00091 00092 private: 00093 G4int verboseLevel; 00094 00095 G4double BSCCryLength; 00096 G4double BSCCryLength1; 00097 G4double BSCYFront0; 00098 G4double BSCYFront; 00099 G4double BSCYFront1; 00100 G4double BSCPosition0; 00101 G4double BSCPosition1; 00102 00103 G4int BSCNbPhi; 00104 G4int BSCNbTheta; 00105 00106 G4double BSCPhiRmin; 00107 G4double BSCPhiRmax; 00108 G4double BSCPhiDz; 00109 G4double BSCPhiSphi; 00110 G4double BSCPhiDphi; 00111 G4double BSCAngleRotat; 00112 G4double BSCRmin; 00113 G4double BSCRmax; 00114 G4double BSCDz; 00115 00116 G4double BSCRmin1; 00117 G4double BSCRmax1; 00118 G4double BSCRmin2; 00119 G4double BSCRmax2; 00120 G4double BSCDz1; 00121 00122 G4double zHalfLength[150]; 00123 G4double thetaAxis[150]; 00124 G4double phiAxis[150]; 00125 G4double yHalfLength1[150]; 00126 G4double xHalfLength1[150]; 00127 G4double xHalfLength2[150]; 00128 G4double tanAlpha1[150]; 00129 G4double yHalfLength2[150]; 00130 G4double xHalfLength3[150]; 00131 G4double xHalfLength4[150]; 00132 G4double tanAlpha2[150]; 00133 G4double thetaPosition[150]; 00134 G4double xPosition[150]; 00135 G4double yPosition[150]; 00136 G4double zPosition[150]; 00137 00138 G4VPhysicalVolume* physiBSCCrystal[50]; 00139 00140 G4double fTyvekThickness; 00141 G4double fAlThickness; 00142 G4double fMylarThickness; 00143 00145 //other substance on the rear face of crystal 00146 G4double rearBoxLength; 00147 G4double rearBoxDz; 00148 G4double rearBoxPosX[150]; 00149 G4double rearBoxPosY[150]; 00150 G4double rearBoxPosZ[150]; 00151 00152 //tyvek casing 00153 G4double rearCasingThickness; 00154 00155 //organic glass 00156 G4double orgGlassLengthX; 00157 G4double orgGlassLengthY; 00158 G4double orgGlassLengthZ; 00159 00160 //photodiode 00161 G4double PDLengthX; 00162 G4double PDLengthY; 00163 G4double PDLengthZ; 00164 00165 //Al plate 00166 G4double AlPlateDz; 00167 00168 //preamplifier box 00169 G4double PABoxDz; 00170 G4double PABoxThickness; 00171 00172 //stainless steel plate for hanging the crystal 00173 G4double HangingPlateDz; 00174 00175 G4double OCGirderRmin1[22]; 00176 G4double OCGirderRmin2[22]; 00177 G4double OCGirderDz[22]; 00178 G4double OCGirderAngle; 00179 G4double OCGirderPosZ[22]; 00180 00181 //cable 00182 G4double cableLength[22]; 00183 G4double cableDr; 00184 G4double cablePosX[22]; 00185 G4double cablePosY[22]; 00186 G4double cablePosZ[22]; 00187 00188 //water pipe 00189 G4double waterPipeDr; 00190 G4double waterPipeThickness; 00191 00193 //barrel support frame 00194 G4double SPBarThickness; 00195 G4double SPBarThickness1; 00196 G4double SPBarwidth; 00197 G4double SPBarDphi; 00198 G4double RFBarThickness; 00199 G4int RFBarHoleNb; 00200 G4double RFBarHoleDphi; 00201 G4double RFBarHoleDz; 00202 00203 //end ring 00204 G4double EndRingDz; 00205 G4double EndRingDr; 00206 G4double EndRingRmin; 00207 00208 //taper ring 00209 G4double TaperRingThickness1; 00210 G4double TaperRingThickness2; 00211 G4double TaperRingThickness3; 00212 G4double TaperRingTheta; 00213 G4double TaperRingRmin1; 00214 G4double TaperRingRmin2; 00215 G4double TaperRingDr; 00216 G4double TaperRingDz; 00217 G4double TaperRingInnerLength; 00218 G4double TaperRingOuterLength; 00219 G4double TaperRingOuterLength1; 00220 00221 }; 00222 #endif 00223 00224