74#include "TRestRawFemDAQToSignalProcess.h"
76#include <TObjString.h>
79#include <yaml-cpp/yaml.h>
86TRestRawFemDAQToSignalProcess::TRestRawFemDAQToSignalProcess() {
Initialize(); }
88TRestRawFemDAQToSignalProcess::TRestRawFemDAQToSignalProcess(
const char* configFilename) {
Initialize(); }
90TRestRawFemDAQToSignalProcess::~TRestRawFemDAQToSignalProcess() {}
102 const auto inputFilename =
fRunInfo->GetInputFileName(0);
105 if (inputFilename.substr(inputFilename.size() - 5) !=
".root") {
106 cerr <<
"TRestRawFemDAQToSignalProcess::InitProcess: Input file is not a root file" << endl;
110 fInputFile = TFile::Open(inputFilename.c_str(),
"READ");
112 cerr <<
"TRestRawFemDAQToSignalProcess::InitProcess: Error opening input file" << endl;
117 fInputTree = fInputFile->Get<TTree>(
"SignalEvent");
118 fRunInfo->SetFeminosDaqTotalEvents(fInputTree->GetEntries());
121 cerr <<
"TRestRawFemDAQToSignalProcess::InitProcess: Error opening input trees" << endl;
125 TObjString* tsObj = (TObjString*)fInputFile->Get(
"startTime");
126 TObjString* etObj = (TObjString*)fInputFile->Get(
"endTime");
128 Double_t startTimestamp = std::stod(tsObj->GetString().Data());
129 fRunInfo->SetStartTimeStamp(startTimestamp);
132 Double_t endTimestamp = std::stod(etObj->GetString().Data());
133 fRunInfo->SetEndTimeStamp(endTimestamp);
137 if (fUseFeminosDaqRunInfo) {
138 TObjString* yamlConfigObj = (TObjString*)fInputFile->Get(
"RunConfigYAML");
139 TObjString* yamlfNameObj = (TObjString*)fInputFile->Get(
"yaml_fileName");
142 std::string yamlConfig = yamlConfigObj->GetString().Data();
143 std::cout <<
"Config YAML: " << yamlConfig << std::endl;
144 YAML::Node config = YAML::Load(yamlConfig);
145 YAML::Node run = config[
"run"];
148 std::string tag = run[
"tag"].as<std::string>();
150 std::string type = run[
"type"].as<std::string>();
156 std::string fileName = yamlfNameObj->GetString().Data();
157 std::cout <<
"Config fileName: " << fileName << std::endl;
161 fUseFeminosDaqRunInfo =
false;
164 fInputTree->SetBranchAddress(
"timestamp", &fTimestamp);
165 fInputTree->SetBranchAddress(
"signalsID", &fSignalIds);
166 fInputTree->SetBranchAddress(
"pulses", &fSignalValues);
167 fInputTree->SetBranchAddress(
"eventID", &fEventID);
173 fInputTree->GetEntry(fInputTreeEntry);
175 fSignalEvent->SetID(fEventID);
178 fSignalEvent->
SetTime(fTimestamp);
181 if (fTimestamp < fStartTimestamp) {
182 fStartTimestamp = fTimestamp;
185 if (fTimestamp > fEndTimestamp) {
186 fEndTimestamp = fTimestamp;
189 for (
size_t i = 0; i < fSignalIds->size(); i++) {
193 const auto id = fSignalIds->at(i);
196 for (
int j = 0; j < 512; j++) {
197 signal.AddPoint(
short(fSignalValues->at(i * 512 + j)));
200 fSignalEvent->AddSignal(signal);
205 if (fInputTreeEntry >= fInputTree->GetEntries()) {
213 if (fSetRunStartEndFromEvents) {
214 fRunInfo->SetStartTimeStamp(fStartTimestamp);
215 fRunInfo->SetEndTimeStamp(fEndTimestamp);
bool fIsExternal
It defines if the process reads event data from an external source.
TRestRun * fRunInfo
< Pointer to TRestRun object where to find metadata.
A base class for any REST event.
void SetTime(Double_t time)
void InitProcess() override
To be executed at the beginning of the run (outside event loop)
TRestEvent * ProcessEvent(TRestEvent *inputEvent) override
Process one event.
void EndProcess() override
To be executed at the end of the run (outside event loop)
void Initialize() override
Making default settings.
An event container for time rawdata signals with fixed length.
It defines a Short_t array with a physical parameter that evolves in time using a fixed time bin.