BOSS 7.1.3
BESIII Offline Software System
Loading...
Searching...
No Matches
BesPip Class Reference

#include <BesPip.hh>

+ Inheritance diagram for BesPip:

Public Member Functions

 BesPip ()
 
virtual ~BesPip ()
 
void Construct (G4LogicalVolume *logicbes)
 
void DefineMaterial ()
 
- Public Member Functions inherited from BesSubdetector
 BesSubdetector ()
 
virtual ~BesSubdetector ()
 
G4LogicalVolume * FindLogicalVolume (const G4String &vn)
 

Additional Inherited Members

- Protected Attributes inherited from BesSubdetector
SAXProcessor m_sxp
 
ProcessingConfigurator m_config
 

Detailed Description

Definition at line 19 of file BesPip.hh.

Constructor & Destructor Documentation

◆ BesPip()

BesPip::BesPip ( )

Definition at line 27 of file BesPip.cc.

28{
29 pipPar = new BesPipParameter();
30 pipPar->ReadData();
31 for(G4int i=0; i<3; i++)
32 {
33 goldLayer[i] = pipPar->getGoldLayer(i);
34 innerBe[i] = pipPar->getInnerBe(i);
35 oilLayer[i] = pipPar->getOilLayer(i);
36 outerBe[i] = pipPar->getOuterBe(i);
37 }
38
39 for(G4int i=0; i<5; i++)
40 {
41 innerBeSide[i] = pipPar->getInnerBeSide(i);
42 innerAl[i] = pipPar->getInnerAl(i);
43 AlRing[i] = pipPar->getAlRing(i);
44 outerAl[i] = pipPar->getOuterAl(i);
45 AgLayer[i] = pipPar->getAgLayer(i);
46 CuLayer[i] = pipPar->getCuLayer(i);
47 AlCover[i] = pipPar->getAlCover(i);
48 }
49
50 logicalPip = 0;
51 physicalPip = 0;
52
53 logicalgoldLayer = 0;
54 physicalgoldLayer = 0;
55
56 logicalinnerBe = 0;
57 physicalinnerBe = 0;
58
59 logicaloilLayer = 0;
60 physicaloilLayer = 0;
61
62 logicalouterBe = 0;
63 physicalouterBe = 0;
64
65 logicalinnerBeSide = 0;
66 physicalinnerBeSide = 0;
67
68 logicalinnerAl = 0;
69 physicalinnerAl = 0;
70
71 logicalAlRing = 0;
72 physicalAlRing = 0;
73
74 logicalouterAl = 0;
75 physicalouterAl = 0;
76
77 logicalAgLayer = 0;
78 physicalAgLayer = 0;
79
80 logicalCuLayer = 0;
81 physicalCuLayer = 0;
82
83 logicalAlCover = 0;
84 physicalAlCover = 0;
85
86 Au = 0;
87 Ag = 0;
88 Oil = 0;
89}

◆ ~BesPip()

virtual BesPip::~BesPip ( )
inlinevirtual

Definition at line 24 of file BesPip.hh.

24{;}

Member Function Documentation

◆ Construct()

void BesPip::Construct ( G4LogicalVolume * logicbes)
virtual

Implements BesSubdetector.

Definition at line 117 of file BesPip.cc.

