ATLAS Offline Software
Loading...
Searching...
No Matches
EgammaGapCalibration.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5
6// ********************************************************************
7//
8// NAME: EgammaGapCalibration.cxx
9// PACKAGE: Trigger/TrigTools/EgammaGapCalibration.cxx
10//
11// AUTHOR: Denis Oliveira Damazio
12//
13// REFERENCES: Tool to provide Longitudinal Weight calibration
14// Based on Scott's code for the offline
15//
16// ********************************************************************
17
19//#include "TrigCaloEvent/TrigEMCluster.h"
21#include "GaudiKernel/MsgStream.h"
22#include "CaloGeoHelpers/CaloSampling.h"
23
25
27
28 CHECK (base_class::initialize());
29
30 ATH_MSG_DEBUG( "Initialize Tool : " << name() );
31
32 return StatusCode::SUCCESS;
33
34}
35
36
38
39 ATH_MSG_DEBUG( "Finalize Tool : " << name() );
40
41 return StatusCode::SUCCESS;
42
43}
44
46 const void * /*param*/) const{
47
48#ifndef NDEBUG
49 ATH_MSG_DEBUG( "makeCorrection for tool : " << name() );
50 ATH_MSG_DEBUG( "Cluster E input : " << clus->energy() );
51#endif
52 float the_aeta=(clus->eta());
53 if (the_aeta<0) the_aeta=-the_aeta;
54 // If far from the crack, nothing to do
55 if (the_aeta < m_eta_start_crack() || the_aeta > m_eta_end_crack()) return;
56
57 CxxUtils::Array<2> correction = m_correction();
58 int degree = m_degree();
59 float a = interpolate(correction, the_aeta, degree,1);
60 float alpha = interpolate(correction, the_aeta, degree,2);
61 float offset = interpolate(correction, the_aeta, degree,3);
62 float eh_scint = clus->energy(CaloSampling::TileGap3);
63 float ec = clus->energy();
64 clus->setEnergy(a*(ec+alpha*eh_scint + offset));
65 clus->setEt(clus->energy()/cosh(clus->eta()));
66#ifndef NDEBUG
67 ATH_MSG_DEBUG( "Cluster E output : " << clus->energy() );
68#endif
69
70}
71
#define ATH_MSG_DEBUG(x)
#define CHECK(...)
Evaluate an expression and check for errors.
static Double_t a
Read-only multidimensional array.
virtual StatusCode finalize() override
Finalization of the tool.
Constant< float > m_eta_start_crack
Constant< float > m_eta_end_crack
virtual void makeCorrection(xAOD::TrigEMCluster *, const void *v=nullptr) const override
method to perform the correction.
virtual StatusCode initialize() override
Initialization of the tool.
Constant< CxxUtils::Array< 2 > > m_correction
void setEt(float)
set Et (calibrated)
float eta() const
get Eta (calibrated)
void setEnergy(float energy)
set Energy (calibrated)
float energy() const
get Energy (calibrated)
float interpolate(const CaloRec::Array< 2 > &a, float x, unsigned int degree, unsigned int ycol=1, const CaloRec::Array< 1 > &regions=CaloRec::Array< 1 >(), int n_points=-1, bool fixZero=false)
Polynomial interpolation in a table.
TrigEMCluster_v1 TrigEMCluster
Define the latest version of the trigger EM cluster class.