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"
41#define WAIT_LIMIT 40000000
47namespace pt = boost::property_tree;
58 virtual bool Init()
override;
70 LOGF(debug,
"%s", __func__);
76 LOGF(debug,
"%s", __func__);
82 LOGF(debug1,
"FillEventHeader does nothing");
125 return (nSmpl == 128) ? 1542 : 1992;
227 unique_ptr<BmnMetadataRaw>
metadata;
229 uint32_t
data[10000000];
244 map<TTimeStamp, Int_t>
leaps;
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);
#define ClassDef(name, id)
BmnStatus
Define status code.
BmnEventType
Define type of event.
@ 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.
BmnStatus InitConverter(TString FileName)
string fDecoderConfigFileName
virtual Int_t ReadEvent(uint32_t i=0) override
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)
void ClearRawSpillArrays()
BmnThreadManager< BmnConverterThread > * fThreads
bool GetForwardMode() const
BmnEventHeader * eventHeaderDAQ
virtual bool Init() override
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)
BmnRawSource(TString file="", TString outfile="", uint32_t nEvents=0, uint32_t period=8, bool save=false)
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.
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
virtual void Close() override
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)
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 ~BmnRawSource() 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
Defines unique identifiers (enum) for all BM@N detector systems.
basic_json<> json
default specialization