]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpSectorReader.h
New class - the factory for building mapping segmentations
[u/mrichter/AliRoot.git] / MUON / mapping / 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.3 2005/08/26 15:43:36 ivana Exp $
6
7 /// \ingroup sector
8 /// \class AliMpSectorReader
9 /// \brief Class that takes care of reading the sector data.
10 ///
11 /// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
12
13 #ifndef ALI_MP_SECTOR_READER_H
14 #define ALI_MP_SECTOR_READER_H
15
16 #include <fstream>
17
18 #include <TObject.h>
19 #include <TString.h>
20
21 #include "AliMpStationType.h"
22 #include "AliMpPlaneType.h"
23 #include "AliMpXDirection.h"
24 #include "AliMpIntPair.h"
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
36 class AliMpSectorReader : public TObject
37 {
38   public:
39     AliMpSectorReader(AliMpStationType station, AliMpPlaneType plane);
40     AliMpSectorReader();
41     virtual ~AliMpSectorReader();
42   
43     // methods   
44     AliMpSector*  BuildSector();
45
46     // set methods
47     void SetVerboseLevel(Int_t verboseLevel); 
48     
49   protected:
50     AliMpSectorReader(const AliMpSectorReader& right);
51     AliMpSectorReader&  operator = (const AliMpSectorReader& right);
52
53   private:  
54     // methods
55     void  ReadSectorData(ifstream& in);
56     void  ReadZoneData(ifstream& in);
57     void  ReadSubZoneData(ifstream& in, AliMpZone* zone);
58     void  ReadRowSegmentsData(ifstream& in,
59                           AliMpZone* zone, AliMpSubZone* subZone);
60     AliMpVMotif*  ReadMotifData(ifstream& in, AliMpZone* zone);
61     void  ReadSectorSpecialData(ifstream& in, AliMpXDirection direction);
62     void  ReadMotifsSpecialData(ifstream& in);
63     void  ReadRowSpecialData(ifstream& in, AliMpXDirection direction);
64     void  ReadRowSegmentSpecialData(ifstream& in,
65                           AliMpVRowSegmentSpecial* segment,
66                           AliMpXDirection direction);
67     
68     // static data members
69     static const TString  fgkSectorKeyword;        // sector keyword
70     static const TString  fgkZoneKeyword;          // zone keyword
71     static const TString  fgkSubZoneKeyword;       // subzone keyword
72     static const TString  fgkRowKeyword;           // row keyword
73     static const TString  fgkEofKeyword;           // eof keyword
74     static const TString  fgkSectorSpecialKeyword; // sector special keyword
75     static const TString  fgkMotifKeyword;         // motif keyword
76     static const TString  fgkRowSpecialKeyword;    // row special keyword
77     static const TString  fgkPadRowsKeyword;       // pad rows keyword
78     static const TString  fgkPadRowSegmentKeyword; // pad row segment keyword
79   
80     // data members  
81     AliMpStationType  fStationType; // station type 
82     AliMpPlaneType    fPlaneType;   // plane type 
83     AliMpSector*      fSector;      // sector
84     AliMpMotifReader* fMotifReader; // motif reader
85     Int_t             fVerboseLevel;// verbose level
86
87   ClassDef(AliMpSectorReader,1)  // Data reader
88 };
89
90 #endif //ALI_MP_READER_H