13#include "G4LogicalVolume.hh"
14#include "G4VPhysicalVolume.hh"
15#include "G4UnionSolid.hh"
16#include "G4ThreeVector.hh"
17#include "G4Material.hh"
18#include "G4PVPlacement.hh"
20#include "G4VisAttributes.hh"
22#include "BesPipParameter.hh"
23#include "BesSubdetector.hh"
29 for(G4int i=0; i<3; i++)
37 for(G4int i=0; i<5; i++)
52 physicalgoldLayer = 0;
63 logicalinnerBeSide = 0;
64 physicalinnerBeSide = 0;
91 G4double density, a, z,fractionmass;
93 G4String name, symbol;
97 Au=
new G4Material(
"Gold",79,a,density);
101 Ag=
new G4Material(
"Silver",47,a,density);
104 G4Element*
H =
new G4Element(name=
"Hydrogen",symbol=
"H" , z= 1., a);
107 G4Element*
C =
new G4Element(name=
"Carbon" ,symbol=
"C" , z= 6., a);
109 density = 0.810*g/cm3;
110 Oil =
new G4Material(name=
"Oil",density,nel=2);
111 Oil->AddElement(
C, natoms=18);
112 Oil->AddElement(
H, natoms=38);
123 G4Tubs* solidPip1 =
new G4Tubs(
"solidPip1",0.,33.7,134,0,360);
124 G4Tubs* solidPip2 =
new G4Tubs(
"solidPip2",0.,48,66,0,360);
125 G4UnionSolid* solidPip_tmp =
new G4UnionSolid(
"solidPip_tmp",solidPip1,solidPip2,0,G4ThreeVector(0,0,-167));
126 G4UnionSolid* solidPip =
new G4UnionSolid(
"solidPip",solidPip_tmp,solidPip2,0,G4ThreeVector(0,0,167));
127 logicalPip =
new G4LogicalVolume(solidPip, G4Material::GetMaterial(
"Beam"),
"logicalPip");
128 physicalPip =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalPip,
"physicalPip",logicalbes,
false,0);
131 G4Tubs* solidgoldLayer =
new G4Tubs(
"solidgoldLayer",goldLayer[0],goldLayer[1],goldLayer[2]/2,0,360);
132 logicalgoldLayer =
new G4LogicalVolume(solidgoldLayer, Au,
"logicalgoldLayer");
133 physicalgoldLayer =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalgoldLayer,
"physicalgoldLayer",logicalPip,
false,0);
136 G4Tubs* solidinnerBe =
new G4Tubs(
"solidinnerBe",innerBe[0],innerBe[1],innerBe[2]/2,0,360);
137 logicalinnerBe =
new G4LogicalVolume(solidinnerBe, G4Material::GetMaterial(
"Beryllium"),
"logicalinnerBe");
138 physicalinnerBe =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalinnerBe,
"physicalinnerBe",logicalPip,
false,0);
141 G4Tubs* solidoilLayer =
new G4Tubs(
"solidoilLayer",oilLayer[0],oilLayer[1],oilLayer[2]/2,0,360);
142 logicaloilLayer =
new G4LogicalVolume(solidoilLayer, Oil,
"logicaloilLayer");
143 physicaloilLayer =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaloilLayer,
"physicaloilLayer",logicalPip,
false,0);
146 G4Tubs* solidouterBe =
new G4Tubs(
"solidouterBe",outerBe[0],outerBe[1],outerBe[2]/2,0,360);
147 logicalouterBe =
new G4LogicalVolume(solidouterBe, G4Material::GetMaterial(
"Beryllium"),
"logicalouterBe");
148 physicalouterBe =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalouterBe,
"physicalouterBe",logicalPip,
false,0);
151 G4Tubs* solidinnerBeSide =
new G4Tubs(
"solidinnerBeSide",innerBeSide[0],innerBeSide[1],innerBeSide[2]/2,0,360);
152 logicalinnerBeSide =
new G4LogicalVolume(solidinnerBeSide, G4Material::GetMaterial(
"Beryllium"),
"logicalinnerBeSide");
153 physicalinnerBeSide =
new G4PVPlacement(0,G4ThreeVector(0,0,innerBeSide[3]),logicalinnerBeSide,
"physicalinnerBeSide1",logicalPip,
false,0);
154 new G4PVPlacement(0,G4ThreeVector(0,0,innerBeSide[4]),logicalinnerBeSide,
"physicalinnerBeSide2",logicalPip,
false,1);
157 G4Tubs* solidinnerAl =
new G4Tubs(
"solidinnerAl",innerAl[0],innerAl[1],innerAl[2]/2,0,360);
158 logicalinnerAl =
new G4LogicalVolume(solidinnerAl, G4Material::GetMaterial(
"Aluminium"),
"logicalinnerAl");
159 physicalinnerAl =
new G4PVPlacement(0,G4ThreeVector(0,0,innerAl[3]),logicalinnerAl,
"physicalinnerAl1",logicalPip,
false,0);
160 new G4PVPlacement(0,G4ThreeVector(0,0,innerAl[4]),logicalinnerAl,
"physicalinnerAl2",logicalPip,
false,1);
163 G4Tubs* solidAlRing =
new G4Tubs(
"solidAlRing",AlRing[0],AlRing[1],AlRing[2]/2,0,360);
164 logicalAlRing =
new G4LogicalVolume(solidAlRing, G4Material::GetMaterial(
"Aluminium"),
"logicalAlRing");
165 physicalAlRing =
new G4PVPlacement(0,G4ThreeVector(0,0,AlRing[3]),logicalAlRing,
"physicalAlRing1",logicalPip,
false,0);
166 new G4PVPlacement(0,G4ThreeVector(0,0,AlRing[4]),logicalAlRing,
"physicalAlRing2",logicalPip,
false,1);
169 G4Tubs* solidouterAl =
new G4Tubs(
"solidouterAl",outerAl[0],outerAl[1],outerAl[2]/2,0,360);
170 logicalouterAl =
new G4LogicalVolume(solidouterAl, G4Material::GetMaterial(
"Aluminium"),
"logicalouterAl");
171 physicalouterAl =
new G4PVPlacement(0,G4ThreeVector(0,0,outerAl[3]),logicalouterAl,
"physicalouterAl1",logicalPip,
false,0);
172 new G4PVPlacement(0,G4ThreeVector(0,0,outerAl[4]),logicalouterAl,
"physicalouterAl2",logicalPip,
false,1);
175 G4Tubs* solidAgLayer =
new G4Tubs(
"solidAgLayer",AgLayer[0],AgLayer[1],AgLayer[2]/2,0,360);
176 logicalAgLayer =
new G4LogicalVolume(solidAgLayer, Ag,
"logicalAgLayer");
177 physicalAgLayer =
new G4PVPlacement(0,G4ThreeVector(0,0,AgLayer[3]),logicalAgLayer,
"physicalAgLayer1",logicalPip,
false,0);
178 new G4PVPlacement(0,G4ThreeVector(0,0,AgLayer[4]),logicalAgLayer,
"physicalAgLayer2",logicalPip,
false,1);
181 G4Tubs* solidCuLayer =
new G4Tubs(
"solidCuLayer",CuLayer[0],CuLayer[1],CuLayer[2]/2,0,360);
182 logicalCuLayer =
new G4LogicalVolume(solidCuLayer, G4Material::GetMaterial(
"Copper"),
"logicalCuLayer");
183 physicalCuLayer =
new G4PVPlacement(0,G4ThreeVector(0,0,CuLayer[3]),logicalCuLayer,
"physicalCuLayer1",logicalPip,
false,0);
184 new G4PVPlacement(0,G4ThreeVector(0,0,CuLayer[4]),logicalCuLayer,
"physicalCuLayer2",logicalPip,
false,1);
187 G4Tubs* solidAlCover =
new G4Tubs(
"solidAlCover",AlCover[0],AlCover[1],AlCover[2]/2,0,360);
188 logicalAlCover =
new G4LogicalVolume(solidAlCover, G4Material::GetMaterial(
"Aluminium"),
"logicalAlCover");
189 physicalAlCover =
new G4PVPlacement(0,G4ThreeVector(0,0,AlCover[3]),logicalAlCover,
"physicalAlCover1",logicalPip,
false,0);
190 new G4PVPlacement(0,G4ThreeVector(0,0,AlCover[4]),logicalAlCover,
"physicalAlCover2",logicalPip,
false,1);
192 G4VisAttributes* visPip =
new G4VisAttributes(G4Colour(0.,0.,1.));
193 logicalPip->SetVisAttributes(visPip);
195 G4VisAttributes* visgold =
new G4VisAttributes(G4Colour(1.,1.,0.));
196 logicalgoldLayer->SetVisAttributes(visgold);
198 G4VisAttributes* visBe =
new G4VisAttributes(G4Colour(0.,1.,0.));
199 logicalinnerBe->SetVisAttributes(visBe);
201 G4VisAttributes* visOil =
new G4VisAttributes(G4Colour(1.,1.,1.));
202 logicaloilLayer->SetVisAttributes(visOil);
204 logicalouterBe->SetVisAttributes(visBe);
206 logicalinnerBeSide->SetVisAttributes(visBe);
208 logicalinnerAl->SetVisAttributes(visOil);
210 logicalAlRing->SetVisAttributes(visOil);
212 logicalouterAl->SetVisAttributes(visOil);
214 logicalAgLayer->SetVisAttributes(visBe);
216 logicalCuLayer->SetVisAttributes(visPip);
218 logicalAlCover->SetVisAttributes(visOil);
***************************************************************************************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
G4double getOilLayer(G4int i)
G4double getInnerBe(G4int i)
G4double getInnerAl(G4int i)
G4double getOuterBe(G4int i)
G4double getAlRing(G4int i)
G4double getAlCover(G4int i)
G4double getAgLayer(G4int i)
G4double getInnerBeSide(G4int i)
G4double getOuterAl(G4int i)
G4double getCuLayer(G4int i)
G4double getGoldLayer(G4int i)
void Construct(G4LogicalVolume *logicbes)