#include <BesSCM.hh>
Inheritance diagram for BesSCM:
Public Member Functions | |
BesSCM () | |
virtual | ~BesSCM () |
void | Construct (G4LogicalVolume *logicbes) |
void | DefineMaterial () |
G4LogicalVolume * | FindLogicalVolume (const G4String &vn) |
Protected Attributes | |
SAXProcessor | m_sxp |
ProcessingConfigurator | m_config |
Private Attributes | |
BesSCMParameter * | scmPar |
G4double | innerCryo [3] |
G4double | l1Adia [3] |
G4double | innerShield [3] |
G4double | l2Adia [3] |
G4double | outerShield [3] |
G4double | l3Adia [3] |
G4double | endShield [5] |
G4double | l1insu [3] |
G4double | coil [3] |
G4double | l2insu [3] |
G4double | supp [3] |
G4double | l4Adia [3] |
G4double | endCoil [5] |
G4double | outerCryo [3] |
G4double | endCryo [5] |
G4double | rein [5] |
G4double | pipe1 [6] |
G4double | pipe2 [6] |
G4double | pipe3 [6] |
G4double | hole [13] |
G4LogicalVolume * | logicalSCM |
G4VPhysicalVolume * | physicalSCM |
G4LogicalVolume * | logicalinnCryo |
G4VPhysicalVolume * | physicalinnCryo |
G4LogicalVolume * | logicall1Adia |
G4VPhysicalVolume * | physicall1Adia |
G4LogicalVolume * | logicalinnShield |
G4VPhysicalVolume * | physicalinnShield |
G4LogicalVolume * | logicall2Adia |
G4VPhysicalVolume * | physicall2Adia |
G4LogicalVolume * | logicaloutShield |
G4VPhysicalVolume * | physicaloutShield |
G4LogicalVolume * | logicall3Adia |
G4VPhysicalVolume * | physicall3Adia |
G4LogicalVolume * | logicalendShield |
G4VPhysicalVolume * | physicalendShield1 |
G4VPhysicalVolume * | physicalendShield2 |
G4LogicalVolume * | logicall1insu |
G4VPhysicalVolume * | physicall1insu |
G4LogicalVolume * | logicalcoil |
G4VPhysicalVolume * | physicalcoil |
G4LogicalVolume * | logicall2insu |
G4VPhysicalVolume * | physicall2insu |
G4LogicalVolume * | logicalsupp |
G4VPhysicalVolume * | physicalsupp |
G4LogicalVolume * | logicall4Adia |
G4VPhysicalVolume * | physicall4Adia |
G4LogicalVolume * | logicalendCoil |
G4VPhysicalVolume * | physicalendCoil1 |
G4VPhysicalVolume * | physicalendCoil2 |
G4LogicalVolume * | logicalouterCryo |
G4VPhysicalVolume * | physicalouterCryo |
G4LogicalVolume * | logicalendCryo |
G4VPhysicalVolume * | physicalendCryo1 |
G4VPhysicalVolume * | physicalendCryo2 |
G4LogicalVolume * | logicalrein |
G4VPhysicalVolume * | physicalrein1 |
G4VPhysicalVolume * | physicalrein2 |
G4LogicalVolume * | logicalpipe1 |
G4VPhysicalVolume * | physicalpipe1 |
G4LogicalVolume * | logicalpipe2 |
G4VPhysicalVolume * | physicalpipe2 |
G4LogicalVolume * | logicalpipe3 |
G4VPhysicalVolume * | physicalpipe3 |
G4Material * | liquidhelium |
G4Material * | Steel |
G4Material * | fibre |
Definition at line 21 of file BesSCM.hh.
BesSCM::BesSCM | ( | ) |
Definition at line 28 of file BesSCM.cc.
References coil, endCoil, endCryo, endShield, fibre, BesSCMParameter::getCoil(), BesSCMParameter::getEndCoil(), BesSCMParameter::getEndCryo(), BesSCMParameter::getEndShield(), BesSCMParameter::getHole(), BesSCMParameter::getInnerCryo(), BesSCMParameter::getInnerShield(), BesSCMParameter::getL1Adia(), BesSCMParameter::getL1insu(), BesSCMParameter::getL2Adia(), BesSCMParameter::getL2insu(), BesSCMParameter::getL3Adia(), BesSCMParameter::getL4Adia(), BesSCMParameter::getOuterCryo(), BesSCMParameter::getOuterShield(), BesSCMParameter::getPipe1(), BesSCMParameter::getPipe2(), BesSCMParameter::getPipe3(), BesSCMParameter::getRein(), BesSCMParameter::getSupp(), hole, genRecEmupikp::i, innerCryo, innerShield, l1Adia, l1insu, l2Adia, l2insu, l3Adia, l4Adia, liquidhelium, logicalcoil, logicalendCoil, logicalendCryo, logicalendShield, logicalinnCryo, logicalinnShield, logicall1Adia, logicall1insu, logicall2Adia, logicall2insu, logicall3Adia, logicall4Adia, logicalouterCryo, logicaloutShield, logicalpipe1, logicalpipe2, logicalpipe3, logicalrein, logicalsupp, outerCryo, outerShield, physicalcoil, physicalendCoil1, physicalendCoil2, physicalendCryo1, physicalendCryo2, physicalendShield1, physicalendShield2, physicalinnCryo, physicalinnShield, physicall1Adia, physicall1insu, physicall2Adia, physicall2insu, physicall3Adia, physicall4Adia, physicalouterCryo, physicaloutShield, physicalpipe1, physicalpipe2, physicalpipe3, physicalrein1, physicalrein2, physicalsupp, pipe1, pipe2, pipe3, BesSCMParameter::ReadData(), rein, scmPar, Steel, and supp.
00029 { 00030 scmPar = new BesSCMParameter(); 00031 scmPar->ReadData(); 00032 for(G4int i=0; i<3; i++) 00033 { 00034 innerCryo[i] = scmPar->getInnerCryo(i); 00035 l1Adia[i] = scmPar->getL1Adia(i); 00036 innerShield[i] = scmPar->getInnerShield(i); 00037 l2Adia[i] = scmPar->getL2Adia(i); 00038 outerShield[i] = scmPar->getOuterShield(i); 00039 l3Adia[i] = scmPar->getL3Adia(i); 00040 l1insu[i] = scmPar->getL1insu(i); 00041 coil[i] = scmPar->getCoil(i); 00042 l2insu[i] = scmPar->getL2insu(i); 00043 supp[i] = scmPar->getSupp(i); 00044 l4Adia[i] = scmPar->getL4Adia(i); 00045 outerCryo[i] = scmPar->getOuterCryo(i); 00046 } 00047 for(G4int i=0; i<5; i++) 00048 { 00049 endShield[i] = scmPar->getEndShield(i); 00050 endCoil[i] = scmPar->getEndCoil(i); 00051 endCryo[i] = scmPar->getEndCryo(i); 00052 rein[i] = scmPar->getRein(i); 00053 } 00054 00055 for(G4int i=0; i<6; i++) 00056 { 00057 pipe1[i] = scmPar->getPipe1(i); 00058 pipe2[i] = scmPar->getPipe2(i); 00059 pipe3[i] = scmPar->getPipe3(i); 00060 } 00061 00062 for(G4int i=0; i<13; i++) 00063 { 00064 hole[i] = scmPar->getHole(i); 00065 } 00066 00067 logicalinnCryo = 0; 00068 physicalinnCryo = 0; 00069 00070 logicall1Adia = 0; 00071 physicall1Adia = 0; 00072 00073 logicalinnShield = 0; 00074 physicalinnShield = 0; 00075 00076 logicall2Adia = 0; 00077 physicall2Adia = 0; 00078 00079 logicaloutShield = 0; 00080 physicaloutShield = 0; 00081 00082 logicall3Adia = 0; 00083 physicall3Adia = 0; 00084 00085 logicalendShield = 0; 00086 physicalendShield1 = 0; 00087 physicalendShield2 = 0; 00088 00089 logicall1insu = 0; 00090 physicall1insu = 0; 00091 00092 logicalcoil = 0; 00093 physicalcoil = 0; 00094 00095 logicall2insu = 0; 00096 physicall2insu = 0; 00097 00098 logicalsupp = 0; 00099 physicalsupp = 0; 00100 00101 logicall4Adia = 0; 00102 physicall4Adia = 0; 00103 00104 logicalendCoil = 0; 00105 physicalendCoil1 = 0; 00106 physicalendCoil2 = 0; 00107 00108 logicalouterCryo = 0; 00109 physicalouterCryo = 0; 00110 00111 logicalendCryo = 0; 00112 physicalendCryo1 = 0; 00113 physicalendCryo2 = 0; 00114 00115 logicalrein = 0; 00116 physicalrein1 = 0; 00117 physicalrein2 = 0; 00118 00119 logicalpipe1 = 0; 00120 physicalpipe1 = 0; 00121 00122 logicalpipe2 = 0; 00123 physicalpipe2 = 0; 00124 00125 logicalpipe3 = 0; 00126 physicalpipe3 = 0; 00127 00128 liquidhelium = 0; 00129 Steel = 0; 00130 fibre = 0; 00131 }
void BesSCM::Construct | ( | G4LogicalVolume * | logicbes | ) | [virtual] |
Implements BesSubdetector.
Definition at line 179 of file BesSCM.cc.
References coil, cos(), DefineMaterial(), endCoil, endCryo, endShield, fibre, hole, genRecEmupikp::i, innerCryo, innerShield, l1Adia, l1insu, l2Adia, l2insu, l3Adia, l4Adia, liquidhelium, logicalcoil, logicalendCoil, logicalendCryo, logicalendShield, logicalinnCryo, logicalinnShield, logicall1Adia, logicall1insu, logicall2Adia, logicall2insu, logicall3Adia, logicall4Adia, logicalouterCryo, logicaloutShield, logicalpipe1, logicalpipe2, logicalpipe3, logicalSCM, logicalsupp, outerCryo, outerShield, physicalcoil, physicalendCoil1, physicalendCoil2, physicalendCryo1, physicalendCryo2, physicalendShield1, physicalendShield2, physicalinnCryo, physicalinnShield, physicall1Adia, physicall1insu, physicall2Adia, physicall2insu, physicall3Adia, physicall4Adia, physicalouterCryo, physicaloutShield, physicalpipe1, physicalpipe2, physicalpipe3, physicalSCM, physicalsupp, pi, pipe1, pipe2, pipe3, sin(), Steel, and supp.
Referenced by BesDetectorConstruction::Construct().
00180 { 00181 DefineMaterial(); 00182 00183 G4RotationMatrix* xRot = new G4RotationMatrix; 00184 xRot->rotateX(90*deg); 00185 //the chimney of SCM from outer to inner 00186 G4Tubs* hole1 = new G4Tubs("hole1",hole[0],hole[1],hole[2]/2,0,360); 00187 G4LogicalVolume* logicalhole1 = new G4LogicalVolume(hole1, Steel,"logicalhole1"); 00188 //G4VPhysicalVolume* physicalhole1 = 00189 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]/2)*mm,1640*mm),logicalhole1,"physicalhole1",logicalbes,false,0); 00190 00191 G4Tubs* hole2 = new G4Tubs("hole2",hole[3],hole[4],hole[5]/2,0,360); 00192 G4LogicalVolume* logicalhole2 = new G4LogicalVolume(hole2, Steel,"logicalhole2"); 00193 //G4VPhysicalVolume* physicalhole2 = 00194 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]+hole[5]/2)*mm,1640*mm),logicalhole2,"physicalhole2",logicalbes,false,0); 00195 00196 G4Tubs* hole3 = new G4Tubs("hole3",hole[6],hole[7],hole[12]/2,0,360); 00197 G4LogicalVolume* logicalhole3 = new G4LogicalVolume(hole3, Steel,"logicalhole3"); 00198 //G4VPhysicalVolume* physicalhole3 = 00199 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]+hole[12]/2)*mm,1640*mm),logicalhole3,"physicalhole3",logicalbes,false,0); 00200 00201 G4Tubs* hole4 = new G4Tubs("hole4",hole[8],hole[9],hole[12]/2,0,360); 00202 G4LogicalVolume* logicalhole4 = new G4LogicalVolume(hole4, G4Material::GetMaterial("Aluminium"),"logicalhole4"); 00203 //G4VPhysicalVolume* physicalhole4 = 00204 new G4PVPlacement(xRot,G4ThreeVector(0,(l3Adia[1]+pipe2[1]+pipe2[4]+hole[12]/2)*mm,1640*mm),logicalhole4,"physicalhole4",logicalbes,false,0); 00205 00206 G4Box* hole5 = new G4Box("hole5",hole[10]/2,hole[11]/2,hole[12]/2); 00207 G4LogicalVolume* logicalhole5 = new G4LogicalVolume(hole5, G4Material::GetMaterial("Aluminium"),"logicalhole5"); 00208 //G4VPhysicalVolume* physicalhole5 = 00209 new G4PVPlacement(xRot,G4ThreeVector(0,(l3Adia[1]+pipe2[1]+pipe2[4]+hole[12]/2)*mm,1640*mm),logicalhole5,"physicalhole5",logicalbes,false,0); 00210 00211 00212 G4Tubs* solidSCM_tmp = new G4Tubs("solidSCM_tmp",innerCryo[0]*mm,1700*mm,(outerCryo[2]+2*endCryo[2])/2.0*mm,0,360); 00213 G4Tubs* hole_tmp1 = new G4Tubs("hole_tmp1",0,hole[1],(1700.-1617.5+2)/2.*mm,0,360); 00214 G4SubtractionSolid* solidSCM = new G4SubtractionSolid("solidSCM",solidSCM_tmp,hole_tmp1,xRot,G4ThreeVector(0,(1700.+1617.5+2)/2*mm,1640*mm) ); 00215 logicalSCM = new G4LogicalVolume(solidSCM, G4Material::GetMaterial("Air"),"logicalSCM"); 00216 physicalSCM = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalSCM,"physicalSCM",logicalbes,false,0); 00217 00218 G4Tubs* tub1 = new G4Tubs("tub1",innerCryo[0]*mm,innerCryo[1]*mm,innerCryo[2]/2.0*mm,0,360); 00219 logicalinnCryo = new G4LogicalVolume(tub1, Steel,"logicalinnCryo"); 00220 physicalinnCryo = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalinnCryo,"physicalinnCryo",logicalSCM,false,0); 00221 00222 G4Tubs* tub2 = new G4Tubs("tub2",l1Adia[0]*mm,l1Adia[1]*mm,l1Adia[2]/2.0*mm,0,360); 00223 logicall1Adia = new G4LogicalVolume(tub2, fibre,"logicall1Adia"); 00224 physicall1Adia = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall1Adia,"physicall1Adia",logicalSCM,false,0); 00225 00226 G4Tubs* tub3 = new G4Tubs("tub3",innerShield[0]*mm,innerShield[1]*mm,innerShield[2]/2.0*mm,0,360); 00227 logicalinnShield = new G4LogicalVolume(tub3, G4Material::GetMaterial("Aluminium"),"logicalinnShield"); 00228 physicalinnShield = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalinnShield,"physicalinnShield",logicalSCM,false,0); 00229 00230 G4Tubs* tub4 = new G4Tubs("tub4",l2Adia[0]*mm,l2Adia[1]*mm,l2Adia[2]/2.0*mm,0,360); 00231 logicall2Adia = new G4LogicalVolume(tub4, fibre,"logicall2Adia"); 00232 physicall2Adia = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall2Adia,"physicall2Adia",logicalSCM,false,0); 00233 00234 G4Tubs* hole_tmp3 = new G4Tubs("hole_tmp3",0,hole[8]*mm,25*mm,0,360); 00235 G4Tubs* tub5_tmp = new G4Tubs("tub5_tmp",outerShield[0]*mm,outerShield[1]*mm,outerShield[2]/2.0*mm,0,360); 00236 G4SubtractionSolid* tub5 = new G4SubtractionSolid("tub5",tub5_tmp,hole_tmp3,xRot,G4ThreeVector(0,(outerShield[0]+outerShield[1])/2*mm,1640*mm) ); 00237 logicaloutShield = new G4LogicalVolume(tub5, G4Material::GetMaterial("Aluminium"),"logicaloutShield"); 00238 physicaloutShield = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaloutShield,"physicaloutShield",logicalSCM,false,0); 00239 00240 G4Tubs* tub6_tmp = new G4Tubs("tub6_tmp",l3Adia[0]*mm,l3Adia[1]*mm,l3Adia[2]/2.0*mm,0,360); 00241 G4SubtractionSolid* tub6 = new G4SubtractionSolid("tub6",tub6_tmp,hole_tmp3,xRot,G4ThreeVector(0,(l3Adia[0]+l3Adia[1])/2*mm,1640*mm) ); 00242 logicall3Adia = new G4LogicalVolume(tub6, fibre,"logicall3Adia"); 00243 physicall3Adia = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall3Adia,"physicall3Adia",logicalSCM,false,0); 00244 00245 G4Tubs* tub7 = new G4Tubs("tub7",endShield[0]*mm,endShield[1]*mm,endShield[2]/2.0*mm,0,360); 00246 logicalendShield = new G4LogicalVolume(tub7, G4Material::GetMaterial("Aluminium"),"logicalendShield"); 00247 physicalendShield1 = new G4PVPlacement(0,G4ThreeVector(0,0,endShield[3]*mm),logicalendShield,"physicalendShield1",logicalSCM,false,0); 00248 physicalendShield2 = new G4PVPlacement(0,G4ThreeVector(0,0,endShield[4]*mm),logicalendShield,"physicalendShield2",logicalSCM,false,1); 00249 00250 G4Tubs* tub8 = new G4Tubs("tub8",l1insu[0]*mm,l1insu[1]*mm,l1insu[2]/2.0*mm,0,360); 00251 logicall1insu = new G4LogicalVolume(tub8, fibre,"logicall1insu"); 00252 physicall1insu = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall1insu,"physicall1insu",logicalSCM,false,0); 00253 00254 G4Tubs* tub9 = new G4Tubs("tub9",coil[0]*mm,coil[1]*mm,coil[2]/2.0*mm,0,360); 00255 logicalcoil = new G4LogicalVolume(tub9, G4Material::GetMaterial("Aluminium"),"logicalcoil"); 00256 physicalcoil = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalcoil,"physicalcoil",logicalSCM,false,0); 00257 00258 G4Tubs* tub10 = new G4Tubs("tub10",l2insu[0]*mm,l2insu[1]*mm,l2insu[2]/2.0*mm,0,360); 00259 logicall2insu = new G4LogicalVolume(tub10, fibre,"logicall2insu"); 00260 physicall2insu = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall2insu,"physicall2insu",logicalSCM,false,0); 00261 00262 G4Tubs* tub11 = new G4Tubs("tub11",supp[0]*mm,supp[1]*mm,supp[2]/2.0*mm,0,360); 00263 logicalsupp = new G4LogicalVolume(tub11, G4Material::GetMaterial("Aluminium"),"logicalsupp"); 00264 physicalsupp = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalsupp,"physicalsupp",logicalSCM,false,0); 00265 00266 G4Tubs* tub12 = new G4Tubs("tub12",l4Adia[0]*mm,l4Adia[1]*mm,l4Adia[2]/2.0*mm,0,360); 00267 logicall4Adia = new G4LogicalVolume(tub12, fibre,"logicall4Adia"); 00268 physicall4Adia = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall4Adia,"physicall4Adia",logicalSCM,false,0); 00269 00270 G4Tubs* tub13 = new G4Tubs("tub13",endCoil[0]*mm,endCoil[1]*mm,endCoil[2]/2.0*mm,0,360); 00271 logicalendCoil = new G4LogicalVolume(tub13, G4Material::GetMaterial("Aluminium"),"logicalendCoil"); 00272 physicalendCoil1 = new G4PVPlacement(0,G4ThreeVector(0,0,endCoil[3]*mm),logicalendCoil,"physicalendCoil1",logicalSCM,false,0); 00273 physicalendCoil2 = new G4PVPlacement(0,G4ThreeVector(0,0,endCoil[4]*mm),logicalendCoil,"physicalendCoil2",logicalSCM,false,1); 00274 00275 G4Tubs* hole_tmp2 = new G4Tubs("hole_tmp2",0,hole[1],18*mm,0,360); 00276 G4Tubs* tub14_tmp = new G4Tubs("tub14_tmp",outerCryo[0]*mm,outerCryo[1]*mm,outerCryo[2]/2.0*mm,0,360); 00277 G4SubtractionSolid* tub14 = new G4SubtractionSolid("tub14",tub14_tmp,hole_tmp2,xRot,G4ThreeVector(0,(outerCryo[1]-8)*mm,1640*mm) ); 00278 logicalouterCryo = new G4LogicalVolume(tub14, Steel,"logicalouterCryo"); 00279 physicalouterCryo = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalouterCryo,"physicalouterCryo",logicalSCM,false,0); 00280 00281 G4Tubs* tub15 = new G4Tubs("tub15",endCryo[0]*mm,endCryo[1]*mm,endCryo[2]/2.0*mm,0,360); 00282 logicalendCryo = new G4LogicalVolume(tub15, Steel,"logicalendCryo"); 00283 physicalendCryo1 = new G4PVPlacement(0,G4ThreeVector(0,0,endCryo[3]*mm),logicalendCryo,"physicalendCryo1",logicalSCM,false,0); 00284 physicalendCryo2 = new G4PVPlacement(0,G4ThreeVector(0,0,endCryo[4]*mm),logicalendCryo,"physicalendCryo2",logicalSCM,false,1); 00285 /* 00286 G4Trap* trap = new G4Trap("trap",rein[2]/2.0*mm,0,0,rein[1]/2*mm,rein[1]*std::tan(pi/8)*mm,2,0,rein[1]/2*mm,rein[1]*std::tan(pi/8)*mm,2,0); 00287 G4Tubs* tub16 = new G4Tubs("tub16",0,outerCryo[1]*mm,(rein[2]/2.0+3)*mm,0,360); 00288 00289 G4SubtractionSolid* solidrein = new G4SubtractionSolid("solidrein",trap,tub16,0,G4ThreeVector(0,847.5*mm,0) ); 00290 logicalrein = new G4LogicalVolume(solidrein, Steel,"logicalrein"); 00291 00292 for(int i=0; i<8; i++) 00293 { 00294 std::ostringstream osnamerein; 00295 osnamerein << "physicalrein1_"<<i; 00296 G4RotationMatrix* zRot = new G4RotationMatrix; 00297 zRot->rotateZ(45*i*deg); 00298 physicalrein1 = new G4PVPlacement(zRot,G4ThreeVector(-rein[1]/2*std::sin(pi/4*i)*mm,-rein[1]/2*std::cos(pi/4*i)*mm,rein[3]*mm),logicalrein,osnamerein.str(),logicalSCM,false,i); 00299 } 00300 for(G4int i=0; i<4; i++) 00301 { 00302 std::ostringstream osnamerein; 00303 osnamerein << "physicalrein2_"<<i; 00304 G4RotationMatrix* zRot = new G4RotationMatrix; 00305 zRot->rotateZ(45*i*deg); 00306 physicalrein2 = new G4PVPlacement(zRot,G4ThreeVector(-rein[1]/2*std::sin(pi/4*i)*mm,-rein[1]/2*std::cos(pi/4*i)*mm,rein[4]*mm),logicalrein,osnamerein.str(),logicalSCM,false,8+i); 00307 } 00308 00309 for(G4int i=5; i<8; i++) 00310 { 00311 std::ostringstream osnamerein; 00312 osnamerein << "physicalrein2_"<<i; 00313 G4RotationMatrix* zRot = new G4RotationMatrix; 00314 zRot->rotateZ(45*i*deg); 00315 physicalrein2 = new G4PVPlacement(zRot,G4ThreeVector(-rein[1]/2*std::sin(pi/4*i)*mm,-rein[1]/2*std::cos(pi/4*i)*mm,rein[4]*mm),logicalrein,osnamerein.str(),logicalSCM,false,8+i); 00316 } 00317 */ 00318 //pipe of inner 77k 00319 G4Box* solidpipe1 = new G4Box("solidpipe1",pipe1[2]/2*mm,(pipe1[1]+pipe1[4])/2*mm,pipe1[5]/2*mm); 00320 logicalpipe1 = new G4LogicalVolume(solidpipe1, G4Material::GetMaterial("Air"),"logicalpipe1"); 00321 G4Tubs* tub17 = new G4Tubs("tub17",pipe1[0]*mm,pipe1[1]*mm,pipe1[5]/2*mm,0,360); 00322 G4Tubs* tub18 = new G4Tubs("tub18",0,pipe1[1]*mm,pipe1[5]/2*mm,0,360); 00323 G4Tubs* tub19 = new G4Tubs("tub19",0,pipe1[0]*mm,pipe1[5]/2*mm,0,360); 00324 G4Box* solidbox1 = new G4Box("solidbox1",pipe1[2]/2*mm,pipe1[3]/2*mm,pipe1[5]/2*mm); 00325 G4SubtractionSolid* solidsub1 = new G4SubtractionSolid("solidsub1",solidbox1,tub18,0,G4ThreeVector(0,(pipe1[4]-pipe1[3]/2)*mm,0) ); 00326 G4LogicalVolume* logicalsub1 = new G4LogicalVolume(solidsub1, G4Material::GetMaterial("Aluminium"),"logicalsub1"); 00327 G4LogicalVolume* logicaltub17 = new G4LogicalVolume(tub17, G4Material::GetMaterial("Aluminium"),"logicaltub17"); 00328 G4LogicalVolume* logicaltub19 = new G4LogicalVolume(tub19,liquidhelium,"logicaltub19"); 00329 //G4VPhysicalVolume* physicaltub17 = 00330 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub17,"physicaltub17",logicalpipe1,false,0); 00331 //G4VPhysicalVolume* physicaltub19 = 00332 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub19,"physicaltub19",logicalpipe1,false,0); 00333 //G4VPhysicalVolume* physicalsub1 = 00334 new G4PVPlacement(0,G4ThreeVector(0,-(pipe1[4]-pipe1[3]/2)*mm,0),logicalsub1,"physicalsub1",logicalpipe1,false,0); 00335 for(G4int i=0; i<24; i++) 00336 { 00337 std::ostringstream osnamerein; 00338 osnamerein << "physicalpipe1_"<<i; 00339 G4RotationMatrix* zRot = new G4RotationMatrix; 00340 zRot->rotateZ(15*i*deg); 00341 //pipe of inner 77k 00342 physicalpipe1=new G4PVPlacement(zRot,G4ThreeVector(-(std::sqrt(innerShield[0]*innerShield[0]-pipe1[2]/2*pipe1[2]/2)- 00343 (pipe1[1]+pipe1[4])/2)*std::sin(15*pi/180*i)*mm,-(std::sqrt(innerShield[0]*innerShield[0]- 00344 pipe1[2]/2*pipe1[2]/2)-(pipe1[1]+pipe1[4])/2)*std::cos(15*pi/180*i)*mm,0), 00345 logicalpipe1,osnamerein.str(),logicalSCM,false,0); 00346 } 00347 //pipe of outer 77k 00348 G4Box* solidpipe2 = new G4Box("solidpipe2",pipe2[2]/2*mm,(pipe2[1]+pipe2[4])/2*mm,pipe2[5]/2*mm); 00349 logicalpipe2 = new G4LogicalVolume(solidpipe2,G4Material::GetMaterial("Air"),"logicalpipe2"); 00350 G4Tubs* tub20 = new G4Tubs("tub20",pipe2[0]*mm,pipe2[1]*mm,pipe2[5]/2*mm,0,360); 00351 G4Tubs* tub21 = new G4Tubs("tub21",0,pipe2[1]*mm,pipe2[5]/2*mm,0,360); 00352 G4Tubs* tub22 = new G4Tubs("tub22",0,pipe2[0]*mm,pipe2[5]/2*mm,0,360); 00353 G4Box* solidbox2 = new G4Box("solidbox2",pipe2[2]/2*mm,pipe2[3]/2*mm,pipe2[5]/2*mm); 00354 G4SubtractionSolid* solidsub2 = new G4SubtractionSolid("solidsub2",solidbox2,tub21,0,G4ThreeVector(0,(pipe2[4]-pipe2[3]/2)*mm,0) ); 00355 G4LogicalVolume* logicalsub2 = new G4LogicalVolume(solidsub2,G4Material::GetMaterial("Aluminium"),"logicalsub2"); 00356 G4LogicalVolume* logicaltub20 = new G4LogicalVolume(tub20,G4Material::GetMaterial("Aluminium"),"logicaltub20"); 00357 G4LogicalVolume* logicaltub22 = new G4LogicalVolume(tub22,liquidhelium,"logicaltub22"); 00358 //G4VPhysicalVolume* physicaltub20 = 00359 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub20,"physicaltub20",logicalpipe2,false,0); 00360 //G4VPhysicalVolume* physicaltub22 = 00361 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub22,"physicaltub22",logicalpipe2,false,0); 00362 //G4VPhysicalVolume* physicalsub2 = 00363 new G4PVPlacement(0,G4ThreeVector(0,-(pipe2[4]-pipe2[3]/2)*mm,0),logicalsub2,"physicalsub2",logicalpipe2,false,0); 00364 for(G4int i=0; i<24; i++) 00365 { 00366 std::ostringstream osnamerein; 00367 osnamerein << "physicalpipe2_"<<i; 00368 G4RotationMatrix* zRot = new G4RotationMatrix; 00369 zRot->rotateZ(15*i*deg); 00370 physicalpipe2= new G4PVPlacement(zRot,G4ThreeVector(-(l3Adia[1]+(pipe2[1]+pipe2[4])/2)*std::sin(15*pi/180*i)*mm, 00371 -(l3Adia[1]+(pipe2[1]+pipe2[4])/2)*std::cos(15*pi/180*i)*mm,0),logicalpipe2,osnamerein.str(), 00372 logicalSCM,false,0); 00373 } 00374 00375 //pipe of 4k 00376 G4Box* solidpipe3 = new G4Box("solidpipe3",pipe3[2]/2*mm,(pipe3[1]+pipe3[4])/2*mm,pipe3[5]/2*mm); 00377 logicalpipe3 = new G4LogicalVolume(solidpipe3,G4Material::GetMaterial("Air"),"logicalpipe3"); 00378 G4Tubs* tub23 = new G4Tubs("tub23",pipe3[0]*mm,pipe3[1]*mm,pipe3[5]/2*mm,0,360); 00379 G4Tubs* tub24 = new G4Tubs("tub24",0,pipe3[1]*mm,pipe3[5]/2*mm,0,360); 00380 G4Tubs* tub25 = new G4Tubs("tub25",0,pipe3[0]*mm,pipe3[5]/2*mm,0,360); 00381 G4Box* solidbox3 = new G4Box("solidbox3",pipe3[2]/2*mm,pipe3[3]/2*mm,pipe3[5]/2*mm); 00382 G4SubtractionSolid* solidsub3 = new G4SubtractionSolid("solidsub3",solidbox3,tub24,0,G4ThreeVector(0,(pipe3[4]-pipe3[3]/2)*mm,0)); 00383 G4LogicalVolume* logicalsub3 = new G4LogicalVolume(solidsub3,G4Material::GetMaterial("Aluminium"),"logicalsub3"); 00384 G4LogicalVolume* logicaltub23 = new G4LogicalVolume(tub23,G4Material::GetMaterial("Aluminium"),"logicaltub23"); 00385 G4LogicalVolume* logicaltub25 = new G4LogicalVolume(tub25,liquidhelium,"logicaltub25"); 00386 //G4VPhysicalVolume* physicaltub23 = 00387 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub23,"physicaltub23",logicalpipe3,false,0); 00388 //G4VPhysicalVolume* physicaltub25 = 00389 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub25,"physicaltub25",logicalpipe3,false,0); 00390 //G4VPhysicalVolume* physicalsub3 = 00391 new G4PVPlacement(0,G4ThreeVector(0,-(pipe3[4]-pipe3[3]/2)*mm,0),logicalsub3,"physicalsub3",logicalpipe3,false,0); 00392 for(G4int i=0; i<24; i++) 00393 { 00394 std::ostringstream osnamerein; 00395 osnamerein << "physicalpipe3_"<<i; 00396 G4RotationMatrix* zRot = new G4RotationMatrix; 00397 zRot->rotateZ(15*i*deg); 00398 physicalpipe3= new G4PVPlacement(zRot,G4ThreeVector(-(l4Adia[1]+(pipe3[1]+pipe3[4])/2)*std::sin(15*pi/180*i)*mm, 00399 -(l4Adia[1]+(pipe3[1]+pipe3[4])/2)*std::cos(15*pi/180*i)*mm,0),logicalpipe3,osnamerein.str(), 00400 logicalSCM,false,0); 00401 } 00402 00403 //G4VisAttributes* visSCM = new G4VisAttributes(G4Colour(1.,1.,1.)); 00404 G4VisAttributes* visSCM1 = new G4VisAttributes(G4Colour(0.,0.,1.)); 00405 logicalSCM->SetVisAttributes(visSCM1); 00406 logicalinnCryo->SetVisAttributes(visSCM1); 00407 // logicalinnCryo->SetVisAttributes(G4VisAttributes::Invisible); 00408 logicalouterCryo->SetVisAttributes(visSCM1); 00409 // logicalouterCryo->SetVisAttributes(G4VisAttributes::Invisible); 00410 logicalendCryo->SetVisAttributes(visSCM1); 00411 // logicalendCryo->SetVisAttributes(G4VisAttributes::Invisible); 00412 G4VisAttributes* visSCM2 = new G4VisAttributes(G4Colour(0.,1.,0.)); 00413 logicall1Adia->SetVisAttributes(visSCM2); 00414 // logicall1Adia->SetVisAttributes(G4VisAttributes::Invisible); 00415 logicall2Adia->SetVisAttributes(visSCM2); 00416 // logicall2Adia->SetVisAttributes(G4VisAttributes::Invisible); 00417 logicall3Adia->SetVisAttributes(visSCM2); 00418 // logicall3Adia->SetVisAttributes(G4VisAttributes::Invisible); 00419 logicall4Adia->SetVisAttributes(visSCM2); 00420 // logicall4Adia->SetVisAttributes(G4VisAttributes::Invisible); 00421 G4VisAttributes* visSCM3 = new G4VisAttributes(G4Colour(1.,0.,0.)); 00422 logicalinnShield->SetVisAttributes(visSCM3); 00423 // logicalinnShield->SetVisAttributes(G4VisAttributes::Invisible); 00424 logicaloutShield->SetVisAttributes(visSCM3); 00425 // logicaloutShield->SetVisAttributes(G4VisAttributes::Invisible); 00426 logicalendShield->SetVisAttributes(visSCM3); 00427 // logicalendShield->SetVisAttributes(G4VisAttributes::Invisible); 00428 00429 G4VisAttributes* visSCM4 = new G4VisAttributes(G4Colour(0.,1.,1.)); 00430 logicall1insu->SetVisAttributes(visSCM4); 00431 // logicall1insu->SetVisAttributes(G4VisAttributes::Invisible); 00432 logicall2insu->SetVisAttributes(visSCM4); 00433 // logicall2insu->SetVisAttributes(G4VisAttributes::Invisible); 00434 G4VisAttributes* visSCM5 = new G4VisAttributes(G4Colour(1.,0.,1.)); 00435 logicalcoil->SetVisAttributes(visSCM5); 00436 // logicalcoil->SetVisAttributes(G4VisAttributes::Invisible); 00437 logicalendCoil->SetVisAttributes(visSCM5); 00438 // logicalendCoil->SetVisAttributes(G4VisAttributes::Invisible); 00439 G4VisAttributes* visSCM6 = new G4VisAttributes(G4Colour(1.,1.,0.)); 00440 logicalsupp->SetVisAttributes(visSCM6); 00441 // logicalsupp->SetVisAttributes(G4VisAttributes::Invisible); 00442 // G4VisAttributes* visSCM7 = new G4VisAttributes(G4Colour(0.,0.,0.)); 00443 // logicalrein->SetVisAttributes(G4VisAttributes::Invisible); 00444 // logicalpipe1->SetVisAttributes(G4VisAttributes::Invisible); 00445 logicalpipe2->SetVisAttributes(visSCM2); 00446 // logicalpipe2->SetVisAttributes(G4VisAttributes::Invisible); 00447 // logicalpipe3->SetVisAttributes(G4VisAttributes::Invisible); 00448 logicaltub17->SetVisAttributes(visSCM2); 00449 // logicaltub17->SetVisAttributes(G4VisAttributes::Invisible); 00450 logicaltub19->SetVisAttributes(visSCM5); 00451 // logicaltub19->SetVisAttributes(G4VisAttributes::Invisible); 00452 logicaltub20->SetVisAttributes(visSCM1); 00453 // logicaltub20->SetVisAttributes(G4VisAttributes::Invisible); 00454 logicaltub22->SetVisAttributes(visSCM1); 00455 // logicaltub22->SetVisAttributes(G4VisAttributes::Invisible); 00456 logicaltub23->SetVisAttributes(visSCM2); 00457 // logicaltub23->SetVisAttributes(G4VisAttributes::Invisible); 00458 logicaltub25->SetVisAttributes(visSCM5); 00459 // logicaltub25->SetVisAttributes(G4VisAttributes::Invisible); 00460 logicalsub1->SetVisAttributes(visSCM4); 00461 // logicalsub1->SetVisAttributes(G4VisAttributes::Invisible); 00462 logicalsub2->SetVisAttributes(visSCM4); 00463 // logicalsub2->SetVisAttributes(G4VisAttributes::Invisible); 00464 00465 logicalsub3->SetVisAttributes(visSCM4); 00466 // logicalsub3->SetVisAttributes(G4VisAttributes::Invisible); 00467 logicalhole1->SetVisAttributes(visSCM3); 00468 // logicalhole1->SetVisAttributes(G4VisAttributes::Invisible); 00469 logicalhole2->SetVisAttributes(visSCM3); 00470 // logicalhole2->SetVisAttributes(G4VisAttributes::Invisible); 00471 logicalhole3->SetVisAttributes(visSCM3); 00472 // logicalhole3->SetVisAttributes(G4VisAttributes::Invisible); 00473 logicalhole4->SetVisAttributes(visSCM3); 00474 // logicalhole4->SetVisAttributes(G4VisAttributes::Invisible); 00475 logicalhole5->SetVisAttributes(visSCM3); 00476 // logicalhole5->SetVisAttributes(G4VisAttributes::Invisible); 00477 }
void BesSCM::DefineMaterial | ( | ) |
Definition at line 133 of file BesSCM.cc.
References EvtCyclic3::C, fibre, H, liquidhelium, and Steel.
Referenced by Construct().
00134 { 00135 G4double density, a, z,fractionmass; 00136 G4int nel; 00137 G4String name, symbol; 00138 density = 0.1248*g/cm3; 00139 a = 4.00*g/mole; 00140 liquidhelium = new G4Material(name="liquidhelium",z=2.0,a,density); 00141 00142 density = 7.14*g/cm3; 00143 a = 52.00*g/mole; 00144 G4Material* Chromium = new G4Material(name="Chromium",z=24.0,a,density); 00145 00146 density = 7.87*g/cm3; 00147 a = 55.845*g/mole; 00148 G4Material* Iron = new G4Material(name="Iron",z=26.0,a,density); 00149 00150 density = 8.91*g/cm3; 00151 a = 58.693*g/mole; 00152 G4Material* Nickel = new G4Material(name="Nickel",z=28.0,a,density); 00153 00154 density = 7.47*g/cm3; 00155 a = 54.938*g/mole; 00156 G4Material* Manganese = new G4Material(name="Manganese",z=25.0,a,density); 00157 00158 density = 7.801*g/cm3; 00159 Steel = new G4Material(name="Steel",density,nel=4); 00160 Steel->AddMaterial(Iron, fractionmass = 0.69); 00161 Steel->AddMaterial(Chromium, fractionmass = 0.19); 00162 Steel->AddMaterial(Manganese, fractionmass = 0.02); 00163 Steel->AddMaterial(Nickel, fractionmass = 0.10); 00164 00165 a = 12.01*g/mole; 00166 G4Element* C = new G4Element(name="Carbon" ,symbol="C" , z= 6., a); 00167 a = 1.01*g/mole; 00168 G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a); 00169 a = 16.00*g/mole; 00170 G4Element* O = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a); 00171 00172 density = 2.25*mg/cm3; 00173 fibre = new G4Material(name="fibre",density,nel=3); 00174 fibre->AddElement(C, fractionmass = 0.625); 00175 fibre->AddElement(H, fractionmass = 0.042); 00176 fibre->AddElement(O, fractionmass = 0.333); 00177 }
G4LogicalVolume * BesSubdetector::FindLogicalVolume | ( | const G4String & | vn | ) | [inline, inherited] |
Definition at line 38 of file BesSubdetector.hh.
Referenced by BesTofConstruction::Construct(), BesMucConstruction::Construct(), and BesEmcConstruction::GetLogicalVolume().
00038 { 00039 return const_cast<G4LogicalVolume*>( GDMLProcessor::GetInstance()->GetLogicalVolume(vn) ); 00040 }
G4double BesSCM::coil[3] [private] |
G4double BesSCM::endCoil[5] [private] |
G4double BesSCM::endCryo[5] [private] |
G4double BesSCM::endShield[5] [private] |
G4Material* BesSCM::fibre [private] |
Definition at line 120 of file BesSCM.hh.
Referenced by BesSCM(), Construct(), and DefineMaterial().
G4double BesSCM::hole[13] [private] |
G4double BesSCM::innerCryo[3] [private] |
G4double BesSCM::innerShield[3] [private] |
G4double BesSCM::l1Adia[3] [private] |
G4double BesSCM::l1insu[3] [private] |
G4double BesSCM::l2Adia[3] [private] |
G4double BesSCM::l2insu[3] [private] |
G4double BesSCM::l3Adia[3] [private] |
G4double BesSCM::l4Adia[3] [private] |
G4Material* BesSCM::liquidhelium [private] |
Definition at line 118 of file BesSCM.hh.
Referenced by BesSCM(), Construct(), and DefineMaterial().
G4LogicalVolume* BesSCM::logicalcoil [private] |
G4LogicalVolume* BesSCM::logicalendCoil [private] |
G4LogicalVolume* BesSCM::logicalendCryo [private] |
G4LogicalVolume* BesSCM::logicalendShield [private] |
G4LogicalVolume* BesSCM::logicalinnCryo [private] |
G4LogicalVolume* BesSCM::logicalinnShield [private] |
G4LogicalVolume* BesSCM::logicall1Adia [private] |
G4LogicalVolume* BesSCM::logicall1insu [private] |
G4LogicalVolume* BesSCM::logicall2Adia [private] |
G4LogicalVolume* BesSCM::logicall2insu [private] |
G4LogicalVolume* BesSCM::logicall3Adia [private] |
G4LogicalVolume* BesSCM::logicall4Adia [private] |
G4LogicalVolume* BesSCM::logicalouterCryo [private] |
G4LogicalVolume* BesSCM::logicaloutShield [private] |
G4LogicalVolume* BesSCM::logicalpipe1 [private] |
G4LogicalVolume* BesSCM::logicalpipe2 [private] |
G4LogicalVolume* BesSCM::logicalpipe3 [private] |
G4LogicalVolume* BesSCM::logicalrein [private] |
G4LogicalVolume* BesSCM::logicalSCM [private] |
G4LogicalVolume* BesSCM::logicalsupp [private] |
ProcessingConfigurator BesSubdetector::m_config [protected, inherited] |
Definition at line 33 of file BesSubdetector.hh.
SAXProcessor BesSubdetector::m_sxp [protected, inherited] |
Definition at line 32 of file BesSubdetector.hh.
G4double BesSCM::outerCryo[3] [private] |
G4double BesSCM::outerShield[3] [private] |
G4VPhysicalVolume* BesSCM::physicalcoil [private] |
G4VPhysicalVolume* BesSCM::physicalendCoil1 [private] |
G4VPhysicalVolume* BesSCM::physicalendCoil2 [private] |
G4VPhysicalVolume* BesSCM::physicalendCryo1 [private] |
G4VPhysicalVolume* BesSCM::physicalendCryo2 [private] |
G4VPhysicalVolume* BesSCM::physicalendShield1 [private] |
G4VPhysicalVolume* BesSCM::physicalendShield2 [private] |
G4VPhysicalVolume* BesSCM::physicalinnCryo [private] |
G4VPhysicalVolume* BesSCM::physicalinnShield [private] |
G4VPhysicalVolume* BesSCM::physicall1Adia [private] |
G4VPhysicalVolume* BesSCM::physicall1insu [private] |
G4VPhysicalVolume* BesSCM::physicall2Adia [private] |
G4VPhysicalVolume* BesSCM::physicall2insu [private] |
G4VPhysicalVolume* BesSCM::physicall3Adia [private] |
G4VPhysicalVolume* BesSCM::physicall4Adia [private] |
G4VPhysicalVolume* BesSCM::physicalouterCryo [private] |
G4VPhysicalVolume* BesSCM::physicaloutShield [private] |
G4VPhysicalVolume* BesSCM::physicalpipe1 [private] |
G4VPhysicalVolume* BesSCM::physicalpipe2 [private] |
G4VPhysicalVolume* BesSCM::physicalpipe3 [private] |
G4VPhysicalVolume* BesSCM::physicalrein1 [private] |
G4VPhysicalVolume* BesSCM::physicalrein2 [private] |
G4VPhysicalVolume* BesSCM::physicalSCM [private] |
G4VPhysicalVolume* BesSCM::physicalsupp [private] |
G4double BesSCM::pipe1[6] [private] |
G4double BesSCM::pipe2[6] [private] |
G4double BesSCM::pipe3[6] [private] |
G4double BesSCM::rein[5] [private] |
BesSCMParameter* BesSCM::scmPar [private] |
G4Material* BesSCM::Steel [private] |
Definition at line 119 of file BesSCM.hh.
Referenced by BesSCM(), Construct(), and DefineMaterial().
G4double BesSCM::supp[3] [private] |