4 // Author: I. Hrivnacova
6 // Class AliDetSwitchVectorMessenger
7 // ------------------------------------
8 // See the class description in the header file.
10 #include "AliDetSwitchVectorMessenger.h"
11 #include "AliDetSwitchVector.h"
12 #include "AliGlobals.h"
14 #include <G4UIdirectory.hh>
15 #include <G4UIcmdWithAString.hh>
16 #include <G4UIcmdWithoutParameter.hh>
18 //_____________________________________________________________________________
19 AliDetSwitchVectorMessenger::AliDetSwitchVectorMessenger(
20 AliDetSwitchVector* switchVector)
21 : fDetSwitchVector(switchVector)
24 fSwitchOnCmd = new G4UIcmdWithAString("/aliDet/switchOn", this);
25 fSwitchOnCmd->SetGuidance("Define the module to be built.");
26 fSwitchOnCmd->SetGuidance("Available modules:");
27 G4String listAvailableDets = "NONE, ALL";
28 fSwitchOnCmd->SetGuidance(listAvailableDets);
29 fSwitchOnCmd->SetParameterName("module", false);
30 fSwitchOnCmd->AvailableForStates(PreInit);;
32 fSwitchOffCmd = new G4UIcmdWithAString("/aliDet/switchOff", this);
33 fSwitchOffCmd->SetGuidance("Define the module not to be built.");
34 fSwitchOffCmd->SetGuidance("Available modules:");
35 G4String listDetsNames = "ALL";
36 fSwitchOffCmd->SetGuidance(listDetsNames);
37 fSwitchOffCmd->SetParameterName("module", false);
38 fSwitchOffCmd->AvailableForStates(PreInit);;
41 = new G4UIcmdWithoutParameter("/aliDet/list", this);
42 fListCmd->SetGuidance("List the currently switched modules.");
44 ->AvailableForStates(PreInit, Init, Idle, GeomClosed, EventProc);
47 = new G4UIcmdWithoutParameter("/aliDet/listAvailable", this);
48 fListAvailableCmd->SetGuidance("List all available modules.");
50 ->AvailableForStates(PreInit, Init, Idle, GeomClosed, EventProc);
53 //_____________________________________________________________________________
54 AliDetSwitchVectorMessenger::AliDetSwitchVectorMessenger() {
58 //_____________________________________________________________________________
59 AliDetSwitchVectorMessenger::AliDetSwitchVectorMessenger(
60 const AliDetSwitchVectorMessenger& right)
63 AliGlobals::Exception(
64 "AliDetSwitchVectorMessenger is protected from copying.");
67 //_____________________________________________________________________________
68 AliDetSwitchVectorMessenger::~AliDetSwitchVectorMessenger() {
73 delete fListAvailableCmd;
78 //_____________________________________________________________________________
79 AliDetSwitchVectorMessenger&
80 AliDetSwitchVectorMessenger::operator=(const AliDetSwitchVectorMessenger& right)
82 // check assignement to self
83 if (this == &right) return *this;
85 AliGlobals::Exception(
86 "AliDetSwitchVectorMessenger is protected from assigning.");
93 //_____________________________________________________________________________
94 void AliDetSwitchVectorMessenger::SetGuidance()
96 // Updates guidance, candidates list.
99 G4String listAvailableDets = "NONE, ALL, ";
101 = listAvailableDets + fDetSwitchVector->GetAvailableDetsListWithCommas();
102 fSwitchOnCmd->SetGuidance(listAvailableDets);
104 G4String listDetsNames = "ALL, ";
106 = listDetsNames + fDetSwitchVector->GetDetNamesListWithCommas();
107 fSwitchOffCmd->SetGuidance(listDetsNames);
110 //_____________________________________________________________________________
111 void AliDetSwitchVectorMessenger::SetCandidates()
113 // Builds candidates list.
116 G4String candidatesList = "NONE ALL ";
117 candidatesList += fDetSwitchVector->GetDetNamesList();;
118 candidatesList += fDetSwitchVector->GetAvailableDetsList();
119 fSwitchOnCmd->SetCandidates(candidatesList);
121 candidatesList = "ALL ";
122 candidatesList += fDetSwitchVector->GetDetNamesList();;
123 fSwitchOffCmd->SetCandidates(candidatesList);
128 //_____________________________________________________________________________
129 void AliDetSwitchVectorMessenger::SetNewValue(G4UIcommand* command,
132 // Applies command to the associated object.
135 if (command == fSwitchOnCmd) {
136 fDetSwitchVector->SwitchDetOn(newValues);
138 else if (command == fSwitchOffCmd) {
139 fDetSwitchVector->SwitchDetOff(newValues);
141 else if (command == fListCmd) {
142 fDetSwitchVector->PrintSwitchedDets();
144 else if (command == fListAvailableCmd) {
145 fDetSwitchVector->PrintAvailableDets();
149 //_____________________________________________________________________________
150 void AliDetSwitchVectorMessenger::Update()
152 // Updates guidance, candidates list.
158 // set default values to a detector
159 fDetSwitchVector->SwitchDetOn("NONE");