TriggerAlgoBase_service.cc
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 //
3 // \file TriggerAlgoBase_service.cc
4 //
5 ////////////////////////////////////////////////////////////////////////
6 
7 #include "TriggerAlgoBase.h"
8 
9 namespace trigger{
10 
11  //****************************************************************************
13  //****************************************************************************
14 
16 
17  Config(pset);
18 
19  }
20 
21  //****************************************************************************
23  //****************************************************************************
24 
25  _preceeding_slices = pset.get< int >("PreceedingWindow");
26 
27  _proceeding_slices = pset.get< int >("ProceedingWindow");
28 
29  _deadtime = pset.get< int >("DeadTime");
30 
31  }
32 
33 
34  //****************************************************************************
36  //****************************************************************************
37 
38  if(_sim_done) return;
39 
40  _time_windows.clear();
41 
42  trigdata::TrigTimeSlice_t last_timestamp=0;
43 
44  trigdata::TrigTimeSlice_t window_begin=0;
45 
46  trigdata::TrigTimeSlice_t window_end=0;
47 
49  iter != _timestamps.end();
50  ++iter){
51 
52  if(!(last_timestamp) || (*iter) > (last_timestamp + _deadtime)) {
53 
54  window_begin = ((*iter) > _preceeding_slices) ? ((*iter) - _preceeding_slices) : 0;
55 
56  window_end = (*iter) + _proceeding_slices;
57 
58  _time_windows.insert(std::make_pair(window_end,window_begin));
59 
60  last_timestamp=(*iter);
61 
62  }
63 
64  }
65 
66  _sim_done = true;
67 
68  }
69 
70  //****************************************************************************
72  //****************************************************************************
73 
74  if(!_time_windows.size()) return false;
75 
77 
78  if(start_time==_time_windows.end()) return false;
79 
80  else return ((*start_time).second < time);
81 
82  }
83 
84 
85  //DEFINE_ART_SERVICE(TriggerAlgoBase)
86 
87 } // namespace trigger
uint64_t TrigTimeSlice_t
A unit of time used in trigger logic.
Definition: TriggerTypes.hh:9
std::set< trigdata::TrigTimeSlice_t > _timestamps
stores CANDIDATE readout trigger timestamps
trigdata::TrigTimeSlice_t _proceeding_slices
proceeding readout-window from trigger time stamp
intermediate_table::const_iterator const_iterator
trigdata::TrigTimeSlice_t _preceeding_slices
preceeding readout-window from trigger time stamp
T get(std::string const &key) const
Definition: ParameterSet.h:271
TriggerAlgoBase(fhicl::ParameterSet const &pset)
virtual void SimTrigger()
Function to analyze _timestamps and store valid readout windows in _time_windows. ...
bool _sim_done
run utility boolean, set to true after trigger simulation is run
std::map< trigdata::TrigTimeSlice_t, trigdata::TrigTimeSlice_t > _time_windows
stores VALID readout trigger time windows
void Config(fhicl::ParameterSet const &pset)
Function to extract fhicl parameters.
bool IsTriggered(trigdata::TrigTimeSlice_t time) const
Function to check if "time" (input arg.) is within any of valid readout windows or not...
trigdata::TrigTimeSlice_t _deadtime
trigger deadtime AFTER each valid trigger timestamps
virtual void ClearTriggerInfo()
Function to clear simulated trigger information.