73 : fSolidWorld(0), fLogicWorld(0), fPhysiWorld(0),
74 fSolidTarget(0), fLogicTarget(0), fPhysiTarget(0),
75 fSolidDegrader(0), fLogicDegrader(0), fPhysiDegrader(0),
76 fSolidCaptureMgnt(0), fLogicCaptureMgnt(0), fPhysiCaptureMgnt(0),
77 fSolidTransferMgnt(0), fLogicTransferMgnt(0), fPhysiTransferMgnt(0),
78 fWorldMaterial(0), fTargetMaterial(0), fDegraderMaterial(0),
79 fFocusSolenoid(0), fSimpleSolenoid(0)
84 fTargetRadius = 0.4*
cm;
85 fTargetThickness = 16.0*
cm;
89 fDegraderRadius = 30.0*
cm;
90 fDegraderThickness = 0.1*
cm;
92 fCaptureMgntRadius = 0.6*
m;
93 fCaptureMgntLength = 4.0*
m;
98 fTransferMgntRadius = 0.3*
m;
99 fTransferMgntLength = 15.0*
m;
103 fDegraderPos = -fTransferMgntLength/2. + fDegraderThickness/2.;
115 delete fDetectorMessenger;
131 void F04DetectorConstruction::DefineMaterials()
137 fWorldMaterial = fMaterials->
GetMaterial(
"G4_AIR");
138 fDegraderMaterial = fMaterials->
GetMaterial(
"G4_Pb");
146 fSolidWorld =
new G4Tubs(
"World",
163 fSolidCaptureMgnt =
new G4Tubs(
"CaptureMgnt",
183 fSolidTransferMgnt =
new G4Tubs(
"TransferMgnt",
236 fSolidTarget =
new G4Tubs(
"Target",
272 fSolidDegrader =
new G4Tubs(
"Degrader",
295 if (fFocusSolenoid)
delete fFocusSolenoid;
297 fLogicCaptureMgnt,captureMgntCenter);
298 fFocusSolenoid -> SetHalf(
true);
303 if (fSimpleSolenoid)
delete fSimpleSolenoid;
305 fLogicTransferMgnt,transferMgntCenter);
322 if (pttoMaterial != fWorldMaterial) {
323 if ( pttoMaterial ) {
324 fWorldMaterial = pttoMaterial;
326 G4cout <<
"\n--> WARNING from SetWorldMaterial : "
327 << materialChoice <<
" not found" <<
G4endl;
339 if (pttoMaterial != fTargetMaterial) {
340 if ( pttoMaterial ) {
341 fTargetMaterial = pttoMaterial;
343 G4cout <<
"\n--> WARNING from SetTargetMaterial : "
344 << materialChoice <<
" not found" <<
G4endl;
357 if (pttoMaterial != fDegraderMaterial) {
358 if ( pttoMaterial ) {
359 fDegraderMaterial = pttoMaterial;
361 G4cout <<
"\n--> WARNING from SetDegraderMaterial : "
362 << materialChoice <<
" not found" <<
G4endl;
385 fCaptureMgntRadius = val;
392 fCaptureMgntLength = val;
399 fCaptureMgntB1 = val;
406 fCaptureMgntB2 = val;
413 fTransferMgntRadius = val;
420 fTransferMgntLength = val;
427 fTransferMgntB = val;
434 fTransferMgntPos = val;
448 fTargetThickness = val;
469 fDegraderRadius = val;
476 fDegraderThickness = val;
490 if (!fPhysiWorld)
return;
520 unsigned int place = 0;
522 while (place < rotation.size()) {
526 G4String current=rotation.substr(place+1);
527 angle = strtod(current.c_str(),&
p) *
deg;
529 if (!p || (*p !=
',' && *p !=
'\0')) {
530 G4cerr <<
"Invalid rotation specification: " <<
531 rotation.c_str() <<
G4endl;
538 switch(rotation.substr(place,1).c_str()[0]) {
549 G4cerr <<
" Invalid rotation specification: "
554 rot = thisRotation * rot;
555 place = rotation.find(
',',place);
556 if (place > rotation.size())
break;