diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/CMakeLists.txt b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/CMakeLists.txt deleted file mode 100644 index 56ce531f68935082eab579ff1fc33970f82ec853..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -################################################################################ -# Package: ElectronPhotonTagTools -################################################################################ - -# Declare the package name: -atlas_subdir( ElectronPhotonTagTools ) - -# Component(s) in the package: -atlas_add_library( ElectronPhotonTagToolsLib - src/*.cxx - PUBLIC_HEADERS ElectronPhotonTagTools - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities EventInfo xAODEgamma xAODEventInfo xAODMissingET GaudiKernel TagEvent StoreGateLib SGtests IsolationSelectionLib EgammaAnalysisInterfacesLib AnalysisUtilsLib IsolationCorrectionsLib - PRIVATE_LINK_LIBRARIES xAODCore xAODParticleEvent xAODTracking ) - -atlas_add_component( ElectronPhotonTagTools - src/components/*.cxx - LINK_LIBRARIES AthenaBaseComps GaudiKernel ElectronPhotonTagToolsLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/ElectronPhotonTagTools/EgammaTagTool.h b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/ElectronPhotonTagTools/EgammaTagTool.h deleted file mode 100755 index 4e1fe2d63839b2a826b3d987a9b6c85809c60e7c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/ElectronPhotonTagTools/EgammaTagTool.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef EGAMMATAGTOOL_H -#define EGAMMATAGTOOL_H - -/***************************************************************************** -Name : EgammaTagTool.h -Package : offline/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : build the Egamma Tag objects - AnalysisTag.h. - The Egamma Analysis Tag fragment is built here -*****************************************************************************/ -#include "StoreGate/StoreGateSvc.h" -#include "StoreGate/ReadHandleKey.h" -#include "AthenaBaseComps/AthAlgTool.h" -#include "xAODEventInfo/EventInfo.h" -#include "xAODEgamma/EgammaContainer.h" -#include "xAODEgamma/PhotonContainer.h" -#include "xAODEgamma/ElectronContainer.h" -#include "xAODMissingET/MissingETContainer.h" -#include "TagEvent/TagFragmentCollection.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" -#include <vector> - -/** Interface ID for EgammaTagTool*/ -static const InterfaceID IID_EgammaTagTool("EgammaTagTool", 1, 0); - -class EgammaTagTool : public AthAlgTool { - -public: - - /** Standard Constructor */ - EgammaTagTool(const std::string& type, const std::string& name, const IInterface* parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { return IID_EgammaTagTool; }; - - /** Overriding initialize, finalize and execute */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int& max); - virtual StatusCode execute(TagFragmentCollection& egammaTagCol, const int& max); - virtual StatusCode finalize(); - - -private: - bool ZeeSelection (const xAOD::ElectronContainer* eleColl, - SG::ReadHandle<xAOD::EventInfo> eventInfo); - bool WenuSelection (const xAOD::ElectronContainer* eleColl, - const xAOD::MissingETContainer* metTopo, - SG::ReadHandle<xAOD::EventInfo> eventInfo); - void dumpEventDetails(const xAOD::Electron*, - SG::ReadHandle<xAOD::EventInfo> eventInfo); - - -private: - /** Properties */ - std::string m_electronContainer; - std::string m_photonContainer; - std::string m_missingEtObject; - std::string m_missingEtTerm; - - double m_electronPtCut; - double m_photonPtCut; - double m_massZLow; - double m_massZHigh; - - bool m_flagZeeEvent; - bool m_flagWenuEvent; - - double m_missingEtCut; - double m_welectronPtCut; - - double m_invMass; - - SG::ReadHandleKey<xAOD::EventInfo> m_evt {this, "EvtInfo", "EventInfo", "EventInfo name"}; - }; - -#endif // ELECTRONTAGTOOL_H - - diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/ElectronPhotonTagTools/ElectronTagTool.h b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/ElectronPhotonTagTools/ElectronTagTool.h deleted file mode 100755 index 16b5f86ca5e63b48381964345e95be356173716f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/ElectronPhotonTagTools/ElectronTagTool.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ELECTRONTAGTOOL_H -#define ELECTRONTAGTOOL_H - -/***************************************************************************** -Name : ElectronTagTool.h -Package : offline/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : build the Electron Tag objects - ElectronTagCollection.h. - The Electron Tag fragment is built here -*****************************************************************************/ - -#include "GaudiKernel/ToolHandle.h" -#include "AthenaBaseComps/AthAlgTool.h" -#include "TagEvent/TagFragmentCollection.h" -#include "xAODEventInfo/EventInfo.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" -#include "IsolationSelection/IIsolationSelectionTool.h" -#include "IsolationCorrections/IIsolationCorrectionTool.h" -#include "EgammaAnalysisInterfaces/IAsgElectronLikelihoodTool.h" -#include "EgammaAnalysisInterfaces/IAsgElectronIsEMSelector.h" -#include "EgammaAnalysisInterfaces/IElectronPhotonShowerShapeFudgeTool.h" -#include "EgammaAnalysisInterfaces/IEgammaCalibrationAndSmearingTool.h" -#include <map> - -class ElectronTagCollection; - -/** Interface ID for ElectronTagTool*/ -static const InterfaceID IID_ElectronTagTool("ElectronTagTool", 1, 0); - - -class ElectronTagTool : public AthAlgTool { - -public: - - /** Standard Constructor */ - ElectronTagTool(const std::string& type, const std::string& name, const IInterface* parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { return IID_ElectronTagTool; }; - - /** Overriding initialize, finalize and execute */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int& max); - virtual StatusCode execute(TagFragmentCollection& electronTagCol, const int& max); - virtual StatusCode finalize(); - -private: - - /** private function to get impact parameter */ - void getElectronImpactParameter (const xAOD::Electron*,double& d0_significance, double& z0_sintheta); - - /** Properties */ - std::vector<std::string> m_containerNames; - double m_cut_Et; - std::string m_electron_met_container_name; - std::vector<float> m_etconeisocutvalues; - std::vector<float> m_ptconeisocutvalues; - - /** the attribute names */ - std::vector<std::string> m_ptStr; - std::vector<std::string> m_etaStr; - std::vector<std::string> m_phiStr; - std::vector<std::string> m_tightStr; - std::vector<std::string> m_fwdStr; - std::vector<std::string> m_isoStr; - - /** electron cut-based ID tool */ - ToolHandle<IAsgElectronIsEMSelector> m_loose_cut_based; - ToolHandle<IAsgElectronIsEMSelector> m_medium_cut_based; - ToolHandle<IAsgElectronIsEMSelector> m_tight_cut_based; - - /** electron likelihood ID tool */ - ToolHandle<IAsgElectronLikelihoodTool> m_veryloose_likelihood; - ToolHandle<IAsgElectronLikelihoodTool> m_loose_likelihood; - ToolHandle<IAsgElectronLikelihoodTool> m_medium_likelihood; - ToolHandle<IAsgElectronLikelihoodTool> m_tight_likelihood; - - /** isolation correction tool */ - ToolHandle<CP::IIsolationCorrectionTool> m_isolation_correction_tool; - - /** electron isolation tool */ - ToolHandle<CP::IIsolationSelectionTool> m_loose_trackonly_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_loose_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_tight_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_gradient_loose_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_gradient_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_fixedcut_tight_trackonly_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_fixedcut_loose_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_fixedcut_tight_isolation; - - /** PV StoreGate key */ - std::string m_vxCandidate; - - /** calib tool */ - // ToolHandle<CP::IEgammaCalibrationAndSmearingTool> m_EgammaCalibrationAndSmearingTool; - -}; - -#endif // ELECTRONTAGTOOL_H - - diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/ElectronPhotonTagTools/PhotonTagTool.h b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/ElectronPhotonTagTools/PhotonTagTool.h deleted file mode 100755 index 0f9dd788152732df47ca2bdad23cf75c45cfb073..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/ElectronPhotonTagTools/PhotonTagTool.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef PHOTONTAGTOOL_H -#define PHOTONTAGTOOL_H - -/***************************************************************************** -Name : PhotonTagTool.h -Package : offline/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : build the Photon Tag objects - PhotonTagCollection.h. - The Photon Tag fragment is built here -*****************************************************************************/ - -#include "AthenaBaseComps/AthAlgTool.h" -#include "TagEvent/TagFragmentCollection.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" -#include "IsolationSelection/IIsolationSelectionTool.h" -#include "IsolationSelection/IsolationSelectionTool.h" -#include "IsolationCorrections/IIsolationCorrectionTool.h" -#include "EgammaAnalysisInterfaces/IAsgPhotonIsEMSelector.h" -#include "EgammaAnalysisInterfaces/IEGammaAmbiguityTool.h" -#include "EgammaAnalysisInterfaces/IElectronPhotonShowerShapeFudgeTool.h" -#include "EgammaAnalysisInterfaces/IEgammaCalibrationAndSmearingTool.h" -#include <map> - -class PhotonTagCollection; - - -/** Interface ID for PhotonTagTool */ -static const InterfaceID IID_PhotonTagTool("PhotonTagTool", 1, 0); - -class PhotonTagTool : public AthAlgTool { - -public: - - /** Standard Constructor */ - PhotonTagTool(const std::string& type, const std::string& name, const IInterface* parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { return IID_PhotonTagTool; }; - - /** Overriding initialize, finalize and execute */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int& max); - virtual StatusCode execute(TagFragmentCollection& photonTagCol, const int& max); - virtual StatusCode finalize(); - -private: - - /** Properties */ - std::string m_containerName; - double m_cut_Et; - std::string m_photon_met_container_name; - std::vector<float> m_etconeisocutvalues; - std::vector<float> m_ptconeisocutvalues; - - /** the attribute names */ - std::vector<std::string> m_ptStr; - std::vector<std::string> m_etaStr; - std::vector<std::string> m_phiStr; - std::vector<std::string> m_tightStr; - std::vector<std::string> m_isoStr; - - /**photon shower shape fudge*/ - bool m_isFullsim; - ToolHandle<IElectronPhotonShowerShapeFudgeTool> m_shower_shape_fudge; - - ToolHandle<IAsgPhotonIsEMSelector> m_loose_cut_based; - ToolHandle<IAsgPhotonIsEMSelector> m_tight_cut_based; - - ToolHandle<IEGammaAmbiguityTool> m_egamma_ambi_tool; - - /** isolation correction tool */ - ToolHandle<CP::IIsolationCorrectionTool> m_isolation_correction_tool; - - ToolHandle<CP::IIsolationSelectionTool> m_cone40_calo_isolation;//! - ToolHandle<CP::IIsolationSelectionTool> m_cone40_isolation;//! - ToolHandle<CP::IIsolationSelectionTool> m_cone20_isolation;//! - ToolHandle<CP::IIsolationSelectionTool> m_fixedcut_tightcaloonly_isolation;//! - ToolHandle<CP::IIsolationSelectionTool> m_fixedcut_loose_isolation;//! - ToolHandle<CP::IIsolationSelectionTool> m_fixedcut_tight_isolation;//! - - /** calib tool */ - // ToolHandle<CP::IEgammaCalibrationAndSmearingTool> m_EgammaCalibrationAndSmearingTool; - - }; - -#endif // PHOTONTAGTOOL_H - - diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/doc/packagedoc.h b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/doc/packagedoc.h deleted file mode 100644 index ea05e1ebc8a73e365c889d241ea2e4e5c50ed8b9..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/doc/packagedoc.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page ElectronPhotonTagTools_page ElectronPhotonTagTools - -@section ElectronPhotonTagTools_introductionElectronPhotonTagTools Introduction -This package contains the alg tools for building the tag fragments for Egamma, Electron and Photon identification. - -@section ElectronPhotonTagTools_packagecontentElectronPhotonTagTools Package Contents -ElectronPhotonTagTools contains the following tools: - -- EgammaTagTool ... tool for Electron and photon identification TAG fragment -- ElectronTagTool ...tool for Electron TAG fragment -- PhotonTagTool ... tool for Photon TAG fragment - -- for questions and comments: ketevi@bnl.gov - - - -*/ diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/share/EgammaTagTool_jobOptions.py b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/share/EgammaTagTool_jobOptions.py deleted file mode 100755 index c3f08fb52bc83bd85cd94a9dcbf46f1304f8a2e8..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/share/EgammaTagTool_jobOptions.py +++ /dev/null @@ -1,17 +0,0 @@ -include.block ("ElectronPhotonTagTools/EgammaTagTool_jobOptions.py") - -########### egamma analysis tag options ################ - -from ElectronPhotonTagTools.ElectronPhotonTagToolsConf import \ - EgammaTagTool as ConfiguredEgammaTagTool -EgammaTagTool = ConfiguredEgammaTagTool( - ElectronContainer = "Electrons", - PhotonContainer = "Photons", - ElectronPtCut = 20.0*GeV, - PhotonPtCut = 10.0*GeV, - MassZLow = 45.*GeV, - MassZHigh = 180.*GeV, - MissingEtObject = "MET_RefFinal", - MissingEtCut = 25.*GeV, - WElectronPtCut = 15.*GeV ) -ToolSvc += EgammaTagTool diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/share/ElectronTagTool_jobOptions.py b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/share/ElectronTagTool_jobOptions.py deleted file mode 100755 index ae03e61006f9057bb514fe00b081882522bf7474..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/share/ElectronTagTool_jobOptions.py +++ /dev/null @@ -1,102 +0,0 @@ -include.block ("ElectronPhotonTagTools/ElectronTagTool_jobOptions.py") - -########### Electron LH selection options ################ -from ElectronPhotonSelectorTools.ConfiguredAsgElectronLikelihoodTools import ConfiguredAsgElectronLikelihoodTool -from ROOT import LikeEnum -VeryLooseLHSelector = ConfiguredAsgElectronLikelihoodTool("VeryLooseLHSelector", LikeEnum.VeryLoose) -ToolSvc += VeryLooseLHSelector -LooseLHSelector = ConfiguredAsgElectronLikelihoodTool("LooseLHSelector", LikeEnum.Loose) -ToolSvc += LooseLHSelector -MediumLHSelector = ConfiguredAsgElectronLikelihoodTool("MediumLHSelector", LikeEnum.Medium) -ToolSvc += MediumLHSelector -TightLHSelector = ConfiguredAsgElectronLikelihoodTool("TightLHSelector", LikeEnum.Tight) -ToolSvc += TightLHSelector - -########### Electron cut based selection options ################ -from ElectronPhotonSelectorTools.ConfiguredAsgElectronIsEMSelectors import ConfiguredAsgElectronIsEMSelector -from ROOT import egammaPID - -#Loose -ElectronIsEMSelectorLoose = ConfiguredAsgElectronIsEMSelector("ElectronIsEMSelectorLoose", egammaPID.ElectronIDLoosePP) -ToolSvc += ElectronIsEMSelectorLoose - -#Medium -ElectronIsEMSelectorMedium = ConfiguredAsgElectronIsEMSelector("ElectronIsEMSelectorMedium", egammaPID.ElectronIDMediumPP) -ToolSvc += ElectronIsEMSelectorMedium - -#Tight -ElectronIsEMSelectorTight = ConfiguredAsgElectronIsEMSelector("ElectronIsEMSelectorTight", egammaPID.ElectronIDTightPP) -ToolSvc += ElectronIsEMSelectorTight - -########### Electron Isolation options ################ - -from RecExConfig.InputFilePeeker import inputFileSummary -isSimulation = False -if inputFileSummary.has_key("evt_type"): - eventTypeList = inputFileSummary.get("evt_type") - if eventTypeList.__contains__("IS_SIMULATION") : - print "ElectronTagTool: Detected that the input file is a simulated dataset" - isSimulation = True - else: - print "ElectronTagTool: Detected that the input file is real data" - pass - -IsolationCorrectionTool = CfgMgr.CP__IsolationCorrectionTool( "ElectronIsolationCorrectionTool" ) -IsolationCorrectionTool.IsMC = isSimulation -ToolSvc += IsolationCorrectionTool - -LooseTrackOnlyIsoTool = CfgMgr.CP__IsolationSelectionTool( "ElectronLooseTrackOnlyIsolationSelectionTool" ) -LooseTrackOnlyIsoTool.ElectronWP = "LooseTrackOnly" -ToolSvc += LooseTrackOnlyIsoTool -LooseIsoTool = CfgMgr.CP__IsolationSelectionTool( "ElectronLooseIsolationSelectionTool" ) -LooseIsoTool.ElectronWP = "Loose" -ToolSvc += LooseIsoTool -TightIsoTool = CfgMgr.CP__IsolationSelectionTool( "ElectronTightIsolationSelectionTool" ) -TightIsoTool.ElectronWP = "Tight" -ToolSvc += TightIsoTool -GradientIsoTool = CfgMgr.CP__IsolationSelectionTool( "ElectronGradientIsolationSelectionTool" ) -GradientIsoTool.ElectronWP = "Gradient" -ToolSvc += GradientIsoTool -GradientLooseIsoTool = CfgMgr.CP__IsolationSelectionTool( "ElectronGradientLooseIsolationSelectionTool" ) -GradientLooseIsoTool.ElectronWP = "GradientLoose" -ToolSvc += GradientLooseIsoTool -FixedCutTightTrackOnlyIsoTool = CfgMgr.CP__IsolationSelectionTool( "ElectronFixedCutTightTrackOnlyIsolationSelectionTool" ) -FixedCutTightTrackOnlyIsoTool.ElectronWP = "FixedCutTightTrackOnly" -ToolSvc += FixedCutTightTrackOnlyIsoTool -FixedCutLooseIsoTool = CfgMgr.CP__IsolationSelectionTool( "ElectronFixedCutLooseIsolationSelectionTool" ) -FixedCutLooseIsoTool.ElectronWP = "FixedCutLoose" -ToolSvc += FixedCutLooseIsoTool -FixedCutTightIsoTool = CfgMgr.CP__IsolationSelectionTool( "ElectronFixedCutTightIsolationSelectionTool" ) -FixedCutTightIsoTool.ElectronWP = "FixedCutTight" -ToolSvc += FixedCutTightIsoTool - -from ElectronPhotonTagTools.ElectronPhotonTagToolsConf import \ - ElectronTagTool as ConfiguredElectronTagTool -ElectronTagTool = ConfiguredElectronTagTool( - Container = ["Electrons"], - ElectronMETContainerName = "Electrons_TAG_skim", - EtCut = 7.0*GeV, - EtconeIsoCutValues = [ 0.15, 0.30, 3.0*GeV, 5.0*GeV], - PtconeIsoCutValues = [ 0.15, 0.30, 3.0*GeV, 5.0*GeV], - TightLHSelector = TightLHSelector, - MediumLHSelector = MediumLHSelector, - LooseLHSelector = LooseLHSelector, - VeryLooseLHSelector = VeryLooseLHSelector, - ElectronIsEMSelectorLoose = ElectronIsEMSelectorLoose, - ElectronIsEMSelectorMedium = ElectronIsEMSelectorMedium, - ElectronIsEMSelectorTight = ElectronIsEMSelectorTight, - IsolationCorrectionTool = IsolationCorrectionTool, - LooseTrackOnlyIsolation = LooseTrackOnlyIsoTool, - LooseIsolation = LooseIsoTool, - TightIsolation = TightIsoTool, - GradientIsolation = GradientIsoTool, - GradientLooseIsolation = GradientLooseIsoTool, - FixedCutTightTrackOnlyIsolation = FixedCutTightTrackOnlyIsoTool, - FixedCutLooseIsolation = FixedCutLooseIsoTool, - FixedCutTightIsolation = FixedCutTightIsoTool - ) - -# ElectronTagTool.EgammaCalibrationAndSmearingTool.randomRunNumber = 308047 -# ElectronTagTool.EgammaCalibrationAndSmearingTool.ESModel = "es2016data_mc15c" - -# ToolSvc += ElectronTagTool diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/share/PhotonTagTool_jobOptions.py b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/share/PhotonTagTool_jobOptions.py deleted file mode 100755 index bf20bc2688caeaf2b2adea11577923a87efa7ecf..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/share/PhotonTagTool_jobOptions.py +++ /dev/null @@ -1,103 +0,0 @@ -include.block ("ElectronPhotonTagTools/PhotonTagTool_jobOptions.py") - -###############SHOWER SHAPE FUDGING IN MC###################### - -DF_ElectronPhotonShowerShapeFudgeTool = None - -from PyUtils import AthFile -af = AthFile.fopen(svcMgr.EventSelector.InputCollections[0]) # opens the first file from the InputCollections list -af.fileinfos # this is a dict of dicts, take a look at what's available! Below are some examples: - -isMC = 'IS_SIMULATION' in af.fileinfos['evt_type'] - -beam_energy = af.fileinfos['beam_energy'] -conditions_tag = af.fileinfos['conditions_tag'] #useful for figuring out which mc production this is - -isFullsim = False -if isMC: - simulationFlavour = af.fileinfos['metadata']['/Simulation/Parameters']['SimulationFlavour'] - isFullsim = simulationFlavour in ('default', 'MC12G4', 'FullG4') # is this a full sim dataset? - -print "EGammaCommon: isMC = ", isMC -if isMC: - print "EGammaCommon: isFullsim = ", isFullsim - -if isFullsim: -#from AthenaCommon.GlobalFlags import globalflags -#print "globalflags.DataSource(): ", globalflags.DataSource() -#if globalflags.DataSource()=='geant4': - from ElectronPhotonShowerShapeFudgeTool.ElectronPhotonShowerShapeFudgeToolConf import ElectronPhotonShowerShapeFudgeTool - DF_ElectronPhotonShowerShapeFudgeTool = ElectronPhotonShowerShapeFudgeTool("PhotonShowerShapeFudgeTool") - DF_ElectronPhotonShowerShapeFudgeTool = ElectronPhotonShowerShapeFudgeTool(Preselection=16) - ToolSvc += DF_ElectronPhotonShowerShapeFudgeTool - print DF_ElectronPhotonShowerShapeFudgeTool - -############ Photon selecton options ################# - -IsolationCorrectionTool = CfgMgr.CP__IsolationCorrectionTool( "ElectronIsolationCorrectionTool" ) -IsolationCorrectionTool.IsMC = isMC -ToolSvc += IsolationCorrectionTool - -cone20IsoTool = CfgMgr.CP__IsolationSelectionTool( "PhotonCone20IsolationSelectionTool" ) -cone20IsoTool.PhotonWP = "Cone20" -ToolSvc += cone20IsoTool -cone40IsoTool = CfgMgr.CP__IsolationSelectionTool( "PhotonCone40IsolationSelectionTool" ) -cone40IsoTool.PhotonWP = "Cone40" -ToolSvc += cone40IsoTool -cone40CaloOnlyIsoTool = CfgMgr.CP__IsolationSelectionTool( "PhotonCone40CaloOnlyIsolationSelectionTool" ) -cone40CaloOnlyIsoTool.PhotonWP = "Cone40CaloOnly" -ToolSvc += cone40CaloOnlyIsoTool - -FixedCutTightCaloOnlyIsoTool = CfgMgr.CP__IsolationSelectionTool( "PhotonFixedCutTightCaloOnlyIsolationSelectionTool" ) -FixedCutTightCaloOnlyIsoTool.PhotonWP = "FixedCutTightCaloOnly" -ToolSvc += FixedCutTightCaloOnlyIsoTool -FixedCutLooseIsoTool = CfgMgr.CP__IsolationSelectionTool( "PhotonFixedCutLooseIsolationSelectionTool" ) -FixedCutLooseIsoTool.PhotonWP = "FixedCutLoose" -ToolSvc += FixedCutLooseIsoTool -FixedCutTightIsoTool = CfgMgr.CP__IsolationSelectionTool( "PhotonFixedCutTightIsolationSelectionTool" ) -FixedCutTightIsoTool.PhotonWP = "FixedCutTight" -ToolSvc += FixedCutTightIsoTool - -########### Photon cut based selection options ################ -from ROOT import egammaPID - -# Loose -from ElectronPhotonSelectorTools.ConfiguredAsgPhotonIsEMSelectors import ConfiguredAsgPhotonIsEMSelector -PhotonIsEMSelectorLoose = ConfiguredAsgPhotonIsEMSelector("PhotonIsEMSelectorLoose", egammaPID.PhotonIDLoose) -ToolSvc += PhotonIsEMSelectorLoose - -# Tight -PhotonIsEMSelectorTight = ConfiguredAsgPhotonIsEMSelector("PhotonIsEMSelectorTight", egammaPID.PhotonIDTight) -ToolSvc += PhotonIsEMSelectorTight - -# EGammaAmbiTool -from ElectronPhotonSelectorTools.ElectronPhotonSelectorToolsConf import EGammaAmbiguityTool -EGammaAmbiTool = EGammaAmbiguityTool("EGammaAmbiguityTool") -ToolSvc += EGammaAmbiTool - - -from ElectronPhotonTagTools.ElectronPhotonTagToolsConf import PhotonTagTool as ConfiguredPhotonTagTool -PhotonTagTool = ConfiguredPhotonTagTool( - Container = "Photons", - PhotonMETContainerName = "Photons_TAG_skim", - EtCut = 10.0*GeV, - EtconeIsoCutValues = [ 0.15, 0.30, 3.0*GeV, 5.0*GeV ], - PtconeIsoCutValues = [ 0.15, 0.30, 3.0*GeV, 5.0*GeV ], - isFullsim = isFullsim, - PhotonShowerFudgeTool = DF_ElectronPhotonShowerShapeFudgeTool, - LooseSelector = PhotonIsEMSelectorLoose, - TightSelector = PhotonIsEMSelectorTight, - EGammaAmbiTool = EGammaAmbiTool, - IsolationCorrectionTool = IsolationCorrectionTool, - cone20IsoTool = cone20IsoTool, - cone40IsoTool = cone40IsoTool, - cone40CaloOnlyIsoTool = cone40CaloOnlyIsoTool, - FixedCutTightCaloOnlyIsoTool = FixedCutTightCaloOnlyIsoTool, - FixedCutLooseIsoTool = FixedCutLooseIsoTool, - FixedCutTightIsoTool = FixedCutTightIsoTool - ) - -# PhotonTagTool.EgammaCalibrationAndSmearingTool.randomRunNumber = 308047 -# PhotonTagTool.EgammaCalibrationAndSmearingTool.ESModel = "es2016data_mc15c" - -# ToolSvc += PhotonTagTool diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/EgammaTagTool.cxx b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/EgammaTagTool.cxx deleted file mode 100755 index 371834720f62836dcf66e0e4113ed4e5dd8e0adf..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/EgammaTagTool.cxx +++ /dev/null @@ -1,246 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : EgammaTagTool.cxx -Package : offline/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : create a collection of EgammaTag - -*****************************************************************************/ - -#include "GaudiKernel/MsgStream.h" -#include "Gaudi/Property.h" -#include "GaudiKernel/SystemOfUnits.h" -#include "ElectronPhotonTagTools/EgammaTagTool.h" -#include "TagEvent/EgammaAttributeNames.h" -#include "xAODEgamma/EgammaContainer.h" -#include "xAODEgamma/PhotonContainer.h" -#include "xAODEgamma/ElectronContainer.h" -#include "xAODMissingET/MissingETContainer.h" - -//using namespace Analysis; - -/** the constructor */ -EgammaTagTool::EgammaTagTool (const std::string& type, const std::string& name, - const IInterface* parent) : - AthAlgTool( type, name, parent ) -{ - /** Electron/Photon AOD Container Names */ - declareProperty("ElectronContainer", m_electronContainer = "ElectronCollection"); - declareProperty("PhotonContainer", m_photonContainer = "PhotonCollection"); - /** selection cut of Pt */ - declareProperty("ElectronPtCut", m_electronPtCut = 20.0*Gaudi::Units::GeV); - declareProperty("PhotonPtCut", m_photonPtCut = 10.0*Gaudi::Units::GeV); - /** mass cut for Z */ - declareProperty("MassZLow", m_massZLow = 45.*Gaudi::Units::GeV ); - declareProperty("MassZHigh", m_massZHigh = 180.*Gaudi::Units::GeV); - /** missing Et cut */ - declareProperty("MissingEtObject", m_missingEtObject = "MET_RefFinal"); - declareProperty("MissingEtCut", m_missingEtCut = 25.*Gaudi::Units::GeV ); - declareProperty("WElectronPtCut", m_welectronPtCut = 15.*Gaudi::Units::GeV ); - declareProperty("MissingEtTerm", m_missingEtTerm = "Final"); - - declareInterface<EgammaTagTool>( this ); -} - - - -/** initialization - called once at the begginning */ -StatusCode EgammaTagTool::initialize() -{ - ATH_MSG_DEBUG("in initialize()"); - ATH_CHECK( m_evt.initialize() ); - return StatusCode::SUCCESS; -} - - - -/** build the attribute list - called in initialize */ -StatusCode EgammaTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int& /*max*/) -{ - ATH_MSG_DEBUG("in attributeSpecification()"); - - /** specifiy the Egamma - Electron/Photon attributes */ - attrMap[ EgammaAttributeNames[0] ] = AthenaAttributeType("unsigned int", EgammaAttributeUnitNames[0], EgammaAttributeGroupNames[0]); - - return StatusCode::SUCCESS; -} - - - -/** execute - called on every event */ -StatusCode EgammaTagTool::execute(TagFragmentCollection& egammaTagCol, const int& /*max*/) -{ - ATH_MSG_DEBUG("in execute()"); - - const xAOD::ElectronContainer* eleColl = nullptr; - ATH_CHECK( evtStore()->retrieve( eleColl, m_electronContainer) ); - - const xAOD::MissingETContainer* metTopo = nullptr; - ATH_CHECK( evtStore()->retrieve(metTopo, m_missingEtObject) ); - - SG::ReadHandle<xAOD::EventInfo> evt(m_evt); - if(!evt.isValid()) { - ATH_MSG_ERROR("Failed to retrieve EventInfo"); - return StatusCode::FAILURE; - } - - /** Flags for Z and W events */ - m_flagZeeEvent = false; - m_flagWenuEvent = false; - - //=================================================== - // Zee event reconstruction - //=================================================== - m_flagZeeEvent = ZeeSelection (eleColl, evt); - - //=================================================== - // Wenu event reconstruction - //=================================================== - m_flagWenuEvent = WenuSelection (eleColl, metTopo, evt); - - - //=================================================== - // Set the bits for Z and W events - //=================================================== - unsigned int fragment = 0x0; - if(m_flagZeeEvent) fragment |= 1<<0; - if(m_flagWenuEvent) fragment |= 1<<1; - - - egammaTagCol.insert( EgammaAttributeNames[0], fragment ); - - return StatusCode::SUCCESS; -} - -/** finialize - called once at the end */ -StatusCode EgammaTagTool::finalize() { - - ATH_MSG_DEBUG("in finalize()"); - return StatusCode::SUCCESS; -} - - -bool EgammaTagTool::ZeeSelection (const xAOD::ElectronContainer* eleColl, - SG::ReadHandle<xAOD::EventInfo> eventInfo) -{ - - ATH_MSG_DEBUG("in ZeeSelection()"); - - /** Electron candidates */ - std::vector<const xAOD::Electron*> electrons_positive; - std::vector<const xAOD::Electron*> electrons_negative; - - - xAOD::ElectronContainer::const_iterator eleItr = eleColl->begin(); - xAOD::ElectronContainer::const_iterator eleItrEnd = eleColl->end(); - for ( ; eleItr != eleItrEnd; ++eleItr ) { - /** only allow electons from "Electron" algo */ - bool select = ( (*eleItr)->author(xAOD::EgammaParameters::AuthorElectron ) && ( (*eleItr)->pt() > m_electronPtCut)); - if ( select ) { - if ( (*eleItr)->charge() > 0 ) electrons_positive.push_back( (*eleItr) ); - else if ((*eleItr)->charge() < 0 ) electrons_negative.push_back( (*eleItr) ); - } - } - - /** Check existance of electron candidates */ - if ( (electrons_positive.size()==0) || (electrons_negative.size()==0) ) { - m_flagZeeEvent = false; - return m_flagZeeEvent; - } - - for (unsigned int i=0; i<electrons_positive.size(); i++) { - for (unsigned int j=0; j<electrons_negative.size(); j++) { - - bool value_loose_pos=0; - bool value_loose_neg=0; - - if(!(electrons_positive[i]->passSelection(value_loose_pos,"Loose"))){ - ATH_MSG_ERROR( "No loose selection exits" ); - } - - if(!(electrons_negative[i]->passSelection(value_loose_neg,"Loose"))){ - ATH_MSG_ERROR( "No loose selection exits" ); - } - - if ( value_loose_pos == 1 || value_loose_neg == 1 ) { - double invMass = -999.; - - /** Calculate invariant mass of ee */ - invMass = ( electrons_positive[ i ]->p4() + electrons_negative[ i ]->p4() ).M(); - - - /** Make decision for a good Zee */ - if ( (m_massZLow < invMass) && (invMass < m_massZHigh) ) m_flagZeeEvent = true; - - /** Print the details of Zee Candidate if outputLevel=DEBUG */ - if (m_flagZeeEvent && msgLvl(MSG::DEBUG)) { - ATH_MSG_DEBUG("***** First electron candidate of Zee *****" ); - dumpEventDetails(electrons_positive[i], eventInfo); - ATH_MSG_DEBUG("***** Second electron candidate of Zee *****" ); - dumpEventDetails(electrons_negative[j], eventInfo); - } - } - } - } - - return m_flagZeeEvent; - -} - - -bool EgammaTagTool::WenuSelection (const xAOD::ElectronContainer* eleColl, - const xAOD::MissingETContainer* metTopo, - SG::ReadHandle<xAOD::EventInfo> eventInfo) -{ - ATH_MSG_DEBUG("in WenuSelection()"); - - if ((*metTopo)[m_missingEtTerm]->met() < m_missingEtCut ) { - m_flagWenuEvent = false; - return m_flagWenuEvent; - } - - xAOD::ElectronContainer::const_iterator eleItr = eleColl->begin(); - xAOD::ElectronContainer::const_iterator eleItrEnd = eleColl->end(); - for ( ; eleItr != eleItrEnd; ++eleItr ) { - bool value_medium=0; - - if(!(*eleItr)->passSelection(value_medium,"Medium")){ - ATH_MSG_ERROR( "No medium selection exits" ); - } - if(value_medium == 0)continue; - bool select = ( (*eleItr)->author(xAOD::EgammaParameters::AuthorElectron ) && ( (*eleItr)->pt() > m_welectronPtCut)); - - if (select) m_flagWenuEvent = true; - - if (m_flagWenuEvent && msgLvl(MSG::DEBUG)) { - ATH_MSG_DEBUG("***** Electron Candidate in Wenu *****" ); - dumpEventDetails(*eleItr, eventInfo); - } - } - - return m_flagWenuEvent; - -} - -void EgammaTagTool::dumpEventDetails(const xAOD::Electron* eleItr, - SG::ReadHandle<xAOD::EventInfo> eventInfo) -{ - ATH_MSG_DEBUG("Event info : " - << " runNumber = " << eventInfo->runNumber() - << " lumiBlock = " << eventInfo->lumiBlock() - << " eventNumber = " << eventInfo->eventNumber() - ); - - ATH_MSG_DEBUG("Electrons : " - <<" pt = " << eleItr->pt() - <<" eta = " << eleItr->eta() - <<" phi = " << eleItr->phi() - <<" charge = " << eleItr->charge() - ); - - ATH_MSG_DEBUG("Invariant mass = " << m_invMass ); -} diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/ElectronTagTool.cxx b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/ElectronTagTool.cxx deleted file mode 100755 index 140cc4c7824f91f8ec1741de06ca0cc96ffc8cbb..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/ElectronTagTool.cxx +++ /dev/null @@ -1,572 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : ElectronTagTool.cxx -Package : offline/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools -Purpose : create a collection of ElectronTag - -*****************************************************************************/ -#include "ElectronPhotonTagTools/ElectronTagTool.h" - -#include "Gaudi/Property.h" -#include "StoreGate/StoreGateSvc.h" -#include "xAODCore/ShallowCopy.h" -#include "xAODParticleEvent/IParticleLink.h" -#include "xAODEgamma/EgammaContainer.h" -#include "xAODEgamma/ElectronContainer.h" -#include "xAODEgamma/ElectronAuxContainer.h" -#include "xAODEgamma/Egamma.h" -#include "xAODEgamma/Electron.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" -#include "xAODEgamma/EgammaEnums.h" -#include "TagEvent/ElectronAttributeNames.h" -#include "AnalysisUtils/AnalysisMisc.h" -#include "AthContainers/ConstDataVector.h" -#include "xAODEventInfo/EventInfo.h" -#include "xAODTracking/VertexContainer.h" -#include "xAODTracking/TrackParticle.h" -#include "xAODTracking/TrackParticleContainer.h" -#include "xAODTracking/TrackParticlexAODHelpers.h" -#include "PATCore/AcceptData.h" -//#include "ElectronPhotonFourMomentumCorrection/EgammaCalibrationAndSmearingTool.h" - -#include <sstream> - -/** the constructor */ -ElectronTagTool::ElectronTagTool (const std::string& type, const std::string& name, - const IInterface* parent) : - AthAlgTool( type, name, parent ), - m_loose_cut_based(""), - m_medium_cut_based(""), - m_tight_cut_based(""), - m_veryloose_likelihood(""), - m_loose_likelihood(""), - m_medium_likelihood(""), - m_tight_likelihood(""), - m_loose_trackonly_isolation(""), - m_loose_isolation(""), - m_tight_isolation(""), - m_gradient_loose_isolation(""), - m_gradient_isolation(""), - m_fixedcut_tight_trackonly_isolation(""), - m_fixedcut_loose_isolation(""), - m_fixedcut_tight_isolation("") { - // m_EgammaCalibrationAndSmearingTool("CP::EgammaCalibrationAndSmearingTool/EgammaCalibrationAndSmearingTool", this) { - - /** Electron AOD Container Name */ - declareProperty("Container", m_containerNames); - - /**Electron MET input container Name */ - declareProperty("ElectronMETContainerName", m_electron_met_container_name); - - /** selection cut of Pt */ - declareProperty("EtCut", m_cut_Et = 7.0*CLHEP::GeV); - - /** Etcone Isolation cut values */ - declareProperty("EtconeIsoCutValues", m_etconeisocutvalues, "Cut values for etcone isolation"); - - /** Ptcone Isolation cut values */ - declareProperty("PtconeIsoCutValues", m_ptconeisocutvalues, "Cut values for ptcone isolation"); - - /** Electron Likelihood ID Tool name */ - declareProperty("VeryLooseLHSelector", m_veryloose_likelihood); - declareProperty("LooseLHSelector", m_loose_likelihood); - declareProperty("MediumLHSelector", m_medium_likelihood); - declareProperty("TightLHSelector", m_tight_likelihood); - - /** Electron Cut based ID Tool name */ - declareProperty("ElectronIsEMSelectorLoose", m_loose_cut_based); - declareProperty("ElectronIsEMSelectorMedium",m_medium_cut_based); - declareProperty("ElectronIsEMSelectorTight", m_tight_cut_based); - - /**Photon Ambiguity Tools */ - declareProperty("IsolationCorrectionTool", m_isolation_correction_tool); - - /** Electron Isolation Tool names */ - declareProperty("LooseTrackOnlyIsolation", m_loose_trackonly_isolation); - declareProperty("LooseIsolation", m_loose_isolation); - declareProperty("TightIsolation", m_tight_isolation); - declareProperty("GradientLooseIsolation", m_gradient_loose_isolation); - declareProperty("GradientIsolation", m_gradient_isolation); - declareProperty("FixedCutTightTrackOnlyIsolation",m_fixedcut_tight_trackonly_isolation); - declareProperty("FixedCutLooseIsolation", m_fixedcut_loose_isolation); - declareProperty("FixedCutTightIsolation", m_fixedcut_tight_isolation); - - /** key for primary vertex container */ - declareProperty ("PrimaryVertexKey", m_vxCandidate = "PrimaryVertices"); - - /** CP tool to calib objects */ - // declareProperty( "EgammaCalibrationAndSmearingTool", m_EgammaCalibrationAndSmearingTool); - - declareInterface<ElectronTagTool>( this ); -} - -/** initialization - called once at the beginning */ -StatusCode ElectronTagTool::initialize() { - - ATH_MSG_DEBUG( "in initialize()" ); - - /** retrieve and check the electron likelihood ID tool*/ - CHECK(m_veryloose_likelihood.retrieve()); - CHECK(m_loose_likelihood.retrieve()); - CHECK(m_medium_likelihood.retrieve()); - CHECK(m_tight_likelihood.retrieve()); - - /** retrieve and check the electron cut based ID tool*/ - CHECK(m_loose_cut_based.retrieve()); - CHECK(m_medium_cut_based.retrieve()); - CHECK(m_tight_cut_based.retrieve()); - - /** retrieve and check the gamma ambi tool*/ - CHECK(m_isolation_correction_tool.retrieve()); - - /** retrieve and check the electron isolation tool*/ - CHECK(m_loose_trackonly_isolation.retrieve()); - CHECK(m_loose_isolation.retrieve()); - CHECK(m_tight_isolation.retrieve()); - CHECK(m_gradient_loose_isolation.retrieve()); - CHECK(m_gradient_isolation.retrieve()); - CHECK(m_fixedcut_tight_trackonly_isolation.retrieve()); - CHECK(m_fixedcut_loose_isolation.retrieve()); - CHECK(m_fixedcut_tight_isolation.retrieve()); - - /** retreive and check the calibration tool */ - // CHECK(m_EgammaCalibrationAndSmearingTool.retrieve()); - - if (m_etconeisocutvalues.size() > 4) { - ATH_MSG_FATAL ("More than four etcone values are not permitted"); - return StatusCode::FAILURE; - } - if (m_ptconeisocutvalues.size() > 4) { - ATH_MSG_FATAL ("More than four ptcone values are not permitted"); - return StatusCode::FAILURE; - } - - return StatusCode::SUCCESS; -} - -/** build the attribute list - called in initialize */ -StatusCode ElectronTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, - const int& max) { - - ATH_MSG_DEBUG( "in attributeSpecification()" ); - - /** Electron Attributes */ attrMap[ ElectronAttributeNames[ElectronID::NElectron] ] = AthenaAttributeType("unsigned int",ElectronAttributeUnitNames[ElectronID::NElectron], ElectronAttributeGroupNames[ElectronID::NElectron]) ; - - std::ostringstream os; - for (int i=1; i<= max; ++i) { - - /** pt */ - os.str(""); - os << ElectronAttributeNames[ElectronID::Pt] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", ElectronAttributeUnitNames[ElectronID::Pt], ElectronAttributeGroupNames[ElectronID::Pt]) ; - m_ptStr.push_back( os.str() ); - - /** eta */ - os.str(""); - os << ElectronAttributeNames[ElectronID::Eta] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", ElectronAttributeUnitNames[ElectronID::Eta], ElectronAttributeGroupNames[ElectronID::Eta]) ; - m_etaStr.push_back( os.str() ); - - /** phi */ - os.str(""); - os << ElectronAttributeNames[ElectronID::Phi] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", ElectronAttributeUnitNames[ElectronID::Phi], ElectronAttributeGroupNames[ElectronID::Phi]) ; - m_phiStr.push_back( os.str() ); - - /** Tightness */ - os.str(""); - os << ElectronAttributeNames[ElectronID::Tight] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("unsigned int", ElectronAttributeUnitNames[ElectronID::Tight], ElectronAttributeGroupNames[ElectronID::Tight]) ; - m_tightStr.push_back( os.str() ); - - /** Isolation for Electron */ - os.str(""); - os << ElectronAttributeNames[ElectronID::Isol] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("unsigned int", ElectronAttributeUnitNames[ElectronID::Isol], ElectronAttributeGroupNames[ElectronID::Isol]) ; - m_isoStr.push_back( os.str() ); - - - } - - return StatusCode::SUCCESS; -} - -/** execute - called on every event */ -StatusCode ElectronTagTool::execute(TagFragmentCollection& eTagColl, const int& max) { - - ATH_MSG_DEBUG( "in execute()" ); - - /** initialize a vector of electrons */ - std::vector<const xAOD::Electron*> unique_electrons; - - /** Looping over xAOD electron containers */ - for ( unsigned int cont=0; cont<m_containerNames.size(); ++cont ) { - - /**Retrieve electron container*/ - const xAOD::ElectronContainer *electronContainer=0; - StatusCode sc = evtStore()->retrieve( electronContainer, m_containerNames[cont]); - if (sc.isFailure()) { - ATH_MSG_WARNING( "No AOD Electron container found in SG" ); - return StatusCode::SUCCESS; - } - ATH_MSG_DEBUG( "AOD Electron container successfully retrieved = " << m_containerNames[cont] ); - - // create a shallow copy of the electron container - std::pair< xAOD::ElectronContainer*, xAOD::ShallowAuxContainer* > shallowCopy = xAOD::shallowCopyContainer(*electronContainer); - xAOD::ElectronContainer *electronContainerShallowCopy = shallowCopy.first; - xAOD::ShallowAuxContainer *electronAuxContainerShallowCopy = shallowCopy.second; - - CHECK( evtStore()->record(electronContainerShallowCopy, "ElectronsShallowTAG")); - CHECK( evtStore()->record(electronAuxContainerShallowCopy, "ElectronsShallowTAGAux.")); - - static SG::AuxElement::Accessor< xAOD::IParticleLink > accSetOriginLink ("originalObjectLink"); - for ( xAOD::Electron *shallowCopyElectron : * electronContainerShallowCopy ) { - - /** fix calibration using tool */ - // ATH_MSG_DEBUG("Un-Calibrated pt = " << shallowCopyElectron->pt()); - // if(m_EgammaCalibrationAndSmearingTool->applyCorrection(*shallowCopyElectron) != CP::CorrectionCode::Ok){ - // ATH_MSG_WARNING("Cannot calibrate electron"); - // } - // ATH_MSG_DEBUG("Calibrated pt = " << shallowCopyElectron->pt()); - - /** apply isolation fix */ - if (m_isolation_correction_tool->applyCorrection(*shallowCopyElectron) != CP::CorrectionCode::Ok) { - ATH_MSG_WARNING("Cannot correct isolation of electron"); - } - - const xAOD::IParticleLink originLink( *electronContainer, shallowCopyElectron->index() ); - accSetOriginLink(*shallowCopyElectron) = originLink; - } - CHECK(evtStore()->setConst(electronContainerShallowCopy )); - CHECK(evtStore()->setConst(electronAuxContainerShallowCopy )); - - /** create an electron container for MET calculation */ - ConstDataVector< xAOD::ElectronContainer >* selectedElectrons = new ConstDataVector< xAOD::ElectronContainer >( SG::VIEW_ELEMENTS ); - ATH_CHECK( evtStore()->record( selectedElectrons, m_electron_met_container_name ) ); - - /** Loop over the container */ - xAOD::ElectronContainer::const_iterator elecItr = electronContainerShallowCopy->begin(); - xAOD::ElectronContainer::const_iterator elecItrE = electronContainerShallowCopy->end(); - int k=0; - for (; elecItr != elecItrE; ++elecItr, ++k) { - - ATH_MSG_DEBUG( "Electron " << k << ", pt = " << (*elecItr)->pt() ); - - /**Apply loose preselection using the likelihood tool and pT cut*/ - if ( ! m_loose_likelihood->accept(*elecItr) ) continue; - bool select = (*elecItr)->pt()>m_cut_Et; - if ( ! select ) continue; - - /** Fill a vector with selected electrons */ - unique_electrons.push_back(*elecItr); - /** Fill the MET input Container with selected electrons*/ - selectedElectrons->push_back(*elecItr); - } - } - - /**Sorted electron vector by pT*/ - if ( unique_electrons.size() > 1) { - ATH_MSG_DEBUG( "sorting electrons" ); - AnalysisUtils::Sort::pT( &unique_electrons ); - } - - /**Filling TAG variables*/ - std::vector<const xAOD::Electron*>::const_iterator EleItr = unique_electrons.begin(); - int i=0; - for (; EleItr != unique_electrons.end() && i < max; ++EleItr, ++i) { - - ATH_MSG_DEBUG( "Electron " << i << ", pt = " << (*EleItr)->pt() ); - - /** pt */ - if ( (*EleItr)->charge() < 0 ) eTagColl.insert( m_ptStr[i], (*EleItr)->pt() * (*EleItr)->charge() ); - else eTagColl.insert( m_ptStr[i], (*EleItr)->pt() ); - - /** eta */ - eTagColl.insert( m_etaStr[i], (*EleItr)->eta() ); - - /** phi */ - eTagColl.insert( m_phiStr[i], (*EleItr)->phi() ); - - /** Filling tighness info into TAG from xAOD and likelihood tool*/ - unsigned int tightness = 0x0; - if ( m_loose_cut_based->accept(*EleItr) ) tightness |= (1 << 0);//Cut based Loose - if ( m_medium_cut_based->accept(*EleItr)) tightness |= (1 << 2);//Cut based Medium - if ( m_tight_cut_based->accept(*EleItr)) tightness |= (1 << 4);//Cut based Tight - - if ( m_loose_likelihood->accept(*EleItr) ) tightness |= (1 << 1);//Likelihood Loose - if ( m_medium_likelihood->accept(*EleItr)) tightness |= (1 << 3);//Likelihood Medium - if ( m_tight_likelihood->accept(*EleItr)) tightness |= (1 << 5);//Likelihood Tight - if ( m_veryloose_likelihood->accept(*EleItr) ) tightness |= (1 << 8);//Likelihood VeryLoose - - /** get impact parameters of electron */ - double d0_significance = 0.; - double z0_sintheta = 0.; - getElectronImpactParameter (*EleItr, d0_significance, z0_sintheta); - /** cut on d0 */ - if ( fabs(d0_significance)<5.0 ) tightness |= (1 << 6); - /** cut on z0 */ - if ( fabs(z0_sintheta)<0.5 ) tightness |= (1 << 9); - - /** Object Quality */ - bool isGoodOQ = (*EleItr)->isGoodOQ(xAOD::EgammaParameters::BADCLUSELECTRON); - if( isGoodOQ ) tightness |= (1 << 7); - - /** b-layer cut */ - const ElementLink<xAOD::TrackParticleContainer> & tp_prime = (*EleItr)->trackParticleLink(); - if(!tp_prime){ - ATH_MSG_DEBUG("found no link to primary track particle"); - } else { - if( tp_prime.isValid() ) { - ATH_MSG_DEBUG("elementLink<TrackParticle> is valid"); - const xAOD::TrackParticle* tp = *tp_prime; - - // check blayer, if expected - uint8_t nblh = 0x0; - uint8_t eblh = 0x0; - uint8_t nblo = 0x0; - if( !tp->summaryValue(nblh,xAOD::numberOfBLayerHits)){ - ATH_MSG_WARNING("No nBLayerHits"); - } - if( !tp->summaryValue(nblo,xAOD::numberOfBLayerOutliers)){ - ATH_MSG_WARNING("No nofBLayerOutliers"); - } - if( !tp->summaryValue(eblh,xAOD::expectBLayerHit) || - (nblh + nblo > 0) ) tightness |= (1 << 10); - } - } - - /** Using Isolation Tool to fill bit from 4 to 7 with loosetrackonly,loose,gradientloose,gradient*/ - if(m_loose_trackonly_isolation->accept(**EleItr))tightness |= (1 << 24); - if(m_loose_isolation->accept(**EleItr)) tightness |= (1 << 25); - if(m_tight_isolation->accept(**EleItr)) tightness |= (1 << 26); - if(m_gradient_isolation->accept(**EleItr)) tightness |= (1 << 27); - if(m_gradient_loose_isolation->accept(**EleItr)) tightness |= (1 << 28); - if(m_fixedcut_tight_trackonly_isolation->accept(**EleItr))tightness |= (1 << 29); - if(m_fixedcut_loose_isolation->accept(**EleItr)) tightness |= (1 << 30); - if(m_fixedcut_tight_isolation->accept(**EleItr)) tightness |= (1 << 31); - - eTagColl.insert( m_tightStr[i], tightness ); - - - unsigned int iso = 0x0; - const float elEt = (*EleItr)->pt(); - const float inv_elEt = elEt != 0 ? 1. / elEt : 1; - float etcone=0; - - /** now start filling the isolation information */ - - /** let's compute the etcone20 isolation of the electron */ - if(!((*EleItr)->isolationValue(etcone,xAOD::Iso::etcone20))){ - ATH_MSG_ERROR( "No isolation etcone20pt defined" ); - } else { - /* Etcone20/pt are bits 0 and 1 */ - for(unsigned int j=0; j<m_etconeisocutvalues.size(); j++) { - /** apply etcone20/pt cuts first */ - if(m_etconeisocutvalues[j]<1.0) { - float relIso = etcone; - relIso *= inv_elEt; - if ( relIso < m_etconeisocutvalues[j] ) iso |= 1 << j; - - /**apply absolute etcone20 cut*/ - /* Etcone20 are bits 2 and 3 */ - } else if(etcone < m_etconeisocutvalues[j]) iso |= 1 << j; - - } - } - /** let's compute the topoetcone20 isolation of the electron */ - if(!((*EleItr)->isolationValue(etcone,xAOD::Iso::topoetcone20))){ - ATH_MSG_ERROR( "No isolation topoetcone20 defined" ); - } else { - /* TopoEtcone20/pt are bits 8 and 9 */ - for(unsigned int j=0; j<m_etconeisocutvalues.size(); j++) { - /** apply topoetcone20/pt cuts first */ - if(m_etconeisocutvalues[j]<1.0) { - float relIso = etcone; - relIso *= inv_elEt; - if ( relIso < m_etconeisocutvalues[j] ) iso |= 1 << (8+j); - - /**apply absolute topoetcone20 cut*/ - /* TopoEtcone20 are bits 10 and 11 */ - } else if(etcone < m_etconeisocutvalues[j]) iso |= 1 << (8+j); - - } - } - - /** let's compute the topoetcone40 isolation of the electron */ - if(!((*EleItr)->isolationValue(etcone,xAOD::Iso::IsolationType::topoetcone40))){ - ATH_MSG_ERROR( "No isolation topoetcone40 defined" ); - } - else{ - /* TopoEtcone40/pt are bits 16 and 17 */ - for (unsigned int j=0; j<m_etconeisocutvalues.size(); j++) - { - /** apply topoetcone40/pt cuts first */ - if ( m_etconeisocutvalues[j] < 1.0 ) - { - float relIso = etcone; - relIso *= inv_elEt; - if ( relIso < m_etconeisocutvalues[j] ) iso |= 1 << (16+j); - } - /**apply absolute topoetcone40 cut*/ - /* TopoEtcone40 are bits 17 and 18 */ - else if ( etcone < m_etconeisocutvalues[j] ) iso |= 1 << (16+j); // absolute isolation - } - } - - /** let's compute the ptcone20 isolation of the electron */ - float ptcone = 0; - if(!((*EleItr)->isolationValue(ptcone,xAOD::Iso::IsolationType::ptcone20))){ - ATH_MSG_DEBUG( "No isolation ptcone20 defined" ); - } - else{ - - /* ptcone20/pt are bits 24 and 25 */ - for (unsigned int j=0; j<m_ptconeisocutvalues.size(); j++) - { - /** apply ptcone20/pt cuts first */ - if ( m_ptconeisocutvalues[j] < 1.0 ) - { - float relIso = ptcone; - relIso *= inv_elEt; - if ( relIso < m_ptconeisocutvalues[j] ) iso |= 1 << (24+j); - } - /**apply absolute ptcone20 cut*/ - /* ptcone20 are bits 26 and 27 */ - else if ( ptcone < m_ptconeisocutvalues[j] ) iso |= 1 << (24+j); - } - } - /** let's compute the ptcone30 isolation of the electron */ - if(!((*EleItr)->isolationValue(ptcone,xAOD::Iso::IsolationType::ptcone30))){ - ATH_MSG_DEBUG( "No isolation ptcone30 defined" ); - } - else{ - /* ptcone30/pt are bits 20 and 21 */ - for (unsigned int j=0; j<m_ptconeisocutvalues.size(); j++) - { - /** apply ptcone30/pt cuts first */ - if ( m_ptconeisocutvalues[j] < 1.0 ) - { - float relIso = ptcone; - relIso *= inv_elEt; - if ( relIso < m_ptconeisocutvalues[j] ) iso |= 1 << (20+j); - } - /**apply absolute ptcone30 cut*/ - /* ptcone30 are bits 22 and 23 */ - else if ( ptcone < m_ptconeisocutvalues[j] ) iso |= 1 << (20+j); - } - } - /** let's compute the ptcone40 isolation of the electron */ - if(!((*EleItr)->isolationValue(ptcone,xAOD::Iso::IsolationType::ptcone40))){ - ATH_MSG_DEBUG( "No isolation ptcone40 defined" ); - } - else{ - /* ptcone30/pt are bits 28 and 29 */ - for (unsigned int j=0; j<m_ptconeisocutvalues.size(); j++) - { - /** apply ptcone40/pt cuts first */ - if ( m_ptconeisocutvalues[j] < 1.0 ) - { - float relIso = ptcone; - relIso *= inv_elEt; - if ( relIso < m_ptconeisocutvalues[j] ) iso |= 1 << (28+j); - } - /**apply absolute ptcone40 cut*/ - /* ptcone40 are bits 30 and 31 */ - else if ( ptcone < m_ptconeisocutvalues[j] ) iso |= 1 << (28+j); - } - } - /** let's compute the topoetcone30 isolation of the electron */ - if(!((*EleItr)->isolationValue(etcone,xAOD::Iso::IsolationType::topoetcone30))){ - ATH_MSG_DEBUG( "No isolation topoetcone30 defined" ); - } - else{ - /* topoEtcone30/pt are bits 12 and 13 */ - for (unsigned int j=0; j<m_etconeisocutvalues.size(); j++) - { - /** apply topoEtcone30/pt cuts first */ - if ( m_etconeisocutvalues[j] < 1.0 ) - { - float relIso = etcone; - relIso *= inv_elEt; - if ( relIso < m_etconeisocutvalues[j] ) iso |= 1 << (12+j); - } - /**apply absolute topoetcone30 cut*/ - /* topoetcone30 are bits 14 and 15 */ - else if ( etcone < m_etconeisocutvalues[j] ) iso |= 1 << (12+j); - } - } - - eTagColl.insert( m_isoStr[i], iso ); - - } - /** insert the number of loose electrons */ - ATH_MSG_DEBUG( "Number of Total Loose Electron " << i ); - eTagColl.insert(ElectronAttributeNames[ElectronID::NElectron], i); - - return StatusCode::SUCCESS; -} - -/** finalize - called once at the end */ -StatusCode ElectronTagTool::finalize() { - ATH_MSG_DEBUG( "in finalize()" ); - return StatusCode::SUCCESS; -} - -/** private function to get impact parameter */ -void ElectronTagTool::getElectronImpactParameter (const xAOD::Electron* elec, double& d0_significance, double& z0_sintheta) { - - /** let's initialize to 0 the impact parameters*/ - d0_significance = 0.; - z0_sintheta = 0.; - - StatusCode sc; - - /** retrieve the EventInfo container for Beam Spot */ - const xAOD::EventInfo* eventInfo = 0; - sc = evtStore()->retrieve( eventInfo, "EventInfo"); - if (sc.isFailure()) { - ATH_MSG_WARNING( "No AOD EventInfo container found in SG, return 0 impact paramters." ); - return; - } - - /** get vertex container, we assume the first vertex is the primary by convention */ - const xAOD::VertexContainer* vxContainer=0; - sc = evtStore()->retrieve(vxContainer, m_vxCandidate); - if (sc.isFailure() || !vxContainer) { - ATH_MSG_DEBUG ("Could not retrieve primary vertex info: " << m_vxCandidate <<", return 0 impact parameter."); - return; - } - if (vxContainer->size()<1) { - ATH_MSG_DEBUG ("No primary vertices reconstructed, return 0 impact parameters."); - return; - } - xAOD::VertexContainer::const_iterator vxI = vxContainer->begin(); - if ((*vxI)->vertexType() != xAOD::VxType::PriVtx) { - ATH_MSG_DEBUG ("---> no primary vertex reconstructed, return 0 impact parameters."); - return; - } - ATH_MSG_DEBUG ("---> vertex at (x/y/z) = " << (*vxI)->x() << " / " << (*vxI)->y() << " / " << (*vxI)->z() ); - - /** We try to find the link to the primary track and after we retrieve it*/ - const ElementLink<xAOD::TrackParticleContainer> & tp_prime = elec->trackParticleLink(); - if(!tp_prime){ - ATH_MSG_DEBUG("found no link to primary track particle"); - } else { - if( tp_prime.isValid() ) { - const xAOD::TrackParticle* trk = *tp_prime; - - /** d0 Significance w.r.t. Beam Spot covariance as recommended (even if it makes little sense) */ - d0_significance = xAOD::TrackingHelpers::d0significance(trk, - eventInfo->beamPosSigmaX(), - eventInfo->beamPosSigmaY(), - eventInfo->beamPosSigmaXY()); - /** z0_sintheta is an approximation, just do the diff */ - double delta_z0 = fabs(trk->z0() + trk->vz() - (*vxI)->z()); - z0_sintheta = delta_z0/sin(sin(trk->theta())); - } - } -} - diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/PhotonTagTool.cxx b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/PhotonTagTool.cxx deleted file mode 100755 index 66baf090de2654138719dab8ca1b7ddf31fe0ff7..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/PhotonTagTool.cxx +++ /dev/null @@ -1,489 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : PhotonTagTool.cxx -Package : offline/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools -Purpose : create a collection of PhotonTag - -*****************************************************************************/ - -#include "ElectronPhotonTagTools/PhotonTagTool.h" - -#include "Gaudi/Property.h" -#include "StoreGate/StoreGateSvc.h" -#include "xAODCore/ShallowCopy.h" -#include "xAODParticleEvent/IParticleLink.h" -#include "xAODEgamma/EgammaContainer.h" -#include "xAODEgamma/PhotonContainer.h" -#include "xAODEgamma/PhotonAuxContainer.h" -#include "xAODEgamma/Egamma.h" -#include "xAODEgamma/Photon.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" -#include "xAODEgamma/EgammaEnums.h" -#include "TagEvent/PhotonAttributeNames.h" -#include "AnalysisUtils/AnalysisMisc.h" -#include "AthContainers/ConstDataVector.h" -#include "PATCore/AcceptData.h" -// #include "ElectronPhotonFourMomentumCorrection/EgammaCalibrationAndSmearingTool.h" - -#include <sstream> - - -/** the constructor */ -PhotonTagTool::PhotonTagTool (const std::string& type, const std::string& name, - const IInterface* parent) : - AthAlgTool( type, name, parent ), - m_isFullsim(false), - m_shower_shape_fudge(""), - m_loose_cut_based(), - m_tight_cut_based(), - m_egamma_ambi_tool(), - /**Initializing private member for the isolation tool*/ - m_cone40_calo_isolation(""), - m_cone40_isolation(""), - m_cone20_isolation("") { - // m_EgammaCalibrationAndSmearingTool("CP::EgammaCalibrationAndSmearingTool/EgammaCalibrationAndSmearingTool", this) { - - /** Photon AOD Container Name */ - declareProperty("Container", m_containerName = "PhotonCollection"); - - /** Photon AOD Container Name */ - declareProperty("PhotonMETContainerName",m_photon_met_container_name); - - /** selection cut of Pt */ - declareProperty("EtCut", m_cut_Et = 7.0*CLHEP::GeV); - - /** Etcone Isolation cut values */ - declareProperty("EtconeIsoCutValues", m_etconeisocutvalues, "Cut values for etcone isolation"); - - /** Ptcone Isolation cut values */ - declareProperty("PtconeIsoCutValues", m_ptconeisocutvalues, "Cut values for ptcone isolation"); - - /**Shower shape fudge*/ - declareProperty("isFullsim" , m_isFullsim = false); - declareProperty("PhotonShowerFudgeTool", m_shower_shape_fudge); - - /**Photon Selector Tools */ - declareProperty("LooseSelector", m_loose_cut_based); - declareProperty("TightSelector", m_tight_cut_based); - - /**Photon Ambiguity Tools */ - declareProperty("EGammaAmbiTool", m_egamma_ambi_tool); - - /**Photon Ambiguity Tools */ - declareProperty("IsolationCorrectionTool", m_isolation_correction_tool); - - /**Photon Isolation Tool names*/ - declareProperty("cone40CaloOnlyIsoTool", m_cone40_calo_isolation); - declareProperty("cone40IsoTool", m_cone40_isolation); - declareProperty("cone20IsoTool", m_cone20_isolation); - - declareProperty("FixedCutTightCaloOnlyIsoTool", m_fixedcut_tightcaloonly_isolation); - declareProperty("FixedCutLooseIsoTool", m_fixedcut_loose_isolation); - declareProperty("FixedCutTightIsoTool", m_fixedcut_tight_isolation); - - /** CP tool to calib objects */ - // declareProperty( "EgammaCalibrationAndSmearingTool", m_EgammaCalibrationAndSmearingTool); - - declareInterface<PhotonTagTool>( this ); -} - - - -/** initialization - called once at the begginning */ -StatusCode PhotonTagTool::initialize() { - - ATH_MSG_DEBUG( "in initialize()" ); - /**retrieve and check shower shape fudge tool*/ - if (m_isFullsim) CHECK(m_shower_shape_fudge.retrieve()); - /** retrieve and check the photon selector tools*/ - CHECK(m_loose_cut_based.retrieve()); - CHECK(m_tight_cut_based.retrieve()); - - /** retrieve and check the gamma ambi tool*/ - CHECK(m_egamma_ambi_tool.retrieve()); - - /** retrieve and check the gamma ambi tool*/ - CHECK(m_isolation_correction_tool.retrieve()); - - /** retrieve and check the photon isolation tool*/ - CHECK(m_cone20_isolation.retrieve()); - CHECK(m_cone40_isolation.retrieve()); - CHECK(m_cone40_calo_isolation.retrieve()); - - CHECK(m_fixedcut_tightcaloonly_isolation.retrieve()); - CHECK(m_fixedcut_loose_isolation.retrieve()); - CHECK(m_fixedcut_tight_isolation.retrieve()); - - /** retrieve and check the calibration tool */ - // CHECK(m_EgammaCalibrationAndSmearingTool.retrieve()); - - if (m_etconeisocutvalues.size() > 4) { - ATH_MSG_FATAL ("More than four Etcone values are not permitted"); - return StatusCode::FAILURE; - } - if (m_ptconeisocutvalues.size() > 4) { - ATH_MSG_FATAL ("More than four ptcone values are not permitted"); - return StatusCode::FAILURE; - } - - return StatusCode::SUCCESS; -} - - - -/** build the attribute list - called in initialize */ -StatusCode PhotonTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, - const int& max) -{ - ATH_MSG_DEBUG( "in attributeSpecification()" ); - - /** Photon Attributes */ - attrMap[ PhotonAttributeNames[PhotonID::NPhoton] ] = AthenaAttributeType("unsigned int", PhotonAttributeUnitNames[PhotonID::NPhoton], PhotonAttributeGroupNames[PhotonID::NPhoton]); - attrMap[ PhotonAttributeNames[PhotonID::NConverted] ] = AthenaAttributeType("unsigned int", PhotonAttributeUnitNames[PhotonID::NConverted], PhotonAttributeGroupNames[PhotonID::NConverted]); - - std::ostringstream os; - for (int i=1; i<= max; ++i) { - - /** pt */ - os.str(""); - os << PhotonAttributeNames[PhotonID::Pt] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", PhotonAttributeUnitNames[PhotonID::Pt], PhotonAttributeGroupNames[PhotonID::Pt]); - m_ptStr.push_back( os.str() ); - - /** eta */ - os.str(""); - os << PhotonAttributeNames[PhotonID::Eta] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", PhotonAttributeUnitNames[PhotonID::Eta], PhotonAttributeGroupNames[PhotonID::Eta]); - m_etaStr.push_back( os.str() ); - - /** phi */ - os.str(""); - os << PhotonAttributeNames[PhotonID::Phi] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", PhotonAttributeUnitNames[PhotonID::Phi], PhotonAttributeGroupNames[PhotonID::Phi]); - m_phiStr.push_back( os.str() ); - - /** Tightness */ - os.str(""); - os << PhotonAttributeNames[PhotonID::Tight] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("unsigned int", PhotonAttributeUnitNames[PhotonID::Tight], PhotonAttributeGroupNames[PhotonID::Tight]); - m_tightStr.push_back( os.str() ); - - /** Isolation Photon */ - os.str(""); - os << PhotonAttributeNames[PhotonID::Isol] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("unsigned int", PhotonAttributeUnitNames[PhotonID::Isol], PhotonAttributeGroupNames[PhotonID::Isol]) ; - m_isoStr.push_back( os.str() ); - - } - - return StatusCode::SUCCESS; -} - - -/** execute - called on every event */ -StatusCode PhotonTagTool::execute(TagFragmentCollection& pTagColl, const int& max) { - - ATH_MSG_DEBUG( "in execute()" ); - - /** initialize a vector of photons */ - std::vector<const xAOD::Photon*> unique_photons; - - /** retrieve the AOD photon container */ - const xAOD::PhotonContainer *photonContainer; - StatusCode sc = evtStore()->retrieve( photonContainer, m_containerName); - if (sc.isFailure()) { - ATH_MSG_WARNING( "No xAOD Photon container found in SG" ); - return StatusCode::SUCCESS; - } - ATH_MSG_DEBUG( "xAOD Photon container successfully retrieved" ); - - // create a shallow copy of the photon container - std::pair< xAOD::PhotonContainer*, xAOD::ShallowAuxContainer* > shallowCopy = xAOD::shallowCopyContainer(*photonContainer); - xAOD::PhotonContainer *photonContainerShallowCopy = shallowCopy.first; - xAOD::ShallowAuxContainer *photonAuxContainerShallowCopy = shallowCopy.second; - - CHECK( evtStore()->record(photonContainerShallowCopy, "PhotonsShallowTAG")); - CHECK( evtStore()->record(photonAuxContainerShallowCopy, "PhotonsShallowTAGAux.")); - - static SG::AuxElement::Accessor< xAOD::IParticleLink > accSetOriginLink ("originalObjectLink"); - for ( xAOD::Photon* shallowCopyPhoton : *photonContainerShallowCopy ) { - - /** applying shower shape correction */ - if (m_isFullsim) CP::CorrectionCode correctionCode = m_shower_shape_fudge->applyCorrection(*shallowCopyPhoton); - - /** fix calibration using tool */ - /** - if ((shallowCopyPhoton->author() & xAOD::EgammaParameters::AuthorCaloTopo35) > 0) { - ATH_MSG_DEBUG("Author " <<xAOD::EgammaParameters::AuthorCaloTopo35<< " photon pt = " << shallowCopyPhoton->pt() << " do not calibrate, not supported "); - } else { - ATH_MSG_DEBUG("Un-Calibrated pt = " << shallowCopyPhoton->pt()); - if(m_EgammaCalibrationAndSmearingTool->applyCorrection(*shallowCopyPhoton) != CP::CorrectionCode::Ok){ - ATH_MSG_WARNING("Cannot calibrate electron"); - } - ATH_MSG_DEBUG("Calibrated pt = " << shallowCopyPhoton->pt()); - } - */ - - /** apply isolation fix */ - if (m_isolation_correction_tool->applyCorrection(*shallowCopyPhoton) != CP::CorrectionCode::Ok) { - ATH_MSG_WARNING("Cannot correct isolation of photon"); - } - - const xAOD::IParticleLink originLink( *photonContainer, shallowCopyPhoton->index() ); - accSetOriginLink(*shallowCopyPhoton) = originLink; - } - CHECK(evtStore()->setConst(photonContainerShallowCopy )); - CHECK(evtStore()->setConst(photonAuxContainerShallowCopy )); - - /** create an photon container for MET calculation */ - ConstDataVector< xAOD::PhotonContainer >* selectedPhotons = new ConstDataVector< xAOD::PhotonContainer >( SG::VIEW_ELEMENTS ); - ATH_CHECK( evtStore()->record( selectedPhotons, m_photon_met_container_name ) ); - - /** Loop over the container */ - xAOD::PhotonContainer::const_iterator photItr = photonContainerShallowCopy->begin(); - xAOD::PhotonContainer::const_iterator photItrE = photonContainerShallowCopy->end(); - int k=0; - for (; photItr != photItrE; ++photItr, ++k) { - - ATH_MSG_DEBUG( "Photon " << k << ", pt = " << (*photItr)->pt() ); - - /** apply Et cut*/ - bool passPtCut = (*photItr)->pt() > m_cut_Et; - /** apply loose PID cut*/ - bool isLoose = static_cast<bool>(m_loose_cut_based->accept(*photItr)); - /** apply author cut*/ - bool goodAuthor = ( (*photItr)->author() & xAOD::EgammaParameters::AuthorPhoton ) > 0 || - ( (*photItr)->author() & xAOD::EgammaParameters::AuthorAmbiguous ) > 0; - - bool select = passPtCut && isLoose && goodAuthor; - if ( ! select ) continue; - - /** Fill a vector with selected electrons */ - unique_photons.push_back(*photItr); - /** Fill the MET input Container with selected electrons*/ - selectedPhotons->push_back(*photItr); - } - - /**Sorted photon vector by pT*/ - if ( unique_photons.size() > 1) { - ATH_MSG_DEBUG( "sorting photons" ); - AnalysisUtils::Sort::pT( &unique_photons ); - } - - /** make the selection */ - std::vector<const xAOD::Photon*>::const_iterator photonItr = unique_photons.begin(); - std::vector<const xAOD::Photon*>::const_iterator photonItrE = unique_photons.end(); - int i=0; int nConverted = 0; - for (; photonItr != photonItrE && i < max; ++photonItr, ++i) { - - /**Filling TAG variables*/ - - /** pt */ - pTagColl.insert( m_ptStr[i], (*photonItr)->pt() ); - - /** eta */ - pTagColl.insert( m_etaStr[i], (*photonItr)->eta() ); - - /** phi */ - pTagColl.insert( m_phiStr[i], (*photonItr)->phi() ); - - /** Retrieving tightness info from xAOD */ - unsigned int tightness = 0x0; - - bool isLoose = static_cast<bool>(m_loose_cut_based->accept(*photonItr)); - if (isLoose) tightness |= (1<<0);//loose - - bool isTight = static_cast<bool>(m_tight_cut_based->accept(*photonItr)); - if (isTight) tightness |= (1<<1);//tight - - /** Photon Object Quality*/ - bool isGoodOQ = (*photonItr)->isGoodOQ(xAOD::EgammaParameters::BADCLUSPHOTON); - if (isGoodOQ) tightness |= (1<<2); - - bool passesEGammaAmbiTool = m_egamma_ambi_tool->accept( **photonItr ); - if (passesEGammaAmbiTool) tightness |= (1<<3); - - /** Using Isolation Tool to fill bit from 4 to 6 with cone20,cone40,cone40caloonly*/ - if(m_cone20_isolation->accept(**photonItr)) tightness |= (1 << 4); - if(m_cone40_isolation->accept(**photonItr)) tightness |= (1 << 5); - if(m_cone40_calo_isolation->accept(**photonItr)) tightness |= (1 << 6); - - if(m_fixedcut_tightcaloonly_isolation->accept(**photonItr)) tightness |= (1 << 7); - if(m_fixedcut_loose_isolation->accept(**photonItr)) tightness |= (1 << 8); - if(m_fixedcut_tight_isolation->accept(**photonItr)) tightness |= (1 << 9); - - pTagColl.insert( m_tightStr[i], tightness ); - - /** test for converted photon - and set the conversion flag */ - if ((*photonItr)->nVertices() != 0) nConverted++; - - /** Isolation of Photons */ - - unsigned int iso = 0x0; - float elEt = (*photonItr)->pt(); - float etcone = 0; - /** now start filling the isolation information */ - - /** let's compute the etcone20 isolation of the photon */ - if(!((*photonItr)->isolationValue(etcone,xAOD::Iso::IsolationType::etcone20))){ - ATH_MSG_DEBUG( "No etcone20 defined" ); - } - else{ - /* Etcone20/pt are bits 0 and 1 */ - for (unsigned int j=0; j<m_etconeisocutvalues.size(); j++) - { - /** apply etcone20/pt cuts first */ - if ( m_etconeisocutvalues[j] < 1.0 ) - { - float relIso = etcone; - if ( elEt != 0.0 ) relIso = relIso/elEt; - if ( relIso < m_etconeisocutvalues[j] ) iso |= 1 << j; - } - /**apply absolute etconse20 cut*/ - /* Etcone20 are bits 2 and 3 */ - else if ( etcone < m_etconeisocutvalues[j] ) iso |= 1 << j; - } - } - /** let's compute the topoetcone20 isolation of the photon */ - if(!((*photonItr)->isolationValue(etcone,xAOD::Iso::IsolationType::topoetcone20))){ - ATH_MSG_DEBUG( "No topoetcone20 defined" ); - } - else{ - /* TopoEtcone20/pt are bits 8 and 9 */ - for (unsigned int j=0; j<m_etconeisocutvalues.size(); j++) - { - /** apply topoetcone20/pt cuts first */ - if ( m_etconeisocutvalues[j] < 1.0 ) - { - float relIso = etcone; - if ( elEt != 0.0 ) relIso = relIso/elEt; - if ( relIso < m_etconeisocutvalues[j] ) iso |= 1 << (8+j); - } - /**apply absolute topoetcone20 cut*/ - /* TopoEtcone20 are bits 10 and 11 */ - else if ( etcone < m_etconeisocutvalues[j] ) iso |= 1 << (8+j); - } - } - /** let's compute the topoetcone40 isolation of the photon */ - if(!((*photonItr)->isolationValue(etcone,xAOD::Iso::IsolationType::topoetcone40))){ - ATH_MSG_DEBUG( "No isolation topoetcone40 defined" ); - } - else{ - /* TopoEtcone40/pt are bits 16 and 17 */ - for (unsigned int j=0; j<m_etconeisocutvalues.size(); j++) - { - /** apply topoetcone40/pt cuts first */ - if ( m_etconeisocutvalues[j] < 1.0 ) - { - float relIso = etcone; - if ( elEt != 0.0 ) relIso = relIso/elEt; - if ( relIso < m_etconeisocutvalues[j] ) iso |= 1 << (16+j); - } - /**apply absolute topoetcone40 cut*/ - /* TopoEtcone40 are bits 17 and 18 */ - else if ( etcone < m_etconeisocutvalues[j] ) iso |= 1 << (16+j); - } - } - /** let's compute the ptcone20 isolation of the photon */ - float ptcone =0; - if(!((*photonItr)->isolationValue(ptcone,xAOD::Iso::IsolationType::ptcone20))){ - ATH_MSG_DEBUG( "No isolation ptcone20 defined" ); - } - else{ - /* ptcone20/pt are bits 24 and 25 */ - for (unsigned int j=0; j<m_ptconeisocutvalues.size(); j++) - { - /** apply ptcone20/pt cuts first */ - if ( m_ptconeisocutvalues[j] < 1.0 ) - { - float relIso = ptcone; - if ( elEt != 0.0 ) relIso = relIso/elEt; - if ( relIso < m_ptconeisocutvalues[j] ) iso |= 1 << (24+j); - } - /**apply absolute ptcone20 cut*/ - /* ptcone20 are bits 26 and 27 */ - else if ( ptcone < m_ptconeisocutvalues[j] ) iso |= 1 << (24+j); - } - } - /** let's compute the topoetcone30 isolation of the photon */ - if(!((*photonItr)->isolationValue(etcone,xAOD::Iso::IsolationType::topoetcone30))){ - ATH_MSG_DEBUG( "No isolation topoetcone30 defined" ); - } - else{ - /* topoEtcone30/pt are bits 12 and 13 */ - for (unsigned int j=0; j<m_etconeisocutvalues.size(); j++) - { - /** apply topoEtcone30/pt cuts first */ - if ( m_etconeisocutvalues[j] < 1.0 ) - { - float relIso = etcone; - if ( elEt != 0.0 ) relIso = relIso/elEt; - if ( relIso < m_etconeisocutvalues[j] ) iso |= 1 << (12+j); - } - /**apply absolute topoetcone30 cut*/ - /* topoetcone30 are bits 14 and 15 */ - else if ( etcone < m_etconeisocutvalues[j] ) iso |= 1 << (12+j); - } - } - /** let's compute the ptcone30 isolation of the photon */ - if(!((*photonItr)->isolationValue(ptcone,xAOD::Iso::IsolationType::ptcone30))){ - ATH_MSG_DEBUG( "No isolation ptcone30 defined" ); - } - else{ - /* ptcone30/pt are bits 20 and 21 */ - for (unsigned int j=0; j<m_ptconeisocutvalues.size(); j++) - { - /** apply ptcone30/pt cuts first */ - if ( m_ptconeisocutvalues[j] < 1.0 ) - { - float relIso = ptcone; - if ( elEt != 0.0 ) relIso = relIso/elEt; - if ( relIso < m_ptconeisocutvalues[j] ) iso |= 1 << (20+j); - } - /**apply absolute ptcone30 cut*/ - /* ptcone30 are bits 22 and 23 */ - else if ( ptcone < m_ptconeisocutvalues[j] ) iso |= 1 << (20+j); - } - } - /** let's compute the ptcone40 isolation of the photon */ - if(!((*photonItr)->isolationValue(ptcone,xAOD::Iso::IsolationType::ptcone40))){ - ATH_MSG_DEBUG( "No isolation ptcone40 defined" ); - } - else{ - /* ptcone30/pt are bits 28 and 29 */ - for (unsigned int j=0; j<m_ptconeisocutvalues.size(); j++) - { - /** apply ptcone40/pt cuts first */ - if ( m_ptconeisocutvalues[j] < 1.0 ) - { - float relIso = ptcone; - if ( elEt != 0.0 ) relIso = relIso/elEt; - if ( relIso < m_ptconeisocutvalues[j] ) iso |= 1 << (28+j); - } - /**apply absolute ptcone40 cut*/ - /* ptcone40 are bits 30 and 31 */ - else if ( ptcone < m_ptconeisocutvalues[j] ) iso |= 1 << (28+j); - } - } - - pTagColl.insert( m_isoStr[i], iso ); - - } - - /** insert the number of loose photons */ - pTagColl.insert(PhotonAttributeNames[PhotonID::NPhoton], i); - pTagColl.insert(PhotonAttributeNames[PhotonID::NConverted], nConverted); - - return StatusCode::SUCCESS; -} - -/** finalize - called once at the end */ -StatusCode PhotonTagTool::finalize() { - ATH_MSG_DEBUG( "in finalize()" ); - return StatusCode::SUCCESS; -} - - diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/components/ElectronPhotonTagTools_entries.cxx b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/components/ElectronPhotonTagTools_entries.cxx deleted file mode 100644 index 21543765cde852aeaac5b85de43c33a77b3e727a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools/src/components/ElectronPhotonTagTools_entries.cxx +++ /dev/null @@ -1,10 +0,0 @@ -#include "ElectronPhotonTagTools/ElectronTagTool.h" -#include "ElectronPhotonTagTools/EgammaTagTool.h" -#include "ElectronPhotonTagTools/PhotonTagTool.h" - - -DECLARE_COMPONENT( EgammaTagTool ) -DECLARE_COMPONENT( ElectronTagTool ) -DECLARE_COMPONENT( PhotonTagTool ) - - diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/CMakeLists.txt b/PhysicsAnalysis/EventTag/EventTagAlgs/CMakeLists.txt index 43a7e5687eafbab6f9d512bfe26c473342bb0695..8cc206c2ac6cad0d5eb7e8421782bfccb5270f5a 100644 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/CMakeLists.txt +++ b/PhysicsAnalysis/EventTag/EventTagAlgs/CMakeLists.txt @@ -15,30 +15,21 @@ atlas_depends_on_subdirs( PUBLIC Control/StoreGate Event/xAOD/xAODEventInfo PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEvent - PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools - PhysicsAnalysis/EventTag/EventTagUtils - PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools - PhysicsAnalysis/MuonID/MuonTagTools ) + PhysicsAnalysis/EventTag/EventTagUtils ) # External dependencies: find_package( CLHEP ) # Component(s) in the package: atlas_add_component( EventTagAlgs - src/AnalysisTagBuilder.cxx - src/ElectronTagBuilder.cxx src/GlobalEventTagBuilder.cxx src/GlobalTriggerTagBuilder.cxx - src/MissingETTagBuilder.cxx - src/MuonTagBuilder.cxx - src/ParticleJetTagBuilder.cxx - src/PhotonTagBuilder.cxx src/RawInfoSummaryTagBuilder.cxx src/TagBuilderBase.cxx src/EventSplitter.cxx src/components/*.cxx INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent StoreGateLib SGtests xAODEventInfo AnalysisTriggerEvent ElectronPhotonTagToolsLib EventTagUtilsLib JetMissingEtTagToolsLib MuonTagToolsLib ) + LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent StoreGateLib SGtests xAODEventInfo AnalysisTriggerEvent EventTagUtilsLib ) # Install files from the package: atlas_install_headers( EventTagAlgs ) diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/share/AnalysisTagBuilder_jobOptions.py b/PhysicsAnalysis/EventTag/EventTagAlgs/share/AnalysisTagBuilder_jobOptions.py deleted file mode 100755 index 89435e2b5dabef4e6d74e677ea71fe9a7012a41d..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/share/AnalysisTagBuilder_jobOptions.py +++ /dev/null @@ -1,17 +0,0 @@ -from EventTagAlgs.EventTagGlobal import EventTagGlobal - -if not EventTagGlobal.InitEventTagBuilder: - raise RunTimeError('EventTagBuilder has not been initialized') - -# Combined Performance Groups - Tag Fragments -include ( "JetMissingEtTagTools/JetMissingEtIdentificationTagTool_jobOptions.py" ) - -from EventTagAlgs.EventTagAlgsConf import AnalysisTagBuilder - -AnalysisTagBuilder = AnalysisTagBuilder( - AttributeList = EventTagGlobal.AttributeList, - JetMissingEtIdentificationTagTool = JetMissingEtIdentificationTagTool, - NumJetMissinEt = 1, - CheckAttribute = True) - -topSequence += AnalysisTagBuilder diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/share/ElectronTagBuilder_jobOptions.py b/PhysicsAnalysis/EventTag/EventTagAlgs/share/ElectronTagBuilder_jobOptions.py deleted file mode 100755 index edd7209534657c6231b53d721f4f1357d36b30c4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/share/ElectronTagBuilder_jobOptions.py +++ /dev/null @@ -1,15 +0,0 @@ -from EventTagAlgs.EventTagGlobal import EventTagGlobal - -if not EventTagGlobal.InitEventTagBuilder: - raise RunTimeError('EventTagBuilder has not been initialized') - -include ( "ElectronPhotonTagTools/ElectronTagTool_jobOptions.py" ) - -from EventTagAlgs.EventTagAlgsConf import ElectronTagBuilder -ElectronTagBuilder = ElectronTagBuilder( - name = "ElectronTagBuilder", - ElectronTagTool = ElectronTagTool, - AttributeList = EventTagGlobal.AttributeList, - MaxNumber = 6, - CheckAttribute = True) -topSequence += ElectronTagBuilder diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/share/MissingETTagBuilder_jobOptions.py b/PhysicsAnalysis/EventTag/EventTagAlgs/share/MissingETTagBuilder_jobOptions.py deleted file mode 100755 index e928d0d50755cbf8f7ed372ab8d45b187506d60e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/share/MissingETTagBuilder_jobOptions.py +++ /dev/null @@ -1,15 +0,0 @@ -from EventTagAlgs.EventTagGlobal import EventTagGlobal -from ihooks import VERBOSE - -if not EventTagGlobal.InitEventTagBuilder: - raise RunTimeError('EventTagBuilder has not been initialized') - -include ( "JetMissingEtTagTools/MissingETTagTool_jobOptions.py" ) - -from EventTagAlgs.EventTagAlgsConf import MissingETTagBuilder -MissingETTagBuilder = MissingETTagBuilder( - name = "MissingETTagBuilder", - JetMissingEtTagTool = JetMissingEtTagTool, - AttributeList = EventTagGlobal.AttributeList, - CheckAttribute = True) -topSequence += MissingETTagBuilder diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/share/MuonTagBuilder_jobOptions.py b/PhysicsAnalysis/EventTag/EventTagAlgs/share/MuonTagBuilder_jobOptions.py deleted file mode 100755 index 8aeccafdfb8e4d2e635112d5790c1f608ebcd2dc..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/share/MuonTagBuilder_jobOptions.py +++ /dev/null @@ -1,16 +0,0 @@ -from EventTagAlgs.EventTagGlobal import EventTagGlobal - -if not EventTagGlobal.InitEventTagBuilder: - raise RunTimeError('EventTagBuilder has not been initialized') - -include ( "MuonTagTools/MuonTagTool_jobOptions.py" ) - -from EventTagAlgs.EventTagAlgsConf import MuonTagBuilder -MuonTagBuilder = MuonTagBuilder( - name = "MuonTagBuilder", - MuonTagTool = MuonTagTool, - AttributeList = EventTagGlobal.AttributeList, - MaxNumber = 6, - CheckAttribute = True) -topSequence += MuonTagBuilder - diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/share/ParticleJetTagBuilder_jobOptions.py b/PhysicsAnalysis/EventTag/EventTagAlgs/share/ParticleJetTagBuilder_jobOptions.py deleted file mode 100755 index 6b9c6f948130cc02162aca52e978389e1041b19a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/share/ParticleJetTagBuilder_jobOptions.py +++ /dev/null @@ -1,18 +0,0 @@ -from EventTagAlgs.EventTagGlobal import EventTagGlobal - -if not EventTagGlobal.InitEventTagBuilder: - raise RunTimeError('EventTagBuilder has not been initialized') - -#from EventShapeTools.EventDensityConfig import configEventShapeCopierAlg -#topSequence += configEventShapeCopierAlg("LCTopo") - -include ( "JetMissingEtTagTools/JetTagTool_jobOptions.py" ) - -from EventTagAlgs.EventTagAlgsConf import ParticleJetTagBuilder -ParticleJetTagBuilder = ParticleJetTagBuilder( - name = "ParticleJetTagBuilder", - JetMissingEtTagTool = JetMissingEtTagTool, - AttributeList = EventTagGlobal.AttributeList, - MaxNumber = 10, - CheckAttribute = True) -topSequence += ParticleJetTagBuilder diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/share/PhotonTagBuilder_jobOptions.py b/PhysicsAnalysis/EventTag/EventTagAlgs/share/PhotonTagBuilder_jobOptions.py deleted file mode 100755 index bdcb519d1cb429d8045da4997321669ab1e71dd4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/share/PhotonTagBuilder_jobOptions.py +++ /dev/null @@ -1,15 +0,0 @@ -from EventTagAlgs.EventTagGlobal import EventTagGlobal - -if not EventTagGlobal.InitEventTagBuilder: - raise RunTimeError('EventTagBuilder has not been initialized') - -include ( "ElectronPhotonTagTools/PhotonTagTool_jobOptions.py" ) - -from EventTagAlgs.EventTagAlgsConf import PhotonTagBuilder -PhotonTagBuilder = PhotonTagBuilder( - name = "PhotonTagBuilder", - PhotonTagTool = PhotonTagTool, - AttributeList = EventTagGlobal.AttributeList, - MaxNumber = 4, - CheckAttribute = True) -topSequence += PhotonTagBuilder diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/AnalysisTagBuilder.cxx b/PhysicsAnalysis/EventTag/EventTagAlgs/src/AnalysisTagBuilder.cxx deleted file mode 100755 index b46f1cc942a2352e0d5d619c0da77d560d37f79b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/AnalysisTagBuilder.cxx +++ /dev/null @@ -1,115 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AnalysisTagBuilder.h" - -#include "TagEvent/EgammaAttributeNames.h" -#include "TagEvent/JetMissingEtIdentificationAttributeNames.h" - -#include "TagEvent/TagFragmentCollection.h" - -#include "AthenaPoolUtilities/AthenaAttributeListSpecification.h" -#include "AthenaPoolUtilities/TagAthenaAttributeList.h" - -#include "GaudiKernel/MsgStream.h" - -#include <sstream> - -AnalysisTagBuilder::AnalysisTagBuilder( const std::string& name, ISvcLocator* pSvcLocator ) - : AthAlgorithm(name, pSvcLocator), - TagBuilderBase(), - m_jetMissingEtTagTool("JetMissingEtIdentificationTagTool", this){ - - declareProperty("JetMissingEtIdentificationTagTool", m_jetMissingEtTagTool); - declareProperty("AttributeList", m_attributeListName); - declareProperty("NumJetMissinEt", m_nJetMissingEt = 1); - declareProperty("CheckAttribute", m_check = true); -} - - -AnalysisTagBuilder::~AnalysisTagBuilder() -{} - - -StatusCode AnalysisTagBuilder::initialize() { - ATH_MSG_DEBUG( "Initializing " << name() ); - - /** get the Analysis Tag Tools */ - ATH_CHECK( m_jetMissingEtTagTool.retrieve() ); - - /** define attributes */ - ATH_MSG_DEBUG( "Defining the attribute list specification." ); - - /** define the attributes for the analysis tags */ - - std::map<std::string,AthenaAttributeType> attrMap; - - ATH_CHECK( m_jetMissingEtTagTool->attributeSpecification(attrMap, m_nJetMissingEt) ); - - - std::map<std::string,AthenaAttributeType>::iterator bMap = attrMap.begin(); - std::map<std::string,AthenaAttributeType>::iterator eMap = attrMap.end(); - - /** remove un-wanted attributes from the map and fill the attribute list */ - for (; bMap != eMap; ++bMap) { - bool c04 = checkAttribute((*bMap).first, JetMissingEtAttributeNames, JetMissingEt::NjetMetAttr, JetMissingEt::NumJetMissingEtID); - - bool check = c04; - - if (check) { - //m_attrMap[(*bMap).first] = ((*bMap).second).typeName(); - addAttribute( (*bMap).first, (*bMap).second ); - } else { - ATH_MSG_WARNING( "Removing " << (*bMap).first << " from the attribute List: not in TAG EDM" - ); - } - } - - return StatusCode::SUCCESS; -} - -StatusCode AnalysisTagBuilder::execute() { - ATH_MSG_DEBUG( "Executing " << name() ); - - /** retrieve TagAthenaAttributeList */ - TagAthenaAttributeList* attribList; - StatusCode sc = evtStore()->retrieve( attribList, m_attributeListName); - if (sc.isFailure()) { - ATH_MSG_WARNING( "No attribute list in SG" ); - return sc; - } - - /** create an Analysis Tag and ask the tool to fill it */ - - - /** Jet and MissingEt Word */ - TagFragmentCollection jetMissingEtTag; - sc = m_jetMissingEtTagTool->execute( jetMissingEtTag, m_nJetMissingEt ); - if (sc.isFailure()) { - ATH_MSG_WARNING( "Cannot Execute JetMissingEtIdentificationTagTool" ); - } else fillAttribute(attribList, jetMissingEtTag ); - - - /** decrease number of builders */ - TagBuilderBase::decNumOfBuilder(); - - /** if this is the last builder, lock the Attribute List */ - if (TagBuilderBase::lastBuilder()) - sc = evtStore()->setConst(attribList); - - if (sc.isFailure()) - { - ATH_MSG_WARNING( "Could not set const to attribList" ); - } - - ATH_MSG_DEBUG( "Finished" << name() ); - - return StatusCode::SUCCESS; -} - - -StatusCode AnalysisTagBuilder::finalize() -{ - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/AnalysisTagBuilder.h b/PhysicsAnalysis/EventTag/EventTagAlgs/src/AnalysisTagBuilder.h deleted file mode 100755 index fa5c0318df47be9c13df56ea9495530ec55576aa..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/AnalysisTagBuilder.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef EVENTTAGALGS_ANALYSISTAGBUILDER_H -#define EVENTTAGALGS_ANALYSISTAGBUILDER_H - -/** - Tag Builder for Analysis specific information such from physics groups -*/ - -//#include "GaudiKernel/Algorithm.h" -#include "AthenaBaseComps/AthAlgorithm.h" -#include "EventTagAlgs/TagBuilderBase.h" -#include "GaudiKernel/ToolHandle.h" - -#include "JetMissingEtTagTools/JetMissingEtIdentificationTagTool.h" - -class AnalysisTagBuilder : public AthAlgorithm, public TagBuilderBase -{ -public: - - //! Standard constructor. - AnalysisTagBuilder(const std::string& name, ISvcLocator* pSvcLocator); - - //! Destructor. - ~AnalysisTagBuilder(); - - StatusCode initialize(); - StatusCode execute(); - StatusCode finalize(); - -private: - - //! Attribute list name - std::string m_attributeListName; - - //! Analysis Specific tools - ToolHandle<JetMissingEtIdentificationTagTool> m_jetMissingEtTagTool; - - //! number analysis words - int m_nJetMissingEt; - -}; - -#endif diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/ElectronTagBuilder.cxx b/PhysicsAnalysis/EventTag/EventTagAlgs/src/ElectronTagBuilder.cxx deleted file mode 100755 index d51e3d9d108434d8fdfe692c55ad0ad9ecf8b72e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/ElectronTagBuilder.cxx +++ /dev/null @@ -1,92 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#include "ElectronTagBuilder.h" - -#include "TagEvent/TagFragmentCollection.h" -#include "TagEvent/ElectronAttributeNames.h" - -#include "AthenaPoolUtilities/AthenaAttributeListSpecification.h" -#include "AthenaPoolUtilities/TagAthenaAttributeList.h" - -#include <sstream> - -ElectronTagBuilder::ElectronTagBuilder( const std::string& name, ISvcLocator* pSvcLocator ) - : AthAlgorithm(name, pSvcLocator), - TagBuilderBase(), - m_electronTagTool("ElectronTagTool", this) { - declareProperty("ElectronTagTool", m_electronTagTool); - declareProperty("AttributeList", m_attributeListName); - declareProperty("MaxNumber", m_MAX_NUMBER = 4); - declareProperty("CheckAttribute", m_check = true); -} - -ElectronTagBuilder::~ElectronTagBuilder() -{} - - -StatusCode ElectronTagBuilder::initialize() { - ATH_MSG_DEBUG( "Initializing " << name() ); - - ATH_CHECK( m_electronTagTool.retrieve() ); - - /** define attributes */ - ATH_MSG_DEBUG( "Defining the attribute list specification." ); - - std::map<std::string,AthenaAttributeType> attrMap; - ATH_CHECK( m_electronTagTool->attributeSpecification(attrMap, m_MAX_NUMBER) ); - - std::map<std::string,AthenaAttributeType>::iterator bMap = attrMap.begin(); - std::map<std::string,AthenaAttributeType>::iterator eMap = attrMap.end(); - - /** remove un-wanted attributes from the map and fill the attribute list */ - for (; bMap != eMap; ++bMap) { - bool check = checkAttribute((*bMap).first, ElectronAttributeNames, ElectronID::NelecAttr, ElectronID::NumElectron); - if (check) { - //m_attrMap[(*bMap).first] = ((*bMap).second).typeName(); - addAttribute( (*bMap).first, (*bMap).second ); - } else { - ATH_MSG_WARNING( "Removing " << (*bMap).first << " from the attribute List: not in TAG EDM" ); - } - } - - return StatusCode::SUCCESS; -} - - -StatusCode ElectronTagBuilder::execute() -{ - ATH_MSG_DEBUG( "Executing " << name() ); - - /** retrieve TagAthenaAttributeList */ - TagAthenaAttributeList* attribList; - ATH_CHECK( evtStore()->retrieve( attribList, m_attributeListName) ); - - /** aggregate the electorn tag fragment */ - TagFragmentCollection electronTagColl; - StatusCode sc = m_electronTagTool->execute( electronTagColl, m_MAX_NUMBER ); - if (sc.isFailure()) { - ATH_MSG_WARNING( "Cannot Execute ElectronTagToool" ); - } else fillAttribute(attribList, electronTagColl); - - /** decrease number of builders */ - TagBuilderBase::decNumOfBuilder(); - - /** if this is the last builder, lock the Attribute List */ - if (TagBuilderBase::lastBuilder()) - sc = evtStore()->setConst(attribList); - - if (sc.isFailure()) - { - ATH_MSG_WARNING( "Could not set const to attribList" ); - } - - ATH_MSG_DEBUG( "Finished " << name() ); - return StatusCode::SUCCESS; -} - - -StatusCode ElectronTagBuilder::finalize() { - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/ElectronTagBuilder.h b/PhysicsAnalysis/EventTag/EventTagAlgs/src/ElectronTagBuilder.h deleted file mode 100755 index d9ee806dca79b29787b89696c652c7dd613d00d9..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/ElectronTagBuilder.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef EVENTTAGALGS_ELECTRONTAGBUILDER_H -#define EVENTTAGALGS_ELECTRONTAGBUILDER_H - -/** - Tag Builder for Electron -*/ - -#include "ElectronPhotonTagTools/ElectronTagTool.h" - -#include "GaudiKernel/ToolHandle.h" -#include "AthenaBaseComps/AthAlgorithm.h" -#include "EventTagAlgs/TagBuilderBase.h" - -class ElectronTagBuilder : public AthAlgorithm, public TagBuilderBase -{ -public: - - //! Standard constructor. - ElectronTagBuilder(const std::string& name, ISvcLocator* pSvcLocator); - - //! Destructor. - ~ElectronTagBuilder(); - - StatusCode initialize(); - StatusCode execute(); - StatusCode finalize(); - -private: - - //! Attribute list name - std::string m_attributeListName; - - //! number of particles - int m_MAX_NUMBER; - - //! Electron Tag Builder Tool - ToolHandle<ElectronTagTool> m_electronTagTool; -}; - -#endif diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/MissingETTagBuilder.cxx b/PhysicsAnalysis/EventTag/EventTagAlgs/src/MissingETTagBuilder.cxx deleted file mode 100755 index 41ff6b0a0533476730e5177dc3e75dd5b6b4c98f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/MissingETTagBuilder.cxx +++ /dev/null @@ -1,94 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#include "MissingETTagBuilder.h" - -#include "TagEvent/MissingETAttributeNames.h" - -#include "TagEvent/TagFragmentCollection.h" - -#include "AthenaPoolUtilities/AthenaAttributeListSpecification.h" -#include "AthenaPoolUtilities/TagAthenaAttributeList.h" - -#include <sstream> - -MissingETTagBuilder::MissingETTagBuilder( const std::string& name, ISvcLocator* pSvcLocator ) - : AthAlgorithm(name, pSvcLocator), - TagBuilderBase(), - m_jetMissingEtTagTool("JetMissingEtTagTool", this) { - declareProperty("JetMissingEtTagTool", m_jetMissingEtTagTool); - declareProperty("AttributeList", m_attributeListName); - declareProperty("CheckAttribute", m_check = true); -} - - -MissingETTagBuilder::~MissingETTagBuilder() -{} - - -StatusCode MissingETTagBuilder::initialize() -{ - ATH_MSG_DEBUG( "Initializing " << name() ); - - ATH_CHECK( m_jetMissingEtTagTool.retrieve() ); - - /** define attributes */ - ATH_MSG_DEBUG( "Defining the attribute list specification." ); - - std::map<std::string,AthenaAttributeType> attrMap; - ATH_CHECK( m_jetMissingEtTagTool->attributeSpecification(attrMap) ); - - std::map<std::string,AthenaAttributeType>::iterator bMap = attrMap.begin(); - std::map<std::string,AthenaAttributeType>::iterator eMap = attrMap.end(); - - /** remove un-wanted attributes from the map and fill the attribute list */ - for (; bMap != eMap; ++bMap) { - bool check = checkAttribute((*bMap).first, MissingEtAttributeNames, EtMiss::NetAttr, EtMiss::NumMissingEt); - if (check) { - //m_attrMap[(*bMap).first] = ((*bMap).second).typeName(); - addAttribute( (*bMap).first, (*bMap).second ); - } else { - ATH_MSG_WARNING( "Removing " << (*bMap).first << " from the attribute List: not in TAG EDM" ); - } - } - - return StatusCode::SUCCESS; -} - -StatusCode MissingETTagBuilder::execute() { - ATH_MSG_DEBUG( "Executing " << name() ); - - /** retrieve TagAthenaAttributeList */ - TagAthenaAttributeList* attribList = nullptr; - ATH_CHECK( evtStore()->retrieve( attribList, m_attributeListName) ); - - /** create a MissingEt Tag and ask the tool to fill it */ - TagFragmentCollection missingEtTag; - StatusCode sc = m_jetMissingEtTagTool->execute( missingEtTag ); - if (sc.isFailure()) { - ATH_MSG_WARNING( "Cannot Execute JetMissingEtTagTool" ); - } else fillAttribute(attribList, missingEtTag); - - /** decrease number of builders */ - TagBuilderBase::decNumOfBuilder(); - - /** if this is the last builder, lock the Attribute List */ - if (TagBuilderBase::lastBuilder()) - sc = evtStore()->setConst(attribList); - - if (sc.isFailure()) - { - ATH_MSG_WARNING( "Could not set const to attribList" ); - } - - ATH_MSG_DEBUG( "Finished" << name() ); - - return StatusCode::SUCCESS; -} - - -StatusCode MissingETTagBuilder::finalize() -{ - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/MissingETTagBuilder.h b/PhysicsAnalysis/EventTag/EventTagAlgs/src/MissingETTagBuilder.h deleted file mode 100755 index b31c1de537de1f4a784086d2b884c37cad802a14..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/MissingETTagBuilder.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef EVENTTAGALGS_MISSINGETTAGBUILDER_H -#define EVENTTAGALGS_MISSINGETTAGBUILDER_H - -/** - Tag Builder for MissingET -*/ - -#include "JetMissingEtTagTools/JetMissingEtTagTool.h" - -#include "GaudiKernel/ToolHandle.h" -#include "AthenaBaseComps/AthAlgorithm.h" -#include "EventTagAlgs/TagBuilderBase.h" - -class MissingETTagBuilder : public AthAlgorithm, public TagBuilderBase -{ -public: - - //! Standard constructor. - MissingETTagBuilder(const std::string& name, ISvcLocator* pSvcLocator); - - //! Destructor. - ~MissingETTagBuilder(); - - StatusCode initialize(); - StatusCode execute(); - StatusCode finalize(); - -private: - - //! Attribute list name - std::string m_attributeListName; - - //! Jet and Missing Tag Tool - ToolHandle<JetMetTagTool> m_jetMissingEtTagTool; -}; - -#endif diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/MuonTagBuilder.cxx b/PhysicsAnalysis/EventTag/EventTagAlgs/src/MuonTagBuilder.cxx deleted file mode 100755 index 4ac4bb3fbbcb951ad4d9136edb6d97f7c146f8cd..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/MuonTagBuilder.cxx +++ /dev/null @@ -1,92 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#include "MuonTagBuilder.h" - -#include "TagEvent/TagFragmentCollection.h" -#include "TagEvent/MuonAttributeNames.h" - -#include "AthenaPoolUtilities/AthenaAttributeListSpecification.h" -#include "AthenaPoolUtilities/TagAthenaAttributeList.h" - -#include <sstream> - -MuonTagBuilder::MuonTagBuilder( const std::string& name, ISvcLocator* pSvcLocator ) - : AthAlgorithm(name, pSvcLocator), - TagBuilderBase(), - m_muonTagTool("MuonTagTool",this) { - declareProperty("MuonTagTool", m_muonTagTool); - declareProperty("AttributeList", m_attributeListName); - declareProperty("MaxNumber", m_MAX_NUMBER = 4); - declareProperty("CheckAttribute", m_check = true); -} - -MuonTagBuilder::~MuonTagBuilder() -{} - - -StatusCode MuonTagBuilder::initialize() { - ATH_MSG_DEBUG( "Initializing " << name() ); - - ATH_CHECK( m_muonTagTool.retrieve() ); - - /** define attributes */ - ATH_MSG_DEBUG( "Defining the attribute list specification." ); - - std::map<std::string,AthenaAttributeType> attrMap; - ATH_CHECK( m_muonTagTool->attributeSpecification(attrMap, m_MAX_NUMBER) ); - - std::map<std::string,AthenaAttributeType>::iterator bMap = attrMap.begin(); - std::map<std::string,AthenaAttributeType>::iterator eMap = attrMap.end(); - - /** remove un-wanted attributes from the map and fill the attribute list */ - for (; bMap != eMap; ++bMap) { - bool check = checkAttribute((*bMap).first, MuonAttributeNames, MuonTAG::NmuonAttr, MuonTAG::NumMuon); - if (check) { - //m_attrMap[(*bMap).first] = ((*bMap).second).typeName(); - addAttribute( (*bMap).first, (*bMap).second ) ; - } else { - ATH_MSG_WARNING( "Removing " << (*bMap).first << " from the attribute List: not in TAG EDM" ); - } - } - - return StatusCode::SUCCESS; -} - - -StatusCode MuonTagBuilder::execute() { - ATH_MSG_DEBUG( "Executing " << name() ); - - /** retrieve TagAthenaAttributeList */ - TagAthenaAttributeList* attribList; - ATH_CHECK( evtStore()->retrieve( attribList, m_attributeListName) ); - - /** clear the MuonTagCollection and ask the tool to fill it */ - TagFragmentCollection muonTagColl; - StatusCode sc = m_muonTagTool->execute( muonTagColl, m_MAX_NUMBER ); - if (sc.isFailure()) { - ATH_MSG_WARNING( "Cannot Execute MuonTagToool" ); - } else fillAttribute(attribList, muonTagColl); - - /** decrease number of builders */ - TagBuilderBase::decNumOfBuilder(); - - /** if this is the last builder, lock the Attribute List */ - if (TagBuilderBase::lastBuilder()) - sc = evtStore()->setConst(attribList); - - if (sc.isFailure()) - { - ATH_MSG_WARNING( "Could not set const to attribList" ); - } - - ATH_MSG_DEBUG( "Finished " << name() ); - return StatusCode::SUCCESS; -} - - -StatusCode MuonTagBuilder::finalize() -{ - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/MuonTagBuilder.h b/PhysicsAnalysis/EventTag/EventTagAlgs/src/MuonTagBuilder.h deleted file mode 100755 index ab770ea233b8d5eea072ccbcfafa382eac86758e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/MuonTagBuilder.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef EVENTTAGALGS_MUONTAGBUILDER_H -#define EVENTTAGALGS_MUONTAGBUILDER_H - -/** - Tag Builder for Muon -*/ - -#include "MuonTagTools/MuonTagTool.h" - -#include "GaudiKernel/ToolHandle.h" -#include "AthenaBaseComps/AthAlgorithm.h" -#include "EventTagAlgs/TagBuilderBase.h" - -class MuonTagBuilder : public AthAlgorithm, public TagBuilderBase -{ -public: - - //! Standard constructor. - MuonTagBuilder(const std::string& name, ISvcLocator* pSvcLocator); - - //! Destructor. - ~MuonTagBuilder(); - - StatusCode initialize(); - StatusCode execute(); - StatusCode finalize(); - -private: - - //! Attribute list name - std::string m_attributeListName; - - //! number of particles - int m_MAX_NUMBER; - - //! Muon Tag Tool - ToolHandle<MuonTagTool> m_muonTagTool; -}; - -#endif diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/ParticleJetTagBuilder.cxx b/PhysicsAnalysis/EventTag/EventTagAlgs/src/ParticleJetTagBuilder.cxx deleted file mode 100755 index db5ecce078796dcb289338210656d9892c6f140a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/ParticleJetTagBuilder.cxx +++ /dev/null @@ -1,94 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#include "ParticleJetTagBuilder.h" - -#include "TagEvent/ParticleJetAttributeNames.h" - -#include "TagEvent/TagFragmentCollection.h" - -#include "AthenaPoolUtilities/AthenaAttributeListSpecification.h" -#include "AthenaPoolUtilities/TagAthenaAttributeList.h" - -#include <sstream> - -ParticleJetTagBuilder::ParticleJetTagBuilder( const std::string& name, ISvcLocator* pSvcLocator ) - : AthAlgorithm(name, pSvcLocator), - TagBuilderBase(), - m_jetMissingEtTagTool("JetMissingEtTagTool", this) { - declareProperty("JetMissingEtTagTool", m_jetMissingEtTagTool); - declareProperty("AttributeList", m_attributeListName); - declareProperty("MaxNumber", m_MAX_NUMBER = 6); - declareProperty("CheckAttribute", m_check = true); -} - -ParticleJetTagBuilder::~ParticleJetTagBuilder() -{} - -StatusCode ParticleJetTagBuilder::initialize() -{ - ATH_MSG_DEBUG( "Initializing " << name() ); - - ATH_CHECK( m_jetMissingEtTagTool.retrieve() ); - - /** define attributes */ - ATH_MSG_DEBUG( "Defining the attribute list specification." ); - - std::map<std::string,AthenaAttributeType> attrMap; - ATH_CHECK( m_jetMissingEtTagTool->attributeSpecification(attrMap, m_MAX_NUMBER) ); - - std::map<std::string,AthenaAttributeType>::iterator bMap = attrMap.begin(); - std::map<std::string,AthenaAttributeType>::iterator eMap = attrMap.end(); - - /** remove un-wanted attributes from the map and fill the attribute list */ - for (; bMap != eMap; ++bMap) { - bool check = checkAttribute((*bMap).first, JetAttributeNames, PJet::NjetAttr, PJet::NumJet); - if (check) { - //m_attrMap[(*bMap).first] = ((*bMap).second).typeName(); - addAttribute( (*bMap).first, (*bMap).second ); - } else { - ATH_MSG_WARNING( "Removing " << (*bMap).first << " from the attribute List: not in TAG EDM" ); - } - } - - return StatusCode::SUCCESS; -} - - -StatusCode ParticleJetTagBuilder::execute() { - ATH_MSG_DEBUG( "Executing " << name() ); - - // retrieve TagAthenaAttributeList - TagAthenaAttributeList* attribList = nullptr; - ATH_CHECK( evtStore()->retrieve( attribList, m_attributeListName) ); - - /** ask the tool to fill particle jet tag collection */ - TagFragmentCollection particleJetTagColl; - StatusCode sc = m_jetMissingEtTagTool->execute( particleJetTagColl, m_MAX_NUMBER ); - if (sc.isFailure()) { - ATH_MSG_WARNING( "Cannot Execute JetMissingEtTagToool" ); - } else fillAttribute(attribList, particleJetTagColl); - - /** decrease number of builders */ - TagBuilderBase::decNumOfBuilder(); - - /** if this is the last builder, lock the Attribute List */ - if (TagBuilderBase::lastBuilder()) - sc = evtStore()->setConst(attribList); - - if (sc.isFailure()) - { - ATH_MSG_WARNING( "Could not set const to attribList" ); - } - - ATH_MSG_DEBUG( "Finished" << name() ); - - return StatusCode::SUCCESS; -} - - -StatusCode ParticleJetTagBuilder::finalize() -{ - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/ParticleJetTagBuilder.h b/PhysicsAnalysis/EventTag/EventTagAlgs/src/ParticleJetTagBuilder.h deleted file mode 100755 index 8e2db99b9c4053f7b1017eda2e6b478902281e1c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/ParticleJetTagBuilder.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef EVENTTAGALGS_PARTICLEJETTAGBUILDER_H -#define EVENTTAGALGS_PARTICLEJETTAGBUILDER_H - -/** - Tag Builder for ParticleJet -*/ - -#include "JetMissingEtTagTools/JetMissingEtTagTool.h" - -#include "GaudiKernel/ToolHandle.h" -#include "AthenaBaseComps/AthAlgorithm.h" -#include "EventTagAlgs/TagBuilderBase.h" - -class ParticleJetTagBuilder : public AthAlgorithm, public TagBuilderBase -{ -public: - - //! Standard constructor. - ParticleJetTagBuilder(const std::string& name, ISvcLocator* pSvcLocator); - - //! Destructor. - ~ParticleJetTagBuilder(); - - StatusCode initialize(); - StatusCode execute(); - StatusCode finalize(); - -private: - - //! Attribute list name - std::string m_attributeListName; - - //! number of particles - int m_MAX_NUMBER; - - //! Jet and Missing Tag Tool - ToolHandle<JetMetTagTool> m_jetMissingEtTagTool; -}; - -#endif diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/PhotonTagBuilder.cxx b/PhysicsAnalysis/EventTag/EventTagAlgs/src/PhotonTagBuilder.cxx deleted file mode 100755 index 33b963cf6d11f57b68eca98a0f19d97389391b86..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/PhotonTagBuilder.cxx +++ /dev/null @@ -1,93 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#include "PhotonTagBuilder.h" - -#include "TagEvent/TagFragmentCollection.h" -#include "TagEvent/PhotonAttributeNames.h" - -#include "AthenaPoolUtilities/AthenaAttributeListSpecification.h" -#include "AthenaPoolUtilities/TagAthenaAttributeList.h" - -#include "CLHEP/Units/SystemOfUnits.h" - -#include <sstream> - -PhotonTagBuilder::PhotonTagBuilder( const std::string& name, ISvcLocator* pSvcLocator ) - : AthAlgorithm(name, pSvcLocator), - TagBuilderBase(), - m_photonTagTool("PhotonTagTool", this) { - declareProperty("PhotonTagTool", m_photonTagTool); - declareProperty("AttributeList", m_attributeListName); - declareProperty("MaxNumber", m_MAX_NUMBER = 4); - declareProperty("CheckAttribute", m_check = true); -} - -PhotonTagBuilder::~PhotonTagBuilder() -{} - -StatusCode PhotonTagBuilder::initialize() { - ATH_MSG_DEBUG( "Initializing " << name() ); - - ATH_CHECK( m_photonTagTool.retrieve() ); - - /** define attributes */ - ATH_MSG_DEBUG( "Defining the attribute list specification." ); - - std::map<std::string,AthenaAttributeType> attrMap; - ATH_CHECK( m_photonTagTool->attributeSpecification(attrMap, m_MAX_NUMBER) ); - - std::map<std::string,AthenaAttributeType>::iterator bMap = attrMap.begin(); - std::map<std::string,AthenaAttributeType>::iterator eMap = attrMap.end(); - - /** remove un-wanted attributes from the map and fill the attribute list */ - for (; bMap != eMap; ++bMap) { - bool check = checkAttribute((*bMap).first, PhotonAttributeNames, PhotonID::NphotonAttr, PhotonID::NumPhoton); - if (check) { - //m_attrMap[(*bMap).first] = ((*bMap).second).typeName(); - addAttribute( (*bMap).first, (*bMap).second ); - } else { - ATH_MSG_WARNING( "Removing " << (*bMap).first << " from the attribute List: not in TAG EDM" ); - } - } - - return StatusCode::SUCCESS; -} - -StatusCode PhotonTagBuilder::execute() { - ATH_MSG_DEBUG( "Executing " << name() ); - - /** retrieve TagAthenaAttributeList */ - TagAthenaAttributeList* attribList; - ATH_CHECK( evtStore()->retrieve( attribList, m_attributeListName) ); - - /** ask the tool to fill the photon tag fragment */ - TagFragmentCollection photonTagColl; - StatusCode sc = m_photonTagTool->execute( photonTagColl, m_MAX_NUMBER ); - if (sc.isFailure()) { - ATH_MSG_WARNING( "Cannot Execute PhotonTagToool" ); - } else fillAttribute(attribList, photonTagColl); - - /** decrease number of builders */ - TagBuilderBase::decNumOfBuilder(); - - /** if this is the last builder, lock the Attribute List */ - if (TagBuilderBase::lastBuilder()) - sc = evtStore()->setConst(attribList); - - if (sc.isFailure()) - { - ATH_MSG_WARNING( "Could not set const to attribList" ); - } - - ATH_MSG_DEBUG( "Finished " << name() ); - - return StatusCode::SUCCESS; -} - - -StatusCode PhotonTagBuilder::finalize() -{ - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/PhotonTagBuilder.h b/PhysicsAnalysis/EventTag/EventTagAlgs/src/PhotonTagBuilder.h deleted file mode 100755 index 4bc406d3beadf43435d4f6c719624ee2997e5222..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/PhotonTagBuilder.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef EVENTTAGALGS_PHOTONTAGBUILDER_H -#define EVENTTAGALGS_PHOTONTAGBUILDER_H - -/** - Tag Builder for Photon -*/ - -#include "ElectronPhotonTagTools/PhotonTagTool.h" - -#include "GaudiKernel/ToolHandle.h" -#include "AthenaBaseComps/AthAlgorithm.h" -#include "EventTagAlgs/TagBuilderBase.h" - -class PhotonTagBuilder : public AthAlgorithm, public TagBuilderBase -{ -public: - - //! Standard constructor. - PhotonTagBuilder(const std::string& name, ISvcLocator* pSvcLocator); - - //! Destructor. - ~PhotonTagBuilder(); - - StatusCode initialize(); - StatusCode execute(); - StatusCode finalize(); - -private: - - //! Attribute list name - std::string m_attributeListName; - - //! number of particles - int m_MAX_NUMBER; - - //! the photon tag tool - ToolHandle<PhotonTagTool> m_photonTagTool; -}; - -#endif diff --git a/PhysicsAnalysis/EventTag/EventTagAlgs/src/components/EventTagBuilder_entries.cxx b/PhysicsAnalysis/EventTag/EventTagAlgs/src/components/EventTagBuilder_entries.cxx index c996be3f32524c88816c24942a0d04d1df929585..39c9ec2d8c91f521bb6ba9fe9b4256f567d7d0d6 100644 --- a/PhysicsAnalysis/EventTag/EventTagAlgs/src/components/EventTagBuilder_entries.cxx +++ b/PhysicsAnalysis/EventTag/EventTagAlgs/src/components/EventTagBuilder_entries.cxx @@ -1,26 +1,12 @@ -#include "../AnalysisTagBuilder.h" #include "../RawInfoSummaryTagBuilder.h" -#include "../ElectronTagBuilder.h" #include "../GlobalEventTagBuilder.h" #include "../GlobalTriggerTagBuilder.h" -#include "../MuonTagBuilder.h" -#include "../PhotonTagBuilder.h" -#include "../MissingETTagBuilder.h" -#include "../ParticleJetTagBuilder.h" #include "EventTagAlgs/EventSplitter.h" -DECLARE_COMPONENT( AnalysisTagBuilder ) DECLARE_COMPONENT( RawInfoSummaryTagBuilder ) -DECLARE_COMPONENT( ElectronTagBuilder ) DECLARE_COMPONENT( GlobalEventTagBuilder ) DECLARE_COMPONENT( GlobalTriggerTagBuilder ) -DECLARE_COMPONENT( MuonTagBuilder ) -DECLARE_COMPONENT( PhotonTagBuilder ) -DECLARE_COMPONENT( ParticleJetTagBuilder ) -DECLARE_COMPONENT( MissingETTagBuilder ) - DECLARE_COMPONENT( EventSplitter ) - diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/CMakeLists.txt b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/CMakeLists.txt deleted file mode 100644 index 883aa2eda34ce67caea8394002244638ce9f26e6..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/CMakeLists.txt +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Package: JetMissingEtTagTools -################################################################################ - -# Declare the package name: -atlas_subdir( JetMissingEtTagTools ) - -# External dependencies: -find_package( CLHEP ) - -# Component(s) in the package: -atlas_add_library( JetMissingEtTagToolsLib - src/*.cxx - PUBLIC_HEADERS JetMissingEtTagTools - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities xAODJet GaudiKernel TagEvent AnalysisUtilsLib JetSelectorToolsLib FTagAnalysisInterfacesLib JetCalibToolsLib METUtilitiesLib - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} AthContainers xAODCore xAODMissingET xAODParticleEvent JetUtils METInterface) - -atlas_add_component( JetMissingEtTagTools - src/components/*.cxx - INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps AthenaPoolUtilities xAODJet GaudiKernel TagEvent AthContainers xAODCore xAODMissingET xAODParticleEvent AnalysisUtilsLib JetSelectorToolsLib JetUtils JetMissingEtTagToolsLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/JetMissingEtTagTools/JetMissingEtIdentificationTagTool.h b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/JetMissingEtTagTools/JetMissingEtIdentificationTagTool.h deleted file mode 100755 index c1fdb9a24febc75414c25094ba43e33cf3244ffa..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/JetMissingEtTagTools/JetMissingEtIdentificationTagTool.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef JETMISSINGETIDENTIFICATIONTAGTOOL_H -#define JETMISSINGETIDENTIFICATIONTAGTOOL_H - -/***************************************************************************** -Name : JetMissingEtIdentificationTagTool.h -Package : offline/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools -Purpose : build the JetMissingEtIdentification Tag object - AnalysisTag.h. - The JetMissingEtIdentification Analysis Tag fragment is built here - Jet identification method and MissingEt Calculation detailed information - can be encoded in this word -*****************************************************************************/ - -#include "GaudiKernel/ToolHandle.h" -#include "AthenaBaseComps/AthAlgTool.h" -//#include "StoreGate/StoreGateSvc.h" -#include "TagEvent/TagFragmentCollection.h" - #include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -/** Interface ID for JetMissingEtIdentificationTagTool*/ -static const InterfaceID IID_JetMissingEtIdentificationTagTool("JetMissingEtIdentificationTagTool", 1, 0); -class IJetCalibrationTool; - -class JetMissingEtIdentificationTagTool : public AthAlgTool { - -public: - - /** Standard Constructor */ - JetMissingEtIdentificationTagTool(const std::string& type, const std::string& name, const IInterface* parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { return IID_JetMissingEtIdentificationTagTool; }; - - /** Overriding initialize, finalize and execute */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int max); - virtual StatusCode execute(TagFragmentCollection& jetMissingEtTagCol, const int max); - virtual StatusCode finalize(); - -private: - - /** Properties */ - std::string m_jetContainerName; - std::string m_missingEtObjectName; - double m_badjetPtCut; - bool m_useEMScale; //Emergency fix for HI (W.L, 22.11.2010) - /** Event Store */ - -}; - -#endif // JETMISSINGETIDENTIFICATIONTAGTOOL_H - diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/JetMissingEtTagTools/JetMissingEtTagTool.h b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/JetMissingEtTagTools/JetMissingEtTagTool.h deleted file mode 100755 index 3439d350d43ce576955ac692f904917ad785f559..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/JetMissingEtTagTools/JetMissingEtTagTool.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef JETMISSINGETTAGTOOL_H -#define JETMISSINGETTAGTOOL_H - -/***************************************************************************** -Name : JetMissingEtTagTool.h -Package : offline/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools -Purpose : build the JetMissingEt Tag objects - ParticleJetTagCollection.h and MissingEtTag.h - The JetMissingEt Tag fragments are built here -*****************************************************************************/ - -#include "GaudiKernel/ToolHandle.h" -#include "AthenaBaseComps/AthAlgTool.h" -#include "TagEvent/TagFragmentCollection.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" -#include "xAODJet/JetContainer.h" -#include "FTagAnalysisInterfaces/IBTaggingSelectionTool.h" - -#include <map> - -// forward declaration -class IJetCalibrationTool; -class IJetUpdateJvt; -class IMETMaker; - -class JetMetTagTool : public AthAlgTool { - -public: - - /** Standard Constructor */ - JetMetTagTool(const std::string& type, const std::string& name, const IInterface* parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { - static const InterfaceID IID_JetMetTagTool("JetMetTagTool", 1, 0); - - return IID_JetMetTagTool; }; - - /** Overriding initialize, finalize */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int max); - virtual StatusCode execute(TagFragmentCollection& missingEtTag); - virtual StatusCode execute(TagFragmentCollection& jetTagCol, const int max); - virtual StatusCode finalize(); - - // Standard destructor - virtual ~JetMetTagTool( ); - -private: - - /**Calibrate and record a shallow copy of a given jet container */ - const xAOD::JetContainer* calibrateAndRecordShallowCopyJetCollection(const xAOD::JetContainer * jetContainer); - - /**recompute MET*/ - StatusCode recomputeMissingEt(); - - - /** Jet calibration tool handle */ - ToolHandle<IJetCalibrationTool> m_jetCalibrationTool; - ToolHandle<IJetUpdateJvt> m_jetJVTUpdateTool; - ToolHandle<IMETMaker> m_metmaker; - ToolHandle<IBTaggingSelectionTool> m_FixedCutBEff_60,m_FixedCutBEff_70,m_FixedCutBEff_85, - m_FlatBEff_60,m_FlatBEff_70,m_FlatBEff_77; - - /** Properties */ - std::string m_containerName; - std::string m_jetCalibcontainerName; - std::string m_jetCalibcontainerName_skim; - std::string m_ElectronsContainer_skim; - std::string m_PhotonsContainer_skim; - std::string m_TausContainer_skim; - std::string m_MuonsContainer_skim; - std::string m_METCoreName; - std::string m_METMapName; - std::string m_metContainerName; - std::string m_metRefFinalName; - std::string m_metRefJetName; - std::string m_metMuonsName; - std::string m_metSoftClusName; - std::string m_metRefTauName; - std::string m_metRefEleName; - std::string m_metRefGammaName; - std::string m_metPVSoftTrkName; - std::string m_metFinalTrkName; - - double m_jetPtCut; - double m_jetPtCut_skim; - bool m_useEMScale; //Emergency fix for HI (W.L, 22.11.2010) - bool m_isSimulation; - bool m_doJVT; - - /** the attribute names */ - std::vector<std::string> m_ptStr; - std::vector<std::string> m_etaStr; - std::vector<std::string> m_phiStr; - std::vector<std::string> m_pidStr; - std::vector<std::string> m_eStr; - - - }; - -#endif // JETMISSINGETTAGTOOL_H - - - diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/doc/packagedoc.h b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/doc/packagedoc.h deleted file mode 100644 index c4a74831d9959dc729dc4d31560dca990d996033..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/doc/packagedoc.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page JetMissingEtTagTools_page JetMissingEtTagTools - -@section JetMissingEtTagTools_introductionJetMissingEtTagTools Introduction -This package contains the alg tools for building the tag fragments for ParticleJet, MissingET and their -identification process. - -@section JetMissingEtTagTools_packagecontentJetMissingEtTagTools Package Contents -JetMissingEtTagTools contains the following tools: - -- JetMissingEtIdentificationTagTool ... tool for ParticleJet and MissingET identification TAG fragment -- JetMissingEtTagTool ... tool for ParticleJet and MissingET TAG fragments - -- for questions and comments: ketevi@bnl.gov - - - -*/ diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/share/JetMissingEtIdentificationTagTool_jobOptions.py b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/share/JetMissingEtIdentificationTagTool_jobOptions.py deleted file mode 100755 index 92561e84c1a52481b1ba35c742009d2e2a666734..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/share/JetMissingEtIdentificationTagTool_jobOptions.py +++ /dev/null @@ -1,13 +0,0 @@ -include.block ("JetMissingEtTagTools/JetMissingEtTagTool_jobOptions.py") - -########### Jet and MissingET Tag options ################ - -from JetMissingEtTagTools.JetMissingEtTagToolsConf import \ -JetMissingEtIdentificationTagTool as ConfiguredJetIdTagTool -JetMissingEtIdentificationTagTool = ConfiguredJetIdTagTool( - JetContainer = "AntiKt4TopoJets_TAGcalibskim", - BadEtCut = 20.0*GeV, - UseEMScale = False, - MissingEtObject = "MET_RefFinal") - -ToolSvc += JetMissingEtIdentificationTagTool diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/share/JetTagTool_jobOptions.py b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/share/JetTagTool_jobOptions.py deleted file mode 100755 index 5e698ecbaadee264ec37312c68866b157cf74950..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/share/JetTagTool_jobOptions.py +++ /dev/null @@ -1,152 +0,0 @@ -include.block ("JetMissingEtTagTools/JetTagTool_jobOptions.py") - -#==================================================================== -# Check if we have Monte Carlo or real data, based on the inputFileSummary -#==================================================================== -inputIsSimulation = False -if inputFileSummary.has_key("evt_type"): - eventTypeList = inputFileSummary.get("evt_type") - if eventTypeList.__contains__("IS_SIMULATION") : - print "Detected that the input file is a simulated dataset" - inputIsSimulation = True - else: - print "Detected that the input file is real data" - pass - -calibseq = "JetArea_Residual_EtaJES_GSC" -evs = "Kt4EMTopoOriginEventShape" -isdata = False -# options for data -if not inputIsSimulation: - calibseq += "_Insitu" - isdata = True - -# override for cosmics where neither PVs nor track moments are available -from AthenaCommon.BeamFlags import jobproperties -if jobproperties.Beam.beamType == 'cosmics': - print "Working on a cosmics file, use alternate JetCalib config" - calibseq = "JetArea_EtaJES" - evs = "Kt4EMTopoEventShape" - -JetCalibTool = CfgMgr.JetCalibrationTool("JetCalib", - JetCollection = "AntiKt4EMTopo", - ConfigFile = "JES_data2016_data2015_Recommendation_Dec2016.config", - CalibSequence = calibseq, - IsData = isdata, - RhoKey=evs - ) - -ToolSvc += JetCalibTool - -JetVertexTaggerTool = CfgMgr.JetVertexTaggerTool('JVT') -ToolSvc += JetVertexTaggerTool - -METMakerTool = CfgMgr.met__METMaker('METMaker', - DoRemoveMuonJets = True, - DoSetMuonJetEMScale = True, - JetJvtMomentName = 'Jvt', - CustomJetJvtCut = 0.59, - CustomJetJvtPtMax = 60e3 - ) -ToolSvc += METMakerTool - -FlvTagCutDefinitionsFileName = "xAODBTaggingEfficiency/13TeV/2017-21-13TeV-MC16-CDI-2018-06-24_v1.root" -MaxEta = 2.5 -MinPt = 20000. -JetAuthor = "AntiKt4EMTopoJets" -TaggerName = "MV2c10" - -BTagTool_FixedCutBEff_60 = CfgMgr.BTaggingSelectionTool('FixedCutBEff_60', - MaxEta = MaxEta, - MinPt = MinPt, - JetAuthor = JetAuthor, - TaggerName = TaggerName, - FlvTagCutDefinitionsFileName = FlvTagCutDefinitionsFileName, - OperatingPoint = "FixedCutBEff_60") -ToolSvc += BTagTool_FixedCutBEff_60 - -BTagTool_FixedCutBEff_70 = CfgMgr.BTaggingSelectionTool('FixedCutBEff_70', - MaxEta = MaxEta, - MinPt = MinPt, - JetAuthor = JetAuthor, - TaggerName = TaggerName, - FlvTagCutDefinitionsFileName = FlvTagCutDefinitionsFileName, - OperatingPoint = "FixedCutBEff_70") -ToolSvc += BTagTool_FixedCutBEff_70 - -BTagTool_FixedCutBEff_85 = CfgMgr.BTaggingSelectionTool('FixedCutBEff_85', - MaxEta = MaxEta, - MinPt = MinPt, - JetAuthor = JetAuthor, - TaggerName = TaggerName, - FlvTagCutDefinitionsFileName = FlvTagCutDefinitionsFileName, - OperatingPoint = "FixedCutBEff_85") -ToolSvc += BTagTool_FixedCutBEff_85 - -#FlvTagCutDefinitionsFileName = "xAODBTaggingEfficiency/13TeV/2015-PreRecomm-13TeV-MC12-CDI-October23_v1.root" -#BTagTool_FlatBEff_60 = CfgMgr.BTaggingSelectionTool('FlatBEff_60', -# MaxEta = MaxEta, -# MinPt = MinPt, -# JetAuthor = JetAuthor, -# TaggerName = TaggerName, -# FlvTagCutDefinitionsFileName = FlvTagCutDefinitionsFileName, -# OperatingPoint = "FlatBEff_60") -#ToolSvc += BTagTool_FlatBEff_60 -# -#BTagTool_FlatBEff_70 = CfgMgr.BTaggingSelectionTool('FlatBEff_70', -# MaxEta = MaxEta, -# MinPt = MinPt, -# JetAuthor = JetAuthor, -# TaggerName = TaggerName, -# FlvTagCutDefinitionsFileName = FlvTagCutDefinitionsFileName, -# OperatingPoint = "FlatBEff_70") -#ToolSvc += BTagTool_FlatBEff_70 -# -#BTagTool_FlatBEff_77 = CfgMgr.BTaggingSelectionTool('FlatBEff_77', -# MaxEta = MaxEta, -# MinPt = MinPt, -# JetAuthor = JetAuthor, -# TaggerName = TaggerName, -# FlvTagCutDefinitionsFileName = FlvTagCutDefinitionsFileName, -# OperatingPoint = "FlatBEff_77") -#ToolSvc += BTagTool_FlatBEff_77 - -from JetMissingEtTagTools.JetMissingEtTagToolsConf import JetMetTagTool as ConfiguredJetMissingEtTagTool -JetMissingEtTagTool=ConfiguredJetMissingEtTagTool( - JetCalibrationTool = JetCalibTool, - JetVertexTaggerTool = JetVertexTaggerTool, - JetContainer = "AntiKt4EMTopoJets", - EtCut = 40.0*GeV, - EtCutSkim = 20.0*GeV, - UseEMScale = False, - isSimulation = inputIsSimulation, - JetCalibContainer = "AntiKt4TopoJets_TAGcalib", - JetCalibContainerSkim = "AntiKt4TopoJets_TAGcalibskim", - ElectronsContainerSkim = "Electrons_TAG_skim", - PhotonsContainerSkim = "Photons_TAG_skim", - TausContainerSkim = "TauJets_TAG_skim", - MuonsContainerSkim = "Muons_TAG_skim", - METMaker = METMakerTool, - METCoreName = "MET_Core_AntiKt4EMTopo", - METMapName = "METAssoc_AntiKt4EMTopo", - METContainer = "MET_Reference_AntiKt4Topo_TAGcalibskim", - METFinalName = "FinalClus", - METJetName = "RefJet", - METMuonsName = "Muons", - METSoftClusName = "SoftClus", - METRefTauName = "RefTau", - METRefEleName = "RefEle", - METRefGammaName = "RefGamma", - METPVSoftTrkName = "PVSoftTrk", - METFinalTrkName = "FinalTrk", - FixedCutBEff60 = BTagTool_FixedCutBEff_60, - FixedCutBEff70 = BTagTool_FixedCutBEff_70, - FixedCutBEff85 = BTagTool_FixedCutBEff_85, - DoJVT = jetFlags.useVertices(), -# FlatBEff60 = BTagTool_FlatBEff_60, -# FlatBEff70 = BTagTool_FlatBEff_70, -# FlatBEff77 = BTagTool_FlatBEff_77 - #OutputLevel = 2, - ) - -ToolSvc += JetMissingEtTagTool diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/share/MissingETTagTool_jobOptions.py b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/share/MissingETTagTool_jobOptions.py deleted file mode 100755 index 0cf0ef8b19e214146e83d4de88279d2be38f4e5c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/share/MissingETTagTool_jobOptions.py +++ /dev/null @@ -1,8 +0,0 @@ -include.block ("JetMissingEtTagTools/MissingETTagTool_jobOptions.py") - - -########### MissingET tag options ################ - -from JetMissingEtTagTools.JetMissingEtTagToolsConf import JetMetTagTool as ConfiguredMissingEtTool -JetMissingEtTagTool = ConfiguredMissingEtTool() -ToolSvc += JetMissingEtTagTool \ No newline at end of file diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetMissingEtIdentificationTagTool.cxx b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetMissingEtIdentificationTagTool.cxx deleted file mode 100755 index 965d9640474044f9ce6510da36287cef7d07a08d..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetMissingEtIdentificationTagTool.cxx +++ /dev/null @@ -1,127 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : JetMissingEtIdentificationTagTool.cxx -Package : offline/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools -Purpose : create a JetMissingEtIdentificationTag - word to encode Jet and - Mising Et specific information -*****************************************************************************/ - -#include "GaudiKernel/MsgStream.h" -#include "Gaudi/Property.h" -#include "CLHEP/Units/SystemOfUnits.h" - -#include "xAODJet/JetContainer.h" -#include "xAODCore/ShallowCopy.h" - -#include "JetMissingEtTagTools/JetMissingEtIdentificationTagTool.h" -#include "TagEvent/JetMissingEtIdentificationAttributeNames.h" -#include "AnalysisUtils/AnalysisMisc.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -#include "JetMissingEtTagTools/JetMissingEtTagTool.h" - -// define some global/static selectors -// looseBadTool, tightBadTool and isUglyTool are defined here -#include "JetSelectorDefs.h" - -#include <vector> -/** the constructor */ -JetMissingEtIdentificationTagTool::JetMissingEtIdentificationTagTool (const std::string& type, const std::string& name, - const IInterface* parent) : - - AthAlgTool( type, name, parent ){ - - /** AOD Container Names */ - declareProperty("JetContainer", m_jetContainerName = "AntiKt4TopoJets_TAGcalibskim"); - declareProperty("MissingEtObject", m_missingEtObjectName = "MET_RefFinal"); - - /** Pt cut on jte - modifiable in job options */ - declareProperty("BadEtCut", m_badjetPtCut = 20.0*CLHEP::GeV); - - /** use EM scale instead of calibrated scale */ - declareProperty("UseEMScale", m_useEMScale=false); - - declareInterface<JetMissingEtIdentificationTagTool>( this ); -} - -/** initialization - called once at the begginning */ -StatusCode JetMissingEtIdentificationTagTool::initialize() { - MsgStream mLog(msgSvc(), name()); - mLog << MSG::DEBUG << "in intialize()" << endmsg; - - - CHECK(initJetSelectors()); - - return StatusCode::SUCCESS; -} - -/** build the attribute list - called in initialize */ -StatusCode JetMissingEtIdentificationTagTool::attributeSpecification( - std::map<std::string,AthenaAttributeType>& attrMap, const int max) { - - MsgStream mLog(msgSvc(), name()); - mLog << MSG::DEBUG << "in attributeSpecification()" << endmsg; - - /** specify the Jet and MissingET the attributes */ - - attrMap[ JetMissingEtAttributeNames[0] ] = AthenaAttributeType("unsigned int", JetMissingEtAttributeUnitNames[0], JetMissingEtAttributeGroupNames[0]); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** execute - called on every event */ -StatusCode JetMissingEtIdentificationTagTool::execute(TagFragmentCollection& jetMissingEtTagCol, - const int /*max*/) { - ATH_MSG_DEBUG("in execute()" ); - - /** fill the Jet and MissingET analysis tag */ - - const xAOD::JetContainer * jetContainer=0; - StatusCode sc = evtStore()->retrieve( jetContainer, m_jetContainerName); - if (sc.isFailure()) { - ATH_MSG_WARNING( "No AOD Jet container ("<<m_jetContainerName<<") found in SG" ); - return StatusCode::SUCCESS; - } - ATH_MSG_DEBUG("AOD Jet container ("<<m_jetContainerName<<") successfully retrieved" ); - - // determine jet scale to use - xAOD::JetScale scale = m_useEMScale ? xAOD::JetEMScaleMomentum : xAOD::JetAssignedScaleMomentum ; - - unsigned int AnyBadJet = 0x0; - - /** select and store jets that pass selection cuts into 'selecteJets' vector */ - for ( auto *calibratedJet : *jetContainer ) { - - const xAOD::JetFourMom_t &jetP4 = calibratedJet->jetP4(scale); - - /** select and store Jets */ - double pt = jetP4.Pt(); - - ATH_MSG_DEBUG( " Before touching signal state:" << pt ); - if ( pt < m_badjetPtCut ) continue; - - if (!isUglyTool->accept(*calibratedJet)) AnyBadJet |= 1<<0; - if (!looseBadTool->accept( *calibratedJet)) AnyBadJet |= 1<<2; - if (!tightBadTool->accept( *calibratedJet)) AnyBadJet |= 1<<4; - - } - - jetMissingEtTagCol.insert( JetMissingEtAttributeNames[0], AnyBadJet); - - return StatusCode::SUCCESS; -} - - -/** finialize - called once at the end */ -StatusCode JetMissingEtIdentificationTagTool::finalize() { - MsgStream mLog(msgSvc(), name()); - mLog << MSG::DEBUG << "in finalize()" << endmsg; - return StatusCode::SUCCESS; -} - diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetMissingEtTagTool.cxx b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetMissingEtTagTool.cxx deleted file mode 100755 index 42b609192924f0c8e76df7788d74db1970b102f7..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetMissingEtTagTool.cxx +++ /dev/null @@ -1,823 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : JetMissingEtTagTool.cxx -Package : offline/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools -Purpose : create a collection of JetMissingEtJetTag -*****************************************************************************/ -#include "JetMissingEtTagTools/JetMissingEtTagTool.h" - -#include "CLHEP/Units/SystemOfUnits.h" - -#include "AthContainers/ConstDataVector.h" -#include "xAODCore/ShallowCopy.h" -#include "xAODParticleEvent/IParticleLink.h" -#include "xAODJet/JetContainer.h" -#include "xAODJet/JetAuxContainer.h" -#include "JetUtils/JetCaloQualityUtils.h" - -#include "xAODEgamma/ElectronContainer.h" -#include "xAODEgamma/PhotonContainer.h" -#include "xAODMuon/MuonContainer.h" -#include "xAODTau/TauJetContainer.h" -#include "xAODBTagging/BTaggingContainer.h" -#include "xAODBTagging/BTaggingUtilities.h" - -#include "xAODMissingET/MissingET.h" -#include "xAODMissingET/MissingETContainer.h" -#include "xAODMissingET/MissingETAuxContainer.h" -#include "xAODMissingET/MissingETComposition.h" -#include "xAODMissingET/MissingETAssociationHelper.h" -#include "xAODMissingET/MissingETAssociationMap.h" - -#include "TagEvent/MissingETAttributeNames.h" -#include "TagEvent/ParticleJetAttributeNames.h" - -// JetCalibTools includes -#include "JetCalibTools/JetCalibrationTool.h" - -// JetInterface includes -#include "JetInterface/IJetUpdateJvt.h" -#include "METInterface/IMETMaker.h" - -#include "METUtilities/METHelpers.h" -#include "AnalysisUtils/AnalysisMisc.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -#include <sstream> -#include <vector> - -// define some global/static selectors -// veryLooseBadTool, looseBadTool, etc... are defined here -#include "JetSelectorDefs.h" - -/** the constructor */ -JetMetTagTool::JetMetTagTool (const std::string& type, const std::string& name, - const IInterface* parent) : - AthAlgTool( type, name, parent ), - m_jetCalibrationTool(""), m_jetJVTUpdateTool("") { - - /** JetMissingEt tools */ - declareProperty("JetCalibrationTool", m_jetCalibrationTool); - declareProperty("JetVertexTaggerTool", m_jetJVTUpdateTool); - /** MET maker tool */ - declareProperty( "METMaker", m_metmaker); - - /** B-tagging tools */ - declareProperty( "FixedCutBEff60", m_FixedCutBEff_60); - declareProperty( "FixedCutBEff70", m_FixedCutBEff_70); - declareProperty( "FixedCutBEff85", m_FixedCutBEff_85); - // declareProperty( "FlatBEff60", m_FlatBEff_60); - // declareProperty( "FlatBEff70", m_FlatBEff_70); - // declareProperty( "FlatBEff77", m_FlatBEff_77); - - /** JetMissingEt AOD Container Name */ - declareProperty("JetContainer", m_containerName = "AntiKt4EMTopo"); - declareProperty("JetCalibContainer", m_jetCalibcontainerName = "AntiKt4TopoJets_TAGcalib"); - - /** selection cut of Pt */ - declareProperty("EtCut", m_jetPtCut = 40.0*CLHEP::GeV); - declareProperty("EtCutSkim", m_jetPtCut_skim = 20.0*CLHEP::GeV); - - declareProperty("UseEMScale", m_useEMScale = false); - declareProperty("isSimulation", m_isSimulation = false); - - /** Have to toggle off in cosmics */ - declareProperty("DoJVT", m_doJVT = true); - - /** MET input with skims */ - declareProperty("JetCalibContainerSkim", m_jetCalibcontainerName_skim = "AntiKt4TopoJets_TAGcalibskim"); - declareProperty("ElectronsContainerSkim",m_ElectronsContainer_skim); - declareProperty("PhotonsContainerSkim", m_PhotonsContainer_skim); - declareProperty("TausContainerSkim", m_TausContainer_skim); - declareProperty("MuonsContainerSkim", m_MuonsContainer_skim); - declareProperty("METMapName", m_METMapName); - declareProperty("METCoreName", m_METCoreName); - - /** MET with skims */ - declareProperty("METContainer", m_metContainerName = "MET_Reference_AntiKt4Topo_TAGcalibskim"); - declareProperty("METFinalName", m_metRefFinalName = "FinalClus"); - declareProperty("METJetName", m_metRefJetName = "RefJet"); - declareProperty("METMuonsName", m_metMuonsName = "Muons"); - declareProperty("METSoftClusName", m_metSoftClusName = "SoftClus"); - declareProperty("METRefTauName", m_metRefTauName = "RefTau"); - declareProperty("METRefEleName", m_metRefEleName = "RefEle"); - declareProperty("METRefGammaName", m_metRefGammaName = "RefGamma"); - declareProperty("METPVSoftTrkName", m_metPVSoftTrkName = "PVSoftTrk"); - declareProperty("METFinalTrkName", m_metFinalTrkName = "FinalTrk"); - - declareInterface<JetMetTagTool>( this ); -} - -/** initialization - called once at the begginning */ -StatusCode JetMetTagTool::initialize() { - ATH_MSG_DEBUG( "in intialize()" ); - - // retrieve the jet calibration tool - CHECK(m_jetCalibrationTool.retrieve()); - - // retrieve the JVT update tool - CHECK(m_jetJVTUpdateTool.retrieve()); - - // MET maker tool - CHECK(m_metmaker.retrieve()); - - // B-tagging tools - CHECK(m_FixedCutBEff_60.retrieve()); - CHECK(m_FixedCutBEff_70.retrieve()); - CHECK(m_FixedCutBEff_85.retrieve()); - // CHECK(m_FlatBEff_60.retrieve()); - // CHECK(m_FlatBEff_70.retrieve()); - // CHECK(m_FlatBEff_77.retrieve()); - - // init selectors as defined in JetSelectorDefs.h - CHECK(initJetSelectors()); - - return StatusCode::SUCCESS; -} - -/** build the attribute list - called in initialize */ -StatusCode JetMetTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap) { - - ATH_MSG_DEBUG( "in attributeSpecification() for missingET" ); - - /** MissingET Ref_final attributes */ - attrMap[ MissingEtAttributeNames[EtMiss::MET_RefFinalX] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_RefFinalX], - MissingEtAttributeGroupNames[EtMiss::MET_RefFinalX]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_RefFinalY] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_RefFinalY], - MissingEtAttributeGroupNames[EtMiss::MET_RefFinalY]); - attrMap[ MissingEtAttributeNames[EtMiss::SumET] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::SumET], - MissingEtAttributeGroupNames[EtMiss::SumET]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_SoftClusX] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_SoftClusX], - MissingEtAttributeGroupNames[EtMiss::MET_SoftClusX]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_SoftClusY] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_SoftClusY], - MissingEtAttributeGroupNames[EtMiss::MET_SoftClusY]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_RefJetX] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_RefJetX], - MissingEtAttributeGroupNames[EtMiss::MET_RefJetX]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_RefJetY] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_RefJetY], - MissingEtAttributeGroupNames[EtMiss::MET_RefJetY]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_RefTauX] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_RefTauX], - MissingEtAttributeGroupNames[EtMiss::MET_RefTauX]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_RefTauY] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_RefTauY], - MissingEtAttributeGroupNames[EtMiss::MET_RefTauY]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_MuonsX] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_MuonsX], - MissingEtAttributeGroupNames[EtMiss::MET_MuonsX]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_MuonsY] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_MuonsY], - MissingEtAttributeGroupNames[EtMiss::MET_MuonsY]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_RefEleX] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_RefEleX], - MissingEtAttributeGroupNames[EtMiss::MET_RefEleX]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_RefEleY] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_RefEleY], - MissingEtAttributeGroupNames[EtMiss::MET_RefEleY]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_RefGammaX] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_RefGammaX], - MissingEtAttributeGroupNames[EtMiss::MET_RefGammaX]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_RefGammaY] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_RefGammaY], - MissingEtAttributeGroupNames[EtMiss::MET_RefGammaY]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_PVSoftTrkX] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_PVSoftTrkX], - MissingEtAttributeGroupNames[EtMiss::MET_PVSoftTrkX]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_PVSoftTrkY] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_PVSoftTrkY], - MissingEtAttributeGroupNames[EtMiss::MET_PVSoftTrkY]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_FinalTrkX] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_FinalTrkX], - MissingEtAttributeGroupNames[EtMiss::MET_FinalTrkX]); - attrMap[ MissingEtAttributeNames[EtMiss::MET_FinalTrkY] ] = AthenaAttributeType("float", - MissingEtAttributeUnitNames[EtMiss::MET_FinalTrkY], - MissingEtAttributeGroupNames[EtMiss::MET_FinalTrkY]); - return StatusCode::SUCCESS; -} - -/** build the attribute list - called in initialize */ -StatusCode JetMetTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, - const int max) { - ATH_MSG_DEBUG( "in attributeSpecification() for jet" ); - - std::ostringstream os; - - /** Jet Attributes */ - attrMap[ JetAttributeNames[PJet::NJet] ] = AthenaAttributeType("unsigned int", JetAttributeUnitNames[PJet::NJet], JetAttributeGroupNames[PJet::NJet]); - attrMap[ JetAttributeNames[PJet::JetSumET] ] = AthenaAttributeType("float", JetAttributeUnitNames[PJet::JetSumET], JetAttributeGroupNames[PJet::JetSumET]); - - for (int i=1; i<= max; ++i) { - - /** pt */ - os.str(""); - os << JetAttributeNames[PJet::Pt] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", JetAttributeUnitNames[PJet::Pt], JetAttributeGroupNames[PJet::Pt]); - m_ptStr.push_back( os.str() ); - - /** E */ - os.str(""); - os << JetAttributeNames[PJet::E] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", JetAttributeUnitNames[PJet::E], JetAttributeGroupNames[PJet::E]); - m_eStr.push_back( os.str() ); - - /** eta */ - os.str(""); - os << JetAttributeNames[PJet::Eta] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", JetAttributeUnitNames[PJet::Eta], JetAttributeGroupNames[PJet::Eta]); - m_etaStr.push_back( os.str() ); - - /** phi */ - os.str(""); - os << JetAttributeNames[PJet::Phi] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", JetAttributeUnitNames[PJet::Phi], JetAttributeGroupNames[PJet::Phi]); - m_phiStr.push_back( os.str() ); - - /** Jet PID */ - os.str(""); - os << JetAttributeNames[PJet::JetPID] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("unsigned int", JetAttributeUnitNames[PJet::JetPID], JetAttributeGroupNames[PJet::JetPID]); - m_pidStr.push_back( os.str() ); - - } - - attrMap[ JetAttributeNames[PJet::NpTJet] ] = AthenaAttributeType("unsigned int", JetAttributeUnitNames[PJet::NpTJet], JetAttributeGroupNames[PJet::NpTJet]); - attrMap[ JetAttributeNames[PJet::NpTBJet] ] = AthenaAttributeType("unsigned int", JetAttributeUnitNames[PJet::NpTBJet], JetAttributeGroupNames[PJet::NpTBJet]); - - return StatusCode::SUCCESS; -} - -/**Calibrate and record a shallow copy of a given jet container */ -const xAOD::JetContainer* JetMetTagTool::calibrateAndRecordShallowCopyJetCollection(const xAOD::JetContainer * jetContainer) { - - // create a shallow copy of the jet container - std::pair< xAOD::JetContainer*, xAOD::ShallowAuxContainer* > shallowCopy = xAOD::shallowCopyContainer(*jetContainer); - xAOD::JetContainer *jetContainerShallowCopy = shallowCopy.first; - xAOD::ShallowAuxContainer *jetAuxContainerShallowCopy = shallowCopy.second; - - if( evtStore()->record(jetContainerShallowCopy, m_jetCalibcontainerName).isFailure() ){ - ATH_MSG_WARNING("Unable to record JetCalibratedContainer: " << m_jetCalibcontainerName); - return 0; - } - if( evtStore()->record(jetAuxContainerShallowCopy, m_jetCalibcontainerName+"Aux.").isFailure() ){ - ATH_MSG_WARNING("Unable to record JetCalibratedAuxContainer: " << m_jetCalibcontainerName+"Aux."); - return 0; - } - - static SG::AuxElement::Accessor< xAOD::IParticleLink > accSetOriginLink ("originalObjectLink"); - static SG::AuxElement::Decorator< float > decJvt("Jvt"); - - if( m_jetCalibrationTool->applyCalibration(*jetContainerShallowCopy).isFailure() ){ - ATH_MSG_WARNING( "Failed to apply calibration to the jet container"); - return 0; - } - - for ( xAOD::Jet *shallowCopyJet : * jetContainerShallowCopy ) { - const xAOD::IParticleLink originLink( *jetContainer, shallowCopyJet->index() ); - accSetOriginLink(*shallowCopyJet) = originLink; - - if(m_doJVT) { - decJvt(*shallowCopyJet) = m_jetJVTUpdateTool->updateJvt(*shallowCopyJet); - } - } - - if( evtStore()->setConst(jetContainerShallowCopy ).isFailure() ){ - ATH_MSG_WARNING( "Failed to set jetcalibCollection (" << m_jetCalibcontainerName+"Aux." << ")const in StoreGate!"); - return 0; - } - if( evtStore()->setConst(jetAuxContainerShallowCopy ).isFailure() ){ - ATH_MSG_WARNING( "Failed to set jetcalibCollection (" << m_jetCalibcontainerName+"Aux." << ")const in StoreGate!"); - return 0; - } - - return jetContainerShallowCopy; -} - -/** execute - called on every event for jetTags */ -StatusCode JetMetTagTool::execute(TagFragmentCollection& jetMissingEtTagColl, const int max) { - - ATH_MSG_DEBUG( "in execute() - jet" ); - - static SG::AuxElement::Accessor< xAOD::IParticleLink > accSetOriginLink ("originalObjectLink"); - - /** retrieve the AOD Jet container */ - const xAOD::JetContainer *jetContainer=0; - StatusCode sc = evtStore()->retrieve( jetContainer, m_containerName); - if (sc.isFailure()) { - ATH_MSG_WARNING( "No AOD Jet container ("<<m_containerName<<") found in SG" ); - return StatusCode::SUCCESS; - } - ATH_MSG_DEBUG( "AOD Jet container ("<<m_containerName<<") successfully retrieved" ); - - /** Calibrate and record a shallow copy of the jet container */ - const xAOD::JetContainer * jetContainerShallowCopy = calibrateAndRecordShallowCopyJetCollection(jetContainer); - if(!jetContainerShallowCopy){ - ATH_MSG_WARNING( "Unable to create calibrated jet shallow copy container" ); - return StatusCode::SUCCESS; - } - - /** determine jet scale to use */ - xAOD::JetScale scale = m_useEMScale ? xAOD::JetEMScaleMomentum : xAOD::JetAssignedScaleMomentum ; - - /** create a new copy for MET calculation */ - ConstDataVector< xAOD::JetContainer >* selectedJets = new ConstDataVector< xAOD::JetContainer >( SG::VIEW_ELEMENTS ); - ATH_CHECK( evtStore()->record( selectedJets, m_jetCalibcontainerName_skim ) ); - - for ( const xAOD::Jet *originalJet : * jetContainerShallowCopy ) { - - const xAOD::JetFourMom_t &jetP4 = originalJet->jetP4(scale); - - /** select and store Jets */ - double pt = jetP4.Pt(); - - bool select = pt > m_jetPtCut_skim; - - if (select) { - - /** - //retrieve jvt information - bool hasjvt = originalJet->isAvailable<float>("JvtUpdate"); - - if (hasjvt) { - - //apply pile up removal selection - float jvt = originalJet->auxdata<float>("JvtUpdate"); - if ( !( originalJet->pt()< 60000. && fabs(originalJet->eta())<2.4 && fabs(jvt) < 0.59 ) ) { - selectedJets->push_back( originalJet ); - } - } - */ - - /** we do take all jets at this point, JVT cut is done in METmaker */ - selectedJets->push_back( originalJet ); - - } - } - - /** vector to store all jets that pass selection cuts */ - std::vector<const xAOD::Jet *> selectedJetsVector; - selectedJetsVector.reserve(jetContainerShallowCopy->size() ); - - /** for counting the total energy in jets */ - float jetSumEt = 0; - /** select and store jets that pass selection cuts into 'selectedJets' vector */ - for ( const xAOD::Jet *calibratedJet : *jetContainerShallowCopy ) { - - const xAOD::JetFourMom_t &jetP4 = calibratedJet->jetP4(scale); - - /** select and store Jets */ - double pt = jetP4.Pt(); - - bool select = ( pt > m_jetPtCut ) && ( looseBadTool->accept( *calibratedJet) ); - - if (select) { - ATH_MSG_DEBUG(" Selected jet with pt=" << pt); - - /** jet summed Et - to be implemented correctly */ - jetSumEt += pt; - - selectedJetsVector.push_back(calibratedJet); - } else { - ATH_MSG_DEBUG( "Did not select jet with pt=" << jetP4.pt() ); - } - } - - /** sort selected jets container by pT */ - AnalysisUtils::Sort::pT( &selectedJetsVector ); - - /** make the selection */ - int i = 0; - /** for counting different pT jets and b-jets */ - int ij40 = 0; - int ij50 = 0; - int ij55 = 0; - int ij80 = 0; - int ij100 = 0; - int iBj40 = 0; - int iBj50 = 0; - int iBj55 = 0; - int iBj80 = 0; - int iBj100 = 0; - - for (const xAOD::Jet *selectedJet : selectedJetsVector) { - - ATH_MSG_DEBUG(" Before touching signal state:" << selectedJet->pt()); - const xAOD::JetFourMom_t &jetP4 = selectedJet->jetP4(scale); - - if (i < max) { - - /** pt */ - jetMissingEtTagColl.insert(m_ptStr[i], selectedJet->pt()); - - /** e */ - jetMissingEtTagColl.insert(m_eStr[i], selectedJet->e()); - - /** eta */ - jetMissingEtTagColl.insert(m_etaStr[i], selectedJet->eta()); - - /** phi */ - jetMissingEtTagColl.insert(m_phiStr[i], selectedJet->phi()); - - /** add PID information */ - unsigned int pid = 0; - - /** isBadJet */ - if (!isUglyTool->accept(*selectedJet)) - pid |= 1 << 0; - if (!looseBadTool->accept(*selectedJet)) - pid |= 1 << 2; - if (!tightBadTool->accept(*selectedJet)) - pid |= 1 << 4; - - /** get JVT */ - bool hasjvt = selectedJet->isAvailable<float>("Jvt"); - if (hasjvt) { - float jvt = selectedJet->auxdata<float>("Jvt"); - - if (fabs(jvt) > 0.2){ - pid |= 1 << 6; - } - if (fabs(jvt) > 0.64){ - pid |= 1 << 7; - } - if (fabs(jvt) > 0.59){ - pid |= 1 << 17; - } - } - - /** get JVF */ - std::vector<float> jvf_v; - bool hasjvf = selectedJet->getAttribute < std::vector<float> > (xAOD::JetAttribute::JVF, jvf_v); - if (hasjvf) { - double jetVertFrac = -1; - if (!jvf_v.empty()) - jetVertFrac = jvf_v[0]; - if (jetVertFrac > 0.0) - pid |= 1 << 8; - if (jetVertFrac > 0.5) - pid |= 1 << 9; - if (jetVertFrac > 0.75) - pid |= 1 << 10; - if (jetVertFrac > 0.9) - pid |= 1 << 11; - } - - /** B-tagging using selection tools*/ - - /** B-tagging */ - const xAOD::BTagging* btag = xAOD::BTaggingUtilities::getBTagging( *selectedJet ); - if ( btag ) { - if ( m_FixedCutBEff_60->accept( selectedJet ) ) pid |= 1 << 12; // MV2c20 @ 60% - if ( m_FixedCutBEff_70->accept( selectedJet ) ) pid |= 1 << 13; // MV2c20 @ 70% - if ( m_FixedCutBEff_85->accept( selectedJet ) ) pid |= 1 << 14; // MV2c20 @ 85% - // if ( m_FlatBEff_60->accept( selectedJet ) ) pid |= 1 << 18; // MV2c20 @ flat 60% - // if ( m_FlatBEff_70->accept( selectedJet ) ) pid |= 1 << 19; // MV2c20 @ flat 70% - // if ( m_FlatBEff_77->accept( selectedJet ) ) pid |= 1 << 20; // MV2c20 @ flat 77% - } - - /** isbadCHF */ - std::vector<float> sumPtTrkvec; - selectedJet->getAttribute( xAOD::JetAttribute::SumPtTrkPt500, sumPtTrkvec ); - float sumpttrk = 0.; - if( ! sumPtTrkvec.empty() ) sumpttrk = sumPtTrkvec[0]; - float chf = sumpttrk/selectedJet->pt(); - - if (chf < 0.1) pid |= 1 << 16; - - jetMissingEtTagColl.insert(m_pidStr[i], pid); - - } - - /** count jets |eta|<2.8 with different pT cuts */ - if (fabs(jetP4.eta()) < 2.8) { - if (jetP4.pt() > 40.0 * CLHEP::GeV) - ij40++; - if (jetP4.pt() > 50.0 * CLHEP::GeV) - ij50++; - if (jetP4.pt() > 55.0 * CLHEP::GeV) - ij55++; - if (jetP4.pt() > 80.0 * CLHEP::GeV) - ij80++; - if (jetP4.pt() > 100.0 * CLHEP::GeV) - ij100++; - - const xAOD::BTagging* btag = xAOD::BTaggingUtilities::getBTagging( *selectedJet ); - if (bool(btag)) { - double mvx; - btag->MVx_discriminant("MV2c20", mvx); - if (fabs(jetP4.eta()) < 2.5 && mvx > -0.046) { - if (jetP4.pt() > 40.0 * CLHEP::GeV) - iBj40++; - if (jetP4.pt() > 50.0 * CLHEP::GeV) - iBj50++; - if (jetP4.pt() > 55.0 * CLHEP::GeV) - iBj55++; - if (jetP4.pt() > 80.0 * CLHEP::GeV) - iBj80++; - if (jetP4.pt() > 100.0 * CLHEP::GeV) - iBj100++; - } - } - } - - /** count the total number of jets */ - i++; - } - - /** insert the number Jet and BJet */ - jetMissingEtTagColl.insert(JetAttributeNames[PJet::NJet], i); - // jetMissingEtTagColl.insert(JetAttributeNames[PJet::NBJet], nbjet); - jetMissingEtTagColl.insert(JetAttributeNames[PJet::JetSumET], jetSumEt); - - /** add the encoded jet and b-tagged jet counting information */ - jetMissingEtTagColl.insert(JetAttributeNames[PJet::NpTJet], ij40+100*ij50+10000*ij55+1000000*ij80+100000000*ij100); - jetMissingEtTagColl.insert(JetAttributeNames[PJet::NpTBJet], iBj40+100*iBj50+10000*iBj55+1000000*iBj80+100000000*iBj100); - - return StatusCode::SUCCESS; -} - -/** recomputeMissingEt - called on every event for missing Et */ -StatusCode JetMetTagTool::recomputeMissingEt() { - - ATH_MSG_DEBUG( "in recomputeMissingEt() - missing Et" ); - - // Create a MissingETContainer with its aux store - - xAOD::MissingETContainer* newMet = new xAOD::MissingETContainer(); - if( evtStore()->record(newMet, m_metContainerName).isFailure() ) { - ATH_MSG_WARNING("Unable to record MissingETContainer: " << m_metContainerName); - return StatusCode::SUCCESS; - } - - xAOD::MissingETAuxContainer* metAuxCont = new xAOD::MissingETAuxContainer(); - if( evtStore()->record(metAuxCont, m_metContainerName+"Aux.").isFailure() ) { - ATH_MSG_WARNING("Unable to record MissingETAuxContainer: " << m_metContainerName+"Aux."); - return StatusCode::SUCCESS; - } - newMet->setStore(metAuxCont); - - // Settings for MET calculation *********************************************** - - // std::vector<const xAOD::IParticle*> uniques; - //MissingETBase::UsageHandler::Policy objScale = MissingETBase::UsageHandler::PhysicsObject; - - // Retrieve containers and compute MET **************************************** - - /// MET map - const xAOD::MissingETAssociationMap* metMap = 0; - if( evtStore()->retrieve(metMap, m_METMapName).isFailure() ) { - ATH_MSG_WARNING("Unable to retrieve MissingETAssociationMap: " << m_METMapName); - return StatusCode::SUCCESS; - } - xAOD::MissingETAssociationHelper metHelper(metMap); - - /// MET core - const xAOD::MissingETContainer* coreMet(0); - if( evtStore()->retrieve(coreMet, m_METCoreName).isFailure() ) { - ATH_MSG_WARNING("Unable to retrieve MissingETContainer: " << m_METCoreName); - return StatusCode::SUCCESS; - } - - /// Electrons - const xAOD::ElectronContainer* elCont(0); - if(!m_ElectronsContainer_skim.empty()) { - if( evtStore()->retrieve(elCont, m_ElectronsContainer_skim).isFailure() ) { - ATH_MSG_WARNING("Unable to retrieve input electron container: " << m_ElectronsContainer_skim); - return StatusCode::SUCCESS; - } - ATH_MSG_DEBUG("Successfully retrieved electron collection"); - - // compute MET term - // uniques.clear(); - if( m_metmaker->rebuildMET("RefEle", xAOD::Type::Electron, newMet, - elCont, - &metHelper).isFailure() ) { - ATH_MSG_WARNING("Failed to build electron term."); - } - //ATH_MSG_DEBUG("Selected " << elCont->size() << " MET electrons. " - // << uniques.size() << " are non-overlapping."); - } - - /// Photons - const xAOD::PhotonContainer* phCont(0); - if(!m_PhotonsContainer_skim.empty()) { - if( evtStore()->retrieve(phCont, m_PhotonsContainer_skim).isFailure() ) { - ATH_MSG_WARNING("Unable to retrieve input photon container: " << m_PhotonsContainer_skim); - return StatusCode::SUCCESS; - } - ATH_MSG_DEBUG("Successfully retrieved photon collection"); - - // compute MET term - //uniques.clear(); - if( m_metmaker->rebuildMET("RefGamma", xAOD::Type::Photon, newMet, - phCont, - &metHelper).isFailure() ) { - ATH_MSG_WARNING("Failed to build photon term."); - } - //ATH_MSG_DEBUG("Selected " << phCont->size() << " MET photons. " - // << uniques.size() << " are non-overlapping."); - } - - /// Taus - const xAOD::TauJetContainer* tauCont(0); - if(!m_TausContainer_skim.empty()) { - if( evtStore()->retrieve(tauCont, m_TausContainer_skim).isFailure() ) { - ATH_MSG_WARNING("Unable to retrieve input tau container: " << m_TausContainer_skim); - return StatusCode::SUCCESS; - } - ATH_MSG_DEBUG("Successfully retrieved tau collection"); - - // compute MET term - //uniques.clear(); - if( m_metmaker->rebuildMET("RefTau", xAOD::Type::Tau, newMet, - tauCont, - &metHelper).isFailure() ){ - ATH_MSG_WARNING("Failed to build tau term."); - } - //ATH_MSG_DEBUG("Selected " << tauCont->size() << " MET taus. " - //<< uniques.size() << " are non-overlapping."); - } - - /// Muons - const xAOD::MuonContainer* muonCont(0); - if(!m_MuonsContainer_skim.empty()) { - if( evtStore()->retrieve(muonCont, m_MuonsContainer_skim).isFailure() ) { - ATH_MSG_WARNING("Unable to retrieve input muon container: " << m_MuonsContainer_skim); - return StatusCode::SUCCESS; - } - ATH_MSG_DEBUG("Successfully retrieved muon collection"); - - // compute MET term - //uniques.clear(); - if( m_metmaker->rebuildMET("Muons", xAOD::Type::Muon, newMet, - muonCont, - &metHelper).isFailure() ) { - ATH_MSG_WARNING("Failed to build muon term."); - } - //ATH_MSG_DEBUG("Selected " << muonCont->size() << " MET muons. " - //<< uniques.size() << " are non-overlapping."); - } - - /// Jets - const xAOD::JetContainer* jetCont(0); - if( evtStore()->retrieve(jetCont, m_jetCalibcontainerName_skim).isFailure() ) { - ATH_MSG_WARNING("Unable to retrieve input jet container: " << m_jetCalibcontainerName_skim); - return StatusCode::SUCCESS; - } - ATH_MSG_DEBUG("Successfully retrieved jet collection"); - - // compute MET term - //uniques.clear(); - if( m_metmaker->rebuildJetMET("RefJet", m_metSoftClusName, m_metPVSoftTrkName, newMet, - jetCont, coreMet, &metHelper, true ).isFailure() ) { - ATH_MSG_WARNING("Failed to build jet and soft terms."); - } - //ATH_MSG_DEBUG("Of " << jetCont->size() << " jets, " - //<< uniques.size() << " are non-overlapping."); - - // compute Track soft term - MissingETBase::Types::bitmask_t trksource = MissingETBase::Source::Track; - if((*newMet)[m_metPVSoftTrkName]) trksource = (*newMet)[m_metPVSoftTrkName]->source(); - if( met::buildMETSum("FinalTrk", newMet, trksource).isFailure() ){ - ATH_MSG_WARNING("Building MET FinalTrk sum failed."); - } - - // compute cluster soft term - MissingETBase::Types::bitmask_t clsource = MissingETBase::Source::LCTopo; - if((*newMet)[m_metSoftClusName]) clsource = (*newMet)[m_metSoftClusName]->source(); - if( met::buildMETSum("FinalClus", newMet, clsource).isFailure() ) { - ATH_MSG_WARNING("Building MET FinalClus sum failed."); - } - return StatusCode::SUCCESS; -} - -/** execute - called on every event for missing Et */ -StatusCode JetMetTagTool::execute(TagFragmentCollection& missingEtTagColl) { - - ATH_MSG_DEBUG( "in execute() - missing Et" ); - - /** Calibrate and record a shallow copy of the jet container */ - StatusCode sc = recomputeMissingEt(); - if(sc.isFailure()){ - ATH_MSG_WARNING( "Unable to recompute MissingET" ); - return StatusCode::SUCCESS; - } - - const xAOD::MissingETContainer *met(0); //comment out const - sc = evtStore()->retrieve( met, m_metContainerName); - if (sc.isFailure()) { - ATH_MSG_WARNING( "No recomputed MissingET container found in SG" ); - return StatusCode::SUCCESS; - } - - const xAOD::MissingET* metfinal = (*met)[m_metRefFinalName]; //comment out const - if (!metfinal) { - ATH_MSG_WARNING( "No total MissingET object found in container with name " << m_metRefFinalName ); - return StatusCode::SUCCESS; - } - - ATH_MSG_DEBUG( "MET Final object successfully retrieved " ); - - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_RefFinalX], metfinal->mpx()); - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_RefFinalY], metfinal->mpy()); - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::SumET], metfinal->sumet()); - - const xAOD::MissingET *metSoftTerm = (*met)[m_metSoftClusName]; - if ( !metSoftTerm ) { - ATH_MSG_WARNING( "No soft MissingET found in container with name " << m_metSoftClusName ); - return StatusCode::SUCCESS; - } - - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_SoftClusX], metSoftTerm->mpx()); - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_SoftClusY], metSoftTerm->mpy()); - - const xAOD::MissingET *metRefJet = (*met)[m_metRefJetName]; - if ( !metRefJet ) { - ATH_MSG_WARNING( "No tau MissingET found in container with name " << m_metRefJetName ); - return StatusCode::SUCCESS; - } - - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_RefJetX], metRefJet->mpx()); - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_RefJetY], metRefJet->mpy()); - - - const xAOD::MissingET *metRefTau = (*met)[m_metRefTauName]; - if ( !metRefTau ) { - ATH_MSG_WARNING( "No tau MissingET found in container with name " << m_metRefTauName ); - return StatusCode::SUCCESS; - } - - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_RefTauX], metRefTau->mpx()); - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_RefTauY], metRefTau->mpy()); - - - const xAOD::MissingET *metMuons = (*met)[m_metMuonsName]; - if ( !metMuons ) { - ATH_MSG_WARNING( "No tau MissingET found in container with name " << m_metMuonsName ); - return StatusCode::SUCCESS; - } - - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_MuonsX], metMuons->mpx()); - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_MuonsY], metMuons->mpy()); - - - const xAOD::MissingET *metRefEle = (*met)[m_metRefEleName]; - if ( !metRefEle ) { - ATH_MSG_WARNING( "No tau MissingET found in container with name " << m_metRefEleName ); - return StatusCode::SUCCESS; - } - - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_RefEleX], metRefEle->mpx()); - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_RefEleY], metRefEle->mpy()); - - - const xAOD::MissingET *metRefGamma = (*met)[m_metRefGammaName]; - if ( !metRefGamma ) { - ATH_MSG_WARNING( "No tau MissingET found in container with name " << m_metRefGammaName ); - return StatusCode::SUCCESS; - } - - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_RefGammaX], metRefGamma->mpx()); - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_RefGammaY], metRefGamma->mpy()); - - - const xAOD::MissingET *metPVSoftTrk = (*met)[m_metPVSoftTrkName]; - if ( !metPVSoftTrk ) { - ATH_MSG_WARNING( "No tau MissingET found in container with name " << m_metPVSoftTrkName ); - return StatusCode::SUCCESS; - } - - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_PVSoftTrkX], metPVSoftTrk->mpx()); - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_PVSoftTrkY], metPVSoftTrk->mpy()); - - const xAOD::MissingET *metFinalTrk = (*met)[m_metFinalTrkName]; - if ( !metFinalTrk ) { - ATH_MSG_WARNING( "No tau MissingET found in container with name " << m_metFinalTrkName ); - return StatusCode::SUCCESS; - } - - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_FinalTrkX], metFinalTrk->mpx()); - missingEtTagColl.insert(MissingEtAttributeNames[EtMiss::MET_FinalTrkY], metFinalTrk->mpy()); - - return StatusCode::SUCCESS; -} - -/** finialize - called once at the end */ -StatusCode JetMetTagTool::finalize() { - ATH_MSG_DEBUG( "in finalize()" ); - CHECK(m_jetCalibrationTool.release()); - return StatusCode::SUCCESS; -} - -/** destructor */ -JetMetTagTool::~JetMetTagTool() {} - - diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetSelectorDefs.h b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetSelectorDefs.h deleted file mode 100644 index 0106a7b7ed039b663274a38f5f1548beae431718..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetSelectorDefs.h +++ /dev/null @@ -1,41 +0,0 @@ -// this file is -*- c++ -*- - -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#include "JetSelectorTools/JetCleaningTool.h" -#include <memory> - -namespace { - std::unique_ptr<JetCleaningTool> looseBadTool; - std::unique_ptr<JetCleaningTool> tightBadTool; - - std::unique_ptr<JetCleaningTool> isUglyTool; - - StatusCode initJetSelector (std::unique_ptr<JetCleaningTool>& ptr, - JetCleaningTool::CleaningLevel level, - bool doUgly=false) - { - ptr = std::make_unique<JetCleaningTool> (level,doUgly); - return ptr->initialize(); - } - - StatusCode initJetSelectors(){ - static bool inited = false; - if (inited) return StatusCode::SUCCESS; - inited = true; - - if (initJetSelector (looseBadTool, JetCleaningTool::LooseBad).isFailure()) - return StatusCode::FAILURE; - if (initJetSelector (tightBadTool, JetCleaningTool::TightBad).isFailure()) - return StatusCode::FAILURE; - if (initJetSelector (isUglyTool, JetCleaningTool::LooseBad,true).isFailure()) - return StatusCode::FAILURE; - - - return StatusCode::SUCCESS; - - } -} - diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/components/JetMissingEtTagTools_entries.cxx b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/components/JetMissingEtTagTools_entries.cxx deleted file mode 100644 index 1bc6454579307053d7701d5c17877947ab0415e8..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/components/JetMissingEtTagTools_entries.cxx +++ /dev/null @@ -1,8 +0,0 @@ -#include "JetMissingEtTagTools/JetMissingEtIdentificationTagTool.h" -#include "JetMissingEtTagTools/JetMissingEtTagTool.h" - - -DECLARE_COMPONENT( JetMissingEtIdentificationTagTool ) -DECLARE_COMPONENT( JetMetTagTool ) - - diff --git a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/CMakeLists.txt b/PhysicsAnalysis/JetTagging/JetTaggingTagTools/CMakeLists.txt deleted file mode 100644 index 264b6ca3a16292955df4e84375b7ece2c0bbbf2d..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -# Declare the package name: -atlas_subdir( JetTaggingTagTools ) - -# External dependencies: -find_package( CLHEP ) - -# Component(s) in the package: -atlas_add_library( JetTaggingTagToolsLib - src/*.cxx - PUBLIC_HEADERS JetTaggingTagTools - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities TagEvent StoreGateLib - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} GaudiKernel JetEvent ) - -atlas_add_component( JetTaggingTagTools - src/components/*.cxx - LINK_LIBRARIES JetTaggingTagToolsLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/JetTaggingTagTools/JetTaggingTagTool.h b/PhysicsAnalysis/JetTagging/JetTaggingTagTools/JetTaggingTagTools/JetTaggingTagTool.h deleted file mode 100755 index ae18e901f3ad2b3fe4276bf88598f81aadcad440..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/JetTaggingTagTools/JetTaggingTagTool.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef JETTAGGINGTAGTOOL_H -#define JETTAGGINGTAGTOOL_H - -/***************************************************************************** -Name : JetTaggingTagTool.h -Package : offline/PhysicsAnalysis/JetTagging/JetTaggingTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : build the Flavor Tagging Event Tag object - AnalysisTag.h. - The JetTagging Analysis Tag fragment is built here - For example encoding the results of hypotheses on different channels -*****************************************************************************/ - -#include "AthenaBaseComps/AthAlgTool.h" -#include "StoreGate/StoreGateSvc.h" -#include "TagEvent/TagFragmentCollection.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -#include <map> - -/** Interface ID for JetTaggingTagTool*/ -static const InterfaceID IID_JetTaggingTagTool("JetTaggingTagTool", 1, 0); - -class JetTaggingTagTool : public AthAlgTool { - -public: - - /** Standard Constructor */ - JetTaggingTagTool(const std::string& type, const std::string& name, const IInterface* -parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { return IID_JetTaggingTagTool; }; - - /** Overriding initialize, finalize and execute */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int max); - virtual StatusCode execute(TagFragmentCollection& tauIdTagCol, const int max); - virtual StatusCode finalize(); - -private: - - /** Properties */ - std::string m_jetContainerName; - double m_jetPtCut; - }; - -#endif // JETTAGGINGTAGTOOL_H - - - diff --git a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/doc/packagedoc.h b/PhysicsAnalysis/JetTagging/JetTaggingTagTools/doc/packagedoc.h deleted file mode 100644 index eb00e5284953c26f6068655d7f0a41efc89265f4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/doc/packagedoc.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page JetTaggingTagTools_page JetTaggingTagTools - -@section JetTaggingTagTools_introductionJetTaggingTagTools Introduction -This package contains the alg tools for building the TAG fragment for the flavor tagging process. - -@section JetTaggingTagTools_packagecontentJetTaggingTagTools Package Contents -JetTaggingTagTools contains the following tools: - -- JetTaggingTagTool ... tool for flavor tagging TAG fragment - -- for questions and comments: ketevi@bnl.gov - - - -*/ diff --git a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/share/JetTaggingTagTool_jobOptions.py b/PhysicsAnalysis/JetTagging/JetTaggingTagTools/share/JetTaggingTagTool_jobOptions.py deleted file mode 100755 index f0db9b74f31c7d12b90ffaadefc44d67afa7f6ae..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/share/JetTaggingTagTool_jobOptions.py +++ /dev/null @@ -1,11 +0,0 @@ -include.block ("JetTaggingTagTools/JetTaggingTagTool_jobOptions.py") - - -########### Flavor tagging analysis tag options ################ - -from JetTaggingTagTools.JetTaggingTagToolsConf import \ -JetTaggingTagTool as ConfiguredJetTaggingTagTool -JetTaggingTagTool=ConfiguredJetTaggingTagTool( - JetContainer = "AntiKt4TopoJets", - EtCut = 15.0*GeV) -ToolSvc += JetTaggingTagTool diff --git a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/src/JetTaggingTagTool.cxx b/PhysicsAnalysis/JetTagging/JetTaggingTagTools/src/JetTaggingTagTool.cxx deleted file mode 100755 index b06a2c17b81b57633847a4ec329f43e5abcbaa56..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/src/JetTaggingTagTool.cxx +++ /dev/null @@ -1,91 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : JetTaggingTagTool.cxx -Package : offline/PhysicsAnalysis/JetTagging/JetTaggingTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : create a Flavor Tagging Event Tag - a word to encode Flavor Tagging specific - information, perhaps about different tagging options. - -*****************************************************************************/ - -#include "GaudiKernel/MsgStream.h" -#include "Gaudi/Property.h" -#include "CLHEP/Units/SystemOfUnits.h" - -#include "StoreGate/StoreGateSvc.h" - -#include "JetEvent/JetCollection.h" - -#include "JetTaggingTagTools/JetTaggingTagTool.h" -#include "TagEvent/JetTaggingAttributeNames.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -/** the constructor */ -JetTaggingTagTool::JetTaggingTagTool (const std::string& type, const std::string& name, - const IInterface* parent) : - AthAlgTool( type, name, parent ) { - - /** AOD Container Names */ - declareProperty("JetContainer", m_jetContainerName = "AntiKt4H1TopoJets"); - - /** Pt cut on jte - modifiable in job options */ - declareProperty("EtCut", m_jetPtCut = 15.0*CLHEP::GeV); - - declareInterface<JetTaggingTagTool>( this ); -} - -/** initialization - called once at the begginning */ -StatusCode JetTaggingTagTool::initialize() { - MsgStream mLog(msgSvc(), name()); - mLog << MSG::DEBUG << "in intialize()" << endmsg; - - return StatusCode::SUCCESS; -} - -/** build the attribute list - called in initialize */ -StatusCode JetTaggingTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, - const int max) { - - MsgStream mLog(msgSvc(), name()); - mLog << MSG::DEBUG << "in attributeSpecification()" << endmsg; - - /** specifiy the Jet Tagging the attributes */ - - attrMap[ JetTaggingAttributeNames[0] ] = AthenaAttributeType("unsigned int",JetTaggingAttributeUnitNames[0], JetTaggingAttributeGroupNames[0]); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** execute - called on every event */ -StatusCode JetTaggingTagTool::execute(TagFragmentCollection& jetTagCol, const int max) { - - MsgStream mLog(msgSvc(), name()); - mLog << MSG::DEBUG << "in execute()" << endmsg; - - /** fill the JetTagging analysis tag */ - - unsigned int fragment = 0x0; - jetTagCol.insert( JetTaggingAttributeNames[0], fragment ); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** finialize - called once at the end */ -StatusCode JetTaggingTagTool::finalize() { - MsgStream mLog(msgSvc(), name()); - mLog << MSG::DEBUG << "in finalize()" << endmsg; - return StatusCode::SUCCESS; -} - - - diff --git a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/src/components/JetTaggingTagTools_entries.cxx b/PhysicsAnalysis/JetTagging/JetTaggingTagTools/src/components/JetTaggingTagTools_entries.cxx deleted file mode 100644 index 88402c0d3fc1913b2f509fbdc86e9d70840e52e4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTaggingTagTools/src/components/JetTaggingTagTools_entries.cxx +++ /dev/null @@ -1,6 +0,0 @@ -#include "JetTaggingTagTools/JetTaggingTagTool.h" - - -DECLARE_COMPONENT( JetTaggingTagTool ) - - diff --git a/PhysicsAnalysis/MuonID/MuonTagTools/CMakeLists.txt b/PhysicsAnalysis/MuonID/MuonTagTools/CMakeLists.txt deleted file mode 100644 index 1cb53e78aa0f8bc53d99266791a2f39341e917d7..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/MuonID/MuonTagTools/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -################################################################################ -# Package: MuonTagTools -################################################################################ - -# Declare the package name: -atlas_subdir( MuonTagTools ) - -# Component(s) in the package: -atlas_add_library( MuonTagToolsLib - src/*.cxx - PUBLIC_HEADERS MuonTagTools - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities xAODEventInfo xAODMuon GaudiKernel TagEvent IsolationSelectionLib MuonSelectorToolsLib AnalysisUtilsLib xAODParticleEvent - PRIVATE_LINK_LIBRARIES AthContainers xAODTracking ) - -atlas_add_component( MuonTagTools - src/components/*.cxx - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities xAODEventInfo xAODMuon GaudiKernel IsolationSelectionLib TagEvent MuonSelectorToolsLib AthContainers xAODTracking AnalysisUtilsLib MuonTagToolsLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/MuonID/MuonTagTools/MuonTagTools/MuonTagTool.h b/PhysicsAnalysis/MuonID/MuonTagTools/MuonTagTools/MuonTagTool.h deleted file mode 100644 index 0c97709ca80a3229e3067de550a64380e21a9809..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/MuonID/MuonTagTools/MuonTagTools/MuonTagTool.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef MUONTAGTOOL_H -#define MUONTAGTOOL_H - -/***************************************************************************** -Name : MuonTagTool.h -Package : offline/PhysicsAnalysis/MuonID/MuonTagTools -Purpose : build the Muon Tag objects - MuonTagCollection.h. - The Muon Tag fragment is built here -*****************************************************************************/ - -#include "AthenaBaseComps/AthAlgTool.h" -#include "TagEvent/TagFragmentCollection.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" -#include "GaudiKernel/ToolHandle.h" -#include <inttypes.h> -#include "xAODMuon/MuonContainer.h" -#include "MuonAnalysisInterfaces/IMuonCalibrationAndSmearingTool.h" -#include "MuonAnalysisInterfaces/IMuonSelectionTool.h" -#include "IsolationSelection/IIsolationSelectionTool.h" -#include "xAODEventInfo/EventInfo.h" -#include <map> - - -namespace CP { - class IIsolationSelectionTool; -} - -/** Interface ID for MuonTagTool*/ -static const InterfaceID IID_MuonTagTool("MuonTagTool", 1, 0); - -class MuonTagTool : public AthAlgTool { - - public: - - /** Standard Constructor */ - MuonTagTool(const std::string& type, const std::string& name, const IInterface* parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { return IID_MuonTagTool; }; - - /** Overriding initialize, finalize and execute */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int max); - virtual StatusCode execute(TagFragmentCollection& muonTagCol, const int max); - virtual StatusCode finalize(); - - private: - - inline int bit2int(int b) const { return 1<<b; }; - - /** private function to get impact parameter */ - void getMuonImpactParameter (const xAOD::Muon*,double& d0, double& z0, double& d0_significance); - - /** Properties */ - std::vector<std::string> m_containerNames; - std::string m_muon_met_container_name; - double m_cut_Pt; - double m_DRcut; - std::vector<float> m_etconeisocutvalues; - std::vector<float> m_etconeisorelcutvalues; - std::vector<float> m_ptconeisocutvalues; - std::vector<float> m_ptconeisorelcutvalues; - double m_maxD0preselection; - - bool m_cosmics; - bool m_doInDet; - double m_maxD0tight, m_maxZ0tight, m_maxZ0loose, m_maxD0signLoose, m_maxD0signTight; - - /** the attribute names */ - std::vector<std::string> m_ptStr; - std::vector<std::string> m_etaStr; - std::vector<std::string> m_phiStr; - std::vector<std::string> m_tightStr; - std::vector<std::string> m_momBalStr; - std::vector<std::string> m_nprecLayStr; - std::vector<std::string> m_nprecHoleLayStr; - std::vector<std::string> m_nphiLayStr; - std::vector<std::string> m_isoStr; - - /** we need to fix the momentum */ - ToolHandle<CP::IMuonCalibrationAndSmearingTool> m_muon_calibration_tool; - - /** Since release 20.1.6 we use the analysis muon selector tool */ - ToolHandle<CP::IMuonSelectionTool> m_muon_selection_tool; - - /** Muon isolation tool */ - ToolHandle<CP::IIsolationSelectionTool> m_loose_trackonly_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_loose_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_tight_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_gradient_loose_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_gradient_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_fixedcut_tight_trackonly_isolation; - ToolHandle<CP::IIsolationSelectionTool> m_fixedcut_loose_isolation; - - /** PV StoreGate key */ - std::string m_vxCandidate; - - bool m_doIso; -}; - -#endif // MUONTAGTOOL_H diff --git a/PhysicsAnalysis/MuonID/MuonTagTools/doc/packagedoc.h b/PhysicsAnalysis/MuonID/MuonTagTools/doc/packagedoc.h deleted file mode 100644 index 47df12fe7d5ace203c9140e574c9a0d321517196..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/MuonID/MuonTagTools/doc/packagedoc.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page MuonTagTools_page MuonTagTools - -@section MuonTagTools_introductionMuonTagTools Introduction -This package contains the alg tools for building the tag fragments for CombinedMuon and Muon identification. - -@section MuonTagTools_packagecontentMuonTagTools Package Contents -MuonTagTools contains the following tools: - -- CombinedMuonTagTool ... tool for Muon identification TAG fragment -- MuonTagTool ...tool for Muon TAG fragment - -- for questions and comments: ketevi@bnl.gov - - - -*/ diff --git a/PhysicsAnalysis/MuonID/MuonTagTools/share/MuonTagTool_jobOptions.py b/PhysicsAnalysis/MuonID/MuonTagTools/share/MuonTagTool_jobOptions.py deleted file mode 100644 index 0e2c95a541eb48d3d7e166fad872fc083426f2fe..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/MuonID/MuonTagTools/share/MuonTagTool_jobOptions.py +++ /dev/null @@ -1,80 +0,0 @@ -include.block ("MuonTagTools/MuonTagTool_jobOptions.py") - -########### Muon tag options ################ - -import EventKernel.ParticleDataType - -CosmicsCommissioning = False -theMuonCollection = [ "Muons" ] -MuonMETContainerName = "Muons_TAG_skim" -from AthenaCommon import CfgMgr -from AthenaCommon.BeamFlags import jobproperties - -if jobproperties.Beam.beamType() == 'cosmics' or jobproperties.Beam.beamType() == 'singlebeam': - CosmicsCommissioning = True - theMuonCollection = [ "MuidMuonCollection" ] - -from AthenaCommon.AppMgr import ToolSvc - -########### Muon Selection tool ################ - -from MuonMomentumCorrections.MuonMomentumCorrectionsConf import CP__MuonCalibrationAndSmearingTool -MuonCorrectionTool = CP__MuonCalibrationAndSmearingTool("MuonCorrectionTool") -ToolSvc += MuonCorrectionTool - -########### Muon Selection tool ################ - -from MuonSelectorTools.MuonSelectorToolsConf import CP__MuonSelectionTool -MuonSelectionTool = CP__MuonSelectionTool("MuonSelectionTool", - MaxEta = 2.7) -ToolSvc += MuonSelectionTool - -########### Muon Isolation options ################ - -from IsolationSelection.IsolationSelectionConf import CP__IsolationSelectionTool -LooseTrackOnlyIsoTool = CfgMgr.CP__IsolationSelectionTool( "MuonLooseTrackOnlyIsolationSelectionTool" ) -LooseTrackOnlyIsoTool.MuonWP = "LooseTrackOnly" -ToolSvc += LooseTrackOnlyIsoTool -LooseIsoTool = CfgMgr.CP__IsolationSelectionTool( "MuonLooseIsolationSelectionTool" ) -LooseIsoTool.MuonWP = "Loose" -ToolSvc += LooseIsoTool -TightIsoTool = CfgMgr.CP__IsolationSelectionTool( "MuonTightIsolationSelectionTool" ) -TightIsoTool.MuonWP = "Tight" -ToolSvc += TightIsoTool -GradientIsoTool = CfgMgr.CP__IsolationSelectionTool( "MuonGradientIsolationSelectionTool" ) -GradientIsoTool.MuonWP = "Gradient" -ToolSvc += GradientIsoTool -GradientLooseIsoTool = CfgMgr.CP__IsolationSelectionTool( "MuonGradientLooseIsolationSelectionTool" ) -GradientLooseIsoTool.MuonWP = "GradientLoose" -ToolSvc += GradientLooseIsoTool -FixedCutTightTrackOnlyIsoTool = CfgMgr.CP__IsolationSelectionTool( "MuonFixedCutTightTrackOnlyIsolationSelectionTool" ) -FixedCutTightTrackOnlyIsoTool.MuonWP = "FixedCutTightTrackOnly" -ToolSvc += FixedCutTightTrackOnlyIsoTool -FixedCutLooseIsoTool = CfgMgr.CP__IsolationSelectionTool( "MuonFixedCutLooseIsolationSelectionTool" ) -FixedCutLooseIsoTool.MuonWP = "FixedCutLoose" -ToolSvc += FixedCutLooseIsoTool - -from RecExConfig.RecFlags import rec -from MuonTagTools.MuonTagToolsConf import MuonTagTool as ConfiguredMuonTagTool -from MuonRecExample.MuonRecFlags import muonRecFlags -MuonTagTool = ConfiguredMuonTagTool(Container = theMuonCollection, - MuonMETContainerName = MuonMETContainerName, - PtCut = 6.0*GeV, - EtconeIsoCutValues = [3.0*GeV, 5.0*GeV], - PtconeIsoCutValues = [3.0*GeV, 5.0*GeV], - EtconeRelIsoCutValues = [0.15, 0.3], - PtconeRelIsoCutValues = [0.15, 0.3], - isCosmics = CosmicsCommissioning, - doInDet = rec.doInDet(), - MuonCalibrationTool = MuonCorrectionTool, - MuonSelectionTool = MuonSelectionTool, - LooseTrackOnlyIsolation= LooseTrackOnlyIsoTool, - LooseIsolation = LooseIsoTool , - TightIsolation = TightIsoTool , - GradientIsolation = GradientIsoTool , - GradientLooseIsolation = GradientLooseIsoTool, - FixedCutTightTrackOnlyIsolation= FixedCutTightTrackOnlyIsoTool, - FixedCutLooseIsolation = FixedCutLooseIsoTool, - DoIsolation = muonRecFlags.doMuonIso() - ) -ToolSvc += MuonTagTool diff --git a/PhysicsAnalysis/MuonID/MuonTagTools/src/MuonTagTool.cxx b/PhysicsAnalysis/MuonID/MuonTagTools/src/MuonTagTool.cxx deleted file mode 100644 index 4f900025d5cfd81f62444f701eb541607b47c3c4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/MuonID/MuonTagTools/src/MuonTagTool.cxx +++ /dev/null @@ -1,827 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : MuonTagTool.cxx -Package : offline/PhysicsAnalysis/MuonID/MuonTagTools -Purpose : create a collection of MuonTag - -*****************************************************************************/ - -#include "Gaudi/Property.h" -#include "xAODCore/ShallowCopy.h" -#include "xAODParticleEvent/IParticleLink.h" -#include "AthContainers/ConstDataVector.h" -#include "xAODMuon/MuonContainer.h" -#include "MuonTagTools/MuonTagTool.h" -#include "xAODTracking/VertexContainer.h" -#include "xAODTracking/TrackParticleContainer.h" -#include "xAODTracking/TrackParticlexAODHelpers.h" -#include "TagEvent/MuonAttributeNames.h" -#include "AnalysisUtils/AnalysisMisc.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" -#include "xAODEventInfo/EventInfo.h" -#include <sstream> -#include <cmath> - - -/** the constructor */ -MuonTagTool::MuonTagTool (const std::string& type, const std::string& name, - const IInterface* parent) : - AthAlgTool( type, name, parent ), - /**Initializing private member for the likelihood and isolation tool*/ - m_loose_trackonly_isolation(""), - m_loose_isolation(""), - m_tight_isolation(""), - m_gradient_loose_isolation(""), - m_gradient_isolation(""), - m_fixedcut_tight_trackonly_isolation(""), - m_fixedcut_loose_isolation("") { - - /** Muon AOD Container Name */ - declareProperty("Container", m_containerNames); - - /** Muon MET input container name*/ - declareProperty("MuonMETContainerName", m_muon_met_container_name); - - /** selection cut of Pt */ - declareProperty("PtCut", m_cut_Pt = 6.0*CLHEP::GeV); - - /** overlap removal deltaR cut */ - declareProperty("OverlapDeltaRCut", m_DRcut = 0.01); - - /** Calo Isolation cut values */ - declareProperty("EtconeIsoCutValues", m_etconeisocutvalues, "Cut values for Etcone isolation"); - - /** Calo Isolation cut values */ - declareProperty("PtconeIsoCutValues", m_ptconeisocutvalues, "Cut values for Ptcone isolation"); - - /** Calo Isolation cut values */ - declareProperty("EtconeRelIsoCutValues",m_etconeisorelcutvalues, "Cut values for Etcone/pt isolation"); - - /** Calo Isolation cut values */ - declareProperty("PtconeRelIsoCutValues",m_ptconeisorelcutvalues, "Cut values for Ptcone/pt isolation"); - - /** D0 preselection cut value */ - declareProperty("maxD0PreSelection", m_maxD0preselection = 5*CLHEP::mm, "Cut values for track impact parameter"); - - /** cosmic flag */ - declareProperty("isCosmics", m_cosmics = false); - - /** inner detector flag */ - declareProperty("doInDet", m_doInDet = true); - - /** key for primary vertex container */ - declareProperty ("PrimaryVertexKey", m_vxCandidate = "PrimaryVertices"); - - /** D0 tight veto cut */ - declareProperty("maxD0tight", m_maxD0tight = 0.3*CLHEP::mm); - /** Z0 tight veto cut */ - declareProperty("maxZ0tight", m_maxZ0tight = 2*CLHEP::mm); - /** Z0 loose veto cut */ - declareProperty("maxZ0loose", m_maxZ0loose = 10*CLHEP::mm); - /** D0 significance loose veto cut */ - declareProperty("maxD0SignificanceLoose", m_maxD0signLoose = 5 ); - /** D0 significance tight veto cut */ - declareProperty("maxD0SignificanceTight", m_maxD0signTight = 3.5 ); - /**Muon Calibration Tool*/ - declareProperty("MuonCalibrationTool", m_muon_calibration_tool ); - /**Muon Selection Tool*/ - declareProperty("MuonSelectionTool", m_muon_selection_tool ); - /** Muon Isolation Tool names */ - declareProperty("LooseTrackOnlyIsolation", m_loose_trackonly_isolation); - declareProperty("LooseIsolation", m_loose_isolation); - declareProperty("TightIsolation", m_tight_isolation); - declareProperty("GradientLooseIsolation", m_gradient_loose_isolation); - declareProperty("GradientIsolation", m_gradient_isolation); - declareProperty("FixedCutTightTrackOnlyIsolation", m_fixedcut_tight_trackonly_isolation); - declareProperty("FixedCutLooseIsolation", m_fixedcut_loose_isolation); - declareProperty("DoIsolation", m_doIso=true); - - declareInterface<MuonTagTool>( this ); -} - -/** initialization - called once at the begginning */ -StatusCode MuonTagTool::initialize() { - - AthAlgTool::initialize().ignore(); - /** retrieve and check the muon calibration tool*/ - ATH_CHECK ( m_muon_calibration_tool.retrieve() ); - /** retrieve and check the muon selector tool*/ - ATH_CHECK ( m_muon_selection_tool.retrieve() ); - /** retrieve and check the muon isolation tool*/ - if(m_doIso){ - CHECK(m_loose_trackonly_isolation.retrieve()); - CHECK(m_loose_isolation.retrieve()); - CHECK(m_tight_isolation.retrieve()); - CHECK(m_gradient_loose_isolation.retrieve()); - CHECK(m_gradient_isolation.retrieve()); - CHECK(m_fixedcut_tight_trackonly_isolation.retrieve()); - CHECK(m_fixedcut_loose_isolation.retrieve()); - - if (m_etconeisorelcutvalues.size() > 2) { - ATH_MSG_FATAL ("More than to EtconeRel values are not permitted"); - return StatusCode::FAILURE; - } - if (m_etconeisocutvalues.size() > 2) { - ATH_MSG_FATAL ("More than to Etcone values are not permitted"); - return StatusCode::FAILURE; - } - if (m_ptconeisorelcutvalues.size() > 2) { - ATH_MSG_FATAL ("More than to PtconeRel values are not permitted"); - return StatusCode::FAILURE; - } - if (m_ptconeisocutvalues.size() > 2) { - ATH_MSG_FATAL ("More than to Ptcone values are not permitted"); - return StatusCode::FAILURE; - } - } - else { - m_loose_trackonly_isolation.disable(); - m_loose_isolation.disable(); - m_tight_isolation.disable(); - m_gradient_loose_isolation.disable(); - m_gradient_isolation.disable(); - m_fixedcut_tight_trackonly_isolation.disable(); - m_fixedcut_loose_isolation.disable(); - } - return StatusCode::SUCCESS; -} - - -/** build the attribute list - called in initialize */ -StatusCode MuonTagTool::attributeSpecification(std::map<std::string, AthenaAttributeType>& attrMap, const int max) { - - - /** Muon Attributes */ - attrMap[ MuonAttributeNames[MuonTAG::NMuon] ] = AthenaAttributeType("unsigned int", - MuonAttributeUnitNames[MuonTAG::NMuon], - MuonAttributeGroupNames[MuonTAG::NMuon]); - - std::ostringstream os; - for (int i=1; i<= max; ++i) { - - /** pt */ - os.str(""); - os << MuonAttributeNames[MuonTAG::Pt] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", MuonAttributeUnitNames[MuonTAG::Pt], MuonAttributeGroupNames[MuonTAG::Pt]); - m_ptStr.push_back( os.str() ); - - /** eta */ - os.str(""); - os << MuonAttributeNames[MuonTAG::Eta] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", MuonAttributeUnitNames[MuonTAG::Eta], MuonAttributeGroupNames[MuonTAG::Eta]); - m_etaStr.push_back( os.str() ); - - /** phi */ - os.str(""); - os << MuonAttributeNames[MuonTAG::Phi] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", MuonAttributeUnitNames[MuonTAG::Phi], MuonAttributeGroupNames[MuonTAG::Phi]); - m_phiStr.push_back( os.str() ); - - /** Tightness */ - os.str(""); - os << MuonAttributeNames[MuonTAG::Tight] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("unsigned int", MuonAttributeUnitNames[MuonTAG::Tight], MuonAttributeGroupNames[MuonTAG::Tight]); - m_tightStr.push_back( os.str() ); - - /** isolation for Muons */ - os.str(""); - os << MuonAttributeNames[MuonTAG::Isol] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("unsigned int", MuonAttributeUnitNames[MuonTAG::Isol], MuonAttributeGroupNames[MuonTAG::Isol]); - m_isoStr.push_back( os.str() ); - - /** precision layers for Muons */ - os.str(""); - os << MuonAttributeNames[MuonTAG::NPrecLay] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("unsigned int", MuonAttributeUnitNames[MuonTAG::NPrecLay], MuonAttributeGroupNames[MuonTAG::NPrecLay]); - m_nprecLayStr.push_back( os.str() ); - - /** precision hole layers for Muons */ - os.str(""); - os << MuonAttributeNames[MuonTAG::NPrecHoleLay] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("unsigned int", MuonAttributeUnitNames[MuonTAG::NPrecHoleLay], MuonAttributeGroupNames[MuonTAG::NPrecHoleLay]); - m_nprecHoleLayStr.push_back( os.str() ); - - /** phi layers for Muons */ - os.str(""); - os << MuonAttributeNames[MuonTAG::NPhiLay] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("unsigned int", MuonAttributeUnitNames[MuonTAG::NPhiLay], MuonAttributeGroupNames[MuonTAG::NPhiLay]); - m_nphiLayStr.push_back( os.str() ); - - /** momentum balance significance for Muons */ - os.str(""); - os << MuonAttributeNames[MuonTAG::MomBalSign] << std::dec << i; - attrMap[ os.str() ] = AthenaAttributeType("float", MuonAttributeUnitNames[MuonTAG::MomBalSign], MuonAttributeGroupNames[MuonTAG::MomBalSign]); - m_momBalStr.push_back( os.str() ); - - } - - return StatusCode::SUCCESS; -} - -/** execute - called on every event */ -StatusCode MuonTagTool::execute(TagFragmentCollection & muonTagCol, const int max) { - - ATH_MSG_DEBUG ("in execute()"); - - std::vector<const xAOD::Muon*> unique_muons; - - /** now loop over the Muon containers */ - - for ( unsigned int j=0; j<m_containerNames.size(); ++j ) { - - const xAOD::MuonContainer *muonContainer=0; - StatusCode sc = evtStore()->retrieve( muonContainer, m_containerNames[j] ); - if (sc.isFailure()) { - ATH_MSG_DEBUG ("Muon container not found in SG: " << m_containerNames[j]); - continue; - } - - // create a shallow copy of the muon container - std::pair< xAOD::MuonContainer*, xAOD::ShallowAuxContainer* > shallowCopy = xAOD::shallowCopyContainer(*muonContainer); - xAOD::MuonContainer *muonContainerShallowCopy = shallowCopy.first; - xAOD::ShallowAuxContainer *muonAuxContainerShallowCopy = shallowCopy.second; - - CHECK( evtStore()->record(muonContainerShallowCopy, "MuonShallowTAG")); - CHECK( evtStore()->record(muonAuxContainerShallowCopy, "MuonShallowTAGAux.")); - - static SG::AuxElement::Accessor< xAOD::IParticleLink > accSetOriginLink ("originalObjectLink"); - for ( xAOD::Muon *shallowCopyMuon : * muonContainerShallowCopy ) { - - /** fix calibration using tool */ - ATH_MSG_DEBUG("Un-Calibrated pt = " << shallowCopyMuon->pt()); - if(m_muon_calibration_tool->applyCorrection(*shallowCopyMuon) != CP::CorrectionCode::Ok){ - ATH_MSG_WARNING("Cannot calibrate muon"); - } - ATH_MSG_DEBUG("Calibrated pt = " << shallowCopyMuon->pt()); - - const xAOD::IParticleLink originLink( *muonContainer, shallowCopyMuon->index() ); - accSetOriginLink(*shallowCopyMuon) = originLink; - } - CHECK(evtStore()->setConst(muonContainerShallowCopy )); - CHECK(evtStore()->setConst(muonAuxContainerShallowCopy )); - - /** create a new copy for MET calculation */ - ConstDataVector< xAOD::MuonContainer >* selectedMuons = new ConstDataVector< xAOD::MuonContainer >( SG::VIEW_ELEMENTS ); - ATH_CHECK( evtStore()->record( selectedMuons, m_muon_met_container_name ) ); - - /** loop over the muon container */ - xAOD::MuonContainer::const_iterator cm_it = muonContainerShallowCopy->begin(); - xAOD::MuonContainer::const_iterator cm_it_end = muonContainerShallowCopy->end(); - for ( ; cm_it != cm_it_end ; ++cm_it) { - - ATH_MSG_DEBUG ("next Muon has pt = " << (*cm_it)->pt()/1000. << " Gev, eta = " << (*cm_it)->eta() << ", phi = " << (*cm_it)->phi()); - - /** now preselection of good muon candidate for tags */ - - /** use the muon selector tool to get the tightness */ - xAOD::Muon::Quality my_quality = m_muon_selection_tool->getQuality(**cm_it); - /** require that the muon is combined */ - bool muonType = (*cm_it)->muonType(); - - /** we require at least Loose, not Standalone, passes Pt cut */ - if ( my_quality <= xAOD::Muon::Loose && muonType != xAOD::Muon::MuonStandAlone && - (*cm_it)->pt() > m_cut_Pt ) { - - ATH_MSG_DEBUG ("-> Muon passes preselection"); - - /** not first container, do overlap removal (obsolete) */ - if ( j!=0 ) { - - std::vector<const xAOD::Muon*>::const_iterator cm2_it = unique_muons.begin(); - for ( ; cm2_it != unique_muons.end() ; ++cm2_it) { - - /** now we apply a deltaR check*/ - double dR= (*cm_it)->p4().DeltaR((*cm2_it)->p4()); - if (dR<m_DRcut) { - ATH_MSG_DEBUG ("-> Muon fails dR overlap cut, dR = " << dR); - continue; - } - - } - ATH_MSG_DEBUG ("-> Muon passes overlap check !"); - } - - /** we apply impact preselection if no cosmics and no standalone muon */ - if (!m_cosmics) { - ATH_MSG_DEBUG ("-> try impact veto against cosmics"); - - double d0=0,z0=0, d0_significance=0; - getMuonImpactParameter (*cm_it, d0, z0, d0_significance); - - if ( std::abs(d0) > m_maxD0preselection ) { - ATH_MSG_DEBUG ("-> Muon fails impact veto, ha d0 = " << d0 << " mm, for cosmics, reject it"); - continue; - } else { - ATH_MSG_DEBUG ("-> Muon passes impact veto, has d0 = " << d0 << " mm"); - } - } - - ATH_MSG_DEBUG ("-> Muon passed, copy Muon for output !"); - /** Fill the Muon into output list for TAG file */ - unique_muons.push_back( *cm_it ); - /** Fill the Muon MET input container only if the muons are medium */ - selectedMuons->push_back( *cm_it ); - } - } - } - - /** in TAG files we save muons momentum sorted */ - if ( unique_muons.size() > 1) { - ATH_MSG_DEBUG ("sorting muon container"); - AnalysisUtils::Sort::pT( &unique_muons ); - } - - /** now fill muon TAG info */ - int i=0; - std::vector<const xAOD::Muon*>::const_iterator muonItr = unique_muons.begin(); - for (; muonItr != unique_muons.end() && i < max; ++muonItr, ++i) { - - const xAOD::Muon& muon = **muonItr; - - ATH_MSG_DEBUG("Muon: pt " << muon.pt() - << " eta " << muon.eta() << " phi " << muon.phi() - << " px " << muon.p4().Px() << " py " << muon.p4().Py() ); - - /** pt */ - muonTagCol.insert( m_ptStr[i], muon.pt() * muon.charge() ); - - /** eta */ - muonTagCol.insert( m_etaStr[i], muon.eta() ); - - /** phi */ - muonTagCol.insert( m_phiStr[i], muon.phi() ); - - unsigned int iso = 0x0; - unsigned int tightness = 0x0; - - /** now start filling the isolation information */ - if(m_doIso){ - /** let's compute the etcone20 isolation of the muon */ - - float etcone = 0.0; - if( ! muon.isolation(etcone,xAOD::Iso::etcone20) ){ - ATH_MSG_ERROR("No etcone defined"); - } - else{ - - /** apply etcone/pt cuts first */ - - float etcone_rel= etcone/muon.pt(); - ATH_MSG_DEBUG("etcone20/pt = "<< etcone_rel); - - /* Etcone20/pt are bits 0 and 1 */ - - for (unsigned int j=0; j<m_etconeisorelcutvalues.size(); j++) { - if( etcone_rel < m_etconeisorelcutvalues[j] ) { - ATH_MSG_DEBUG("Setting Etcone20/pt isolation: bit " << j ); - iso |= 1 << j; - } - } - - /* Etcone20 are bits 8 and 9 */ - - for (unsigned int j=0; j<m_etconeisocutvalues.size(); j++) { - if ( etcone < m_etconeisocutvalues[j] ) { - ATH_MSG_DEBUG("Setting Etcone20 isolation: bit " << j+8 ); - iso |= 1 << (8+j); - } - } - } - - /** let's compute the etcone20 isolation of the muon */ - - if( ! muon.isolation(etcone,xAOD::Iso::topoetcone20) ){ - ATH_MSG_ERROR("No topoetcone20 defined"); - } - else{ - - /** apply topoEtcone20/pt cuts first */ - - float etcone_rel= etcone/muon.pt(); - ATH_MSG_DEBUG("topoetcone20/pt = "<< etcone_rel); - - /* topoEtcone20/pt are bits 2 and 3 */ - - for (unsigned int j=0; j<m_etconeisorelcutvalues.size(); j++) { - if( etcone_rel < m_etconeisorelcutvalues[j] ) { - ATH_MSG_DEBUG("Setting TopoEtcone20/pt isolation: bit " << j ); - iso |= 1 << (2 + j); - } - } - - /* topo20Etcone/pt are bits 10 and 11 */ - - for (unsigned int j=0; j<m_etconeisocutvalues.size(); j++) { - if ( etcone < m_etconeisocutvalues[j] ) { - ATH_MSG_DEBUG("Setting TopoEtcone20: bit " << j+10 ); - iso |= 1 << (10+j); - } - } - } - - /** let's compute the etcone30 isolation of the muon */ - - if( ! muon.isolation(etcone,xAOD::Iso::topoetcone30) ){ - ATH_MSG_ERROR("No topoetcone30 defined"); - } - else{ - - /** apply topoEtcone30/pt cuts first */ - - float etcone_rel= etcone/muon.pt(); - ATH_MSG_DEBUG("topoetcone30/pt = "<< etcone_rel); - - /* topoEtcone30/pt are bits 4 and 5 */ - - for (unsigned int j=0; j<m_etconeisorelcutvalues.size(); j++) { - if( etcone_rel < m_etconeisorelcutvalues[j] ) { - ATH_MSG_DEBUG("Setting topoEtcone30/pt isolation: bit " << j+4 ); - iso |= 1 << (4 + j); - } - } - - /* topo30Etcone are bits 12 and 13 */ - - for (unsigned int j=0; j<m_etconeisocutvalues.size(); j++) { - if ( etcone < m_etconeisocutvalues[j] ) { - ATH_MSG_DEBUG("Setting topoEtcone30 isolation: bit " << j+12 ); - iso |= 1 << (12+j); - } - } - } - - /** let's compute the etcone40 isolation of the muon */ - - if( ! muon.isolation(etcone,xAOD::Iso::topoetcone40) ){ - ATH_MSG_ERROR("No topoetcone40 defined"); - } - else{ - - /** apply topoEtcone40/pt cuts first */ - - float etcone_rel= etcone/muon.pt(); - ATH_MSG_DEBUG("topoetcone40/pt = "<< etcone_rel); - - /* topo40Etcone/pt are bits 6 and 7 */ - - for (unsigned int j=0; j<m_etconeisorelcutvalues.size(); j++) { - if( etcone_rel < m_etconeisorelcutvalues[j] ) { - ATH_MSG_DEBUG("Setting topoEtcone40/pt isolation: bit " << j+6 ); - iso |= 1 << (6 + j); - } - } - - /* topo40Etcone are bits 14 and 15 */ - - for (unsigned int j=0; j<m_etconeisocutvalues.size(); j++) { - if ( etcone < m_etconeisocutvalues[j] ) { - ATH_MSG_DEBUG("Setting topoEtcone40 isolation: bit " << j+14 ); - iso |= 1 << (14+j); - } - } - } - - /** let's compute the ptcone20 isolation of the muon */ - - float ptcone = 0.0 ; - if( ! muon.isolation(ptcone,xAOD::Iso::ptcone20) ){ - ATH_MSG_ERROR("No ptcone20 defined"); - } - else{ - - /** apply ptcone20/pt cuts first */ - - float ptcone_rel= ptcone/muon.pt(); - ATH_MSG_DEBUG("ptcone20/pt = "<< ptcone_rel); - - /* ptcone20/pt are bits 16 and 17 */ - - for (unsigned int j=0; j<m_ptconeisorelcutvalues.size(); j++) { - if ( ptcone_rel < m_ptconeisorelcutvalues[j] ){ - ATH_MSG_DEBUG("Setting ptcone20/pt isolation: bit " << j+16 ); - iso |= 1 << (16+j); - } - } - - /* ptcone20 are bits 24 and 25 */ - - ATH_MSG_DEBUG("ptcone20 = "<< ptcone); - - for (unsigned int j=0; j<m_ptconeisocutvalues.size(); j++) { - if ( ptcone < m_ptconeisocutvalues[j] ) { - ATH_MSG_DEBUG("Setting ptcone20 isolation: bit " << j+24 ); - iso |= 1 << (24+j); - } - } - } - - /** let's compute the ptcone30 isolation of the muon */ - - if( ! muon.isolation(ptcone,xAOD::Iso::ptcone30) ){ - ATH_MSG_ERROR("No ptcone30 defined"); - } - else{ - - /** apply ptcone30/pt cuts first */ - - float ptcone_rel= ptcone/muon.pt(); - ATH_MSG_DEBUG("ptcone30/pt = "<< ptcone_rel); - - /* ptcone30 are bits 18 and 19 */ - - for (unsigned int j=0; j<m_ptconeisorelcutvalues.size(); j++) { - if ( ptcone_rel < m_ptconeisorelcutvalues[j] ){ - ATH_MSG_DEBUG("Setting ptcone30/pt isolation: bit " << j+18 ); - iso |= 1 << (18+j); - } - } - - /* ptcone30 are bits 26 and 27 */ - - ATH_MSG_DEBUG("ptcone30 = "<< ptcone); - - for (unsigned int j=0; j<m_ptconeisocutvalues.size(); j++) { - if ( ptcone < m_ptconeisocutvalues[j] ) { - ATH_MSG_DEBUG("Setting ptcone30 solation: bit " << j+26 ); - iso |= 1 << (26+j); - } - } - } - - /** let's compute the ptcone20 isolation of the muon */ - - if( ! muon.isolation(ptcone,xAOD::Iso::ptcone40) ){ - ATH_MSG_ERROR("No ptcone40 defined"); - } - else{ - - /** apply ptcone40/pt cuts first */ - - float ptcone_rel= ptcone/muon.pt(); - ATH_MSG_DEBUG("ptcone40/pt = "<< ptcone_rel); - - /* ptcone40/pt are bits 20 and 21 */ - - for (unsigned int j=0; j<m_ptconeisorelcutvalues.size(); j++) { - if ( ptcone_rel < m_ptconeisorelcutvalues[j] ){ - ATH_MSG_DEBUG("Setting ptcone40/pt isolation: bit " << j+20 ); - iso |= 1 << (20+j); - } - } - - /* ptcone40 are bits 28 and 29 */ - - ATH_MSG_DEBUG("ptcone40 = "<< ptcone); - - for (unsigned int j=0; j<m_ptconeisocutvalues.size(); j++) { - if ( ptcone < m_ptconeisocutvalues[j] ) { - ATH_MSG_DEBUG("Setting ptcone40 isolation: bit " << j+28 ); - iso |= 1 << (28+j); - } - } - } - - if( msgLvl(MSG::DEBUG) ){ - std::bitset<32> bits(iso); - ATH_MSG_DEBUG("Isolation: " << iso << " bits: " << bits.to_string() ); - } - - muonTagCol.insert( m_isoStr[i], iso ); - - - /** Using Isolation Tool to fill bit from 22,23,30,31 with loose_trackonly,loose,tight,gradientloose,gradient*/ - if(m_loose_trackonly_isolation->accept(**muonItr))tightness |= (1 << 24); - if(m_loose_isolation->accept(**muonItr)) tightness |= (1 << 25); - if(m_tight_isolation->accept(**muonItr)) tightness |= (1 << 26); - if(m_gradient_isolation->accept(**muonItr)) tightness |= (1 << 27); - if(m_gradient_loose_isolation->accept(**muonItr)) tightness |= (1 << 28); - if(m_fixedcut_tight_trackonly_isolation->accept(**muonItr))tightness |= (1 << 29); - if(m_fixedcut_loose_isolation->accept(**muonItr)) tightness |= (1 << 30); - } - /** varying levels of tighness cuts - to be defined and implemented */ - - if ( muon.muonType() == xAOD::Muon::MuonStandAlone ) tightness = tightness | bit2int(0); - if ( muon.muonType() == xAOD::Muon::Combined ) tightness = tightness | bit2int(1); - if ( muon.muonType() == xAOD::Muon::SiliconAssociatedForwardMuon ) tightness = tightness | bit2int(2); - if ( muon.muonType() == xAOD::Muon::SegmentTagged ) tightness = tightness | bit2int(3); - - xAOD::Muon::Quality my_quality = m_muon_selection_tool->getQuality(muon); - if ( my_quality <= xAOD::Muon::Loose) tightness = tightness | bit2int(7); - if ( my_quality <= xAOD::Muon::Medium) tightness = tightness | bit2int(4); - if ( my_quality <= xAOD::Muon::Tight) tightness = tightness | bit2int(8); - - /** ID track quality cuts */ - - const ElementLink<xAOD::TrackParticleContainer> & tp_p = muon.primaryTrackParticleLink(); - if(!tp_p){ - ATH_MSG_DEBUG("no link to primary track particle"); - } else { - ATH_MSG_DEBUG("found link to primary track particle"); - - if( tp_p.isValid() ) { - ATH_MSG_DEBUG("elementLink<TrackParticle> is valid"); - const xAOD::TrackParticle* tp = *tp_p; - - /** Add the impact parameter bits for cosmic veto */ - - double d0=0,z0=0,d0sig=0; - /**calling getMuonImpactParameter to get d0,z0 values*/ - getMuonImpactParameter ((*muonItr), d0, z0, d0sig); - - if ( d0sig < m_maxD0signLoose) tightness = tightness | bit2int(5); - if ( d0sig < m_maxD0signTight) tightness = tightness | bit2int(6); - if ( fabs(d0) < m_maxD0tight) tightness = tightness | bit2int(9); - if ( fabs(z0) < m_maxZ0tight) tightness = tightness | bit2int(10); - if ( fabs(z0) < m_maxZ0loose) tightness = tightness | bit2int(20); - - // check blayer, if expected - uint8_t nblh = 0x0; - uint8_t eblh = 0x0; - uint8_t nblo = 0x0; - if( !tp->summaryValue(nblh,xAOD::numberOfInnermostPixelLayerHits)){ - ATH_MSG_WARNING("No nBLayerHits"); - } - if( !tp->summaryValue(nblo,xAOD::numberOfInnermostPixelLayerOutliers)){ - ATH_MSG_WARNING("No nofBLayerOutliers"); - } - if( !tp->summaryValue(eblh,xAOD::expectInnermostPixelLayerHit) || - (nblh + nblo > 0) ) tightness = tightness | bit2int(11); - - // pixel hit counts - uint8_t nphi = 0x0; - uint8_t npds = 0x0; - if( !tp->summaryValue(nphi,xAOD::numberOfPixelHits)){ - ATH_MSG_WARNING("No numberOfPixelHits"); - } - if( !tp->summaryValue(npds,xAOD::numberOfPixelDeadSensors)){ - ATH_MSG_WARNING("No numberOfPixelDeadSensors"); - } - if( nphi + npds >= 2 ) tightness = tightness | bit2int(12); - - // sct hit counts - uint8_t nscthi = 0x0; - uint8_t nsctds = 0x0; - if( !tp->summaryValue(nscthi,xAOD::numberOfSCTHits)){ - ATH_MSG_WARNING("No numberOfSCTHits"); - } - if( !tp->summaryValue(nsctds,xAOD::numberOfSCTDeadSensors)){ - ATH_MSG_WARNING("No numberOfSCTDeadSensors"); - } - if( nscthi + nsctds > 5 ) tightness = tightness | bit2int(13); - - // hole cuts - uint8_t npho = 0x0; - uint8_t nsctho = 0x0; - if( !tp->summaryValue(npho,xAOD::numberOfPixelHoles)){ - ATH_MSG_WARNING("No numberOfPixelHoles"); - } - if( !tp->summaryValue(nsctho,xAOD::numberOfSCTHoles)){ - ATH_MSG_WARNING("No numberOfSCTHoles"); - } - if( npho + nsctho < 2 ) tightness = tightness | bit2int(14); - - // trt cuts - uint8_t ntrthi = 0x0; - uint8_t ntrtol = 0x0; - if( !tp->summaryValue(ntrthi,xAOD::numberOfTRTHits)){ - ATH_MSG_WARNING("No numberOfTRTHits"); - } - if( !tp->summaryValue(ntrtol,xAOD::numberOfTRTOutliers)){ - ATH_MSG_WARNING("No numberOfTRTHits"); - } - int ntrt = ntrthi+ ntrtol; - bool pass = true; - if ( ntrt > 5 && ntrtol/(double)ntrt > 0.9 ) pass = false; - if ( (fabs(tp->eta()) > 0.1 && fabs(tp->eta()) < 1.9 ) && ntrt <= 5 ) pass = false; - if ( pass ) tightness = tightness | bit2int(15); - - /** get muon layer information */ - - uint8_t nprecisionLayers=0; - if(!tp->summaryValue(nprecisionLayers,xAOD::numberOfPrecisionLayers)){ - ATH_MSG_ERROR("number of precision layers not retrieved"); - } - muonTagCol.insert( m_nprecLayStr[i], nprecisionLayers ); - - uint8_t nprecisionHoleLayers=0; - if(!tp->summaryValue(nprecisionHoleLayers,xAOD::numberOfPrecisionHoleLayers)){ - ATH_MSG_ERROR("number of precision hole layers not retrieved"); - } - muonTagCol.insert( m_nprecHoleLayStr[i], nprecisionHoleLayers ); - - uint8_t nphiLayers=0; - if(!tp->summaryValue(nphiLayers,xAOD::numberOfPhiLayers)){ - ATH_MSG_ERROR("number of phi layers not retrieved"); - } - muonTagCol.insert( m_nphiLayStr[i], nphiLayers ); - - /** get momentumBalanceSignificance */ - - } - } - - /** check ID cuts and HightPtCuts using the muon selector tool */ - - if( m_muon_selection_tool->passedIDCuts(muon) == 1 ) tightness = tightness | bit2int(16); - if( m_muon_selection_tool->passedHighPtCuts(muon) == 1 ) tightness = tightness | bit2int(21); - - /** segment information */ - - float segChi2OverDoF = 0.0; - if(! muon.parameter(segChi2OverDoF, xAOD::Muon::segmentChi2OverDoF)){ - ATH_MSG_ERROR("segmentChi2OverDoF not retrieved!"); - } - if( segChi2OverDoF < 5 ) tightness = tightness | bit2int(22); - if( segChi2OverDoF < 3 ) tightness = tightness | bit2int(23); - - if( msgLvl(MSG::DEBUG) ){ - std::bitset<32> bits(tightness); - ATH_MSG_VERBOSE("Tightness: " << tightness << " bits: " << bits.to_string() ); - } - - /** now insert tightness */ - - muonTagCol.insert( m_tightStr[i], tightness ); - - /** insert momentum balance */ - - float momentumBal = 0.0; - if(! muon.parameter(momentumBal, xAOD::Muon::momentumBalanceSignificance)){ - ATH_MSG_WARNING("momentumBalanceSignificance not retrieved!"); - } - muonTagCol.insert( m_momBalStr[i], momentumBal ); - } - - /** insert the number of loose muons */ - muonTagCol.insert(MuonAttributeNames[MuonTAG::NMuon], i); - - return StatusCode::SUCCESS; -} - -/** finalize - called once at the end */ -StatusCode MuonTagTool::finalize() { - ATH_MSG_DEBUG ("in finalize()"); - return StatusCode::SUCCESS; -} - -/** private function to get impact parameter */ -void MuonTagTool::getMuonImpactParameter (const xAOD::Muon* muon, double& d0, double& z0, double& d0_significance) { - - /** let's initialize to 0 the impact parameters*/ - d0 = 0; - z0 = 0; - d0_significance = 0; - - StatusCode sc; - - /** retrieve the EventInfo container*/ - const xAOD::EventInfo* eventInfo = 0; - sc = evtStore()->retrieve( eventInfo, "EventInfo"); - if (sc.isFailure()) { - ATH_MSG_WARNING( "No AOD EventInfo container found in SG" ); - return; - } - - /** get vertex container, we assume the first vertex is the primary by convention */ - const xAOD::VertexContainer* vxContainer=0; - sc = evtStore()->retrieve(vxContainer, m_vxCandidate); - if (sc.isFailure() || !vxContainer) { - ATH_MSG_DEBUG ("Could not retrieve primary vertex info: " << m_vxCandidate <<", return 0 impact parameter."); - return; - } - if (vxContainer->size()<1) { - ATH_MSG_DEBUG ("No primary vertices reconstructed, return 0 impact parameter."); - return; - } - xAOD::VertexContainer::const_iterator vxI = vxContainer->begin(); - if ((*vxI)->vertexType() != xAOD::VxType::PriVtx) { - ATH_MSG_DEBUG ("---> no primary vertex reconstructed, return 0 impact parameters."); - return; - } - ATH_MSG_DEBUG ("---> vertex at (x/y/z) = " << (*vxI)->x() << " / " << (*vxI)->y() << " / " << (*vxI)->z() ); - - /** We try to find the link to the primary track and after we retrieve it*/ - const ElementLink<xAOD::TrackParticleContainer> & tp_prime = muon->primaryTrackParticleLink(); - if(!tp_prime){ - ATH_MSG_DEBUG("found no link to primary track particle"); - } else { - const xAOD::TrackParticle* trk = *tp_prime; - - /** d0 Significance w.r.t. Beam Spot covariance as recommended (even if it makes little sense) */ - double d0_significance = xAOD::TrackingHelpers::d0significance(trk, - eventInfo->beamPosSigmaX(), - eventInfo->beamPosSigmaY(), - eventInfo->beamPosSigmaXY() ); - /** get d0 impact parameter */ - d0 = trk->d0(); - /** z0 is an approximation, just do the diff */ - double z0 = fabs(trk->z0() + trk->vz() - (*vxI)->z()); - - ATH_MSG_DEBUG("d0 = " << d0 << " z0 = " <<z0 << " d0_significance = " << d0_significance); - } - return; -} - diff --git a/PhysicsAnalysis/MuonID/MuonTagTools/src/components/MuonTagTools_entries.cxx b/PhysicsAnalysis/MuonID/MuonTagTools/src/components/MuonTagTools_entries.cxx deleted file mode 100644 index 1d0300a57276324bcb3fbd6c6caae8604e4fc925..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/MuonID/MuonTagTools/src/components/MuonTagTools_entries.cxx +++ /dev/null @@ -1,4 +0,0 @@ -#include "MuonTagTools/MuonTagTool.h" - -DECLARE_COMPONENT( MuonTagTool ) - diff --git a/Projects/AnalysisBase/package_filters.txt b/Projects/AnalysisBase/package_filters.txt index aa36f316318aae75c688c2722718b2b966ece4c7..2fa649c9fdb39cd85ae1c3bc5fa867ab399ae98f 100644 --- a/Projects/AnalysisBase/package_filters.txt +++ b/Projects/AnalysisBase/package_filters.txt @@ -69,7 +69,6 @@ + PhysicsAnalysis/AnalysisCommon/ReweightUtils + PhysicsAnalysis/AnalysisCommon/TruthClassification + PhysicsAnalysis/D3PDTools/.* -- PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools + PhysicsAnalysis/ElectronPhotonID/.* + PhysicsAnalysis/HeavyIonPhys/HIEventUtils + PhysicsAnalysis/HiggsPhys/Run2/HZZ/Tools/ZMassConstraint