Skip to content

Commit f8f9200

Browse files
pnwkwshahor02
authored andcommitted
Add limit for number of drawn primary vertices in ED
1 parent fa0e46b commit f8f9200

6 files changed

Lines changed: 24 additions & 15 deletions

File tree

EventVisualisation/Base/include/EventVisualisationBase/ConfigurationManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace o2
2424
namespace event_visualisation
2525
{
2626
/// Version of the software
27-
const static std::string o2_eve_version = "1.37";
27+
const static std::string o2_eve_version = "1.38";
2828

2929
/// Configuration Manager allows an easy access to the config file.
3030
///

EventVisualisation/DataConverter/include/EventVisualisationDataConverter/VisualisationEvent.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,12 +190,15 @@ class VisualisationEvent
190190
o2::header::DataHeader::TForbitType getFirstTForbit() const { return this->mFirstTForbit; }
191191
void setFirstTForbit(o2::header::DataHeader::TForbitType value) { this->mFirstTForbit = value; }
192192

193+
void setPrimaryVertex(std::size_t pv) { this->mPrimaryVertex = pv; }
194+
193195
private:
194196
int mClMask; /// clusters requested during aquisition
195197
int mTrkMask; /// tracks requested during aquisition
196198
o2::header::DataHeader::RunNumberType mRunNumber; /// run number
197199
o2::header::DataHeader::TFCounterType mTfCounter;
198200
o2::header::DataHeader::TForbitType mFirstTForbit;
201+
std::size_t mPrimaryVertex;
199202

200203
float mMinTimeOfTracks; /// minimum time of tracks in the event
201204
float mMaxTimeOfTracks; /// maximum time of tracks in the event

EventVisualisation/DataConverter/src/VisualisationEventJSONSerializer.cxx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ std::string VisualisationEventJSONSerializer::toJson(const VisualisationEvent& e
7171
tree.AddMember("trkMask", rapidjson::Value().SetInt(event.mTrkMask), allocator);
7272
tree.AddMember("tfCounter", rapidjson::Value().SetInt(event.mTfCounter), allocator);
7373
tree.AddMember("firstTForbit", rapidjson::Value().SetInt(event.mFirstTForbit), allocator);
74+
tree.AddMember("primaryVertex", rapidjson::Value().SetInt(event.mPrimaryVertex), allocator);
7475

7576
tree.AddMember("collisionTime", rapidjson::Value().SetString(event.mCollisionTime.c_str(), event.mCollisionTime.size()), allocator);
7677
tree.AddMember("workflowVersion", rapidjson::Value().SetString(event.mWorkflowVersion.c_str(), event.mWorkflowVersion.size()), allocator);
@@ -147,6 +148,7 @@ void VisualisationEventJSONSerializer::fromJson(VisualisationEvent& event, std::
147148
event.setTrkMask(getIntOrDefault(tree, "trkMask"));
148149
event.setTfCounter(getIntOrDefault(tree, "tfCounter"));
149150
event.setFirstTForbit(getIntOrDefault(tree, "firstTForbit"));
151+
event.setPrimaryVertex(getIntOrDefault(tree, "primaryVertex"));
150152

151153
auto collisionTime = "not specified";
152154
if (tree.HasMember("collisionTime")) {

EventVisualisation/Workflow/include/EveWorkflow/O2DPLDisplay.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ class O2DPLDisplaySpec : public o2::framework::Task
5555
std::chrono::milliseconds timeInterval, int numberOfFiles, int numberOfTracks,
5656
bool eveHostNameMatch, int minITSTracks, int minTracks, bool filterITSROF, bool filterTime,
5757
const EveWorkflowHelper::Bracket& timeBracket, bool removeTPCEta,
58-
const EveWorkflowHelper::Bracket& etaBracket, bool trackSorting, int onlyNthEvent, bool primaryVertex)
59-
: mUseMC(useMC), mTrkMask(trkMask), mClMask(clMask), mDataRequest(dataRequest), mJsonPath(jsonPath), mTimeInterval(timeInterval), mNumberOfFiles(numberOfFiles), mNumberOfTracks(numberOfTracks), mEveHostNameMatch(eveHostNameMatch), mMinITSTracks(minITSTracks), mMinTracks(minTracks), mFilterITSROF(filterITSROF), mFilterTime(filterTime), mTimeBracket(timeBracket), mRemoveTPCEta(removeTPCEta), mEtaBracket(etaBracket), mTrackSorting(trackSorting), mOnlyNthEvent(onlyNthEvent), mPrimaryVertexMode(primaryVertex)
58+
const EveWorkflowHelper::Bracket& etaBracket, bool trackSorting, int onlyNthEvent, bool primaryVertex, int maxPrimaryVertices)
59+
: mUseMC(useMC), mTrkMask(trkMask), mClMask(clMask), mDataRequest(dataRequest), mJsonPath(jsonPath), mTimeInterval(timeInterval), mNumberOfFiles(numberOfFiles), mNumberOfTracks(numberOfTracks), mEveHostNameMatch(eveHostNameMatch), mMinITSTracks(minITSTracks), mMinTracks(minTracks), mFilterITSROF(filterITSROF), mFilterTime(filterTime), mTimeBracket(timeBracket), mRemoveTPCEta(removeTPCEta), mEtaBracket(etaBracket), mTrackSorting(trackSorting), mOnlyNthEvent(onlyNthEvent), mPrimaryVertexMode(primaryVertex), mMaxPrimaryVertices(maxPrimaryVertices)
6060
{
6161
this->mTimeStamp = std::chrono::high_resolution_clock::now() - timeInterval; // first run meets condition
6262
}
@@ -85,6 +85,7 @@ class O2DPLDisplaySpec : public o2::framework::Task
8585
int mNumberOfTracks; // maximum number of track in single file (0 means no limit)
8686
bool mTrackSorting; // perform sorting tracks by track time before applying filters
8787
int mOnlyNthEvent; // process only every nth event.
88+
int mMaxPrimaryVertices; // max number of primary vertices to draw per time frame
8889
int mEventCounter = 0;
8990
std::chrono::time_point<std::chrono::high_resolution_clock> mTimeStamp;
9091

EventVisualisation/Workflow/src/EveWorkflowHelper.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ void EveWorkflowHelper::draw(std::size_t primaryVertexIdx, bool sortTracks)
245245
if (sortTracks) {
246246
std::sort(tracks.begin(), tracks.end(),
247247
[&](const GID& a, const GID& b) {
248-
return mGIDTrackTime.at(a) > mGIDTrackTime.at(b);
248+
return mGIDTrackTime.at(a) < mGIDTrackTime.at(b);
249249
});
250250
}
251251

@@ -411,7 +411,7 @@ void EveWorkflowHelper::addTrackToEvent(const o2::track::TrackPar& tr, GID gid,
411411

412412
const bool rangeNotFound = (it == propagationRanges.cend());
413413
if (rangeNotFound) {
414-
LOGF(error, "Track source %s has no defined propagation ranges");
414+
LOGF(error, "Track source %s has no defined propagation ranges", GID::getSourceName(source));
415415
return;
416416
}
417417

EventVisualisation/Workflow/src/O2DPLDisplay.cxx

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ void customize(std::vector<ConfigParamSpec>& workflowOptions)
7171
{"track-sorting", VariantType::Bool, true, {"sort track by track time before applying filters"}},
7272
{"only-nth-event", VariantType::Int, 0, {"process only every nth event"}},
7373
{"primary-vertex-mode", VariantType::Bool, false, {"produce jsons with individual primary vertices, not total time frame data"}},
74-
};
74+
{"max-primary-vertices", VariantType::Int, 5, {"maximum number of primary vertices to draw per time frame"}}};
7575
o2::raw::HBFUtilsInitializer::addConfigOption(options);
7676
std::swap(workflowOptions, options);
7777
}
@@ -126,9 +126,14 @@ void O2DPLDisplaySpec::run(ProcessingContext& pc)
126126
savedTracks[i] = 0;
127127
}
128128

