Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // Gorad (Geant4 Open-source Radiation Analys 26 // Gorad (Geant4 Open-source Radiation Analysis and Design) 27 // 27 // 28 // Author : Makoto Asai (SLAC National Accele 28 // Author : Makoto Asai (SLAC National Accelerator Laboratory) 29 // 29 // 30 // Development of Gorad is funded by NASA Joh 30 // Development of Gorad is funded by NASA Johnson Space Center (JSC) 31 // under the contract NNJ15HK11B. 31 // under the contract NNJ15HK11B. 32 // 32 // 33 // ******************************************* 33 // ******************************************************************** 34 // 34 // 35 // GRInitialization.hh 35 // GRInitialization.hh 36 // Defines the initialization procedure of G 36 // Defines the initialization procedure of Gorad and Geant4 37 // 37 // 38 // History 38 // History 39 // September 8th, 2020 : first implementatio 39 // September 8th, 2020 : first implementation 40 // 40 // 41 // ******************************************* 41 // ******************************************************************** 42 42 43 #include "GRInitialization.hh" 43 #include "GRInitialization.hh" 44 44 45 #include "GRDetectorConstruction.hh" 45 #include "GRDetectorConstruction.hh" 46 #include "GRPhysicsList.hh" 46 #include "GRPhysicsList.hh" 47 #include "GRActionInitialization.hh" 47 #include "GRActionInitialization.hh" 48 #include "GRPrimGenActionMessenger.hh" 48 #include "GRPrimGenActionMessenger.hh" 49 #include "G4GenericMessenger.hh" 49 #include "G4GenericMessenger.hh" 50 #include "GRGeomBiasMessenger.hh" 50 #include "GRGeomBiasMessenger.hh" 51 #include "GRScoreWriter.hh" 51 #include "GRScoreWriter.hh" 52 52 53 #include "G4RunManager.hh" 53 #include "G4RunManager.hh" 54 #include "G4ScoringManager.hh" 54 #include "G4ScoringManager.hh" 55 #include "G4UIdirectory.hh" 55 #include "G4UIdirectory.hh" 56 #include "G4UnitsTable.hh" 56 #include "G4UnitsTable.hh" 57 << 57 #include "G4SystemOfUnits.hh" 58 #include <CLHEP/Units/SystemOfUnits.h> << 59 58 60 GRInitialization::GRInitialization(G4int verbo 59 GRInitialization::GRInitialization(G4int verboseLvl) 61 : verboseLevel(verboseLvl) 60 : verboseLevel(verboseLvl) 62 { 61 { 63 // adding unites 62 // adding unites 64 new G4UnitDefinition("milligray","mGy","Dose << 63 new G4UnitDefinition("milligray","mGy","Dose",1.e-3*gray); 65 new G4UnitDefinition("microgray","muGy","Dos << 64 new G4UnitDefinition("microgray","muGy","Dose",1.e-6*gray); 66 new G4UnitDefinition("nanogray","nGy","Dose" << 65 new G4UnitDefinition("nanogray","nGy","Dose",1.e-9*gray); 67 66 68 G4ScoringManager::GetScoringManager()->SetSc 67 G4ScoringManager::GetScoringManager()->SetScoreWriter(new GRScoreWriter()); 69 68 70 messenger = new G4GenericMessenger(this,"/go 69 messenger = new G4GenericMessenger(this,"/gorad/","GORAD commands"); 71 auto& initCmd = messenger->DeclareMethod("in 70 auto& initCmd = messenger->DeclareMethod("initialize", 72 &GRInitialization::Initialize,"Initia 71 &GRInitialization::Initialize,"Initialize Gorad and G4RunManager"); 73 initCmd.SetToBeBroadcasted(false); 72 initCmd.SetToBeBroadcasted(false); 74 initCmd.SetStates(G4State_PreInit); 73 initCmd.SetStates(G4State_PreInit); 75 74 76 detector = new GRDetectorConstruction(); 75 detector = new GRDetectorConstruction(); 77 physics = new GRPhysicsList(); 76 physics = new GRPhysicsList(); 78 actionInitialization = new GRActionInitializ 77 actionInitialization = new GRActionInitialization(); 79 sourceMessenger = new GRPrimGenActionMesseng 78 sourceMessenger = new GRPrimGenActionMessenger(); 80 geomBiasMessenger = new GRGeomBiasMessenger( 79 geomBiasMessenger = new GRGeomBiasMessenger(detector,physics,verboseLvl); 81 } 80 } 82 81 83 GRInitialization::~GRInitialization() 82 GRInitialization::~GRInitialization() 84 { 83 { 85 delete geomBiasMessenger; 84 delete geomBiasMessenger; 86 delete sourceMessenger; 85 delete sourceMessenger; 87 delete messenger; 86 delete messenger; 88 } 87 } 89 88 90 void GRInitialization::Initialize() 89 void GRInitialization::Initialize() 91 { 90 { 92 auto runManager = G4RunManager::GetRunManage 91 auto runManager = G4RunManager::GetRunManager(); 93 runManager->SetUserInitialization(detector); 92 runManager->SetUserInitialization(detector); 94 runManager->SetUserInitialization(physics); 93 runManager->SetUserInitialization(physics); 95 runManager->SetUserInitialization(actionInit 94 runManager->SetUserInitialization(actionInitialization); 96 if(verboseLevel>0) G4cout << "GORAD is initi 95 if(verboseLevel>0) G4cout << "GORAD is initialized.........." << G4endl; 97 runManager->Initialize(); 96 runManager->Initialize(); 98 sourceMessenger->UpdateParticleList(); 97 sourceMessenger->UpdateParticleList(); 99 } 98 } 100 99 101 #include "G4UIExecutive.hh" 100 #include "G4UIExecutive.hh" 102 #ifdef G4UI_USE_QT << 103 #include "G4UIQt.hh" 101 #include "G4UIQt.hh" 104 #endif << 105 102 106 void GRInitialization::SetWindowText(G4UIExecu 103 void GRInitialization::SetWindowText(G4UIExecutive* ui) 107 { 104 { 108 // If the current GUI is not G4UIQt, do noth 105 // If the current GUI is not G4UIQt, do nothing and return. 109 if(!(ui->IsGUI())) return; 106 if(!(ui->IsGUI())) return; 110 107 111 #ifdef G4UI_USE_QT 108 #ifdef G4UI_USE_QT 112 G4UIQt* qt = dynamic_cast<G4UIQt*>(ui->GetSe 109 G4UIQt* qt = dynamic_cast<G4UIQt*>(ui->GetSession()); 113 if(!qt) return; 110 if(!qt) return; 114 111 115 qt->SetStartPage(std::string("<table width=' 112 qt->SetStartPage(std::string("<table width='100%'><tr><td width='50%'></td><td><div ")+ 116 "style='color: rgb(140, 31, 31); font-s 113 "style='color: rgb(140, 31, 31); font-size: xx-large; font-family: Garamond, serif; "+ 117 "padding-bottom: 0px; font-weight: norm 114 "padding-bottom: 0px; font-weight: normal'>GORAD "+ 118 "</div></td></td></tr></table>"+ 115 "</div></td></td></tr></table>"+ 119 "<p> </p>"+ 116 "<p> </p>"+ 120 "<div><dl>"+ 117 "<div><dl>"+ 121 "<dd><b>Gorad (Geant4 Open-source Rad 118 "<dd><b>Gorad (Geant4 Open-source Radiation Analysis and Design) is meant to be "+ 122 "a turn-key application for radiation 119 "a turn-key application for radiation analysis and spacecraft design "+ 123 "built on top of Geant4. Simulation g 120 "built on top of Geant4. Simulation geometry should be provided in the form of GDML. "+ 124 "Gorad is developed under the NASA JS 121 "Gorad is developed under the NASA JSC contract NNJ15HK11B."+ 125 "</dd></dl></div>"+ 122 "</dd></dl></div>"+ 126 "<p> </p>"+ 123 "<p> </p>"+ 127 "<div style='background:#EEEEEE;'><b>To 124 "<div style='background:#EEEEEE;'><b>Tooltips :</b><ul>"+ 128 "<li><b>Start an interactive run :</b 125 "<li><b>Start an interactive run :</b><br />"+ 129 "/control/execute <i>run.mac</i><br / 126 "/control/execute <i>run.mac</i><br />"+ 130 "/run/beamOn <i>number_of_events</i>< 127 "/run/beamOn <i>number_of_events</i></li></ul></div>"+ 131 "<div style='background:#EEEEEE;'><b>Do 128 "<div style='background:#EEEEEE;'><b>Documentation :</b><ul>"+ 132 "<li><i>"+ 129 "<li><i>"+ 133 "<b>GORAD manual</b> and a sample Ori 130 "<b>GORAD manual</b> and a sample Orion spacecraft shield geometry can be found at<br />"+ 134 "<a href='https://twiki.cern.ch/twiki 131 "<a href='https://twiki.cern.ch/twiki/bin/view/Geant4/AdvancedExamplesGorad'>"+ 135 "https://twiki.cern.ch/twiki/bin/view 132 "https://twiki.cern.ch/twiki/bin/view/Geant4/AdvancedExamplesGorad"+ 136 "</a></i></li>"+ 133 "</a></i></li>"+ 137 "</ul></div>" 134 "</ul></div>" 138 ); 135 ); 139 #endif 136 #endif 140 } 137 } 141 138 142 139