4#pragma GCC system_header
10#include <boost/property_tree/json_parser.hpp>
11#include <boost/property_tree/ptree.hpp>
20#include "FairRootManager.h"
26#include "BmnEventHeader.h"
31#include "BmnMetadataRaw.h"
45#include "DigiArrays.h"
48#define WAIT_LIMIT 40000000
49#define UNKNOWN_RUNID 1000000
55namespace pt = boost::property_tree;
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);
532 auto brAddr = b->GetAddress();
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());
unsigned long long ULong64_t
#define ClassDef(name, id)
DetectorId
BM@N DetectorID enumerator.
BmnStatus
Define status code.
void InitMappers(std::function< void(TString, TObject *)> branch_reg_fun)
UInt_t GetBoundaryRun(UInt_t nSmpl)
void SetRawTree(TTree *tree)
void SetApplyThreshold(bool b)
TString fTrigChannelMapFileName
BmnStatus DecodeOffline()
void Assignment_Fun(const TString name, BrType **ob, TTree *tree=nullptr)
bool GetSaveOutput() const
void SetVspMapping(TString map)
TString GetSubNameAfterRunId(TString name)
void SetBmnSetup(BmnSetup v)
TString fTof701StripMapFileName
map< TTimeStamp, BmnSpillInfo > fSpillMap
BmnStatus FillTimeShiftsMap()
TString fSiliconMapFileName
void SetTOF700ReferenceRun(Int_t n)
BmnDchRaw2Digit * fDchMapper
TString fScWallCalibrationFileName
TString fTrigPlaceMapFileName
TString fTof701PlaceMapFileName
BmnStatus DecodeDataToDigiIterate()
void ConfigureStripMappers()
BmnGemRaw2Digit * fGemMapper
void CopyDataToPedMap(UInt_t ev)
TString fHgndCalibrationFileName
UInt_t GetPeriodId() const
BmnECALRaw2Digit * fECALMapper
Int_t fTOF700ReferenceChamber
DigiRunHeader * rawRunHeader
BmnEventHeader * eventHeader
void SetHgndMapping(TString map)
BmnStatus GetT0Info(Double_t &t0time, Double_t &t0width)
BmnStatus SaveCalibFile(TString &FileName)
BmnNdetRaw2Digit * GetNdetMapper()
void SetTof700Geom(TString geom)
void SetRawRootFile(TString filename)
void SetForwardMode(bool v=true)
void SetFHCalCalibration(TString cal)
BmnStatus LoadCalibFile(TString &FileName)
BmnMscRaw2Digit * fMSCMapper
BmnTof701Raw2Digit * fTof701Mapper
BmnHgndRaw2Digit * fHgndMapper
TString fNdetCalibrationFileName
void SetHgndCalibration(TString cal)
void ClearSpillDigiArrays()
BmnSpillHeader * spillHeader
UInt_t GetNevents() const
map< TTimeStamp, Int_t > leaps
BmnFHCalRaw2Digit * fFHCalMapper
void SetDetectorSetup(std::map< DetectorId, bool > setup)
void SetDigiRootFile(TString filename)
map< uint32_t, uint32_t > _dfl_run_id
UInt_t GetEvForPedestals()
BmnNdetRaw2Digit * fNdetMapper
TString fScWallMapFileName
BmnSetup GetBmnSetup() const
TString GetDigiFileName()
void SetFHCalMapping(TString map)
TString fTof400PlaceMapFileName
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)
BmnSiBTRaw2Digit * fSiBTMapper
bool GetForwardMode() const
Int_t GetUTCShift(TTimeStamp t)
Int_t fTOF700ReferenceRun
void SetUseCalibFile(bool v)
BmnEventHeader * eventHeaderDAQ
void SetECALMapping(TString map)
BmnHgndRaw2Digit * GetHgndMapper()
void * GetMapper(DetectorId id)
void SetNdetCalibration(TString cal)
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)
std::map< DetectorId, bool > fDetectorSetup
TString fHodoCalibrationFileName
unordered_map< UInt_t, Long64_t > fTimeShifts
BmnEventType fCurEventType
BmnStatus DecodeDataToDigi()
BmnEventType fPrevEventType
BmnScWallRaw2Digit * GetScWallMapper()
Int_t GetRunIdFromFile(TString name)
string fDecoderConfigFileName
BmnStatus PreInitOffline()
void SetHodoCalibration(TString cal)
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()
BmnSiliconRaw2Digit * fSiliconMapper
BmnTof1Raw2Digit * fTof400Mapper
void SetEvForPedestals(UInt_t v)
void SetScWallMapping(TString map)
void SetCSCMapping(TString map)
void Register_Fun(const TString name, BrType **ob)
void SetDchMapping(TString map)
BmnVspRaw2Digit * fVspMapper
BmnDecoder(TString file="", TString outfile="", ULong_t nEvents=0, ULong_t period=8)
const TTimeStamp TimeZero
void RecalculatePedestals()
BmnMetadataRaw * metadata
void SetSiliconMapping(TString map)
BmnECALRaw2Digit * GetECALMapper()
TString fFHCalCalibrationFileName
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)
BmnCscRaw2Digit * fCscMapper
void SetSaveOutput(bool v)
BmnZDCRaw2Digit * fZDCMapper
BmnHodoRaw2Digit * fHodoMapper
BmnScWallRaw2Digit * fScWallMapper
void SetSiBTMapping(TString map)
BmnTrigRaw2Digit * fTrigMapper
bool GetUseCalibFile() const
BmnZDCRaw2Digit * GetZDCMapper()
DigiArrays GetDigiArraysObject()
TTimeStamp GetRunStartTime() const
TString fTof700GeomFileName
BmnMwpcRaw2Digit * fMwpcMapper
void SetTaskMode(bool v=true)
BmnTask()
Default constructor.
const char * Data() const
#define DECL_DETECTOR_TIMERS(DetMapper)
*brief user defined string literal for JSON values *sa std::size_t n
basic_json<> json
default specialization