]> git.uio.no Git - u/mrichter/AliRoot.git/blame - AliGeant4/AliModulesCompositionMessenger.cxx
Merging the VirtualMC branch to the main development branch (HEAD)
[u/mrichter/AliRoot.git] / AliGeant4 / AliModulesCompositionMessenger.cxx
CommitLineData
676fb573 1// $Id$
2// Category: geometry
3//
7005154f 4// Author: I. Hrivnacova
5//
6// Class AliModulesCompositionMessenger
7// ------------------------------------
676fb573 8// See the class description in the header file.
9
10#include "AliModulesCompositionMessenger.h"
11#include "AliModulesComposition.h"
12#include "AliGlobals.h"
13
14#include <G4UIdirectory.hh>
676fb573 15#include <G4UIcmdWithoutParameter.hh>
16#include <G4UIcmdWithABool.hh>
b9d0a01d 17#include <G4UIcmdWithAString.hh>
676fb573 18#include <G4UIcmdWithADoubleAndUnit.hh>
19
3cf9eae1 20//_____________________________________________________________________________
676fb573 21AliModulesCompositionMessenger::AliModulesCompositionMessenger(
22 AliModulesComposition* modulesComposition)
23 : fModulesComposition(modulesComposition)
24{
25//
26 fDirectory = new G4UIdirectory("/aliDet/");
27 fDirectory->SetGuidance("Detector construction control commands.");
28
b9d0a01d 29 fFieldTypeCmd = new G4UIcmdWithAString("/aliDet/fieldType", this);
30 G4String guidance = "Select type of magnetic field:\n";
31 guidance = guidance + " MCApplication: field defined by MC application (default)\n";
32 guidance = guidance + " Uniform: uniform magnetic field\n";
33 guidance = guidance + " None: no magnetic field";
34 fFieldTypeCmd->SetGuidance(guidance);
35 fFieldTypeCmd->SetParameterName("FieldType", true);
36 fFieldTypeCmd->SetCandidates("MCApplication Uniform None");
37 fFieldTypeCmd->SetDefaultValue("MCApplication");
38 fFieldTypeCmd->AvailableForStates(PreInit);
39
40 fUniformFieldValueCmd
41 = new G4UIcmdWithADoubleAndUnit("/aliDet/uniformFieldValue", this);
42 fUniformFieldValueCmd
43 ->SetGuidance("Define uniform magnetic field in Z direction.");
44 fUniformFieldValueCmd
45 ->SetGuidance("(Uniform magnetic field type has to be selected first.)");
46 fUniformFieldValueCmd->SetParameterName("UniformFieldValue", false, false);
47 fUniformFieldValueCmd->SetDefaultUnit("tesla");
48 fUniformFieldValueCmd->SetUnitCategory("Magnetic flux density");
49 fUniformFieldValueCmd->AvailableForStates(Idle);
676fb573 50
676fb573 51 fSetReadGeometryCmd
52 = new G4UIcmdWithABool("/aliDet/readGeometry", this);
53 fSetReadGeometryCmd->SetGuidance("Read geometry from g3calls.dat files");
54 fSetReadGeometryCmd->SetParameterName("readGeometry", false);
55 fSetReadGeometryCmd->AvailableForStates(PreInit);
56
57 fSetWriteGeometryCmd
58 = new G4UIcmdWithABool("/aliDet/writeGeometry", this);
59 fSetWriteGeometryCmd->SetGuidance("Write geometry to g3calls.dat file");
60 fSetWriteGeometryCmd->SetParameterName("writeGeometry", false);
61 fSetWriteGeometryCmd->AvailableForStates(PreInit);
62
9225847a 63 fPrintMaterialsCmd
64 = new G4UIcmdWithoutParameter("/aliDet/printMaterials", this);
65 fPrintMaterialsCmd->SetGuidance("Prints all materials.");
66 fPrintMaterialsCmd->AvailableForStates(PreInit, Init, Idle);
67
68 fGenerateXMLCmd
69 = new G4UIcmdWithoutParameter("/aliDet/generateXML", this);
70 fGenerateXMLCmd->SetGuidance("Generate geometry XML file.");
71 fGenerateXMLCmd->AvailableForStates(Idle);
676fb573 72}
73
3cf9eae1 74//_____________________________________________________________________________
676fb573 75AliModulesCompositionMessenger::AliModulesCompositionMessenger() {
76//
77}
78
3cf9eae1 79//_____________________________________________________________________________
676fb573 80AliModulesCompositionMessenger::AliModulesCompositionMessenger(
81 const AliModulesCompositionMessenger& right)
82{
83//
84 AliGlobals::Exception(
85 "AliModulesCompositionMessenger is protected from copying.");
86}
87
3cf9eae1 88//_____________________________________________________________________________
676fb573 89AliModulesCompositionMessenger::~AliModulesCompositionMessenger() {
90//
91 delete fDirectory;
b9d0a01d 92 delete fFieldTypeCmd;
93 delete fUniformFieldValueCmd;
676fb573 94 delete fSetReadGeometryCmd;
95 delete fSetWriteGeometryCmd;
9225847a 96 delete fPrintMaterialsCmd;
97 delete fGenerateXMLCmd;
676fb573 98}
99
100// operators
101
3cf9eae1 102//_____________________________________________________________________________
676fb573 103AliModulesCompositionMessenger&
104AliModulesCompositionMessenger::operator=(
105 const AliModulesCompositionMessenger& right)
106{
107 // check assignement to self
108 if (this == &right) return *this;
109
110 AliGlobals::Exception(
111 "AliModulesCompositionMessenger is protected from assigning.");
112
113 return *this;
114}
115
116// public methods
117
3cf9eae1 118//_____________________________________________________________________________
676fb573 119void AliModulesCompositionMessenger::SetNewValue(G4UIcommand* command, G4String newValues)
120{
121// Applies command to the associated object.
122// ---
123
b9d0a01d 124 if( command == fFieldTypeCmd ) {
125 if (newValues == "MCApplication")
126 fModulesComposition->SetFieldType(kMCApplicationField);
127 if (newValues == "Uniform")
128 fModulesComposition->SetFieldType(kUniformField);
129 if (newValues == "None")
130 fModulesComposition->SetFieldType(kNoField);
131 }
132 if (command == fUniformFieldValueCmd) {
676fb573 133 fModulesComposition
b9d0a01d 134 ->SetUniformFieldValue(fUniformFieldValueCmd->GetNewDoubleValue(newValues));
676fb573 135 }
676fb573 136 else if (command == fSetReadGeometryCmd) {
137 fModulesComposition->SetReadGeometry(
138 fSetReadGeometryCmd->GetNewBoolValue(newValues));
139 }
140 else if (command == fSetWriteGeometryCmd) {
141 fModulesComposition->SetWriteGeometry(
142 fSetWriteGeometryCmd->GetNewBoolValue(newValues));
143 }
9225847a 144 else if (command == fPrintMaterialsCmd) {
145 fModulesComposition->PrintMaterials();
146 }
147 else if (command == fGenerateXMLCmd) {
148 fModulesComposition->GenerateXMLGeometry();
149 }
676fb573 150}