4 // Author: I. Hrivnacova
6 // Class AliDetSwitchVector
7 // ---------------------------
8 // See the class description in the header file.
10 #include "AliDetSwitchVector.h"
11 #include "AliDetSwitch.h"
12 #include "AliGlobals.h"
15 //_____________________________________________________________________________
16 AliDetSwitchVector::AliDetSwitchVector()
22 //_____________________________________________________________________________
23 AliDetSwitchVector::AliDetSwitchVector(const AliDetSwitchVector& right)
27 AliGlobals::Exception("AliDetSwitchVector is protected from copying.");
30 //_____________________________________________________________________________
31 AliDetSwitchVector::~AliDetSwitchVector() {
33 // destroy det switch vector
35 for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++)
41 //_____________________________________________________________________________
43 AliDetSwitchVector::operator=(const AliDetSwitchVector& right)
45 // check assignement to self
46 if (this == &right) return *this;
48 AliGlobals::Exception("AliDetSwitchVector is protected from assigning.");
55 //_____________________________________________________________________________
57 AliDetSwitchVector::GetDetSwitch(const G4String& moduleName) const
59 // Returns the detector switch with given detector name.
62 DetSwitchConstIterator it;
63 for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++)
64 if ((*it)->GetDetName() == moduleName) return *it;
66 G4String text = "AliDetSwitchVector::GetDetSwitch:\n";
67 text = text + "Wrong detector name for " + moduleName;
68 AliGlobals::Exception(text);
74 //_____________________________________________________________________________
75 void AliDetSwitchVector::Add(AliDetSwitch* detSwitch)
77 // Adds detSwitch to the detSwitch vector.
80 fDetSwitchVector.push_back(detSwitch);
81 fMessenger.SetCandidates();
84 //_____________________________________________________________________________
85 void AliDetSwitchVector::SwitchDetOn(const G4String& moduleNameVer)
87 // Switchs on module specified by name and version.
92 if (moduleNameVer == "ALL") {
93 for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++)
94 (*it)->SwitchOnDefault();
96 else if (moduleNameVer == "NONE") {
97 for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++)
101 // get version number
102 G4int len = moduleNameVer.length();
103 G4String moduleName = moduleNameVer.substr(0, len-1);
104 G4String version = moduleNameVer.substr(len-1, 1);
105 G4int iVersion = AliGlobals::StringToInt(version);
108 // in case the version number is not provided
109 // the default one is set
110 SwitchDetOnDefault(moduleNameVer);
113 SwitchDetOn(moduleName, iVersion);
117 //_____________________________________________________________________________
118 void AliDetSwitchVector::SwitchDetOn(const G4String& moduleName,
121 // Switchs on module specified by name and version.
124 GetDetSwitch(moduleName)->SwitchOn(version);
127 //_____________________________________________________________________________
128 void AliDetSwitchVector::SwitchDetOnDefault(const G4String& moduleName)
130 // Switchs on module specified by name with default version.
133 GetDetSwitch(moduleName)->SwitchOnDefault();
136 //_____________________________________________________________________________
137 void AliDetSwitchVector::SwitchDetOff(const G4String& moduleName)
139 // Switchs off module specified by name.
142 if (moduleName == "ALL") {
143 DetSwitchIterator it;
144 for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++)
148 GetDetSwitch(moduleName)->SwitchOff();
151 //_____________________________________________________________________________
152 void AliDetSwitchVector::PrintSwitchedDets() const
154 // Lists switched detectors.
157 G4String svList = GetSwitchedDetsList();
159 G4cout << "Switched Alice detectors: " << G4endl;
160 G4cout << "--------------------------" << G4endl;
161 G4cout << svList << G4endl;
164 //_____________________________________________________________________________
165 void AliDetSwitchVector::PrintAvailableDets() const
167 // Lists available detectors.
170 G4String avList = GetAvailableDetsList();
172 G4cout << "Available Alice detectors: " << G4endl;
173 G4cout << "---------------------------" << G4endl;
174 G4cout << avList << G4endl;
177 //_____________________________________________________________________________
178 G4String AliDetSwitchVector::GetSwitchedDetsList() const
180 // Returns list of switched detectors.
183 G4String svList = "";
184 G4int nofSwitchedDets = 0;
185 DetSwitchConstIterator it;
187 for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) {
188 G4int iVersion = (*it)->GetSwitchedVersion();
191 G4String moduleNameVer = (*it)->GetDetName();
192 AliGlobals::AppendNumberToString(moduleNameVer, iVersion);
193 svList += moduleNameVer;
198 if (nofSwitchedDets == fDetSwitchVector.size()) svList = "ALL: " + svList;
199 if (nofSwitchedDets == 0) svList = "NONE";
204 //_____________________________________________________________________________
205 G4String AliDetSwitchVector::GetAvailableDetsList() const
207 // Returns list of available detectors.
210 G4String svList = "";
211 DetSwitchConstIterator it;
213 for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++)
214 for (G4int iv=0; iv<(*it)->GetNofVersions(); iv++) {
215 G4String moduleNameVer = (*it)->GetDetName();
216 AliGlobals::AppendNumberToString(moduleNameVer, iv);
217 svList += moduleNameVer;
224 //_____________________________________________________________________________
225 G4String AliDetSwitchVector::GetAvailableDetsListWithCommas() const
227 // Returns list of available detectors with commas.
230 G4String svList = "";
232 DetSwitchConstIterator it;
234 for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++)
235 for (G4int iv=0; iv<(*it)->GetNofVersions(); iv++) {
236 G4String moduleNameVer = (*it)->GetDetName();
237 AliGlobals::AppendNumberToString(moduleNameVer, iv);
238 svList += moduleNameVer;
239 if (iv < (*it)->GetNofVersions()-1) svList += "/";
240 else if (id++ < fDetSwitchVector.size()-1) svList += ", ";
246 //_____________________________________________________________________________
247 G4String AliDetSwitchVector::GetDetNamesList() const
249 // Returns list of detector names.
252 G4String svList = "";
253 DetSwitchConstIterator it;
255 for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) {
256 svList += (*it)->GetDetName();
263 //_____________________________________________________________________________
264 G4String AliDetSwitchVector::GetDetNamesListWithCommas() const
266 // Returns list of detector names with commas.
269 G4String svList = "";
271 DetSwitchConstIterator it;
273 for (it = fDetSwitchVector.begin(); it != fDetSwitchVector.end(); it++) {
274 svList += (*it)->GetDetName();
275 if (id++ < fDetSwitchVector.size()-1) svList += ", ";