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