FEvent.h
Go to the documentation of this file.
1 #ifndef __fevt_FEvent_h__
2 #define __fevt_FEvent_h__
3 
4 #include <list>
5 #include <string>
6 #include <boost/iterator/indirect_iterator.hpp>
7 #include <boost/iterator/filter_iterator.hpp>
8 
9 #include <fevt/Header.h>
10 #include <fevt/FdComponentSelector.h>
11 
12 #include <utl/LameShadowPtr_fwd.h>
13 
14 
15 namespace evt {
16  class Event;
17 }
18 
19 
20 namespace fevt {
21 
22  class Eye;
23 
33  class FEvent {
34 
35  private:
36  typedef std::list<Eye*> InternalEyeContainer;
37  typedef InternalEyeContainer::iterator InternalEyeIterator;
38  typedef InternalEyeContainer::const_iterator InternalConstEyeIterator;
39 
41  typedef boost::indirect_iterator<InternalEyeIterator, Eye&> AllEyeIterator;
43  typedef boost::indirect_iterator<InternalConstEyeIterator, const Eye&> ConstAllEyeIterator;
44 
49 
50  public:
51  FEvent(const FEvent& fEvent);
52  FEvent& operator=(const FEvent& fEvent);
53 
55  typedef boost::filter_iterator<ComponentSelector, AllEyeIterator> EyeIterator;
56  typedef boost::filter_iterator<ComponentSelector, ConstAllEyeIterator> ConstEyeIterator;
57 
59  { return EyeIterator(ComponentSelector(status), AllEyesBegin(), AllEyesEnd()); }
61 
64  ConstEyeIterator EyesBegin() const;
65 
67  { return EyeIterator(ComponentSelector(status), AllEyesEnd(), AllEyesEnd()); }
69 
71  { return ConstEyeIterator(ComponentSelector(status), AllEyesEnd(), AllEyesEnd()); }
72  ConstEyeIterator EyesEnd() const;
73 
74  unsigned int GetNEyes() const { return fEyes.size(); }
75 
77  Eye& GetEye(const unsigned int eyeId, const ComponentSelector::Status status = ComponentSelector::eHasData);
78  const Eye& GetEye(const unsigned int eyeId, const ComponentSelector::Status status = ComponentSelector::eHasData) const;
79  void MakeEye(const unsigned int eyeId, const ComponentSelector::Status status = ComponentSelector::eHasData);
80  bool HasEye(const unsigned int eyeId, const ComponentSelector::Status status = ComponentSelector::eHasData) const;
81 
87  Eye& GetEye(const std::string& eyeName, const ComponentSelector::Status status = ComponentSelector::eHasData);
88  const Eye& GetEye(const std::string& eyeName, const ComponentSelector::Status status = ComponentSelector::eHasData) const;
89  void MakeEye(const std::string& eyeName, const ComponentSelector::Status status = ComponentSelector::eHasData);
90  bool HasEye(const std::string& eyeName, const ComponentSelector::Status status = ComponentSelector::eHasData) const;
91 
92  Header& GetHeader() { return fHeader; } //< FD EventHeader
93  const Header& GetHeader() const { return fHeader; } //< FD EventHeader
94  void SetHeader(const Header& header) { fHeader = header; }
95 
96  private:
97  FEvent() { }
98  ~FEvent();
99 
100  private:
101  unsigned int GetIdFromName(const std::string& eyeName) const;
102 
105 
106  friend class evt::Event;
107  friend class utl::LameShadowPtr<FEvent>;
108 
109  };
110 
111 }
112 
113 
114 #endif
115 
116 // Configure (x)emacs for this file ...
117 // Local Variables:
118 // mode: c++
119 // compile-command: "make -C .. FEvent/FEvent.o -k"
120 // End:
Predicate specifying whether telescope is selected or not.
ConstEyeIterator EyesEnd(const ComponentSelector::Status status) const
&lt; end of available eyes of given status
Definition: FEvent.h:70
Header & GetHeader()
Definition: FEvent.h:92
InternalEyeContainer::const_iterator InternalConstEyeIterator
Definition: FEvent.h:38
Fluorescence Detector Eye Event.
Definition: FEvent/Eye.h:29
unsigned int GetIdFromName(const std::string &eyeName) const
Definition: FEvent.cc:231
boost::filter_iterator< ComponentSelector, ConstAllEyeIterator > ConstEyeIterator
Definition: FEvent.h:56
unsigned int GetNEyes() const
Definition: FEvent.h:74
ConstAllEyeIterator AllEyesEnd() const
Definition: FEvent.h:48
FEvent & operator=(const FEvent &fEvent)
Definition: FEvent.cc:36
InternalEyeContainer fEyes
Definition: FEvent.h:103
EyeIterator EyesEnd(const ComponentSelector::Status status)
Definition: FEvent.h:66
AllEyeIterator AllEyesBegin()
Definition: FEvent.h:45
void MakeEye(const unsigned int eyeId, const ComponentSelector::Status status=ComponentSelector::eHasData)
Definition: FEvent.cc:115
boost::filter_iterator< ComponentSelector, AllEyeIterator > EyeIterator
selective Eye iterators
Definition: FEvent.h:55
ConstEyeIterator EyesBegin(const ComponentSelector::Status status) const
&lt; first available eye of given status
Definition: FEvent.h:62
fevt::Header fHeader
Definition: FEvent.h:104
boost::indirect_iterator< InternalEyeIterator, Eye & > AllEyeIterator
An iterator over all eyes for read and write.
Definition: FEvent.h:41
AllEyeIterator AllEyesEnd()
Definition: FEvent.h:46
EyeIterator EyesBegin(const ComponentSelector::Status status)
Definition: FEvent.h:58
EyeIterator EyesBegin()
iterator pointing to first available eye with status eHasData (DEPRECATED!)
Definition: FEvent.cc:253
void SetHeader(const Header &header)
Definition: FEvent.h:94
Top of Fluorescence Detector event hierarchy.
Definition: FEvent.h:33
Status
Possible component status.
Eye & GetEye(const unsigned int eyeId, const ComponentSelector::Status status=ComponentSelector::eHasData)
return Eye by id
Definition: FEvent.cc:70
EyeIterator EyesEnd()
iterator pointing to end of available eyes with status eHasData (DEPRECATED!)
Definition: FEvent.cc:276
bool HasEye(const unsigned int eyeId, const ComponentSelector::Status status=ComponentSelector::eHasData) const
Definition: FEvent.cc:57
InternalEyeContainer::iterator InternalEyeIterator
Definition: FEvent.h:37
ConstAllEyeIterator AllEyesBegin() const
Definition: FEvent.h:47
Header for an fevt::FEvent.
Definition: FEvent/Header.h:16
std::list< Eye * > InternalEyeContainer
Definition: FEvent.h:36
boost::indirect_iterator< InternalConstEyeIterator, const Eye & > ConstAllEyeIterator
An iterator over eyes for read only.
Definition: FEvent.h:43
const Header & GetHeader() const
Definition: FEvent.h:93

, generated on Tue Sep 26 2023.