d2bcd931b516ee64d2c4db69f0b54b476db49e11
[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.2 2006/03/02 16:36:26 ivana Exp $
6
7 /// \ingroup trigger
8 /// \class AliMpTriggerReader
9 /// \brief Read trigger slat ASCII files
10 /// \author Laurent Aphecetche
11
12 #ifndef ALI_MP_TRIGGER_READER_H
13 #define ALI_MP_TRIGGER_READER_H
14
15 #ifndef ROOT_TObject
16 #  include "TObject.h"
17 #endif
18
19 #ifndef ROOT_TMap
20 #  include "TMap.h"
21 #endif
22
23 #ifndef ROOT_TString
24 #  include "TString.h"
25 #endif
26
27 #ifndef ALI_MP_PLANE_TYPE_H
28 #  include "AliMpPlaneType.h"
29 #endif
30
31 #ifndef ALI_MP_STATION_TYPE_H
32 #  include "AliMpStationType.h"
33 #endif
34
35 class AliMpSlat;
36 class AliMpTrigger;
37 class AliMpPCB;
38 class TList;
39
40 class AliMpTriggerReader : public TObject
41 {
42  public:
43   AliMpTriggerReader();
44   virtual ~AliMpTriggerReader();
45
46   static AliMpTrigger* ReadSlat(const char* slatType, AliMpPlaneType planeType);
47
48   static AliMpPCB* ReadPCB(const char* pcbType);
49   
50   static void Reset();
51   
52 private:
53     
54   static AliMpSlat* BuildSlat(const char* slatName, 
55                               AliMpPlaneType planeType,
56                               const TList& descriptionLines,
57                               Double_t scale=1.0);
58   
59   static Int_t DecodeFlipLine(const TString& sline,
60                               TString& slatType2,
61                               Bool_t& flipX, Bool_t& flipY);
62   
63   static Int_t DecodeScaleLine(const TString& sline, 
64                                Double_t& scale, TString& slatType);
65   
66   static void FlipLines(TList& lines, Bool_t flipX, Bool_t flipY, 
67                         Int_t srcLine, Int_t destLine);
68   
69   static TString GetBoardNameFromPCBLine(const TString& sline);
70   
71   static Int_t GetLine(const TString& slatType);
72   
73   static Int_t IsLayerLine(const TString& sline);
74     
75   static int LocalBoardNumber(const char* localBoardName);
76   
77   static AliMpPCB* PCB(const char* pcbType); 
78   
79   static void ReadLines(const char* slatType,
80                         AliMpPlaneType planeType,
81                         TList& lines,
82                         Double_t& scale, Bool_t& flipX, Bool_t& flipY,
83                         Int_t& srcLine, Int_t& destLine);
84   
85   static void ReadLocalBoardMapping();
86   
87 private:
88     
89   static TMap fgPCBMap; //! map of TObjString to AliMpPCB*
90   
91   static TMap fgLocalBoardMap; //! map of TObjString to TObjString
92
93   static const TString fgkKeywordLayer; //! Keyword: LAYER
94   static const TString fgkKeywordScale; //! Keyword: SCALE
95   static const TString fgkKeywordPcb; //! Keyword : PCB
96   static const TString fgkKeywordFlipX; //! Keyword : FLIPX
97   static const TString fgkKeywordFlipY; //! Keyword : FLIPY
98   
99   ClassDef(AliMpTriggerReader,1) // Reader for trigger slats mapping files 
100 };
101
102 #endif