4 // See the class description in the header file.
6 #include "AliModulesCompositionMessenger.h"
7 #include "AliModulesComposition.h"
8 #include "AliGlobals.h"
10 #include <G4UIdirectory.hh>
11 #include <G4UIcmdWithAString.hh>
12 #include <G4UIcmdWithoutParameter.hh>
13 #include <G4UIcmdWithABool.hh>
14 #include <G4UIcmdWithADoubleAndUnit.hh>
16 //_____________________________________________________________________________
17 AliModulesCompositionMessenger::AliModulesCompositionMessenger(
18 AliModulesComposition* modulesComposition)
19 : fModulesComposition(modulesComposition)
22 fDirectory = new G4UIdirectory("/aliDet/");
23 fDirectory->SetGuidance("Detector construction control commands.");
25 fSwitchOnCmd = new G4UIcmdWithAString("/aliDet/switchOn", this);
26 fSwitchOnCmd->SetGuidance("Define the module to be built.");
27 fSwitchOnCmd->SetGuidance("Available modules:");
28 G4String listAvailableDets = "NONE, ALL, PPR, ";
30 = listAvailableDets + modulesComposition->GetAvailableDetsListWithCommas();
31 fSwitchOnCmd->SetGuidance(listAvailableDets);
32 fSwitchOnCmd->SetParameterName("module", false);
33 fSwitchOnCmd->AvailableForStates(PreInit);;
35 fSwitchOffCmd = new G4UIcmdWithAString("/aliDet/switchOff", this);
36 fSwitchOffCmd->SetGuidance("Define the module not to be built.");
37 fSwitchOffCmd->SetGuidance("Available modules:");
38 G4String listDetsNames = "ALL, ";
40 = listDetsNames + modulesComposition->GetDetNamesListWithCommas();
41 fSwitchOffCmd->SetGuidance(listDetsNames);
42 fSwitchOffCmd->SetParameterName("module", false);
43 fSwitchOffCmd->AvailableForStates(PreInit);;
46 = new G4UIcmdWithoutParameter("/aliDet/list", this);
47 fListCmd->SetGuidance("List the currently switched modules.");
49 ->AvailableForStates(PreInit, Init, Idle, GeomClosed, EventProc);
52 = new G4UIcmdWithoutParameter("/aliDet/listAvailable", this);
53 fListAvailableCmd->SetGuidance("List all available modules.");
55 ->AvailableForStates(PreInit, Init, Idle, GeomClosed, EventProc);
57 fFieldValueCmd = new G4UIcmdWithADoubleAndUnit("/aliDet/fieldValue", this);
58 fFieldValueCmd->SetGuidance("Define magnetic field in Z direction.");
59 fFieldValueCmd->SetParameterName("fieldValue", false, false);
60 fFieldValueCmd->SetDefaultUnit("tesla");
61 fFieldValueCmd->SetUnitCategory("Magnetic flux density");
62 fFieldValueCmd->AvailableForStates(PreInit,Idle);
65 = new G4UIcmdWithABool("/aliDet/readGeometry", this);
66 fSetReadGeometryCmd->SetGuidance("Read geometry from g3calls.dat files");
67 fSetReadGeometryCmd->SetParameterName("readGeometry", false);
68 fSetReadGeometryCmd->AvailableForStates(PreInit);
71 = new G4UIcmdWithABool("/aliDet/writeGeometry", this);
72 fSetWriteGeometryCmd->SetGuidance("Write geometry to g3calls.dat file");
73 fSetWriteGeometryCmd->SetParameterName("writeGeometry", false);
74 fSetWriteGeometryCmd->AvailableForStates(PreInit);
77 = new G4UIcmdWithoutParameter("/aliDet/printMaterials", this);
78 fPrintMaterialsCmd->SetGuidance("Prints all materials.");
79 fPrintMaterialsCmd->AvailableForStates(PreInit, Init, Idle);
82 = new G4UIcmdWithoutParameter("/aliDet/generateXML", this);
83 fGenerateXMLCmd->SetGuidance("Generate geometry XML file.");
84 fGenerateXMLCmd->AvailableForStates(Idle);
87 // set candidates list
90 // set default values to a detector
91 fModulesComposition->SwitchDetOn("NONE");
94 //_____________________________________________________________________________
95 AliModulesCompositionMessenger::AliModulesCompositionMessenger() {
99 //_____________________________________________________________________________
100 AliModulesCompositionMessenger::AliModulesCompositionMessenger(
101 const AliModulesCompositionMessenger& right)
104 AliGlobals::Exception(
105 "AliModulesCompositionMessenger is protected from copying.");
108 //_____________________________________________________________________________
109 AliModulesCompositionMessenger::~AliModulesCompositionMessenger() {
113 delete fSwitchOffCmd;
115 delete fListAvailableCmd;
116 delete fFieldValueCmd;
117 delete fSetReadGeometryCmd;
118 delete fSetWriteGeometryCmd;
119 delete fPrintMaterialsCmd;
120 delete fGenerateXMLCmd;
125 //_____________________________________________________________________________
126 AliModulesCompositionMessenger&
127 AliModulesCompositionMessenger::operator=(
128 const AliModulesCompositionMessenger& right)
130 // check assignement to self
131 if (this == &right) return *this;
133 AliGlobals::Exception(
134 "AliModulesCompositionMessenger is protected from assigning.");
141 //_____________________________________________________________________________
142 void AliModulesCompositionMessenger::SetNewValue(G4UIcommand* command, G4String newValues)
144 // Applies command to the associated object.
147 if (command == fSwitchOnCmd) {
148 fModulesComposition->SwitchDetOn(newValues);
150 else if (command == fSwitchOffCmd) {
151 fModulesComposition->SwitchDetOff(newValues);
153 else if (command == fListCmd) {
154 fModulesComposition->PrintSwitchedDets();
156 else if (command == fListAvailableCmd) {
157 fModulesComposition->PrintAvailableDets();
159 else if (command == fFieldValueCmd) {
161 ->SetMagField(fFieldValueCmd->GetNewDoubleValue(newValues));
163 else if (command == fSetReadGeometryCmd) {
164 fModulesComposition->SetReadGeometry(
165 fSetReadGeometryCmd->GetNewBoolValue(newValues));
167 else if (command == fSetWriteGeometryCmd) {
168 fModulesComposition->SetWriteGeometry(
169 fSetWriteGeometryCmd->GetNewBoolValue(newValues));
171 else if (command == fPrintMaterialsCmd) {
172 fModulesComposition->PrintMaterials();
174 else if (command == fGenerateXMLCmd) {
175 fModulesComposition->GenerateXMLGeometry();
179 //_____________________________________________________________________________
180 void AliModulesCompositionMessenger::SetCandidates()
182 // Builds candidates list.
185 G4String candidatesList = "NONE ALL PPR ";
186 candidatesList += fModulesComposition->GetDetNamesList();;
187 candidatesList += fModulesComposition->GetAvailableDetsList();
188 fSwitchOnCmd->SetCandidates(candidatesList);
190 candidatesList = "ALL ";
191 candidatesList += fModulesComposition->GetDetNamesList();;
192 fSwitchOffCmd->SetCandidates(candidatesList);