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 #include "Par03EMShowerMessenger.hh" 27 28 #include "Par03EMShowerModel.hh" 29 30 #include "G4UIcmdWithADouble.hh" 31 #include "G4UIcmdWithADoubleAndUnit.hh" 32 #include "G4UIcmdWithAnInteger.hh" 33 #include "G4UIcmdWithoutParameter.hh" 34 #include "G4UIdirectory.hh" 35 36 Par03EMShowerMessenger::Par03EMShowerMessenger(Par03EMShowerModel* aModel) : fModel(aModel) 37 { 38 fDirectory = new G4UIdirectory("/Par03/fastSim/"); 39 fDirectory->SetGuidance("Set mesh parameters for the example fast sim model."); 40 41 fPrintCmd = new G4UIcmdWithoutParameter("/Par03/fastSim/print", this); 42 fPrintCmd->SetGuidance("Print current settings."); 43 44 fSigmaCmd = new G4UIcmdWithADoubleAndUnit("/Par03/fastSim/transverseProfile/sigma", this); 45 fSigmaCmd->SetGuidance("Set sigma parameter of 2D Gaussian distribution."); 46 fSigmaCmd->SetParameterName("Sigma", false); 47 fSigmaCmd->SetUnitCategory("Length"); 48 49 fAlphaCmd = new G4UIcmdWithADouble("/Par03/fastSim/longitudinalProfile/alpha", this); 50 fAlphaCmd->SetGuidance("Set alpha parameter of Gamma distribution."); 51 fAlphaCmd->SetParameterName("Alpha", false); 52 53 fBetaCmd = new G4UIcmdWithADouble("/Par03/fastSim/longitudinalProfile/beta", this); 54 fBetaCmd->SetGuidance("Set beta parameter of Gamma distribution."); 55 fBetaCmd->SetParameterName("Beta", false); 56 57 fNbOfHitsCmd = new G4UIcmdWithAnInteger("/Par03/fastSim/numberOfHits", this); 58 fNbOfHitsCmd->SetGuidance( 59 "Set number of (same energy) energy deposits created in fast simulation. " 60 "Those deposits will be scored in the detector according to the readout of " 61 "the sensitive detector."); 62 fNbOfHitsCmd->SetParameterName("Number", false); 63 64 fLongMaxDepthCmd = new G4UIcmdWithADouble("/Par03/fastSim/longitudinalProfile/maxDepth", this); 65 fLongMaxDepthCmd->SetGuidance("Set maximum shower depth used in parametrisation."); 66 fLongMaxDepthCmd->SetGuidance("Expressed in units of radiation length."); 67 fLongMaxDepthCmd->SetParameterName("Depth", false); 68 } 69 70 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 71 72 Par03EMShowerMessenger::~Par03EMShowerMessenger() 73 { 74 delete fPrintCmd; 75 delete fSigmaCmd; 76 delete fAlphaCmd; 77 delete fBetaCmd; 78 delete fNbOfHitsCmd; 79 delete fLongMaxDepthCmd; 80 delete fDirectory; 81 } 82 83 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 84 85 void Par03EMShowerMessenger::SetNewValue(G4UIcommand* aCommand, G4String aNewValues) 86 { 87 if (aCommand == fPrintCmd) { 88 fModel->Print(); 89 } 90 else if (aCommand == fSigmaCmd) { 91 fModel->SetSigma(fSigmaCmd->GetNewDoubleValue(aNewValues)); 92 } 93 else if (aCommand == fAlphaCmd) { 94 fModel->SetAlpha(fAlphaCmd->GetNewDoubleValue(aNewValues)); 95 } 96 else if (aCommand == fBetaCmd) { 97 fModel->SetBeta(fBetaCmd->GetNewDoubleValue(aNewValues)); 98 } 99 else if (aCommand == fNbOfHitsCmd) { 100 fModel->SetNbOfHits(fNbOfHitsCmd->GetNewIntValue(aNewValues)); 101 } 102 else if (aCommand == fLongMaxDepthCmd) { 103 fModel->SetLongMaxDepth(fLongMaxDepthCmd->GetNewDoubleValue(aNewValues)); 104 } 105 } 106 107 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 108 109 G4String Par03EMShowerMessenger::GetCurrentValue(G4UIcommand* aCommand) 110 { 111 G4String cv; 112 113 if (aCommand == fSigmaCmd) { 114 cv = fSigmaCmd->ConvertToString(fModel->GetSigma()); 115 } 116 else if (aCommand == fAlphaCmd) { 117 cv = fAlphaCmd->ConvertToString(fModel->GetAlpha()); 118 } 119 else if (aCommand == fBetaCmd) { 120 cv = fBetaCmd->ConvertToString(fModel->GetBeta()); 121 } 122 else if (aCommand == fNbOfHitsCmd) { 123 cv = fNbOfHitsCmd->ConvertToString(fModel->GetNbOfHits()); 124 } 125 else if (aCommand == fLongMaxDepthCmd) { 126 cv = fLongMaxDepthCmd->ConvertToString(fModel->GetLongMaxDepth()); 127 } 128 return cv; 129 } 130