MUON + CheckCompiler
[u/mrichter/AliRoot.git] / MUON / MUONmapping / AliMpSectorReader.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 // $Id$
5 // $MpId: AliMpSectorReader.h,v 1.7 2006/05/24 13:58:21 ivana Exp $
6
7 /// \ingroup sector
8 /// \class AliMpSectorReader
9 /// \brief Class that takes care of reading the sector data.
10 ///
11 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
12
13 #ifndef ALI_MP_SECTOR_READER_H
14 #define ALI_MP_SECTOR_READER_H
15
16 #include <TObject.h>
17
18 #include "AliMpStation12Type.h"
19 #include "AliMpPlaneType.h"
20 #include "AliMpXDirection.h"
21
22 #include <TString.h>
23
24 #include <fstream>
25
26 class AliMpSector;
27 class AliMpZone;
28 class AliMpSubZone;
29 class AliMpRow;
30 class AliMpVRowSegmentSpecial;
31 class AliMpMotifReader;
32 class AliMpVMotif;
33 class AliMpMotifSpecial;
34 class AliMpMotifType;
35 class AliMpDataStreams;
36
37 using std::istream;
38
39 class AliMpSectorReader : public TObject
40 {
41   public:
42     AliMpSectorReader(AliMq::Station12Type station, AliMp::PlaneType plane);
43     virtual ~AliMpSectorReader();
44   
45     // methods   
46     AliMpSector*  BuildSector(const AliMpDataStreams& dataStreams);
47     
48   private:  
49     /// Not implemented
50     AliMpSectorReader();
51     /// Not implemented
52     AliMpSectorReader(const AliMpSectorReader& right);
53     /// Not implemented
54     AliMpSectorReader& operator = (const AliMpSectorReader& right);
55
56      // static methods
57     static const TString&  GetSectorKeyword();       
58     static const TString&  GetZoneKeyword();         
59     static const TString&  GetSubZoneKeyword();      
60     static const TString&  GetRowKeyword();          
61     static const TString&  GetSectorSpecialKeyword();
62     static const TString&  GetMotifKeyword();        
63     static const TString&  GetRowSpecialKeyword();   
64     static const TString&  GetPadRowsKeyword();      
65     static const TString&  GetPadRowSegmentKeyword();
66   
67    // methods
68     void  ReadSectorData(const AliMpDataStreams& dataStreams,
69                          istream& in);
70     void  ReadZoneData(const AliMpDataStreams& dataStreams,
71                          istream& in);
72     void  ReadSubZoneData(const AliMpDataStreams& dataStreams,
73                          istream& in, AliMpZone* zone);
74     void  ReadRowSegmentsData(const AliMpDataStreams& dataStreams,
75                          istream& in,
76                          AliMpZone* zone, AliMpSubZone* subZone);
77
78     AliMpVMotif*  ReadMotifData(const AliMpDataStreams& dataStreams,
79                          istream& in, AliMpZone* zone);
80     void  ReadSectorSpecialData(const AliMpDataStreams& dataStreams,
81                          istream& in, AliMp::XDirection direction);
82     void  ReadMotifsSpecialData(const AliMpDataStreams& dataStreams,
83                          istream& in);
84     void  ReadRowSpecialData(const AliMpDataStreams& dataStreams,
85                          istream& in, AliMp::XDirection direction);
86     void  ReadRowSegmentSpecialData(const AliMpDataStreams& dataStreams,
87                          istream& in,
88                          AliMpVRowSegmentSpecial* segment,
89                          AliMp::XDirection direction);
90
91     // data members  
92     AliMq::Station12Type  fStationType; ///< station type 
93     AliMp::PlaneType      fPlaneType;   ///< plane type 
94     AliMpSector*          fSector;      ///< sector
95     AliMpMotifReader*     fMotifReader; ///< motif reader
96
97   ClassDef(AliMpSectorReader,0)  // Data reader
98 };
99
100 #endif //ALI_MP_READER_H