4#pragma GCC system_header
10#include <boost/property_tree/json_parser.hpp>
11#include <boost/property_tree/ptree.hpp>
20#include "FairRootManager.h"
48#define WAIT_LIMIT 40000000
49#define UNKNOWN_RUNID 1000000
55namespace pt = boost::property_tree;
57using json = nlohmann::json;
267 return (nSmpl == 128) ? 1542 : 1992;
465#define NAME_CONCAT(name, DetMapper) name##DetMapper
466#define NAME_DETECTOR_TIMER_REA(DetMapper) NAME_CONCAT(workTime_real_, DetMapper)
467#define NAME_DETECTOR_TIMER_CPU(DetMapper) NAME_CONCAT(workTime_cpu_, DetMapper)
469#define DECL_DETECTOR_TIMERS(DetMapper) \
470 Double_t NAME_DETECTOR_TIMER_REA(DetMapper) = 0.0; \
471 Double_t NAME_DETECTOR_TIMER_CPU(DetMapper) = 0.0;
473#define PRINT_DETECTOR_TIMERS(DetMapper) \
474 printf("Fill of the %22s: Real time %3.3f s, CPU time %3.3f s\n", typeid(DetMapper).name(), \
475 NAME_DETECTOR_TIMER_REA(DetMapper), NAME_DETECTOR_TIMER_CPU(DetMapper));
477#define FILL_DETECTOR(DetMapper, ...) \
480 DetMapper->FillEvent(__VA_ARGS__); \
482 fRTime = timer.RealTime(); \
483 fCTime = timer.CpuTime(); \
484 NAME_DETECTOR_TIMER_REA(DetMapper) += fRTime; \
485 NAME_DETECTOR_TIMER_CPU(DetMapper) += fCTime; \
489#define FILL_DETECTOR(DetMapper, ...) \
491 DetMapper->FillEvent(__VA_ARGS__);
521 template<
typename BrType>
525 FairRootManager* frm = FairRootManager::Instance();
526 *ob =
static_cast<BrType*
>(frm->GetObject(name));
527 LOG(debug) <<
"Getting: " << name <<
" p: " << ob;
529 TBranch* b = tree->GetBranch(name);
534 LOG(debug) <<
"Assigning branch " << b <<
" name " << name <<
" addr " << (
void*)brAddr;
535 *ob =
reinterpret_cast<BrType*
>(*(
reinterpret_cast<void**
>(brAddr)));
537 tree->SetBranchAddress(name, ob);
538 LOG(debug) <<
" Set branch " << b <<
" name " << name <<
" addr " << (
void*)*ob;
543 template<
typename BrType>
547 FairRootManager* frm = FairRootManager::Instance();
548 frm->Register(name, name +
"_dir", *ob,
fSaveOutput);
551 LOGF(debug1,
"Register branch %p : %s", (
void*)b, name.
Data());
#define DECL_DETECTOR_TIMERS(DetMapper)
DetectorId
BM@N DetectorID enumerator.
BmnStatus
Define status code.
unsigned long long ULong64_t
#define ClassDef(name, id)
void InitMappers(std::function< void(TString, TObject *)> branch_reg_fun)
UInt_t GetBoundaryRun(UInt_t nSmpl)
BmnNdetRaw2Digit * fNdetMapper
void SetRawTree(TTree *tree)
void SetApplyThreshold(bool b)
BmnZDCRaw2Digit * fZDCMapper
TString fTrigChannelMapFileName
BmnStatus DecodeOffline()
void Assignment_Fun(const TString name, BrType **ob, TTree *tree=nullptr)
bool GetSaveOutput() const
BmnSpillHeader * spillHeader
BmnTof1Raw2Digit * fTof400Mapper
void SetVspMapping(TString map)
unordered_map< UInt_t, Long64_t > fTimeShifts
map< uint32_t, uint32_t > _dfl_run_id
TString GetSubNameAfterRunId(TString name)
void SetBmnSetup(BmnSetup v)
BmnEventHeader * eventHeader
BmnScWallRaw2Digit * fScWallMapper
TString fTof701StripMapFileName
BmnStatus FillTimeShiftsMap()
TString fSiliconMapFileName
void SetTOF700ReferenceRun(Int_t n)
TString fScWallCalibrationFileName
TString fTrigPlaceMapFileName
TString fTof701PlaceMapFileName
BmnStatus DecodeDataToDigiIterate()
void ConfigureStripMappers()
BmnDchRaw2Digit * fDchMapper
void CopyDataToPedMap(UInt_t ev)
TString fHgndCalibrationFileName
UInt_t GetPeriodId() const
BmnTrigRaw2Digit * fTrigMapper
Int_t fTOF700ReferenceChamber
void SetHgndMapping(TString map)
BmnStatus GetT0Info(Double_t &t0time, Double_t &t0width)
BmnTof701Raw2Digit * fTof701Mapper
BmnStatus SaveCalibFile(TString &FileName)
BmnEventHeader * eventHeaderDAQ
BmnNdetRaw2Digit * GetNdetMapper()
void SetTof700Geom(TString geom)
void SetRawRootFile(TString filename)
void SetForwardMode(bool v=true)
std::map< DetectorId, bool > fDetectorSetup
void SetFHCalCalibration(TString cal)
BmnStatus LoadCalibFile(TString &FileName)
TString fNdetCalibrationFileName
void SetHgndCalibration(TString cal)
void ClearSpillDigiArrays()
BmnHodoRaw2Digit * fHodoMapper
UInt_t GetNevents() const
BmnSiliconRaw2Digit * fSiliconMapper
void SetDetectorSetup(std::map< DetectorId, bool > setup)
void SetDigiRootFile(TString filename)
UInt_t GetEvForPedestals()
TString fScWallMapFileName
BmnSetup GetBmnSetup() const
TString GetDigiFileName()
BmnVspRaw2Digit * fVspMapper
void SetFHCalMapping(TString map)
TString fTof400PlaceMapFileName
BmnMwpcRaw2Digit * fMwpcMapper
void SetMSCMapping(TString map)
void SetECALCalibration(TString cal)
void SetZDCCalibration(TString cal)
void SetTof701Mapping(TString PlaceMap, TString StripMap)
TTimeStamp GetRunEndTime() const
void SetDecoderConfigFileName(string FileName)
void SetPeriodId(UInt_t v)
void SetMwpcMapping(TString map)
bool GetForwardMode() const
Int_t GetUTCShift(TTimeStamp t)
Int_t fTOF700ReferenceRun
BmnMetadataRaw * metadata
BmnECALRaw2Digit * fECALMapper
void SetUseCalibFile(bool v)
void SetECALMapping(TString map)
BmnHgndRaw2Digit * GetHgndMapper()
void * GetMapper(DetectorId id)
void SetNdetCalibration(TString cal)
BmnFHCalRaw2Digit * fFHCalMapper
void FillWR(UInt_t iSerial, ULong64_t iEvent, Long64_t t_sec, Long64_t t_ns)
void SetTrigPlaceMapping(TString map)
TString fTof700MapFileName
void SetGemMapping(TString map)
void SetZDCMapping(TString map)
DigiRunHeader * rawRunHeader
BmnMscRaw2Digit * fMSCMapper
TString fHodoCalibrationFileName
BmnEventType fCurEventType
BmnStatus DecodeDataToDigi()
BmnEventType fPrevEventType
BmnScWallRaw2Digit * GetScWallMapper()
map< TTimeStamp, Int_t > leaps
Int_t GetRunIdFromFile(TString name)
string fDecoderConfigFileName
BmnStatus PreInitOffline()
void SetHodoCalibration(TString cal)
BmnSiBTRaw2Digit * fSiBTMapper
TString fZDCCalibrationFileName
unordered_map< UInt_t, Long64_t > GetTimeShifts()
TString fFHCalMapFileName
void SetTof700Mapping(TString map)
BmnFHCalRaw2Digit * GetFHCalMapper()
void SetRawTreeSpills(TTree *tree)
void SetTrigChannelMapping(TString file)
BmnHodoRaw2Digit * GetHodoMapper()
void SetEvForPedestals(UInt_t v)
void SetScWallMapping(TString map)
void SetCSCMapping(TString map)
void Register_Fun(const TString name, BrType **ob)
map< TTimeStamp, BmnSpillInfo > fSpillMap
void SetDchMapping(TString map)
BmnDecoder(TString file="", TString outfile="", ULong_t nEvents=0, ULong_t period=8)
const TTimeStamp TimeZero
void RecalculatePedestals()
void SetSiliconMapping(TString map)
BmnECALRaw2Digit * GetECALMapper()
TString fFHCalCalibrationFileName
BmnCscRaw2Digit * fCscMapper
TString fECALCalibrationFileName
TString fTof400StripMapFileName
UInt_t GetEventId() const
void SetTof400Mapping(TString PlaceMap, TString StripMap)
void SetScWallCalibration(TString cal)
void SetTOF700ReferenceChamber(Int_t n)
TString GetRootFileName()
void SetHodoMapping(TString map)
void SetNdetMapping(TString map)
BmnHgndRaw2Digit * fHgndMapper
void SetSaveOutput(bool v)
void SetSiBTMapping(TString map)
bool GetUseCalibFile() const
BmnGemRaw2Digit * fGemMapper
BmnZDCRaw2Digit * GetZDCMapper()
DigiArrays GetDigiArraysObject()
TTimeStamp GetRunStartTime() const
TString fTof700GeomFileName
void SetTaskMode(bool v=true)
BmnTask()
Default constructor.
virtual char * GetAddress() const
const char * Data() const