Commenting out the infamous speed eater = StdoutToAliDebug until a better solution...
[u/mrichter/AliRoot.git] / MUON / mapping / 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 trigger
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 TList;
37
38 class AliMpTriggerReader : public TObject
39 {
40  public:
41   AliMpTriggerReader(AliMpSlatMotifMap& motifMap);
42   virtual ~AliMpTriggerReader();
43
44   AliMpTrigger* ReadSlat(const char* slatType, AliMp::PlaneType planeType);
45
46   AliMpPCB* ReadPCB(const char* pcbType);
47   
48 private:
49     
50   AliMpSlat* BuildSlat(const char* slatName, 
51                               AliMp::PlaneType planeType,
52                               const TList& descriptionLines,
53                               Double_t scale=1.0);
54   
55   Int_t DecodeFlipLine(const TString& sline,
56                               TString& slatType2,
57                               Bool_t& flipX, Bool_t& flipY);
58   
59   Int_t DecodeScaleLine(const TString& sline, 
60                                Double_t& scale, TString& slatType);
61   
62   void FlipLines(TList& lines, Bool_t flipX, Bool_t flipY, 
63                         Int_t srcLine, Int_t destLine);
64   
65   TString GetBoardNameFromPCBLine(const TString& sline);
66   
67   Int_t GetLine(const TString& slatType);
68   
69   Int_t IsLayerLine(const TString& sline);
70     
71   int LocalBoardNumber(const char* localBoardName);
72   
73   AliMpPCB* PCB(const char* pcbType); 
74   
75   void ReadLines(const char* slatType,
76                         AliMp::PlaneType planeType,
77                         TList& lines,
78                         Double_t& scale, Bool_t& flipX, Bool_t& flipY,
79                         Int_t& srcLine, Int_t& destLine);
80   
81   void ReadLocalBoardMapping();
82   
83 private:
84     
85   AliMpSlatMotifMap& fMotifMap; //!< storage for motifTypes and motifs...
86   
87   TMap fLocalBoardMap; //!< map of TObjString to TObjString
88
89   static const TString fgkKeywordLayer; //!< Keyword: LAYER
90   static const TString fgkKeywordScale; //!< Keyword: SCALE
91   static const TString fgkKeywordPcb; //!< Keyword : PCB
92   static const TString fgkKeywordFlipX; //!< Keyword : FLIPX
93   static const TString fgkKeywordFlipY; //!< Keyword : FLIPY
94   
95   ClassDef(AliMpTriggerReader,0) // Reader for trigger slats mapping files 
96 };
97
98 #endif