48 #include "DetectorConstruction.hh"
49 #include "DetectorMessenger.hh"
84 fVertexLength = 3.*
cm;
107 delete fDetectorMessenger;
108 delete fVertexDetectorCuts;
109 delete fMuonDetectorCuts;
116 return ConstructVolumes();
121 void DetectorConstruction::DefineMaterials()
146 delete fVertexRegion;
149 fVertexRegion =
new G4Region(
"VertexDetector");
152 fMuonRegion =
new G4Region(
"MuonDetector");
159 if(fVertexLength < fPadLength*5.0) fVertexLength = fPadLength*5.0;
164 fWorldZ = 2.*fVertexLength + 3.*fAbsLength + 0.5*(fEcalLength + york) + biggap*2.;
167 G4double vertexZ= -fWorldZ + fVertexLength*2.0 + fAbsLength + biggap;
168 G4double absZ2 = -fWorldZ + fVertexLength*4.0 + fAbsLength*3.5 + biggap;
169 G4double ecalZ = -fWorldZ + fVertexLength*4.0 + fAbsLength*4.0 + fEcalLength*0.5
171 G4double yorkZ = -fWorldZ + fVertexLength*4.0 + fAbsLength*5.0 + fEcalLength
172 + york*0.5 + 3.*biggap;
177 G4Box* solidW =
new G4Box(
"World",worldX,worldX,fWorldZ);
180 "World",fLogicWorld,0,
false,0);
185 G4Box* solidE =
new G4Box(
"VolE",worldX,worldX,fEcalLength*0.5 + gap);
189 "VolE",logicECal,world,
false,0);
191 G4Box* solidC =
new G4Box(
"Ecal",fEcalWidth*0.5,fEcalWidth*0.5,fEcalLength*0.5);
199 G4double x0 = -(fEcalWidth + gap)*2.0;
205 for (i=0; i<5; i++) {
207 for (j=0; j<5; j++) {
212 x += fEcalWidth + gap;
214 y += fEcalWidth + gap;
219 G4Box* solidA =
new G4Box(
"Abso",worldX,worldX,fAbsLength*0.5);
222 "Abs2",fLogicA2,world,
false,0);
229 G4Box* solidYV =
new G4Box(
"VolY",worldX,worldX,york*0.5+fAbsLength);
233 "VolY",logicYV,world,
false,0);
235 G4Box* solidY =
new G4Box(
"York",worldX,worldX,york*0.5);
239 "York",logicY,physYV,
false,0);
245 "Abs3",fLogicA3,physYV,
false,0);
247 "Abs4",fLogicA4,physYV,
false,0);
250 G4Box* solidVV =
new G4Box(
"VolV",worldX,worldX,fVertexLength*2.+fAbsLength+gap);
254 "VolV",logicVV,world,
false,0);
259 "Abs1",fLogicA1,physVV,
false,0);
267 npads = (npads/2)*2 + 1;
268 x0 = -0.5*(fPadWidth + vertWidth);
270 G4double z = -(fVertexLength+fAbsLength);
272 G4Box* solidVD =
new G4Box(
"VertDet",x1,fEcalWidth*0.5+gap,fPadLength*0.5);
277 G4Box* solidV =
new G4Box(
"Vert",fPadWidth*0.5,fEcalWidth*0.5,fPadLength*0.5);
280 for (i=0; i<3; i++) {
287 for (j=0; j<npads; j++) {
295 <<
" of 3 layers of Si of " <<
G4BestUnit(fPadLength,
"Length")
296 <<
" npads= " << npads
343 if (pttoMaterial && pttoMaterial != fCalMaterial) {
344 fCalMaterial = pttoMaterial;
359 if (pttoMaterial && pttoMaterial != fAbsMaterial) {
360 fAbsMaterial = pttoMaterial;