266 std::map<G4int, std::pair<G4double,G4double> > densiMinMax;
267 std::map<G4int, std::pair<G4double,G4double> >::iterator mpite;
274 char*
part = getenv(
"DICOM_CHANGE_MATERIAL_DENSITY" );
277 std::map<G4int,G4double> densityDiffs;
278 if( densityDiff != -1. ) {
280 densityDiffs[ii] = densityDiff;
293 std::map< std::pair<G4Material*,G4int>,
matInfo* > newMateDens;
296 size_t ifxmin1, ifxmax1;
307 if( ix >=
G4int(ifxmin1) && ix <=
G4int(ifxmax1) ) {
311 mpite = densiMinMax.find(
fMateIDs[copyNo] );
312 if( dens1 < (*mpite).second.first ) (*mpite).second.first = dens1;
313 if( dens1 > (*mpite).second.second ) (*mpite).second.second = dens1;
327 G4int densityBin = 0;
331 if( densityDiff != -1.) {
332 densityBin = (
G4int(dens1/densityDiffs[mateID]));
338 std::pair<G4Material*,G4int> matdens(mate, densityBin );
340 std::map< std::pair<G4Material*,G4int>,
matInfo* >::iterator mppite
341 = newMateDens.find( matdens );
342 if( mppite != newMateDens.end() ){
343 matInfo* mi = (*mppite).second;
353 mi->
id = newMateDens.size()+1;
354 newMateDens[matdens] = mi;
370 std::vector<G4Material*>::const_iterator mimite;
377 std::map< std::pair<G4Material*,G4int>,
matInfo* >::iterator mppite;
378 for( mppite= newMateDens.begin(); mppite != newMateDens.end(); mppite++ ){
379 G4double averdens = (*mppite).second->
sumdens/(*mppite).second->nvoxels;
381 G4cout <<
"GmReadPhantomGeometry::ReadVoxelDensities AVER DENS " 382 << averdens <<
" -> " << saverdens <<
" -> " 383 <<
G4int(1000*averdens) <<
" " <<
G4int(1000*averdens)/1000 <<
" " 386 G4cout <<
"GmReadPhantomGeometry::ReadVoxelDensities AVER DENS " 387 << averdens <<
" -> " << saverdens <<
" -> " 389 <<(*mppite).second->nvoxels <<
G4endl;
390 G4String mateName = ((*mppite).first).first->GetName() +
"_" +
393 (*mppite).first.first,
394 averdens, mateName ) );
std::vector< G4Material * > fPhantomMaterials
std::map< G4int, std::map< G4int, G4int > > fFilledMins
static G4String ConvertToString(G4bool boolVal)
G4double GetDensity() const
G4Material * BuildMaterialWithChangingDensity(const G4Material *origMate, float density, G4String newMateName)
G4GLOB_DLL std::ostream G4cout
static G4double ConvertToDouble(const char *st)
std::map< G4int, std::map< G4int, G4int > > fFilledMaxs
std::vector< G4Material * > fMaterials
std::vector< G4Material * > fOriginalMaterials
const G4String & GetName() const