23#ifndef RestProcess_TRestEventTimeSelectionProcess
24#define RestProcess_TRestEventTimeSelectionProcess
26#include <TRestEventProcess.h>
30using Interval = std::pair<TTimeStamp, TTimeStamp>;
35 std::string fFileWithTimes;
38 Long_t fTimeOffsetInSeconds;
39 Long_t fTimeStartMarginInSeconds;
40 Long_t fTimeEndMarginInSeconds;
41 std::vector<Interval> fStartEndTimes;
42 Bool_t fUseRunStartAndEndTimes;
47 Int_t fNEventsSelected;
48 Double_t fTotalTimeInSeconds;
68 const char* GetProcessName()
const override {
return "EventTimeSelectionProcess"; }
70 std::string GetFileWithTimes()
const {
return fFileWithTimes; }
72 Bool_t GetIsActiveTime()
const {
return fIsActiveTime; }
73 Char_t GetDelimiter()
const {
return fDelimiter; }
75 std::vector<Interval> GetStartEndTimes()
const {
return fStartEndTimes; }
76 std::string
GetTimeStampCut(std::string timeStampObsName =
"timeStamp", Bool_t useOffset =
true,
77 Bool_t useMargins =
true, Int_t nTimes = -1);
79 Int_t GetNEventsSelected()
const {
return fNEventsSelected; }
80 Double_t GetTotalTimeInSeconds()
const {
return fTotalTimeInSeconds; }
81 Long_t GetTimeOffsetInSeconds()
const {
return fTimeOffsetInSeconds; }
82 Long_t GetTimeStartMarginInSeconds()
const {
return fTimeStartMarginInSeconds; }
83 Long_t GetTimeEndMarginInSeconds()
const {
return fTimeEndMarginInSeconds; }
86 static std::vector<Interval> ReadFileWithTimes(std::string fileWithTimes, Char_t delimiter =
',');
87 void ApplyStartRunTime(
const TTimeStamp& runStartTime);
88 void ApplyEndRunTime(
const TTimeStamp& runEndTime);
90 void SetAsActiveTime() { fIsActiveTime =
true; }
91 void SetAsDeadTime() { fIsActiveTime =
false; }
92 void SetFileWithTimes(
const std::string& fileWithTimes) { fFileWithTimes = fileWithTimes; }
93 void SetIsActiveTime(Bool_t isActiveTime) { fIsActiveTime = isActiveTime; }
94 void SetDelimiter(Char_t delimiter) { fDelimiter = delimiter; }
95 void SetStartEndTimes(
const std::vector<Interval>& startEndTimes) { fStartEndTimes = startEndTimes; }
96 void SetTimeOffsetInSeconds(Long_t timeOffsetInSeconds) { fTimeOffsetInSeconds = timeOffsetInSeconds; }
97 void SetTimeStartMarginInSeconds(Long_t timeStartMarginInSeconds) {
98 fTimeStartMarginInSeconds = timeStartMarginInSeconds;
100 void SetTimeEndMarginInSeconds(Long_t timeEndMarginInSeconds) {
101 fTimeEndMarginInSeconds = timeEndMarginInSeconds;
A base class for any REST event process.
RESTValue GetOutputEvent() const override
Get pointer to output event. Must be implemented in the derived class.
Double_t CalculateTotalTimeInSeconds()
Function to calculate the total time in seconds of all the time ranges (active or dead periods of tim...
TRestEventTimeSelectionProcess()
Default constructor.
void PrintMetadata() override
Prints on screen the process data members.
void EndProcess() override
Function to include required actions after all events have been processed.
Int_t fNEventsRejected
Information about the events processed.
TRestEvent * ProcessEvent(TRestEvent *inputEvent) override
The main processing event function.
void Initialize() override
Function to initialize input/output event members and define the section name.
std::string GetTimeStampCut(std::string timeStampObsName="timeStamp", Bool_t useOffset=true, Bool_t useMargins=true, Int_t nTimes=-1)
Function to get the cut string that reproduce the time selection done by this process (useful for TRe...
void InitProcess() override
Process initialization.
RESTValue GetInputEvent() const override
Get pointer to input event. Must be implemented in the derived class.
A base class for any REST event.