]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/mapping/AliMpFiles.cxx
New MUON Data container and MUON loader
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpFiles.cxx
CommitLineData
5f91c9e8 1// $Id$
2// Category: sector
3//
4// Class AliMpFiles
5// ----------------
6// Class for generating file names and paths.
7// The input files:
8// zones.dat, zones_special.dat - sector description
9// motif*.dat - motif description (generated from Exceed)
10// padPos*.dat - pad positions in motif
11//
12// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
13
14#include <stdlib.h>
15
16#include "AliMpFiles.h"
17
18ClassImp(AliMpFiles)
19
20// static data members
21
22AliMpFiles* AliMpFiles::fgInstance = 0;
23const TString AliMpFiles::fgkDefaultTop = getenv("MINSTALL");
24const TString AliMpFiles::fgkDataDir = "/data";;
25const TString AliMpFiles::fgkBendingDir = "/bending_plane/";;
26const TString AliMpFiles::fgkNonBendingDir = "/non-bending_plane/";;
27const TString AliMpFiles::fgkSector = "zones";
28const TString AliMpFiles::fgkSectorSpecial = "zones_special";
29const TString AliMpFiles::fgkMotifPrefix = "motif";
30const TString AliMpFiles::fgkMotifSpecialPrefix ="motifSpecial";
31const TString AliMpFiles::fgkPadPosPrefix = "padPos";
32const TString AliMpFiles::fgkDataExt = ".dat";
33const TString AliMpFiles::fgkBergToGCFileName = "/bergToGC";
34
35//______________________________________________________________________________
36AliMpFiles::AliMpFiles()
37 : fTop(fgkDefaultTop)
38{
39//
40 if (fgInstance) {
41 Fatal("AliMpFiles",
42 "AliMpFiles: attempt to create two instances of singleton.");
43 }
44
45 fgInstance = this;
46}
47
48//______________________________________________________________________________
49AliMpFiles::AliMpFiles(const AliMpFiles& right) {
50//
51 Fatal("AliMpFiles", "Attempt to copy AliMpFiles singleton.");
52}
53
54
55//______________________________________________________________________________
56AliMpFiles::~AliMpFiles() {
57//
58
59 fgInstance = 0;
60}
61
62// operators
63
64//______________________________________________________________________________
65AliMpFiles& AliMpFiles::operator=(const AliMpFiles& right)
66{
67 // check assignement to self
68 if (this == &right) return *this;
69
70 Fatal("operator=", "Attempt to assign AliMpFiles singleton.");
71
72 return *this;
73}
74
75//
76// private methods
77//
78
79//______________________________________________________________________________
80TString AliMpFiles::PlaneDataDir(AliMpPlaneType plane) const
81{
82// Returns path to data files with sector description
83// for a specified plane.
84// ---
85
86 switch (plane) {
87 case kBendingPlane:
88 return fTop + fgkDataDir + fgkBendingDir;
89 ;;
90 case kNonBendingPlane:
91 return fTop + fgkDataDir + fgkNonBendingDir;
92 ;;
93 }
94
95 Fatal("PlaneDataDir", "Incomplete switch on AliMpPlaneType");
96 return TString();
97}
98
99//
100// public methods
101//
102
103//______________________________________________________________________________
104AliMpFiles* AliMpFiles::Instance()
105{
106// Return the singleton instance;
107// Creates it if it does not yet exist,
108//
109// ---
110
111 if (!fgInstance) fgInstance = new AliMpFiles();
112
113 return fgInstance;
114}
115
116//______________________________________________________________________________
117TString AliMpFiles::SectorFilePath(AliMpPlaneType plane) const
118{
119// Returns path to data file with sector description.
120// ---
121
122 return TString(PlaneDataDir(plane) + fgkSector + fgkDataExt);
123}
124
125//______________________________________________________________________________
126TString AliMpFiles::SectorSpecialFilePath(AliMpPlaneType plane) const
127{
128// Returns path to data file with sector special description (irregular motifs).
129// ---
130
131 return TString(PlaneDataDir(plane) + fgkSectorSpecial + fgkDataExt);
132}
133
134//______________________________________________________________________________
135TString AliMpFiles::MotifFilePath(AliMpPlaneType plane,
136 const TString& motifTypeID) const
137{
138// Returns path to data file for a given motif type.
139// ---
140
141 return TString(PlaneDataDir(plane) + fgkMotifPrefix + motifTypeID + fgkDataExt);
142}
143
144//______________________________________________________________________________
145TString AliMpFiles::PadPosFilePath(AliMpPlaneType plane,
146 const TString& motifTypeID) const
147{
148// Returns path to data file with pad positions for a given motif type.
149// ---
150
151 return TString(PlaneDataDir(plane) + fgkPadPosPrefix + motifTypeID + fgkDataExt);
152}
153
154//______________________________________________________________________________
155TString AliMpFiles::MotifSpecialFilePath(AliMpPlaneType plane,
156 const TString& motifID) const
157{
158// Returns path to data file with pad dimensions for a given motif ID.
159// ---
160
161 return TString(PlaneDataDir(plane) + fgkMotifSpecialPrefix + motifID + fgkDataExt);
162
163}
164
165//______________________________________________________________________________
166TString AliMpFiles::BergToGCFilePath() const
167{
168// Returns the path of the file which describes the correspondance between
169// the berg number and the gassiplex channel.
170// ---
171
172 return fTop+fgkDataDir+fgkBergToGCFileName+fgkDataExt;
173}