REvent.h
Go to the documentation of this file.
1 #ifndef _revt_REvent_h_
2 #define _revt_REvent_h_
3 
4 #include <revt/Station.h>
5 #include <revt/Header.h>
6 
7 #include <utl/LameShadowPtr.h>
8 #include <utl/IteratorRange.h>
9 #include <utl/ClassHelpers.h>
10 
11 #include <boost/iterator/indirect_iterator.hpp>
12 #include <boost/iterator/transform_iterator.hpp>
13 #include <boost/iterator/filter_iterator.hpp>
14 
15 #include <vector>
16 #include <map>
17 #include <string>
18 #include <algorithm>
19 
20 
21 namespace evt {
22  class Event;
23 }
24 
25 namespace revt {
26 
27  class EventTrigger;
28 
29 
42  class REvent {
43 
44  private:
45  typedef std::map<int, Station*> InternalStationCollection;
46  typedef InternalStationCollection::iterator InternalStationIterator;
47  typedef InternalStationCollection::const_iterator InternalConstStationIterator;
48 
49  /*struct ConstInternalStationFunctor { //should not be needed
50  const revt::Station&
51  operator()(const InternalStationCollection::value_type& pair) const
52  { return *pair.second; }
53  };*/
54 
56  revt::Station& operator()(const InternalStationCollection::value_type& pair) const
57  { return *pair.second; }
58  };
59 
60  public:
64 
65  // Set by Offline Modules
66  e2DLDFsigmaatlimit = (1 << 1),
67 
68  // 2DLDFFit -> Varying the measured values and refitting the 2LDF 1000 times, shape of distribution used as quality criteria
69  e2DLDFvariationfails = (1 << 2), // 2DLDFFitter not enough successful reconstructions varying the measruments
70  e2DLDFmeanAdistoutside = (1 << 3), // difference between mean of A-distribution and A too big
71  e2DLDFmeanSigmadistoutside = (1 << 4), // difference between mean of Sigma-distribution and Sigma too big
72  e2DLDFasymmetryAdist = (1 << 5), // A-distribution too asymmetric
73  e2DLDFasymmetrySigmadist = (1 << 6), // Sigma-distribution too asymmetric
74  e2DLDFFitfailed = (1 << 7), // no successful 2DLDF fit
75 
76  // Thunderstorm rejection - set by external code in tools dir
77  eCRSNoData = (1 << 8),
78  eCRSTsConditions = (1 << 9),
79  eAERAWSNoData = (1 << 10),
80  eAERAWSTsConditions = (1 << 11),
81 
83  };
84 
85  REvent(const REvent& re) { *this = re; }
86  REvent& operator=(const REvent& rEvent);
87 
89  typedef boost::transform_iterator<
90  InternalStationFunctor, InternalConstStationIterator, const revt::Station&
92  typedef boost::transform_iterator<
95 
97  { return AllStationIterator(fStations.begin()); }
99  { return AllStationIterator(fStations.end()); }
100 
102  { return ConstAllStationIterator(fStations.begin()); }
104  { return ConstAllStationIterator(fStations.end()); }
105 
107 
108 
110  typedef boost::filter_iterator<SignalStationFilter, ConstAllStationIterator> ConstSignalStationIterator;
111 
112  SignalStationIterator SignalStationsBegin()
116 
121 
123 
124 
125  typedef boost::filter_iterator<StationFilter, AllStationIterator> StationIterator;
126  typedef boost::filter_iterator<StationFilter, ConstAllStationIterator> ConstStationIterator;
127 
128  StationIterator StationsBegin()
132 
137 
139 
140 
142  typedef boost::filter_iterator<CandidateStationFilter, ConstAllStationIterator> ConstCandidateStationIterator;
143 
144  CandidateStationIterator CandidateStationsBegin()
148 
153 
155 
156 
158  typedef boost::filter_iterator<NoSignalStationFilter, ConstAllStationIterator> ConstNoSignalStationIterator;
159 
160  NoSignalStationIterator NoSignalStationsBegin()
164 
169 
171 
172 
174  typedef boost::filter_iterator<RejectedStationFilter, ConstAllStationIterator> ConstRejectedStationIterator;
175 
176  // DV: maybe in the future the rejectionMask should be replaced with an expression template
177  RejectedStationIterator RejectedStationsBegin(const int rejectionMask = ~0)
178  { return RejectedStationIterator(RejectedStationFilter(rejectionMask), AllStationsBegin(), AllStationsEnd()); }
179  RejectedStationIterator RejectedStationsEnd(const int rejectionMask = ~0)
181 
182  ConstRejectedStationIterator RejectedStationsBegin(const int rejectionMask = ~0) const
184  ConstRejectedStationIterator RejectedStationsEnd(const int rejectionMask = ~0) const
186 
188 
189 
190  Station& GetStation(const int stationId) { return OFFLINE_CAST_CONST_METHOD(GetStation(stationId)); }
191  const Station& GetStation(const int stationId) const;
192 
194  Station& GetStationByName(const std::string& name) { return OFFLINE_CAST_CONST_METHOD(GetStationByName(name)); }
195  const Station& GetStationByName(const std::string& name) const;
196 
198  void MakeStation(const int stationId);
199  void MakeStation(const std::string& stationName);
200 
202  bool HasStation(const int stationId) const;
203  bool HasStation(const std::string& name) const;
204 
206  int GetNumberOfStations() const { return fStations.size(); }
207 
210  { return std::distance(SignalStationsBegin(), SignalStationsEnd()); }
211 
213 
225 
226  // RD Event Central Trigger Information
227 
230  const EventTrigger& GetTrigger() const { return *fTrigger; }
231 
233  void MakeTrigger();
234 
236  bool HasTrigger() const { return bool(fTrigger); }
237 
239  Header& GetHeader() { return fHeader; }
240  const Header& GetHeader() const { return fHeader; }
241 
243  void SetRejected(const unsigned long long int reason) { fRejectionStatus |= reason; }
244  unsigned long long int GetRejectionStatus() const { return fRejectionStatus; }
246 
248 
260  template<class OrderingCriterion>
261  void SortStations(const OrderingCriterion ord)
262  { std::sort(fStations.begin(), fStations.end(), ord); }
263 
265  const std::string& GetAERARootIoSourceFileName() const { return fAERARootIoSourceFileName; }
266  void SetAERARootIoSourceFileName(const std::string& parFileName) { fAERARootIoSourceFileName = parFileName; }
267 
269  double GetAERARootIoEventId() const { return fAERARootIoEventId; }
270  void SetAERARootIoEventId(const double parEventId) { fAERARootIoEventId = parEventId; }
271 
274  void SetChannelResponseApplied(const bool parFlag) { fChannelResponseApplied = parFlag; }
275 
276  private:
277  REvent() = default;
278  ~REvent();
279 
283 
284  // metadata for events read in from AERARootIo files to enable event extraction.
285  // this is a quick'n'dirty solution, should rather use static member in RadioFileAERARoot
287  double fAERARootIoEventId = -1;
288 
289  // flag for RdChannelResponseIncorporator to keep track if it has already been called
291 
292  unsigned long long int fRejectionStatus = 0;
293 
294  friend class evt::Event;
295  friend class utl::LameShadowPtr<REvent>;
296 
297  };
298 
299 }
300 
301 
302 #endif
InternalStationCollection::iterator InternalStationIterator
Definition: REvent.h:46
Interface class to access the Event Trigger (T3)
bool HasTrigger() const
check whether the central trigger object exists
Definition: REvent.h:236
AllStationIterator RemoveStation(const AllStationIterator it)
remove a station from the list
Definition: REvent.cc:163
bool fChannelResponseApplied
Definition: REvent.h:290
REvent()=default
boost::filter_iterator< CandidateStationFilter, AllStationIterator > CandidateStationIterator
Iterator over all CandidateStations (i.e., HasSignal, HasNoSignal)
Definition: REvent.h:141
#define OFFLINE_MAKE_BOTH_ITERATOR_RANGES(_Iterator_, _ConstIterator_, _NamePrefix_)
Definition: IteratorRange.h:43
ConstAllStationIterator AllStationsBegin() const
Definition: REvent.h:101
Station & GetStationByName(const std::string &name)
retrieve station by name, throw utl::NonExistentComponentException if n.a.
Definition: REvent.h:194
CandidateStationIterator CandidateStationsEnd()
Definition: REvent.h:146
Interface class to access to the Radio part of an event.
Definition: REvent.h:42
utl::LameShadowPtr< EventTrigger > fTrigger
Definition: REvent.h:281
void SetChannelResponseApplied(const bool parFlag)
Definition: REvent.h:274
RejectedStationIterator RejectedStationsBegin(const int rejectionMask=~0)
Definition: REvent.h:177
Header fHeader
Definition: REvent.h:282
EventTrigger & GetTrigger()
Get the object with central trigger data, throw if n.a.
Definition: REvent.h:229
AllStationIterator AllStationsEnd()
Definition: REvent.h:98
double fAERARootIoEventId
Definition: REvent.h:287
StationIterator StationsEnd()
Definition: REvent.h:130
StationIterator StationsBegin()
Definition: REvent.h:128
void SetAERARootIoEventId(const double parEventId)
Definition: REvent.h:270
boost::transform_iterator< InternalStationFunctor, InternalStationIterator, revt::Station & > AllStationIterator
Definition: REvent.h:94
boost::filter_iterator< StationFilter, AllStationIterator > StationIterator
Iterator over all (non-exculded) stations.
Definition: REvent.h:125
boost::filter_iterator< RejectedStationFilter, AllStationIterator > RejectedStationIterator
Iterator over rejected stations that match some rejection mask.
Definition: REvent.h:173
Station & GetStation(const int stationId)
retrieve station by id throw utl::NonExistentComponentException if n.a.
Definition: REvent.h:190
AllStationIterator AllStationsBegin()
Definition: REvent.h:96
double GetAERARootIoEventId() const
access to AERARootIO event id
Definition: REvent.h:269
void SetAERARootIoSourceFileName(const std::string &parFileName)
Definition: REvent.h:266
unsigned long long int GetRejectionStatus() const
Definition: REvent.h:244
ConstCandidateStationIterator CandidateStationsEnd() const
Definition: REvent.h:151
boost::filter_iterator< CandidateStationFilter, ConstAllStationIterator > ConstCandidateStationIterator
Definition: REvent.h:142
void ClearRejectionStatus()
Definition: REvent.h:245
ConstSignalStationIterator SignalStationsBegin() const
Definition: REvent.h:117
boost::filter_iterator< RejectedStationFilter, ConstAllStationIterator > ConstRejectedStationIterator
Definition: REvent.h:174
std::string fAERARootIoSourceFileName
Definition: REvent.h:286
class to hold data at the radio Station level.
void SetRejected(const unsigned long long int reason)
Definition: REvent.h:243
const Header & GetHeader() const
Definition: REvent.h:240
const std::string & GetAERARootIoSourceFileName() const
access to AERARootIO source file name
Definition: REvent.h:265
void MakeTrigger()
Create the central trigger object.
Definition: REvent.cc:174
ConstRejectedStationIterator RejectedStationsEnd(const int rejectionMask=~0) const
Definition: REvent.h:184
#define OFFLINE_CAST_CONST_METHOD(_Method_)
Definition: ClassHelpers.h:51
Header & GetHeader()
access to REvent Header
Definition: REvent.h:239
int GetNumberOfStations() const
Get total number of stations in the event.
Definition: REvent.h:206
std::map< int, Station * > InternalStationCollection
Definition: REvent.h:45
CandidateStationIterator CandidateStationsBegin()
Definition: REvent.h:144
bool GetChannelResponseApplied() const
access to fChannelResponseApplied flag
Definition: REvent.h:273
REvent(const REvent &re)
Definition: REvent.h:85
NoSignalStationIterator NoSignalStationsBegin()
Definition: REvent.h:160
void SortStations(const OrderingCriterion ord)
Sort the list of stations by the criterion specified in an OrderingCriterion object.
Definition: REvent.h:261
InternalStationCollection fStations
Definition: REvent.h:280
REvent & operator=(const REvent &rEvent)
Definition: REvent.cc:36
ConstNoSignalStationIterator NoSignalStationsEnd() const
Definition: REvent.h:167
boost::filter_iterator< StationFilter, ConstAllStationIterator > ConstStationIterator
Definition: REvent.h:126
int GetNumberOfSignalStations() const
Get number of signal stations in the event.
Definition: REvent.h:209
NoSignalStationIterator NoSignalStationsEnd()
Definition: REvent.h:162
RejectionStatus
Definition: REvent.h:61
boost::transform_iterator< InternalStationFunctor, InternalConstStationIterator, const revt::Station & > ConstAllStationIterator
Iterator over all Stations (Including excluded stations)
Definition: REvent.h:91
ConstStationIterator StationsBegin() const
Definition: REvent.h:133
ConstNoSignalStationIterator NoSignalStationsBegin() const
Definition: REvent.h:165
const EventTrigger & GetTrigger() const
Definition: REvent.h:230
boost::filter_iterator< NoSignalStationFilter, AllStationIterator > NoSignalStationIterator
Iterator over NoSignalStations (previous: silent stations)
Definition: REvent.h:157
ConstCandidateStationIterator CandidateStationsBegin() const
Definition: REvent.h:149
Header file holding the RD Event Trigger class definition (based on SD)
Definition: REvent/Header.h:14
ConstSignalStationIterator SignalStationsEnd() const
Definition: REvent.h:119
bool IsRejected()
Definition: REvent.h:242
revt::Station & operator()(const InternalStationCollection::value_type &pair) const
Definition: REvent.h:56
InternalStationCollection::const_iterator InternalConstStationIterator
Definition: REvent.h:47
ConstAllStationIterator AllStationsEnd() const
Definition: REvent.h:103
RejectedStationIterator RejectedStationsEnd(const int rejectionMask=~0)
Definition: REvent.h:179
unsigned long long int fRejectionStatus
Definition: REvent.h:292
bool HasStation(const int stationId) const
Check whether station exists.
Definition: REvent.cc:132
boost::filter_iterator< NoSignalStationFilter, ConstAllStationIterator > ConstNoSignalStationIterator
Definition: REvent.h:158
SignalStationIterator SignalStationsEnd()
Definition: REvent.h:114
void MakeStation(const int stationId)
make a station with specifying Id, throw if invalid stationId
Definition: REvent.cc:94
ConstStationIterator StationsEnd() const
Definition: REvent.h:135
boost::filter_iterator< SignalStationFilter, AllStationIterator > SignalStationIterator
Iterator over all signal stations.
Definition: REvent.h:109
ConstRejectedStationIterator RejectedStationsBegin(const int rejectionMask=~0) const
Definition: REvent.h:182
SignalStationIterator SignalStationsBegin()
Definition: REvent.h:112
boost::filter_iterator< SignalStationFilter, ConstAllStationIterator > ConstSignalStationIterator
Definition: REvent.h:110

, generated on Tue Sep 26 2023.