Project
Loading...
Searching...
No Matches
VisualisationEvent.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
18
19#ifndef ALICE_O2_EVENTVISUALISATION_BASE_VISUALISATIONEVENT_H
20#define ALICE_O2_EVENTVISUALISATION_BASE_VISUALISATIONEVENT_H
21
28#include <forward_list>
29#include <ctime>
30#include <gsl/span>
31
32namespace o2
33{
34namespace event_visualisation
35{
36
43
45{
49
50 public:
56 VisualisationEvent(const VisualisationEvent& source, EVisualisationGroup filter, float minTime, float maxTime);
57
70 // Default constructor
72
73 void appendAnotherEventCalo(const VisualisationEvent& another);
74
76 {
77 mTracks.emplace_back(vo);
78 return &mTracks.back();
79 }
80
82 {
83 // float pos[] = {X, Y, Z};
84 return mTracks.back().addCluster(xyz);
85 }
86
88 {
89 mClusters.emplace_back(xyz, time, gid);
90 }
91
92 void addGlobalCluster(const TVector3& xyz, o2::dataformats::GlobalTrackID gid, float time)
93 {
94 auto result = mClusters.emplace_back(xyz);
95 result.mBGID = gid;
96 result.mTime = time;
97 }
98
100 {
101 mCalo.emplace_back(vo);
102 return &mCalo.back();
103 }
104
105 // Multiplicity getter
106 int GetMultiplicity() const
107 {
108 return mMultiplicity;
109 }
110
111 // Returns track with index i
112 [[nodiscard]] const VisualisationTrack& getTrack(int i) const
113 {
114 return mTracks[i];
115 };
116
117 // Returns number of tracks
118 size_t getTrackCount() const
119 {
120 return mTracks.size();
121 }
122
123 gsl::span<const VisualisationCluster> getClustersSpan() const
124 {
125 return mClusters;
126 }
127
128 gsl::span<const VisualisationTrack> getTracksSpan() const
129 {
130 return mTracks;
131 }
132
133 gsl::span<const VisualisationCalo> getCalorimetersSpan() const
134 {
135 return mCalo;
136 }
137
138 size_t getCaloCount() const
139 {
140 return mCalo.size();
141 }
142
143 // Returns number of tracks with detector contribution (including standalone)
148
149 // Returns number of tracks with any detector contribution (including standalone) from the list
151 {
152 return std::count_if(mTracks.begin(), mTracks.end(), [&](const auto& t) {
153 return (o2::dataformats::GlobalTrackID::getSourceDetectorsMask(t.getSource()) & mdet).any();
154 });
155 }
156
157 // Returns number of tracks from a given source
159 {
160 return std::count_if(mTracks.begin(), mTracks.end(), [&](const auto& t) {
161 return t.getSource() == src;
162 });
163 }
164
165 // Clears event from stored data (tracks, collisions)
166 void clear()
167 {
168 mTracks.clear();
169 mClusters.clear();
170 mCalo.clear();
171 }
172
173 void afterLoading(); // compute internal fields which are not persisted
174
175 const VisualisationCluster& getCluster(int i) const { return mClusters[i]; };
176 size_t getClusterCount() const { return mClusters.size(); } // Returns number of clusters
177 // void setWorkflowParameters(const std::string& workflowParameters) { this->mWorkflowParameters = workflowParameters; }
178
179 // std::string getCollisionTime() const { return DateTime(this->mCreationTime); }
180 // void setCollisionTime(std::string collisionTime) { this->mCreationTime = this->parseDateTime(collisionTime.c_str()); }
181
183 void setCreationTime(o2::framework::DataProcessingHeader::CreationTime creationTime) { this->mCreationTime = creationTime; }
184
185 void setEveVersion(int eveVersion) { this->mEveVersion = eveVersion; }
186
187 float getMinTimeOfTracks() const { return this->mMinTimeOfTracks; }
188 float getMaxTimeOfTracks() const { return this->mMaxTimeOfTracks; }
189
190 bool isEmpty() const { return getTrackCount() == 0 && getClusterCount() == 0; }
191
192 int getClMask() const { return mClMask; }
193 void setClMask(int value) { mClMask = value; }
194
195 int getTrkMask() const { return mTrkMask; }
196 void setTrkMask(int value) { mTrkMask = value; }
197
198 o2::header::DataHeader::RunNumberType getRunNumber() const { return this->mRunNumber; }
200
201 o2::parameters::GRPECS::RunType getRunType() const { return this->mRunType; }
203
204 o2::header::DataHeader::TFCounterType getTfCounter() const { return this->mTfCounter; }
206
207 [[nodiscard]] o2::header::DataHeader::TForbitType getFirstTForbit() const { return this->mFirstTForbit; }
209
210 std::size_t getPrimaryVertex() const { return this->mPrimaryVertex; }
211 void setPrimaryVertex(std::size_t pv) { this->mPrimaryVertex = pv; }
212
213 VisualisationEvent limit(std::size_t maximum_number_of_items);
214
215 private:
217 int mClMask;
218 int mTrkMask;
223 std::size_t mPrimaryVertex;
224
225 float mMinTimeOfTracks;
226 float mMaxTimeOfTracks;
227 int mEveVersion;
228 // std::string mWorkflowParameters; /// workflow parameters used to generate this Event
229 int mEventNumber;
230 double mEnergy;
231 int mMultiplicity;
232 std::string mCollidingSystem;
233 // std::string mCollisionTime; /// collision timestamp
234 std::vector<VisualisationTrack> mTracks;
235 std::vector<VisualisationCluster> mClusters;
236 std::vector<VisualisationCalo> mCalo;
237};
238
239} // namespace event_visualisation
240} // namespace o2
241
242#endif // ALICE_O2_EVENTVISUALISATION_BASE_VISUALISATIONEVENT_H
int16_t time
Definition RawEventData.h:4
int32_t i
static mask_t getMask(const std::string_view detList)
detector masks from any non-alpha-num delimiter-separated list (empty if NONE is supplied)
Definition DetID.cxx:42
gsl::span< const VisualisationTrack > getTracksSpan() const
size_t getDetectorTrackCount(o2::detectors::DetID::ID id) const
void setFirstTForbit(o2::header::DataHeader::TForbitType value)
void addGlobalCluster(float *xyz, float time, o2::dataformats::GlobalTrackID gid)
o2::header::DataHeader::TForbitType getFirstTForbit() const
gsl::span< const VisualisationCalo > getCalorimetersSpan() const
gsl::span< const VisualisationCluster > getClustersSpan() const
void setRunNumber(o2::header::DataHeader::RunNumberType runNumber)
VisualisationEvent limit(std::size_t maximum_number_of_items)
o2::parameters::GRPECS::RunType getRunType() const
VisualisationCluster & addCluster(const float *xyz)
void appendAnotherEventCalo(const VisualisationEvent &another)
void setCreationTime(o2::framework::DataProcessingHeader::CreationTime creationTime)
VisualisationTrack * addTrack(VisualisationTrack::VisualisationTrackVO vo)
const VisualisationCluster & getCluster(int i) const
VisualisationCalo * addCalo(VisualisationCalo::VisualisationCaloVO vo)
void setRunType(o2::parameters::GRPECS::RunType runType)
void setTfCounter(o2::header::DataHeader::TFCounterType value)
o2::header::DataHeader::RunNumberType getRunNumber() const
bool isEmpty() const
maximum time of tracks in the event
void addGlobalCluster(const TVector3 &xyz, o2::dataformats::GlobalTrackID gid, float time)
o2::header::DataHeader::TFCounterType getTfCounter() const
const VisualisationTrack & getTrack(int i) const
size_t getDetectorsTrackCount(o2::detectors::DetID::mask_t mdet) const
size_t getSourceTrackCount(o2::dataformats::GlobalTrackID::Source src) const
o2::framework::DataProcessingHeader::CreationTime getCreationTime() const
GLenum src
Definition glcorearb.h:1767
GLuint64EXT * result
Definition glcorearb.h:5662
GLsizei GLsizei GLchar * source
Definition glcorearb.h:798
GLsizei const GLfloat * value
Definition glcorearb.h:819
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition glcorearb.h:1308
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
constructor parametrisation (Value Object) for VisualisationCalo class
bool contains[o2::dataformats::GlobalTrackID::NSources][o2::event_visualisation::EVisualisationGroup::NvisualisationGroups]