diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/README.md b/Trigger/TrigAlgorithms/TrigFastTrackFinder/README.md index 74315bb643a526b05085395abcb0ed8c44cb6d90..6d62e27a023a3b52c457c2981c419c301a05d4c5 100644 --- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/README.md +++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/README.md @@ -1,6 +1,6 @@ ## Overview This Module contains the TrigFastTrackFinder Algorithm that performs Fast Track Reconstruction for the High Level Trigger. More details are given in the [TrigFastTrackFinderOverview](docs/TrigFastTrackFinderOverview.md) -Configured instances of TrigFastTrackFinder are provided to signatures by the [TrigInDetConfig](../../TrigTools/TrigInDetConfig/python) package. The README in that packackage gives details of how to include TrigFastTrackFinder and other Inner Detector algorithms in signature TriggerMenuMT sequences. +Configured instances of TrigFastTrackFinder are provided to signatures by the [TrigInDetConfig](../../TrigTools/TrigInDetConfig/python) package. The README in that package gives details of how to include TrigFastTrackFinder and other Inner Detector algorithms in signature TriggerMenuMT sequences. ## Files in this Module * Configuration: [TrigFastTrackFinderConfig.py](python/TrigFastTrackFinderConfig.py) diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinderConfig.py b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinderConfig.py index 558cb91d5b7bd3a2459cb00c0bdab7ccbf2966bf..e018af15999aad002cf900899d356b2866383a4d 100755 --- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinderConfig.py +++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinderConfig.py @@ -49,6 +49,7 @@ def TrigFastTrackFinderMonitoringArg(flags, name, doResMon): montool.defineHistogram('TIME_Total', path='EXPERT',type='TH1F',title="Total time (ms)", xbins = 200, xmin=0.0, xmax=2000.0) montool.defineHistogram('TIME_PattReco', path='EXPERT',type='TH1F',title="Pure PattReco time (ms)", xbins = 200, xmin=0.0, xmax=1000.0) montool.defineHistogram('TIME_SpacePointConversion', path='EXPERT',type='TH1F',title="SP Conversion time (ms)", xbins = 100, xmin=0.0, xmax=100.0) + montool.defineHistogram('TIME_ZFinder', path='EXPERT',type='TH1F',title="ZFinder time (ms)", xbins = 200, xmin=0.0, xmax=1000.0) montool.defineHistogram('TIME_Triplets', path='EXPERT',type='TH1F',title="Triplets Making time (ms)", xbins = 200, xmin=0.0, xmax=1000.0) montool.defineHistogram('TIME_CmbTrack', path='EXPERT',type='TH1F',title="Combined Tracking time (ms)", xbins = 200, xmin=0.0, xmax=1000.0) montool.defineHistogram('TIME_TrackFitter', path='EXPERT',type='TH1F',title="Track Fitter time (ms)", xbins = 200, xmin=0.0, xmax=200.0) @@ -223,18 +224,26 @@ def TrigZFinderCfg(flags : AthConfigFlags, numberingTool) -> ComponentAccumulato 'TripletDZ' : 1, 'PhiBinSize' : 0.1, 'UseOnlyPixels' : True, - 'MaxLayer' : 3 + 'MaxLayer' : 3, + 'NumberOfPeaks' : 3 } - - acc.setPrivateTools( - CompFactory.TrigZFinder( name="TrigZFinder", - NumberOfPeaks = 3, - LayerNumberTool=numberingTool, - FullScanMode = True, #TODO: know this from the RoI anyway - should set for every event - **zfargs - ) - ) - return acc + elif flags.Tracking.ActiveConfig.name == "jetSuper" : + zfargs = { + 'TripletMode' : 1, + 'TripletDZ' : 10, + 'UseOnlyPixels' : True, + 'MaxLayer' : 3, # Uses only barrel pixels + 'NumberOfPeaks' : 1 + } + + acc.setPrivateTools( + CompFactory.TrigZFinder( name="TrigZFinder", + LayerNumberTool=numberingTool, + FullScanMode = True, #TODO: know this from the RoI anyway - should set for every event + **zfargs + ) + ) + return acc def TrigFastTrackFinderCfg(flags: AthConfigFlags, name: str, slice_name: str, RoIs: str, inputTracksName:str = None) -> ComponentAccumulator: @@ -301,9 +310,9 @@ def TrigFastTrackFinderCfg(flags: AthConfigFlags, name: str, slice_name: str, Ro ) theTrigInDetTrackFitter = acc.getPublicTool("TrigInDetTrackFitter_"+remapped_type) - if (config.doZFinder): + if (flags.Tracking.ActiveConfig.doZFinder): theTrigZFinder = acc.popToolsAndMerge(TrigZFinderCfg(flags,numberingTool)) - + if not config.doZFinderOnly: from TrkConfig.TrkTrackSummaryToolConfig import InDetTrigTrackSummaryToolCfg, InDetTrigFastTrackSummaryToolCfg @@ -385,7 +394,7 @@ def TrigFastTrackFinderCfg(flags: AthConfigFlags, name: str, slice_name: str, Ro if flags.Tracking.ActiveConfig.doZFinder: ftf.doZFinderOnly = config.doZFinderOnly ftf.trigZFinder = theTrigZFinder - ftf.zVertexResolution = 1 + ftf.zVertexResolution = 20 if flags.Tracking.ActiveConfig.name == "jetSuper" else 1 ftf.doFastZVertexSeeding = True if inputTracksName: diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/src/TrigTrackSelector.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/src/TrigTrackSelector.cxx index 6784f26b312f06dc051153a308a591aa44aac863..4a302fa20d2f3abafc6424d36c3a95df12a41a42 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/src/TrigTrackSelector.cxx +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/src/TrigTrackSelector.cxx @@ -15,8 +15,8 @@ #include <stdexcept> -/// NB: This was 47 for Run 2, but wit the addition of the IBL it should be 32 -/// It was kept at 47 for all Run 2 and mogration to MT, but for Run 3 we +/// NB: This was 47 for Run 2, but with the addition of the IBL it should be 32 +/// It was kept at 47 for all Run 2 and migration to MT, but for Run 3 we /// really want it changed to be 32 const double TrigTrackSelector::s_default_radius = 47; @@ -30,8 +30,8 @@ TrigTrackSelector::TrigTrackSelector( TrackFilter* selector, double radius, int /// recursive function to identify whether a particle comes from some other -/// ancestor particle at any point in it's history - checks it's parents and -/// then function calls itself to check their parents etc, until it either +/// ancestor particle at any point in its history - checks its parents and +/// then function calls itself to check their parents etc., until it either /// finds the pdgid it is looking for, or it has no more ancestors /// if it finds an appropriate ancestor it returns the pointer to it, /// otherwise it returns a nullptr @@ -259,7 +259,7 @@ bool TrigTrackSelector::selectTrack( const Rec::TrackParticle* track ) { // Check number of hits // NB: a spacepoint is two offline "hits", so a pixel spacepoint is really - // 2 "hits" and an offline SCT "hit" is really a 1D cluster, so two intersetcting + // 2 "hits" and an offline SCT "hit" is really a 1D cluster, so two intersecting // stereo clusters making a spacepoint are two "hits" const Trk::TrackSummary *summary = track->trackSummary(); int nBlayerHits = 2*summary->get(Trk::numberOfBLayerHits); diff --git a/Trigger/TrigTools/IDScanZFinder/doc/packagedoc.h b/Trigger/TrigTools/IDScanZFinder/doc/packagedoc.h index 6a4dffc8d2733a54135609960c53995c6632afdb..9bfdfbdce9b5e00e84a6ccbf16a39795b72b5891 100644 --- a/Trigger/TrigTools/IDScanZFinder/doc/packagedoc.h +++ b/Trigger/TrigTools/IDScanZFinder/doc/packagedoc.h @@ -1,8 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ /** @@ -14,7 +11,7 @@ This package contains the AlgTool IDScanZfinder that determines the z-position of the primary pp interaction before any track reconstruction. Full details about the algorithm used can be found in: -https://twiki.cern.ch/twiki/bin/view/Atlas/IDScanHowTo +https://twiki.cern.ch/twiki/bin/view/AtlasComputing/IDScanHowTo Some details of the parameters and how they are set can be found in: @@ -37,9 +34,9 @@ http://indico.cern.ch/getFile.py/access?contribId=1&resId=0&materialId=slides&co - nVertexSeparation : minimum number of zbins that any two output vertices should by separated by ( default 0, set to 5 for e & mu slices by IDScan ) - VrtxMixing : if any two output peaks are too close, use this value as a weight to average the two z-positions ( experimental feature, default 0 ) - PreferCentralZ : If two peaks have the same height, report the one with lowest |z| first ( default false, set true for e & mu slices by IDScan ) - - TrustSPProvider : Use all the spacepoints returned by the OnlineSpacePointTool, without apply cuts based on RoI phi width ( default true ) + - TrustSPProvider : Use all the spacepoints returned by the OnlineSpacePointTool, without applying cuts based on RoI phi width ( default true ) - FullScanMode : full-scan mode ( default false, used for full-scan slices ) - - TripletMode : integer to chose triplet mode; if 0 ( default ), do not use the triplets; if 1, triplet mode is only for confirmation of pairs; if 2, each triplet contributes to the zhistos ( slower, possibly more resistant to pileup ) + - TripletMode : integer to choose triplet mode; if 0 ( default ), do not use the triplets; if 1, triplet mode is only for confirmation of pairs; if 2, each triplet contributes to the zhistos ( slower, possibly more resistant to pileup ) - TripletDZ, TripletDK, TripletDP : Cuts applied in confirming/creating triplets ( default values 25., 0.005, 0.05 ) diff --git a/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinderInternal.h b/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinderInternal.h index 4edd38ef81de725a9d423abfd0032a2da453265e..13ecc83afc4b0cdc7c4e4a181ed8b4b4d5989206 100644 --- a/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinderInternal.h +++ b/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinderInternal.h @@ -6,7 +6,7 @@ //////////////////////////////////////////////////////////////////////////////// // -// filename: IDScanZFinder.h +// filename: IDScanZFinderInternal.h // // author: Nikos Konstantinidis <n.konstantinidis@ucl.ac.uk> // @@ -148,6 +148,7 @@ protected: // data members int m_tripletMode; double m_tripletDZ; double m_tripletDK; + double m_halfTripletDK; // replaces m_tripletDK internally to avoid unnecessary multiplication by 2 in curvature calculation, without changing the interface double m_tripletDP; /// to apply a hreshold to the found vertex candidates @@ -198,6 +199,7 @@ IDScanZFinderInternal<SpacePoint>::IDScanZFinderInternal( const std::string& typ m_tripletMode = 0 ; m_tripletDZ = 25. ; m_tripletDK = 0.005 ; + m_halfTripletDK = 0.5*m_tripletDK; m_tripletDP = 0.05 ; // m_applyWeightThreshold = false; @@ -223,6 +225,8 @@ IDScanZFinderInternal<SpacePoint>::IDScanZFinderInternal( const std::string& typ template<class SpacePoint> void IDScanZFinderInternal<SpacePoint>::initializeInternal(long maxLayers, long lastBarrel ) { + m_halfTripletDK = 0.5*m_tripletDK; + m_IdScan_MaxNumLayers = maxLayers; m_IdScan_LastBrlLayer = lastBarrel; @@ -370,7 +374,7 @@ template<class SpacePoint> long IDScanZFinderInternal<SpacePoint>::fillVectors ( else { // If we trust that all the SPs are properly input, we determine the RoI phi width // using the SPs themselves. - // If the RoI phi range is wider than pi) we keep everything as usual. + // If the RoI phi range is wider than pi, we keep everything as usual. if ( m_trustSPprovider && m_usedROIphiWidth < M_PI ) { double roiPhiPosMin( 9.9), roiPhiPosMax(0); @@ -449,6 +453,7 @@ template<class SpacePoint> long IDScanZFinderInternal<SpacePoint>::fillVectors ( /// DOES NOT span the phi=pi boundary for(long i=0; i<nSPs; ++i, ++SpItr) { + if (m_pixOnly && !(*SpItr)->isPixel()) continue; double phi2 = (*SpItr)->phi() - roiPhiMin; if ( phi2>=0 && phi2<dphi ) { @@ -466,6 +471,7 @@ template<class SpacePoint> long IDScanZFinderInternal<SpacePoint>::fillVectors ( /// DOES span the phi=pi boundary for(long i=0; i<nSPs; ++i, ++SpItr) { + if (m_pixOnly && !(*SpItr)->isPixel()) continue; double phi2 = (*SpItr)->phi() - roiPhiMin; if( phi2<0.0) phi2+=2*M_PI; @@ -582,7 +588,7 @@ std::vector<typename IDScanZFinderInternal<SpacePoint>::vertex>* IDScanZFinderIn for ( unsigned int sliceIndex = 0; sliceIndex < m_NumPhiSlices; sliceIndex++ ) { allSlices[ sliceIndex ] = new PhiSlice( sliceIndex, ZBinSize, m_invPhiSliceSize, - m_tripletDZ, m_tripletDK, m_tripletDP, zMin, zMax, + m_tripletDZ, m_halfTripletDK, m_tripletDP, zMin, zMax, m_IdScan_MaxNumLayers, m_IdScan_LastBrlLayer ); } diff --git a/Trigger/TrigTools/IDScanZFinder/src/PhiSlice.cxx b/Trigger/TrigTools/IDScanZFinder/src/PhiSlice.cxx index a34dd6f9e9b1f028ca2b4049f67f3c5740a20bc4..b180031e4514efbd9a5ca0dab90d1cf11586fa3b 100644 --- a/Trigger/TrigTools/IDScanZFinder/src/PhiSlice.cxx +++ b/Trigger/TrigTools/IDScanZFinder/src/PhiSlice.cxx @@ -265,7 +265,7 @@ void PhiSlice::GetHistogram( std::vector<long>* HitHistogram, if ( TripletMode ) { //Calculate some extra values - double kValue = 2.0 * ( outerPointPhi - innerPointPhi ) * invDeltaRho; + double kValue = ( outerPointPhi - innerPointPhi ) * invDeltaRho; double pValue = ( outerPointPhi * innerPointRho - innerPointPhi * outerPointRho ) * invDeltaRho; @@ -429,7 +429,7 @@ int PhiSlice::FindTriplet( int OuterFilledLayer, int OuterPointIndex, } //Calculate the k value using the outer and triplet points - double tripletKValue = 2.0 * ( tripletPointPhi - outerPointPhi ) * invDeltaRho; + double tripletKValue = ( tripletPointPhi - outerPointPhi ) * invDeltaRho; if ( fabs( tripletKValue - CurrentKValue ) > m_kTolerance ) { continue; diff --git a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinder.cxx b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinder.cxx index 1e807574d4ea05c521d0df01aa4c52cd8a25fee8..95f27c904dd91299726140ac8a5f0ad0a8272433 100755 --- a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinder.cxx +++ b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinder.cxx @@ -148,6 +148,10 @@ StatusCode TrigZFinder::initialize() ATH_MSG_INFO("TrigZFinder::m_weigthThreshold = " << m_weightThreshold ); + ATH_MSG_INFO("TrigZFinder::m_tripletDZ = " << m_tripletDZ ); + ATH_MSG_INFO("TrigZFinder::m_tripletDK = " << m_tripletDK ); + ATH_MSG_INFO("TrigZFinder::m_tripletDP = " << m_tripletDP ); + return StatusCode::SUCCESS; } diff --git a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.cxx b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.cxx index 4341a4076643a9f5f5337e61e60854cc48266fbf..b5bdaeea7eb0cf44e74e54a57a36eee19bd7fddd 100644 --- a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.cxx +++ b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.cxx @@ -18,7 +18,6 @@ TrigZFinderInternal::TrigZFinderInternal( const std::string& type, const std::st m_usedphiBinSize = m_phiBinSize ; m_pixOnly = false ; m_ROIphiWidth = 0.2 ; - m_usedROIphiWidth = m_ROIphiWidth ; m_minZBinSize = 0.2 ; m_zBinSizeEtaCoeff = 0.1 ; m_dphideta = -0.02 ; @@ -35,7 +34,8 @@ TrigZFinderInternal::TrigZFinderInternal( const std::string& type, const std::st m_fullScanMode = false ; m_tripletMode = 0 ; m_tripletDZ = 25. ; - m_tripletDK = 0.005 ; + m_tripletDK = 0.005 ; + m_halfTripletDK = 0.5*m_tripletDK; // using this in internals avoids unnecessary multiplications when calculating curvature m_tripletDP = 0.05 ; m_maxLayer = 32; @@ -57,6 +57,7 @@ TrigZFinderInternal::TrigZFinderInternal( const std::string& type, const std::st void TrigZFinderInternal::initializeInternal(long maxLayers, long lastBarrel ) { + m_halfTripletDK = 0.5*m_tripletDK; m_IdScan_MaxNumLayers = maxLayers; m_IdScan_LastBrlLayer = lastBarrel; @@ -89,9 +90,6 @@ void TrigZFinderInternal::initializeInternal(long maxLayers, long lastBarrel ) m_extraPhi = std::vector< std::vector<long> >( m_IdScan_MaxNumLayers, std::vector<long>(m_IdScan_MaxNumLayers) ); - if ( m_fullScanMode ) m_usedROIphiWidth = 2*M_PI; - else m_usedROIphiWidth = m_ROIphiWidth; - // from TrigZFinder::initialize m_usedphiBinSize = m_phiBinSize; if ( m_usedphiBinSize < ZFinder_MinPhiSliceSize and ! m_forcePhiBinSize) m_usedphiBinSize = ZFinder_MinPhiSliceSize; @@ -231,8 +229,8 @@ long TrigZFinderInternal::fillVectors(const std::vector<TrigSiSpacePointBase>& s else { // If we trust that all the SPs are properly input, we determine the RoI phi width // using the SPs themselves. - // If the RoI phi range is wider than pi) we keep everything as usual. - if ( m_trustSPprovider && m_usedROIphiWidth < M_PI ) + // If the RoI phi range is wider than pi, we keep everything as usual. + if ( m_trustSPprovider && m_ROIphiWidth < M_PI ) { double roiPhiPosMin( 9.9), roiPhiPosMax(0); double roiPhiNegMin(-9.9), roiPhiNegMax(0); // least negative and most negative @@ -276,8 +274,8 @@ long TrigZFinderInternal::fillVectors(const std::vector<TrigSiSpacePointBase>& s /// get from roi now if ( roi.phiMinus()==roi.phiPlus() ) { - roiPhiMin = roi.phi()-0.5*m_usedROIphiWidth; - roiPhiMax = roi.phi()+0.5*m_usedROIphiWidth; + roiPhiMin = roi.phi()-0.5*m_ROIphiWidth; + roiPhiMax = roi.phi()+0.5*m_ROIphiWidth; if(roiPhiMin<-M_PI) roiPhiMin+=2*M_PI; if(roiPhiMax>M_PI) roiPhiMax-=2*M_PI; } @@ -296,10 +294,6 @@ long TrigZFinderInternal::fillVectors(const std::vector<TrigSiSpacePointBase>& s if ( dphi<0 ) dphi+=2*M_PI; - // m_usedROIphiWidth = dphi; - - // std::cout << "m_usedROIphiWidth: " << m_usedROIphiWidth << std::endl; - // m_NumPhiSlices = long (ceil( m_usedROIphiWidth*m_invPhiSliceSize )); numPhiSlices = long (ceil( dphi*m_invPhiSliceSize )); @@ -312,15 +306,15 @@ long TrigZFinderInternal::fillVectors(const std::vector<TrigSiSpacePointBase>& s /// DOES NOT span the phi=pi boundary for(long i=0; i<nSPs; ++i, ++SpItr) { - if ( SpItr->layer()>m_maxLayer ) continue; + if ( SpItr->layer()>m_maxLayer || (m_pixOnly && !SpItr->isPixel()) ) continue; double phi2 = SpItr->phi() - roiPhiMin; - if ( phi2>=0 && phi2<dphi ) { - phi[i] = phi2; - rho[i] = SpItr->r(); - zed[i] = SpItr->z(); - lyr[i] = m_new2old[SpItr->layer()]; - lcount[lyr[i]]=true; + if ( phi2>=0 && phi2<dphi ) { // ensures space point is in ROI + phi[icount] = phi2; + rho[icount] = SpItr->r(); + zed[icount] = SpItr->z(); + lyr[icount] = m_new2old[SpItr->layer()]; + lcount[lyr[icount]]=true; ++icount; } } @@ -330,16 +324,15 @@ long TrigZFinderInternal::fillVectors(const std::vector<TrigSiSpacePointBase>& s /// DOES span the phi=pi boundary for(long i=0; i<nSPs; ++i, ++SpItr) { - + if ( SpItr->layer()>m_maxLayer || (m_pixOnly && !SpItr->isPixel()) ) continue; double phi2 = SpItr->phi() - roiPhiMin; if( phi2<0.0) phi2+=2*M_PI; - if ( SpItr->layer()>m_maxLayer ) continue; - if ( phi2>=0 && phi2<dphi ) { - phi[i] = phi2; - rho[i] = SpItr->r(); - zed[i] = SpItr->z(); - lyr[i] = m_new2old[SpItr->layer()]; - lcount[lyr[i]]=true; + if ( phi2>=0 && phi2<dphi ) { // ensures space point is in ROI + phi[icount] = phi2; + rho[icount] = SpItr->r(); + zed[icount] = SpItr->z(); + lyr[icount] = m_new2old[SpItr->layer()]; + lcount[lyr[icount]]=true; ++icount; } } @@ -354,8 +347,6 @@ long TrigZFinderInternal::fillVectors(const std::vector<TrigSiSpacePointBase>& s rho.resize(icount); zed.resize(icount); lyr.resize(icount); - - nSPs = icount; } @@ -364,7 +355,6 @@ long TrigZFinderInternal::fillVectors(const std::vector<TrigSiSpacePointBase>& s // and filledLayers[2]=8 // long filled = 0; - // filled = 0; for ( long i=0; i<m_IdScan_MaxNumLayers; ++i ) { if ( lcount[i] ) { @@ -454,7 +444,7 @@ TrigZFinderInternal::findZInternal( const std::vector<TrigSiSpacePointBase>& spV for ( unsigned int sliceIndex = 0; sliceIndex < numPhiSlices; sliceIndex++ ) { allSlices[ sliceIndex ] = new PhiSlice( sliceIndex, ZBinSize, m_invPhiSliceSize, - m_tripletDZ, m_tripletDK, m_tripletDP, zMin, zMax, + m_tripletDZ, m_halfTripletDK, m_tripletDP, zMin, zMax, m_IdScan_MaxNumLayers, m_IdScan_LastBrlLayer ); } @@ -579,7 +569,7 @@ TrigZFinderInternal::findZInternal( const std::vector<TrigSiSpacePointBase>& spV std::vector<long> n3( nHisto[0][0].size()-2, 0); - for( unsigned i=n.size()-2 ; i-- ; ) n3[i] = ( n[i+2] + n[i+2] + n[i] ); + for( unsigned i=n.size()-2 ; i-- ; ) n3[i] = ( n[i+2] + n[i+1] + n[i] ); std::sort( n3.begin(), n3.end() ); unsigned nmax = unsigned(n3.size()*m_percentile); diff --git a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.h b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.h index 6ac9596e6e2d1e1324c067aa52034a54fb185cb2..20ce917bdf0c02eae5601f83d7785c1b406ba936 100644 --- a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.h +++ b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.h @@ -6,7 +6,7 @@ //////////////////////////////////////////////////////////////////////////////// // -// filename: TrigZFinder.h +// filename: TrigZFinderInternal.h // // author: Nikos Konstantinidis <n.konstantinidis@ucl.ac.uk> // @@ -94,7 +94,6 @@ protected: // data members bool m_forcePhiBinSize = false; // respect the config of phi bin even if below reasonable threshold double m_usedphiBinSize; // the size of the phi slices double m_ROIphiWidth; // the phi width of the ROI - double m_usedROIphiWidth; // the phi width of the ROI double m_minZBinSize; // z-histo bin size: m_minZBinSize+|etaRoI|*m_zBinSizeEtaCoeff (to account for worse resolution in high eta) double m_zBinSizeEtaCoeff; // z-histo bin size: m_minZBinSize+|etaRoI|*m_zBinSizeEtaCoeff (to account for worse resolution in high eta) @@ -131,6 +130,7 @@ protected: // data members int m_tripletMode; double m_tripletDZ; double m_tripletDK; + double m_halfTripletDK; // replaces m_tripletDK internally to avoid unnecessary multiplication by 2 in curvature calculation, without changing the interface double m_tripletDP; int m_maxLayer; diff --git a/Trigger/TrigTools/IDScanZFinder/src/ZFinderConstants.h b/Trigger/TrigTools/IDScanZFinder/src/ZFinderConstants.h index 3db71a5701b919b2baf7b042e30dcaef5fdd14e9..206d8964a2b5f90f1d3e2fa84e32a4f9fa5ebb99 100755 --- a/Trigger/TrigTools/IDScanZFinder/src/ZFinderConstants.h +++ b/Trigger/TrigTools/IDScanZFinder/src/ZFinderConstants.h @@ -1,17 +1,17 @@ // emacs: this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ //////////////////////////////////////////////////////////////////////////////// // -// filename: ZF_Constants.h +// filename: ZFinderConstants.h // // author: Nikos Konstantinidis // nk@hep.ucl.ac.uk // -// Description: contains ZFinder constantds +// Description: contains ZFinder constants // // date: 24/07/2003 //