Download presentation
Presentation is loading. Please wait.
Published byPriscilla Norton Modified over 8 years ago
1
Makoto Asai
2
Parallel layered mass geometry Other minor improvement G4Exception
3
In the past, material is considered only if it appears in the mass (tracking) world. The user might define parallel world(s) for artificial purposes, i.e. shower parameterization envelopes, readout/scoring geometry, dedicated stepping action. Now, the user may define a material in parallel world(s) which is also seen by physics processes.
4
Mass worldParallel world - 1 Parallel world - 2Tracking time
5
A step is limited on the boundary of any volume of any world. The step (and all physics processes) sees the material defined in the top-most later. If the top-most layer has null pointer to material, material in next layer is used.
6
int main(int argc,char** argv) { G4String paraWorldName = "ParallelWorld"; Tst1DetectorConstruction* realWorld = new Tst1DetectorConstruction; Tst1ParallelWorldConstruction* parallelWorld = new Tst1ParallelWorldConstruction(paraWorldName); realWorld->RegisterParallelWorld(parallelWorld); runManager->SetUserInitialization(realWorld); // G4VUserPhysicsList* physics = newTst1PhysicsList(paraWorldName); runManager->SetUserInitialization(physics);
7
void Tst1ParallelWorldConstruction::Construct() { // World G4VPhysicalVolume* ghostWorld = GetWorld (); G4LogicalVolume* worldLogical = ghostWorld->GetLogicalVolume(); G4Material* water = G4Material::GetMaterial("Water"); // parallel world placement box G4VSolid* paraBox = new G4Box("paraBox",5.0*cm,30.0*cm,5.0*cm); G4LogicalVolume* paraBoxLogical = new G4LogicalVolume(paraBox, water,"paraBox"); new G4PVPlacement(0,G4ThreeVector(-25.0*cm,0.,0.),paraBoxLogical, "paraBox",worldLogical,false,0);
8
#include "G4ParallelWorldProcess.hh" void Tst1PhysicsList::AddParallelWorldProcess() { G4ParallelWorldProcess* theParallelWorldProcess = new G4ParallelWorldProcess("paraWorldProc"); theParallelWorldProcess->SetParallelWorld(pWorldName); theParallelWorldProcess-> SetLayeredMaterialFlag(); theParticleIterator->reset(); while( (*theParticleIterator)() ){ G4ParticleDefinition* particle = theParticleIterator->value(); if(particle!=G4ChargedGeantino::Definition()) { G4ProcessManager* pmanager = particle->GetProcessManager(); pmanager->AddProcess(theParallelWorldProcess); if(theParallelWorldProcess->IsAtRestRequired(particle) { pmanager->SetProcessOrderingToLast(theParallelWorldProcess, idxAtRest); } pmanager->SetProcessOrdering(theParallelWorldProcess, idxAlongStep, 1); pmanager->SetProcessOrderingToLast(theParallelWorldProcess, idxPostStep); }
9
Replacement of G4ParallelWorldScoringProcess If SetLayeredMaterialFlag() is not set, it behaves as G4ParallelWorldScoringProcess. For each parallel world, dedicated object of G4ParallelWorldProcess is required. It is a process. Thus it may be assigned to some selected types of particles.
10
Material-cuts-couple (MCC) is examined for all worlds. At the tracking time, material pointer and MCC pointer in G4StepPoint are changed to those for top-most layer before invoking GPIL() of each physics process.
11
Brachytherapy treatment for prostate cancer. Manually implemented DICOM
12
Firstly seeds were placed in the empty parallel world DICOM
13
Seeds in the parallel world were pencapsulated in empty boxes for faster navigation DICOM
14
Two major use-cases Concept of “many” in Geant3 Different level of complexity for different particle types In HENP Rapid prototyping for complicated detector Sampling calorimeter Detector partially dipped in liquid In space Satellite structure and loaded aparatus In medicine Treatment head overlapping to DICOM data
15
Computing performance of cylindrical scoring mesh has been improved significantly (~30%) by fixing the use of G4Division for G4Tubs.
16
Based on the requests from LHC experiments, and on the agreed collaboration work plan for 2011, we will unify the format of error / warning messages made by G4Exception. Obsolete: G4Exception(const char* message)
17
G4Exception(const char* originOfException, const char* exceptionCode, G4ExceptionSeverity severity, const char* comments) G4Exception(const char* originOfException, const char* exceptionCode, G4ExceptionSeverity severity, G4ExceptionDescription& description) G4Exception(const char* originOfException, const char* exceptionCode, G4ExceptionSeverity severity, G4ExceptionDescription& description, const char* comments)
18
originOfException: class::method name where this exception is issued. e.g. G4RunManager::BeamOn() exceptionCode: Error code which is unique to this error. Error code should be a combination of string and ID number. String can be a (sub-)category name or (physics) model name. e.g. Run0001, Bertini0001 -- It must not be like "FileNotFound". severity enum G4ExceptionSeverity { FatalException, FatalErrorInArgument, RunMustBeAborted, EventMustBeAborted, JustWarning }; G4ExceptionDescription: Current G4cout or G4cerr should be replaced by a local object of G4ExceptionDescription, which supports ostream operator (<<), setw(), G4endl and even G4BestUnit().
19
quick check for geant4-09-04-ref-08 (maybe not exactly) comment out old G4Exception in globals.hh The below table shows “ # of errors in the own category (# of errors)” analysis0 digits_hits0 (14) error_propagation0 (5) event2 (15) externals0 g3tog40 (5) geometry32 global4 graphics_reps1 intercoms1 interfaces2 materials5 parameterisations0 (5) particles4 persistency12 (19) physics_lists0 (15) processes107 (379) readout0 (22) run0 (2) track0 (5) tracking0 (5) visualization17 (87)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.