ROOT logo
#ifndef HPIONTRACKERTRB3UNPACKER_H
#define HPIONTRACKERTRB3UNPACKER_H

#include "hlocation.h"
#include "hldunpack.h"

class HPionTrackerTrb3Lookup;
class HPionTrackerTrb3LookupBoard;

enum ptdesign { des_none, des_cosy13, des_140115 };

struct ptheaderset
{
#if GCC_VERSION > 40700
	ptdesign design = des_none;
	Int_t tsref = -1;
	Int_t evcnt = -1;
	Int_t romode = -1;
	Int_t version = -1;
	Int_t boardid = -1;
#else
	ptheaderset() : design(des_none), tsref(-1), evcnt(-1), romode(-1), version(-1), boardid(-1) {}
	ptdesign design;
	Int_t tsref;
	Int_t evcnt;
	Int_t romode;
	Int_t version;
	Int_t boardid;
#endif
};

struct ptdataset
{
#if GCC_VERSION > 40700
	Int_t strip = -1;
	Float_t adc = -1;
	Float_t ts = -1;
	Char_t pileup = -1;
	Char_t overflow = -1;
#else
	ptdataset() : strip(-1), adc(-1), ts(-1), pileup(-1), overflow(-1) {}
	Int_t strip;
	Float_t adc;
	Float_t ts;
	Char_t pileup;
	Char_t overflow;
#endif
};

class HPionTrackerTrb3Unpacker: public HldUnpack
{
protected:
	UInt_t subEvtId;                 // subevent id
	UInt_t uTrbNetAddress;           // TrbNetAdress
	UInt_t nEvt;                     // Evt SeqNumber

	Int_t  debugFlag;                //! allows to print subevent information to the STDOUT
	Bool_t quietMode;                //! do not print errors!
	Bool_t reportCritical;           //! report critical errors!

	HLocation loc;                   // location of raw cell object
	HPionTrackerTrb3Lookup* pLookup; // TRB3 lookup table for PionTracker
	HPionTrackerTrb3LookupBoard *pTrbBoard; // pointer to TRB board in lookup table 

public:
	HPionTrackerTrb3Unpacker(UInt_t id = 0);
	~HPionTrackerTrb3Unpacker(void) {}

	Int_t getSubEvtId(void)      { return subEvtId; }

	void  setDebugFlag(Int_t db) {debugFlag  = db;}
	Int_t getDebugFlag()         {return debugFlag;}

	void setQuietMode(void)      {quietMode      = kTRUE;}
	void setReportCritical(void) {reportCritical = kTRUE;}

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

	enum ptstate { sm_wait_for_board = 1, sm_header, sm_data };

protected:
	ptheaderset decodeSubevent(UInt_t h);
	ptdataset decodeData_Cosy13(UInt_t d, const ptheaderset & hs);
	ptdataset decodeData_140115(UInt_t d, const ptheaderset & hs);

	Bool_t fillRaw(const ptdataset & ptds);
	Bool_t fillRaw(Int_t, Float_t, Float_t, Char_t, Char_t);

public:
	ClassDef(HPionTrackerTrb3Unpacker, 0) // TRB3 unpacker for PionTracker
};

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