118{
120
121 //G4RotationMatrix* xRot = new G4RotationMatrix;
122 //xRot->rotateX(90*deg);
123
124 //the logical volume of beam pipe
125 G4Tubs* solidPip1 = new G4Tubs("solidPip1",0.,33.7,134,0,360);
126 G4Tubs* solidPip2 = new G4Tubs("solidPip2",0.,48,66,0,360);
127 G4UnionSolid* solidPip_tmp = new G4UnionSolid("solidPip_tmp",solidPip1,solidPip2,0,G4ThreeVector(0,0,-167));
128 G4UnionSolid* solidPip = new G4UnionSolid("solidPip",solidPip_tmp,solidPip2,0,G4ThreeVector(0,0,167));
129 logicalPip = new G4LogicalVolume(solidPip, G4Material::GetMaterial("Beam"),"logicalPip");
130 physicalPip = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalPip,"physicalPip",logicalbes,false,0);
131
132 //the volume of gold layer
133 G4Tubs* solidgoldLayer = new G4Tubs("solidgoldLayer",goldLayer[0],goldLayer[1],goldLayer[2]/2,0,360);
134 logicalgoldLayer = new G4LogicalVolume(solidgoldLayer, Au,"logicalgoldLayer");
135 physicalgoldLayer = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalgoldLayer,"physicalgoldLayer",logicalPip,false,0);
136
137 //the volume of inner Be pipe
138 G4Tubs* solidinnerBe = new G4Tubs("solidinnerBe",innerBe[0],innerBe[1],innerBe[2]/2,0,360);
139 logicalinnerBe = new G4LogicalVolume(solidinnerBe, G4Material::GetMaterial("Beryllium"),"logicalinnerBe");
140 physicalinnerBe = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalinnerBe,"physicalinnerBe",logicalPip,false,0);
141
142 //the volume of oil layer
143 G4Tubs* solidoilLayer = new G4Tubs("solidoilLayer",oilLayer[0],oilLayer[1],oilLayer[2]/2,0,360);
144 logicaloilLayer = new G4LogicalVolume(solidoilLayer, Oil,"logicaloilLayer");
145 physicaloilLayer = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaloilLayer,"physicaloilLayer",logicalPip,false,0);
146
147 //the volume of outer Be pipe
148 G4Tubs* solidouterBe = new G4Tubs("solidouterBe",outerBe[0],outerBe[1],outerBe[2]/2,0,360);
149 logicalouterBe = new G4LogicalVolume(solidouterBe, G4Material::GetMaterial("Beryllium"),"logicalouterBe");
150 physicalouterBe = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalouterBe,"physicalouterBe",logicalPip,false,0);
151
152 //the volume of inner side Be layer
153 G4Tubs* solidinnerBeSide = new G4Tubs("solidinnerBeSide",innerBeSide[0],innerBeSide[1],innerBeSide[2]/2,0,360);
154 logicalinnerBeSide = new G4LogicalVolume(solidinnerBeSide, G4Material::GetMaterial("Beryllium"),"logicalinnerBeSide");
155 physicalinnerBeSide = new G4PVPlacement(0,G4ThreeVector(0,0,innerBeSide[3]),logicalinnerBeSide,"physicalinnerBeSide1",logicalPip,false,0);
156 new G4PVPlacement(0,G4ThreeVector(0,0,innerBeSide[4]),logicalinnerBeSide,"physicalinnerBeSide2",logicalPip,false,1);
157
158 //the volume of inner Al layer
159 G4Tubs* solidinnerAl = new G4Tubs("solidinnerAl",innerAl[0],innerAl[1],innerAl[2]/2,0,360);
160 logicalinnerAl = new G4LogicalVolume(solidinnerAl, G4Material::GetMaterial("Aluminium"),"logicalinnerAl");
161 physicalinnerAl = new G4PVPlacement(0,G4ThreeVector(0,0,innerAl[3]),logicalinnerAl,"physicalinnerAl1",logicalPip,false,0);
162 new G4PVPlacement(0,G4ThreeVector(0,0,innerAl[4]),logicalinnerAl,"physicalinnerAl2",logicalPip,false,1);
163
164 //the volume of Al ring
165 G4Tubs* solidAlRing = new G4Tubs("solidAlRing",AlRing[0],AlRing[1],AlRing[2]/2,0,360);
166 logicalAlRing = new G4LogicalVolume(solidAlRing, G4Material::GetMaterial("Aluminium"),"logicalAlRing");
167 physicalAlRing = new G4PVPlacement(0,G4ThreeVector(0,0,AlRing[3]),logicalAlRing,"physicalAlRing1",logicalPip,false,0);
168 new G4PVPlacement(0,G4ThreeVector(0,0,AlRing[4]),logicalAlRing,"physicalAlRing2",logicalPip,false,1);
169
170 //the volume of outer Al layer
171 G4Tubs* solidouterAl = new G4Tubs("solidouterAl",outerAl[0],outerAl[1],outerAl[2]/2,0,360);
172 logicalouterAl = new G4LogicalVolume(solidouterAl, G4Material::GetMaterial("Aluminium"),"logicalouterAl");
173 physicalouterAl = new G4PVPlacement(0,G4ThreeVector(0,0,outerAl[3]),logicalouterAl,"physicalouterAl1",logicalPip,false,0);
174 new G4PVPlacement(0,G4ThreeVector(0,0,outerAl[4]),logicalouterAl,"physicalouterAl2",logicalPip,false,1);
175
176 //the volume of Ag layer
177 G4Tubs* solidAgLayer = new G4Tubs("solidAgLayer",AgLayer[0],AgLayer[1],AgLayer[2]/2,0,360);
178 logicalAgLayer = new G4LogicalVolume(solidAgLayer, Ag,"logicalAgLayer");
179 physicalAgLayer = new G4PVPlacement(0,G4ThreeVector(0,0,AgLayer[3]),logicalAgLayer,"physicalAgLayer1",logicalPip,false,0);
180 new G4PVPlacement(0,G4ThreeVector(0,0,AgLayer[4]),logicalAgLayer,"physicalAgLayer2",logicalPip,false,1);
181
182 //the volume of Cu layer
183 G4Tubs* solidCuLayer = new G4Tubs("solidCuLayer",CuLayer[0],CuLayer[1],CuLayer[2]/2,0,360);
184 logicalCuLayer = new G4LogicalVolume(solidCuLayer, G4Material::GetMaterial("Copper"),"logicalCuLayer");
185 physicalCuLayer = new G4PVPlacement(0,G4ThreeVector(0,0,CuLayer[3]),logicalCuLayer,"physicalCuLayer1",logicalPip,false,0);
186 new G4PVPlacement(0,G4ThreeVector(0,0,CuLayer[4]),logicalCuLayer,"physicalCuLayer2",logicalPip,false,1);
187
188 //the volume of Al cover
189 G4Tubs* solidAlCover = new G4Tubs("solidAlCover",AlCover[0],AlCover[1],AlCover[2]/2,0,360);
190 logicalAlCover = new G4LogicalVolume(solidAlCover, G4Material::GetMaterial("Aluminium"),"logicalAlCover");
191 physicalAlCover = new G4PVPlacement(0,G4ThreeVector(0,0,AlCover[3]),logicalAlCover,"physicalAlCover1",logicalPip,false,0);
192 new G4PVPlacement(0,G4ThreeVector(0,0,AlCover[4]),logicalAlCover,"physicalAlCover2",logicalPip,false,1);
193
194 G4VisAttributes* visPip = new G4VisAttributes(G4Colour(0.,0.,1.));
195 logicalPip->SetVisAttributes(visPip);
196 //logicalPip->SetVisAttributes(G4VisAttributes::Invisible);
197 G4VisAttributes* visgold = new G4VisAttributes(G4Colour(1.,1.,0.));
198 logicalgoldLayer->SetVisAttributes(visgold);
199// logicalgoldLayer->SetVisAttributes(G4VisAttributes::Invisible);
200 G4VisAttributes* visBe = new G4VisAttributes(G4Colour(0.,1.,0.));
201 logicalinnerBe->SetVisAttributes(visBe);
202// logicalinnerBe->SetVisAttributes(G4VisAttributes::Invisible);
203 G4VisAttributes* visOil = new G4VisAttributes(G4Colour(1.,1.,1.));
204 logicaloilLayer->SetVisAttributes(visOil);
205// logicaloilLayer->SetVisAttributes(G4VisAttributes::Invisible);
206 logicalouterBe->SetVisAttributes(visBe);
207// logicalouterBe->SetVisAttributes(G4VisAttributes::Invisible);
208 logicalinnerBeSide->SetVisAttributes(visBe);
209// logicalinnerBeSide->SetVisAttributes(G4VisAttributes::Invisible);
210 logicalinnerAl->SetVisAttributes(visOil);
211// logicalinnerAl->SetVisAttributes(G4VisAttributes::Invisible);
212 logicalAlRing->SetVisAttributes(visOil);
213// logicalAlRing->SetVisAttributes(G4VisAttributes::Invisible);
214 logicalouterAl->SetVisAttributes(visOil);
215// logicalouterAl->SetVisAttributes(G4VisAttributes::Invisible);
216 logicalAgLayer->SetVisAttributes(visBe);
217// logicalAgLayer->SetVisAttributes(G4VisAttributes::Invisible);
218 logicalCuLayer->SetVisAttributes(visPip);
219// logicalCuLayer->SetVisAttributes(G4VisAttributes::Invisible);
220 logicalAlCover->SetVisAttributes(visOil);
221// logicalAlCover->SetVisAttributes(G4VisAttributes::Invisible);
222}
void DefineMaterial()
Definition BesPip.cc:91

