source: trunk/source/physics_lists/builders/src/G4QMessenger.cc@ 1344

Last change on this file since 1344 was 1337, checked in by garnier, 15 years ago

tag geant4.9.4 beta 1 + modifs locales

File size: 8.8 KB
Line 
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// $Id: G4QMessenger.cc,v 1.1 2009/11/13 18:50:14 mkossov Exp $
27// GEANT4 tag $Name: geant4-09-04-beta-01 $
28//
29//---------------------------------------------------------------------------
30//
31// ClassName: G4QMessenger
32//
33// Author: 2009 M. V. Kossov
34//
35// Modified:
36//
37//----------------------------------------------------------------------------
38//
39
40#include "G4QMessenger.hh"
41#include "G4QNeutrinoPhysics.hh"
42#include "G4QPhotoNuclearPhysics.hh"
43
44G4QMessenger::G4QMessenger()
45{
46 rootDir = new G4UIdirectory("/CHIPS_physics/");
47 rootDir->SetGuidance("messenger of the CHIPS processes");
48 weakDir=0;
49 photoDir=0;
50}
51
52G4QMessenger::~G4QMessenger()
53{
54 delete rootDir;
55 if(photoDir)
56 {
57 delete photoDir;
58 delete theSynchR;
59 delete minGamSR;
60 delete theGamN;
61 delete theEleN;
62 delete theMuoN;
63 delete theTauN;
64 delete biasPhotoN;
65 }
66 else if(weakDir)
67 {
68 delete weakDir;
69 delete theNuElN;
70 delete theNuMuN;
71 delete theNuTaN;
72 delete biasNuNuc;
73 }
74}
75
76// Returns Pointer to the G4QMessenger class
77G4QMessenger* G4QMessenger::GetPointer()
78{
79 static G4QMessenger theMessenger; //**Static body of CHIPS Messenger**
80 return &theMessenger;
81}
82
83void G4QMessenger::Add(G4QNeutrinoPhysics* weak)
84{
85 theWeak = weak;
86
87 weakDir = new G4UIdirectory("/CHIPS_physics/neutrino/");
88 weakDir->SetGuidance("weak (neutrino) processes");
89
90 // commands for neutrino_el-nuclear physics.
91 theNuElN = new G4UIcmdWithAString("/CHIPS_physics/neutrino/NuElNuclear",this);
92 theNuElN->SetGuidance("Switching of nu_el-nuclear physics.");
93 theNuElN->SetParameterName("status","off");
94 theNuElN->SetCandidates("on off");
95 theNuElN->SetDefaultValue("off");
96 theNuElN->AvailableForStates(G4State_PreInit, G4State_Idle);
97
98 // commands for neutrino_mu-nuclear physics.
99 theNuMuN = new G4UIcmdWithAString("/CHIPS_physics/neutrino/NuMuNuclear",this);
100 theNuMuN->SetGuidance("Switching of nu_mu-nuclear physics.");
101 theNuMuN->SetParameterName("status","off");
102 theNuMuN->SetCandidates("on off");
103 theNuMuN->SetDefaultValue("off");
104 theNuMuN->AvailableForStates(G4State_PreInit, G4State_Idle);
105
106 // commands for neutrino_tau-nuclear physics.
107 theNuTaN = new G4UIcmdWithAString("/CHIPS_physics/neutrino/NuTauNuclear",this);
108 theNuTaN->SetGuidance("Switching of nu_tau-nuclear physics.");
109 theNuTaN->SetParameterName("status","off");
110 theNuTaN->SetCandidates("on off");
111 theNuTaN->SetDefaultValue("off");
112 theNuTaN->AvailableForStates(G4State_PreInit, G4State_Idle);
113
114 // command for biasing of neutrino-nuclear reactions
115 biasNuNuc = new G4UIcmdWithADouble("/CHIPS_physics/neutrino/NuNuc_Biasing", this);
116 biasNuNuc->SetGuidance("Set a biasing coefficient for neutrino-nuclear ractions");
117 biasNuNuc->SetParameterName("NuNuc_Biasing", false);
118 biasNuNuc->SetRange("NuNuc_Biasing > 0.");
119 biasNuNuc->SetDefaultValue(1.);
120 biasNuNuc->AvailableForStates(G4State_PreInit, G4State_Idle);
121}
122
123void G4QMessenger::Add(G4QPhotoNuclearPhysics* photo)
124{
125 thePhoto = photo;
126
127 weakDir = new G4UIdirectory("/CHIPS_physics/photoNuclear/");
128 weakDir->SetGuidance("weak (neutrino) processes");
129
130 // use G4UIcmdWithADouble for weighting of processes
131
132 // command for synchrotron radiation.
133 theSynchR = new G4UIcmdWithAString("/CHIPS_physics/photoNuclear/SynchRadiation",this);
134 theSynchR->SetGuidance("Switching on/off synchrotron radiation.");
135 theSynchR->SetParameterName("status","off");
136 theSynchR->SetCandidates("on off");
137 theSynchR->SetDefaultValue("off");
138 theSynchR->AvailableForStates(G4State_PreInit, G4State_Idle);
139
140 minGamSR = new G4UIcmdWithADouble("/CHIPS_physics/photoNuclear/MinGamma_SynchRad", this);
141 minGamSR->SetGuidance("Set a minimum gamma for Synchratron Radiation");
142 minGamSR->SetParameterName("MinGamma_SynchRad", false);
143 minGamSR->SetRange("MinGamma_SynchRad >> 1.");
144 minGamSR->SetDefaultValue(227.);
145 minGamSR->AvailableForStates(G4State_PreInit, G4State_Idle);
146
147 // command for gamma-nuclear physics.
148 theGamN = new G4UIcmdWithAString("/CHIPS_physics/photoNuclear/GammaNuclear",this);
149 theGamN->SetGuidance("Switching of gamma-nuclear physics.");
150 theGamN->SetParameterName("status","off");
151 theGamN->SetCandidates("on off");
152 theGamN->SetDefaultValue("on");
153 theGamN->AvailableForStates(G4State_PreInit, G4State_Idle);
154
155 // command for electro-nuclear physics.
156 theEleN = new G4UIcmdWithAString("/CHIPS_physics/photoNuclear/ElectroNuclear",this);
157 theEleN->SetGuidance("Switching of electron-nuclear physics.");
158 theEleN->SetParameterName("status","off");
159 theEleN->SetCandidates("on off");
160 theEleN->SetDefaultValue("off");
161 theEleN->AvailableForStates(G4State_PreInit, G4State_Idle);
162
163 // command for muon-nuclear physics.
164 theMuoN = new G4UIcmdWithAString("/CHIPS_physics/photoNuclear/MuonNuclear",this);
165 theMuoN->SetGuidance("Switching of muon nuclear physics.");
166 theMuoN->SetParameterName("status","off");
167 theMuoN->SetCandidates("on off");
168 theMuoN->SetDefaultValue("off");
169 theMuoN->AvailableForStates(G4State_PreInit, G4State_Idle);
170
171 // command for tau-nuclear physics.
172 theTauN = new G4UIcmdWithAString("/CHIPS_physics/photoNuclear/TauNuclear",this);
173 theTauN->SetGuidance("Switching of tau nuclear physics.");
174 theTauN->SetParameterName("status","off");
175 theTauN->SetCandidates("on off");
176 theTauN->SetDefaultValue("off");
177 theTauN->AvailableForStates(G4State_PreInit, G4State_Idle);
178
179
180 biasPhotoN = new G4UIcmdWithADouble("/CHIPS_physics/photoNuclear/PhotoN_Biasing", this);
181 biasPhotoN->SetGuidance("Set a biasing coefficient for photo-nuclear ractions");
182 biasPhotoN->SetParameterName("PhotoN_Biasing", false);
183 biasPhotoN->SetRange("PhotoN_Biasing > 0.");
184 biasPhotoN->SetDefaultValue(1.);
185 biasPhotoN->AvailableForStates(G4State_PreInit, G4State_Idle);
186}
187
188void G4QMessenger::SetNewValue(G4UIcommand* aComm, G4String aS)
189{
190 if(photoDir)
191 {
192 if (aComm==theSynchR) thePhoto->SetSynchRadOnOff(aS);
193 else if(aComm==minGamSR) thePhoto->SetMinGammaSR(minGamSR->GetNewDoubleValue(aS));
194 else if(aComm==theGamN) thePhoto->SetGammaNuclearOnOff(aS);
195 else if(aComm==theMuoN) thePhoto->SetElPosNuclearOnOff(aS);
196 else if(aComm==theMuoN) thePhoto->SetMuonNuclearOnOff(aS);
197 else if(aComm==theMuoN) thePhoto->SetTauNuclearOnOff(aS);
198 else if(aComm==biasPhotoN)thePhoto->SetPhotoNucBias(biasPhotoN->GetNewDoubleValue(aS));
199 }
200 else if(weakDir)
201 {
202 if (aComm==theNuElN) theWeak->SetNuElNuclearOnOff(aS);
203 else if(aComm==theNuMuN) theWeak->SetNuMuNuclearOnOff(aS);
204 else if(aComm==theNuTaN) theWeak->SetNuTauNuclearOnOff(aS);
205 else if(aComm==biasNuNuc) theWeak->SetNuNuclearBias(biasNuNuc->GetNewDoubleValue(aS));
206 }
207}
208
209G4String G4QMessenger::GetCurrentValue(G4UIcommand* aComm)
210{
211 if(photoDir)
212 {
213 if (aComm==theSynchR) return thePhoto->GetSynchRadOnOff();
214 else if(aComm==theGamN) return thePhoto->GetGammaNuclearOnOff();
215 else if(aComm==theEleN) return thePhoto->GetElPosNuclearOnOff();
216 else if(aComm==theMuoN) return thePhoto->GetMuonNuclearOnOff();
217 else if(aComm==theTauN) return thePhoto->GetTauNuclearOnOff();
218 }
219 else if(weakDir)
220 {
221 if (aComm==theNuElN) return theWeak->GetNuElNuclearOnOff();
222 else if(aComm==theNuMuN) return theWeak->GetNuMuNuclearOnOff();
223 else if(aComm==theNuTaN) return theWeak->GetNuTauNuclearOnOff();
224 }
225 return "not_defined";
226}
Note: See TracBrowser for help on using the repository browser.