129-
bool anythingSaved = false;
129+
std::size_t jsonsSaved = 0;
130+
131+
for (const auto& keyVal : helper.mPrimaryVertexGIDs) {
132+
if (jsonsSaved >= mMaxPrimaryVertices) {
133+
break;
134+
}
130135

131-
for (std::size_t pv = 0; pv < helper.mPrimaryVertexGIDs.size(); ++pv) {
136+
const auto pv = keyVal.first;
132137
helper.draw(pv, mTrackSorting);
133138

134139
bool save = true;
@@ -147,8 +152,9 @@ void O2DPLDisplaySpec::run(ProcessingContext& pc)
147152
helper.mEvent.setRunNumber(tinfo.runNumber);
148153
helper.mEvent.setTfCounter(tinfo.tfCounter);
149154
helper.mEvent.setFirstTForbit(tinfo.firstTForbit);
155+
helper.mEvent.setPrimaryVertex(pv);
150156
helper.save(this->mJsonPath, this->mNumberOfFiles, this->mTrkMask, this->mClMask, tinfo.runNumber, tinfo.creation);
151-
anythingSaved = true;
157+
jsonsSaved++;
152158
}
153159

154160
helper.clear();
@@ -161,11 +167,7 @@ void O2DPLDisplaySpec::run(ProcessingContext& pc)
161167
auto endTime = std::chrono::high_resolution_clock::now();
162168
LOGP(info, "Visualization of TF:{} at orbit {} took {} s.", tinfo.tfCounter, tinfo.firstTForbit, std::chrono::duration_cast<std::chrono::microseconds>(endTime - currentTime).count() * 1e-6);
163169

164-
if (mPrimaryVertexMode) {
165-
LOGP(info, "Primary vertices: {}", helper.mPrimaryVertexGIDs.size());
166-
}
167-
168-
LOGP(info, "JSON saved: {}", anythingSaved ? "YES" : "NO");
170+
LOGP(info, "JSONs saved: {}/{}", jsonsSaved, helper.mPrimaryVertexGIDs.size());
169171

170172
std::vector<std::string> sourceStats;
171173
sourceStats.reserve(GID::Source::NSources);
@@ -287,6 +289,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
287289
}
288290

