ATLAS Offline Software
Loading...
Searching...
No Matches
Generic4VecCorrection.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef JETCALIBTOOLS_GENERIC4VECCORRECTION_H
6#define JETCALIBTOOLS_GENERIC4VECCORRECTION_H
7
8
9#include "TString.h"
10#include "TH1.h"
11
13
14#include <nlohmann/json.hpp>
15#include <map>
16
17class TEnv;
18class TH2;
19
21 : virtual public JetCalibrationStep
22{
23
24 public:
25
26 // Enums for corrections supported by this tool
33
34 // Constructor/destructor/init
36 Generic4VecCorrection(const std::string& name, TEnv* config, const TString & jetAlgo,
37 const TString & calibAreaTag, const TString & forceCalibFile,
38 JET_CORRTYPE correctionType, const TString & mcCampaign="", const TString & simFlavour="",
39 int mcDSID=-1, const TString & generatorsInfo="");
40 virtual ~Generic4VecCorrection();
41 virtual StatusCode initialize() override;
42 virtual StatusCode calibrate(xAOD::Jet& jet, JetEventInfo&) const override;
43
44 private:
45 // Extract correction value from chosen 2D histogram
46 StatusCode readHisto(float& correctionFactor, TH2* h_correction_2D, float x, float y) const;
47
48 // Dedicated initialize functions for supported corrections
50 StatusCode initialize_MC2MC();
51
52 // For MC2MC, parse the calibration showerModel from sample metadata
53 StatusCode parse_showerModel(TString& showerModel, int mcDSID, TString generatorsInfo) const;
54
55 StatusCode load_json(nlohmann::json& json_object, const std::string& json_filepath) const;
56
57 // Class variables from constructor
58 TEnv* m_config;
59 const TString m_jetAlgo;
60 const TString m_calibAreaTag;
62 const TString m_simFlavour;
63
64 // Variables for MC2MC Correction
65 int m_mcDSID{};
66 const TString m_generatorsInfo;
67 const TString m_mcCampaign;
68 const TString m_forceCalibFile;
69
70 // Option to skip correction if input file does not conform to requested correction
72
73 // Input and output jet scales
74 TString m_inJetScale;
76
77 // Correction histograms
79 std::map<int, TH2*> m_correctionHists; // If several possible corrections
80 TH2* m_only_correction_2D{}; // If only one correction
81 TAxis m_etaAxis; // For finding center of eta bins to avoid eta interpolation
82
83};
84
85#endif
#define y
#define x
virtual StatusCode initialize() override
StatusCode parse_showerModel(TString &showerModel, int mcDSID, TString generatorsInfo) const
StatusCode readHisto(float &correctionFactor, TH2 *h_correction_2D, float x, float y) const
StatusCode load_json(nlohmann::json &json_object, const std::string &json_filepath) const
virtual StatusCode calibrate(xAOD::Jet &jet, JetEventInfo &) const override
std::map< int, TH2 * > m_correctionHists
JetCalibrationStep(const char *name="JetCalibrationStep")
Jet_v1 Jet
Definition of the current "jet version".