68 fZSliceHeaderMerged(0),
135 z = 6.0, a = 12.011 *
g/
mole );
138 z = 1.0, a = 1.008 *
g/
mole );
141 z = 7.0, a = 14.007 *
g/
mole );
144 z = 8.0, a = 16.00 *
g/
mole );
147 z= 11.0, a = 22.98977*
g/
mole );
150 z = 16.0,a = 32.065*
g/
mole );
153 z = 17.0, a = 35.453*
g/
mole );
156 z = 19.0, a = 30.0983*
g/
mole );
159 z = 30.0, a = 30.973976*
g/
mole );
162 z = 26, a = 56.845*
g/
mole );
165 z = 12.0, a = 24.3050*
g/
mole );
168 z = 20.0, a = 40.078*
g/
mole );
171 G4int numberofElements;
176 numberofElements = 2 );
182 density = 0.217*
g/
cm3,
183 numberofElements = 9);
196 density = 0.508*
g/
cm3,
197 numberofElements = 9 );
210 density = 0.967*
g/
cm3,
211 numberofElements = 7);
222 density = 0.990*
g/
cm3,
223 numberofElements = 8 );
236 numberofElements = 2 );
242 density = 1.061*
g/
cm3,
243 numberofElements = 9 );
256 density = 1.071*
g/
cm3,
257 numberofElements = 9);
270 density = 1.159*
g/
cm3,
271 numberofElements = 12 );
287 density = 1.575*
g/
cm3,
288 numberofElements = 11 );
321 std::ifstream finDF(dataFile.c_str());
323 if(finDF.good() != 1 ) {
324 G4String descript =
"Problem reading data file: "+dataFile;
325 G4Exception(
" DicomDetectorConstruction::ReadPhantomData",
332 finDF >> compression;
353 G4cout <<
" DicomDetectorConstruction::ReadPhantomDataFile opening file " << fname <<
G4endl;
355 std::ifstream fin(fname.c_str(), std::ios_base::in);
356 if( !fin.is_open() ) {
357 G4Exception(
"DicomDetectorConstruction::ReadPhantomDataFile",
360 G4String(
"File not found " + fname ).c_str());
363 char* part = getenv(
"DICOM_CHANGE_MATERIAL_DENSITY" );
366 if( densityDiff != -1. ) {
395 for(
G4int ii = 0; ii < nVoxels; ii++, voxelCopyNo++ ){
406 for(
G4int ii = 0; ii < nVoxels; ii++, voxelCopyNo++ ){
415 float densityBin = 0.;
416 if( densityDiff != -1.) {
426 if(
fMaterials[im]->GetName() == newMateName ) {
435 if( densityDiff != -1.) {
437 densityBin, newMateName ) );
442 G4Exception(
"DicomDetectorConstruction::ReadPhantomDataFile",
445 "Wrong index in material");
473 for(
G4int ii = 0; ii < nelem; ii++ ){
516 G4cout <<
" placing voxel container volume at " << posCentreVoxels <<
G4endl;
571 G4cout <<
"\n\n\n\n\t CONSTRUCT SD AND FIELD \n\n\n" <<
G4endl;
579 G4String concreteSDname =
"phantomSD";
580 std::vector<G4String> scorer_names;
581 scorer_names.push_back(concreteSDname);
595 for(std::set<G4LogicalVolume*>::iterator ite =
scorers.begin(); ite !=
scorers.end(); ++ite) {
G4bool RegisterPrimitive(G4VPrimitiveScorer *)
void SetScorer(G4LogicalVolume *voxel_logic)
Definition of the DicomDetectorConstruction class.
void MergeZSliceHeaders()
CLHEP::Hep3Vector G4ThreeVector
Definition of the DicomRunAction class.
G4LogicalVolume * fWorld_logic
const G4String & GetName() const
std::vector< DicomPhantomZSliceHeader * > fZSliceHeaders
std::set< G4LogicalVolume * > scorers
static G4String ConvertToString(G4bool boolVal)
virtual G4VPhysicalVolume * Construct()
const G4Element * GetElement(G4int iel) const
Definition of the DicomRun class.
DicomPhantomZSliceHeader * fZSliceHeaderMerged
G4VPhysicalVolume * fWorld_phys
G4LogicalVolume * fContainer_logic
void ConstructPhantomContainer()
void InitialisationOfMaterials()
G4Material * BuildMaterialWithChangingDensity(const G4Material *origMate, float density, G4String newMateName)
G4GLOB_DLL std::ostream G4cout
virtual void ConstructSDandField()
static G4double ConvertToDouble(const char *st)
void SetSensitiveDetector(const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4VPhysicalVolume * fContainer_phys
void AddElement(G4Element *element, G4int nAtoms)
size_t GetNumberOfElements() const
std::vector< G4Material * > fMaterials
std::vector< G4Material * > fOriginalMaterials
void ReadPhantomDataFile(const G4String &fname)
const G4double * GetFractionVector() const
virtual void ConstructPhantom()=0
DicomDetectorConstruction()
~DicomDetectorConstruction()
G4GLOB_DLL std::ostream G4cerr
std::map< G4int, G4double > fDensityDiffs