Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4PolarizationMessenger.cc
Go to the documentation of this file.
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$
27//
28//
29// GEANT4 Class file
30//
31// File name: G4PolarizationManager
32//
33// Author: Andreas Schaelicke
34//
35// Creation date: 01.05.2005
36//
37// Modifications:
38//
39// Class Description:
40//
41// Provides access to general polarization information and to
42// polarization for logical volumes through macro files.
43
47
48#include "G4UIdirectory.hh"
49#include "G4Tokenizer.hh"
51#include "G4UIcmdWithAString.hh"
53#include "G4UIcmdWithABool.hh"
54#include "G4ios.hh"
55
56
58 : polarizationManager(polMgr)
59{
60 polarizationDirectory = new G4UIdirectory("/polarization/");
61 polarizationDirectory->SetGuidance("polarization control commands.");
62
63 managerDirectory = new G4UIdirectory("/polarization/manager/");
64 managerDirectory->SetGuidance("general polarization information.");
65
66 verboseCmd = new G4UIcmdWithAnInteger("/polarization/manager/verbose",this);
67 verboseCmd->SetGuidance("Set the Verbose level of G4PolarizationManager.");
68 verboseCmd->SetGuidance(" 0 : Silent (default)");
69 verboseCmd->SetGuidance(" 1 : Verbose");
70 verboseCmd->SetParameterName("level",true);
71 verboseCmd->SetDefaultValue(0);
72 verboseCmd->SetRange("level >=0 && level <=1");
73
74 optActivateCmd = new G4UIcmdWithABool("/polarization/manager/activate",this);
75 optActivateCmd->SetGuidance("activate/deactivate polarization treatment");
76 optActivateCmd->SetParameterName("flag",true);
77 optActivateCmd->SetDefaultValue(true);
78
79
80 volumeDirectory = new G4UIdirectory("/polarization/volume/");
81 volumeDirectory->SetGuidance("Status control commands of registered polarized logical volumes.");
82
83 printVolumeListCmd = new G4UIcmdWithoutParameter("/polarization/volume/list",this);
84 printVolumeListCmd->SetGuidance("print list of registered polarized logical volumes");
86
87 setPolarizationCmd = new G4UIcommand("/polarization/volume/set",this);
88 setPolarizationCmd->SetGuidance("set or change polarization of a logical volume");
89// setPolarizationCmd->SetParameterName("polarization",true);
90// setPolarizationCmd->SetDefaultValue("worldVolume 0. 0. 0.");
92
93 G4UIparameter* param;
94 param = new G4UIparameter("logicalVolumeName",'s',false);
95 param->SetDefaultValue("worldVolume");
96 setPolarizationCmd->SetParameter(param);
97 param = new G4UIparameter("px",'d',true);
98 param->SetDefaultValue("0.0");
99 setPolarizationCmd->SetParameter(param);
100 param = new G4UIparameter("py",'d',true);
101 param->SetDefaultValue("0.0");
102 setPolarizationCmd->SetParameter(param);
103 param = new G4UIparameter("pz",'d',true);
104 param->SetDefaultValue("0.0");
105 setPolarizationCmd->SetParameter(param);
106
107 testDirectory = new G4UIdirectory("/polarization/test/");
108 testDirectory->SetGuidance("provides access to some internal test routines.");
109
110 testPolarizationTransformationCmd = new G4UIcmdWithoutParameter("/polarization/test/polarizationTransformation",this);
111 testPolarizationTransformationCmd->SetGuidance("checks definition of particle reference frame and corresponding translation routines");
112 testPolarizationTransformationCmd->AvailableForStates(G4State_PreInit,G4State_Idle,G4State_GeomClosed);
113
114
115
116}
117
119{
120 delete verboseCmd;
121}
122
124{
125 if( command==verboseCmd ) {
126 polarizationManager->SetVerbose(verboseCmd->GetNewIntValue(newValue));
127 }
128 else if ( command==optActivateCmd ) {
129 polarizationManager->SetActivated(optActivateCmd->GetNewBoolValue(newValue));
130 }
131 else if ( command==printVolumeListCmd ) {
132 polarizationManager->ListVolumes();
133 }
134 else if ( command==setPolarizationCmd ) {
135 G4Tokenizer next( newValue );
136 G4String volumeName=next();
137 G4double px=0.,py=0.,pz=0.;
138 G4String dvalue=next();
139 if (!dvalue.isNull()) {
140 px=StoD(dvalue);
141 dvalue=next();
142 if (!dvalue.isNull()) {
143 py=StoD(dvalue);
144 dvalue=next();
145 if (!dvalue.isNull()) pz=StoD(dvalue);
146 }
147 }
148 G4ThreeVector pol(px,py,pz);
149 polarizationManager->SetVolumePolarization(volumeName,pol);
150 }
151 else if ( command==testPolarizationTransformationCmd ) {
153 }
154 else if (command==testInteractionFrameCmd ) {
156 }
157}
158
160{
161 G4String cv;
162 if( command==verboseCmd )
163 { cv = verboseCmd->ConvertToString(polarizationManager->GetVerbose()); }
164
165 return cv;
166}
@ G4State_Idle
@ G4State_GeomClosed
@ G4State_PreInit
double G4double
Definition: G4Types.hh:64
static void TestPolarizationTransformations()
static void TestInteractionFrame()
void SetVolumePolarization(G4LogicalVolume *lVol, const G4ThreeVector &pol)
void SetNewValue(G4UIcommand *command, G4String newValues)
G4String GetCurrentValue(G4UIcommand *command)
G4PolarizationMessenger(G4PolarizationManager *runMgr)
G4bool isNull() const
static G4bool GetNewBoolValue(const char *paramString)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetDefaultValue(G4bool defVal)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
static G4int GetNewIntValue(const char *paramString)
void SetDefaultValue(G4int defVal)
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:349
void SetParameter(G4UIparameter *const newParameter)
Definition: G4UIcommand.hh:147
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:156
void SetRange(const char *rs)
Definition: G4UIcommand.hh:120
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:219
G4double StoD(G4String s)
void SetDefaultValue(const char *theDefaultValue)