00001 #include "BDSParallelWorld.hh" 00002 #include "G4LogicalVolume.hh" 00003 #include "G4VPhysicalVolume.hh" 00004 #include "G4Box.hh" 00005 #include "G4PVPlacement.hh" 00006 #include "G4PSCellFlux.hh" 00007 00008 BDSParallelWorld::BDSParallelWorld(G4String worldName) 00009 :G4VUserParallelWorld(worldName) 00010 {;} 00011 00012 BDSParallelWorld::~BDSParallelWorld(){ 00013 delete _scoringMesh; 00014 delete _primitiveScorer; 00015 } 00016 00017 void BDSParallelWorld::Construct() 00018 { 00019 G4VPhysicalVolume* ghostWorld = GetWorld(); 00020 G4LogicalVolume* worldLogical = ghostWorld->GetLogicalVolume(); 00021 00022 //Scoring mesh 00023 _scoringMesh = new G4ScoringBox("scoringMesh"); 00024 _scoringMesh->Construct(ghostWorld); 00025 G4int nSegments[]={100, 100, 100}; 00026 G4Box* worldBox = (G4Box*)worldLogical->GetSolid(); 00027 G4double x = worldBox->GetXHalfLength(); 00028 G4double y = worldBox->GetYHalfLength(); 00029 G4double z = worldBox->GetZHalfLength(); 00030 G4double size[]={x,y,z}; 00031 00032 _scoringMesh->SetNumberOfSegments(nSegments); 00033 _scoringMesh->SetSize(size); 00034 _primitiveScorer=(new G4PSCellFlux("cellFluxScorer")); 00035 _scoringMesh->SetPrimitiveScorer(_primitiveScorer); 00036 _scoringMesh->Activate(); 00037 } 00038 00039 G4ScoringBox* BDSParallelWorld::GetScoringMesh(){ 00040 return _scoringMesh; 00041 }