ROOT logo
#ifndef ALIMUONTRIGGERIO_H
#define ALIMUONTRIGGERIO_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup calib
/// \class AliMUONTriggerIO
/// \brief Handles read/write of masks and LUT to/from online files
/// 
//  Author Laurent Aphecetche, Subatech

#ifndef ROOT_TObject
#  include <TObject.h>
#endif

#include "AliMpExMap.h"
#include "AliMpRegionalTrigger.h"



#ifndef ROOT_TArrayI
#  include <TArrayI.h>
#endif

class AliMUONTriggerLut;
class AliMUONVStore;
class AliMpExMap;
class AliMpDDL;
class AliMpTriggerCrate;
class AliMpLocalBoard;
class AliMUONGlobalCrateConfig;
class AliMUONRegionalTriggerConfig;


class AliMUONTriggerIO : public TObject
{
public:
  AliMUONTriggerIO();
  AliMUONTriggerIO(const char* regionalFileToRead);
  virtual ~AliMUONTriggerIO();


  Bool_t ReadConfig(const char* localFile,
                   const char* regionalFile,
                   const char* globalFile,
                   AliMUONVStore* localMasks,
                    AliMUONRegionalTriggerConfig* regionalConfig,
                    AliMUONGlobalCrateConfig* globalConfig);

  Bool_t ReadLUT(const char* lutFileToRead, AliMUONTriggerLut& lut);
  
  Bool_t WriteLUT(const AliMUONTriggerLut& lut,
                  const char* lutFileToWrite);
  
  Bool_t WriteConfig(const char* localFile,
		    const char* regionalFile,
		    const char* globalFile,
		    const AliMUONVStore* localMasks,
                    AliMUONRegionalTriggerConfig* regionalConfig,
                    AliMUONGlobalCrateConfig* globalConfig) const;

  
  Int_t  ReadGlobalConfig(const char* globalFile, AliMUONGlobalCrateConfig* globalConfig) const;

  Bool_t WriteGlobalConfig(const char* globalFile, AliMUONGlobalCrateConfig* globalConfig) const;

  Int_t  ReadRegionalConfig(const char* regionalFile, AliMUONRegionalTriggerConfig* regionalConfig);

  Bool_t WriteRegionalConfig(const char* regionalFile, AliMUONRegionalTriggerConfig* regionalConfig) const;

  Int_t  ReadLocalMasks(const char* localFile, AliMUONVStore& localMasks) const;
  
  Bool_t WriteLocalMasks(const char* localFile, const AliMUONVStore& localMasks) const;

  void   ReadLocalLUT(AliMUONTriggerLut& lut, Int_t localBoardId, FILE* flut);
  
  void   WriteLocalLUT(const AliMUONTriggerLut& lut, Int_t localBoardId, 
                       FILE* flut);
                   
  Int_t LocalBoardId(Int_t index) const;
  Int_t LocalBoardId(Int_t ddlId, Int_t crateId, Int_t localId) const;


private:
  
  Bool_t DeCompAddress(UChar_t &ypos, UChar_t &ytri, UChar_t &xdev, UChar_t &xpos, 
                     UShort_t address) const;
    
  void FillLut(AliMUONTriggerLut& lut,
               Int_t icirc, UChar_t istripX, UChar_t idev,  
               Int_t lutLpt[16][2], Int_t lutHpt[16][2]) ;
  
  
  /// Return number of local boards
  Int_t NofLocalBoards() const { return fRegionalTrigger.GetNofLocalBoards(); }
  
  
  
private:
  AliMpRegionalTrigger  fRegionalTrigger; //!< Regional trigger
 
  static const UInt_t  fgkLocalLutSize;  ///< length of the lut for one local board

  
  ClassDef(AliMUONTriggerIO,2) // Read/Write trigger masks and LUT to/from online files
};

