Putting the ALTRO mapping in RAW as a base class. TPC,PHOS and FMD mapping classes...
[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(const char *mappingFile):
31   fIn(NULL),
32   fNumberOfChannels(0),
33   fMaxHWAdress(0)
34 {
35   // Constructor
36   // Reads the mapping from an external file
37   if (mappingFile)
38     OpenMappingFile(mappingFile);
39   else
40     AliFatal("Mapping file not specified !");
41 }
42
43 //_____________________________________________________________________________
44 AliAltroMapping::~AliAltroMapping()
45 {
46   // destructor
47 }
48
49 //_____________________________________________________________________________
50 AliAltroMapping::AliAltroMapping(const AliAltroMapping& mapping):
51   TObject(mapping),
52   fIn(mapping.fIn),
53   fNumberOfChannels(mapping.fNumberOfChannels),
54   fMaxHWAdress(mapping.fMaxHWAdress)
55 {
56 // Copy Constructor
57
58   Fatal("AliAltroMapping", "copy constructor not implemented");
59 }
60
61 //_____________________________________________________________________________
62 AliAltroMapping& AliAltroMapping::operator = (const AliAltroMapping& /*mapping*/)
63 {
64 //Assigment operator
65
66   Fatal("operator =", "assignment operator not implemented");
67   return *this;
68 }
69
70 //_____________________________________________________________________________
71 Bool_t AliAltroMapping::OpenMappingFile(const char *mappingFile)
72 {
73   // Initalizes the ALTRO mapping from a file
74   // Look at the TPC module for the format of
75   // the mapping file
76   fIn = new ifstream(mappingFile);
77   if (!*fIn) {
78     AliFatal(Form("Missing mapping file (%s) !",mappingFile));
79     return kFALSE;
80   }
81   if (!(*fIn >> fNumberOfChannels)) {
82     AliFatal(Form("Syntax of the mapping file is wrong (%s) !",mappingFile));
83     return kFALSE;
84   }
85   if (!(*fIn >> fMaxHWAdress)) {
86     AliFatal(Form("Syntax of the mapping file is wrong (%s) !",mappingFile));
87     return kFALSE;
88   }
89
90   return kTRUE;
91 }
92
93 //_____________________________________________________________________________
94 Bool_t AliAltroMapping::CloseMappingFile()
95 {
96   // Closes the external mapping
97   // file
98   if (fIn) {
99     fIn->close();
100     fIn = NULL;
101   }
102
103   return kTRUE;
104 }