Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 // 28 29 #include "G4FastSimulationMessenger.hh" 30 31 #include "G4UIcmdWithAString.hh" 32 #include "G4UIcmdWithoutParameter.hh" 33 #include "G4UIdirectory.hh" 34 #include "G4ios.hh" 35 36 G4FastSimulationMessenger::G4FastSimulationMessenger(G4GlobalFastSimulationManager* theGFSM) 37 : fGlobalFastSimulationManager(theGFSM) 38 { 39 fFSDirectory = new G4UIdirectory("/param/"); 40 fFSDirectory->SetGuidance("Fast Simulation print/control commands."); 41 42 fShowSetupCmd = new G4UIcmdWithoutParameter("/param/showSetup", this); 43 fShowSetupCmd->SetGuidance("Show fast simulation setup:"); 44 fShowSetupCmd->SetGuidance(" - for each world region:"); 45 fShowSetupCmd->SetGuidance(" 1) fast simulation manager process attached;"); 46 fShowSetupCmd->SetGuidance(" - and to which particles the process is attached to;"); 47 fShowSetupCmd->SetGuidance(" 2) region hierarchy;"); 48 fShowSetupCmd->SetGuidance(" - with for each the fast simulation models attached;"); 49 fShowSetupCmd->AvailableForStates(G4State_Idle, G4State_GeomClosed); 50 51 fListEnvelopesCmd = new G4UIcmdWithAString("/param/listEnvelopes", this); 52 fListEnvelopesCmd->SetParameterName("ParticleName", true); 53 fListEnvelopesCmd->SetDefaultValue("all"); 54 fListEnvelopesCmd->SetGuidance("List all the envelope names for a given Particle"); 55 fListEnvelopesCmd->SetGuidance("(or for all particles if without parameters)."); 56 fListEnvelopesCmd->AvailableForStates(G4State_PreInit, G4State_Idle); 57 58 fListModelsCmd = new G4UIcmdWithAString("/param/listModels", this); 59 fListModelsCmd->SetParameterName("EnvelopeName", true); 60 fListModelsCmd->SetDefaultValue("all"); 61 fListModelsCmd->SetGuidance("List all the Model names for a given Envelope"); 62 fListModelsCmd->SetGuidance("(or for all envelopes if without parameters)."); 63 fListModelsCmd->AvailableForStates(G4State_PreInit, G4State_Idle); 64 65 fListIsApplicableCmd = new G4UIcmdWithAString("/param/listIsApplicable", this); 66 fListIsApplicableCmd->SetParameterName("ModelName", true); 67 fListIsApplicableCmd->SetDefaultValue("all"); 68 fListIsApplicableCmd->SetGuidance("List all the Particle names a given Model is applicable"); 69 fListIsApplicableCmd->SetGuidance("(or for all Models if without parameters)."); 70 71 fActivateModel = new G4UIcmdWithAString("/param/ActivateModel", this); 72 fActivateModel->SetParameterName("ModelName", false); 73 fActivateModel->SetGuidance("Activate a given Model."); 74 75 fInActivateModel = new G4UIcmdWithAString("/param/InActivateModel", this); 76 fInActivateModel->SetParameterName("ModelName", false); 77 fInActivateModel->SetGuidance("InActivate a given Model."); 78 } 79 80 G4FastSimulationMessenger::~G4FastSimulationMessenger() 81 { 82 delete fShowSetupCmd; 83 delete fListIsApplicableCmd; 84 delete fActivateModel; 85 delete fInActivateModel; 86 delete fListModelsCmd; 87 delete fListEnvelopesCmd; 88 delete fFSDirectory; 89 } 90 91 void G4FastSimulationMessenger::SetNewValue(G4UIcommand* command, G4String newValue) 92 { 93 if (command == fShowSetupCmd) fGlobalFastSimulationManager->ShowSetup(); 94 if (command == fListEnvelopesCmd) { 95 if (newValue == "all") 96 fGlobalFastSimulationManager->ListEnvelopes(); 97 else 98 fGlobalFastSimulationManager->ListEnvelopes( 99 G4ParticleTable::GetParticleTable()->FindParticle(newValue)); 100 } 101 if (command == fListModelsCmd) fGlobalFastSimulationManager->ListEnvelopes(newValue, MODELS); 102 if (command == fListIsApplicableCmd) 103 fGlobalFastSimulationManager->ListEnvelopes(newValue, ISAPPLICABLE); 104 if (command == fActivateModel) 105 fGlobalFastSimulationManager->ActivateFastSimulationModel(newValue); 106 if (command == fInActivateModel) 107 fGlobalFastSimulationManager->InActivateFastSimulationModel(newValue); 108 } 109