diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTrkMuIdTools_jobOptions.py b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTrkMuIdTools_jobOptions.py index 4e9fdf8dbede0cf714440111dcc7a01c16d094d1..dbd17150fb4cf4887ea50ebf5257a2966672e53c 100755 --- a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTrkMuIdTools_jobOptions.py +++ b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTrkMuIdTools_jobOptions.py @@ -55,17 +55,6 @@ from CaloTrkMuIdTools.CaloTrkMuIdToolsConf import TrackDepositInCaloTool as Conf TrackDepositInCaloTool = ConfiguredTrackDepositInCaloTool(name = "TrackDepositInCaloTool") ToolSvc += TrackDepositInCaloTool -### Configure the loose CaloMuon tagger ### -from CaloTrkMuIdTools.CaloTrkMuIdToolsConf import CaloMuonTag as ConfiguredCaloMuonTag -CaloMuonTagLoose = ConfiguredCaloMuonTag(name = "CaloMuonTagLoose") -ToolSvc += CaloMuonTagLoose -print CaloMuonTagLoose - -### Configure CaloMuonTag (tight is default) ### -CaloMuonTag = ConfiguredCaloMuonTag(name = "CaloMuonTag") -ToolSvc += CaloMuonTag -print CaloMuonTag - ### Configure CaloMuonLikelihoodTool ### from CaloTrkMuIdTools.CaloTrkMuIdToolsConf import CaloMuonLikelihoodTool as ConfiguredCaloMuonLikelihoodTool CaloMuonLikelihoodTool = ConfiguredCaloMuonLikelihoodTool(TrackEnergyInCaloTool = TrackEnergyInCaloTool) diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCaloTagTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCaloTagTool.cxx index 107ca3060f8e397500ed8eb7e17cf1927d6faa1e..0d8e32d90bf2ed139b06e92052714eb5a1898620 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCaloTagTool.cxx +++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCaloTagTool.cxx @@ -49,8 +49,6 @@ namespace MuonCombined { m_nTracksTagged(0), m_nMuonsTagged(0), m_caloMuonLikelihood("CaloMuonLikelihoodTool/CaloMuonLikelihoodTool",this), - m_caloMuonTagLoose("CaloMuonTag/CaloMuonTagLoose"), - m_caloMuonTagTight("CaloMuonTag/CaloMuonTag"), m_trkDepositInCalo("TrackDepositInCaloTool/TrackDepositInCaloTool"), m_trackIsolationTool("xAOD::TrackIsolationTool"), m_trkSelTool("InDet::InDetDetailedTrackSelectorTool/CaloTrkMuIdAlgTrackSelectorTool") @@ -58,8 +56,7 @@ namespace MuonCombined { declareInterface<IMuonCombinedInDetExtensionTool>(this); declareInterface<IMuonCombinedTrigCaloTagExtensionTool>(this); - // --- Muon Dressing --- //declareProperty("CoreDeltaR", m_coreDR = 0.05 ); - //declareProperty("doMuonDressing", m_doDressing = true ); + // --- Muon Dressing --- declareProperty("doCosmicTrackSelection", m_doCosmicTrackSelection = false ); // --- Track Preselection Cuts --- @@ -75,8 +72,6 @@ namespace MuonCombined { declareProperty("EnergyIsoConeSize", m_energyIsoCone = 0.4 ); // --- Calorimeter ID Tools --- - declareProperty("CaloMuonTagLoose", m_caloMuonTagLoose ); - declareProperty("CaloMuonTagTight", m_caloMuonTagTight ); declareProperty("doCaloMuonTag", m_doCaloMuonTag = true ); declareProperty("doCaloLR", m_doCaloLR = true ); declareProperty("ShowTruth", m_doTruth = true); @@ -108,11 +103,6 @@ namespace MuonCombined { } // --- Get an Identifier helper object --- - //StoreGateSvc* detStore(0); - //if (service("DetectorStore", detStore).isFailure()) { - // msg(MSG::ERROR) << "Detector service not found !" << endmsg; - // return StatusCode::FAILURE; - //} if( m_doCaloLR ) ATH_CHECK( m_caloMuonLikelihood.retrieve() ); else m_caloMuonLikelihood.disable(); ATH_CHECK( m_caloMuonTagLoose.retrieve() ); @@ -169,14 +159,11 @@ namespace MuonCombined { const xAOD::CaloClusterContainer* caloClusterCont) { - //return; - // // --- Retrieve primary vertex (not retrieving for now) --- const Trk::Vertex* vertex = 0; -// const Trk::TrackParticleOrigin prtOrigin = Trk::TrackParticleOrigin::PriVtx; // we only consider trks form primary vtx // --- Big loop over all the particles in the container --- -//-- make sure CaloCellContainer is there + //-- make sure CaloCellContainer is there if (!caloCellCont){ ATH_MSG_VERBOSE("Called with no CaloCellContainer in argument"); } @@ -190,7 +177,6 @@ namespace MuonCombined { } // ensure that the id trackparticle has a track const Trk::Track* track = idTP->indetTrackParticle().track(); //->originalTrack() - //const xAOD::TrackParticle& tp = (*idTP).indetTrackParticle(); //->originalTrackParticle() const xAOD::TrackParticle* tp = &(*idTP).indetTrackParticle(); //->originalTrackParticle() if( !track ){ ATH_MSG_DEBUG("Particle with no track associated. Skipping this particle."); @@ -205,15 +191,10 @@ namespace MuonCombined { // --- Get pdgId (when requested) --- int pdgId = 0; -// bool truthMuon = false; ElementLink< xAOD::TruthParticleContainer > truthLink; - // const xAOD::TrackParticle* tp = ElementLink< xAOD::TruthParticleContainer > truthLink; if( tp->isAvailable< ElementLink< xAOD::TruthParticleContainer > > ("truthParticleLink") ){ truthLink = tp->auxdata< ElementLink< xAOD::TruthParticleContainer > >("truthParticleLink"); if(m_doTruth && truthLink.isValid()) { - // truthMuon = ( abs((*truthLink)->pdgId())==13 && ((*truthLink)->auxdata<int>("truthType") == 6 || - // (*truthLink)->auxdata<int>("truthType") == 7 ) && // prompt muon - // (*truthLink)->auxdata<int>("truthOrigin") > 0 && (*truthLink)->auxdata<int>("truthOrigin") <= 34 ); // no decay in flight pdgId = (*truthLink)->pdgId(); } else { @@ -222,7 +203,6 @@ namespace MuonCombined { } // --- Track selection --- -// if(!selectTrack(track, vertex)) continue; if(!selectTrack(track, vertex)){ // --- in debug mode, monitor the number of muons rejected by track selection --- @@ -287,7 +267,6 @@ namespace MuonCombined { // --- Count number of muons written to container if ( abs(pdgId) == 13 ) m_nMuonsTagged++; m_nTracksTagged++; -// delete trackParticle; } } //end of the extend method @@ -313,7 +292,6 @@ namespace MuonCombined { if (m_doTrkSelection) { bool result = (m_trkSelTool->decision(*trk, vertex)) && (trk->perigeeParameters()->momentum().mag()>2000); //;p()>2000); to check - //bool result = trk->perigeeParameters()->momentum().perp()>5000; //;p()>2000); to check if (!result&&m_showCutFlow) ATH_MSG_DEBUG("Track selection wrt primary vertex: Veto on this track"); @@ -335,7 +313,7 @@ namespace MuonCombined { bool MuonCaloTagTool::selectCosmic(const Trk::Track* ptcl) const{ // --- Only ask some hits with eta information --- - if(ptcl->perigeeParameters()->momentum().mag()>2000) //cl->p() < 2000) + if(ptcl->perigeeParameters()->momentum().mag()>2000) return false; const Trk::TrackSummary* trkSummary = ptcl->trackSummary(); if (trkSummary) { @@ -358,7 +336,6 @@ namespace MuonCombined { if( m_trackIsolationTool.empty() ) return true; - //std::vector<xAOD::Iso::IsolationType> ptcones = { xAOD::Iso::ptcone45 }; xAOD::TrackCorrection corrlist; corrlist.trackbitset.set(static_cast<unsigned int>(xAOD::Iso::IsolationTrackCorrection::coreTrackPtr)); std::vector<xAOD::Iso::IsolationType> ptcones = { xAOD::Iso::ptcone40 }; @@ -403,53 +380,6 @@ namespace MuonCombined { } - /* - //applyEnergyIsolation -> DON'T WORK with Trk::Track (require particle) - - bool MuonCaloTagTool::applyEnergyIsolation(const xAOD::IParticle* muon){ - - double eIso = m_muonIsolationTool->isolationEnergy(muon, m_energyIsoCone); - double eIsoRatio = -9999.; - double pt = muon->pt(); - double eta= muon->eta(); - if (eIso>0) { - if (pt>0) { - eIsoRatio = eIso/pt; - } - } - - double eIsoCut = 0; - double ratioCutEt = 0; - if( fabs(eta)<1.5 ) { - eIsoCut = m_eIsoBarrelCut; - ratioCutEt = m_eIsoPtRatioBarrelCut; - } - else if (fabs(eta) > 1.5 && fabs(eta) < 1.8) { - eIsoCut = m_eIsoTransitionCut; - ratioCutEt = m_eIsoPtRatioTransitionCut; - } - else { - eIsoCut = m_eIsoEndCapCut; - ratioCutEt = m_eIsoPtRatioEndCapCut; - } - - if (m_showCutFlow) { - ATH_MSG_DEBUG("Isolation Energy in " << m_energyIsoCone << " cone is: " << eIso << ", eta: " << eta << ", pt: " << pt); - ATH_MSG_DEBUG("Et Iso: " << eIso << " Et Iso over pt: " << eIsoRatio); - } - - if( eIso < eIsoCut && eIsoRatio < ratioCutEt ) { - if (m_showCutFlow) - ATH_MSG_DEBUG("EtIso and EtIso over pt cut passed."); - return true; - } - else - return false; - - } - */ - - void MuonCaloTagTool::createMuon(const InDetCandidate& muonCandidate, const std::vector<DepositInCalo>& deposits, int tag, float likelihood, InDetCandidateToTagMap* tagMap) const { @@ -472,8 +402,6 @@ namespace MuonCombined { caloTag->set_caloMuonIdTag(tag); caloTag->set_caloLRLikelihood(likelihood); -// eLoss = m_muonIsolationTool->summedCellEnergy(ptcl, m_coreDR); -// caloTag->set_etCore(eLoss); tagMap->addEntry(&muonCandidate,caloTag); } } diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCaloTagTool.h b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCaloTagTool.h index 43365efa914f7948f337850e59630a4d7791bd74..7031f81c703f180bb5b87072d4daaedfde39902e 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCaloTagTool.h +++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCaloTagTool.h @@ -12,14 +12,10 @@ #include "MuonCombinedEvent/InDetCandidateCollection.h" #include "MuonCombinedEvent/CaloTag.h" -//#include "AthenaBaseComps/AthAlgorithm.h" -//#include "StoreGate/DataHandle.h" - #include "xAODMuon/Muon.h" #include "xAODTracking/TrackParticle.h" #include "MuonCombinedEvent/InDetCandidate.h" #include "TrkParameters/TrackParameters.h" -// #include "IsolationTool/ITrackIsolationTool.h" #include "RecoToolInterfaces/ITrackIsolationTool.h" // - NEW @@ -69,12 +65,10 @@ namespace MuonCombined { void createMuon(const InDetCandidate & muonCandidate, const std::vector<DepositInCalo>& deposits, int tag, float likelihood, InDetCandidateToTagMap* tagMap) const; const Trk::TrackParameters* getTrackParameters(const Trk::Track* trk) const; - //bool applyEnergyIsolation(const xAOD::IParticle* muon); bool selectTrack(const Trk::Track* trk, const Trk::Vertex* vertex) const; bool selectCosmic(const Trk::Track* ptcl) const; bool applyTrackIsolation(const xAOD::TrackParticle& tp); void showTrackInfo(const Trk::TrackParameters* par) const; -// std::vector<DepositInCalo> getDeposits(const xAOD::TrackParticle* tp, const CaloCellContainer* caloCellCont) const; // --- StoreGate keys --- SG::ReadHandleKey<xAOD::CaloClusterContainer> m_caloClusterCont{this,"CaloClusters","CaloTopoCluster","calo cluster container"}; @@ -108,14 +102,13 @@ namespace MuonCombined { double m_eIsoPtRatioTransitionCut; //!< Energy isolation for a .45 cone in Barrel-EndCap transition region, normalized to track pt double m_eIsoPtRatioEndCapCut; //!< Energy isolation for a .45 cone in Endcap, normalized to track pt double m_CaloLRlikelihoodCut; //!< CaloLR likelihood cut - //double m_coreDR; //!< deltaR of the core double m_trackIsoCone; //!< Cone size for track isolation double m_energyIsoCone; //!< Cone size for energy isolation // --- CaloTrkMuIdTools --- ToolHandle<ICaloMuonLikelihoodTool> m_caloMuonLikelihood; //!< CaloTrkMuIdTools::CaloMuonLikelihoodTool - ToolHandle<ICaloMuonTag> m_caloMuonTagLoose; //!< CaloTrkMuIdTools::CaloMuonTag for loose tagging - ToolHandle<ICaloMuonTag> m_caloMuonTagTight; //!< CaloTrkMuIdTools::CaloMuonTag for tight tagging + ToolHandle<ICaloMuonTag> m_caloMuonTagLoose{this,"CaloMuonTagLoose","CaloMuonTag/CaloMuonTagLoose","CaloTrkMuIdTools::CaloMuonTag for loose tagging"}; + ToolHandle<ICaloMuonTag> m_caloMuonTagTight{this,"CaloMuonTagTight","CaloMuonTag/CaloMuonTag","CaloTrkMuIdTools::CaloMuonTag for tight tagging"}; ToolHandle<ITrackDepositInCaloTool> m_trkDepositInCalo; //!< CaloTrkMuIdTools::TrackDepositInCaloTool // --- External tools --- diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCaloTagTool.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCaloTagTool.py index ff5cbd17f747e9220e62dce6f1c4295c72b30c09..2b3d3de7b5bc9227e057e6e653a21527c2c9b811 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCaloTagTool.py +++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCaloTagTool.py @@ -37,21 +37,17 @@ def TrackEnergyInCaloTool( name ='TrackEnergyInCaloTool', **kwargs ): def TrackDepositInCaloTool( name ='TrackDepositInCaloTool', **kwargs ): return CfgMgr.TrackDepositInCaloTool(name,**kwargs) -def CaloMuonTagLoose( name='CaloMuonTagLoose', **kwargs ): - kwargs.setdefault("TagMode","Loose") - return CfgMgr.CaloMuonTag(name,**kwargs) - -### Configure CaloMuonTag (tight is default) ### -def CaloMuonTag( name='CaloMuonTag', **kwargs ): - return CfgMgr.CaloMuonTag(name,**kwargs) - def CaloMuonLikelihoodTool(name='CaloMuonLikelihoodTool', **kwargs ): kwargs.setdefault("TrackEnergyInCaloTool", getPublicTool("TrackEnergyInCaloTool") ) return CfgMgr.CaloMuonLikelihoodTool(name,**kwargs) def MuonCaloTagTool( name='MuonCaloTagTool', **kwargs ): - kwargs.setdefault("CaloMuonTagLoose", getPublicTool("CaloMuonTagLoose") ) - kwargs.setdefault("CaloMuonTagTight", getPublicTool("CaloMuonTag") ) + from CaloTrkMuIdTools.CaloTrkMuIdToolsConf import CaloMuonTag as ConfiguredCaloMuonTag + CaloMuonTagLoose = ConfiguredCaloMuonTag(name = "CaloMuonTagLoose") + CaloMuonTagLoose.TagMode="Loose" + CaloMuonTagTight = ConfiguredCaloMuonTag(name = "CaloMuonTag") + kwargs.setdefault("CaloMuonTagLoose", CaloMuonTagLoose ) + kwargs.setdefault("CaloMuonTagTight", CaloMuonTagTight ) kwargs.setdefault("CaloMuonLikelihoodTool", getPublicTool("CaloMuonLikelihoodTool") ) kwargs.setdefault("TrackDepositInCaloTool", getPublicTool("TrackDepositInCaloTool") ) kwargs.setdefault("TrackSelectorTool", getPublicTool("CaloTrkMuIdAlgTrackSelectorTool") ) diff --git a/Trigger/TrigAlgorithms/TrigMuSuperEF/python/TrigMuSuperEFConfig.py b/Trigger/TrigAlgorithms/TrigMuSuperEF/python/TrigMuSuperEFConfig.py index eb8ee20c04f34e15d4c16fc85dc28d34f92865e6..0f7a5a0314b6724bd88ef6f6ffd8c39b78028a72 100644 --- a/Trigger/TrigAlgorithms/TrigMuSuperEF/python/TrigMuSuperEFConfig.py +++ b/Trigger/TrigAlgorithms/TrigMuSuperEF/python/TrigMuSuperEFConfig.py @@ -254,10 +254,12 @@ class TrigMuSuperEFHypoConfig(TrigMuonEFCombinerHypoConfig): def TrigMuSuperEF_MuonCaloTagTool( name='OnlineMuonCaloTagTool', **kwargs ): - #from AthenaCommon.AppMgr import ToolSvc - #import TrigMuSuperEF.CombinedMuonTrackSummary_Trig - kwargs.setdefault("CaloMuonTagLoose", getPublicTool("CaloMuonTagLoose") ) - kwargs.setdefault("CaloMuonTagTight", getPublicTool("CaloMuonTag") ) + from CaloTrkMuIdTools.CaloTrkMuIdToolsConf import CaloMuonTag as ConfiguredCaloMuonTag + TrigMuSuperEF_CaloMuonTagLoose = ConfiguredCaloMuonTag(name = "TrigMuSuperEF_CaloMuonTagLoose") + TrigMuSuperEF_CaloMuonTagLoose.TagMode="Loose" + TrigMuSuperEF_CaloMuonTagTight = ConfiguredCaloMuonTag(name = "TrigMuSuperEF_CaloMuonTag") + kwargs.setdefault("CaloMuonTagLoose", TrigMuSuperEF_CaloMuonTagLoose ) + kwargs.setdefault("CaloMuonTagTight", TrigMuSuperEF_CaloMuonTagTight ) kwargs.setdefault("CaloMuonLikelihoodTool", getPublicTool("CaloMuonLikelihoodTool") ) kwargs.setdefault("TrackDepositInCaloTool", getPublicTool("TrigMuSuperEF_TrackDepositInCaloTool") ) kwargs.setdefault("TrackSelectorTool", getPublicTool("TrigMuSuperEF_CaloTrkSelectorTool") )