JAPAn
Just Another Parity Analyzer
Loading...
Searching...
No Matches
Coda2EventDecoder.h
Go to the documentation of this file.
1/*!
2 * \file Coda2EventDecoder.h
3 * \brief CODA version 2 event decoder implementation
4 */
5
6#pragma once
7
8#include "VEventDecoder.h"
9#include "Rtypes.h"
10
11#include <vector>
12
13/**
14 * \class Coda2EventDecoder
15 * \ingroup QwAnalysis
16 * \brief CODA version 2 event decoder implementation
17 *
18 * Concrete decoder for CODA 2.x format event streams, handling the legacy
19 * data structures and bank formats. Maintains compatibility with older
20 * data files while providing the same encoding/decoding interface.
21 */
23{
24public:
26 fEvtClass(0),
27 fStatSum(0),
28 fIDBankNum(0) { }
29 ~Coda2EventDecoder() override { }
30public:
31 // Encoding Functions
32 /** Create a PHYS event EVIO header.
33 * @param ROCList List of ROC IDs (unused in CODA2 headers).
34 * @return Vector of 32-bit words containing the header.
35 */
36 std::vector<UInt_t> EncodePHYSEventHeader(std::vector<ROCID_t> &ROCList) override;
37 /** Create a PRESTART event EVIO header.
38 * @param buffer Output buffer (>= 5 words).
39 * @param runnumber Run number.
40 * @param runtype Run type.
41 * @param localtime Event time.
42 */
43 void EncodePrestartEventHeader(int* buffer, int runnumber, int runtype, int localtime) override;
44 /** Create a GO event EVIO header.
45 * @param buffer Output buffer (>= 5 words).
46 * @param eventcount Number of events.
47 * @param localtime Event time.
48 */
49 void EncodeGoEventHeader(int* buffer, int eventcount, int localtime) override;
50 /** Create a PAUSE event EVIO header.
51 * @param buffer Output buffer (>= 5 words).
52 * @param eventcount Number of events.
53 * @param localtime Event time.
54 */
55 void EncodePauseEventHeader(int* buffer, int eventcount, int localtime) override;
56 /** Create an END event EVIO header.
57 * @param buffer Output buffer (>= 5 words).
58 * @param eventcount Number of events.
59 * @param localtime Event time.
60 */
61 void EncodeEndEventHeader(int* buffer, int eventcount, int localtime) override;
62public:
63 // Decoding Functions
64 /** Determine whether a buffer contains a PHYS, control, or other event.
65 * @param buffer Event buffer to decode.
66 * @return CODA_OK on success.
67 */
68 Int_t DecodeEventIDBank(UInt_t *buffer) override;
69 /** Print internal decoder state for diagnostics.
70 * @param out Logging stream.
71 */
72 void PrintDecoderInfo(QwLog& out) override;
73
74private:
75 // Event Information (CODA 2 Specific)
76 UInt_t fEvtClass;
77 UInt_t fStatSum;
78 UInt_t fIDBankNum;
79};
Virtual base class for event decoders to encode and decode CODA data.
~Coda2EventDecoder() override
void EncodePauseEventHeader(int *buffer, int eventcount, int localtime) override
void EncodeEndEventHeader(int *buffer, int eventcount, int localtime) override
void EncodeGoEventHeader(int *buffer, int eventcount, int localtime) override
void PrintDecoderInfo(QwLog &out) override
Int_t DecodeEventIDBank(UInt_t *buffer) override
std::vector< UInt_t > EncodePHYSEventHeader(std::vector< ROCID_t > &ROCList) override
void EncodePrestartEventHeader(int *buffer, int runnumber, int runtype, int localtime) override
Logging and output management system with configurable verbosity levels.
Definition QwLog.h:73