]>
Commit | Line | Data |
---|---|---|
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 | 21 | AliModulesCompositionMessenger::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 | 75 | AliModulesCompositionMessenger::AliModulesCompositionMessenger() { |
76 | // | |
77 | } | |
78 | ||
3cf9eae1 | 79 | //_____________________________________________________________________________ |
676fb573 | 80 | AliModulesCompositionMessenger::AliModulesCompositionMessenger( |
81 | const AliModulesCompositionMessenger& right) | |
82 | { | |
83 | // | |
84 | AliGlobals::Exception( | |
85 | "AliModulesCompositionMessenger is protected from copying."); | |
86 | } | |
87 | ||
3cf9eae1 | 88 | //_____________________________________________________________________________ |
676fb573 | 89 | AliModulesCompositionMessenger::~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 | 103 | AliModulesCompositionMessenger& |
104 | AliModulesCompositionMessenger::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 | 119 | void 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 | } |