Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/composite_calorimeter/src/CCalPrimaryGeneratorMessenger.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

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