From ae4870d871f5f2a5405ed0d15bc9c01a8b36c9a6 Mon Sep 17 00:00:00 2001 From: Scott Snyder <scott.snyder@cern.ch> Date: Mon, 29 Aug 2016 20:51:30 +0200 Subject: [PATCH] 'Change some FP divisions by constants to multiplications.' (CaloTrkMuIdTools-00-15-14) * Tagging CaloTrkMuIdTools-00-15-14. * Change some FP divisions by constants to multiplications. * Tagging CaloTrkMuIdTools-00-15-13. * src/TrackDepositInCaloTool.cxx: clang warning fix: references cannot be null. * Tagging CaloTrkMuIdTools-00-15-12. * Comply with ATLAS naming conventions. * Tagging CaloTrkMuIdTools-00-15-11. * Fix compilation warnings. 2016-08-22 Jochen Meyer <Jochen.Meyer@cern.ch> * endreq -> endmsg * tag CaloTrkMuIdTools-00-15-10 2016-08-17 Yun Sang Chow * Configuration of CaloTag using histograms * CaloTrkMuIdTools-00-15-09 Former-commit-id: e1f39eada00127e54950aacff0d03ffd33e0ace3 --- .../CaloTrkMuIdTools/CMakeLists.txt | 3 +- .../CaloTrkMuIdTools/CaloMuonLikelihoodTool.h | 2 +- .../CaloTrkMuIdTools/CaloMuonTag.h | 145 ++--- .../CaloTrkMuIdTools/TrackDepositInCaloTool.h | 34 +- .../CaloTrkMuIdTools/cmt/requirements | 3 +- .../share/CaloMuonTag_Comm_jobOptions.py | 37 -- .../share/CaloTag.LooseCut.root | Bin 0 -> 5966 bytes .../share/CaloTag.TightCut.root | Bin 0 -> 5859 bytes .../share/CaloTrkMuIdTools_jobOptions.py | 13 +- .../src/CaloMuonLikelihoodTool.cxx | 109 ++-- .../CaloTrkMuIdTools/src/CaloMuonTag.cxx | 521 +++++++++--------- .../src/TrackDepositInCaloTool.cxx | 80 +-- 12 files changed, 436 insertions(+), 511 deletions(-) delete mode 100644 Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloMuonTag_Comm_jobOptions.py create mode 100644 Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTag.LooseCut.root create mode 100644 Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTag.TightCut.root diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CMakeLists.txt b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CMakeLists.txt index b16f7df0669..87a3e18decd 100644 --- a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CMakeLists.txt +++ b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CMakeLists.txt @@ -18,6 +18,7 @@ atlas_depends_on_subdirs( PUBLIC Reconstruction/RecoTools/RecoToolInterfaces Tracking/TrkExtrapolation/TrkExInterfaces PRIVATE + Control/AthenaKernel Calorimeter/CaloDetDescr Calorimeter/CaloGeoHelpers Calorimeter/CaloIdentifier @@ -44,5 +45,5 @@ atlas_add_component( CaloTrkMuIdTools # Install files from the package: atlas_install_headers( CaloTrkMuIdTools ) atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/CaloMuonLikelihood.PDF.A0.root share/CaloMuonLikelihood.PDF.A1.root share/CaloMuonLikelihood.PDF.A2.root share/CaloMuonLikelihood.PDF.B0.root share/CaloMuonLikelihood.PDF.B1.root share/CaloMuonLikelihood.PDF.B2.root share/CaloMuonLikelihood.PDF.C0.root share/CaloMuonLikelihood.PDF.C1.root share/CaloMuonLikelihood.PDF.C2.root ) +atlas_install_runtime( share/CaloMuonLikelihood.PDF.A0.root share/CaloMuonLikelihood.PDF.A1.root share/CaloMuonLikelihood.PDF.A2.root share/CaloMuonLikelihood.PDF.B0.root share/CaloMuonLikelihood.PDF.B1.root share/CaloMuonLikelihood.PDF.B2.root share/CaloMuonLikelihood.PDF.C0.root share/CaloMuonLikelihood.PDF.C1.root share/CaloMuonLikelihood.PDF.C2.root share/CaloTag.LooseCut.root share/CaloTag.TightCut.root) diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/CaloMuonLikelihoodTool.h b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/CaloMuonLikelihoodTool.h index 12baf5ecddd..6da8c4dacca 100644 --- a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/CaloMuonLikelihoodTool.h +++ b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/CaloMuonLikelihoodTool.h @@ -46,7 +46,7 @@ private: const TH1F* m_TH1F_bkg[9][11]; std::string m_TH1F_key[9][11]; int m_numKeys[9]; - mutable int cnt_warn; + mutable int m_cnt_warn; std::vector<std::string> m_fileNames; std::string m_caloClusterContainerName; diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/CaloMuonTag.h b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/CaloMuonTag.h index dd5fa066b08..9e3b0a230be 100755 --- a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/CaloMuonTag.h +++ b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/CaloMuonTag.h @@ -10,101 +10,68 @@ #include "AthenaBaseComps/AthAlgTool.h" #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/ToolHandle.h" +#include "GaudiKernel/ITHistSvc.h" +#include "GaudiKernel/ToolHandle.h" +class TFile; +class TH2F; class CaloMuonTag : public AthAlgTool, virtual public ICaloMuonTag { - /** @class CaloMuonTag - - Muon Tagger in the ATLAS calorimeter. - - This tagger is used in the CaloTrkMuId framework. After some basic preselection CaloTrkMuIdAlg - feeds a track to the TrackDepositInCaloTool. TrackDepositInCaloTool gathers the deposits that are found near that - track. This tool can tag a muon track from its deposits. - - Applies energy deposition veto cuts in all samplings and noise cuts in the last three layers of the hadronic calorimeter - (Tile and HEC). The following scale factors are applied to correct for the pathlength traversed in the calorimeter cells. - - \f$E_{\rm th} = \frac{E^{\mathrm{barrel}}_{0}}{\sin^2 \theta}\f$ for \f$|\eta|<1.7\f$ - \f$E_{\rm th} = \frac{E^{\rm end-cap}_{0}}{\ (1 - \sin \theta )^2}\f$ for \f$|\eta|>1.7\f$ - - There are three tags, determined by the acceptance: - - 0 not a muon, - - 1 muon in Last Calo Layer, - - 2 muon in Last-1 Calo Layer, - - 3 muon in Last-2 Calo Layer, - - @author Gustavo.Ordonez.Sanz <Gustavo.Ordonez.Sanz@cern.ch> - Marcel Raas <marcelra@cern.ch> (contact person) - */ - typedef std::pair<double, double> Range_t; - - public: - CaloMuonTag(const std::string& type, const std::string& name, const IInterface* pInterface); - virtual ~CaloMuonTag(); - - virtual StatusCode initialize(); - virtual StatusCode finalize(); - - int caloMuonTag(const std::vector<DepositInCalo>& deposits, double eta, double pt) const; //!< Returns the Tag + /** @class CaloMuonTag + + Muon Tagger in the ATLAS calorimeter. + + This tagger is used in the CaloTrkMuId framework. After some basic preselection CaloTrkMuIdAlg + feeds a track to the TrackDepositInCaloTool. TrackDepositInCaloTool gathers the deposits that are found near that + track. This tool can tag a muon track from its deposits. + + Applies energy deposition veto cuts in all samplings and noise cuts in the last three layers of the hadronic calorimeter + (Tile and HEC). The following scale factors are applied to correct for the pathlength traversed in the calorimeter cells. + + \f$E_{\rm th} = \frac{E^{\mathrm{barrel}}_{0}}{\sin^2 \theta}\f$ for \f$|\eta|<1.7\f$ + \f$E_{\rm th} = \frac{E^{\rm end-cap}_{0}}{\ (1 - \sin \theta )^2}\f$ for \f$|\eta|>1.7\f$ + + There are three tags, determined by the acceptance: + + 0 not a muon, + + 1 muon in Last Calo Layer, + + 2 muon in Last-1 Calo Layer, + + 3 muon in Last-2 Calo Layer, + + @author Gustavo.Ordonez.Sanz <Gustavo.Ordonez.Sanz@cern.ch> + Marcel Raas <marcelra@cern.ch> (contact person) + */ + +public: + + CaloMuonTag(const std::string& type, const std::string& name, const IInterface* pInterface); + virtual ~CaloMuonTag(); + virtual StatusCode initialize(); + virtual StatusCode finalize(); + int caloMuonTag(const std::vector<DepositInCalo>& deposits, double eta, double pt) const; //!< Returns the Tag private: - - double interpolate(Range_t cuts, double pt) const; - double m_ptMin; - double m_ptMax; - - Range_t m_emb1Veto; - Range_t m_emb2Veto; - Range_t m_emb3Veto; - - Range_t m_eme1Veto; - Range_t m_eme2Veto; - Range_t m_eme3Veto; - - Range_t m_tileBar0Sig; - Range_t m_tileBar1Sig; - Range_t m_tileBar2Sig; - - Range_t m_tileExt0Sig; - Range_t m_tileExt1Sig; - Range_t m_tileExt2Sig; - - Range_t m_tileBar0Veto; - Range_t m_tileBar1Veto; - Range_t m_tileBar2Veto; - - Range_t m_tileExt0Veto; - Range_t m_tileExt1Veto; - Range_t m_tileExt2Veto; - - Range_t m_tileBar0DiffLow; - Range_t m_tileBar1DiffLow; - Range_t m_tileBar2DiffLow; - - Range_t m_tileExt0DiffLow; - Range_t m_tileExt1DiffLow; - Range_t m_tileExt2DiffLow; - - Range_t m_hec0Veto; - Range_t m_hec1Veto; - Range_t m_hec2Veto; - Range_t m_hec3Veto; - - Range_t m_hec0Sig; - Range_t m_hec1Sig; - Range_t m_hec2Sig; - Range_t m_hec3Sig; - - mutable int m_numTagged; - mutable int m_numRejected; - -}; + double interpolate(std::string cutName, double pt) const; + int getPtBinLow(double pt) const; + int getCutBin(std::string cutName) const; + + TH2F* m_hist; + std::string m_fileNames; + ServiceHandle<ITHistSvc> m_histSvc; + + std::vector < std::string > m_vecCutNames; + std::vector < int > m_vecPtBins; + int m_numCuts; + int m_numPtBins; + + mutable int m_numTagged; + mutable int m_numRejected; + +}; - #endif diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/TrackDepositInCaloTool.h b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/TrackDepositInCaloTool.h index f805997be5f..619e271f5a5 100755 --- a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/TrackDepositInCaloTool.h +++ b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/CaloTrkMuIdTools/TrackDepositInCaloTool.h @@ -189,27 +189,27 @@ class TrackDepositInCaloTool: public AthAlgTool, virtual public ITrackDepositInC //mutable int m_stacks; //!< Counts the number of stacks (diagnoses indefinite recursion). // Histograms - TH1F* hDepositLayer12; - TH1F* hDepositLayer13; - TH1F* hDepositLayer14; + TH1F* m_hDepositLayer12; + TH1F* m_hDepositLayer13; + TH1F* m_hDepositLayer14; - TH2F* hParELossEta; - TH2F* hParELossSample; + TH2F* m_hParELossEta; + TH2F* m_hParELossSample; /////////////////////////////// - TH1F* hDeltaEtaLastPar; - TH1F* hDeltaRadiusLastPar; - TH1F* hDepositsInCore; - TH1F* hDepositsInCone; - TH2F* hDistDepositsTile; - TH2F* hDistDepositsHEC; + TH1F* m_hDeltaEtaLastPar; + TH1F* m_hDeltaRadiusLastPar; + TH1F* m_hDepositsInCore; + TH1F* m_hDepositsInCone; + TH2F* m_hDistDepositsTile; + TH2F* m_hDistDepositsHEC; - TH2F* hEMB1vsdPhi; - TH2F* hEMB2vsdPhi; - TH2F* hEMB3vsdPhi; - TH2F* hEMB1vsdEta; - TH2F* hEMB2vsdEta; - TH2F* hEMB3vsdEta; + TH2F* m_hEMB1vsdPhi; + TH2F* m_hEMB2vsdPhi; + TH2F* m_hEMB3vsdPhi; + TH2F* m_hEMB1vsdEta; + TH2F* m_hEMB2vsdEta; + TH2F* m_hEMB3vsdEta; }; diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/cmt/requirements b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/cmt/requirements index d3fad32a5f5..1c70fc858c0 100755 --- a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/cmt/requirements +++ b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/cmt/requirements @@ -18,6 +18,7 @@ use CaloEvent CaloEvent-* Calorimeter use xAODTracking xAODTracking-* Event/xAOD private +use AthenaKernel AthenaKernel-* Control use CaloGeoHelpers CaloGeoHelpers-* Calorimeter use AtlasCLHEP AtlasCLHEP-* External use CaloUtils CaloUtils-* Calorimeter @@ -40,7 +41,7 @@ apply_pattern component_library library CaloTrkMuIdTools *.cxx components/*.cxx apply_pattern declare_joboptions files="*.py" -apply_pattern declare_runtime files="CaloMuonLikelihood.PDF.A0.root CaloMuonLikelihood.PDF.A1.root CaloMuonLikelihood.PDF.A2.root CaloMuonLikelihood.PDF.B0.root CaloMuonLikelihood.PDF.B1.root CaloMuonLikelihood.PDF.B2.root CaloMuonLikelihood.PDF.C0.root CaloMuonLikelihood.PDF.C1.root CaloMuonLikelihood.PDF.C2.root" +apply_pattern declare_runtime files="CaloMuonLikelihood.PDF.A0.root CaloMuonLikelihood.PDF.A1.root CaloMuonLikelihood.PDF.A2.root CaloMuonLikelihood.PDF.B0.root CaloMuonLikelihood.PDF.B1.root CaloMuonLikelihood.PDF.B2.root CaloMuonLikelihood.PDF.C0.root CaloMuonLikelihood.PDF.C1.root CaloMuonLikelihood.PDF.C2.root CaloTag.TightCut.root CaloTag.LooseCut.root" #private #macro cppdebugflags '$(cppdebugflags_s)' diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloMuonTag_Comm_jobOptions.py b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloMuonTag_Comm_jobOptions.py deleted file mode 100644 index 45b2f1c98f3..00000000000 --- a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloMuonTag_Comm_jobOptions.py +++ /dev/null @@ -1,37 +0,0 @@ -include.block("CaloTag_Comm_jobOptions.py") - -CaloMuonTagLoose.ptMin = 15000 -CaloMuonTagLoose.ptMax = 35000 -CaloMuonTagLoose.emb1Veto = ( 400, 800 ) -CaloMuonTagLoose.emb2Veto = ( 700, 1400 ) -CaloMuonTagLoose.emb3Veto = ( 500, 600 ) -CaloMuonTagLoose.eme1Veto = ( 1100, 1300 ) -CaloMuonTagLoose.eme2Veto = ( 2200, 2100 ) -CaloMuonTagLoose.eme3Veto = ( 1100, 1100 ) -CaloMuonTagLoose.tileBar0Sig = ( 0, -400 ) -CaloMuonTagLoose.tileBar1Sig = ( 100, -1500 ) -CaloMuonTagLoose.tileBar2Sig = ( 0, -400 ) -CaloMuonTagLoose.tileExt0Sig = ( -50, -500 ) -CaloMuonTagLoose.tileExt1Sig = ( 200, -600 ) -CaloMuonTagLoose.tileExt2Sig = ( 150, -1200 ) -CaloMuonTagLoose.tileBar0Veto = ( 3500, 8000 ) -CaloMuonTagLoose.tileBar1Veto = ( 3500, 8000 ) -CaloMuonTagLoose.tileBar2Veto = ( 3500, 8000 ) -CaloMuonTagLoose.tileExt0Veto = ( 3000, 7000 ) -CaloMuonTagLoose.tileExt1Veto = ( 3500, 9000 ) -CaloMuonTagLoose.tileExt2Veto = ( 3500, 9000 ) -CaloMuonTagLoose.tileBar0DiffLow = (-400, -1100 ) -CaloMuonTagLoose.tileBar1DiffLow = (-650, -1300 ) -CaloMuonTagLoose.tileBar2DiffLow = (-400, -1100 ) -CaloMuonTagLoose.tileExt0DiffLow = (-600, -1100 ) -CaloMuonTagLoose.tileExt1DiffLow = (-600, -1500 ) -CaloMuonTagLoose.tileExt2DiffLow = (-600, -1600 ) -CaloMuonTagLoose.hec0Veto = (2500, 9000 ) -CaloMuonTagLoose.hec1Veto = (3000, 9000 ) -CaloMuonTagLoose.hec2Veto = (3000, 9000 ) -CaloMuonTagLoose.hec3Veto = (3000, 9000 ) -CaloMuonTagLoose.hec0Sig = (-50, -1100 ) -CaloMuonTagLoose.hec1Sig = (-50, -1100 ) -CaloMuonTagLoose.hec2Sig = (0, -1100 ) -CaloMuonTagLoose.hec3Sig = (150, -1100 ) - diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTag.LooseCut.root b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTag.LooseCut.root new file mode 100644 index 0000000000000000000000000000000000000000..24de2461431a694e227c562feea16693ba285e90 GIT binary patch literal 5966 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 R|6|H|j40%4p8N@b{{UyiC9wbi literal 0 HcmV?d00001 diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTag.TightCut.root b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTag.TightCut.root new file mode 100644 index 0000000000000000000000000000000000000000..4f0ac1d351ec50cfc053962ea51e0ec9d6688837 GIT binary patch literal 5859 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 Prkux!LIL*`%>?`h8qfO# literal 0 HcmV?d00001 diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTrkMuIdTools_jobOptions.py b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTrkMuIdTools_jobOptions.py index 3b8cb7c152b..d3d65efa748 100755 --- a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTrkMuIdTools_jobOptions.py +++ b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/share/CaloTrkMuIdTools_jobOptions.py @@ -12,6 +12,7 @@ from AthenaCommon.Logging import log ############################################################################### # Finds the root file @rootFileName and creates a one-item list for THistSvc.Input ############################################################################### + def defineCaloLhrPdf(rootFileName, streamName=""): import os from AthenaCommon.Utils.unixtools import FindFile @@ -25,7 +26,12 @@ def defineCaloLhrPdf(rootFileName, streamName=""): else: raise ValueError("in CaloTrkMuIdTools_jobOptions.py: defineCaloLhrPdf(...): rootFileName: " + rootFileName + " is not an expected value (should be CaloMuonLikelihood.PDF.xx.root).") return [streamName + " DATAFILE='" + str(rootFile) + "' TYP='ROOT' OPT='READ'"] - + +def defineCaloTagCut(rootFileName, streamName="CaloTag"): + import os + from AthenaCommon.Utils.unixtools import FindFile + rootFile = FindFile(filename=rootFileName, pathlist=os.environ['DATAPATH'].split(os.pathsep), access=os.R_OK) + return [streamName + " DATAFILE='" + str(rootFile) + "' TYP='ROOT' OPT='READ'"] ############################################################################### ## jobOptions ############################################################################### @@ -74,6 +80,8 @@ if athenaCommonFlags.isOnline == False: ServiceMgr.THistSvc.Input += defineCaloLhrPdf("CaloMuonLikelihood.PDF.C0.root"); ### PDFs for endcap region low pT ServiceMgr.THistSvc.Input += defineCaloLhrPdf("CaloMuonLikelihood.PDF.C1.root"); ### PDFs for endcap region medium pT ServiceMgr.THistSvc.Input += defineCaloLhrPdf("CaloMuonLikelihood.PDF.C2.root"); ### PDFs for endcap region high pT + ServiceMgr.THistSvc.Input += defineCaloTagCut("CaloTag.LooseCut.root","CaloTagLoose"); ### Cut definition for CaloTag (Loose) + ServiceMgr.THistSvc.Input += defineCaloTagCut("CaloTag.TightCut.root","CaloTagTight"); ### Cut definition for CaloTag (Tight) ### Configure TrackEnergyInCaloTool ### from CaloTrkMuIdTools.CaloTrkMuIdToolsConf import TrackEnergyInCaloTool as ConfiguredTrackEnergyInCaloTool @@ -89,9 +97,6 @@ ToolSvc += TrackDepositInCaloTool from CaloTrkMuIdTools.CaloTrkMuIdToolsConf import CaloMuonTag as ConfiguredCaloMuonTag CaloMuonTagLoose = ConfiguredCaloMuonTag(name = "CaloMuonTagLoose") ToolSvc += CaloMuonTagLoose - -### Sets loose cuts for CaloMuonTagLoose ### -include("CaloTrkMuIdTools/CaloMuonTag_Comm_jobOptions.py") print CaloMuonTagLoose ### Configure CaloMuonTag (tight is default) ### diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/CaloMuonLikelihoodTool.cxx b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/CaloMuonLikelihoodTool.cxx index 14dee254bbc..d4bcde350ea 100644 --- a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/CaloMuonLikelihoodTool.cxx +++ b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/CaloMuonLikelihoodTool.cxx @@ -5,7 +5,6 @@ #include "CaloTrkMuIdTools/CaloMuonLikelihoodTool.h" #include "xAODCaloEvent/CaloCluster.h" -#include "CLHEP/Units/SystemOfUnits.h" #include "GaudiKernel/ISvcLocator.h" #include "GaudiKernel/IToolSvc.h" #include "GaudiKernel/ListItem.h" @@ -13,6 +12,7 @@ #include "GaudiKernel/Algorithm.h" #include "PathResolver/PathResolver.h" #include "CaloIdentifier/CaloCell_ID.h" +#include "AthenaKernel/Units.h" ///////////for re_obtain// //#include "GaudiKernel/ITHistSvc.h" @@ -27,6 +27,9 @@ #include <map> +namespace Units = Athena::Units; + + /////////////////////////////////////////////////////////////////////////////// // CaloMuonLikelihoodTool constructor /////////////////////////////////////////////////////////////////////////////// @@ -95,7 +98,7 @@ StatusCode sc; ITHistSvc *tHistSvc; sc = service("THistSvc", tHistSvc); if ( sc.isFailure() ) { - report << MSG::ERROR << "Unable to retrieve pointer to THistSvc" << endreq; + report << MSG::ERROR << "Unable to retrieve pointer to THistSvc" << endmsg; return sc; } @@ -273,7 +276,7 @@ StatusCode CaloMuonLikelihoodTool::retrieveHistograms() { } - cnt_warn = 0; + m_cnt_warn = 0; return StatusCode::SUCCESS; } @@ -460,14 +463,14 @@ double CaloMuonLikelihoodTool::getLHR(const xAOD::CaloClusterContainer* ClusColl << "\n ehec3: " << s[20] << "\n efcal0: " << s[21] << "\n efcal1: " << s[22] - << "\n efcal2: " << s[23] << endreq; + << "\n efcal2: " << s[23] << endmsg; } - // CLHEP::MeV to CLHEP::GeV - for(int i=0;i<24;++i) s[i] /= CLHEP::GeV; - etot_em /= CLHEP::GeV; - etot_hd /= CLHEP::GeV; - etot /= CLHEP::GeV; + // CLHEP::MeV to Units::GeV + for(int i=0;i<24;++i) s[i] /= Units::GeV; + etot_em /= Units::GeV; + etot_hd /= Units::GeV; + etot /= Units::GeV; double tmp_mx(-999), tmp_mxH(-999), tmp_mxE(-999); for (int i=0; i<24; ++i) { @@ -495,7 +498,7 @@ double CaloMuonLikelihoodTool::getLHR(const xAOD::CaloClusterContainer* ClusColl // p_trk in MeV if (p_trk) - EoverEtrk = etot/(p_trk/CLHEP::GeV); + EoverEtrk = etot/(p_trk/Units::GeV); if(etot_em>0) { eemb3_wrtGroup = s[3]/etot_em; @@ -537,7 +540,7 @@ double CaloMuonLikelihoodTool::getLHR(const xAOD::CaloClusterContainer* ClusColl if(fabs(eta_trk)<1.4) { - if(p_trk/CLHEP::GeV<11.) { + if(p_trk/Units::GeV<11.) { m_h_EoverEtrk_11B->Fill(EoverEtrk, 1.); m_h_eemb1_wrtTotal_11B->Fill(eemb1_wrtTotal, 1.); m_h_eemb2_wrtTotal_11B->Fill(eemb2_wrtTotal, 1.); @@ -549,52 +552,52 @@ double CaloMuonLikelihoodTool::getLHR(const xAOD::CaloClusterContainer* ClusColl m_h_mxEM_11B->Fill(mxEM, 1.); m_h_mxFr_11B->Fill(mxFr, 1.); m_h_mxHad_11B->Fill(mxHad, 1.); - report << MSG::DEBUG << "EoverEtrk_11B ="<< EoverEtrk << endreq; - report << MSG::DEBUG << "p_trk/GeV_11B ="<< p_trk/CLHEP::GeV << endreq; - report << MSG::DEBUG << "eta_trk_11B ="<< eta_trk << endreq; + report << MSG::DEBUG << "EoverEtrk_11B ="<< EoverEtrk << endmsg; + report << MSG::DEBUG << "p_trk/GeV_11B ="<< p_trk/Units::GeV << endmsg; + report << MSG::DEBUG << "eta_trk_11B ="<< eta_trk << endmsg; } - else if(p_trk/CLHEP::GeV<51.) { + else if(p_trk/Units::GeV<51.) { m_h_EoverEtrk_51B->Fill(EoverEtrk, 1.); - report << MSG::DEBUG << "EoverEtrk_51B ="<< EoverEtrk << endreq; - report << MSG::DEBUG << "p_trk/GeV_51B ="<< p_trk/CLHEP::GeV << endreq; - report << MSG::DEBUG << "eta_trk_51B ="<< eta_trk << endreq; + report << MSG::DEBUG << "EoverEtrk_51B ="<< EoverEtrk << endmsg; + report << MSG::DEBUG << "p_trk/GeV_51B ="<< p_trk/Units::GeV << endmsg; + report << MSG::DEBUG << "eta_trk_51B ="<< eta_trk << endmsg; } else { m_h_EoverEtrk_101B->Fill(EoverEtrk, 1.); - report << MSG::DEBUG << "EoverEtrk_101B ="<< EoverEtrk << endreq; - report << MSG::DEBUG << "p_trk/GeV_101B ="<< p_trk/CLHEP::GeV << endreq; - report << MSG::DEBUG << "eta_trk_101B ="<< eta_trk << endreq; + report << MSG::DEBUG << "EoverEtrk_101B ="<< EoverEtrk << endmsg; + report << MSG::DEBUG << "p_trk/GeV_101B ="<< p_trk/Units::GeV << endmsg; + report << MSG::DEBUG << "eta_trk_101B ="<< eta_trk << endmsg; } } else if(fabs(eta_trk)>=1.4&&fabs(eta_trk)<=1.6) { - if(p_trk/CLHEP::GeV<11.){ + if(p_trk/Units::GeV<11.){ m_h_EoverEtrk_11C->Fill(EoverEtrk, 1.); m_h_eeme1_wrtTotal_11C->Fill(eeme1_wrtTotal, 1.); m_h_eeme2_wrtTotal_11C->Fill(eeme2_wrtTotal, 1.); m_h_emFr_11C->Fill(emFr, 1.); m_h_mxEM_11C->Fill(mxEM, 1.); m_h_mxHad_11C->Fill(mxHad, 1.); - report << MSG::DEBUG << "EoverEtrk_11C ="<< EoverEtrk << endreq; - report << MSG::DEBUG << "p_trk/GeV_11C ="<< p_trk/CLHEP::GeV << endreq; - report << MSG::DEBUG << "eta_trk_11C ="<< eta_trk << endreq; + report << MSG::DEBUG << "EoverEtrk_11C ="<< EoverEtrk << endmsg; + report << MSG::DEBUG << "p_trk/GeV_11C ="<< p_trk/Units::GeV << endmsg; + report << MSG::DEBUG << "eta_trk_11C ="<< eta_trk << endmsg; } - else if(p_trk/CLHEP::GeV<51.){ + else if(p_trk/Units::GeV<51.){ m_h_EoverEtrk_51C->Fill(EoverEtrk, 1.); - report << MSG::DEBUG << "EoverEtrk_51C ="<< EoverEtrk << endreq; - report << MSG::DEBUG << "p_trk/GeV_51C ="<< p_trk/CLHEP::GeV << endreq; - report << MSG::DEBUG << "eta_trk_51C ="<< eta_trk << endreq; + report << MSG::DEBUG << "EoverEtrk_51C ="<< EoverEtrk << endmsg; + report << MSG::DEBUG << "p_trk/GeV_51C ="<< p_trk/Units::GeV << endmsg; + report << MSG::DEBUG << "eta_trk_51C ="<< eta_trk << endmsg; } else { m_h_EoverEtrk_101C->Fill(EoverEtrk, 1.); - report << MSG::DEBUG << "EoverEtrk_101C ="<< EoverEtrk << endreq; - report << MSG::DEBUG << "p_trk/GeV_101C ="<< p_trk/CLHEP::GeV << endreq; - report << MSG::DEBUG << "eta_trk_101C ="<< eta_trk << endreq; + report << MSG::DEBUG << "EoverEtrk_101C ="<< EoverEtrk << endmsg; + report << MSG::DEBUG << "p_trk/GeV_101C ="<< p_trk/Units::GeV << endmsg; + report << MSG::DEBUG << "eta_trk_101C ="<< eta_trk << endmsg; } } else if(fabs(eta_trk)>1.6&&fabs(eta_trk)<2.5) { - if(p_trk/CLHEP::GeV<11.){ + if(p_trk/Units::GeV<11.){ m_h_EoverEtrk_11E->Fill(EoverEtrk, 1.); m_h_eeme1_wrtGroup_11E->Fill(eeme1_wrtGroup, 1.); m_h_eeme2_wrtTotal_11E->Fill(eeme2_wrtTotal, 1.); @@ -604,15 +607,15 @@ double CaloMuonLikelihoodTool::getLHR(const xAOD::CaloClusterContainer* ClusColl m_h_mxEM_11E->Fill(mxEM, 1.); m_h_mxFr_11E->Fill(mxFr, 1.); m_h_mxHad_11E->Fill(mxHad, 1.); - report << MSG::DEBUG << "EoverEtrk_11E ="<< EoverEtrk << endreq; - report << MSG::DEBUG << "p_trk/GeV_11E ="<< p_trk/CLHEP::GeV << endreq; - report << MSG::DEBUG << "eta_trk_11E ="<< eta_trk << endreq; + report << MSG::DEBUG << "EoverEtrk_11E ="<< EoverEtrk << endmsg; + report << MSG::DEBUG << "p_trk/GeV_11E ="<< p_trk/Units::GeV << endmsg; + report << MSG::DEBUG << "eta_trk_11E ="<< eta_trk << endmsg; } - else if(p_trk/CLHEP::GeV<51.){ + else if(p_trk/Units::GeV<51.){ m_h_EoverEtrk_51E->Fill(EoverEtrk, 1.); - report << MSG::DEBUG << "EoverEtrk_51E ="<< EoverEtrk << endreq; - report << MSG::DEBUG << "p_trk/GeV_51E ="<< p_trk/CLHEP::GeV << endreq; - report << MSG::DEBUG << "eta_trk_51E ="<< eta_trk << endreq; + report << MSG::DEBUG << "EoverEtrk_51E ="<< EoverEtrk << endmsg; + report << MSG::DEBUG << "p_trk/GeV_51E ="<< p_trk/Units::GeV << endmsg; + report << MSG::DEBUG << "eta_trk_51E ="<< eta_trk << endmsg; } else { m_h_EoverEtrk_101E->Fill(EoverEtrk, 1.); @@ -624,9 +627,9 @@ double CaloMuonLikelihoodTool::getLHR(const xAOD::CaloClusterContainer* ClusColl m_h_mxEM_101E->Fill(mxEM, 1.); m_h_mxFr_101E->Fill(mxFr, 1.); m_h_mxHad_101E->Fill(mxHad, 1.); - report << MSG::DEBUG << "EoverEtrk_101E ="<< EoverEtrk << endreq; - report << MSG::DEBUG << "p_trk/GeV_101E ="<< p_trk/CLHEP::GeV << endreq; - report << MSG::DEBUG << "eta_trk_101E ="<< eta_trk << endreq; + report << MSG::DEBUG << "EoverEtrk_101E ="<< EoverEtrk << endmsg; + report << MSG::DEBUG << "p_trk/GeV_101E ="<< p_trk/Units::GeV << endmsg; + report << MSG::DEBUG << "eta_trk_101E ="<< eta_trk << endmsg; } } ///////////////////filling end////////nesli end///////////////// @@ -638,18 +641,18 @@ double CaloMuonLikelihoodTool::getLHR(const xAOD::CaloClusterContainer* ClusColl int iFile = -1; if(fabs(eta_trk)<1.4) { - if(p_trk/CLHEP::GeV<11.) iFile = 0; - else if(p_trk/CLHEP::GeV<51.) iFile = 1; + if(p_trk/Units::GeV<11.) iFile = 0; + else if(p_trk/Units::GeV<51.) iFile = 1; else iFile = 2; } else if(fabs(eta_trk)>=1.4&&fabs(eta_trk)<=1.6) { - if(p_trk/CLHEP::GeV<11.) iFile = 3; - else if(p_trk/CLHEP::GeV<51.) iFile = 4; + if(p_trk/Units::GeV<11.) iFile = 3; + else if(p_trk/Units::GeV<51.) iFile = 4; else iFile = 5; } else if(fabs(eta_trk)>1.6&&fabs(eta_trk)<2.5) { - if(p_trk/CLHEP::GeV<11.) iFile = 6; - else if(p_trk/CLHEP::GeV<51.) iFile = 7; + if(p_trk/Units::GeV<11.) iFile = 6; + else if(p_trk/Units::GeV<51.) iFile = 7; else iFile = 8; } @@ -683,7 +686,7 @@ double CaloMuonLikelihoodTool::getLHR(const xAOD::CaloClusterContainer* ClusColl if(SbinContent) ProbS *= SbinContent; //else - // report << MSG::DEBUG << " BinContent in m_TH1F_sig is 0 and will not be used! "<<ProbS<<endreq; + // report << MSG::DEBUG << " BinContent in m_TH1F_sig is 0 and will not be used! "<<ProbS<<endmsg; /// nesli /// modified 11.03.08//////// else { ProbS *= 0.0000001; @@ -709,7 +712,7 @@ double CaloMuonLikelihoodTool::getLHR(const xAOD::CaloClusterContainer* ClusColl if(BbinContent) ProbB *= BbinContent; //else - // report << MSG::VERBOSE << " BinContent in m_TH1F_bkg is 0 and will not be used! "<<ProbS<<endreq; + // report << MSG::VERBOSE << " BinContent in m_TH1F_bkg is 0 and will not be used! "<<ProbS<<endmsg; /// nesli///modified 07.03.08////// else { ProbB *= 0.0000001; @@ -723,9 +726,9 @@ double CaloMuonLikelihoodTool::getLHR(const xAOD::CaloClusterContainer* ClusColl ATH_MSG_DEBUG(" Temp ProbB: " << ProbB); } else { - if(cnt_warn<10) { + if(m_cnt_warn<10) { ATH_MSG_WARNING("Histogram variable <" << m_TH1F_key[iFile][i] << "> in file <" << m_fileNames[iFile] << "> is not found in the calculated variable list"); - cnt_warn++; + m_cnt_warn++; } } } diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/CaloMuonTag.cxx b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/CaloMuonTag.cxx index 0c82a51d0e0..92ab56a2875 100755 --- a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/CaloMuonTag.cxx +++ b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/CaloMuonTag.cxx @@ -3,58 +3,31 @@ */ #include "CaloTrkMuIdTools/CaloMuonTag.h" - +#include "GaudiKernel/ISvcLocator.h" +#include "GaudiKernel/IToolSvc.h" +#include "GaudiKernel/ListItem.h" +#include "GaudiKernel/AlgTool.h" +#include "GaudiKernel/Algorithm.h" #include "StoreGate/StoreGateSvc.h" +#include "TFile.h" +#include "TH2F.h" /////////////////////////////////////////////////////////////////////////////// // Constructor /////////////////////////////////////////////////////////////////////////////// -CaloMuonTag::CaloMuonTag( const std::string& type, const std::string& name, const IInterface* pInterface): - AthAlgTool(type, name, pInterface), - m_numTagged(0), - m_numRejected(0) +CaloMuonTag::CaloMuonTag(const std::string& type, const std::string& name, const IInterface* pInterface) : +AthAlgTool(type, name, pInterface), +m_hist(0), +m_histSvc("THistSvc/THistSvc", name), +m_numCuts(0), +m_numPtBins(0), +m_numTagged(0), +m_numRejected(0) { - declareInterface<ICaloMuonTag>(this); - - declareProperty("ptMin", m_ptMin = 15000 ); - declareProperty("ptMax", m_ptMax = 35000 ); - - declareProperty("emb1Veto", m_emb1Veto = Range_t( 200, 600 ) ); - declareProperty("emb2Veto", m_emb2Veto = Range_t( 500, 1000 ) ); - declareProperty("emb3Veto", m_emb3Veto = Range_t( 300, 400 ) ); - declareProperty("eme1Veto", m_eme1Veto = Range_t( 900, 900 ) ); - declareProperty("eme2Veto", m_eme2Veto = Range_t( 1900, 1900 ) ); - declareProperty("eme3Veto", m_eme3Veto = Range_t( 900, 900 ) ); - declareProperty("tileBar0Sig", m_tileBar0Sig = Range_t( 80, -200 ) ); - declareProperty("tileBar1Sig", m_tileBar1Sig = Range_t( 500, -1000 ) ); - declareProperty("tileBar2Sig", m_tileBar2Sig = Range_t( 80, -200 ) ); - declareProperty("tileExt0Sig", m_tileExt0Sig = Range_t( 0, -300 ) ); - declareProperty("tileExt1Sig", m_tileExt1Sig = Range_t( 500, -400 ) ); - declareProperty("tileExt2Sig", m_tileExt2Sig = Range_t( 250, -1000 ) ); - declareProperty("tileBar0Veto", m_tileBar0Veto = Range_t( 2500, 7000 ) ); - declareProperty("tileBar1Veto", m_tileBar1Veto = Range_t( 2500, 7000 ) ); - declareProperty("tileBar2Veto", m_tileBar2Veto = Range_t( 2500, 7000 ) ); - declareProperty("tileExt0Veto", m_tileExt0Veto = Range_t( 2000, 6000 ) ); - declareProperty("tileExt1Veto", m_tileExt1Veto = Range_t( 2500, 8000 ) ); - declareProperty("tileExt2Veto", m_tileExt2Veto = Range_t( 2500, 8000 ) ); - declareProperty("tileBar0DiffLow", m_tileBar0DiffLow = Range_t(-300, -1000 ) ); - declareProperty("tileBar1DiffLow", m_tileBar1DiffLow = Range_t(-550, -1200 ) ); - declareProperty("tileBar2DiffLow", m_tileBar2DiffLow = Range_t(-300, -1000 ) ); - declareProperty("tileExt0DiffLow", m_tileExt0DiffLow = Range_t(-500, -1000 ) ); - declareProperty("tileExt1DiffLow", m_tileExt1DiffLow = Range_t(-500, -1200 ) ); - declareProperty("tileExt2DiffLow", m_tileExt2DiffLow = Range_t(-500, -1500 ) ); - declareProperty("hec0Veto", m_hec0Veto = Range_t(1500, 8000 ) ); - declareProperty("hec1Veto", m_hec1Veto = Range_t(2000, 8000 ) ); - declareProperty("hec2Veto", m_hec2Veto = Range_t(2000, 8000 ) ); - declareProperty("hec3Veto", m_hec3Veto = Range_t(2000, 8000 ) ); - declareProperty("hec0Sig", m_hec0Sig = Range_t(0, -1000 ) ); - declareProperty("hec1Sig", m_hec1Sig = Range_t(0, -1000 ) ); - declareProperty("hec2Sig", m_hec2Sig = Range_t(100, -1000 ) ); - declareProperty("hec3Sig", m_hec3Sig = Range_t(250, -1000 ) ); - + declareInterface<ICaloMuonTag>(this); + declareProperty("RootFileNames", m_fileNames = "/CaloTagTight/"); } - /////////////////////////////////////////////////////////////////////////////// // Destructor /////////////////////////////////////////////////////////////////////////////// @@ -65,51 +38,43 @@ CaloMuonTag::~CaloMuonTag(){} /////////////////////////////////////////////////////////////////////////////// StatusCode CaloMuonTag::initialize() { -/* if (AlgTool::initialize().isFailure()) { - msg(MSG::ERROR) << "AlgTool couldn't be initialized!" << endreq; - return StatusCode::FAILURE; - } */ - - if (msgLvl(MSG::VERBOSE)) { - msg(MSG::VERBOSE) << "Initializing CaloMuonTag " << name() << " with configuration (cutName:lowPtCut,highPtCut):" - << "\nemb1Veto : " << m_emb1Veto.first << ", " << m_emb1Veto.second - << "\nemb2Veto : " << m_emb2Veto.first << ", " << m_emb2Veto.second - << "\nemb3Veto : " << m_emb3Veto.first << ", " << m_emb3Veto.second - << "\neme1Veto : " << m_eme1Veto.first << ", " << m_eme1Veto.second - << "\neme2Veto : " << m_eme2Veto.first << ", " << m_eme2Veto.second - << "\neme3Veto : " << m_eme3Veto.first << ", " << m_eme3Veto.second - << "\ntileBar0Sig : " << m_tileBar0Sig.first << ", " << m_tileBar0Sig.second - << "\ntileBar1Sig : " << m_tileBar1Sig.first << ", " << m_tileBar1Sig.second - << "\ntileBar2Sig : " << m_tileBar2Sig.first << ", " << m_tileBar2Sig.second - << "\ntileExt0Sig : " << m_tileExt0Sig.first << ", " << m_tileExt0Sig.second - << "\ntileExt1Sig : " << m_tileExt1Sig.first << ", " << m_tileExt1Sig.second - << "\ntileExt2Sig : " << m_tileExt2Sig.first << ", " << m_tileExt2Sig.second - << "\ntileBar0Veto : " << m_tileBar0Veto.first << ", " << m_tileBar0Veto.second - << "\ntileBar1Veto : " << m_tileBar1Veto.first << ", " << m_tileBar1Veto.second - << "\ntileBar2Veto : " << m_tileBar2Veto.first << ", " << m_tileBar2Veto.second - << "\ntileExt0Veto : " << m_tileExt0Veto.first << ", " << m_tileExt0Veto.second - << "\ntileExt1Veto : " << m_tileExt1Veto.first << ", " << m_tileExt1Veto.second - << "\ntileExt2Veto : " << m_tileExt2Veto.first << ", " << m_tileExt2Veto.second - << "\ntileBar0DiffLow : " << m_tileBar0DiffLow.first << ", " << m_tileBar0DiffLow.second - << "\ntileBar1DiffLow : " << m_tileBar1DiffLow.first << ", " << m_tileBar1DiffLow.second - << "\ntileBar2DiffLow : " << m_tileBar2DiffLow.first << ", " << m_tileBar2DiffLow.second - << "\ntileExt0DiffLow : " << m_tileExt0DiffLow.first << ", " << m_tileExt0DiffLow.second - << "\ntileExt1DiffLow : " << m_tileExt1DiffLow.first << ", " << m_tileExt1DiffLow.second - << "\ntileExt2DiffLow : " << m_tileExt2DiffLow.first << ", " << m_tileExt2DiffLow.second - << "\nhec0Veto : " << m_hec0Veto.first << ", " << m_hec0Veto.second - << "\nhec1Veto : " << m_hec1Veto.first << ", " << m_hec1Veto.second - << "\nhec2Veto : " << m_hec2Veto.first << ", " << m_hec2Veto.second - << "\nhec3Veto : " << m_hec3Veto.first << ", " << m_hec3Veto.second - << "\nhec0Sig : " << m_hec0Sig.first << ", " << m_hec0Sig.second - << "\nhec1Sig : " << m_hec1Sig.first << ", " << m_hec1Sig.second - << "\nhec2Sig : " << m_hec2Sig.first << ", " << m_hec2Sig.second - << "\nhec3Sig : " << m_hec3Sig.first << ", " << m_hec3Sig.second - << "\nLow pT threshold = " << m_ptMin - << "\nHigh pT threshold = " << m_ptMax << endreq; - } + /* if (AlgTool::initialize().isFailure()) { + msg(MSG::ERROR) << "AlgTool couldn't be initialized!" << endmsg; + return StatusCode::FAILURE; + } */ - ATH_MSG_DEBUG("initialize() successful in " << name()); - return StatusCode::SUCCESS; + // Retrieve histogram + const std::string& fileName = m_fileNames; + TList histList; + if (m_histSvc->getTHists(fileName, histList).isFailure()) { + ATH_MSG_FATAL("Could not retrieve histogram stream" << fileName); + return StatusCode::FAILURE; + } + m_hist = dynamic_cast<TH2F*>(histList.At(0)); + if (!m_hist) { + ATH_MSG_FATAL("Could not retrieve histograms"); + return StatusCode::FAILURE; + } + // Read cut names from histogram + m_numCuts = m_hist->GetYaxis()->GetNbins(); + if (m_numCuts == 0) { + ATH_MSG_FATAL("Histogram number of cuts invalid"); + return StatusCode::FAILURE; + } + for (int i = 0; i <= m_numCuts; i++){ + m_vecCutNames.push_back(m_hist->GetYaxis()->GetBinLabel(i)); + } + // Read pt bins from histogram + m_numPtBins = m_hist->GetXaxis()->GetNbins(); + if (m_numPtBins == 0) { + ATH_MSG_FATAL("Histogram number of pt bins invalid"); + return StatusCode::FAILURE; + } + for (int i = 0; i <= m_numPtBins; i++){ + m_vecPtBins.push_back(atoi(m_hist->GetXaxis()->GetBinLabel(i))); + } + ATH_MSG_DEBUG("initialize() successful in " << name()); + return StatusCode::SUCCESS; } /////////////////////////////////////////////////////////////////////////////// @@ -117,200 +82,216 @@ StatusCode CaloMuonTag::initialize() /////////////////////////////////////////////////////////////////////////////// StatusCode CaloMuonTag::finalize() { - ATH_MSG_INFO("Number of tracks tagged : " << m_numTagged); - ATH_MSG_INFO("Number of tracks rejected : " << m_numRejected); - - ATH_MSG_DEBUG("finalize() successful in " << name()); - return StatusCode::SUCCESS; + ATH_MSG_INFO("Number of tracks tagged : " << m_numTagged); + ATH_MSG_INFO("Number of tracks rejected : " << m_numRejected); + ATH_MSG_DEBUG("finalize() successful in " << name()); + return StatusCode::SUCCESS; } /////////////////////////////////////////////////////////////////////////////// // caloMuonTag /////////////////////////////////////////////////////////////////////////////// -int CaloMuonTag::caloMuonTag(const std::vector<DepositInCalo>& deposits, double /*eta*/, double pt) const +int CaloMuonTag::caloMuonTag(const std::vector<DepositInCalo>& deposits, double /*eta*/, double pt) const { - std::vector<DepositInCalo>::const_iterator it = deposits.begin(); - int numVetoesTriggered = 0; - int tag = 4; - for (;it!=deposits.end(); it++) { - CaloCell_ID::CaloSample sample = it->subCaloId(); - double dep = it->energyDeposited(); - double eLoss = it->muonEnergyLoss(); - double diff = dep - eLoss; -// -// don't use the difference between measured and expected energy per layer -// - diff = 0.; - - if (sample==CaloCell_ID::EMB1) { - if (dep>interpolate(m_emb1Veto, pt)) { - numVetoesTriggered++; - } - } - if (sample==CaloCell_ID::EMB2) { - if (dep>interpolate(m_emb2Veto, pt)) { - numVetoesTriggered++; - } - } - if (sample==CaloCell_ID::EMB3) { - if (dep>interpolate(m_emb3Veto, pt)) { - numVetoesTriggered++; - } - } - - if (sample==CaloCell_ID::EME1) { - if (dep>interpolate(m_eme1Veto, pt)) { - numVetoesTriggered++; - } - } - if (sample==CaloCell_ID::EME2) { - if (dep>interpolate(m_eme2Veto, pt)) { - numVetoesTriggered++; - } - } - if (sample==CaloCell_ID::EME3) { - if (dep>interpolate(m_eme3Veto, pt)) { - numVetoesTriggered++; - } - } + std::vector<DepositInCalo>::const_iterator it = deposits.begin(); + int numVetoesTriggered = 0; + int tag = 4; + for (; it != deposits.end(); it++) { + CaloCell_ID::CaloSample sample = it->subCaloId(); + double dep = it->energyDeposited(); + double eLoss = it->muonEnergyLoss(); + double diff = dep - eLoss; - if (sample==CaloCell_ID::TileBar0) { - if (tag>3) tag = 3; - if (dep<interpolate(m_tileBar0Sig, pt)) { - numVetoesTriggered++; - } - if (dep>interpolate(m_tileBar0Veto, pt)) { - numVetoesTriggered++; - } - if (diff<interpolate(m_tileBar0DiffLow, pt)) { - numVetoesTriggered++; - } - } - if (sample==CaloCell_ID::TileBar1) { - if (tag>2) tag = 2; - if (dep<interpolate(m_tileBar1Sig, pt)) { - numVetoesTriggered++; - } - if (dep>interpolate(m_tileBar1Veto, pt)) { - numVetoesTriggered++; - } - if (diff<interpolate(m_tileBar1DiffLow, pt)) { - numVetoesTriggered++; - } - } - if (sample==CaloCell_ID::TileBar2) { - if (tag>1) tag = 1; - if (dep<interpolate(m_tileBar2Sig, pt)) { - numVetoesTriggered++; - } - if (dep>interpolate(m_tileBar2Veto, pt)) { - numVetoesTriggered++; - } - if (diff<interpolate(m_tileBar2DiffLow, pt)) { - numVetoesTriggered++; - } - } + if (sample == CaloCell_ID::EMB1) { + if (dep > interpolate("emb1Veto", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::EMB2) { + if (dep > interpolate("emb2Veto", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::EMB3) { + if (dep > interpolate("emb3Veto", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::EME1) { + if (dep > interpolate("eme1Veto", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::EME2) { + if (dep > interpolate("eme2Veto", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::EME3) { + if (dep > interpolate("eme3Veto", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::TileBar0) { + if (tag > 3) tag = 3; + if (dep < interpolate("tileBar0Sig", pt)) { + numVetoesTriggered++; + } + if (dep > interpolate("tileBar0Veto", pt)) { + numVetoesTriggered++; + } + if (diff < interpolate("tileBar0DiffLow", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::TileBar1) { + if (tag > 2) tag = 2; + if (dep < interpolate("tileBar1Sig", pt)) { + numVetoesTriggered++; + } + if (dep > interpolate("tileBar1Veto", pt)) { + numVetoesTriggered++; + } + if (diff < interpolate("tileBar1DiffLow", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::TileBar2) { + if (tag > 1) tag = 1; + if (dep < interpolate("tileBar2Sig", pt)) { + numVetoesTriggered++; + } + if (dep > interpolate("tileBar2Veto", pt)) { + numVetoesTriggered++; + } + if (diff < interpolate("tileBar2DiffLow", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::TileExt0) { + if (tag > 3) tag = 3; + if (dep < interpolate("tileExt0Sig", pt)) { + numVetoesTriggered++; + } + if (diff < interpolate("tileExt0DiffLow", pt)) { + numVetoesTriggered++; + } + if (dep > interpolate("tileExt0Veto", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::TileExt1) { + if (tag > 2) tag = 2; + if (dep < interpolate("tileExt1Sig", pt)) { + numVetoesTriggered++; + } + if (diff < interpolate("tileExt1DiffLow", pt)) { + numVetoesTriggered++; + } + if (dep > interpolate("tileExt1Veto", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::TileExt2) { + if (tag > 1) tag = 1; + if (dep < interpolate("tileExt2Sig", pt)) { + numVetoesTriggered++; + } + if (diff < interpolate("tileExt2DiffLow", pt)) { + numVetoesTriggered++; + } + if (dep > interpolate("tileExt2Veto", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::HEC0) { + if (dep > interpolate("hec0Veto", pt)) { + numVetoesTriggered++; + } + if (dep < interpolate("hec0Sig", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::HEC1) { + if (tag > 3) tag = 3; + if (dep > interpolate("hec1Veto", pt)) { + numVetoesTriggered++; + } + if (dep < interpolate("hec1Sig", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::HEC2) { + if (tag > 2) tag = 2; + if (dep > interpolate("hec2Veto", pt)) { + numVetoesTriggered++; + } + if (dep < interpolate("hec2Sig", pt)) { + numVetoesTriggered++; + } + } + if (sample == CaloCell_ID::HEC3) { + if (tag > 1) tag = 1; + if (dep > interpolate("hec3Veto", pt)) { + numVetoesTriggered++; + } + if (dep < interpolate("hec3Sig", pt)) { + numVetoesTriggered++; + } + } + if (numVetoesTriggered >= 1) { + m_numRejected++; + return 0; + } + } + if (tag < 3) m_numTagged++; + else if (tag == 4) return 0; + return tag; +} - if (sample==CaloCell_ID::TileExt0) { - if (tag>3) tag = 3; - if (dep<interpolate(m_tileExt0Sig, pt)) { - numVetoesTriggered++; - } - if (diff<interpolate(m_tileExt0DiffLow, pt)) { - numVetoesTriggered++; - } - if (dep>interpolate(m_tileExt0Veto, pt)) { - numVetoesTriggered++; - } - } - if (sample==CaloCell_ID::TileExt1) { - if (tag>2) tag = 2; - if (dep<interpolate(m_tileExt1Sig, pt)) { - numVetoesTriggered++; - } - if (diff<interpolate(m_tileExt1DiffLow, pt)) { - numVetoesTriggered++; - } - if (dep>interpolate(m_tileExt1Veto, pt)) { - numVetoesTriggered++; - } - } - if (sample==CaloCell_ID::TileExt2) { - if (tag>1) tag = 1; - if (dep<interpolate(m_tileExt2Sig, pt)) { - numVetoesTriggered++; - } - if (diff<interpolate(m_tileExt2DiffLow, pt)) { - numVetoesTriggered++; - } - if (dep>interpolate(m_tileExt2Veto, pt)) { - numVetoesTriggered++; - } - } +/////////////////////////////////////////////////////////////////////////////// +// interpolate +/////////////////////////////////////////////////////////////////////////////// +double CaloMuonTag::interpolate(std::string cutName, double pt) const { + double ptLow = 0, ptUp = 0, cutLow = 0, cutUp = 0, cutReturn = 0; + // MeV-->GeV + pt = pt / 1000; + int ptBin = getPtBinLow(pt); + int cutBin = getCutBin(cutName); + if (ptBin == 0 || ptBin > m_numPtBins || cutBin == 0 || cutBin > m_numCuts) + ATH_MSG_WARNING("Bin out of bound"); - if (sample==CaloCell_ID::HEC0) { - if (dep>interpolate(m_hec0Veto, pt)) { - numVetoesTriggered++; - } - if (dep<interpolate(m_hec0Sig, pt)) { - numVetoesTriggered++; - } - } - if (sample==CaloCell_ID::HEC1) { - if (tag>3) tag = 3; - if (dep>interpolate(m_hec1Veto, pt)) { - numVetoesTriggered++; - } - if (dep<interpolate(m_hec1Sig, pt)) { - numVetoesTriggered++; - } - } - if (sample==CaloCell_ID::HEC2) { - if (tag>2) tag = 2; - if (dep>interpolate(m_hec2Veto, pt)) { - numVetoesTriggered++; - } - if (dep<interpolate(m_hec2Sig, pt)) { - numVetoesTriggered++; - } - } - if (sample==CaloCell_ID::HEC3) { - if (tag>1) tag = 1; - if (dep>interpolate(m_hec3Veto, pt)) { - numVetoesTriggered++; - } - if (dep<interpolate(m_hec3Sig, pt)) { - numVetoesTriggered++; - } - } + // Get lowest pt bin + if (ptBin < 1) cutReturn = m_hist->GetBinContent(1, cutBin); + // Get highest pt bin + else if (ptBin == m_numPtBins) cutReturn = m_hist->GetBinContent(m_numPtBins, cutBin); + // Interpolate between bins + else { + ptUp = m_vecPtBins[ptBin + 1]; + ptLow = m_vecPtBins[ptBin]; + cutUp = m_hist->GetBinContent(ptBin + 1, cutBin); + cutLow = m_hist->GetBinContent(ptBin, cutBin); + cutReturn = cutLow + (cutUp - cutLow) * (pt - ptLow) / (ptUp - ptLow); + } - if (numVetoesTriggered>=1) { - m_numRejected++; - return 0; - } + return cutReturn; +} - } - - if (tag<3) { - m_numTagged++; - } - else if (tag==4){ - return 0; - } - - return tag; +int CaloMuonTag::getPtBinLow(double pt) const { + // Return the bin of lower pt + for (int i = 0; i <= m_numPtBins; i++){ + if (pt < m_vecPtBins[i]) return (i - 1); + } + return m_numPtBins; } -/////////////////////////////////////////////////////////////////////////////// -// interpolate -/////////////////////////////////////////////////////////////////////////////// -double CaloMuonTag::interpolate(Range_t cuts, double pt) const { - if (pt<m_ptMin) { - return cuts.first; - } - if (pt>m_ptMax) { - return cuts.second; - } - return cuts.first + (cuts.second-cuts.first)*(pt - m_ptMin)/(m_ptMax-m_ptMin); +int CaloMuonTag::getCutBin(std::string cutName) const { + for (int i = 0; i <= m_numCuts; i++){ + if (cutName == m_vecCutNames[i]) return i; + } + return 0; } + + + diff --git a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/TrackDepositInCaloTool.cxx b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/TrackDepositInCaloTool.cxx index ee38acfd3ef..b3b3fecbe41 100755 --- a/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/TrackDepositInCaloTool.cxx +++ b/Reconstruction/MuonIdentification/CaloTrkMuIdTools/src/TrackDepositInCaloTool.cxx @@ -271,10 +271,14 @@ std::vector<DepositInCalo> TrackDepositInCaloTool::getDeposits(const xAOD::Track const Trk::CaloExtension& caloExtension = association->caloExtension(); +#if 0 + // This test can never be true for standard-compliant code + // and is elided by compilers. if(!(&caloExtension)) { ATH_MSG_WARNING( " No caloExtension found "); return result; } +#endif if(!caloExtension.caloEntryLayerIntersection()) { ATH_MSG_WARNING( " No caloEntryLayerIntersection found "); @@ -871,8 +875,8 @@ std::vector<DepositInCalo> TrackDepositInCaloTool::deposits(const Trk::TrackPara ATH_MSG_INFO("Sample: " << sample << "\tEnergyDeposit: " << energyDeposit << "\tEnergyLoss: " << energyLoss); if (m_doHist) { - hParELossEta->Fill(energyLoss, itP->eta() ); - hParELossSample->Fill(energyLoss, sample ); + m_hParELossEta->Fill(energyLoss, itP->eta() ); + m_hParELossSample->Fill(energyLoss, sample ); } itP++; @@ -1048,8 +1052,8 @@ StatusCode TrackDepositInCaloTool::getTraversedLayers(const Trk::TrackParameters double deltaR_solLast = fabs( parAtSolenoid->position().perp() - par->position().perp() ); double deltaEta_solLast = fabs( parAtSolenoid->position().eta() - par->position().eta() ); if (m_doHist) { - hDeltaEtaLastPar->Fill(deltaEta_solLast); - hDeltaRadiusLastPar->Fill(deltaR_solLast); + m_hDeltaEtaLastPar->Fill(deltaEta_solLast); + m_hDeltaRadiusLastPar->Fill(deltaR_solLast); } const Amg::Vector3D positionAtSolenoid = parAtSolenoid->position(); @@ -1306,44 +1310,44 @@ StatusCode TrackDepositInCaloTool::bookHistos() { ATH_MSG_DEBUG("Booking the ROOT Histos"); StatusCode sc; - hDepositLayer12 = new TH1F("hDepositLayer12", "hDepositLayer12", 40, 0, 4000); - hDepositLayer13 = new TH1F("hDepositLayer13", "hDepositLayer13", 40, 0, 4000); - hDepositLayer14 = new TH1F("hDepositLayer14", "hDepositLayer14", 40, 0, 4000); - hParELossEta = new TH2F("hParELossEta", "Parametrized eLoss vs eta", 40, 0, 4000, 30, -3, 3); - hParELossSample = new TH2F("hParELossSample", "Parametrized eLoss vs sample", 40, 0, 4000, 21, 0, 21); - hDeltaEtaLastPar = new TH1F("hDeltaEtaLastPar", "hDeltaEtaLastPar", 50, -2, 2); - hDeltaRadiusLastPar = new TH1F("hDeltaRadiusLastPar", "hDeltaRadiusLastPar", 50, 0, 5000); - hDepositsInCore = new TH1F("hDepositsInCore", "hDepositsInCore", 50, 0, 5000); - hDepositsInCone = new TH1F("hDepositsInCone", "hDepositsInCone", 50, 0, 5000); - hDistDepositsTile = new TH2F("hDistDepositsTile", "hDistDepositsTile", 30, 0.0, 0.3, 30, 0, 4000); - hDistDepositsHEC = new TH2F("hDistDepositsHEC", "hDistDepositsHEC", 30, 0.0, 0.3, 30, 0, 4000); + m_hDepositLayer12 = new TH1F("hDepositLayer12", "hDepositLayer12", 40, 0, 4000); + m_hDepositLayer13 = new TH1F("hDepositLayer13", "hDepositLayer13", 40, 0, 4000); + m_hDepositLayer14 = new TH1F("hDepositLayer14", "hDepositLayer14", 40, 0, 4000); + m_hParELossEta = new TH2F("hParELossEta", "Parametrized eLoss vs eta", 40, 0, 4000, 30, -3, 3); + m_hParELossSample = new TH2F("hParELossSample", "Parametrized eLoss vs sample", 40, 0, 4000, 21, 0, 21); + m_hDeltaEtaLastPar = new TH1F("hDeltaEtaLastPar", "hDeltaEtaLastPar", 50, -2, 2); + m_hDeltaRadiusLastPar = new TH1F("hDeltaRadiusLastPar", "hDeltaRadiusLastPar", 50, 0, 5000); + m_hDepositsInCore = new TH1F("hDepositsInCore", "hDepositsInCore", 50, 0, 5000); + m_hDepositsInCone = new TH1F("hDepositsInCone", "hDepositsInCone", 50, 0, 5000); + m_hDistDepositsTile = new TH2F("hDistDepositsTile", "hDistDepositsTile", 30, 0.0, 0.3, 30, 0, 4000); + m_hDistDepositsHEC = new TH2F("hDistDepositsHEC", "hDistDepositsHEC", 30, 0.0, 0.3, 30, 0, 4000); - hEMB1vsdPhi = new TH2F("hEMB1vsdPhi", "hEMB1vsdPhi", 50, -3.14, 3.14, 50, 0, 500); - hEMB2vsdPhi = new TH2F("hEMB2vsdPhi", "hEMB2vsdPhi", 50, -3.14, 3.14, 50, 0, 500); - hEMB3vsdPhi = new TH2F("hEMB3vsdPhi", "hEMB3vsdPhi", 50, -3.14, 3.14, 50, 0, 500); - hEMB1vsdEta = new TH2F("hEMB1vsdEta", "hEMB1vsdEta", 50, -3.14, 3.14, 50, 0, 500); - hEMB2vsdEta = new TH2F("hEMB2vsdEta", "hEMB2vsdEta", 50, -3.14, 3.14, 50, 0, 500); - hEMB3vsdEta = new TH2F("hEMB3vsdEta", "hEMB3vsdEta", 50, -3.14, 3.14, 50, 0, 500); + m_hEMB1vsdPhi = new TH2F("hEMB1vsdPhi", "hEMB1vsdPhi", 50, -3.14, 3.14, 50, 0, 500); + m_hEMB2vsdPhi = new TH2F("hEMB2vsdPhi", "hEMB2vsdPhi", 50, -3.14, 3.14, 50, 0, 500); + m_hEMB3vsdPhi = new TH2F("hEMB3vsdPhi", "hEMB3vsdPhi", 50, -3.14, 3.14, 50, 0, 500); + m_hEMB1vsdEta = new TH2F("hEMB1vsdEta", "hEMB1vsdEta", 50, -3.14, 3.14, 50, 0, 500); + m_hEMB2vsdEta = new TH2F("hEMB2vsdEta", "hEMB2vsdEta", 50, -3.14, 3.14, 50, 0, 500); + m_hEMB3vsdEta = new TH2F("hEMB3vsdEta", "hEMB3vsdEta", 50, -3.14, 3.14, 50, 0, 500); if (m_histSvc) { - sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hDepositLayer12", hDepositLayer12); - sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hDepositLayer13", hDepositLayer13); - sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hDepositLayer14", hDepositLayer14); - sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hParELossSample", hParELossSample); - sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hParELossEta", hParELossEta); - sc = m_histSvc->regHist("/AANT/DetStore/hDeltaEtaLastPar", hDeltaEtaLastPar); - sc = m_histSvc->regHist("/AANT/DetStore/hDeltaRadiusLastPar", hDeltaRadiusLastPar); - sc = m_histSvc->regHist("/AANT/DetStore/hDepositsInCore", hDepositsInCore); - sc = m_histSvc->regHist("/AANT/DetStore/hDepositsInCone", hDepositsInCone); - sc = m_histSvc->regHist("/AANT/DetStore/hDistDepositsTile", hDistDepositsTile); - sc = m_histSvc->regHist("/AANT/DetStore/hDistDepositsHEC", hDistDepositsHEC); + sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hDepositLayer12", m_hDepositLayer12); + sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hDepositLayer13", m_hDepositLayer13); + sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hDepositLayer14", m_hDepositLayer14); + sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hParELossSample", m_hParELossSample); + sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hParELossEta", m_hParELossEta); + sc = m_histSvc->regHist("/AANT/DetStore/hDeltaEtaLastPar", m_hDeltaEtaLastPar); + sc = m_histSvc->regHist("/AANT/DetStore/hDeltaRadiusLastPar", m_hDeltaRadiusLastPar); + sc = m_histSvc->regHist("/AANT/DetStore/hDepositsInCore", m_hDepositsInCore); + sc = m_histSvc->regHist("/AANT/DetStore/hDepositsInCone", m_hDepositsInCone); + sc = m_histSvc->regHist("/AANT/DetStore/hDistDepositsTile", m_hDistDepositsTile); + sc = m_histSvc->regHist("/AANT/DetStore/hDistDepositsHEC", m_hDistDepositsHEC); - sc = m_histSvc->regHist("/AANT/DetStore/hEMB1vsdPhi", hEMB1vsdPhi); - sc = m_histSvc->regHist("/AANT/DetStore/hEMB2vsdPhi", hEMB2vsdPhi); - sc = m_histSvc->regHist("/AANT/DetStore/hEMB3vsdPhi", hEMB3vsdPhi); - sc = m_histSvc->regHist("/AANT/DetStore/hEMB1vsdEta", hEMB1vsdEta); - sc = m_histSvc->regHist("/AANT/DetStore/hEMB2vsdEta", hEMB2vsdEta); - sc = m_histSvc->regHist("/AANT/DetStore/hEMB3vsdEta", hEMB3vsdEta); + sc = m_histSvc->regHist("/AANT/DetStore/hEMB1vsdPhi", m_hEMB1vsdPhi); + sc = m_histSvc->regHist("/AANT/DetStore/hEMB2vsdPhi", m_hEMB2vsdPhi); + sc = m_histSvc->regHist("/AANT/DetStore/hEMB3vsdPhi", m_hEMB3vsdPhi); + sc = m_histSvc->regHist("/AANT/DetStore/hEMB1vsdEta", m_hEMB1vsdEta); + sc = m_histSvc->regHist("/AANT/DetStore/hEMB2vsdEta", m_hEMB2vsdEta); + sc = m_histSvc->regHist("/AANT/DetStore/hEMB3vsdEta", m_hEMB3vsdEta); } else { return StatusCode::FAILURE; -- GitLab