Neutral Particle Spectrometer analysis code
Loading...
Searching...
No Matches
VTPModule.h
Go to the documentation of this file.
1#ifndef VTPModule_
2#define VTPModule_
6//
7// VTPModule
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 VTPModule() : VTPModule(0,0) {}
23 VTPModule(UInt_t crate, UInt_t slot);
24 virtual ~VTPModule();
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
36 inline virtual UInt_t GetTriggerNum() { return vtp_header_data.trig_num; }
37
38 inline virtual std::vector<UInt_t> GetTriggerTime() { return vtp_trigger_data.trigtime; }
39 inline virtual std::vector<UInt_t> GetTriggerType0() { return vtp_trigger_data.trigtype0; }
40 inline virtual std::vector<UInt_t> GetTriggerType1() { return vtp_trigger_data.trigtype1; }
41 inline virtual std::vector<UInt_t> GetTriggerType2() { return vtp_trigger_data.trigtype2; }
42 inline virtual std::vector<UInt_t> GetTriggerType3() { return vtp_trigger_data.trigtype3; }
43 inline virtual std::vector<UInt_t> GetTriggerType4() { return vtp_trigger_data.trigtype4; }
44 inline virtual std::vector<UInt_t> GetTriggerType5() { return vtp_trigger_data.trigtype5; }
45
46 inline virtual std::vector<UInt_t> GetClusterEnergy() { return vtp_cluster_data.energy; }
47 inline virtual std::vector<UInt_t> GetClusterTime() { return vtp_cluster_data.time; }
48 inline virtual std::vector<UInt_t> GetClusterSize() { return vtp_cluster_data.nblocks; }
49 inline virtual std::vector<UInt_t> GetClusterX() { return vtp_cluster_data.xcoord; }
50 inline virtual std::vector<UInt_t> GetClusterY() { return vtp_cluster_data.ycoord; }
51
52 private:
53
55 uint32_t slot_blk_hdr, iblock_num, nblock_events; // Block header objects
56 uint32_t slot_blk_trl, nwords_inblock; // Block trailer objects
57 uint32_t slot_evt_hdr, evt_num, trig_num; // Event header objects
58 uint32_t trig_time_w1, trig_time_w2; // Trigger time objects
59 uint64_t trig_time; // Trigger time objects cont.
60 uint32_t evnt_of_blk; // VTP event block information
61 void clear() { memset(this, 0, sizeof(vtp_header_data_struct)); }
62 } __attribute__((aligned(128))) vtp_header_data;
63
66 void clear() {
67 trigtime.clear(); trigtype0.clear(); trigtype1.clear(); trigtype2.clear(); trigtype3.clear(); trigtype4.clear(); trigtype5.clear();
68 }
69 } __attribute__((aligned(128))) vtp_trigger_data;
70
72 std::vector<uint32_t> energy, time, nblocks, xcoord, ycoord;
73 void clear() {
74 energy.clear(); time.clear(); nblocks.clear(); xcoord.clear(); ycoord.clear();
75 }
76 } __attribute__((aligned(128))) vtp_cluster_data;
77
79
81 void PopulateDataVector( std::vector<uint32_t>& data_vector, uint32_t data ) const;
82 void LoadTHaSlotDataObj( THaSlotData* sldat );
83 void PrintDataType() const;
84
85 void DecodeBlockHeader( UInt_t pdat, uint32_t data_type_id );
86 void DecodeBlockTrailer( UInt_t pdat );
87 void DecodeEventHeader( UInt_t pdat );
88 void DecodeTriggerTime( UInt_t pdat, uint32_t data_type_id );
89 void UnsupportedType( UInt_t pdat, uint32_t data_type_id );
90 void DecodeCluster( UInt_t pdat, uint32_t data_type_id );
91 void DecodeTriggerDecision( UInt_t pdat, uint32_t data_type_id );
92
94
95 ClassDef(VTPModule,0) // VTP module
96
97 };
98
99}
100
101#endif
int Int_t
unsigned int UInt_t
uint32_t time
bool Bool_t
const char Option_t
std::vector< uint32_t > trigtype4
Definition VTPModule.h:0
std::vector< uint32_t > ycoord
Definition VTPModule.h:0
std::vector< uint32_t > trigtype2
Definition VTPModule.h:0
std::vector< uint32_t > trigtype0
Definition VTPModule.h:0
std::vector< uint32_t > xcoord
Definition VTPModule.h:0
std::vector< uint32_t > trigtime
Definition VTPModule.h:0
std::vector< uint32_t > trigtype1
Definition VTPModule.h:0
std::vector< uint32_t > trigtype5
Definition VTPModule.h:0
std::vector< uint32_t > nblocks
Definition VTPModule.h:0
std::vector< uint32_t > energy
Definition VTPModule.h:0
std::vector< uint32_t > trigtype3
Definition VTPModule.h:0
virtual void Init()
virtual UInt_t GetData(Decoder::EModuleType, UInt_t, UInt_t) const
TypeSet_t::iterator TypeIter_t
void DecodeTriggerDecision(UInt_t pdat, uint32_t data_type_id)
Bool_t block_header_found
Definition VTPModule.h:78
virtual std::vector< UInt_t > GetTriggerType1()
Definition VTPModule.h:40
virtual std::vector< UInt_t > GetClusterEnergy()
Definition VTPModule.h:46
void LoadTHaSlotDataObj(THaSlotData *sldat)
virtual std::vector< UInt_t > GetTriggerType3()
Definition VTPModule.h:42
virtual std::vector< UInt_t > GetTriggerTime()
Definition VTPModule.h:38
virtual void Clear(Option_t *opt="")
Definition VTPModule.cxx:58
virtual void Init()
Definition VTPModule.cxx:73
virtual std::vector< UInt_t > GetTriggerType0()
Definition VTPModule.h:39
void PrintDataType() const
virtual UInt_t GetTriggerNum()
Definition VTPModule.h:36
void DecodeCluster(UInt_t pdat, uint32_t data_type_id)
virtual ~VTPModule()
Bool_t block_trailer_found
Definition VTPModule.h:78
virtual std::vector< UInt_t > GetTriggerType2()
Definition VTPModule.h:41
void UnsupportedType(UInt_t pdat, uint32_t data_type_id)
void DecodeEventHeader(UInt_t pdat)
virtual std::vector< UInt_t > GetTriggerType5()
Definition VTPModule.h:44
virtual UInt_t LoadSlot(THaSlotData *sldat, const UInt_t *evbuffer, const UInt_t *pstop)
void DecodeBlockTrailer(UInt_t pdat)
virtual std::vector< UInt_t > GetClusterX()
Definition VTPModule.h:49
void DecodeTriggerTime(UInt_t pdat, uint32_t data_type_id)
virtual std::vector< UInt_t > GetClusterTime()
Definition VTPModule.h:47
virtual UInt_t GetHeaderTriggerTime()
Definition VTPModule.cxx:89
Bool_t event_header_found
Definition VTPModule.h:78
virtual std::vector< UInt_t > GetClusterY()
Definition VTPModule.h:50
virtual std::vector< UInt_t > GetTriggerType4()
Definition VTPModule.h:43
virtual std::vector< UInt_t > GetClusterSize()
Definition VTPModule.h:48
static TypeIter_t fgThisType
Definition VTPModule.h:93
void PopulateDataVector(std::vector< uint32_t > &data_vector, uint32_t data) const
virtual Int_t Decode(const UInt_t *data)
void DecodeBlockHeader(UInt_t pdat, uint32_t data_type_id)
STL namespace.