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

Last change on this file since 1347 was 1337, checked in by garnier, 14 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.