.. _program_listing_file_xAODAnaHelpers_PhotonCalibrator.h: Program Listing for File PhotonCalibrator.h =========================================== |exhale_lsh| :ref:`Return to documentation for file ` (``xAODAnaHelpers/PhotonCalibrator.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef xAODAnaHelpers_PhotonCalibrator_H #define xAODAnaHelpers_PhotonCalibrator_H // CP interface includes #include #include #include #include #include // external tools include(s): #include "AsgTools/AnaToolHandle.h" #include "EgammaAnalysisInterfaces/IAsgPhotonEfficiencyCorrectionTool.h" #include "IsolationCorrections/IIsolationCorrectionTool.h" class AsgPhotonIsEMSelector; class ElectronPhotonVariableCorrectionTool; namespace CP { class EgammaCalibrationAndSmearingTool; } // algorithm wrapper #include class PhotonCalibrator : public xAH::Algorithm { // put your configuration variables here as public variables. // that way they can be set directly from CINT and python. public: // configuration variables std::string m_inContainerName = ""; std::string m_outContainerName = ""; // Calibration information // Tool recommends using map, rather than setting individual calib paths. // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhotonEfficiencyRun2#Recommendations_for_full_2015_an // recommendation is set by tool std::string m_overridePhotonCalibMap = ""; // ID information // recommended files here: ElectronLikelihoodLooseOfflineConfig2016_Smooth.conf std::string m_tightIDConfigPath = "ElectronPhotonSelectorTools/offline/20180825/PhotonIsEMTightSelectorCutDefs.conf"; std::string m_mediumIDConfigPath = "ElectronPhotonSelectorTools/offline/mc15_20150712/PhotonIsEMMediumSelectorCutDefs.conf"; std::string m_looseIDConfigPath = "ElectronPhotonSelectorTools/offline/mc15_20150712/PhotonIsEMLooseSelectorCutDefs.conf"; // sort after calibration bool m_sort = true; // systematics std::string m_inputAlgoSystNames = ""; std::string m_outputAlgoSystNames = "PhotonCalibrator_Syst"; bool m_useAFII = false; //For backwards compatibility bool m_useAF3 = false; //For backwards compatibility float m_systVal = 0.0; std::string m_systName = ""; std::string m_esModel = "es2017_R21_v1"; std::string m_decorrelationModel = ""; int m_randomRunNumber = -1; bool m_readIDFlagsFromDerivation = false; private: std::string m_outAuxContainerName; std::string m_outSCContainerName; std::string m_outSCAuxContainerName; std::vector m_systList; EL::StatusCode decorate(xAOD::Photon * photon); // tools CP::EgammaCalibrationAndSmearingTool* m_EgammaCalibrationAndSmearingTool = nullptr; asg::AnaToolHandle m_isolationCorrectionTool_handle {"CP::IsolationCorrectionTool/IsolationCorrectionTool", this}; ElectronPhotonVariableCorrectionTool* m_photonVarCorrectionTool = nullptr; AsgPhotonIsEMSelector* m_photonTightIsEMSelector = nullptr; AsgPhotonIsEMSelector* m_photonMediumIsEMSelector = nullptr; AsgPhotonIsEMSelector* m_photonLooseIsEMSelector = nullptr; asg::AnaToolHandle m_photonTightEffTool_handle {"AsgPhotonEfficiencyCorrectionTool/tight" , this}; asg::AnaToolHandle m_photonMediumEffTool_handle{"AsgPhotonEfficiencyCorrectionTool/medium" , this}; asg::AnaToolHandle m_photonLooseEffTool_handle {"AsgPhotonEfficiencyCorrectionTool/loose" , this}; public: // Tree *myTree; //! // TH1 *myHist; //! // this is a standard constructor PhotonCalibrator (); // these are the functions inherited from Algorithm virtual EL::StatusCode setupJob (EL::Job& job); virtual EL::StatusCode fileExecute (); virtual EL::StatusCode histInitialize (); virtual EL::StatusCode changeInput (bool firstFile); virtual EL::StatusCode initialize (); virtual EL::StatusCode execute (); virtual EL::StatusCode postExecute (); virtual EL::StatusCode finalize (); virtual EL::StatusCode histFinalize (); // this is needed to distribute the algorithm to the workers ClassDef(PhotonCalibrator, 1); }; #endif