Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ class EveWorkflowHelper

using Bracket = o2::math_utils::Bracketf_t;

EveWorkflowHelper(const FilterSet& enabledFilters = {}, std::size_t maxNTracks = -1, const Bracket& timeBracket = {}, const Bracket& etaBracket = {}, bool primaryVertexMode = false);
EveWorkflowHelper(const FilterSet& enabledFilters = {}, std::size_t maxNTracks = -1, const Bracket& timeBracket = {}, const Bracket& etaBracket = {}, bool primaryVertexMode = false, float mftPropagationZMin = -39.f, float mftPropagationZMax = -86.f);
static std::vector<PNT> getTrackPoints(const o2::track::TrackPar& trc, float minR, float maxR, float maxStep, float minZ = -25000, float maxZ = 25000);
void selectTracks(const CalibObjectsConst* calib, GID::mask_t maskCl, GID::mask_t maskTrk, GID::mask_t maskMatch);
void selectTowers();
Expand Down Expand Up @@ -202,6 +202,8 @@ class EveWorkflowHelper
Bracket mTimeBracket;
Bracket mEtaBracket;
bool mPrimaryVertexMode;
float mMFTPropagationZMin;
float mMFTPropagationZMax;
const o2::globaltracking::RecoContainer* mRecoCont = nullptr;
const o2::globaltracking::RecoContainer* getRecoContainer() const { return mRecoCont; }
void setRecoContainer(const o2::globaltracking::RecoContainer* rc) { mRecoCont = rc; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ class O2DPLDisplaySpec : public o2::framework::Task
std::chrono::milliseconds timeInterval, int numberOfFiles, int numberOfTracks,
bool eveHostNameMatch, int minITSTracks, int minTracks, bool filterITSROF, bool filterTime,
const EveWorkflowHelper::Bracket& timeBracket, bool removeTPCEta,
const EveWorkflowHelper::Bracket& etaBracket, bool trackSorting, int onlyNthEvent, bool primaryVertex, int maxPrimaryVertices, bool primaryVertexTriggers)
: mUseMC(useMC), mTrkMask(trkMask), mClMask(clMask), mDataRequest(dataRequest), mGGCCDBRequest(gr), mJsonPath(jsonPath), mExt(ext), 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), mPrimaryVertexTriggers(primaryVertexTriggers)
const EveWorkflowHelper::Bracket& etaBracket, bool trackSorting, int onlyNthEvent, bool primaryVertex, int maxPrimaryVertices, bool primaryVertexTriggers, float mftPropagationZMin, float mftPropagationZMax)
: mUseMC(useMC), mTrkMask(trkMask), mClMask(clMask), mDataRequest(dataRequest), mGGCCDBRequest(gr), mJsonPath(jsonPath), mExt(ext), 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), mPrimaryVertexTriggers(primaryVertexTriggers), mMFTPropagationZMin(mftPropagationZMin), mMFTPropagationZMax(mftPropagationZMax)

