Reading muon trigger scalers with the DA of the muon trigger and transfer
[u/mrichter/AliRoot.git] / MUON / MUONcalib / AliMUONTriggerIO.h
1 #ifndef ALIMUONTRIGGERIO_H
2 #define ALIMUONTRIGGERIO_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 /// \ingroup calib
10 /// \class AliMUONTriggerIO
11 /// \brief Handles read/write of masks and LUT to/from online files
12 /// 
13 //  Author Laurent Aphecetche, Subatech
14
15 #ifndef ROOT_TObject
16 #  include <TObject.h>
17 #endif
18
19 #include "AliMpExMap.h"
20 #include "AliMpRegionalTrigger.h"
21
22 #ifndef ROOT_TArrayI
23 #  include <TArrayI.h>
24 #endif
25
26 class AliMUONTriggerLut;
27 class AliMUONVStore;
28 class AliMpExMap;
29 class AliMpDDL;
30 class AliMpTriggerCrate;
31 class AliMpLocalBoard;
32 class AliMUONGlobalCrateConfig;
33 class AliMUONRegionalTriggerConfig;
34 class AliMUONTriggerScalers;
35
36 class AliMUONTriggerIO : public TObject
37 {
38 public:
39   AliMUONTriggerIO();
40   AliMUONTriggerIO(const char* regionalFileToRead);
41   virtual ~AliMUONTriggerIO();
42
43
44   Bool_t ReadConfig(const char* localFile,
45                    const char* regionalFile,
46                    const char* globalFile,
47                    AliMUONVStore* localMasks,
48                     AliMUONRegionalTriggerConfig* regionalConfig,
49                     AliMUONGlobalCrateConfig* globalConfig);
50
51   Bool_t ReadTrigScalers(const char* scfile, TClonesArray& scalers) const;
52   
53   Bool_t WriteTrigScalers(const TClonesArray& scalers, const char* scfile) const;
54   
55   Bool_t ReadLUT(const char* lutFileToRead, AliMUONTriggerLut& lut);
56   
57   Bool_t WriteLUT(const AliMUONTriggerLut& lut,
58                   const char* lutFileToWrite);
59   
60   Bool_t WriteConfig(const char* localFile,
61                     const char* regionalFile,
62                     const char* globalFile,
63                     const AliMUONVStore* localMasks,
64                     AliMUONRegionalTriggerConfig* regionalConfig,
65                     AliMUONGlobalCrateConfig* globalConfig) const;
66
67   
68   Int_t  ReadGlobalConfig(const char* globalFile, AliMUONGlobalCrateConfig* globalConfig) const;
69
70   Bool_t WriteGlobalConfig(const char* globalFile, AliMUONGlobalCrateConfig* globalConfig) const;
71
72   Int_t  ReadRegionalConfig(const char* regionalFile, AliMUONRegionalTriggerConfig* regionalConfig);
73
74   Bool_t WriteRegionalConfig(const char* regionalFile, AliMUONRegionalTriggerConfig* regionalConfig) const;
75
76   Int_t  ReadLocalMasks(const char* localFile, AliMUONVStore& localMasks) const;
77   
78   Bool_t WriteLocalMasks(const char* localFile, const AliMUONVStore& localMasks) const;
79
80   void   ReadLocalLUT(AliMUONTriggerLut& lut, Int_t localBoardId, FILE* flut);
81   
82   void   WriteLocalLUT(const AliMUONTriggerLut& lut, Int_t localBoardId, 
83                        FILE* flut);
84                    
85   Int_t LocalBoardId(Int_t index) const;
86   Int_t LocalBoardId(Int_t ddlId, Int_t crateId, Int_t localId) const;
87
88
89 private:
90   
91   Bool_t DeCompAddress(UChar_t &ypos, UChar_t &ytri, UChar_t &xdev, UChar_t &xpos, 
92                      UShort_t address) const;
93     
94   void FillLut(AliMUONTriggerLut& lut,
95                Int_t icirc, UChar_t istripX, UChar_t idev,  
96                Int_t lutLpt[16][2], Int_t lutHpt[16][2]) ;
97   
98   
99   /// Return number of local boards
100   Int_t NofLocalBoards() const { return fRegionalTrigger.GetNofLocalBoards(); }
101   
102   
103   
104 private:
105   AliMpRegionalTrigger  fRegionalTrigger; //!< Regional trigger
106  
107   static const UInt_t  fgkLocalLutSize;  ///< length of the lut for one local board
108
109   
110   ClassDef(AliMUONTriggerIO,2) // Read/Write trigger masks and LUT to/from online files
111 };
112
113 #endif