GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TGRSIDataParser.h
Go to the documentation of this file.
1#ifndef TGRSIDARAPARSER_H
2#define TGRSIDARAPARSER_H
3
4/** \addtogroup Sorting
5 * @{
6 */
7
8/////////////////////////////////////////////////////////////////
9///
10/// \class TGRSIDataParser
11///
12/// The TGRSIDataParser is the DAQ dependent part of GRSISort.
13/// It takes a "DAQ-dependent"-flavoured MIDAS file and
14/// converts it into a generic TFragment that the rest of
15/// GRSISort can deal with. This is where event word masks
16/// are applied, and any changes to the event format must
17/// be implemented.
18///
19/////////////////////////////////////////////////////////////////
20
21#include "Globals.h"
22#include <ctime>
23#include <sstream>
24#include <vector>
25#include <map>
26#include <limits>
27
28#ifndef __CINT__
29#include <memory>
30#endif
31
32#include "TDataParser.h"
33#include "TChannel.h"
34#include "TFragment.h"
35#include "TPPG.h"
36#include "TScaler.h"
37#include "TFragmentMap.h"
38#include "ThreadsafeQueue.h"
39#include "TEpicsFrag.h"
40#include "TGRSIOptions.h"
41#include "TRawEvent.h"
42#include "TMidasEvent.h"
43
45public:
48 TGRSIDataParser(TGRSIDataParser&&) noexcept = default;
49 TGRSIDataParser& operator=(const TGRSIDataParser&) = delete;
50 TGRSIDataParser& operator=(TGRSIDataParser&&) noexcept = delete;
51 ~TGRSIDataParser() override = default;
52
53 // ENUM(EBank, char, kWFDN,kGRF1,kGRF2,kGRF3,kFME0,kFME1,kFME2,kFME3);
54 enum class EBank { kWFDN = 0,
55 kGRF1 = 1,
56 kGRF2 = 2,
57 kGRF3 = 3,
58 kGRF4 = 4,
59 kFME0 = 5,
60 kFME1 = 6,
61 kFME2 = 7,
62 kFME3 = 8,
63 kMADC = 9,
64 kEMMT = 10 };
65
92
93#ifndef __CINT__
94 int Process(std::shared_ptr<TRawEvent>) override;
95 int ProcessGriffin(uint32_t* data, const int& size, const EBank& bank, std::shared_ptr<TMidasEvent>& event);
96 int TigressDataToFragment(uint32_t* data, int size, std::shared_ptr<TMidasEvent>& event);
97 int CaenPsdToFragment(uint32_t* data, int size, std::shared_ptr<TMidasEvent>& event);
98 int CaenPhaToFragment(uint32_t* data, int size, std::shared_ptr<TMidasEvent>& event);
99 int EmmaMadcDataToFragment(const uint32_t* data, int size, std::shared_ptr<TMidasEvent>& event);
100 int EmmaTdcDataToFragment(uint32_t* data, int size, std::shared_ptr<TMidasEvent>& event);
101 int EmmaRawDataToFragment(uint32_t* data, int size, std::shared_ptr<TMidasEvent>& event);
102 int EmmaSumDataToFragment(uint32_t* data, int size, std::shared_ptr<TMidasEvent>& event);
103#endif
104
105 int GriffinDataToFragment(uint32_t* data, int size, EBank bank, unsigned int midasSerialNumber = 0, time_t midasTime = 0);
106 int GriffinDataToPPGEvent(uint32_t* data, int size, unsigned int midasSerialNumber = 0, time_t midasTime = 0);
107 int GriffinDataToScalerEvent(uint32_t* data, int address);
108
109 int RFScalerToFragment(uint32_t* data, int size, const std::shared_ptr<TFragment>& frag);
110
111 int EPIXToScalar(float* data, int size, unsigned int midasSerialNumber = 0, time_t midasTime = 0);
112 int SCLRToScalar(uint32_t* data, int size, unsigned int midasSerialNumber = 0, time_t midasTime = 0);
113 int EightPIDataToFragment(uint32_t stream, uint32_t* data, int size, unsigned int midasSerialNumber = 0, time_t midasTime = 0);
114
115private:
117 bool fIgnoreMissingChannel; ///< flag that's set to TGRSIOptions::IgnoreMissingChannel
118#ifndef __CINT__
119 void SetTIGWave(uint32_t, const std::shared_ptr<TFragment>&);
120 void SetTIGAddress(uint32_t, const std::shared_ptr<TFragment>&);
121 void SetTIGCfd(uint32_t, const std::shared_ptr<TFragment>&);
122 void SetTIGCharge(uint32_t, const std::shared_ptr<TFragment>&);
123 void SetTIGLed(uint32_t, const std::shared_ptr<TFragment>&);
124
125 bool SetTIGTriggerID(uint32_t, const std::shared_ptr<TFragment>&);
126 bool SetTIGTimeStamp(uint32_t*, const std::shared_ptr<TFragment>&);
127
128 bool SetGRIFHeader(uint32_t, const std::shared_ptr<TFragment>&, EBank);
129 bool SetGRIFPrimaryFilterPattern(uint32_t, const std::shared_ptr<TFragment>&, EBank);
130 bool SetGRIFPrimaryFilterId(uint32_t, const std::shared_ptr<TFragment>&);
131 bool SetGRIFChannelTriggerId(uint32_t, const std::shared_ptr<TFragment>&);
132 bool SetGRIFTimeStampLow(uint32_t, const std::shared_ptr<TFragment>&);
133 bool SetGRIFNetworkPacket(uint32_t, const std::shared_ptr<TFragment>&);
134
135 bool SetGRIFPsd(uint32_t, const std::shared_ptr<TFragment>&);
136 bool SetGRIFCc(uint32_t, const std::shared_ptr<TFragment>&);
137
138 bool SetGRIFWaveForm(uint32_t, const std::shared_ptr<TFragment>&);
139 bool SetGRIFDeadTime(uint32_t, const std::shared_ptr<TFragment>&);
140#endif
141
142 bool SetNewPPGPattern(uint32_t, TPPGData*);
143 bool SetOldPPGPattern(uint32_t, TPPGData*);
144 bool SetPPGNetworkPacket(uint32_t, TPPGData*);
145 bool SetPPGLowTimeStamp(uint32_t, TPPGData*);
146 bool SetPPGHighTimeStamp(uint32_t, TPPGData*);
147 bool SetScalerNetworkPacket(uint32_t, TScalerData*);
148 bool SetScalerLowTimeStamp(uint32_t, TScalerData*);
149 bool SetScalerHighTimeStamp(uint32_t, TScalerData*, int&);
150 bool SetScalerValue(int, uint32_t, TScalerData*);
151};
152/*! @} */
153#endif
TGRSIDataParser(TGRSIDataParser &&) noexcept=default
int EightPIDataToFragment(uint32_t stream, uint32_t *data, int size, unsigned int midasSerialNumber=0, time_t midasTime=0)
bool SetGRIFChannelTriggerId(uint32_t, const std::shared_ptr< TFragment > &)
bool SetNewPPGPattern(uint32_t, TPPGData *)
int RFScalerToFragment(uint32_t *data, int size, const std::shared_ptr< TFragment > &frag)
void SetTIGCfd(uint32_t, const std::shared_ptr< TFragment > &)
int EmmaMadcDataToFragment(const uint32_t *data, int size, std::shared_ptr< TMidasEvent > &event)
void SetTIGCharge(uint32_t, const std::shared_ptr< TFragment > &)
int GriffinDataToFragment(uint32_t *data, int size, EBank bank, unsigned int midasSerialNumber=0, time_t midasTime=0)
bool SetGRIFPrimaryFilterId(uint32_t, const std::shared_ptr< TFragment > &)
bool SetOldPPGPattern(uint32_t, TPPGData *)
void SetTIGWave(uint32_t, const std::shared_ptr< TFragment > &)
int SCLRToScalar(uint32_t *data, int size, unsigned int midasSerialNumber=0, time_t midasTime=0)
bool SetGRIFPsd(uint32_t, const std::shared_ptr< TFragment > &)
bool SetGRIFPrimaryFilterPattern(uint32_t, const std::shared_ptr< TFragment > &, EBank)
bool SetGRIFTimeStampLow(uint32_t, const std::shared_ptr< TFragment > &)
int ProcessGriffin(uint32_t *data, const int &size, const EBank &bank, std::shared_ptr< TMidasEvent > &event)
bool SetGRIFNetworkPacket(uint32_t, const std::shared_ptr< TFragment > &)
bool SetPPGLowTimeStamp(uint32_t, TPPGData *)
void SetTIGAddress(uint32_t, const std::shared_ptr< TFragment > &)
int Process(std::shared_ptr< TRawEvent >) override
int EPIXToScalar(float *data, int size, unsigned int midasSerialNumber=0, time_t midasTime=0)
int EmmaSumDataToFragment(uint32_t *data, int size, std::shared_ptr< TMidasEvent > &event)
bool SetTIGTriggerID(uint32_t, const std::shared_ptr< TFragment > &)
int CaenPsdToFragment(uint32_t *data, int size, std::shared_ptr< TMidasEvent > &event)
TGRSIDataParser(const TGRSIDataParser &)=default
bool SetScalerNetworkPacket(uint32_t, TScalerData *)
bool SetTIGTimeStamp(uint32_t *, const std::shared_ptr< TFragment > &)
bool fIgnoreMissingChannel
flag that's set to TGRSIOptions::IgnoreMissingChannel
bool SetGRIFCc(uint32_t, const std::shared_ptr< TFragment > &)
bool SetScalerValue(int, uint32_t, TScalerData *)
int GriffinDataToPPGEvent(uint32_t *data, int size, unsigned int midasSerialNumber=0, time_t midasTime=0)
int CaenPhaToFragment(uint32_t *data, int size, std::shared_ptr< TMidasEvent > &event)
bool SetPPGHighTimeStamp(uint32_t, TPPGData *)
bool SetScalerLowTimeStamp(uint32_t, TScalerData *)
EDataParserState fState
bool SetGRIFDeadTime(uint32_t, const std::shared_ptr< TFragment > &)
void SetTIGLed(uint32_t, const std::shared_ptr< TFragment > &)
bool SetGRIFWaveForm(uint32_t, const std::shared_ptr< TFragment > &)
int EmmaRawDataToFragment(uint32_t *data, int size, std::shared_ptr< TMidasEvent > &event)
bool SetGRIFHeader(uint32_t, const std::shared_ptr< TFragment > &, EBank)
int EmmaTdcDataToFragment(uint32_t *data, int size, std::shared_ptr< TMidasEvent > &event)
bool SetScalerHighTimeStamp(uint32_t, TScalerData *, int &)
int GriffinDataToScalerEvent(uint32_t *data, int address)
int TigressDataToFragment(uint32_t *data, int size, std::shared_ptr< TMidasEvent > &event)
bool SetPPGNetworkPacket(uint32_t, TPPGData *)