Changes needed in order to enable the root i/o for the altro mapping objects.
[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 //#include <stdlib.h>
25
26
27 ClassImp(AliAltroMapping)
28
29 //_____________________________________________________________________________
30 AliAltroMapping::AliAltroMapping():
31   fIn(NULL),
32   fNumberOfChannels(0),
33   fMaxHWAddress(0),
34   fMappingSize(0),
35   fInvMappingSize(0)
36 {
37   // Default constructor
38 }
39
40 //_____________________________________________________________________________
41 AliAltroMapping::AliAltroMapping(const char *mappingFile):
42   fIn(NULL),
43   fNumberOfChannels(0),
44   fMaxHWAddress(0),
45   fMappingSize(0),
46   fInvMappingSize(0)
47 {
48   // Constructor
49   // Reads the mapping from an external file
50   if (mappingFile)
51     OpenMappingFile(mappingFile);
52   else
53     AliFatal("Mapping file not specified !");
54 }
55
56 //_____________________________________________________________________________
57 AliAltroMapping::~AliAltroMapping()
58 {
59   CloseMappingFile();
60   // destructor
61 }
62
63 //_____________________________________________________________________________
64 Bool_t AliAltroMapping::OpenMappingFile(const char *mappingFile)
65 {
66   // Initalizes the ALTRO mapping from a file
67   // Look at the TPC module for the format of
68   // the mapping file
69   fIn = new ifstream(mappingFile);
70   if (!*fIn) {
71     AliFatal(Form("Missing mapping file (%s) !",mappingFile));
72     return kFALSE;
73   }
74   if (!(*fIn >> fNumberOfChannels)) {
75     AliFatal(Form("Syntax of the mapping file is wrong (%s) !",mappingFile));
76     return kFALSE;
77   }
78   if (!(*fIn >> fMaxHWAddress)) {
79     AliFatal(Form("Syntax of the mapping file is wrong (%s) !",mappingFile));
80     return kFALSE;
81   }
82
83   return kTRUE;
84 }
85
86 //_____________________________________________________________________________
87 Bool_t AliAltroMapping::CloseMappingFile()
88 {
89   // Closes the external mapping
90   // file
91   if (fIn) {
92     fIn->close();
93     delete fIn;
94     fIn = NULL;
95   }
96
97   return kTRUE;
98 }