ROOT logo
//////////////////////////////////////////////////////////////////////////////
//
// $Id: $
//
//*-- Author  : Martin Jurkovic <martin.jurkovic@ph.tum.de>
//*-- Revised : Martin Jurkovic <martin.jurkovic@ph.tum.de> 2010
//
//_HADES_CLASS_DESCRIPTION
//////////////////////////////////////////////////////////////////////////////
//
//  HRichUnpacker
//
//
//////////////////////////////////////////////////////////////////////////////


#ifndef HRichUnpacker_H
#define HRichUnpacker_H

#include "hldunpack.h"

class HCategory;
class HRichMappingPar;


class HRichUnpacker : public HldUnpack {

protected:

   static const UInt_t kHubDebugId;  //! Identification of debug "subsubevent"
   static const UInt_t kADCZero;     //! ADC module ZERO offset

   UInt_t  fRichId;               //! current event #
   UInt_t  fEventNr;              //! current event #
   UInt_t  fStartEvt;             //! start unpacking with event #
   UInt_t  fSecMisMatchCntr;      //!

   struct DataWord {
      UInt_t sector;
      UInt_t adc;
      UInt_t apv;
      UInt_t channel;
      UInt_t charge;
   } fDataWord;                    //! structure for channel address

   HCategory*        fpCalCat;               //!
   HRichMappingPar*  fpMapPar;               //!


private:

   void printDataWord(const DataWord& addr);
   void printMapping(const DataWord& addr);

   inline Int_t getAddress(const DataWord& addr) const;

public:
   HRichUnpacker(Int_t  richId,
                 Int_t  strtEvt = 0);
   ~HRichUnpacker() {}

   Bool_t init(void);
   Int_t  execute(void);
   Bool_t finalize();

   inline Int_t getSubEvtId() ;

   ClassDef(HRichUnpacker, 0)       // Unpack RICH data
};


inline Int_t
HRichUnpacker::getAddress(const DataWord& addr) const
{
   return static_cast<Int_t>((addr.adc << 11) + (addr.apv << 7) + addr.channel);
}

inline Int_t
HRichUnpacker::getSubEvtId()
{
   return fRichId;
}

class DHeader {

private:
   Bool_t fEmpty;
   UInt_t fSize;
   UInt_t fSource;

public:
   DHeader();
   ~DHeader() {}

   void reset();
   void getEvent(UInt_t word);
   void dump();

   Bool_t  empty()  const {
      return fEmpty;
   }
   UInt_t getSize()   const {
      return fSize;
   }
   UInt_t getSource() const {
      return fSource;
   }

};

#endif /* !HRichUnpacker */

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