TRD nSigma OADB related new codes and modifications and OADB root file -- Xianguo Lu
[u/mrichter/AliRoot.git] / RAW / AliAltroMapping.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 // This class handles the mapping of the Altro channels
17 // The mapping is read from an external mapping files
18 // The class is used as a base class by TPC,PHOS and FMD
19 // Author: C.Cheshkov
20
21 #include "AliAltroMapping.h"
22 #include "AliLog.h"
23 #include <Riostream.h>
24
25
26 ClassImp(AliAltroMapping)
27
28 //_____________________________________________________________________________
29 AliAltroMapping::AliAltroMapping():
30   fIn(NULL),
31   fNumberOfChannels(0),
32   fMaxHWAddress(0),
33   fMappingSize(0),
34   fMapping(NULL)
35 {
36   // Default constructor
37 }
38
39 //_____________________________________________________________________________
40 AliAltroMapping::AliAltroMapping(const char *mappingFile):
41   fIn(NULL),
42   fNumberOfChannels(0),
43   fMaxHWAddress(0),
44   fMappingSize(0),
45   fMapping(NULL)
46 {
47   // Constructor
48   // Reads the mapping from an external file
49   if (mappingFile)
50     OpenMappingFile(mappingFile);
51   else
52     AliFatal("Mapping file not specified !");
53 }
54
55 //_____________________________________________________________________________
56 AliAltroMapping::~AliAltroMapping()
57 {
58   // destructor
59   CloseMappingFile();
60
61   if (fMapping) delete [] fMapping;
62 }
63
64 //_____________________________________________________________________________
65 Bool_t AliAltroMapping::OpenMappingFile(const char *mappingFile)
66 {
67   // Initalizes the ALTRO mapping from a file
68   // Look at the TPC module for the format of
69   // the mapping file
70   fIn = new ifstream(mappingFile);
71   if (!*fIn) {
72     AliFatal(Form("Missing mapping file (%s) !",mappingFile));
73     CloseMappingFile();
74     return kFALSE;
75   }
76   if (!(*fIn >> fNumberOfChannels)) {
77     AliFatal(Form("Syntax of the mapping file is wrong (%s) !",mappingFile));
78     CloseMappingFile();
79     return kFALSE;
80   }
81   if (!(*fIn >> fMaxHWAddress)) {
82     AliFatal(Form("Syntax of the mapping file is wrong (%s) !",mappingFile));
83     CloseMappingFile();
84     return kFALSE;
85   }
86
87   return kTRUE;
88 }
89
90 //_____________________________________________________________________________
91 void AliAltroMapping::CloseMappingFile()
92 {
93   // Closes the external mapping
94   // file
95   if (fIn) {
96     fIn->close();
97     delete fIn;
98     fIn = NULL;
99   }
100 }