CbmRoot
Loading...
Searching...
No Matches
CbmRichUnpackAlgo2022.h
Go to the documentation of this file.
1/* Copyright (C) 2021 Goethe-University Frankfurt, Frankfurt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Pascal Raisig [committer] */
4
21#ifndef CbmRichUnpackAlgo2022_H
22#define CbmRichUnpackAlgo2022_H
23
24#include "CbmMcbm2018RichPar.h"
25#include "CbmRecoUnpackAlgo.tmpl"
26#include "CbmRichDigi.h"
28#include "Timeslice.hpp" // timeslice
29
30#include <Rtypes.h> // for types
31#include <RtypesCore.h>
32
33#include <cstddef>
34#include <cstdint>
35#include <iomanip>
36#include <memory>
37#include <unordered_set>
38#include <utility>
39
41 public:
44
46 virtual ~CbmRichUnpackAlgo2022();
47
50
53
54
55 protected:
57
59
61
62 void processCtsSubSubEvent(CbmRichUnpackAlgoMicrosliceReader& reader, uint32_t subSubEventSize,
63 uint32_t subSubEventId);
64
65 void processSubSubEvent(CbmRichUnpackAlgoMicrosliceReader& reader, int nofTimeWords, uint32_t subSubEventId);
66
67 void processTimeDataWord(CbmRichUnpackAlgoMicrosliceReader& reader, int iTdc, uint32_t epoch, uint32_t tdcWord,
68 uint32_t subSubEventId, std::vector<double>& raisingTime);
69
73 void writeOutputDigi(Int_t fpgaID, Int_t channel, Double_t time, Double_t tot);
74
75
87 bool unpack(const fles::Timeslice* ts, std::uint16_t icomp, UInt_t imslice);
88
89 //bool checkMaskedDiRICH(Int_t subSubEventId);
90
92 //CbmMcbm2018RichPar fUnpackPar;
93
94 double fMbsPrevTimeCh0 = 0.;
95 double fMbsPrevTimeCh1 = 0.;
96
97 uint64_t fCbmTimeMS;
99
100 double fPrevLastCh0ReTime[13]; // 12 DiRICHes chnl0 + 1 CTS chnl0
102
103 private:
104 std::unordered_set<uint16_t> fUnexpectedIds = {};
105
106 ClassDef(CbmRichUnpackAlgo2022, 2)
107};
108
109#endif // CbmRichUnpackAlgo2022_H
int Int_t
void processCtsSubSubEvent(CbmRichUnpackAlgoMicrosliceReader &reader, uint32_t subSubEventSize, uint32_t subSubEventId)
bool unpack(const fles::Timeslice *ts, std::uint16_t icomp, UInt_t imslice)
Unpack a given microslice. To be implemented in the derived unpacker algos.
virtual ~CbmRichUnpackAlgo2022()
Destroy the Cbm Trd Unpack Task object.
CbmRichUnpackAlgo2022(const CbmRichUnpackAlgo2022 &)=delete
Copy constructor - not implemented.
void processHubBlock(CbmRichUnpackAlgoMicrosliceReader &reader)
std::unordered_set< uint16_t > fUnexpectedIds
void processTrbPacket(CbmRichUnpackAlgoMicrosliceReader &reader)
void processTimeDataWord(CbmRichUnpackAlgoMicrosliceReader &reader, int iTdc, uint32_t epoch, uint32_t tdcWord, uint32_t subSubEventId, std::vector< double > &raisingTime)
double fMbsPrevTimeCh0
Parameters for the unpacking.
CbmRichUnpackAlgo2022()
Create the Cbm Trd Unpack AlgoBase object.
CbmRichUnpackAlgo2022 & operator=(const CbmRichUnpackAlgo2022 &)=delete
Assignment operator - not implemented.
void processCBMtime(CbmRichUnpackAlgoMicrosliceReader &reader)
void writeOutputDigi(Int_t fpgaID, Int_t channel, Double_t time, Double_t tot)
void processSubSubEvent(CbmRichUnpackAlgoMicrosliceReader &reader, int nofTimeWords, uint32_t subSubEventId)