source: trunk/examples/advanced/composite_calorimeter/src/CCalPrimaryGeneratorMessenger.cc @ 1304

Last change on this file since 1304 was 807, checked in by garnier, 16 years ago

update

File size: 8.2 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///////////////////////////////////////////////////////////////////////////////
27// File: CCalPrimaryGeneratorMessenger.cc
28// Description: CCalPrimaryGeneratorMessenger adds new commands for
29//              primary generator action
30///////////////////////////////////////////////////////////////////////////////
31#include "CCalPrimaryGeneratorMessenger.hh"
32#include "CCalPrimaryGeneratorAction.hh"
33
34#include "G4UImanager.hh"
35#include "G4UIcmdWithAString.hh"
36#include "G4UIcmdWithADoubleAndUnit.hh"
37#include "G4UIcmdWithADouble.hh"
38#include "G4UIcmdWithABool.hh"
39#include "G4UIcmdWithAnInteger.hh"
40#include "globals.hh"
41
42CCalPrimaryGeneratorMessenger::CCalPrimaryGeneratorMessenger(CCalPrimaryGeneratorAction* myGun) : myAction(myGun) {
43
44  verboseCmd = new G4UIcmdWithAnInteger("/CCal/generator/verbose",this);
45  verboseCmd->SetGuidance("set Verbosity level ");
46  verboseCmd->SetParameterName("value",true);
47  verboseCmd->SetDefaultValue(0);
48  verboseCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
49
50  rndmCmd = new G4UIcmdWithAString("/CCal/generator/random",this);
51  rndmCmd->SetGuidance("Choose randomly energy and direction of the incident particle.");
52  rndmCmd->SetGuidance("  Choice : on,off(default)");
53  rndmCmd->SetParameterName("choice",true);
54  rndmCmd->SetDefaultValue("off");
55  rndmCmd->SetCandidates("on off ON OFF");
56  rndmCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
57
58  scanCmd = new G4UIcmdWithAString("/CCal/generator/scan",this);
59  scanCmd->SetGuidance("Scan eta and phi ranges with single incident particle");
60  scanCmd->SetGuidance("  Choice : on,off(default)");
61  scanCmd->SetGuidance("  Ranges : etamin/max, phimin/max are set by other commands ");
62  scanCmd->SetParameterName("choice",true);
63  scanCmd->SetDefaultValue("off");
64  scanCmd->SetCandidates("on off ON OFF");
65  scanCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
66
67  minEnergyCmd = new G4UIcmdWithADoubleAndUnit("/CCal/generator/minEnergy",this);
68  minEnergyCmd->SetGuidance("Set minimum Energy for the incident particle.");
69  minEnergyCmd->SetParameterName("value",true);
70  minEnergyCmd->SetDefaultValue(1.);
71  minEnergyCmd->SetDefaultUnit("GeV");
72  minEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
73 
74  maxEnergyCmd = new G4UIcmdWithADoubleAndUnit("/CCal/generator/maxEnergy",this);
75  maxEnergyCmd->SetGuidance("Set maximum Energy for the incident particle.");
76  maxEnergyCmd->SetParameterName("value",true);
77  maxEnergyCmd->SetDefaultValue(1.);
78  maxEnergyCmd->SetDefaultUnit("TeV");
79  maxEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
80
81  minPhiCmd = new G4UIcmdWithADoubleAndUnit("/CCal/generator/minPhi",this);
82  minPhiCmd->SetGuidance("Set minimum Phi angle for the incident particle direction");
83  minPhiCmd->SetGuidance("  Choice : from 0 to 2*pi ");
84  minPhiCmd->SetParameterName("value",true);
85  minPhiCmd->SetDefaultValue(0);
86  minPhiCmd->SetDefaultUnit("radian");
87  minPhiCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
88
89  maxPhiCmd = new G4UIcmdWithADoubleAndUnit("/CCal/generator/maxPhi",this);
90  maxPhiCmd->SetGuidance("Set maximum Phi angle for the incident particle direction");
91  maxPhiCmd->SetGuidance("  Choice : from 0 to 2*pi ");
92  maxPhiCmd->SetParameterName("value",true);
93  maxPhiCmd->SetDefaultValue(2.*pi);
94  maxPhiCmd->SetDefaultUnit("radian");
95  maxPhiCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
96
97  stepsPhiCmd = new G4UIcmdWithAnInteger("/CCal/generator/stepsPhi",this);
98  stepsPhiCmd->SetGuidance("number of steps along Phi for scan ");
99  stepsPhiCmd->SetParameterName("value",true);
100  stepsPhiCmd->SetDefaultValue(1);
101  stepsPhiCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
102
103  minEtaCmd = new G4UIcmdWithADouble("/CCal/generator/minEta",this);
104  minEtaCmd->SetGuidance("Set minimum Eta angle for the incident particle direction");
105  minEtaCmd->SetGuidance("  Choice : from 0 to infinity");
106  minEtaCmd->SetParameterName("value",true);
107  minEtaCmd->SetDefaultValue(0);
108  minEtaCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
109
110  maxEtaCmd = new G4UIcmdWithADouble("/CCal/generator/maxEta",this);
111  maxEtaCmd->SetGuidance("Set maximum Eta angle for the incident particle direction");
112  maxEtaCmd->SetGuidance("  Choice : from 0 to infinity");
113  maxEtaCmd->SetParameterName("value",true);
114  maxEtaCmd->SetDefaultValue(3.5);
115  maxEtaCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
116
117  stepsEtaCmd = new G4UIcmdWithAnInteger("/CCal/generator/stepsEta",this);
118  stepsEtaCmd->SetGuidance("number of steps along Eta for scan ");
119  stepsEtaCmd->SetParameterName("value",true);
120  stepsEtaCmd->SetDefaultValue(1);
121  stepsEtaCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
122
123  runNoCmd = new G4UIcmdWithAnInteger("/CCal/generator/runNo",this);
124  runNoCmd->SetGuidance("set the run number ");
125  runNoCmd->SetParameterName("value",true);
126  runNoCmd->SetDefaultValue(0);
127  runNoCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
128
129}
130
131CCalPrimaryGeneratorMessenger::~CCalPrimaryGeneratorMessenger() {
132
133  if (verboseCmd)
134    delete verboseCmd;
135  if (scanCmd)
136    delete rndmCmd;
137  if (scanCmd)
138    delete scanCmd;
139  if (minEnergyCmd)
140    delete minEnergyCmd;
141  if (maxEnergyCmd)
142    delete maxEnergyCmd;
143  if (minPhiCmd)
144    delete minPhiCmd;
145  if (maxPhiCmd)
146    delete maxPhiCmd;
147  if (stepsPhiCmd)
148    delete stepsPhiCmd;
149  if (minEtaCmd)
150    delete minEtaCmd;
151  if (maxEtaCmd)
152    delete maxEtaCmd;
153  if (stepsEtaCmd)
154    delete stepsEtaCmd;
155  if (runNoCmd)
156    delete runNoCmd;
157
158}
159
160void CCalPrimaryGeneratorMessenger::SetNewValue(G4UIcommand * command,
161                                                G4String newValues)    { 
162  if (command == verboseCmd)
163    myAction->SetVerboseLevel(verboseCmd->GetNewIntValue(newValues));
164  else if (command == rndmCmd)
165    myAction->SetRandom(newValues);
166  else if (command == scanCmd)
167    myAction->SetScan(newValues);
168  else if (command == minEnergyCmd)
169    myAction->SetMinimumEnergy(minEnergyCmd->GetNewDoubleValue(newValues));
170  else if (command == maxEnergyCmd)
171    myAction->SetMaximumEnergy(maxEnergyCmd->GetNewDoubleValue(newValues));
172  else if (command == minPhiCmd)
173    myAction->SetMinimumPhi(minPhiCmd->GetNewDoubleValue(newValues));
174  else if (command == maxPhiCmd)
175    myAction->SetMaximumPhi(maxPhiCmd->GetNewDoubleValue(newValues));
176  else if (command == stepsPhiCmd)
177    myAction->SetStepsPhi(stepsPhiCmd->GetNewIntValue(newValues));
178  else if (command == minEtaCmd)
179    myAction->SetMinimumEta(minEtaCmd->GetNewDoubleValue(newValues));
180  else if (command == maxEtaCmd)
181    myAction->SetMaximumEta(maxEtaCmd->GetNewDoubleValue(newValues));
182  else if (command == stepsEtaCmd)
183    myAction->SetStepsEta(stepsEtaCmd->GetNewIntValue(newValues));
184  else if (command == runNoCmd)
185    myAction->SetRunNo(runNoCmd->GetNewIntValue(newValues));
186 
187}
Note: See TracBrowser for help on using the repository browser.