2#define BMNRAWSOURCE_H 1
11#pragma GCC system_header
13#include <boost/property_tree/json_parser.hpp>
14#include <boost/property_tree/ptree.hpp>
25#include "FairRootManager.h"
26#include "FairSource.h"
28#include "BmnDetectorList.h"
29#include "BmnEventHeader.h"
31#include "BmnMetadataRaw.h"
32#include "BmnSpillHeader.h"
35#include "BmnTrigConfig.h"
36#include "DigiRunHeader.h"
41#define WAIT_LIMIT 40000000
47namespace pt = boost::property_tree;
58 virtual bool Init()
override;
61 virtual void Close()
override;
62 virtual void Reset()
override;
70 LOGF(debug,
"%s", __func__);
76 LOGF(debug,
"%s", __func__);
82 LOGF(debug1,
"FillEventHeader does nothing");
125 return (nSmpl == 128) ? 1542 : 1992;
252 template<
typename BrType>
256 FairRootManager* frm = FairRootManager::Instance();
257 frm->Register(name, name +
"_dir", (*ar),
fSaveOutput);
259 TBranch* b = tree->Branch(name, ar);
260 LOGF(debug,
"Register branch %p for obj %p : %s", (
void*)b, (
void*)ar, name.
Data());
280 BmnStatus FillTDC(
const uint32_t* d, uint32_t serial, uint32_t slot, uint32_t modId, uint32_t& idx);
281 BmnStatus FillTQDC(
const uint32_t* d, uint32_t serial, uint32_t slot, uint32_t modId, uint32_t& idx);
329 inline BmnSyncDigit*
FillWR(uint32_t iSerial, uint64_t iEvent, int64_t t_sec, int64_t t_ns);
334 BmnStatus FillMSC(
const uint32_t* d, uint32_t serial, uint32_t slot, uint32_t& idx);
#define ClassDef(name, id)
BmnStatus
Define status code.
@ kBMNPAYLOAD
spill event.
BmnStatus FillTDC(const uint32_t *d, uint32_t serial, uint32_t slot, uint32_t modId, uint32_t &idx)
BmnStatus FillBlockADC(const uint32_t *d, uint32_t serial, uint8_t channel, uint16_t &len, TClonesArray *ar)
map< SysPoint, BmnSpillInfo > fSpillMap
virtual void FillEventHeader(FairEventHeader *feh) override
uint32_t n_msc_spill_ar[16]
const TTimeStamp TimeZero
BmnStatus ConvertRawToRoot()
BmnIFileReader * fFileReader
BmnStatus FillU40VE(const uint32_t *d, uint32_t slot, uint32_t &idx, BmnTrigInfo &spillInfo)
Int_t GetUTCShift(TTimeStamp t)
BmnStatus FillTQDC(const uint32_t *d, uint32_t serial, uint32_t slot, uint32_t modId, uint32_t &idx)
virtual Source_Type GetSourceType() override
void SetPeriodId(uint32_t v)
void SetRawRootFile(TString filename)
void SetSaveOutput(bool v)
BmnStatus ProcessEvent(const uint32_t *data, uint32_t len)
BmnStatus FillFVME2TMWR(const uint32_t *d, uint32_t serial, uint32_t &idx, uint32_t &len)
void SetDecoderConfigFileName(string FileName)
BmnStatus FillTDC250HGND(const uint32_t *d, uint32_t serial, uint32_t len)
Parse custom HGND TDC data block.
string fDecoderConfigFileName
virtual void Reset() override
BmnStatus ConvertStatEvent(const uint32_t *buf, uint32_t &len)
virtual void SetParUnpackers() override
BmnStatus ConvertRawToRootIterate(const uint32_t *buf, uint32_t len)
void FinalizeStat()
Finishes the spill during raw conversion.
void RegisterSpillBranches()
BmnRawSource(vector< TString > files, uint32_t period=8)
BmnStatus ProcessGenericDevice(const uint32_t *d, const DeviceHeader *dev_hdr)
uint32_t GetRunId() const
Bool_t fExportExternalSpillStat
bool GetSaveOutput() const
BmnStatus FillMSC(const uint32_t *d, uint32_t serial, uint32_t slot, uint32_t &idx)
Old MSC format (periodId < 8, one record for spill).
BmnStatus Process_FVME(const uint32_t *data, uint32_t len, uint32_t serial, BmnTrigInfo &spillInfo)
virtual bool SpecifyRunId() override
TString GetRootFileName()
std::map< uint8_t, const uint32_t * > time_slice_map
unique_ptr< DigiRunHeader > runHeader
TTree * GetRawTreeSpills()
uint32_t GetNevents() const
void SetRunId(uint32_t v)
uint32_t GetBoundaryRun(uint32_t nSmpl)
virtual ~BmnRawSource() override
void ClearRawSpillArrays()
BmnThreadManager< BmnConverterThread > * fThreads
bool GetForwardMode() const
BmnEventHeader * eventHeaderDAQ
BmnSpillHeader * spillHeader
map< TTimeStamp, Int_t > leaps
BmnStatus InitConverter()
void QuickProcessEvent(const uint32_t *d, uint32_t len)
void SetTaskMode(bool v=true)
void SetForwardMode(bool v=true)
BmnStatus ConvertRawToRootIterateFileRead()
uint32_t GetPeriodId() const
BmnStatus FillTDC72VXS(const uint32_t *d, uint32_t serial, uint32_t &len, uint32_t modid)
https://afi.jinr.ru/TDC72VXS_DataFormat
BmnStatus FillUT24VE_TRC(const uint32_t *d, uint32_t &serial, uint32_t &len)
Parse UT24VE-TRC MStream data block https://afi.jinr.ru/DataFormatUT24VE-TRC.
BmnStatus ParseJsonTLV(const uint32_t *buf, uint32_t &len)
BmnStatus FillBlockTDC(const uint32_t *d, uint32_t serial, uint16_t &len, TClonesArray *ar, uint32_t modid)
BmnStatus GetT0Info(Double_t &t0time, Double_t &t0width)
BmnStatus MapVSP(const uint32_t *d, const DeviceHeader *dev_hdr)
Parse VSP data block.
virtual void Close() override
TTimeStamp GetRunEndTime() const
BmnStatus FillVSP(TClonesArray *ar)
Int_t GetRunIdFromFile(TString name)
BmnStatus FillTTVXS(const uint32_t *d, uint32_t serial, uint32_t &len)
https://afi.jinr.ru/TTVXS_DataFormat
TTimeStamp GetRunStartTime() const
BmnStatus FillMSC16VE_E(const uint32_t *d, const DeviceHeader *dev_hdr)
Parse MSC16VE-E MStream data block https://afi.jinr.ru/DataFormatMSC_ETH https://afi....
virtual bool InitUnpackers() override
void BranchRegFun(TString name, BrType **ar, TTree *tree=nullptr)
virtual bool Init() override
unique_ptr< BmnMetadataRaw > metadata
BmnSyncDigit * FillWR(uint32_t iSerial, uint64_t iEvent, int64_t t_sec, int64_t t_ns)
int64_t fCurentPositionRawFile
BmnStatus FillVirtualDevice(const uint32_t *d, const DeviceHeader *dh)
virtual Int_t ReadEvent(uint32_t i=0) override
BmnStatus FillTQDC_E(const uint32_t *d, uint32_t serial, uint32_t &len)
Parse TQDC16VS-E MStream data block https://afi.jinr.ru/DataFormatTQDC16VSE.
BmnStatus Process_HRB(const uint32_t *data, uint32_t len, uint32_t serial)
uint32_t GetEventId() const
BmnStatus ConvertRawToRootIterateFile(uint32_t limit=WAIT_LIMIT)
virtual bool ReInitUnpackers() override
Class BmnTrigInfo Trigger counters of the current spill from U40VE card.
const char * Data() const
basic_json<> json
default specialization