Adding comment lines to class description needed for Root documentation,
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpFiles.cxx
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
16 // $Id$
17 // $MpId: AliMpFiles.cxx,v 1.12 2006/05/23 13:09:54 ivana Exp $
18 // Category: basic
19
20 //-----------------------------------------------------------------------------
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 //
29 // Included in AliRoot: 2003/05/02
30 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
31 //-----------------------------------------------------------------------------
32
33 #include "AliMpFiles.h"
34
35 #include "AliLog.h"
36
37 #include <TClass.h>
38 #include <Riostream.h>
39
40 #include <stdlib.h>
41
42 /// \cond CLASSIMP
43 ClassImp(AliMpFiles)
44 /// \endcond
45
46 //
47 // static
48
49 // static data members
50
51 const TString AliMpFiles::fgkDataDir = "/data";
52 const TString AliMpFiles::fgkStationDir = "/station";
53 const TString AliMpFiles::fgkBendingDir = "/bending_plane/";
54 const TString AliMpFiles::fgkNonBendingDir = "/non-bending_plane/";
55 const TString AliMpFiles::fgkDENames = "denames"; 
56 const TString AliMpFiles::fgkSector  = "zones"; 
57 const TString AliMpFiles::fgkSectorSpecial = "zones_special";
58 const TString AliMpFiles::fgkSectorSpecial2 = "zones_special_outer";
59 const TString AliMpFiles::fgkMotifPrefix   = "motif";  
60 const TString AliMpFiles::fgkMotifSpecialPrefix ="motifSpecial";
61 const TString AliMpFiles::fgkManuToSerialDir ="manu_serial/";
62 const TString AliMpFiles::fgkManuToSerial ="_manu";
63 const TString AliMpFiles::fgkPadPosPrefix  = "padPos"; 
64 const TString AliMpFiles::fgkDataExt = ".dat";      
65 const TString AliMpFiles::fgkBergToGCFileName = "/bergToGC"; 
66 const TString AliMpFiles::fgkTriggerLocalBoards = "crate";
67 const TString AliMpFiles::fgkBusPatchFileName = "DetElemIdToBusPatch";
68 const TString AliMpFiles::fgkBusPatchLengthFileName = "BusPatchLength";
69 //______________________________________________________________________________
70 AliMpFiles::~AliMpFiles() 
71 {
72 /// Destructor
73 }
74
75 //
76 // private methods
77 //
78
79 //______________________________________________________________________________
80 TString AliMpFiles::GetTop()
81 {
82 /// Return top path to mapping data defined either via MINSTALL
83 /// or ALICE_ROOT environment variable.                                      \n
84 /// If both variables are defined, MINSTALL is used.
85
86   TString top = getenv("MINSTALL");    
87   if ( ! top.IsNull() ) return top;
88
89   TString ntop = getenv("ALICE_ROOT");
90   if ( ntop.IsNull() ) {
91     AliErrorClassStream() << "Cannot find path to mapping data." << endl;
92     return ntop;
93   }  
94   ntop += "/MUON/mapping";
95   return ntop;
96 }
97
98 //______________________________________________________________________________
99 TString AliMpFiles::PlaneDataDir(AliMp::StationType station, 
100                                  AliMp::PlaneType plane)
101 {
102 /// Returns path to data files with sector description
103 /// for a specified plane.
104
105   switch (station) {
106   case AliMp::kStation1:
107   case AliMp::kStation2:
108     switch (plane) {
109     case AliMp::kBendingPlane:
110       return GetTop() + fgkDataDir + StationDataDir(station) + fgkBendingDir;
111       ;;
112     case AliMp::kNonBendingPlane:   
113       return GetTop() + fgkDataDir + StationDataDir(station) + fgkNonBendingDir;
114       ;;
115     }   
116     break;
117   case AliMp::kStation345:
118   case AliMp::kStationTrigger:  
119     return GetTop() + fgkDataDir + StationDataDir(station) + "/";
120     break;
121   default:  
122     AliFatalClass("Incomplete switch on AliMp::PlaneType");
123     break;
124   }
125   return TString();
126 }
127
128 //______________________________________________________________________________
129 TString AliMpFiles::StationDataDir(AliMp::StationType station)
130 {
131 /// Returns the station directory name for the specified station number.
132
133   TString stationDataDir(fgkStationDir);
134   switch (station) {
135   case AliMp::kStation1: 
136     stationDataDir += "1/";
137     break;
138     ;;
139   case AliMp::kStation2: 
140     stationDataDir += "2/";
141     break;
142     ;;
143   case AliMp::kStation345: 
144     stationDataDir += "345/";
145     break;
146     ;;      
147   case AliMp::kStationTrigger:
148     stationDataDir += "Trigger/";
149     break;
150     ;;
151   default:
152     stationDataDir += "Invalid/";
153     break;
154   }   
155   return stationDataDir;
156 }
157
158 //
159 // public methods
160 //
161
162 //______________________________________________________________________________
163 TString AliMpFiles::BusPatchFilePath()
164 {
165 /// Return path to data file with bus patch mapping.
166
167   return GetTop() + fgkDataDir + "/" + fgkBusPatchFileName + fgkDataExt;
168 }  
169
170 //______________________________________________________________________________
171 TString AliMpFiles::BusPatchLengthFilePath()
172 {
173 /// Return path to data file with bus patch mapping.
174
175   return GetTop() + fgkDataDir + "/" + fgkBusPatchLengthFileName + fgkDataExt;
176 }  
177
178 //______________________________________________________________________________
179 TString AliMpFiles::DENamesFilePath(AliMp::StationType station)
180 {
181 /// Return path to data file with DE names for given station.
182  
183   return GetTop() + fgkDataDir + StationDataDir(station) + fgkDENames + fgkDataExt;
184 }
185
186 //______________________________________________________________________________
187 TString AliMpFiles::LocalTriggerBoardMapping()
188 {
189 /// Return path to data file with local trigger board mapping.
190
191   return GetTop() + fgkDataDir + StationDataDir(AliMp::kStationTrigger) 
192           + fgkTriggerLocalBoards + fgkDataExt;;
193 }
194
195 //_____________________________________________________________________________
196 TString AliMpFiles::SlatFilePath(AliMp::StationType stationType,
197                                  const char* slatType,
198                                  AliMp::PlaneType plane)
199 {
200 /// \todo add ..
201
202   return TString(PlaneDataDir(stationType,plane) + slatType + "." +
203                  ( plane == AliMp::kNonBendingPlane ? "NonBending":"Bending" ) + ".slat");
204 }
205
206 //_____________________________________________________________________________
207 TString AliMpFiles::SlatPCBFilePath(AliMp::StationType stationType,
208                                     const char* pcbType)
209 {
210 /// Get the full path for a given PCB (only relevant to stations 3,
211 /// 4, 5 and trigger). The bending parameter below is of no use in this case, but
212 /// we use it to re-use the PlaneDataDir() method untouched.
213
214   return TString(PlaneDataDir(stationType,AliMp::kNonBendingPlane) + pcbType +
215                  ".pcb");
216 }
217
218 //______________________________________________________________________________
219 TString AliMpFiles::SectorFilePath(AliMp::StationType station, 
220                                    AliMp::PlaneType plane)
221 {
222 /// Return path to data file with sector description.
223  
224   return TString(PlaneDataDir(station, plane) + fgkSector + fgkDataExt);
225 }
226     
227 //______________________________________________________________________________
228 TString AliMpFiles::SectorSpecialFilePath(AliMp::StationType station, 
229                                           AliMp::PlaneType plane)
230 {
231 /// Return path to data file with sector special description (irregular motifs).
232
233   return TString(PlaneDataDir(station, plane) + fgkSectorSpecial + fgkDataExt);
234 }
235     
236 //______________________________________________________________________________
237 TString AliMpFiles::SectorSpecialFilePath2(AliMp::StationType station, 
238                                            AliMp::PlaneType plane)
239 {
240 /// Returns path to data file with sector special description (irregular motifs).
241
242   return TString(PlaneDataDir(station, plane) + fgkSectorSpecial2 + fgkDataExt);
243 }
244
245 //______________________________________________________________________________
246 TString AliMpFiles::MotifFileName(const TString& motifTypeID)
247 {
248   /// Returns name of data file for a given motif type.
249   
250   return TString(fgkMotifPrefix +  motifTypeID + fgkDataExt);
251 }
252
253 //______________________________________________________________________________
254 TString AliMpFiles::MotifFilePath(AliMp::StationType station, 
255                                   AliMp::PlaneType plane, 
256                                   const TString& motifTypeID)
257 {
258 /// Returns path to data file for a given motif type.
259
260   return TString(PlaneDataDir(station, plane) + MotifFileName(motifTypeID));
261 }
262
263 //______________________________________________________________________________
264 TString AliMpFiles::PadPosFileName(const TString& motifTypeID)
265 {
266   /// Returns name of data file with pad positions for a given motif type.
267   
268   return TString(fgkPadPosPrefix +  motifTypeID + fgkDataExt);
269 }
270
271 //______________________________________________________________________________
272 TString AliMpFiles::PadPosFilePath(AliMp::StationType station, 
273                                    AliMp::PlaneType plane, 
274                                    const TString& motifTypeID)
275 {
276 /// Returns path to data file with pad positions for a given motif type.
277
278   return TString(PlaneDataDir(station, plane) + PadPosFileName(motifTypeID));
279 }
280
281 //______________________________________________________________________________ 
282 TString AliMpFiles::MotifSpecialFileName(const TString& motifID)
283 {
284   /// Returns name of data file with pad dimensions for a given motif ID.
285   
286   return TString(fgkMotifSpecialPrefix + motifID + fgkDataExt);
287   
288 }
289
290 //______________________________________________________________________________ 
291 TString AliMpFiles::MotifSpecialFilePath(AliMp::StationType station, 
292                                          AliMp::PlaneType plane,
293                                          const TString& motifID)
294 {
295 /// Returns path to data file with pad dimensions for a given motif ID.
296
297   return TString(PlaneDataDir(station, plane) + MotifSpecialFileName(motifID));
298 }
299
300 //______________________________________________________________________________ 
301 TString AliMpFiles::BergToGCFilePath(AliMp::StationType station)
302 {
303 /// Returns the path of the file which describes the correspondance between
304 /// the berg number and the gassiplex channel.
305
306   return GetTop() + fgkDataDir + StationDataDir(station)
307               + fgkBergToGCFileName + fgkDataExt;
308 }
309
310 //______________________________________________________________________________ 
311 TString AliMpFiles::ManuToSerialPath(const TString& deName, AliMp::StationType station)
312 {
313 /// Returns the path of the file for the manu id to their serial number
314
315   return  GetTop() + fgkDataDir + StationDataDir(station)
316               + fgkManuToSerialDir + deName + fgkManuToSerial + fgkDataExt; 
317 }
318
319
320 //______________________________________________________________________________ 
321 void 
322 AliMpFiles::SetTopPath(const TString& topPath)
323
324 /// Set top file path
325
326   GetTop() = topPath; 
327 }
328