Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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 @@ -104,12 +104,13 @@ struct VertexingParameters {
float vertRadiusSigma = -1.f;
float trackletSigma = -1.f;
float maxZPositionAllowed = -1.f;
int clusterContributorsCut = -1.f;
int seedMemberRadiusTime = -1.f;
int seedMemberRadiusZ = -1.f;
int maxTrackletsPerCluster = -1.f;
int phiSpan = -1.f;
int zSpan = -1.f;
int clusterContributorsCut = -1;
int suppressLowMultDebris = -1;
int seedMemberRadiusTime = -1;
int seedMemberRadiusZ = -1;
int maxTrackletsPerCluster = -1;
int phiSpan = -1;
int zSpan = -1;
bool SaveTimeBenchmarks = false;

bool useTruthSeeding = false; // overwrite found vertices with MC events
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ struct Settings {
float maxZ = 0.f;
int seedMemberRadiusTime = 1;
int seedMemberRadiusZ = 2;
int clusterContributorsCut = 3;
std::shared_ptr<BoundedMemoryResource> memoryPool;
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,11 @@ struct VertexerParamConfig : public o2::conf::ConfigurableParamHelper<VertexerPa
float vertNsigmaCut = 5.8762583f; // N sigma cut for vertex XY
float vertRadiusSigma = 0.0343575f; // sigma of vertex XY
float trackletSigma = 0.0143798f; // tracklet to vertex sigma
float maxZPositionAllowed = 25.f; // 4x sZ of the beam
float maxZPositionAllowed = 25.f; // 4x sZ of the beam

// Artefacts selections
int clusterContributorsCut = 3; // minimum number of contributors for an accepted final vertex
int suppressLowMultDebris = 16; // suppress all vertices below this threshold if a vertex was already found in a rof
int seedMemberRadiusTime = 0;
int seedMemberRadiusZ = 2;
int maxTrackletsPerCluster = 100;
Expand Down
5 changes: 3 additions & 2 deletions Detectors/ITSMFT/ITS/tracking/src/Configuration.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ std::string TrackingParameters::asString() const

std::string VertexingParameters::asString() const
{
std::string str = std::format("NZb:{} NPhB:{} MinVtxCont:{} MaxTrkltCls:{} ZCut:{} PhCut:{} PairCut:{} ClCut:{} SeedRad:{}x{}",
ZBins, PhiBins, clusterContributorsCut, maxTrackletsPerCluster, zCut, phiCut, pairCut, clusterCut, seedMemberRadiusTime, seedMemberRadiusZ);
std::string str = std::format("NZb:{} NPhB:{} MinVtxCont:{} SupLowMultDebris:{} MaxTrkltCls:{} ZCut:{} PhCut:{} PairCut:{} ClCut:{} SeedRad:{}x{}",
ZBins, PhiBins, clusterContributorsCut, suppressLowMultDebris, maxTrackletsPerCluster, zCut, phiCut, pairCut, clusterCut, seedMemberRadiusTime, seedMemberRadiusZ);
if (std::numeric_limits<size_t>::max() != MaxMemory) {
str += std::format(" MemLimit {:.2f} GB", double(MaxMemory) / constants::GB);
}
Expand Down Expand Up @@ -263,6 +263,7 @@ std::vector<VertexingParameters> TrackingMode::getVertexingParameters(TrackingMo
p.trackletSigma = vc.trackletSigma;
p.maxZPositionAllowed = vc.maxZPositionAllowed;
p.clusterContributorsCut = vc.clusterContributorsCut;
p.suppressLowMultDebris = vc.suppressLowMultDebris;
p.seedMemberRadiusTime = vc.seedMemberRadiusTime;
p.seedMemberRadiusZ = vc.seedMemberRadiusZ;
p.phiSpan = vc.phiSpan;
Expand Down
29 changes: 19 additions & 10 deletions Detectors/ITSMFT/ITS/tracking/src/VertexerTraits.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,6 @@ void VertexerTraits<NLayers>::computeVertices(const int iteration)
settings.maxZ = mVrtParams[iteration].maxZPositionAllowed;
settings.seedMemberRadiusTime = mVrtParams[iteration].seedMemberRadiusTime;
settings.seedMemberRadiusZ = mVrtParams[iteration].seedMemberRadiusZ;
settings.clusterContributorsCut = mVrtParams[iteration].clusterContributorsCut;
settings.memoryPool = mMemoryPool;

const auto processROF = [&](const int rofId) {
Expand Down Expand Up @@ -500,28 +499,38 @@ void VertexerTraits<NLayers>::computeVertices(const int iteration)
selectedIndices.push_back(clusterId);
}

for (const auto clusterId : selectedIndices) {
const auto beamDistance2 = clusterBeamDistance2(clusters[clusterId]);
// sort vertices by their multiplicity to opt. suppress lower mult. debris
std::vector<int> sortedIndices(selectedIndices.size());
std::iota(sortedIndices.begin(), sortedIndices.end(), 0);
std::sort(sortedIndices.begin(), sortedIndices.end(), [&selectedIndices, &clusters](int i, int j) {
return clusters[selectedIndices[i]].getSize() > clusters[selectedIndices[j]].getSize();
});
for (const auto sortedId : sortedIndices) {
const auto& cluster = clusters[selectedIndices[sortedId]];
const auto beamDistance2 = clusterBeamDistance2(cluster);
if (!(beamDistance2 < nsigmaCut)) {
continue;
}
if (clusters[clusterId].getSize() < settings.clusterContributorsCut) {
if (cluster.getSize() < mVrtParams[iteration].clusterContributorsCut) {
continue;
}
if (!rofVertices[rofId].empty() && cluster.getSize() < mVrtParams[iteration].suppressLowMultDebris) {
continue;
}
Comment on lines +517 to 519

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shahor02, this now suppresses lower multiplicity secondary vertices (disabled for pp) preferring the highest mult. ones.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for pp this is set to 0 in dpl-workflow.sh


Vertex vertex{clusters[clusterId].getVertex().data(),
clusters[clusterId].getRMS2(),
(ushort)clusters[clusterId].getSize(),
clusters[clusterId].getAvgDistance2()};
Vertex vertex{cluster.getVertex().data(),
cluster.getRMS2(),
(ushort)cluster.getSize(),
cluster.getAvgDistance2()};
if (iteration) {
vertex.setFlags(Vertex::UPCMode);
}
vertex.setTimeStamp(clusters[clusterId].getTimeStamp());
vertex.setTimeStamp(cluster.getTimeStamp());
rofVertices[rofId].push_back(vertex);
if (mTimeFrame->hasMCinformation()) {
auto& lineLabels = mTimeFrame->getLinesLabel(rofId);
bounded_vector<o2::MCCompLabel> labels(mMemoryPool.get());
for (auto& index : clusters[clusterId].getLabels()) {
for (auto& index : cluster.getLabels()) {
labels.push_back(lineLabels[index]);
}
const auto mainLabel = computeMain(labels);
Expand Down
2 changes: 1 addition & 1 deletion prodtests/full-system-test/dpl-workflow.sh
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ EVE_OPT=" --jsons-folder $EDJSONS_DIR"

# ITS vertexing settings
if [[ $BEAMTYPE == "pp" || $LIGHTNUCLEI == "1" ]]; then
ITS_CONFIG_KEY+=";ITSVertexerParam.pairCut=0.0317563;ITSVertexerParam.clusterCut=0.6640964;ITSVertexerParam.coarseZWindow=0.2049018;ITSVertexerParam.seedDedupZCut=0.0711793;ITSVertexerParam.refitDedupZCut=0.0680009;ITSVertexerParam.duplicateZCut=0.1582193;ITSVertexerParam.finalSelectionZCut=0.1081465;ITSVertexerParam.duplicateDistance2Cut=0.0117033;ITSVertexerParam.clusterContributorsCut=2;ITSVertexerParam.seedMemberRadiusZ=0;ITSVertexerParam.vertNsigmaCut=4.0;ITSVertexerParam.vertRadiusSigma=0.0452309;ITSVertexerParam.trackletSigma=0.0025941;"
ITS_CONFIG_KEY+=";ITSVertexerParam.pairCut=0.0317563;ITSVertexerParam.clusterCut=0.6640964;ITSVertexerParam.coarseZWindow=0.2049018;ITSVertexerParam.seedDedupZCut=0.0711793;ITSVertexerParam.refitDedupZCut=0.0680009;ITSVertexerParam.duplicateZCut=0.1582193;ITSVertexerParam.finalSelectionZCut=0.1081465;ITSVertexerParam.duplicateDistance2Cut=0.0117033;ITSVertexerParam.clusterContributorsCut=2;ITSVertexerParam.seedMemberRadiusZ=0;ITSVertexerParam.vertNsigmaCut=4.0;ITSVertexerParam.vertRadiusSigma=0.0452309;ITSVertexerParam.trackletSigma=0.0025941;ITSVertexerParam.suppressLowMultDebris=0;"
fi

if [[ $CTFINPUT != 1 ]]; then
Expand Down
Loading