289291
auto primaryVertexMode = cfgc.options().get<bool>("primary-vertex-mode");
292+
auto maxPrimaryVertices = cfgc.options().get<int>("max-primary-vertices");
290293

291294
if (primaryVertexMode) {
292295
dataRequest->requestPrimaryVertertices(useMC);
@@ -306,7 +309,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
306309
"o2-eve-export",
307310
dataRequest->inputs,
308311
{},
309-
AlgorithmSpec{adaptFromTask<O2DPLDisplaySpec>(useMC, srcTrk, srcCl, dataRequest, jsonFolder, timeInterval, numberOfFiles, numberOfTracks, eveHostNameMatch, minITSTracks, minTracks, filterITSROF, filterTime, timeBracket, removeTPCEta, etaBracket, tracksSorting, onlyNthEvent, primaryVertexMode)}});
312+
AlgorithmSpec{adaptFromTask<O2DPLDisplaySpec>(useMC, srcTrk, srcCl, dataRequest, jsonFolder, timeInterval, numberOfFiles, numberOfTracks, eveHostNameMatch, minITSTracks, minTracks, filterITSROF, filterTime, timeBracket, removeTPCEta, etaBracket, tracksSorting, onlyNthEvent, primaryVertexMode, maxPrimaryVertices)}});
310313

311314
// configure dpl timer to inject correct firstTForbit: start from the 1st orbit of TF containing 1st sampled orbit
312315
o2::raw::HBFUtilsInitializer hbfIni(cfgc, specs);

0 commit comments

Comments
 (0)