BesPip Class Reference

#include <BesPip.hh>

Inheritance diagram for BesPip:

BesSubdetector List of all members.

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

BesPipParameterpipPar
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

Detailed Description

Definition at line 19 of file BesPip.hh.


Constructor & Destructor Documentation

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 }

virtual BesPip::~BesPip (  )  [inline, virtual]

Definition at line 24 of file BesPip.hh.

00024 {;}


Member Function Documentation

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 }


Member Data Documentation

G4Material* BesPip::Ag [private]

Definition at line 86 of file BesPip.hh.

Referenced by BesPip(), Construct(), and DefineMaterial().

G4double BesPip::AgLayer[5] [private]

Definition at line 43 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4double BesPip::AlCover[5] [private]

Definition at line 45 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4double BesPip::AlRing[5] [private]

Definition at line 41 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4Material* BesPip::Au [private]

Definition at line 85 of file BesPip.hh.

Referenced by BesPip(), Construct(), and DefineMaterial().

G4double BesPip::CuLayer[5] [private]

Definition at line 44 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4double BesPip::goldLayer[3] [private]

Definition at line 34 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4double BesPip::innerAl[5] [private]

Definition at line 40 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4double BesPip::innerBe[3] [private]

Definition at line 35 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4double BesPip::innerBeSide[5] [private]

Definition at line 39 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicalAgLayer [private]

Definition at line 75 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicalAlCover [private]

Definition at line 81 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicalAlRing [private]

Definition at line 69 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicalCuLayer [private]

Definition at line 78 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicalgoldLayer [private]

Definition at line 51 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicalinnerAl [private]

Definition at line 66 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicalinnerBe [private]

Definition at line 54 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicalinnerBeSide [private]

Definition at line 63 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicaloilLayer [private]

Definition at line 57 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicalouterAl [private]

Definition at line 72 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicalouterBe [private]

Definition at line 60 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4LogicalVolume* BesPip::logicalPip [private]

Definition at line 48 of file BesPip.hh.

Referenced by BesPip(), and Construct().

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]

Definition at line 84 of file BesPip.hh.

Referenced by BesPip(), Construct(), and DefineMaterial().

G4double BesPip::oilLayer[3] [private]

Definition at line 36 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4double BesPip::outerAl[5] [private]

Definition at line 42 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4double BesPip::outerBe[3] [private]

Definition at line 37 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicalAgLayer [private]

Definition at line 76 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicalAlCover [private]

Definition at line 82 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicalAlRing [private]

Definition at line 70 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicalCuLayer [private]

Definition at line 79 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicalgoldLayer [private]

Definition at line 52 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicalinnerAl [private]

Definition at line 67 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicalinnerBe [private]

Definition at line 55 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicalinnerBeSide [private]

Definition at line 64 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicaloilLayer [private]

Definition at line 58 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicalouterAl [private]

Definition at line 73 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicalouterBe [private]

Definition at line 61 of file BesPip.hh.

Referenced by BesPip(), and Construct().

G4VPhysicalVolume* BesPip::physicalPip [private]

Definition at line 49 of file BesPip.hh.

Referenced by BesPip(), and Construct().

BesPipParameter* BesPip::pipPar [private]

Definition at line 33 of file BesPip.hh.

Referenced by BesPip().


Generated on Tue Nov 29 23:17:34 2016 for BOSS_7.0.2 by  doxygen 1.4.7