From 734f92720be3c762b74b0a025242e111be5ce2fa Mon Sep 17 00:00:00 2001 From: Marin Mlinarevic <marin.mlinarevic@cern.ch> Date: Fri, 11 Aug 2023 21:04:07 +0200 Subject: [PATCH] Increased z vertex resolution for endcap layers to 150 when seeding FTF using ZFinder in jetSuper configuration --- .../python/TrigFastTrackFinderConfig.py | 1 + .../src/TrigFastTrackFinder.cxx | 18 +++-- .../TrigCombinatorialSettings.h | 2 + .../TrigTrackSeedGenerator.h | 1 + .../src/TrigTrackSeedGenerator.cxx | 68 ++++++++++--------- .../TrigInDetPattRecoTools/test/mockSeeds.cxx | 1 + 6 files changed, 53 insertions(+), 38 deletions(-) diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinderConfig.py b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinderConfig.py index e018af15999a..ef9784a94613 100755 --- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinderConfig.py +++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinderConfig.py @@ -395,6 +395,7 @@ def TrigFastTrackFinderCfg(flags: AthConfigFlags, name: str, slice_name: str, Ro ftf.doZFinderOnly = config.doZFinderOnly ftf.trigZFinder = theTrigZFinder ftf.zVertexResolution = 20 if flags.Tracking.ActiveConfig.name == "jetSuper" else 1 + ftf.zVertexResolutionEndcap = 150 if flags.Tracking.ActiveConfig.name == "jetSuper" else ftf.zVertexResolution ftf.doFastZVertexSeeding = True if inputTracksName: diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx index 01daa6efc69b..e98f6dec8dd9 100644 --- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx +++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx @@ -96,12 +96,14 @@ TrigFastTrackFinder::TrigFastTrackFinder(const std::string& name, ISvcLocator* p declareProperty( "MinHits", m_minHits = 5,"Minimum number of hits needed to perform tracking" ); //** Zfinder mode - declareProperty( "doZFinder", m_doZFinder = true,"Use fast ZFinder to find z of primary vertices"); - declareProperty( "doZFinderOnly", m_doZFinderOnly = false,"stop processing after ZFinder - no tracking performed"); - declareProperty( "VertexSeededMode", m_vertexSeededMode = false); //** NOT USED Obsolete? ATR-24242 - declareProperty( "doFastZVertexSeeding", m_doFastZVseeding = true,"Use ZFinder vertex information to filter seeds"); - declareProperty( "zVertexResolution", m_tcs.m_zvError = 10.0," Half-width (mm) in z of z region used to filter seeds when doFastZVertexSeeding enabled" ); - declareProperty( "StoreZFinderVertices", m_storeZFinderVertices = false ); //** NOT USED - to be implemented ATR-24242 + declareProperty( "doZFinder", m_doZFinder = true,"Use fast ZFinder to find z of primary vertices"); + declareProperty( "doZFinderOnly", m_doZFinderOnly = false,"stop processing after ZFinder - no tracking performed"); + declareProperty( "VertexSeededMode", m_vertexSeededMode = false); //** NOT USED Obsolete? ATR-24242 + declareProperty( "doFastZVertexSeeding", m_doFastZVseeding = true,"Use ZFinder vertex information to filter seeds"); + declareProperty( "zVertexResolution", m_tcs.m_zvError = 10.0," Half-width (mm) in z of z region used to filter seeds when doFastZVertexSeeding enabled" ); + declareProperty( "zVertexResolutionEndcap", m_tcs.m_zvErrorEndcap = -1," Half-width (mm) in z of region used to filter seeds when doFastZVertexSeeding enabled, for endcap pixels; set to m_tcs.m_zvError later if left negative" ); + declareProperty( "StoreZFinderVertices", m_storeZFinderVertices = false ); //** NOT USED - to be implemented ATR-24242 + /** SeedMaker */ declareProperty("useNewLayerNumberScheme", m_useNewLayerNumberScheme = false,"Use LayerNumberTool for layer numbers"); @@ -220,6 +222,9 @@ StatusCode TrigFastTrackFinder::initialize() { if (m_doZFinder) { ATH_CHECK(m_trigZFinder.retrieve()); + // If m_tcs.m_zvErrorEndcap has negative default value, it was not set by user, + // so set it to the same value as m_tcs.m_zvError + if (m_tcs.m_zvErrorEndcap < 0) m_tcs.m_zvErrorEndcap = m_tcs.m_zvError; } else { m_trigZFinder.disable(); } @@ -344,6 +349,7 @@ StatusCode TrigFastTrackFinder::initialize() { ATH_MSG_DEBUG(" m_doZFinderOnly : " << m_doZFinderOnly ); ATH_MSG_DEBUG(" m_doFastZVseeding : " << m_doFastZVseeding ); ATH_MSG_DEBUG(" m_tcs.m_zvError : " << m_tcs.m_zvError ); + ATH_MSG_DEBUG(" m_tcs.m_zvErrorEndcap : " << m_tcs.m_zvErrorEndcap ); ATH_MSG_DEBUG(" m_storeZFinderVertices : " << m_storeZFinderVertices ); ATH_MSG_DEBUG(" m_tripletMinPtFrac : " << m_tripletMinPtFrac ); ATH_MSG_DEBUG(" m_pTmin : " << m_pTmin ); diff --git a/Trigger/TrigTools/TrigInDetPattRecoTools/TrigInDetPattRecoTools/TrigCombinatorialSettings.h b/Trigger/TrigTools/TrigInDetPattRecoTools/TrigInDetPattRecoTools/TrigCombinatorialSettings.h index c07bb5e9e365..439ffa2e60d8 100644 --- a/Trigger/TrigTools/TrigInDetPattRecoTools/TrigInDetPattRecoTools/TrigCombinatorialSettings.h +++ b/Trigger/TrigTools/TrigInDetPattRecoTools/TrigInDetPattRecoTools/TrigCombinatorialSettings.h @@ -39,6 +39,7 @@ public: m_maxTripletBufferLength = 3; m_zvError = 10.0; + m_zvErrorEndcap = m_zvError; m_LRTmode=false; m_layerGeometry.clear(); m_useTrigSeedML = 0; @@ -67,6 +68,7 @@ public: unsigned int m_maxTripletBufferLength; float m_zvError; + float m_zvErrorEndcap; bool m_LRTmode; bool m_useEtaBinning; diff --git a/Trigger/TrigTools/TrigInDetPattRecoTools/TrigInDetPattRecoTools/TrigTrackSeedGenerator.h b/Trigger/TrigTools/TrigInDetPattRecoTools/TrigInDetPattRecoTools/TrigTrackSeedGenerator.h index 74389db676c7..d1c6f12b021e 100644 --- a/Trigger/TrigTools/TrigInDetPattRecoTools/TrigInDetPattRecoTools/TrigTrackSeedGenerator.h +++ b/Trigger/TrigTools/TrigInDetPattRecoTools/TrigInDetPattRecoTools/TrigTrackSeedGenerator.h @@ -350,6 +350,7 @@ private: std::vector<TrigInDetTriplet> m_triplets; float m_zMinus, m_zPlus, m_minCoord, m_maxCoord; + float m_zMinus, m_zPlus, m_minCoord, m_maxCoord, m_zMinusEndcap, m_zPlusEndcap; int m_nInner, m_nOuter; std::vector<int> m_innerMarkers, m_outerMarkers; diff --git a/Trigger/TrigTools/TrigInDetPattRecoTools/src/TrigTrackSeedGenerator.cxx b/Trigger/TrigTools/TrigInDetPattRecoTools/src/TrigTrackSeedGenerator.cxx index 298265acafc9..4f7c87abcffa 100644 --- a/Trigger/TrigTools/TrigInDetPattRecoTools/src/TrigTrackSeedGenerator.cxx +++ b/Trigger/TrigTools/TrigInDetPattRecoTools/src/TrigTrackSeedGenerator.cxx @@ -112,6 +112,8 @@ void TrigTrackSeedGenerator::createSeeds(const IRoiDescriptor* roiDescriptor) { m_zMinus = roiDescriptor->zedMinus() - m_zTol; m_zPlus = roiDescriptor->zedPlus() + m_zTol; + m_zPlusEndcap = m_zMinus; + m_zMinusEndcap = m_zPlus; m_triplets.clear(); @@ -261,6 +263,8 @@ void TrigTrackSeedGenerator::createSeeds(const IRoiDescriptor* roiDescriptor, co m_zMinus = zVertex - m_settings.m_zvError; m_zPlus = zVertex + m_settings.m_zvError; + m_zPlusEndcap = zVertex + m_settings.m_zvErrorEndcap; + m_zMinusEndcap = zVertex - m_settings.m_zvErrorEndcap; for(int layerJ=0;layerJ<nLayers;layerJ++) {//loop over other layers @@ -356,21 +360,21 @@ bool TrigTrackSeedGenerator::validateLayerPairNew(int layerI, int layerJ, float if(refCoordJ>0) {//positive EC if(refCoordJ > zm) {//outer layer - if(zm < m_zMinus) return false; - if(zm == m_zPlus) return false; + if(zm < m_zMinusEndcap) return false; + if(zm == m_zPlusEndcap) return false; float zMax = (zm*maxB-rm*refCoordJ)/(maxB-rm); - if( m_zMinus > zMax) return false; + if( m_zMinusEndcap > zMax) return false; if (rm < minB) { float zMin = (zm*minB-rm*refCoordJ)/(minB-rm); - if(m_zPlus<zMin) return false; + if(m_zPlusEndcap<zMin) return false; } - m_minCoord = (refCoordJ-m_zMinus)*rm/(zm-m_zMinus); - m_maxCoord = (refCoordJ-m_zPlus)*rm/(zm-m_zPlus); - m_minCoord -= deltaRefCoord*rm/std::fabs(zm-m_zMinus); - m_maxCoord += deltaRefCoord*rm/std::fabs(zm-m_zPlus); + m_minCoord = (refCoordJ-m_zMinusEndcap)*rm/(zm-m_zMinusEndcap); + m_maxCoord = (refCoordJ-m_zPlusEndcap)*rm/(zm-m_zPlusEndcap); + m_minCoord -= deltaRefCoord*rm/std::fabs(zm-m_zMinusEndcap); + m_maxCoord += deltaRefCoord*rm/std::fabs(zm-m_zPlusEndcap); - if(zm <= m_zPlus) m_maxCoord = maxB; + if(zm <= m_zPlusEndcap) m_maxCoord = maxB; if(m_minCoord > maxB) return false; if(m_maxCoord < minB) return false; @@ -379,35 +383,35 @@ bool TrigTrackSeedGenerator::validateLayerPairNew(int layerI, int layerJ, float else {//inner layer if(minB == rm) return false; float zMax = (zm*minB-rm*refCoordJ)/(minB-rm); - if( m_zMinus > zMax) return false; + if( m_zMinusEndcap > zMax) return false; if (rm>maxB) {// otherwise, intersect of line from maxB through middle sp will be on the wrong side of the layer float zMin = (zm*maxB-rm*refCoordJ)/(maxB-rm); - if(m_zPlus<zMin) return false; + if(m_zPlusEndcap<zMin) return false; } - if(zm == m_zPlus || zm == m_zMinus) return false; - m_minCoord = (refCoordJ-m_zPlus)*rm/(zm-m_zPlus); - m_maxCoord = (refCoordJ-m_zMinus)*rm/(zm-m_zMinus); - m_minCoord -= deltaRefCoord*rm/std::fabs(zm-m_zPlus); - m_maxCoord += deltaRefCoord*rm/std::fabs(zm-m_zMinus); + if(zm == m_zPlusEndcap || zm == m_zMinusEndcap) return false; + m_minCoord = (refCoordJ-m_zPlusEndcap)*rm/(zm-m_zPlusEndcap); + m_maxCoord = (refCoordJ-m_zMinusEndcap)*rm/(zm-m_zMinusEndcap); + m_minCoord -= deltaRefCoord*rm/std::fabs(zm-m_zPlusEndcap); + m_maxCoord += deltaRefCoord*rm/std::fabs(zm-m_zMinusEndcap); } } else {//negative EC if(refCoordJ < zm) {//outer layer - if(zm > m_zPlus) return false; - if(zm == m_zMinus) return false; + if(zm > m_zPlusEndcap) return false; + if(zm == m_zMinusEndcap) return false; float zMin = (zm*maxB-rm*refCoordJ)/(maxB-rm); - if( m_zPlus < zMin) return false; + if( m_zPlusEndcap < zMin) return false; if (rm<minB) {// otherwise, intersect of line from minB through middle sp will be on the wrong side of the layer float zMax = (zm*minB-rm*refCoordJ)/(minB-rm); - if(m_zMinus>zMax) return false; + if(m_zMinusEndcap>zMax) return false; } - m_minCoord = (refCoordJ-m_zPlus)*rm/(zm-m_zPlus); - m_maxCoord = (refCoordJ-m_zMinus)*rm/(zm-m_zMinus); - m_minCoord -= deltaRefCoord*rm/std::fabs(zm-m_zPlus); - m_maxCoord += deltaRefCoord*rm/std::fabs(zm-m_zMinus); - if(zm > m_zMinus) m_maxCoord = maxB; + m_minCoord = (refCoordJ-m_zPlusEndcap)*rm/(zm-m_zPlusEndcap); + m_maxCoord = (refCoordJ-m_zMinusEndcap)*rm/(zm-m_zMinusEndcap); + m_minCoord -= deltaRefCoord*rm/std::fabs(zm-m_zPlusEndcap); + m_maxCoord += deltaRefCoord*rm/std::fabs(zm-m_zMinusEndcap); + if(zm > m_zMinusEndcap) m_maxCoord = maxB; if(m_minCoord > maxB) return false; if(m_maxCoord < minB) return false; @@ -415,16 +419,16 @@ bool TrigTrackSeedGenerator::validateLayerPairNew(int layerI, int layerJ, float else {//inner layer if(minB == rm) return false; float zMin = (zm*minB-rm*refCoordJ)/(minB-rm); - if( m_zPlus < zMin) return false; + if( m_zPlusEndcap < zMin) return false; if (rm>maxB) {// otherwise, intersect of line from maxB through middle sp will be on the wrong side of the layer float zMax = (zm*maxB-rm*refCoordJ)/(maxB-rm); - if(m_zMinus>zMax) return false; + if(m_zMinusEndcap>zMax) return false; } - if(zm == m_zPlus || zm == m_zMinus) return false; - m_minCoord = (refCoordJ-m_zMinus)*rm/(zm-m_zMinus); - m_maxCoord = (refCoordJ-m_zPlus)*rm/(zm-m_zPlus); - m_minCoord -= deltaRefCoord*rm/std::fabs(zm-m_zMinus); - m_maxCoord += deltaRefCoord*rm/std::fabs(zm-m_zPlus); + if(zm == m_zPlusEndcap || zm == m_zMinusEndcap) return false; + m_minCoord = (refCoordJ-m_zMinusEndcap)*rm/(zm-m_zMinusEndcap); + m_maxCoord = (refCoordJ-m_zPlusEndcap)*rm/(zm-m_zPlusEndcap); + m_minCoord -= deltaRefCoord*rm/std::fabs(zm-m_zMinusEndcap); + m_maxCoord += deltaRefCoord*rm/std::fabs(zm-m_zPlusEndcap); } } diff --git a/Trigger/TrigTools/TrigInDetPattRecoTools/test/mockSeeds.cxx b/Trigger/TrigTools/TrigInDetPattRecoTools/test/mockSeeds.cxx index 2388906dde0f..7742f550838d 100644 --- a/Trigger/TrigTools/TrigInDetPattRecoTools/test/mockSeeds.cxx +++ b/Trigger/TrigTools/TrigInDetPattRecoTools/test/mockSeeds.cxx @@ -53,6 +53,7 @@ int main() tcs.m_tripletDoPPS = true; tcs.m_tripletDtCut = 10.0; tcs.m_zvError = 10.0; + tcs.m_zvErrorEndcap = tcs.m_zvError; tcs.m_maxBarrelPix = -1; tcs.m_minEndcapPix = 8; tcs.m_maxEndcapPix = -1; -- GitLab