diff --git a/Trigger/TrigHypothesis/TrigTauHypo/TrigTauHypo/HLTTauTrackRoiUpdater.h b/Trigger/TrigHypothesis/TrigTauHypo/TrigTauHypo/HLTTauTrackRoiUpdater.h index 983bee9f3c22c28975299302b9728e990f9ae1cc..6e1b8db0207b3c340c0dd072ac9d90751d133af6 100644 --- a/Trigger/TrigHypothesis/TrigTauHypo/TrigTauHypo/HLTTauTrackRoiUpdater.h +++ b/Trigger/TrigHypothesis/TrigTauHypo/TrigTauHypo/HLTTauTrackRoiUpdater.h @@ -22,6 +22,10 @@ class HLTTauTrackRoiUpdater : public HLT::FexAlgo float m_z0HalfWidth; std::string m_InputTrackColl; - + + int m_nHitPix; //<! at least n hits in pixels on lead track + int m_nSiHoles; //<! maximum number of Si holes on lead track + + }; #endif diff --git a/Trigger/TrigHypothesis/TrigTauHypo/cmt/requirements b/Trigger/TrigHypothesis/TrigTauHypo/cmt/requirements index 2e1f3f74117fe6477d1f60b05ddc2c954623a2ed..c50a0493702e44d659e7f1c93097f7b16fc3c16d 100755 --- a/Trigger/TrigHypothesis/TrigTauHypo/cmt/requirements +++ b/Trigger/TrigHypothesis/TrigTauHypo/cmt/requirements @@ -2,11 +2,11 @@ package TrigTauHypo use AtlasPolicy AtlasPolicy-* use GaudiInterface GaudiInterface-* External -use TrigCaloEvent TrigCaloEvent-* Trigger/TrigEvent -use TrigInDetEvent TrigInDetEvent-* Trigger/TrigEvent -use TrigParticle TrigParticle-* Trigger/TrigEvent +use TrigCaloEvent TrigCaloEvent-* Trigger/TrigEvent +use TrigInDetEvent TrigInDetEvent-* Trigger/TrigEvent +use TrigParticle TrigParticle-* Trigger/TrigEvent use TrigSteeringEvent TrigSteeringEvent-* Trigger/TrigEvent -use TrigInterfaces TrigInterfaces-* Trigger/TrigSteer +use TrigInterfaces TrigInterfaces-* Trigger/TrigSteer use AtlasROOT AtlasROOT-* External use StoreGate StoreGate-* Control @@ -31,10 +31,11 @@ use EventInfo EventInfo-* Event use PathResolver PathResolver-* Tools use TrigCaloEvent TrigCaloEvent-* Trigger/TrigEvent use TrkTrack TrkTrack-* Tracking/TrkEvent -use xAODJet xAODJet-* Event/xAOD -use xAODCaloEvent xAODCaloEvent-* Event/xAOD -use xAODTau xAODTau-* Event/xAOD -use xAODTracking xAODTracking-* Event/xAOD -use CaloEvent CaloEvent-* Calorimeter +use TrkTrackSummary TrkTrackSummary-* Tracking/TrkEvent +use xAODJet xAODJet-* Event/xAOD +use xAODCaloEvent xAODCaloEvent-* Event/xAOD +use xAODTau xAODTau-* Event/xAOD +use xAODTracking xAODTracking-* Event/xAOD +use CaloEvent CaloEvent-* Calorimeter end_private diff --git a/Trigger/TrigHypothesis/TrigTauHypo/src/EFTauMVHypo.cxx b/Trigger/TrigHypothesis/TrigTauHypo/src/EFTauMVHypo.cxx index 3b52ee32ac05199aa69d2f7fad75b1ff99d5fb42..a753ebc8c57c9e3e56dd1eb58c10763605a0988b 100644 --- a/Trigger/TrigHypothesis/TrigTauHypo/src/EFTauMVHypo.cxx +++ b/Trigger/TrigHypothesis/TrigTauHypo/src/EFTauMVHypo.cxx @@ -75,7 +75,7 @@ HLT::ErrorCode EFTauMVHypo::hltInitialize() msg() << MSG::INFO << " REGTEST: EFTauMVHypo will cut on "<<endreq; msg() << MSG::INFO << " REGTEST: param NTrackMin " << m_numTrackMin <<endreq; msg() << MSG::INFO << " REGTEST: param NTrackMax " << m_numTrackMax <<endreq; - msg() << MSG::INFO << " REGTEST: param NTrackMax " << m_numWideTrackMax <<endreq; + msg() << MSG::INFO << " REGTEST: param NWideTrackMax " << m_numWideTrackMax <<endreq; msg() << MSG::INFO << " REGTEST: param EtCalib " << m_EtCalibMin <<endreq; msg() << MSG::INFO << " REGTEST: param Level " << m_level <<endreq; msg() << MSG::INFO << " REGTEST: param Method " << m_method <<endreq; diff --git a/Trigger/TrigHypothesis/TrigTauHypo/src/HLTTauTrackRoiUpdater.cxx b/Trigger/TrigHypothesis/TrigTauHypo/src/HLTTauTrackRoiUpdater.cxx index f6d57762babdf2a4c7db31dfa32b3411ddeabc2e..dd7c845514dc0925ce4d05392940987bd50bf979 100644 --- a/Trigger/TrigHypothesis/TrigTauHypo/src/HLTTauTrackRoiUpdater.cxx +++ b/Trigger/TrigHypothesis/TrigTauHypo/src/HLTTauTrackRoiUpdater.cxx @@ -13,13 +13,16 @@ #include "TrkTrack/Track.h" #include "TrkTrack/TrackCollection.h" - +#include "TrkTrackSummary/TrackSummary.h" HLTTauTrackRoiUpdater::HLTTauTrackRoiUpdater(const std::string & name, ISvcLocator* pSvcLocator) : HLT::FexAlgo(name, pSvcLocator) { declareProperty("InputTrackCollection", m_InputTrackColl = "TrigFastTrackFinder_TauCore"); declareProperty("z0HalfWidth", m_z0HalfWidth = 0.4); + declareProperty("nHitPix", m_nHitPix = 2); + declareProperty("nSiHoles", m_nSiHoles = 2); + } HLTTauTrackRoiUpdater::~HLTTauTrackRoiUpdater() @@ -90,6 +93,7 @@ HLT::ErrorCode HLTTauTrackRoiUpdater::hltExecute(const HLT::TriggerElement*, HLT const Trk::Track *leadTrack = 0; const Trk::Perigee *trackPer = 0; + const Trk::TrackSummary* summary = 0; float trkPtMax = 0; TrackCollection::const_iterator it = foundTracks->begin(); @@ -97,34 +101,80 @@ HLT::ErrorCode HLTTauTrackRoiUpdater::hltExecute(const HLT::TriggerElement*, HLT // Find leading track + + for (;it!=itEnd;it++){ + + const Trk::Track* track = *it; + + trackPer = track->perigeeParameters(); + summary = track->trackSummary(); + - const Trk::Track* track = *it; - trackPer = track->perigeeParameters(); + if(summary==0){ + msg() << MSG::DEBUG << " track summary not available in RoI updater " << trkPtMax << endreq; + } - if(trackPer){ - - float trackPt = trackPer->pT()*1e-3; - if ( trackPt > trkPtMax ) { - leadTrack = (*it); - trkPtMax = trackPt; - } + + + if(trackPer && summary){ - } + float trackPt = trackPer->pT(); + + + if ( trackPt > trkPtMax ) { + + + int nPix = summary->get(Trk::numberOfPixelHits); + if(nPix<0) nPix=0; + + if(nPix < m_nHitPix) { + + msg() << MSG::DEBUG << "Track rejected because of nHitPix " << nPix << " < " << m_nHitPix << endreq; + + continue; + + } + + + int nPixHole = summary->get(Trk::numberOfPixelHoles); + if (nPixHole < 0) nPixHole = 0; + + int nSCTHole = summary->get(Trk::numberOfSCTHoles); + if (nSCTHole < 0) nSCTHole = 0; + + if((nPixHole + nSCTHole) > m_nSiHoles) { + + msg() << MSG::DEBUG << "Track rejected because of nSiHoles " << nPixHole + nSCTHole << " > " << m_nSiHoles << endreq; + + continue; + + } + + + leadTrack = (*it); + trkPtMax = trackPt; + + } + + + + } } + if(leadTrack) { msg() << MSG::DEBUG << " leading track pT " << trkPtMax << endreq; } else msg() << MSG::DEBUG << " no leading track pT found " << endreq; - + if(leadTrack){ leadTrkZ0 = leadTrack->perigeeParameters()->parameters()[Trk::z0]; } - + } - + float z0Min = leadTrkZ0 - m_z0HalfWidth; float z0Max = leadTrkZ0 + m_z0HalfWidth; @@ -141,13 +191,13 @@ HLT::ErrorCode HLTTauTrackRoiUpdater::hltExecute(const HLT::TriggerElement*, HLT if ( HLT::OK != attachFeature(outputTE, outRoi, roiName) ) { ATH_MSG_ERROR("Could not attach feature to the TE"); - return HLT::NAV_ERROR; + return HLT::NAV_ERROR; } else { ATH_MSG_DEBUG("REGTEST: attached RoI " << roiName << *outRoi); } - + return HLT::OK; - + }