ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PhysicsListMessenger.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PhysicsListMessenger.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 //
30 //---------------------------------------------------------------------------
31 //
32 // ClassName: PhysicsListMessenger
33 //
34 // Description: EM physics with a possibility to add PAI model
35 //
36 // Author: V.Ivanchenko 01.09.2010
37 //
38 //----------------------------------------------------------------------------
39 //
40 
41 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
42 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
43 
44 #include "PhysicsListMessenger.hh"
45 
46 #include "PhysicsList.hh"
47 #include "G4UIdirectory.hh"
49 #include "G4UIcmdWithADouble.hh"
50 #include "G4UIcmdWithAString.hh"
51 #include "G4UIcmdWithAnInteger.hh"
52 #include "TestParameters.hh"
53 
54 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
55 
57 :G4UImessenger(),fPhysicsList(pPhys)
58 {
59  fPhysDir = new G4UIdirectory("/testem/phys/");
60  fPhysDir->SetGuidance("physics list commands");
61 
62  fECmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setMaxE",this);
63  fECmd->SetGuidance("Set max energy deposit");
64  fECmd->SetParameterName("Emax",false);
65  fECmd->SetUnitCategory("Energy");
66  fECmd->SetRange("Emax>0.0");
68 
69  fEBCmd = new G4UIcmdWithAnInteger("/testem/phys/setNbinsE",this);
70  fEBCmd->SetGuidance("Set number of bins in energy.");
71  fEBCmd->SetParameterName("Ebins",false);
72  fEBCmd->SetRange("Ebins>0");
74 
75  fCBCmd = new G4UIcmdWithAnInteger("/testem/phys/setNbinsCl",this);
76  fCBCmd->SetGuidance("Set number of bins of clusters.");
77  fCBCmd->SetParameterName("Cbins",false);
78  fCBCmd->SetRange("Cbins>0");
80 
81  fCMCmd = new G4UIcmdWithAnInteger("/testem/phys/setMaxCl",this);
82  fCMCmd->SetGuidance("Set max number of clusters.");
83  fCMCmd->SetParameterName("Cmax",false);
84  fCMCmd->SetRange("Cmax>0");
86 
87  fListCmd = new G4UIcmdWithAString("/testem/phys/addPhysics",this);
88  fListCmd->SetGuidance("Add modula physics list.");
89  fListCmd->SetParameterName("PList",false);
91 
92  fADCCmd =
93  new G4UIcmdWithADoubleAndUnit("/testem/phys/setEnergyPerChannel",this);
94  fADCCmd->SetGuidance("Set energy per ADC channel");
95  fADCCmd->SetParameterName("enadc",false,false);
96  fADCCmd->SetUnitCategory("Energy");
97  fADCCmd->SetDefaultUnit("keV");
98  fADCCmd->SetRange("enadc>0.");
100 
101  fNorCmd = new G4UIcmdWithADouble("/testem/phys/setNormFactor",this);
102  fNorCmd->SetGuidance("Set factor for histogram normalisation");
103  fNorCmd->SetParameterName("nfac",false,false);
104  fNorCmd->SetRange("nfac>0.");
106 
107  fSmCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setEnergySmear",this);
108  fSmCmd->SetGuidance("Set intrinsic width of detector response");
109  fSmCmd->SetParameterName("sm",false,false);
110  fSmCmd->SetDefaultUnit("keV");
111  fSmCmd->SetRange("sm>0.");
113 }
114 
115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
116 
118 {
119  delete fECmd;
120  delete fEBCmd;
121  delete fCBCmd;
122  delete fCMCmd;
123  delete fListCmd;
124  delete fADCCmd;
125  delete fNorCmd;
126  delete fSmCmd;
127  delete fPhysDir;
128 }
129 
130 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
131 
133  G4String newValue)
134 {
136 
137  if( command == fECmd )
138  { man->SetMaxEnergy(fECmd->GetNewDoubleValue(newValue)); }
139  if( command == fEBCmd )
140  { man->SetNumberBins(fEBCmd->GetNewIntValue(newValue)); }
141  if( command == fCBCmd )
142  { man->SetNumberBinsCluster(fCBCmd->GetNewIntValue(newValue)); }
143  if( command == fCMCmd )
144  { man->SetMaxCluster(fCMCmd->GetNewIntValue(newValue)); }
145  if( command == fListCmd )
146  { fPhysicsList->AddPhysicsList(newValue); }
147  if( command == fADCCmd )
148  { man->SetEnergyPerChannel(fADCCmd->GetNewDoubleValue(newValue)); }
149  if( command == fNorCmd )
150  { man->SetNormFactor(fNorCmd->GetNewDoubleValue(newValue)); }
151  if( command == fSmCmd )
152  { man->SetEnergySmear(fSmCmd->GetNewDoubleValue(newValue)); }
153 }
154 
155 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......