ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//-----------------------------------------------------------------------
// Utility class to change from online to offline numbering scheme
// for SPD. Most of these methods already exist in AliITSRawStreamSPD.
// Author : A. Mastroserio
//-----------------------------------------------------------------------

#ifndef ALISPDUTILS_H
#define ALISPDUTILS_H

#include "TObject.h"

class AliSPDUtils : public TObject {

 public:
 
  AliSPDUtils(){;}  
   
 
  virtual ~AliSPDUtils();

 
  // module mapping
  static Int_t GetModuleNumber(UInt_t iDDL, UInt_t iModule); 
  static Int_t GetModuleNumber(UInt_t iDDL, UInt_t iHS, UInt_t iChip)  {return GetOfflineModuleFromOnline(iDDL,iHS,iChip);}

  // general coordinate conversions:
  static Bool_t OfflineToOnline(UInt_t module, UInt_t colM, UInt_t RowM, UInt_t& eq, UInt_t& hs, UInt_t& chip, UInt_t& col, UInt_t& row); 
  static Bool_t OnlineToOffline(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row, UInt_t& module, UInt_t& colM, UInt_t& rowM);
  static Bool_t GetOfflineFromOfflineChipKey(UInt_t chipkey,UInt_t& module, UInt_t& chip);
 
  // specific coordinate conversions - offline->online
  static UInt_t GetOnlineEqIdFromOffline(UInt_t module);
  static UInt_t GetOnlineHSFromOffline(UInt_t module);
  static UInt_t GetOnlineChipFromOffline(UInt_t module, UInt_t colM);
  static UInt_t GetOnlineColFromOffline(UInt_t module, UInt_t colM); 
  static UInt_t GetOnlineRowFromOffline(UInt_t module, UInt_t rowM);    
  static Bool_t GetOnlineFromOfflineChipKey(UInt_t chipkey,UInt_t& eq, UInt_t& hs, UInt_t& chip);
 
  // specific coordinate conversions - online->offline
  static UInt_t GetOfflineModuleFromOnline(UInt_t eqId, UInt_t hs, UInt_t chip);
  static UInt_t GetOfflineChipKeyFromOnline(UInt_t eqId, UInt_t hs, UInt_t chip); 
  static UInt_t GetOfflineColFromOnline(UInt_t eqId, UInt_t hs, UInt_t chip, UInt_t col);
  static UInt_t GetOfflineRowFromOnline(UInt_t eqId, UInt_t hs, UInt_t chip, UInt_t row);

 
 

  private :

    static const Int_t fgkDDLModuleMap[20][12];  // mapping DDL/module -> module number
  AliSPDUtils& operator= (const AliSPDUtils& c); // dummy
  AliSPDUtils(const AliSPDUtils& c);             // dummy

  ClassDef(AliSPDUtils,0);
};

#endif
 AliSPDUtils.h:1
 AliSPDUtils.h:2
 AliSPDUtils.h:3
 AliSPDUtils.h:4
 AliSPDUtils.h:5
 AliSPDUtils.h:6
 AliSPDUtils.h:7
 AliSPDUtils.h:8
 AliSPDUtils.h:9
 AliSPDUtils.h:10
 AliSPDUtils.h:11
 AliSPDUtils.h:12
 AliSPDUtils.h:13
 AliSPDUtils.h:14
 AliSPDUtils.h:15
 AliSPDUtils.h:16
 AliSPDUtils.h:17
 AliSPDUtils.h:18
 AliSPDUtils.h:19
 AliSPDUtils.h:20
 AliSPDUtils.h:21
 AliSPDUtils.h:22
 AliSPDUtils.h:23
 AliSPDUtils.h:24
 AliSPDUtils.h:25
 AliSPDUtils.h:26
 AliSPDUtils.h:27
 AliSPDUtils.h:28
 AliSPDUtils.h:29
 AliSPDUtils.h:30
 AliSPDUtils.h:31
 AliSPDUtils.h:32
 AliSPDUtils.h:33
 AliSPDUtils.h:34
 AliSPDUtils.h:35
 AliSPDUtils.h:36
 AliSPDUtils.h:37
 AliSPDUtils.h:38
 AliSPDUtils.h:39
 AliSPDUtils.h:40
 AliSPDUtils.h:41
 AliSPDUtils.h:42
 AliSPDUtils.h:43
 AliSPDUtils.h:44
 AliSPDUtils.h:45
 AliSPDUtils.h:46
 AliSPDUtils.h:47
 AliSPDUtils.h:48
 AliSPDUtils.h:49
 AliSPDUtils.h:50
 AliSPDUtils.h:51
 AliSPDUtils.h:52
 AliSPDUtils.h:53
 AliSPDUtils.h:54
 AliSPDUtils.h:55
 AliSPDUtils.h:56
 AliSPDUtils.h:57
 AliSPDUtils.h:58
 AliSPDUtils.h:59
 AliSPDUtils.h:60
 AliSPDUtils.h:61
 AliSPDUtils.h:62
 AliSPDUtils.h:63
 AliSPDUtils.h:64
 AliSPDUtils.h:65
 AliSPDUtils.h:66
 AliSPDUtils.h:67
 AliSPDUtils.h:68
 AliSPDUtils.h:69
 AliSPDUtils.h:70
 AliSPDUtils.h:71
 AliSPDUtils.h:72