#include <BesPip.hh>
Inheritance diagram for BesPip:
Public Member Functions | |
BesPip () | |
virtual | ~BesPip () |
void | Construct (G4LogicalVolume *logicbes) |
void | DefineMaterial () |
G4LogicalVolume * | FindLogicalVolume (const G4String &vn) |
Protected Attributes | |
SAXProcessor | m_sxp |
ProcessingConfigurator | m_config |
Private Attributes | |
BesPipParameter * | pipPar |
G4double | goldLayer [3] |
G4double | innerBe [3] |
G4double | oilLayer [3] |
G4double | outerBe [3] |
G4double | innerBeSide [5] |
G4double | innerAl [5] |
G4double | AlRing [5] |
G4double | outerAl [5] |
G4double | AgLayer [5] |
G4double | CuLayer [5] |
G4double | AlCover [5] |
G4LogicalVolume * | logicalPip |
G4VPhysicalVolume * | physicalPip |
G4LogicalVolume * | logicalgoldLayer |
G4VPhysicalVolume * | physicalgoldLayer |
G4LogicalVolume * | logicalinnerBe |
G4VPhysicalVolume * | physicalinnerBe |
G4LogicalVolume * | logicaloilLayer |
G4VPhysicalVolume * | physicaloilLayer |
G4LogicalVolume * | logicalouterBe |
G4VPhysicalVolume * | physicalouterBe |
G4LogicalVolume * | logicalinnerBeSide |
G4VPhysicalVolume * | physicalinnerBeSide |
G4LogicalVolume * | logicalinnerAl |
G4VPhysicalVolume * | physicalinnerAl |
G4LogicalVolume * | logicalAlRing |
G4VPhysicalVolume * | physicalAlRing |
G4LogicalVolume * | logicalouterAl |
G4VPhysicalVolume * | physicalouterAl |
G4LogicalVolume * | logicalAgLayer |
G4VPhysicalVolume * | physicalAgLayer |
G4LogicalVolume * | logicalCuLayer |
G4VPhysicalVolume * | physicalCuLayer |
G4LogicalVolume * | logicalAlCover |
G4VPhysicalVolume * | physicalAlCover |
G4Material * | Oil |
G4Material * | Au |
G4Material * | Ag |
Definition at line 19 of file BesPip.hh.
BesPip::BesPip | ( | ) |
Definition at line 25 of file BesPip.cc.
References Ag, AgLayer, AlCover, AlRing, Au, CuLayer, BesPipParameter::getAgLayer(), BesPipParameter::getAlCover(), BesPipParameter::getAlRing(), BesPipParameter::getCuLayer(), BesPipParameter::getGoldLayer(), BesPipParameter::getInnerAl(), BesPipParameter::getInnerBe(), BesPipParameter::getInnerBeSide(), BesPipParameter::getOilLayer(), BesPipParameter::getOuterAl(), BesPipParameter::getOuterBe(), goldLayer, genRecEmupikp::i, innerAl, innerBe, innerBeSide, logicalAgLayer, logicalAlCover, logicalAlRing, logicalCuLayer, logicalgoldLayer, logicalinnerAl, logicalinnerBe, logicalinnerBeSide, logicaloilLayer, logicalouterAl, logicalouterBe, logicalPip, Oil, oilLayer, outerAl, outerBe, physicalAgLayer, physicalAlCover, physicalAlRing, physicalCuLayer, physicalgoldLayer, physicalinnerAl, physicalinnerBe, physicalinnerBeSide, physicaloilLayer, physicalouterAl, physicalouterBe, physicalPip, pipPar, and BesPipParameter::ReadData().
00026 { 00027 pipPar = new BesPipParameter(); 00028 pipPar->ReadData(); 00029 for(G4int i=0; i<3; i++) 00030 { 00031 goldLayer[i] = pipPar->getGoldLayer(i); 00032 innerBe[i] = pipPar->getInnerBe(i); 00033 oilLayer[i] = pipPar->getOilLayer(i); 00034 outerBe[i] = pipPar->getOuterBe(i); 00035 } 00036 00037 for(G4int i=0; i<5; i++) 00038 { 00039 innerBeSide[i] = pipPar->getInnerBeSide(i); 00040 innerAl[i] = pipPar->getInnerAl(i); 00041 AlRing[i] = pipPar->getAlRing(i); 00042 outerAl[i] = pipPar->getOuterAl(i); 00043 AgLayer[i] = pipPar->getAgLayer(i); 00044 CuLayer[i] = pipPar->getCuLayer(i); 00045 AlCover[i] = pipPar->getAlCover(i); 00046 } 00047 00048 logicalPip = 0; 00049 physicalPip = 0; 00050 00051 logicalgoldLayer = 0; 00052 physicalgoldLayer = 0; 00053 00054 logicalinnerBe = 0; 00055 physicalinnerBe = 0; 00056 00057 logicaloilLayer = 0; 00058 physicaloilLayer = 0; 00059 00060 logicalouterBe = 0; 00061 physicalouterBe = 0; 00062 00063 logicalinnerBeSide = 0; 00064 physicalinnerBeSide = 0; 00065 00066 logicalinnerAl = 0; 00067 physicalinnerAl = 0; 00068 00069 logicalAlRing = 0; 00070 physicalAlRing = 0; 00071 00072 logicalouterAl = 0; 00073 physicalouterAl = 0; 00074 00075 logicalAgLayer = 0; 00076 physicalAgLayer = 0; 00077 00078 logicalCuLayer = 0; 00079 physicalCuLayer = 0; 00080 00081 logicalAlCover = 0; 00082 physicalAlCover = 0; 00083 00084 Au = 0; 00085 Ag = 0; 00086 Oil = 0; 00087 }
void BesPip::Construct | ( | G4LogicalVolume * | logicbes | ) | [virtual] |
Implements BesSubdetector.
Definition at line 115 of file BesPip.cc.
References Ag, AgLayer, AlCover, AlRing, Au, CuLayer, DefineMaterial(), goldLayer, innerAl, innerBe, innerBeSide, logicalAgLayer, logicalAlCover, logicalAlRing, logicalCuLayer, logicalgoldLayer, logicalinnerAl, logicalinnerBe, logicalinnerBeSide, logicaloilLayer, logicalouterAl, logicalouterBe, logicalPip, Oil, oilLayer, outerAl, outerBe, physicalAgLayer, physicalAlCover, physicalAlRing, physicalCuLayer, physicalgoldLayer, physicalinnerAl, physicalinnerBe, physicalinnerBeSide, physicaloilLayer, physicalouterAl, physicalouterBe, and physicalPip.
Referenced by BesDetectorConstruction::Construct().
00116 { 00117 DefineMaterial(); 00118 00119 //G4RotationMatrix* xRot = new G4RotationMatrix; 00120 //xRot->rotateX(90*deg); 00121 00122 //the logical volume of beam pipe 00123 G4Tubs* solidPip1 = new G4Tubs("solidPip1",0.,33.7,134,0,360); 00124 G4Tubs* solidPip2 = new G4Tubs("solidPip2",0.,48,66,0,360); 00125 G4UnionSolid* solidPip_tmp = new G4UnionSolid("solidPip_tmp",solidPip1,solidPip2,0,G4ThreeVector(0,0,-167)); 00126 G4UnionSolid* solidPip = new G4UnionSolid("solidPip",solidPip_tmp,solidPip2,0,G4ThreeVector(0,0,167)); 00127 logicalPip = new G4LogicalVolume(solidPip, G4Material::GetMaterial("Beam"),"logicalPip"); 00128 physicalPip = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalPip,"physicalPip",logicalbes,false,0); 00129 00130 //the volume of gold layer 00131 G4Tubs* solidgoldLayer = new G4Tubs("solidgoldLayer",goldLayer[0],goldLayer[1],goldLayer[2]/2,0,360); 00132 logicalgoldLayer = new G4LogicalVolume(solidgoldLayer, Au,"logicalgoldLayer"); 00133 physicalgoldLayer = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalgoldLayer,"physicalgoldLayer",logicalPip,false,0); 00134 00135 //the volume of inner Be pipe 00136 G4Tubs* solidinnerBe = new G4Tubs("solidinnerBe",innerBe[0],innerBe[1],innerBe[2]/2,0,360); 00137 logicalinnerBe = new G4LogicalVolume(solidinnerBe, G4Material::GetMaterial("Beryllium"),"logicalinnerBe"); 00138 physicalinnerBe = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalinnerBe,"physicalinnerBe",logicalPip,false,0); 00139 00140 //the volume of oil layer 00141 G4Tubs* solidoilLayer = new G4Tubs("solidoilLayer",oilLayer[0],oilLayer[1],oilLayer[2]/2,0,360); 00142 logicaloilLayer = new G4LogicalVolume(solidoilLayer, Oil,"logicaloilLayer"); 00143 physicaloilLayer = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaloilLayer,"physicaloilLayer",logicalPip,false,0); 00144 00145 //the volume of outer Be pipe 00146 G4Tubs* solidouterBe = new G4Tubs("solidouterBe",outerBe[0],outerBe[1],outerBe[2]/2,0,360); 00147 logicalouterBe = new G4LogicalVolume(solidouterBe, G4Material::GetMaterial("Beryllium"),"logicalouterBe"); 00148 physicalouterBe = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalouterBe,"physicalouterBe",logicalPip,false,0); 00149 00150 //the volume of inner side Be layer 00151 G4Tubs* solidinnerBeSide = new G4Tubs("solidinnerBeSide",innerBeSide[0],innerBeSide[1],innerBeSide[2]/2,0,360); 00152 logicalinnerBeSide = new G4LogicalVolume(solidinnerBeSide, G4Material::GetMaterial("Beryllium"),"logicalinnerBeSide"); 00153 physicalinnerBeSide = new G4PVPlacement(0,G4ThreeVector(0,0,innerBeSide[3]),logicalinnerBeSide,"physicalinnerBeSide1",logicalPip,false,0); 00154 new G4PVPlacement(0,G4ThreeVector(0,0,innerBeSide[4]),logicalinnerBeSide,"physicalinnerBeSide2",logicalPip,false,1); 00155 00156 //the volume of inner Al layer 00157 G4Tubs* solidinnerAl = new G4Tubs("solidinnerAl",innerAl[0],innerAl[1],innerAl[2]/2,0,360); 00158 logicalinnerAl = new G4LogicalVolume(solidinnerAl, G4Material::GetMaterial("Aluminium"),"logicalinnerAl"); 00159 physicalinnerAl = new G4PVPlacement(0,G4ThreeVector(0,0,innerAl[3]),logicalinnerAl,"physicalinnerAl1",logicalPip,false,0); 00160 new G4PVPlacement(0,G4ThreeVector(0,0,innerAl[4]),logicalinnerAl,"physicalinnerAl2",logicalPip,false,1); 00161 00162 //the volume of Al ring 00163 G4Tubs* solidAlRing = new G4Tubs("solidAlRing",AlRing[0],AlRing[1],AlRing[2]/2,0,360); 00164 logicalAlRing = new G4LogicalVolume(solidAlRing, G4Material::GetMaterial("Aluminium"),"logicalAlRing"); 00165 physicalAlRing = new G4PVPlacement(0,G4ThreeVector(0,0,AlRing[3]),logicalAlRing,"physicalAlRing1",logicalPip,false,0); 00166 new G4PVPlacement(0,G4ThreeVector(0,0,AlRing[4]),logicalAlRing,"physicalAlRing2",logicalPip,false,1); 00167 00168 //the volume of outer Al layer 00169 G4Tubs* solidouterAl = new G4Tubs("solidouterAl",outerAl[0],outerAl[1],outerAl[2]/2,0,360); 00170 logicalouterAl = new G4LogicalVolume(solidouterAl, G4Material::GetMaterial("Aluminium"),"logicalouterAl"); 00171 physicalouterAl = new G4PVPlacement(0,G4ThreeVector(0,0,outerAl[3]),logicalouterAl,"physicalouterAl1",logicalPip,false,0); 00172 new G4PVPlacement(0,G4ThreeVector(0,0,outerAl[4]),logicalouterAl,"physicalouterAl2",logicalPip,false,1); 00173 00174 //the volume of Ag layer 00175 G4Tubs* solidAgLayer = new G4Tubs("solidAgLayer",AgLayer[0],AgLayer[1],AgLayer[2]/2,0,360); 00176 logicalAgLayer = new G4LogicalVolume(solidAgLayer, Ag,"logicalAgLayer"); 00177 physicalAgLayer = new G4PVPlacement(0,G4ThreeVector(0,0,AgLayer[3]),logicalAgLayer,"physicalAgLayer1",logicalPip,false,0); 00178 new G4PVPlacement(0,G4ThreeVector(0,0,AgLayer[4]),logicalAgLayer,"physicalAgLayer2",logicalPip,false,1); 00179 00180 //the volume of Cu layer 00181 G4Tubs* solidCuLayer = new G4Tubs("solidCuLayer",CuLayer[0],CuLayer[1],CuLayer[2]/2,0,360); 00182 logicalCuLayer = new G4LogicalVolume(solidCuLayer, G4Material::GetMaterial("Copper"),"logicalCuLayer"); 00183 physicalCuLayer = new G4PVPlacement(0,G4ThreeVector(0,0,CuLayer[3]),logicalCuLayer,"physicalCuLayer1",logicalPip,false,0); 00184 new G4PVPlacement(0,G4ThreeVector(0,0,CuLayer[4]),logicalCuLayer,"physicalCuLayer2",logicalPip,false,1); 00185 00186 //the volume of Al cover 00187 G4Tubs* solidAlCover = new G4Tubs("solidAlCover",AlCover[0],AlCover[1],AlCover[2]/2,0,360); 00188 logicalAlCover = new G4LogicalVolume(solidAlCover, G4Material::GetMaterial("Aluminium"),"logicalAlCover"); 00189 physicalAlCover = new G4PVPlacement(0,G4ThreeVector(0,0,AlCover[3]),logicalAlCover,"physicalAlCover1",logicalPip,false,0); 00190 new G4PVPlacement(0,G4ThreeVector(0,0,AlCover[4]),logicalAlCover,"physicalAlCover2",logicalPip,false,1); 00191 00192 G4VisAttributes* visPip = new G4VisAttributes(G4Colour(0.,0.,1.)); 00193 logicalPip->SetVisAttributes(visPip); 00194 //logicalPip->SetVisAttributes(G4VisAttributes::Invisible); 00195 G4VisAttributes* visgold = new G4VisAttributes(G4Colour(1.,1.,0.)); 00196 logicalgoldLayer->SetVisAttributes(visgold); 00197 // logicalgoldLayer->SetVisAttributes(G4VisAttributes::Invisible); 00198 G4VisAttributes* visBe = new G4VisAttributes(G4Colour(0.,1.,0.)); 00199 logicalinnerBe->SetVisAttributes(visBe); 00200 // logicalinnerBe->SetVisAttributes(G4VisAttributes::Invisible); 00201 G4VisAttributes* visOil = new G4VisAttributes(G4Colour(1.,1.,1.)); 00202 logicaloilLayer->SetVisAttributes(visOil); 00203 // logicaloilLayer->SetVisAttributes(G4VisAttributes::Invisible); 00204 logicalouterBe->SetVisAttributes(visBe); 00205 // logicalouterBe->SetVisAttributes(G4VisAttributes::Invisible); 00206 logicalinnerBeSide->SetVisAttributes(visBe); 00207 // logicalinnerBeSide->SetVisAttributes(G4VisAttributes::Invisible); 00208 logicalinnerAl->SetVisAttributes(visOil); 00209 // logicalinnerAl->SetVisAttributes(G4VisAttributes::Invisible); 00210 logicalAlRing->SetVisAttributes(visOil); 00211 // logicalAlRing->SetVisAttributes(G4VisAttributes::Invisible); 00212 logicalouterAl->SetVisAttributes(visOil); 00213 // logicalouterAl->SetVisAttributes(G4VisAttributes::Invisible); 00214 logicalAgLayer->SetVisAttributes(visBe); 00215 // logicalAgLayer->SetVisAttributes(G4VisAttributes::Invisible); 00216 logicalCuLayer->SetVisAttributes(visPip); 00217 // logicalCuLayer->SetVisAttributes(G4VisAttributes::Invisible); 00218 logicalAlCover->SetVisAttributes(visOil); 00219 // logicalAlCover->SetVisAttributes(G4VisAttributes::Invisible); 00220 }
void BesPip::DefineMaterial | ( | ) |
Definition at line 89 of file BesPip.cc.
References Ag, Au, EvtCyclic3::C, H, and Oil.
Referenced by Construct().
00090 { 00091 G4double density, a, z,fractionmass; 00092 G4int nel,natoms; 00093 G4String name, symbol; 00094 00095 density=19.32*g/cm3; 00096 a = 196.967*g/mole; 00097 Au= new G4Material("Gold",79,a,density); 00098 00099 density=10.5*g/cm3; 00100 a = 107.9*g/mole; 00101 Ag= new G4Material("Silver",47,a,density); 00102 00103 a = 1.01*g/mole; 00104 G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a); 00105 00106 a = 12.01*g/mole; 00107 G4Element* C = new G4Element(name="Carbon" ,symbol="C" , z= 6., a); 00108 00109 density = 0.810*g/cm3; 00110 Oil = new G4Material(name="Oil",density,nel=2); 00111 Oil->AddElement(C, natoms=18); 00112 Oil->AddElement(H, natoms=38); 00113 }
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 }
G4Material* BesPip::Ag [private] |
G4double BesPip::AgLayer[5] [private] |
G4double BesPip::AlCover[5] [private] |
G4double BesPip::AlRing[5] [private] |
G4Material* BesPip::Au [private] |
G4double BesPip::CuLayer[5] [private] |
G4double BesPip::goldLayer[3] [private] |
G4double BesPip::innerAl[5] [private] |
G4double BesPip::innerBe[3] [private] |
G4double BesPip::innerBeSide[5] [private] |
G4LogicalVolume* BesPip::logicalAgLayer [private] |
G4LogicalVolume* BesPip::logicalAlCover [private] |
G4LogicalVolume* BesPip::logicalAlRing [private] |
G4LogicalVolume* BesPip::logicalCuLayer [private] |
G4LogicalVolume* BesPip::logicalgoldLayer [private] |
G4LogicalVolume* BesPip::logicalinnerAl [private] |
G4LogicalVolume* BesPip::logicalinnerBe [private] |
G4LogicalVolume* BesPip::logicalinnerBeSide [private] |
G4LogicalVolume* BesPip::logicaloilLayer [private] |
G4LogicalVolume* BesPip::logicalouterAl [private] |
G4LogicalVolume* BesPip::logicalouterBe [private] |
G4LogicalVolume* BesPip::logicalPip [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.
G4Material* BesPip::Oil [private] |
G4double BesPip::oilLayer[3] [private] |
G4double BesPip::outerAl[5] [private] |
G4double BesPip::outerBe[3] [private] |
G4VPhysicalVolume* BesPip::physicalAgLayer [private] |
G4VPhysicalVolume* BesPip::physicalAlCover [private] |
G4VPhysicalVolume* BesPip::physicalAlRing [private] |
G4VPhysicalVolume* BesPip::physicalCuLayer [private] |
G4VPhysicalVolume* BesPip::physicalgoldLayer [private] |
G4VPhysicalVolume* BesPip::physicalinnerAl [private] |
G4VPhysicalVolume* BesPip::physicalinnerBe [private] |
G4VPhysicalVolume* BesPip::physicalinnerBeSide [private] |
G4VPhysicalVolume* BesPip::physicaloilLayer [private] |
G4VPhysicalVolume* BesPip::physicalouterAl [private] |
G4VPhysicalVolume* BesPip::physicalouterBe [private] |
G4VPhysicalVolume* BesPip::physicalPip [private] |
BesPipParameter* BesPip::pipPar [private] |