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