ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DetectorMessenger.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file DetectorMessenger.cc
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 //
28 //
29 //
31 //
32 // DetectorMessenger
33 //
34 // Created: 31.01.03 V.Ivanchenko
35 //
36 // Modified:
37 // 04.06.2006 Adoptation of hadr01 (V.Ivanchenko)
38 // 16.11.2006 Add beamCmd (V.Ivanchenko)
39 //
41 //
42 
43 #include "DetectorMessenger.hh"
44 
45 #include "DetectorConstruction.hh"
46 #include "G4UIdirectory.hh"
47 #include "G4UIcmdWithABool.hh"
48 #include "G4UIcmdWithAString.hh"
49 #include "G4UIcmdWithAnInteger.hh"
50 #include "G4UIcmdWith3Vector.hh"
53 #include "HistoManager.hh"
54 #include "G4PhysicalConstants.hh"
55 #include "G4SystemOfUnits.hh"
56 
57 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
58 
60  : G4UImessenger(),
61  fDetector(det),
62  fTestDir(0),
63  fMatCmd(0),
64  fMat1Cmd(0),
65  fIonCmd(0),
66  fRCmd(0),
67  fLCmd(0),
68  fEdepCmd(0),
69  fBinCmd(0),
70  fNOfAbsCmd(0),
71  fVerbCmd(0),
72  fBeamCmd(0)
73 {
74  fTestDir = new G4UIdirectory("/testhadr/");
75  fTestDir->SetGuidance(" Hadronic Extended Example.");
76 
77  fMatCmd = new G4UIcmdWithAString("/testhadr/TargetMat",this);
78  fMatCmd->SetGuidance("Select Material for the target");
79  fMatCmd->SetParameterName("tMaterial",false);
81 
82  fMat1Cmd = new G4UIcmdWithAString("/testhadr/WorldMat",this);
83  fMat1Cmd->SetGuidance("Select Material for world");
84  fMat1Cmd->SetParameterName("wMaterial",false);
86 
87  fIonCmd = new G4UIcmdWithAString("/testhadr/ionPhysics",this);
88  fIonCmd->SetGuidance("Select ion Physics");
89  fIonCmd->SetParameterName("DPMJET",false);
91 
92  fRCmd = new G4UIcmdWithADoubleAndUnit("/testhadr/TargetRadius",this);
93  fRCmd->SetGuidance("Set radius of the target");
94  fRCmd->SetParameterName("radius",false);
95  fRCmd->SetUnitCategory("Length");
96  fRCmd->SetRange("radius>0");
98 
99  fLCmd = new G4UIcmdWithADoubleAndUnit("/testhadr/TargetLength",this);
100  fLCmd->SetGuidance("Set length of the target");
101  fLCmd->SetParameterName("length",false);
102  fLCmd->SetUnitCategory("Length");
103  fLCmd->SetRange("length>0");
105 
106  fBinCmd = new G4UIcmdWithAnInteger("/testhadr/NumberOfBinsE",this);
107  fBinCmd->SetGuidance("Set number of bins for Energy");
108  fBinCmd->SetParameterName("NEbins",false);
110 
111  fNOfAbsCmd = new G4UIcmdWithAnInteger("/testhadr/NumberDivZ",this);
112  fNOfAbsCmd->SetGuidance("Set number of slices");
113  fNOfAbsCmd->SetParameterName("NZ",false);
115 
116  fEdepCmd = new G4UIcmdWithADoubleAndUnit("/testhadr/MaxEdep",this);
117  fEdepCmd->SetGuidance("Set max energy in histogram");
118  fEdepCmd->SetParameterName("edep",false);
119  fEdepCmd->SetUnitCategory("Energy");
120  fEdepCmd->SetRange("edep>0");
122 
123  fBeamCmd = new G4UIcmdWithABool("/testhadr/DefaultBeamPosition",this);
124  fBeamCmd->SetGuidance("show inelastic and elastic cross sections");
125 
126  fVerbCmd = new G4UIcmdWithAnInteger("/testhadr/Verbose",this);
127  fVerbCmd->SetGuidance("Set verbose for ");
128  fVerbCmd->SetParameterName("verb",false);
130 }
131 
132 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
133 
135 {
136  delete fMatCmd;
137  delete fMat1Cmd;
138  delete fIonCmd;
139  delete fRCmd;
140  delete fLCmd;
141  delete fNOfAbsCmd;
142  delete fTestDir;
143  delete fBeamCmd;
144  delete fVerbCmd;
145  delete fEdepCmd;
146 }
147 
148 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
149 
150 void DetectorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
151 {
153  if( command == fMatCmd ) {
154  fDetector->SetTargetMaterial(newValue);
155  } else if( command == fMat1Cmd ) {
156  fDetector->SetWorldMaterial(newValue);
157  } else if( command == fIonCmd ) {
158  h->SetIonPhysics(newValue);
159  } else if( command == fRCmd ) {
161  } else if( command == fLCmd ) {
162  h->SetTargetLength(fLCmd->GetNewDoubleValue(newValue));
163  } else if( command == fNOfAbsCmd ) {
165  } else if( command == fBinCmd ) {
166  h->SetNumberOfBinsE(fBinCmd->GetNewIntValue(newValue));
167  } else if( command == fVerbCmd ) {
168  h->SetVerbose(fVerbCmd->GetNewIntValue(newValue));
169  } else if (command == fBeamCmd) {
171  } else if (command == fEdepCmd) {
173  }
174 }
175 
176 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
177