◆ DefineMaterial()

void BesPip::DefineMaterial ( )

Definition at line 91 of file BesPip.cc.

92{
93 G4double density, a, z,fractionmass;
94 G4int nel,natoms;
95 G4String name, symbol;
96
97 density=19.32*g/cm3;
98 a = 196.967*g/mole;
99 Au= new G4Material("Gold",79,a,density);
100
101 density=10.5*g/cm3;
102 a = 107.9*g/mole;
103 Ag= new G4Material("Silver",47,a,density);
104
105 a = 1.01*g/mole;
106 G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a);
107
108 a = 12.01*g/mole;
109 G4Element* C = new G4Element(name="Carbon" ,symbol="C" , z= 6., a);
110
111 density = 0.810*g/cm3;
112 Oil = new G4Material(name="Oil",density,nel=2);
113 Oil->AddElement(C, natoms=18);
114 Oil->AddElement(H, natoms=38);
115}
***************************************************************************************Pseudo Class RRes *****************************************************************************************Parameters and physical constants **Maarten sept ************************************************************************DOUBLE PRECISION xsmu **************************************************************************PARTICLE DATA all others are from PDG *Only resonances with known widths into electron pairs are sept ************************************************************************C Declarations C
Definition RRes.h:29
IMPLICIT REAL *A H
Definition myXsection.h:1

Referenced by Construct().


The documentation for this class was generated from the following files: