39 #include "DetectorConstruction.hh"
41 #include "DetectorMessenger.hh"
58 #ifdef G4MULTITHREADED
109 G4bool fromIsotopes =
false;
127 G4Exception(
"DetectorConstruction::CheckMaterials",
128 "DEFAULT_MATERIAL_NOT_INIT_1",
130 "Default material not initialized.");
133 G4Exception(
"DetectorConstruction::CheckMaterials",
134 "WATER_MATERIAL_NOT_INIT",
136 "Water material not initialized.");
148 G4Exception(
"DetectorConstruction::ConstructWorld",
149 "DEFAULT_MATERIAL_NOT_INIT_2",
151 "Default material not initialized.");
159 worldSize/2, worldSize/2, worldSize/2);
191 unsigned short int option)
216 unsigned short int isDNA;
299 Molecule *moleculeListTemp,
double atomSizeFactor)
368 int nbAtomH=0, nbAtomC=0, nbAtomO=0, nbAtomN=0, nbAtomS=0, nbAtomP=0;
372 while (moleculeListTemp)
374 residueListTemp = moleculeListTemp->
GetFirst();
378 while (residueListTemp)
380 AtomTemp=residueListTemp->
GetFirst();
384 int upTo=residueListTemp->
fNbAtom;
385 for (
int i=0 ; i < (upTo + startFrom) ; i++)
388 if (AtomTemp->
fElement.compare(
"H") == 0)
393 AtomTemp->
fY*1*angstrom,
394 AtomTemp->
fZ*1*angstrom),
402 else if (AtomTemp->
fElement.compare(
"C") == 0)
407 AtomTemp->
fY*1*angstrom,
408 AtomTemp->
fZ*1*angstrom),
416 else if (AtomTemp->
fElement.compare(
"O") == 0)
421 AtomTemp->
fY*1*angstrom,
422 AtomTemp->
fZ*1*angstrom),
430 else if (AtomTemp->
fElement.compare(
"N") == 0)
435 AtomTemp->
fY*1*angstrom,
436 AtomTemp->
fZ*1*angstrom),
444 else if (AtomTemp->
fElement.compare(
"S") == 0)
449 AtomTemp->
fY*1*angstrom,
450 AtomTemp->
fZ*1*angstrom),
458 else if (AtomTemp->
fElement.compare(
"P") == 0)
463 AtomTemp->
fY*1*angstrom,
464 AtomTemp->
fZ*1*angstrom),
477 AtomTemp->
fY*1*angstrom,
478 AtomTemp->
fZ*1*angstrom),
492 residueListTemp=residueListTemp->
GetNext();
495 moleculeListTemp=moleculeListTemp->
GetNext();
498 G4cout <<
"**************** atomisticView(...) ****************" <<
G4endl;
506 G4cout <<
"Number of Phosphorus = " << nbAtomP <<
G4endl;
507 G4cout <<
"Number of undifined atoms =" << nbAtomX <<G4endl<<
G4endl;
526 while (barycenterListTemp)
547 barycenterListTemp=barycenterListTemp->
GetNext();
576 while (barycenterListTemp)
633 tubS1_ZZ =
new G4Tubs(
"Cylinder",
658 G4double llUll=std::sqrt(Ux*Ux+Uy*Uy+Uz*Uz);
686 tubS2_ZZ =
new G4Tubs(
"Cylinder2",
711 llUll=std::sqrt(Ux*Ux+Uy*Uy+Uz*Uz);
718 theta_euler = direction.
theta();
719 phi_euler = direction.
phi();
741 barycenterListTemp=barycenterListTemp->
GetNext();
763 =
new G4Box(
"Bounding", dX*1*
angstrom, dY*1*angstrom, dZ*1*angstrom);
793 #ifdef G4MULTITHREADED
811 G4cout<<
"Build only world volume and bounding volume"
813 #ifdef G4MULTITHREADED
833 #ifdef G4MULTITHREADED
853 #ifdef G4MULTITHREADED
873 #ifdef G4MULTITHREADED
893 #ifdef G4MULTITHREADED
913 #ifdef G4MULTITHREADED
933 #ifdef G4MULTITHREADED