Taming Geant4 Verbosity ========================= FIXED Issue : g4 geometry cleanup WARNINGs -------------------------------------------- :: WARNING - Attempt to delete the physical volume store while geometry closed ! WARNING - Attempt to delete the logical volume store while geometry closed ! WARNING - Attempt to delete the solid store while geometry closed ! WARNING - Attempt to delete the region store while geometry closed ! Process 93045 exited with status = 0 (0x00000000) :: simon:cfg4 blyth$ g4-cc "Attempt" | grep delete /usr/local/env/g4/geant4.10.02/source/geometry/management/src/G4PhysicalVolumeStore.cc: G4cout << "WARNING - Attempt to delete the physical volume store" /usr/local/env/g4/geant4.10.02/source/geometry/management/src/G4LogicalVolumeStore.cc: G4cout << "WARNING - Attempt to delete the logical volume store" /usr/local/env/g4/geant4.10.02/source/geometry/management/src/G4SolidStore.cc: G4cout << "WARNING - Attempt to delete the solid store" /usr/local/env/g4/geant4.10.02/source/geometry/management/src/G4RegionStore.cc: G4cout << "WARNING - Attempt to delete the region store" (lldb) b "G4PhysicalVolumeStore::Clean()" Huh looks like system is calling dtors, i didnt think it was so polite:: (lldb) bt * thread #1: tid = 0x66fc61, 0x00000001061055c4 libG4geometry.dylib`G4PhysicalVolumeStore::Clean() + 4 at G4PhysicalVolumeStore.cc:78, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 * frame #0: 0x00000001061055c4 libG4geometry.dylib`G4PhysicalVolumeStore::Clean() + 4 at G4PhysicalVolumeStore.cc:78 frame #1: 0x0000000106105572 libG4geometry.dylib`G4PhysicalVolumeStore::~G4PhysicalVolumeStore(this=0x00000001063e31a8) + 34 at G4PhysicalVolumeStore.cc:67 frame #2: 0x00000001061059f5 libG4geometry.dylib`G4PhysicalVolumeStore::~G4PhysicalVolumeStore(this=0x00000001063e31a8) + 21 at G4PhysicalVolumeStore.cc:66 frame #3: 0x00007fff8cdf07a1 libsystem_c.dylib`__cxa_finalize + 177 frame #4: 0x00007fff8cdf0a4c libsystem_c.dylib`exit + 22 frame #5: 0x00007fff89e75604 libdyld.dylib`start + 8 :: 74 void G4PhysicalVolumeStore::Clean() 75 { 76 // Do nothing if geometry is closed 77 // 78 if (G4GeometryManager::GetInstance()->IsGeometryClosed()) 79 { 80 G4cout << "WARNING - Attempt to delete the physical volume store" 81 << " while geometry closed !" << G4endl; 82 return; 83 } Open geometry just before exitting:: 341 void CG4::cleanup() 342 { 343 LOG(info) << "CG4::cleanup opening geometry" ; 344 G4GeometryManager::GetInstance()->OpenGeometry(); 345 } FIXED Issue : g4 process verbosity control ---------------------------------------------- :: (lldb) b "G4VProcess::SetVerboseLevel(int)" See OpNovicePhysicsList::setProcessVerbosity called after run init. Issue : g4 couples table noise, comment call to DumpCutValuesTable() ------------------------------------------------------------------------ :: 371 void G4ProductionCutsTable::DumpCouples() const 372 { 373 G4cout << G4endl; 374 G4cout << "========= Table of registered couples ==============================" 375 << G4endl; 409 void OpNovicePhysicsList::SetCuts() 410 { 411 // " G4VUserPhysicsList::SetCutsWithDefault" method sets 412 // the default cut value for all particle types 413 // 414 SetCutsWithDefault(); 415 416 //if (verboseLevel>0) DumpCutValuesTable(); 417 // (lldb) bt * thread #1: tid = 0x643cf9, 0x0000000102f73d73 libG4processes.dylib`G4ProductionCutsTable::DumpCouples() const [inlined] std::__1::basic_ostream >::operator<<(this=0x000000010681b1f8, __pf=0x0000000102f2b240)(std::__1::basic_ostream >&)) at ostream:310, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 * frame #0: 0x0000000102f73d73 libG4processes.dylib`G4ProductionCutsTable::DumpCouples() const [inlined] std::__1::basic_ostream >::operator<<(this=0x000000010681b1f8, __pf=0x0000000102f2b240)(std::__1::basic_ostream >&)) at ostream:310 frame #1: 0x0000000102f73d73 libG4processes.dylib`G4ProductionCutsTable::DumpCouples(this=0x0000000105054b00) const + 67 at G4ProductionCutsTable.cc:373 frame #2: 0x0000000102cf5d58 libG4run.dylib`G4VUserPhysicsList::DumpCutValuesTableIfRequested(this=0x00000001090dd5c0) + 72 at G4VUserPhysicsList.cc:823 frame #3: 0x0000000102cd18b6 libG4run.dylib`G4RunManagerKernel::BuildPhysicsTables(this=0x0000000108721f60, fakeRun=false) + 198 at G4RunManagerKernel.cc:714 frame #4: 0x0000000102cd1367 libG4run.dylib`G4RunManagerKernel::RunInitialization(this=0x0000000108721f60, fakeRun=false) + 279 at G4RunManagerKernel.cc:609 frame #5: 0x0000000102cadbb8 libG4run.dylib`G4RunManager::RunInitialization(this=0x0000000108722e00) + 56 at G4RunManager.cc:313 frame #6: 0x0000000102cad8b2 libG4run.dylib`G4RunManager::BeamOn(this=0x0000000108722e00, n_event=1, macroFile=0x0000000000000000, n_select=-1) + 146 at G4RunManager.cc:272 frame #7: 0x000000010153f420 libcfg4.dylib`CG4::propagate(this=0x0000000108721520) + 752 at CG4.cc:163 frame #8: 0x000000010000d5a2 CG4Test`main(argc=13, argv=0x00007fff5fbfdcb8) + 210 at CG4Test.cc:18 frame #9: 0x00007fff89e755fd libdyld.dylib`start + 1 frame #10: 0x00007fff89e755fd libdyld.dylib`start + 1 (lldb) f 2 frame #2: 0x0000000102cf5d58 libG4run.dylib`G4VUserPhysicsList::DumpCutValuesTableIfRequested(this=0x00000001090dd5c0) + 72 at G4VUserPhysicsList.cc:823 820 void G4VUserPhysicsList::DumpCutValuesTableIfRequested() 821 { 822 if(fDisplayThreshold==0) return; -> 823 G4ProductionCutsTable::GetProductionCutsTable()->DumpCouples(); 824 fDisplayThreshold = 0; 825 } 826 (lldb) Issue : g4 init is slow, how to cache the physics tables ? ------------------------------------------------------------- See ggv-;ggv-cache * succeed to get faster start (about 9 seconds from beamOn to 1st step), but many tables fail to be stored/retrieved :: # needs to be 3 to see the fails... /run/particle/verbose 3 G4VUserPhysicsList::BuildPhysicsTable Retrieve Physics Table for e- G4VUserPhysicsList::RetrievePhysicsTable Fail to retrieve Physics Table for Transportation Calculate Physics Table for e- G4VUserPhysicsList::RetrievePhysicsTable Fail to retrieve Physics Table for eBrem Calculate Physics Table for e- G4VUserPhysicsList::RetrievePhysicsTable Fail to retrieve Physics Table for Scintillation Calculate Physics Table for e- Issue : g4 Em noise control ----------------------------- Magic incantation, to setup construction params of Em processes:: G4EmParameters* empar = G4EmParameters::Instance() ; empar->SetVerbose(0); empar->SetWorkerVerbose(0); See my OpNovicePhysicsList/setupEmVerbosity Issue : g4 noise control -------------------------- :: delta:geant4.10.02 blyth$ find . -name 'G4VEmProcess.hh' ./source/processes/electromagnetic/utils/include/G4VEmProcess.hh delta:geant4.10.02 blyth$ find . -name '*.hh' -exec grep -H public\ G4VEmProcess {} \; ... ./source/processes/electromagnetic/standard/include/G4ComptonScattering.hh:class G4ComptonScattering : public G4VEmProcess ./source/processes/electromagnetic/standard/include/G4CoulombScattering.hh:class G4CoulombScattering : public G4VEmProcess ./source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh:class G4eplusAnnihilation : public G4VEmProcess ./source/processes/electromagnetic/standard/include/G4GammaConversion.hh:class G4GammaConversion : public G4VEmProcess ./source/processes/electromagnetic/standard/include/G4NuclearStopping.hh:class G4NuclearStopping : public G4VEmProcess ./source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh:class G4PhotoElectricEffect : public G4VEmProcess delta:geant4.10.02 blyth$ find . -name '*.cc' -exec grep -H PrintInfoProcess {} \; ./source/processes/electromagnetic/utils/src/G4VEmProcess.cc: PrintInfoProcess(part); ./source/processes/electromagnetic/utils/src/G4VEmProcess.cc:void G4VEmProcess::PrintInfoProcess(const G4ParticleDefinition& part) 523 void G4VEmProcess::PrintInfoProcess(const G4ParticleDefinition& part) 524 { 525 if(verboseLevel > 0) { 526 G4cout << std::setprecision(6); 527 G4cout << G4endl << GetProcessName() << ": for " 528 << part.GetParticleName(); 529 if(integral) { G4cout << ", integral: 1 "; } 530 if(applyCuts) { G4cout << ", applyCuts: 1 "; } 531 G4cout << " SubType= " << GetProcessSubType();; 532 if(biasFactor != 1.0) { G4cout << " BiasingFactor= " << biasFactor; } 533 G4cout << " BuildTable= " << buildLambdaTable; 534 G4cout << G4endl; 535 if(buildLambdaTable) { 536 if(particle == &part) { (lldb) b "G4VEmProcess::PrintInfoProcess(G4ParticleDefinition const&)" Notably this only happens during first event at BeamOn during RunInitialization:: (lldb) bt * thread #1: tid = 0x637b46, 0x0000000103576760 libG4processes.dylib`G4VEmProcess::PrintInfoProcess(this=0x000000010f4e55f0, part=0x000000010a2424c0) + 32 at G4VEmProcess.cc:525, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 * frame #0: 0x0000000103576760 libG4processes.dylib`G4VEmProcess::PrintInfoProcess(this=0x000000010f4e55f0, part=0x000000010a2424c0) + 32 at G4VEmProcess.cc:525 frame #1: 0x0000000103575713 libG4processes.dylib`G4VEmProcess::BuildPhysicsTable(this=0x000000010f4e55f0, part=0x000000010a2424c0) + 1955 at G4VEmProcess.cc:415 frame #2: 0x0000000102cf0976 libG4run.dylib`G4VUserPhysicsList::BuildPhysicsTable(this=0x000000010a23c190, particle=0x000000010a2424c0) + 1974 at G4VUserPhysicsList.cc:689 frame #3: 0x0000000102cefb5a libG4run.dylib`G4VUserPhysicsList::BuildPhysicsTable(this=0x000000010a23c190) + 682 at G4VUserPhysicsList.cc:568 frame #4: 0x0000000102ccc83c libG4run.dylib`G4RunManagerKernel::BuildPhysicsTables(this=0x000000010a00a690, fakeRun=false) + 76 at G4RunManagerKernel.cc:707 frame #5: 0x0000000102ccc367 libG4run.dylib`G4RunManagerKernel::RunInitialization(this=0x000000010a00a690, fakeRun=false) + 279 at G4RunManagerKernel.cc:609 frame #6: 0x0000000102ca8bb8 libG4run.dylib`G4RunManager::RunInitialization(this=0x000000010a009bf0) + 56 at G4RunManager.cc:313 frame #7: 0x0000000102ca88b2 libG4run.dylib`G4RunManager::BeamOn(this=0x000000010a009bf0, n_event=1, macroFile=0x0000000000000000, n_select=-1) + 146 at G4RunManager.cc:272 frame #8: 0x000000010153f770 libcfg4.dylib`CG4::propagate(this=0x000000010a0083c0) + 752 at CG4.cc:154 frame #9: 0x000000010000d5a2 CG4Test`main(argc=13, argv=0x00007fff5fbfde90) + 210 at CG4Test.cc:18 frame #10: 0x00007fff89e755fd libdyld.dylib`start + 1 (lldb) At what point are the Em processes hooked up ?:: (lldb) b "G4GammaConversion::G4GammaConversion(G4String const&, G4ProcessType)" (lldb) p processName (const G4String) $0 = (std::__1::string = "conv") (lldb) bt * thread #1: tid = 0x63b2c2, 0x0000000103479c07 libG4processes.dylib`G4GammaConversion::G4GammaConversion(this=0x000000010da46120, processName=0x00007fff5fbfd998, type=fElectromagnetic) + 23 at G4GammaConversion.cc:90, queue = 'com.apple.main-thread', stop reason = breakpoint 1.2 * frame #0: 0x0000000103479c07 libG4processes.dylib`G4GammaConversion::G4GammaConversion(this=0x000000010da46120, processName=0x00007fff5fbfd998, type=fElectromagnetic) + 23 at G4GammaConversion.cc:90 frame #1: 0x00000001015689f4 libcfg4.dylib`OpNovicePhysicsList::ConstructEM(this=0x0000000109224420) + 340 at OpNovicePhysicsList.cc:201 frame #2: 0x00000001015686d1 libcfg4.dylib`OpNovicePhysicsList::ConstructProcess(this=0x0000000109224420) + 49 at OpNovicePhysicsList.cc:110 frame #3: 0x0000000102ccdfb2 libG4run.dylib`G4VUserPhysicsList::Construct(this=0x0000000109224420) + 162 at G4VUserPhysicsList.hh:416 frame #4: 0x0000000102ccbb73 libG4run.dylib`G4RunManagerKernel::InitializePhysics(this=0x0000000109001200) + 291 at G4RunManagerKernel.cc:535 frame #5: 0x0000000102cab6cf libG4run.dylib`G4RunManager::InitializePhysics(this=0x0000000109001090) + 47 at G4RunManager.cc:593 frame #6: 0x0000000102cab57a libG4run.dylib`G4RunManager::Initialize(this=0x0000000109001090) + 186 at G4RunManager.cc:566 frame #7: 0x000000010153ebf1 libcfg4.dylib`CG4::initialize(this=0x0000000108721520) + 545 at CG4.cc:110 frame #8: 0x000000010000d589 CG4Test`main(argc=13, argv=0x00007fff5fbfde68) + 185 at CG4Test.cc:14 frame #9: 0x00007fff89e755fd libdyld.dylib`start + 1 frame #10: 0x00007fff89e755fd libdyld.dylib`start + 1 (lldb) (lldb) b "G4VProcess::SetVerboseLevel(int)" :: (lldb) bt * thread #1: tid = 0x640010, 0x0000000103241b8f libG4processes.dylib`G4VProcess::SetVerboseLevel(this=0x000000010d8e6690, value=1) + 15 at G4VProcess.hh:439, queue = 'com.apple.main-thread', stop reason = breakpoint 1.3 * frame #0: 0x0000000103241b8f libG4processes.dylib`G4VProcess::SetVerboseLevel(this=0x000000010d8e6690, value=1) + 15 at G4VProcess.hh:439 frame #1: 0x000000010358fed2 libG4processes.dylib`G4VMultipleScattering::PreparePhysicsTable(this=0x000000010d8e6690, part=0x0000000109055170) + 1810 at G4VMultipleScattering.cc:252 frame #2: 0x0000000102cf5159 libG4run.dylib`G4VUserPhysicsList::PreparePhysicsTable(this=0x0000000109047270, particle=0x0000000109055170) + 585 at G4VUserPhysicsList.cc:755 frame #3: 0x0000000102cf4958 libG4run.dylib`G4VUserPhysicsList::BuildPhysicsTable(this=0x0000000109047270) + 168 at G4VUserPhysicsList.cc:530 frame #4: 0x0000000102cd183c libG4run.dylib`G4RunManagerKernel::BuildPhysicsTables(this=0x0000000108721f60, fakeRun=false) + 76 at G4RunManagerKernel.cc:707 frame #5: 0x0000000102cd1367 libG4run.dylib`G4RunManagerKernel::RunInitialization(this=0x0000000108721f60, fakeRun=false) + 279 at G4RunManagerKernel.cc:609 frame #6: 0x0000000102cadbb8 libG4run.dylib`G4RunManager::RunInitialization(this=0x0000000108722e00) + 56 at G4RunManager.cc:313 frame #7: 0x0000000102cad8b2 libG4run.dylib`G4RunManager::BeamOn(this=0x0000000108722e00, n_event=1, macroFile=0x0000000000000000, n_select=-1) + 146 at G4RunManager.cc:272 frame #8: 0x000000010153f4d0 libcfg4.dylib`CG4::propagate(this=0x0000000108721520) + 752 at CG4.cc:164 frame #9: 0x000000010000d5a2 CG4Test`main(argc=13, argv=0x00007fff5fbfdd38) + 210 at CG4Test.cc:18 frame #10: 0x00007fff89e755fd libdyld.dylib`start + 1 (lldb) f 1 frame #1: 0x000000010358fed2 libG4processes.dylib`G4VMultipleScattering::PreparePhysicsTable(this=0x000000010d8e6690, part=0x0000000109055170) + 1810 at G4VMultipleScattering.cc:252 249 fDispBeyondSafety = theParameters->LatDisplacementBeyondSafety(); 250 } 251 } -> 252 if(master) { SetVerboseLevel(theParameters->Verbose()); } 253 else { SetVerboseLevel(theParameters->WorkerVerbose()); } 254 255 // initialisation of models (lldb) p master (G4bool) $0 = true (lldb) p *theParameters (G4EmParameters) $2 = { ... verbose = 1 workerVerbose = 0 ... } :: conv: for gamma SubType= 14 BuildTable= 1 Lambda table from 1.022 MeV to 10 TeV, 20 bins per decade, spline: 1 ===== EM models for the G4Region DefaultRegionForTheWorld ====== BetheHeitler : Emin= 0 eV Emax= 80 GeV BetheHeitlerLPM : Emin= 80 GeV Emax= 10 TeV