{
this->mTimeStamp = std::chrono::high_resolution_clock::now() - timeInterval; // first run meets condition
Expand Down Expand Up @@ -92,6 +92,8 @@ class O2DPLDisplaySpec : public o2::framework::Task
int mOnlyNthEvent; // process only every nth event.
int mMaxPrimaryVertices; // max number of primary vertices to draw per time frame
bool mPrimaryVertexTriggers; // instead of drawing vertices with tracks (and maybe calorimeter triggers), draw vertices with calorimeter triggers (and maybe tracks)
float mMFTPropagationZMin; // Minimum z position for propagating MFT tracks
float mMFTPropagationZMax; // Maximum z position for propagating MFT tracks
int mEventCounter = 0;
std::chrono::time_point<std::chrono::high_resolution_clock> mTimeStamp;

Expand Down
10 changes: 8 additions & 2 deletions EventVisualisation/Workflow/src/EveWorkflowHelper.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -781,7 +781,7 @@ void EveWorkflowHelper::drawAODFwd(AODForwardTrack const& track, float trackTime

void EveWorkflowHelper::drawMFTTrack(o2::track::TrackParFwd tr, float trackTime)
{
tr.propagateParamToZlinear(mftZPositions.front()); // Fix the track starting position.
tr.propagateParamToZlinear(mMFTPropagationZMin); // Fix the track starting position.

auto vTrack = mEvent.addTrack({.time = static_cast<float>(trackTime),
.charge = (int)tr.getCharge(),
Expand All @@ -793,10 +793,16 @@ void EveWorkflowHelper::drawMFTTrack(o2::track::TrackParFwd tr, float trackTime)
.gid = GID::getSourceName(GID::MFT),
.source = GID::MFT});

tr.propagateParamToZlinear(mMFTPropagationZMin);
vTrack->addPolyPoint((float)tr.getX(), (float)tr.getY(), (float)tr.getZ());

for (auto zPos : mftZPositions) {
tr.propagateParamToZlinear(zPos);
vTrack->addPolyPoint((float)tr.getX(), (float)tr.getY(), (float)tr.getZ());
}

tr.propagateParamToZlinear(mMFTPropagationZMax);
vTrack->addPolyPoint((float)tr.getX(), (float)tr.getY(), (float)tr.getZ());
}

void EveWorkflowHelper::drawForwardTrack(mch::TrackParam track, const std::string& gidString, GID::Source source, float startZ, float endZ, float trackTime)
Expand Down Expand Up @@ -1029,7 +1035,7 @@ void EveWorkflowHelper::drawTRDClusters(const o2::trd::TrackTRD& tpcTrdTrack, fl
}
}

EveWorkflowHelper::EveWorkflowHelper(const FilterSet& enabledFilters, std::size_t maxNTracks, const Bracket& timeBracket, const Bracket& etaBracket, bool primaryVertexMode) : mEnabledFilters(enabledFilters), mMaxNTracks(maxNTracks), mTimeBracket(timeBracket), mEtaBracket(etaBracket), mPrimaryVertexMode(primaryVertexMode)
EveWorkflowHelper::EveWorkflowHelper(const FilterSet& enabledFilters, std::size_t maxNTracks, const Bracket& timeBracket, const Bracket& etaBracket, bool primaryVertexMode, float mftPropagationZMin, float mftPropagationZMax) : mEnabledFilters(enabledFilters), mMaxNTracks(maxNTracks), mTimeBracket(timeBracket), mEtaBracket(etaBracket), mPrimaryVertexMode(primaryVertexMode), mMFTPropagationZMin(mftPropagationZMin), mMFTPropagationZMax(mftPropagationZMax)
{
o2::mch::TrackExtrap::setField();
this->mMFTGeom = o2::mft::GeometryTGeo::Instance();
Expand Down
11 changes: 7 additions & 4 deletions EventVisualisation/Workflow/src/O2DPLDisplay.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,9 @@ void customize(std::vector<ConfigParamSpec>& workflowOptions)
{"only-nth-event", VariantType::Int, 0, {"process only every nth event"}},
{"primary-vertex-mode", VariantType::Bool, false, {"produce jsons with individual primary vertices, not total time frame data"}},
{"max-primary-vertices", VariantType::Int, 5, {"maximum number of primary vertices to draw per time frame"}},
{"primary-vertex-triggers", VariantType::Bool, false, {"instead of drawing vertices with tracks (and maybe calorimeter triggers), draw vertices with calorimeter triggers (and maybe tracks)"}}};
{"primary-vertex-triggers", VariantType::Bool, false, {"instead of drawing vertices with tracks (and maybe calorimeter triggers), draw vertices with calorimeter triggers (and maybe tracks)"}},
{"mft-propagation-z-min", VariantType::Float, -39.f, {"Set minimum z position for propagating MFT tracks"}},
{"mft-propagation-z-max", VariantType::Float, -86.f, {"Set maximum z position for propagating MFT tracks"}}};
o2::raw::HBFUtilsInitializer::addConfigOption(options);
std::swap(workflowOptions, options);
}
Expand Down Expand Up @@ -112,8 +114,7 @@ void O2DPLDisplaySpec::run(ProcessingContext& pc)
enabledFilters.set(EveWorkflowHelper::Filter::TimeBracket, this->mFilterTime);
enabledFilters.set(EveWorkflowHelper::Filter::EtaBracket, this->mRemoveTPCEta);
enabledFilters.set(EveWorkflowHelper::Filter::TotalNTracks, this->mNumberOfTracks != -1);

EveWorkflowHelper helper(enabledFilters, this->mNumberOfTracks, this->mTimeBracket, this->mEtaBracket, this->mPrimaryVertexMode);
EveWorkflowHelper helper(enabledFilters, this->mNumberOfTracks, this->mTimeBracket, this->mEtaBracket, this->mPrimaryVertexMode, this->mMFTPropagationZMin, this->mMFTPropagationZMax);
helper.setRecoContainer(&recoCont);

helper.setITSROFs();
Expand Down Expand Up @@ -337,6 +338,8 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
auto onlyNthEvent = cfgc.options().get<int>("only-nth-event");
auto tracksSorting = cfgc.options().get<bool>("track-sorting");
auto primaryVertexTriggers = cfgc.options().get<bool>("primary-vertex-triggers");
auto mftPropagationZMin = cfgc.options().get<float>("mft-propagation-z-min");
auto mftPropagationZMax = cfgc.options().get<float>("mft-propagation-z-max");

if (numberOfTracks == -1) {
tracksSorting = false; // do not sort if all tracks are allowed
Expand All @@ -354,7 +357,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
"o2-eve-export",
dataRequest->inputs,
{},
AlgorithmSpec{adaptFromTask<O2DPLDisplaySpec>(useMC, srcTrk, srcCl, dataRequest, ggRequest, jsonFolder, ext, timeInterval, numberOfFiles, numberOfTracks, eveHostNameMatch, minITSTracks, minTracks, filterITSROF, filterTime, timeBracket, removeTPCEta, etaBracket, tracksSorting, onlyNthEvent, primaryVertexMode, maxPrimaryVertices, primaryVertexTriggers)}});
AlgorithmSpec{adaptFromTask<O2DPLDisplaySpec>(useMC, srcTrk, srcCl, dataRequest, ggRequest, jsonFolder, ext, timeInterval, numberOfFiles, numberOfTracks, eveHostNameMatch, minITSTracks, minTracks, filterITSROF, filterTime, timeBracket, removeTPCEta, etaBracket, tracksSorting, onlyNthEvent, primaryVertexMode, maxPrimaryVertices, primaryVertexTriggers, mftPropagationZMin, mftPropagationZMax)}});

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