Neutral Particle Spectrometer analysis code
Loading...
Searching...
No Matches
VLDModule.h
Go to the documentation of this file.
1#ifndef VLDModule_
2#define VLDModule_
4
6//
7// VLDModule
8//
10
11#include "PipeliningModule.h"
12#include <string>
13#include <cstdint>
14#include <cstring> // for memset
15
16namespace Decoder {
17
19
20public:
21
22 VLDModule() : VLDModule(0,0) {}
23 VLDModule(UInt_t crate, UInt_t slot);
24 virtual ~VLDModule();
25
28
29 virtual void Clear( Option_t *opt="" );
30 virtual void Init();
31 virtual UInt_t LoadSlot( THaSlotData* sldat, const UInt_t* evbuffer, const UInt_t* pstop );
32 virtual UInt_t LoadSlot( THaSlotData* sldat, const UInt_t* evbuffer, UInt_t pos, UInt_t len );
33 virtual Int_t Decode( const UInt_t* data );
34
35 inline virtual std::vector<UInt_t> GetChannelMask() { return vld_data.chnmask; }
36 inline virtual std::vector<UInt_t> GetLoHiBit() { return vld_data.lohi; }
37 inline virtual std::vector<UInt_t> GetConnectorID() { return vld_data.connectid; }
38
39 virtual UInt_t LoadBank( THaSlotData* sldat, const UInt_t* evbuffer,
40 UInt_t pos, UInt_t len );
42
43
44 private:
45
47 uint32_t num_vld, read_count, write_count; // Block header objects
48 uint32_t nwords_inblock; // Block trailer objects
49 uint32_t slotid, nconnect; // Slot header objects
50 void clear() { memset(this, 0, sizeof(vld_header_data_struct)); }
51 } __attribute__((aligned(32))) vld_header_data;
52
54 std::vector<uint32_t> connectid, lohi, chnmask;
55 void clear() {
56 connectid.clear(); lohi.clear(); chnmask.clear();
57 }
58 } __attribute__((aligned(128))) vld_data;
59
61
62 void LoadTHaSlotDataObj( THaSlotData* sldat );
63
64 void DecodeBlockHeader( UInt_t pdat, uint32_t data_type_id );
65 void DecodeBlockTrailer( UInt_t pdat );
66 void DecodeSlotHeader( UInt_t pdat, uint32_t data_type_id );
67 void UnsupportedType( UInt_t pdat, uint32_t data_type_id );
68
70
71 ClassDef(VLDModule,0) // VLD module
72
73 };
74
75}
76
77#endif
int Int_t
unsigned int UInt_t
bool Bool_t
const char Option_t
std::vector< uint32_t > lohi
Definition VLDModule.h:0
std::vector< uint32_t > chnmask
Definition VLDModule.h:0
std::vector< uint32_t > connectid
Definition VLDModule.h:0
virtual void Init()
virtual UInt_t GetData(Decoder::EModuleType, UInt_t, UInt_t) const
TypeSet_t::iterator TypeIter_t
virtual ~VLDModule()
virtual void Clear(Option_t *opt="")
Definition VLDModule.cxx:54
void DecodeSlotHeader(UInt_t pdat, uint32_t data_type_id)
virtual std::vector< UInt_t > GetConnectorID()
Definition VLDModule.h:37
virtual std::vector< UInt_t > GetChannelMask()
Definition VLDModule.h:35
Bool_t block_header_found
Definition VLDModule.h:60
void DecodeBlockTrailer(UInt_t pdat)
virtual UInt_t LoadSlot(THaSlotData *sldat, const UInt_t *evbuffer, const UInt_t *pstop)
static TypeIter_t fgThisType
Definition VLDModule.h:69
virtual Int_t Decode(const UInt_t *data)
void UnsupportedType(UInt_t pdat, uint32_t data_type_id)
void DecodeBlockHeader(UInt_t pdat, uint32_t data_type_id)
Definition VLDModule.cxx:86
virtual UInt_t LoadNextEvBuffer(THaSlotData *sldat)
virtual UInt_t LoadBank(THaSlotData *sldat, const UInt_t *evbuffer, UInt_t pos, UInt_t len)
virtual void Init()
Definition VLDModule.cxx:68
Bool_t block_trailer_found
Definition VLDModule.h:60
void LoadTHaSlotDataObj(THaSlotData *sldat)
virtual std::vector< UInt_t > GetLoHiBit()
Definition VLDModule.h:36
Bool_t slot_header_found
Definition VLDModule.h:60
std::vector< uint32_t > chnmask
Definition VLDModule.h:54