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