Skip to content

Commit 07e0586

Browse files
committed
ITS: suppress low mult 2nd vertices
Signed-off-by: Felix Schlepper <felix.schlepper@cern.ch>
1 parent 7cfe145 commit 07e0586

File tree

6 files changed

+32
-21
lines changed

6 files changed

+32
-21
lines changed

Detectors/ITSMFT/ITS/tracking/include/ITStracking/Configuration.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,13 @@ struct VertexingParameters {
104104
float vertRadiusSigma = -1.f;
105105
float trackletSigma = -1.f;
106106
float maxZPositionAllowed = -1.f;
107-
int clusterContributorsCut = -1.f;
108-
int seedMemberRadiusTime = -1.f;
109-
int seedMemberRadiusZ = -1.f;
110-
int maxTrackletsPerCluster = -1.f;
111-
int phiSpan = -1.f;
112-
int zSpan = -1.f;
107+
int clusterContributorsCut = -1;
108+
int suppressLowMultDebris = -1;
109+
int seedMemberRadiusTime = -1;
110+
int seedMemberRadiusZ = -1;
111+
int maxTrackletsPerCluster = -1;
112+
int phiSpan = -1;
113+
int zSpan = -1;
113114
bool SaveTimeBenchmarks = false;
114115

115116
bool useTruthSeeding = false; // overwrite found vertices with MC events

Detectors/ITSMFT/ITS/tracking/include/ITStracking/LineVertexerHelpers.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ struct Settings {
3636
float maxZ = 0.f;
3737
int seedMemberRadiusTime = 1;
3838
int seedMemberRadiusZ = 2;
39-
int clusterContributorsCut = 3;
4039
std::shared_ptr<BoundedMemoryResource> memoryPool;
4140
};
4241

Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ struct VertexerParamConfig : public o2::conf::ConfigurableParamHelper<VertexerPa
4040
float vertNsigmaCut = 5.8762583f; // N sigma cut for vertex XY
4141
float vertRadiusSigma = 0.0343575f; // sigma of vertex XY
4242
float trackletSigma = 0.0143798f; // tracklet to vertex sigma
43-
float maxZPositionAllowed = 25.f; // 4x sZ of the beam
43+
float maxZPositionAllowed = 25.f; // 4x sZ of the beam
4444

4545
// Artefacts selections
4646
int clusterContributorsCut = 3; // minimum number of contributors for an accepted final vertex
47+
int suppressLowMultDebris = 16; // suppress all vertices below this threshold if a vertex was already found in a rof
4748
int seedMemberRadiusTime = 0;
4849
int seedMemberRadiusZ = 2;
4950
int maxTrackletsPerCluster = 100;

Detectors/ITSMFT/ITS/tracking/src/Configuration.cxx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ std::string TrackingParameters::asString() const
5757

5858
std::string VertexingParameters::asString() const
5959
{
60-
std::string str = std::format("NZb:{} NPhB:{} MinVtxCont:{} MaxTrkltCls:{} ZCut:{} PhCut:{} PairCut:{} ClCut:{} SeedRad:{}x{}",
61-
ZBins, PhiBins, clusterContributorsCut, maxTrackletsPerCluster, zCut, phiCut, pairCut, clusterCut, seedMemberRadiusTime, seedMemberRadiusZ);
60+
std::string str = std::format("NZb:{} NPhB:{} MinVtxCont:{} SupLowMultDebris:{} MaxTrkltCls:{} ZCut:{} PhCut:{} PairCut:{} ClCut:{} SeedRad:{}x{}",
61+
ZBins, PhiBins, clusterContributorsCut, suppressLowMultDebris, maxTrackletsPerCluster, zCut, phiCut, pairCut, clusterCut, seedMemberRadiusTime, seedMemberRadiusZ);
6262
if (std::numeric_limits<size_t>::max() != MaxMemory) {
6363
str += std::format(" MemLimit {:.2f} GB", double(MaxMemory) / constants::GB);
6464
}
@@ -263,6 +263,7 @@ std::vector<VertexingParameters> TrackingMode::getVertexingParameters(TrackingMo
263263
p.trackletSigma = vc.trackletSigma;
264264
p.maxZPositionAllowed = vc.maxZPositionAllowed;
265265
p.clusterContributorsCut = vc.clusterContributorsCut;
266+
p.suppressLowMultDebris = vc.suppressLowMultDebris;
266267
p.seedMemberRadiusTime = vc.seedMemberRadiusTime;
267268
p.seedMemberRadiusZ = vc.seedMemberRadiusZ;
268269
p.phiSpan = vc.phiSpan;

Detectors/ITSMFT/ITS/tracking/src/VertexerTraits.cxx

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,6 @@ void VertexerTraits<NLayers>::computeVertices(const int iteration)
349349
settings.maxZ = mVrtParams[iteration].maxZPositionAllowed;
350350
settings.seedMemberRadiusTime = mVrtParams[iteration].seedMemberRadiusTime;
351351
settings.seedMemberRadiusZ = mVrtParams[iteration].seedMemberRadiusZ;
352-
settings.clusterContributorsCut = mVrtParams[iteration].clusterContributorsCut;
353352
settings.memoryPool = mMemoryPool;
354353

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

503-
for (const auto clusterId : selectedIndices) {
504-
const auto beamDistance2 = clusterBeamDistance2(clusters[clusterId]);
502+
// sort vertices by their multiplicity to opt. suppress lower mult. debris
503+
std::vector<int> sortedIndices(selectedIndices.size());
504+
std::iota(sortedIndices.begin(), sortedIndices.end(), 0);
505+
std::sort(sortedIndices.begin(), sortedIndices.end(), [&selectedIndices, &clusters](int i, int j) {
506+
return clusters[selectedIndices[i]].getSize() > clusters[selectedIndices[j]].getSize();
507+
});
508+
for (const auto sortedId : sortedIndices) {
509+
const auto& cluster = clusters[selectedIndices[sortedId]];
510+
const auto beamDistance2 = clusterBeamDistance2(cluster);
505511
if (!(beamDistance2 < nsigmaCut)) {
506512
continue;
507513
}
508-
if (clusters[clusterId].getSize() < settings.clusterContributorsCut) {
514+
if (cluster.getSize() < mVrtParams[iteration].clusterContributorsCut) {
515+
continue;
516+
}
517+
if (!rofVertices[rofId].empty() && cluster.getSize() < mVrtParams[iteration].suppressLowMultDebris) {
509518
continue;
510519
}
511520

512-
Vertex vertex{clusters[clusterId].getVertex().data(),
513-
clusters[clusterId].getRMS2(),
514-
(ushort)clusters[clusterId].getSize(),
515-
clusters[clusterId].getAvgDistance2()};
521+
Vertex vertex{cluster.getVertex().data(),
522+
cluster.getRMS2(),
523+
(ushort)cluster.getSize(),
524+
cluster.getAvgDistance2()};
516525
if (iteration) {
517526
vertex.setFlags(Vertex::UPCMode);
518527
}
519-
vertex.setTimeStamp(clusters[clusterId].getTimeStamp());
528+
vertex.setTimeStamp(cluster.getTimeStamp());
520529
rofVertices[rofId].push_back(vertex);
521530
if (mTimeFrame->hasMCinformation()) {
522531
auto& lineLabels = mTimeFrame->getLinesLabel(rofId);
523532
bounded_vector<o2::MCCompLabel> labels(mMemoryPool.get());
524-
for (auto& index : clusters[clusterId].getLabels()) {
533+
for (auto& index : cluster.getLabels()) {
525534
labels.push_back(lineLabels[index]);
526535
}
527536
const auto mainLabel = computeMain(labels);

prodtests/full-system-test/dpl-workflow.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ EVE_OPT=" --jsons-folder $EDJSONS_DIR"
119119

120120
# ITS vertexing settings
121121
if [[ $BEAMTYPE == "pp" || $LIGHTNUCLEI == "1" ]]; then
122-
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;"
122+
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;"
123123
fi
124124

125125
if [[ $CTFINPUT != 1 ]]; then

0 commit comments

Comments
 (0)