]>
Commit | Line | Data |
---|---|---|
dee1d5f1 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
5f91c9e8 | 16 | // $Id$ |
f023e45b | 17 | // $MpId: AliMpFiles.cxx,v 1.12 2006/05/23 13:09:54 ivana Exp $ |
dee1d5f1 | 18 | // Category: basic |
3d1463c8 | 19 | |
20 | //----------------------------------------------------------------------------- | |
5f91c9e8 | 21 | // Class AliMpFiles |
22 | // ---------------- | |
23 | // Class for generating file names and paths. | |
24 | // The input files: | |
25 | // zones.dat, zones_special.dat - sector description | |
26 | // motif*.dat - motif description (generated from Exceed) | |
27 | // padPos*.dat - pad positions in motif | |
28 | // | |
dbe945cc | 29 | // Included in AliRoot: 2003/05/02 |
5f91c9e8 | 30 | // Authors: David Guez, Ivana Hrivnacova; IPN Orsay |
3d1463c8 | 31 | //----------------------------------------------------------------------------- |
5f91c9e8 | 32 | |
5f91c9e8 | 33 | #include "AliMpFiles.h" |
2c605e66 | 34 | |
7f54909e | 35 | #include "AliLog.h" |
2c605e66 | 36 | |
37 | #include <TClass.h> | |
38 | #include <Riostream.h> | |
39 | ||
40 | #include <stdlib.h> | |
5f91c9e8 | 41 | |
13985652 | 42 | /// \cond CLASSIMP |
43 | ClassImp(AliMpFiles) | |
44 | /// \endcond | |
7f54909e | 45 | |
13985652 | 46 | // |
f023e45b | 47 | // static |
48 | ||
5f91c9e8 | 49 | // static data members |
50 | ||
be2a6782 | 51 | const TString AliMpFiles::fgkDataDir = "/data"; |
ab167304 | 52 | const TString AliMpFiles::fgkDataRunDir = "/data_run"; |
be2a6782 | 53 | const TString AliMpFiles::fgkStationDir = "/station"; |
228fd720 | 54 | const TString AliMpFiles::fgkBendingDir = "bending_plane/"; |
55 | const TString AliMpFiles::fgkNonBendingDir = "non-bending_plane/"; | |
0025a53e | 56 | const TString AliMpFiles::fgkDENames = "denames"; |
5f91c9e8 | 57 | const TString AliMpFiles::fgkSector = "zones"; |
58 | const TString AliMpFiles::fgkSectorSpecial = "zones_special"; | |
be2a6782 | 59 | const TString AliMpFiles::fgkSectorSpecial2 = "zones_special_outer"; |
5f91c9e8 | 60 | const TString AliMpFiles::fgkMotifPrefix = "motif"; |
61 | const TString AliMpFiles::fgkMotifSpecialPrefix ="motifSpecial"; | |
ec5079b1 | 62 | const TString AliMpFiles::fgkManuToSerial ="_manu"; |
5f91c9e8 | 63 | const TString AliMpFiles::fgkPadPosPrefix = "padPos"; |
64 | const TString AliMpFiles::fgkDataExt = ".dat"; | |
228fd720 | 65 | const TString AliMpFiles::fgkBergToGCFileName = "bergToGC"; |
40c8e44b | 66 | const TString AliMpFiles::fgkTriggerLocalBoards = "RegionalCrate"; |
67 | const TString AliMpFiles::fgkTriggerGlobalBoards = "GlobalCrate"; | |
4df2ac68 | 68 | const TString AliMpFiles::fgkBusPatchFileName = "DetElemIdToBusPatch"; |
59754717 | 69 | const TString AliMpFiles::fgkBusPatchInfoFileName = "BusPatchInfo"; |
ae649dcb | 70 | const TString AliMpFiles::fgkBusPatchSpecialFileName = "BusPatchSpecial"; |
8b68068b | 71 | const TString AliMpFiles::fgkSerialToBinFileName = "ManuSerialToBin"; |
72 | ||
5f91c9e8 | 73 | //______________________________________________________________________________ |
dee1d5f1 | 74 | AliMpFiles::~AliMpFiles() |
75 | { | |
76 | /// Destructor | |
5f91c9e8 | 77 | } |
78 | ||
5f91c9e8 | 79 | // |
80 | // private methods | |
81 | // | |
82 | ||
83 | //______________________________________________________________________________ | |
cddd101e | 84 | TString AliMpFiles::PlaneDataDir(AliMp::StationType station, |
85 | AliMp::PlaneType plane) | |
5f91c9e8 | 86 | { |
dee1d5f1 | 87 | /// Returns path to data files with sector description |
88 | /// for a specified plane. | |
5f91c9e8 | 89 | |
dee1d5f1 | 90 | switch (station) { |
cddd101e | 91 | case AliMp::kStation1: |
92 | case AliMp::kStation2: | |
dee1d5f1 | 93 | switch (plane) { |
cddd101e | 94 | case AliMp::kBendingPlane: |
d9100e8b | 95 | return GetTop() + fgkDataDir + StationDataDir(station) + fgkBendingDir; |
dee1d5f1 | 96 | ;; |
cddd101e | 97 | case AliMp::kNonBendingPlane: |
d9100e8b | 98 | return GetTop() + fgkDataDir + StationDataDir(station) + fgkNonBendingDir; |
dee1d5f1 | 99 | ;; |
100 | } | |
101 | break; | |
cddd101e | 102 | case AliMp::kStation345: |
103 | case AliMp::kStationTrigger: | |
228fd720 | 104 | return GetTop() + fgkDataDir + StationDataDir(station); |
7f54909e | 105 | break; |
106 | default: | |
cddd101e | 107 | AliFatalClass("Incomplete switch on AliMp::PlaneType"); |
dee1d5f1 | 108 | break; |
109 | } | |
5f91c9e8 | 110 | return TString(); |
111 | } | |
112 | ||
be2a6782 | 113 | //______________________________________________________________________________ |
cddd101e | 114 | TString AliMpFiles::StationDataDir(AliMp::StationType station) |
be2a6782 | 115 | { |
dee1d5f1 | 116 | /// Returns the station directory name for the specified station number. |
be2a6782 | 117 | |
118 | TString stationDataDir(fgkStationDir); | |
119 | switch (station) { | |
cddd101e | 120 | case AliMp::kStation1: |
0025a53e | 121 | stationDataDir += "1/"; |
dee1d5f1 | 122 | break; |
123 | ;; | |
cddd101e | 124 | case AliMp::kStation2: |
0025a53e | 125 | stationDataDir += "2/"; |
dee1d5f1 | 126 | break; |
127 | ;; | |
cddd101e | 128 | case AliMp::kStation345: |
dee1d5f1 | 129 | stationDataDir += "345/"; |
130 | break; | |
131 | ;; | |
cddd101e | 132 | case AliMp::kStationTrigger: |
7f54909e | 133 | stationDataDir += "Trigger/"; |
134 | break; | |
135 | ;; | |
136 | default: | |
137 | stationDataDir += "Invalid/"; | |
138 | break; | |
be2a6782 | 139 | } |
140 | return stationDataDir; | |
141 | } | |
142 | ||
5f91c9e8 | 143 | // |
144 | // public methods | |
145 | // | |
146 | ||
4df2ac68 | 147 | //______________________________________________________________________________ |
148 | TString AliMpFiles::BusPatchFilePath() | |
149 | { | |
150 | /// Return path to data file with bus patch mapping. | |
151 | ||
d9100e8b | 152 | return GetTop() + fgkDataDir + "/" + fgkBusPatchFileName + fgkDataExt; |
4df2ac68 | 153 | } |
154 | ||
0b121e9e | 155 | //______________________________________________________________________________ |
59754717 | 156 | TString AliMpFiles::BusPatchInfoFilePath() |
0b121e9e | 157 | { |
158 | /// Return path to data file with bus patch mapping. | |
159 | ||
59754717 | 160 | return GetTop() + fgkDataDir + "/" + fgkBusPatchInfoFileName + fgkDataExt; |
0b121e9e | 161 | } |
162 | ||
ae649dcb | 163 | //______________________________________________________________________________ |
164 | TString AliMpFiles::BusPatchSpecialFilePath() | |
165 | { | |
166 | /// Return path to data file with special bus patch mapping. | |
167 | ||
168 | return GetTop() + fgkDataDir + "/" + fgkBusPatchSpecialFileName + fgkDataExt; | |
169 | } | |
170 | ||
8b68068b | 171 | //______________________________________________________________________________ |
172 | TString AliMpFiles::SerialToBinFilePath() | |
173 | { | |
174 | /// Return path to data file containing manu serial numbers with their bin. | |
175 | ||
176 | return GetTop() + fgkDataDir + "/" + fgkSerialToBinFileName + fgkDataExt; | |
177 | } | |
178 | ||
179 | ||
0025a53e | 180 | //______________________________________________________________________________ |
cddd101e | 181 | TString AliMpFiles::DENamesFilePath(AliMp::StationType station) |
0025a53e | 182 | { |
183 | /// Return path to data file with DE names for given station. | |
184 | ||
d9100e8b | 185 | return GetTop() + fgkDataDir + StationDataDir(station) + fgkDENames + fgkDataExt; |
0025a53e | 186 | } |
187 | ||
4df2ac68 | 188 | //______________________________________________________________________________ |
189 | TString AliMpFiles::LocalTriggerBoardMapping() | |
190 | { | |
f023e45b | 191 | /// Return path to data file with local trigger board mapping. |
490da820 | 192 | |
cddd101e | 193 | return GetTop() + fgkDataDir + StationDataDir(AliMp::kStationTrigger) |
f023e45b | 194 | + fgkTriggerLocalBoards + fgkDataExt;; |
4df2ac68 | 195 | } |
196 | ||
40c8e44b | 197 | //______________________________________________________________________________ |
198 | TString AliMpFiles::GlobalTriggerBoardMapping() | |
199 | { | |
200 | /// Return path to data file with local trigger board mapping. | |
201 | ||
202 | return GetTop() + fgkDataDir + StationDataDir(AliMp::kStationTrigger) | |
203 | + fgkTriggerGlobalBoards + fgkDataExt;; | |
204 | } | |
205 | ||
dee1d5f1 | 206 | //_____________________________________________________________________________ |
cddd101e | 207 | TString AliMpFiles::SlatFilePath(AliMp::StationType stationType, |
7f54909e | 208 | const char* slatType, |
cddd101e | 209 | AliMp::PlaneType plane) |
dee1d5f1 | 210 | { |
211 | /// \todo add .. | |
212 | ||
7f54909e | 213 | return TString(PlaneDataDir(stationType,plane) + slatType + "." + |
cddd101e | 214 | ( plane == AliMp::kNonBendingPlane ? "NonBending":"Bending" ) + ".slat"); |
dee1d5f1 | 215 | } |
216 | ||
217 | //_____________________________________________________________________________ | |
cddd101e | 218 | TString AliMpFiles::SlatPCBFilePath(AliMp::StationType stationType, |
7f54909e | 219 | const char* pcbType) |
dee1d5f1 | 220 | { |
221 | /// Get the full path for a given PCB (only relevant to stations 3, | |
7f54909e | 222 | /// 4, 5 and trigger). The bending parameter below is of no use in this case, but |
dee1d5f1 | 223 | /// we use it to re-use the PlaneDataDir() method untouched. |
224 | ||
cddd101e | 225 | return TString(PlaneDataDir(stationType,AliMp::kNonBendingPlane) + pcbType + |
7f54909e | 226 | ".pcb"); |
dee1d5f1 | 227 | } |
228 | ||
5f91c9e8 | 229 | //______________________________________________________________________________ |
cddd101e | 230 | TString AliMpFiles::SectorFilePath(AliMp::StationType station, |
231 | AliMp::PlaneType plane) | |
5f91c9e8 | 232 | { |
dee1d5f1 | 233 | /// Return path to data file with sector description. |
5f91c9e8 | 234 | |
be2a6782 | 235 | return TString(PlaneDataDir(station, plane) + fgkSector + fgkDataExt); |
236 | } | |
237 | ||
238 | //______________________________________________________________________________ | |
cddd101e | 239 | TString AliMpFiles::SectorSpecialFilePath(AliMp::StationType station, |
240 | AliMp::PlaneType plane) | |
be2a6782 | 241 | { |
dee1d5f1 | 242 | /// Return path to data file with sector special description (irregular motifs). |
be2a6782 | 243 | |
244 | return TString(PlaneDataDir(station, plane) + fgkSectorSpecial + fgkDataExt); | |
5f91c9e8 | 245 | } |
246 | ||
247 | //______________________________________________________________________________ | |
cddd101e | 248 | TString AliMpFiles::SectorSpecialFilePath2(AliMp::StationType station, |
249 | AliMp::PlaneType plane) | |
5f91c9e8 | 250 | { |
dee1d5f1 | 251 | /// Returns path to data file with sector special description (irregular motifs). |
5f91c9e8 | 252 | |
be2a6782 | 253 | return TString(PlaneDataDir(station, plane) + fgkSectorSpecial2 + fgkDataExt); |
5f91c9e8 | 254 | } |
82915841 | 255 | |
256 | //______________________________________________________________________________ | |
257 | TString AliMpFiles::MotifFileName(const TString& motifTypeID) | |
258 | { | |
259 | /// Returns name of data file for a given motif type. | |
260 | ||
261 | return TString(fgkMotifPrefix + motifTypeID + fgkDataExt); | |
262 | } | |
263 | ||
5f91c9e8 | 264 | //______________________________________________________________________________ |
cddd101e | 265 | TString AliMpFiles::MotifFilePath(AliMp::StationType station, |
266 | AliMp::PlaneType plane, | |
7f54909e | 267 | const TString& motifTypeID) |
5f91c9e8 | 268 | { |
dee1d5f1 | 269 | /// Returns path to data file for a given motif type. |
5f91c9e8 | 270 | |
82915841 | 271 | return TString(PlaneDataDir(station, plane) + MotifFileName(motifTypeID)); |
5f91c9e8 | 272 | } |
82915841 | 273 | |
274 | //______________________________________________________________________________ | |
275 | TString AliMpFiles::PadPosFileName(const TString& motifTypeID) | |
276 | { | |
277 | /// Returns name of data file with pad positions for a given motif type. | |
278 | ||
279 | return TString(fgkPadPosPrefix + motifTypeID + fgkDataExt); | |
280 | } | |
281 | ||
5f91c9e8 | 282 | //______________________________________________________________________________ |
cddd101e | 283 | TString AliMpFiles::PadPosFilePath(AliMp::StationType station, |
284 | AliMp::PlaneType plane, | |
7f54909e | 285 | const TString& motifTypeID) |
5f91c9e8 | 286 | { |
dee1d5f1 | 287 | /// Returns path to data file with pad positions for a given motif type. |
5f91c9e8 | 288 | |
82915841 | 289 | return TString(PlaneDataDir(station, plane) + PadPosFileName(motifTypeID)); |
290 | } | |
291 | ||
292 | //______________________________________________________________________________ | |
293 | TString AliMpFiles::MotifSpecialFileName(const TString& motifID) | |
294 | { | |
295 | /// Returns name of data file with pad dimensions for a given motif ID. | |
296 | ||
297 | return TString(fgkMotifSpecialPrefix + motifID + fgkDataExt); | |
298 | ||
5f91c9e8 | 299 | } |
300 | ||
301 | //______________________________________________________________________________ | |
cddd101e | 302 | TString AliMpFiles::MotifSpecialFilePath(AliMp::StationType station, |
303 | AliMp::PlaneType plane, | |
7f54909e | 304 | const TString& motifID) |
5f91c9e8 | 305 | { |
dee1d5f1 | 306 | /// Returns path to data file with pad dimensions for a given motif ID. |
5f91c9e8 | 307 | |
82915841 | 308 | return TString(PlaneDataDir(station, plane) + MotifSpecialFileName(motifID)); |
5f91c9e8 | 309 | } |
310 | ||
311 | //______________________________________________________________________________ | |
cddd101e | 312 | TString AliMpFiles::BergToGCFilePath(AliMp::StationType station) |
5f91c9e8 | 313 | { |
dee1d5f1 | 314 | /// Returns the path of the file which describes the correspondance between |
315 | /// the berg number and the gassiplex channel. | |
5f91c9e8 | 316 | |
d9100e8b | 317 | return GetTop() + fgkDataDir + StationDataDir(station) |
be2a6782 | 318 | + fgkBergToGCFileName + fgkDataExt; |
5f91c9e8 | 319 | } |
7f54909e | 320 | |
ec5079b1 | 321 | //______________________________________________________________________________ |
cddd101e | 322 | TString AliMpFiles::ManuToSerialPath(const TString& deName, AliMp::StationType station) |
ec5079b1 | 323 | { |
324 | /// Returns the path of the file for the manu id to their serial number | |
325 | ||
ab167304 | 326 | return GetTop() + fgkDataRunDir + StationDataDir(station) |
327 | + deName + fgkManuToSerial + fgkDataExt; | |
ec5079b1 | 328 | } |
329 | ||
330 | ||
7f54909e | 331 | //______________________________________________________________________________ |
332 | void | |
333 | AliMpFiles::SetTopPath(const TString& topPath) | |
334 | { | |
71a2d3aa | 335 | /// Set top file path |
336 | ||
d9100e8b | 337 | GetTop() = topPath; |
7f54909e | 338 | } |
339 | ||
228fd720 | 340 | //______________________________________________________________________________ |
341 | TString AliMpFiles::GetTop() | |
342 | { | |
343 | /// Return top path to mapping data defined either via MINSTALL | |
344 | /// or ALICE_ROOT environment variable. \n | |
345 | /// If both variables are defined, MINSTALL is used. | |
346 | ||
347 | TString top = getenv("MINSTALL"); | |
348 | if ( ! top.IsNull() ) return top; | |
349 | ||
350 | TString ntop = getenv("ALICE_ROOT"); | |
351 | if ( ntop.IsNull() ) { | |
352 | AliErrorClassStream() << "Cannot find path to mapping data." << endl; | |
353 | return ntop; | |
354 | } | |
355 | ntop += "/MUON/mapping"; | |
356 | return ntop; | |
357 | } | |
358 |