31 ATH_MSG_WARNING(
"InSituCalibStep::calibrate : Running over MC, will not calibrate unless expert option CalibrateMC is set to true");
37 return StatusCode::FAILURE;
43 for(
unsigned int i = 0 ; i < nHist ; i++){
46 TH1D *h_Abs =
dynamic_cast<TH1D*
>( &histoTool_Abs->
getHistogram());
47 TH2D *h_EtaInter =
dynamic_cast<TH2D*
>( &histoTool_EtaInter->
getHistogram());
63 return StatusCode::SUCCESS;
71 unsigned int rNumber = 0;
73 return StatusCode::FAILURE;
75 return StatusCode::SUCCESS;
76 unsigned int runNumber =
static_cast<unsigned int>(rNumber+0.5);
78 unsigned int periodInd = 9999;
82 if (firstRun<=runNumber && runNumber <= lastRun ){
93 return StatusCode::SUCCESS;
98 jet->setJetP4(jetStartP4);
101 return StatusCode::FAILURE;
103 calibP4 = calibP4 * s;
106 jet->setJetP4(calibP4);
108 return StatusCode::SUCCESS;
113 static std::atomic<unsigned int> eventInfoWarnings = 0;
116 eventObj = rhEvtInfo.
cptr();
120 if ( eventInfoWarnings < 20 )
121 ATH_MSG_ERROR(
" InSituCalibStep::calibrate : Failed to retrieve event information.");
122 return StatusCode::SUCCESS;
124 return StatusCode::SUCCESS;
152 double scale_diff_perc = 100*abs(scale_OG - scale)/scale_OG;
153 if (scale_diff_perc > 0.01){
ATH_MSG_WARNING(
"Simplified InsituScale calculation differs by "<<scale_diff_perc<<
"% --> original scale = "<<scale_OG<<
", simplified scale = "<<scale);}
159 return StatusCode::SUCCESS;
167 std::unique_ptr<TH2> prod(
static_cast<TH2*
>( h2d->Clone() ) );
168 for (
int xi=1;xi<=prod->GetNbinsX();xi++) {
169 double pt=prod->GetXaxis()->GetBinCenter(xi);
170 const double R_abs=
h->Interpolate(pt);
171 const double inv_R_abs = 1. / R_abs;
173 for (
int yi=1;yi<=prod->GetNbinsY();yi++) {
174 double c_rel = h2d->GetBinContent(xi,yi);
175 prod->SetBinContent(xi,yi,c_rel*inv_R_abs);
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
Header file for AthHistogramAlgorithm.
std::unique_ptr< const TH2 > combineCalibration(const TH2 *h2d, const TH1 *h)
ToolHandleArray< JetHelper::IVarTool > m_histTool_Abs
Gaudi::Property< std::string > m_jetInScale
Gaudi::Property< bool > m_CalibrateMC
StatusCode retrieveEventInfo(unsigned int &r) const
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
virtual StatusCode calibrate(xAOD::JetContainer &) const override
Apply calibration to a jet container.
std::vector< double > m_ptMax_vec
std::vector< double > m_ptMin_vec
std::vector< std::unique_ptr< const TH2 > > m_insituCorr_vec
Gaudi::Property< std::string > m_jetOutScale
std::vector< double > m_etaMin_vec
ToolHandleArray< JetHelper::IVarTool > m_histTool_EtaInter
ToolHandle< JetHelper::IVarTool > m_vartool2
StatusCode getInsituCorr(const xAOD::Jet &jet, JetHelper::JetContext &jc, unsigned int periodIndex, double &scale) const
std::vector< double > m_etaMax_vec
SG::ReadHandleKey< xAOD::EventInfo > m_evtInfoKey
ToolHandle< JetHelper::IVarTool > m_vartool1
InSituCalibStep(const std::string &name="InSituCalibStep")
Constructor with parameters:
Gaudi::Property< bool > m_useOriginalHistCombination
Gaudi::Property< std::vector< unsigned int > > m_RunNumBoundaries
Gaudi::Property< bool > m_isMC
Class JetContext Designed to read AOD information related to the event, N vertices,...
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type cptr()
Dereference the pointer.
uint32_t runNumber() const
The current event's run number.
Jet_v1 Jet
Definition of the current "jet version".
EventInfo_v1 EventInfo
Definition of the latest event info version.
JetContainer_v1 JetContainer
Definition of the current "jet container version".
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.