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 // Hadrontherapy advanced example for Geant4 << 26 // This is the *BASIC* version of Hadrontherapy, a Geant4-based application 27 // See more at: https://twiki.cern.ch/twiki/bi << 27 // See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy >> 28 // >> 29 // Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request >> 30 // the *COMPLETE* version of this program, together with its documentation; >> 31 // Hadrontherapy (both basic and full version) are supported by the Italian INFN >> 32 // Institute in the framework of the MC-INFN Group >> 33 // 28 34 29 #include "HadrontherapyParameterMessenger.hh" 35 #include "HadrontherapyParameterMessenger.hh" 30 #include "HadrontherapyInteractionParameters.h 36 #include "HadrontherapyInteractionParameters.hh" 31 #include "G4SystemOfUnits.hh" 37 #include "G4SystemOfUnits.hh" 32 38 33 #include "G4UIdirectory.hh" 39 #include "G4UIdirectory.hh" 34 #include "G4UIcmdWithAString.hh" 40 #include "G4UIcmdWithAString.hh" 35 41 36 HadrontherapyParameterMessenger::Hadrontherapy 42 HadrontherapyParameterMessenger::HadrontherapyParameterMessenger(HadrontherapyInteractionParameters* param) 37 :pParam(param) 43 :pParam(param) 38 { 44 { 39 paramDir = new G4UIdirectory("/parameter/" 45 paramDir = new G4UIdirectory("/parameter/"); 40 paramDir -> SetGuidance("Commands to gener 46 paramDir -> SetGuidance("Commands to generate stopping power and range"); 41 47 42 dedxCmd = new G4UIcmdWithAString("/paramet 48 dedxCmd = new G4UIcmdWithAString("/parameter/getstopping",this); 43 dedxCmd->SetGuidance("Get mass stopping po 49 dedxCmd->SetGuidance("Get mass stopping powers" 44 "\n[usage]: /parameter/getstopping Mater 50 "\n[usage]: /parameter/getstopping Material [Emin] [Emax] [N] [Particle] [File]" 45 "\n Material:(string) Material n 51 "\n Material:(string) Material name, like G4_H, G4_WATER,..., look at /parameter/nist" 46 "\n Emin Emax:(double) minimum a 52 "\n Emin Emax:(double) minimum and maximum kinetic energy (MeV)" 47 "\n N:(double) [number of points 53 "\n N:(double) [number of points]" 48 "\n Particle:(string) Particle n 54 "\n Particle:(string) Particle name, look at /particle/list" 49 "\n File:(string) Name for the o 55 "\n File:(string) Name for the output file." 50 "\nDefault values for parameters inside 56 "\nDefault values for parameters inside [] are respectively:" 51 "\n \"1 MeV\", \"Emin\", \"1\", \"proton 57 "\n \"1 MeV\", \"Emin\", \"1\", \"proton\", \"stdout\""); 52 dedxCmd->SetParameterName("inputData",fals 58 dedxCmd->SetParameterName("inputData",false); 53 dedxCmd->AvailableForStates(G4State_Idle); 59 dedxCmd->AvailableForStates(G4State_Idle); 54 60 55 listCmd = new G4UIcmdWithAString("/paramet 61 listCmd = new G4UIcmdWithAString("/parameter/nist",this); 56 listCmd -> SetGuidance("Print NIST element 62 listCmd -> SetGuidance("Print NIST elements/materials.\nParameters:" 57 "\n\t all: will print elements and c 63 "\n\t all: will print elements and compounds" 58 "\n\t simple: will print elements on 64 "\n\t simple: will print elements only" 59 "\n\t compound: will print compounds 65 "\n\t compound: will print compounds only" 60 "\n\t hep: will print hep compounds" 66 "\n\t hep: will print hep compounds" 61 "\n\t list: will print a simple full 67 "\n\t list: will print a simple full list of all elements and compounds"); 62 listCmd -> SetParameterName("String",true) 68 listCmd -> SetParameterName("String",true); 63 listCmd -> SetDefaultValue("list"); 69 listCmd -> SetDefaultValue("list"); 64 listCmd -> SetCandidates("all simple compo 70 listCmd -> SetCandidates("all simple compound hep list"); 65 listCmd ->AvailableForStates(G4State_Idle) 71 listCmd ->AvailableForStates(G4State_Idle); 66 //Available G4 States (G4State_PreInit, G4 72 //Available G4 States (G4State_PreInit, G4State_Init, G4State_Idle,G4State_GeomClosed, G4State_EventProc); 67 } 73 } 68 HadrontherapyParameterMessenger::~Hadrontherap 74 HadrontherapyParameterMessenger::~HadrontherapyParameterMessenger() 69 { 75 { 70 delete paramDir; 76 delete paramDir; 71 delete dedxCmd; 77 delete dedxCmd; 72 delete listCmd; 78 delete listCmd; 73 } 79 } 74 80 75 void HadrontherapyParameterMessenger::SetNewVa 81 void HadrontherapyParameterMessenger::SetNewValue(G4UIcommand* command, G4String vararg) 76 { 82 { 77 if (command == dedxCmd) 83 if (command == dedxCmd) 78 { 84 { 79 pParam -> GetStoppingTable(vararg); 85 pParam -> GetStoppingTable(vararg); 80 } 86 } 81 else if (command == listCmd) 87 else if (command == listCmd) 82 { 88 { 83 pParam -> ListOfNistMaterials(vararg); 89 pParam -> ListOfNistMaterials(vararg); 84 } 90 } 85 } 91 } 86 92 87 93