Correct use of ROOT_INCLUDE_DIR
[u/mrichter/AliRoot.git] / MUON / MUONmapping / AliMpTriggerReader.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: AliMpTriggerReader.h,v 1.5 2006/05/24 13:58:27 ivana Exp $
6
7 /// \ingroup mptrigger
8 /// \class AliMpTriggerReader
9 /// \brief Read trigger slat ASCII files
10 ///
11 //  Author: Laurent Aphecetche
12
13 #ifndef ALI_MP_TRIGGER_READER_H
14 #define ALI_MP_TRIGGER_READER_H
15
16 #ifndef ROOT_TObject
17 #  include "TObject.h"
18 #endif
19
20 #ifndef ROOT_TMap
21 #  include "TMap.h"
22 #endif
23
24 #ifndef ROOT_TString
25 #  include "TString.h"
26 #endif
27
28 #ifndef ALI_MP_PLANE_TYPE_H
29 #  include "AliMpPlaneType.h"
30 #endif
31
32 class AliMpSlatMotifMap;
33 class AliMpSlat;
34 class AliMpTrigger;
35 class AliMpPCB;
36 class AliMpDataStreams;
37
38 class TList;
39
40 class AliMpTriggerReader : public TObject
41 {
42  public:
43   AliMpTriggerReader(AliMpSlatMotifMap* motifMap);
44   virtual ~AliMpTriggerReader();
45
46   AliMpTrigger* ReadSlat(const AliMpDataStreams&  dataStreams,
47                          const char* slatType, AliMp::PlaneType planeType);
48
49   AliMpPCB* ReadPCB(const AliMpDataStreams&  dataStreams, const char* pcbType);
50   
51 private:
52     
53   AliMpSlat* BuildSlat(const AliMpDataStreams&  dataStreams,
54                               const char* slatName,
55                               AliMp::PlaneType planeType,
56                               const TList& descriptionLines,
57                               Double_t scale=1.0);
58   
59   Int_t DecodeFlipLine(const TString& sline,
60                               TString& slatType2,
61                               Bool_t& flipX, Bool_t& flipY);
62   
63   Int_t DecodeScaleLine(const TString& sline, 
64                                Double_t& scale, TString& slatType);
65   
66   void FlipLines(const AliMpDataStreams&  dataStreams,
67                         TList& lines, Bool_t flipX, Bool_t flipY,
68                         Int_t srcLine, Int_t destLine);
69   
70   TString GetBoardNameFromPCBLine(const TString& sline);
71   
72   Int_t GetLine(const TString& slatType);
73   
74   Int_t IsLayerLine(const TString& sline) const;
75     
76   int LocalBoardNumber(const AliMpDataStreams&  dataStreams,
77                        const char* localBoardName);
78   
79   // AliMpPCB* PCB(const char* pcbType); 
80   
81   void ReadLines(const AliMpDataStreams&  dataStreams,
82                         const char* slatType,
83                         AliMp::PlaneType planeType,
84                         TList& lines,
85                         Double_t& scale, Bool_t& flipX, Bool_t& flipY,
86                         Int_t& srcLine, Int_t& destLine);
87   
88   void ReadLocalBoardMapping(const AliMpDataStreams&  dataStreams);
89   
90 private:
91   /// Not implemented
92   AliMpTriggerReader(const AliMpTriggerReader& rhs);
93   /// Not implemented
94   AliMpTriggerReader& operator=(const AliMpTriggerReader& rhs);
95     
96   // static methods
97   static const TString& GetKeywordLayer();
98   static const TString& GetKeywordScale();
99   static const TString& GetKeywordPcb();
100   static const TString& GetKeywordFlipX();
101   static const TString& GetKeywordFlipY();
102   
103   // data members
104   AliMpSlatMotifMap* fMotifMap; //!< storage for motifTypes and motifs...
105   
106   TMap fLocalBoardMap; //!< map of TObjString to TObjString
107
108   ClassDef(AliMpTriggerReader,0) // Reader for trigger slats mapping files 
109 };
110
111 #endif