#endif
 AliMUONTriggerIO.h:1
 AliMUONTriggerIO.h:2
 AliMUONTriggerIO.h:3
 AliMUONTriggerIO.h:4
 AliMUONTriggerIO.h:5
 AliMUONTriggerIO.h:6
 AliMUONTriggerIO.h:7
 AliMUONTriggerIO.h:8
 AliMUONTriggerIO.h:9
 AliMUONTriggerIO.h:10
 AliMUONTriggerIO.h:11
 AliMUONTriggerIO.h:12
 AliMUONTriggerIO.h:13
 AliMUONTriggerIO.h:14
 AliMUONTriggerIO.h:15
 AliMUONTriggerIO.h:16
 AliMUONTriggerIO.h:17
 AliMUONTriggerIO.h:18
 AliMUONTriggerIO.h:19
 AliMUONTriggerIO.h:20
 AliMUONTriggerIO.h:21
 AliMUONTriggerIO.h:22
 AliMUONTriggerIO.h:23
 AliMUONTriggerIO.h:24
 AliMUONTriggerIO.h:25
 AliMUONTriggerIO.h:26
 AliMUONTriggerIO.h:27
 AliMUONTriggerIO.h:28
 AliMUONTriggerIO.h:29
 AliMUONTriggerIO.h:30
 AliMUONTriggerIO.h:31
 AliMUONTriggerIO.h:32
 AliMUONTriggerIO.h:33
 AliMUONTriggerIO.h:34
 AliMUONTriggerIO.h:35
 AliMUONTriggerIO.h:36
 AliMUONTriggerIO.h:37
 AliMUONTriggerIO.h:38
 AliMUONTriggerIO.h:39
 AliMUONTriggerIO.h:40
 AliMUONTriggerIO.h:41
 AliMUONTriggerIO.h:42
 AliMUONTriggerIO.h:43
 AliMUONTriggerIO.h:44
 AliMUONTriggerIO.h:45
 AliMUONTriggerIO.h:46
 AliMUONTriggerIO.h:47
 AliMUONTriggerIO.h:48
 AliMUONTriggerIO.h:49
 AliMUONTriggerIO.h:50
 AliMUONTriggerIO.h:51
 AliMUONTriggerIO.h:52
 AliMUONTriggerIO.h:53
 AliMUONTriggerIO.h:54
 AliMUONTriggerIO.h:55
 AliMUONTriggerIO.h:56
 AliMUONTriggerIO.h:57
 AliMUONTriggerIO.h:58
 AliMUONTriggerIO.h:59
 AliMUONTriggerIO.h:60
 AliMUONTriggerIO.h:61
 AliMUONTriggerIO.h:62
 AliMUONTriggerIO.h:63
 AliMUONTriggerIO.h:64
 AliMUONTriggerIO.h:65
 AliMUONTriggerIO.h:66
 AliMUONTriggerIO.h:67
 AliMUONTriggerIO.h:68
 AliMUONTriggerIO.h:69
 AliMUONTriggerIO.h:70
 AliMUONTriggerIO.h:71
 AliMUONTriggerIO.h:72
 AliMUONTriggerIO.h:73
 AliMUONTriggerIO.h:74
 AliMUONTriggerIO.h:75
 AliMUONTriggerIO.h:76
 AliMUONTriggerIO.h:77
 AliMUONTriggerIO.h:78
 AliMUONTriggerIO.h:79
 AliMUONTriggerIO.h:80
 AliMUONTriggerIO.h:81
 AliMUONTriggerIO.h:82
 AliMUONTriggerIO.h:83
 AliMUONTriggerIO.h:84
 AliMUONTriggerIO.h:85
 AliMUONTriggerIO.h:86
 AliMUONTriggerIO.h:87
 AliMUONTriggerIO.h:88
 AliMUONTriggerIO.h:89
 AliMUONTriggerIO.h:90
 AliMUONTriggerIO.h:91
 AliMUONTriggerIO.h:92
 AliMUONTriggerIO.h:93
 AliMUONTriggerIO.h:94
 AliMUONTriggerIO.h:95
 AliMUONTriggerIO.h:96
 AliMUONTriggerIO.h:97
 AliMUONTriggerIO.h:98
 AliMUONTriggerIO.h:99
 AliMUONTriggerIO.h:100
 AliMUONTriggerIO.h:101
 AliMUONTriggerIO.h:102
 AliMUONTriggerIO.h:103
 AliMUONTriggerIO.h:104
 AliMUONTriggerIO.h:105
 AliMUONTriggerIO.h:106
 AliMUONTriggerIO.h:107
 AliMUONTriggerIO.h:108
 AliMUONTriggerIO.h:109
 AliMUONTriggerIO.h:110
 AliMUONTriggerIO.h:111