ATLAS Offline Software
Loading...
Searching...
No Matches
CP::IsolationCorrection Class Reference

#include <IsolationCorrection.h>

Inheritance diagram for CP::IsolationCorrection:
Collaboration diagram for CP::IsolationCorrection:

Public Types

enum  ParticleType { ELECTRON =0 , PHOTON =1 }
enum  Version { REL17_2 =1 , REL20_2 =2 , REL21 =3 , REL22 =4 }

Public Member Functions

 IsolationCorrection (const std::string &name)
 ~IsolationCorrection ()
StatusCode initialize ()
void SetCorrectionFile (const std::string &corr_file, const std::string &corr_ddshift_file, const std::string &corr_ddsmearing_file)
void SetToolVer (CP::IsolationCorrection::Version)
float GetPtCorrectedIsolation (const xAOD::Egamma &, const xAOD::Iso::IsolationType) const
float GetPtCorrection (const xAOD::Egamma &, const xAOD::Iso::IsolationType) const
float GetDDCorrection (const xAOD::Egamma &, const xAOD::Iso::IsolationType, const std::string &year)
float GetEtaPointing (const xAOD::Egamma *)
void SetDataMC (bool is_mc)
void SetDataMC (const xAOD::EventInfo *)
void SetAFII (bool AFII_corr)
void SetCorrectEtcone (bool correct_etcone)
void SetTroubleCategories (bool trouble_categories)
void FitType (bool b)
void ForcePartType (bool b)
void Print ()
void setLevel (MSG::Level lvl)
 Change the current logging level.
Functions providing the same interface as AthMessaging
bool msgLvl (const MSG::Level lvl) const
 Test the output level of the object.
MsgStream & msg () const
 The standard message stream.
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream.

Private Member Functions

StatusCode setupDD (const std::string &year)
template<class T>
void FreeClear (T &cntr)
float GetPtCorrectedIsolation (float energy, float etaS2, float etaPointing, float etaCluster, float radius, bool is_mc, float Etcone_value, bool isConversion=false, ParticleType parttype=ELECTRON)
float GetPtCorrectedTopoIsolation (float energy, float etaS2, float etaPointing, float etaCluster, float radius, bool is_mc, float Etcone_value, bool isConversion=false, ParticleType parttype=ELECTRON, Version ver=REL17_2)
float GetPtCorrectedIsolationError (float energy, float etaS2, float etaPointing, float etaCluster, float radius, bool is_mc, ParticleType parttype=ELECTRON, Version ver=REL17_2)
void setEtaBins ()
void setIsolCorr ()
void set2011Corr ()
void set2012Corr ()
void set2015Corr ()
void load2012Corr ()
void load2015Corr ()
void setDDCorr ()
void loadDDCorr ()
float GetPtCorrection (float energy, float etaS2, float etaPointing, float etaCluster, float radius, bool is_mc=true, bool isConversion=false, ParticleType parttype=ELECTRON) const
float GetPtCorrectionTopo (float energy, float etaS2, float etaPointing, float etaCluster, float radius, bool is_mc=true, bool isConversion=false, ParticleType parttype=ELECTRON, Version ver=REL17_2, int convFlag_int=0, int author=0, float conv_radius=0., float conv_ratio=0.) const
int GetEtaBinFine (float eta) const
int GetEtaBinCoarse (float eta) const
float GetPtCorrectionFactor (float eta, const std::vector< float > &mc_leakage_corrections_ptr=std::vector< float >(), const std::vector< float > &data_leakage_corrections_ptr=std::vector< float >()) const
float GetPtCorrection_FromGraph (float energy, float etaS2, float etaPointing, float etaCluster, float radius, bool isConversion, ParticleType parttype) const
float GetPtCorrection_FromGraph_2015 (float energy, float etaS2, float radius, int conversion_flag, int author, float conv_radius, float conv_ratio, ParticleType parttype) const
void initMessaging () const
 Initialize our message level and MessageSvc.

Static Private Member Functions

static float getPtAtFirstMeasurement (const xAOD::TrackParticle *tp)
static int GetConversionType (int conversion_flag, float conv_radius, float conv_ratio)
static int GetRadius (float radius)
static float GetPtCorrectionValue (float energy, float etaPointing, float etaCluster, float scale_factor)

Private Attributes

CP::IsolationCorrection::Version m_tool_ver
std::vector< float > m_eta_bins_fine
std::vector< float > m_eta_bins_coarse
std::vector< float > m_eta_bins_dd
const unsigned int m_nBinsEtaFine
const unsigned int m_nBinsEtaCoarse
std::string m_corr_file
std::string m_corr_ddshift_file
std::string m_corr_ddsmearing_file
std::vector< float > m_feta_bins_dd_2015
std::vector< float > m_feta_bins_dd_2017
bool m_is_mc
bool m_AFII_corr
bool m_set_mc
bool m_correct_etcone
bool m_trouble_categories
bool m_useLogLogFit
bool m_forcePartType
CP::ShowerDepthUtil * m_shower
std::string m_previousYear
bool m_corrInitialized [3][2] {}
int m_crackBin {}
std::vector< float > * m_feta_bins_dd {}
std::vector< TGraph * > * m_graph_dd_cone40_unconv_photon_shift {}
std::vector< TGraph * > * m_graph_dd_cone40_conv_photon_shift {}
std::vector< TGraph * > * m_graph_dd_cone20_unconv_photon_shift {}
std::vector< TGraph * > * m_graph_dd_cone20_conv_photon_shift {}
std::vector< TGraph * > m_graph_dd_2017_cone40_unconv_photon_shift
std::vector< TGraph * > m_graph_dd_2017_cone40_conv_photon_shift
std::vector< TGraph * > m_graph_dd_2017_cone20_unconv_photon_shift
std::vector< TGraph * > m_graph_dd_2017_cone20_conv_photon_shift
std::vector< TGraph * > m_graph_afIIdd_2017_cone40_unconv_photon_shift
std::vector< TGraph * > m_graph_afIIdd_2017_cone40_conv_photon_shift
std::vector< TGraph * > m_graph_afIIdd_2017_cone20_unconv_photon_shift
std::vector< TGraph * > m_graph_afIIdd_2017_cone20_conv_photon_shift
std::vector< TGraph * > m_graph_dd_2015_2016_cone40_unconv_photon_shift
std::vector< TGraph * > m_graph_dd_2015_2016_cone40_conv_photon_shift
std::vector< TGraph * > m_graph_dd_2015_2016_cone20_unconv_photon_shift
std::vector< TGraph * > m_graph_dd_2015_2016_cone20_conv_photon_shift
std::vector< TGraph * > m_graph_afIIdd_2015_2016_cone40_unconv_photon_shift
std::vector< TGraph * > m_graph_afIIdd_2015_2016_cone40_conv_photon_shift
std::vector< TGraph * > m_graph_afIIdd_2015_2016_cone20_unconv_photon_shift
std::vector< TGraph * > m_graph_afIIdd_2015_2016_cone20_conv_photon_shift
std::vector< TGraph * > m_graph_dd_2015_cone40_unconv_photon_shift
std::vector< TGraph * > m_graph_dd_2015_cone40_conv_photon_shift
std::vector< TGraph * > m_graph_dd_2015_cone20_unconv_photon_shift
std::vector< TGraph * > m_graph_dd_2015_cone20_conv_photon_shift
std::vector< TF1 * > m_graph_dd_cone40_photon_shift
std::vector< TF1 * > m_graph_dd_cone40_photon_smearing
std::vector< TF1 * > m_function_2015_cone40_photon_unconverted
std::vector< TF1 * > m_function_2015_cone30_photon_unconverted
std::vector< TF1 * > m_function_2015_cone20_photon_unconverted
std::vector< TF1 * > m_function_2015_cone40_photon_converted_ok
std::vector< TF1 * > m_function_2015_cone30_photon_converted_ok
std::vector< TF1 * > m_function_2015_cone20_photon_converted_ok
std::vector< TF1 * > m_function_2015_cone40_photon_converted_trouble
std::vector< TF1 * > m_function_2015_cone30_photon_converted_trouble
std::vector< TF1 * > m_function_2015_cone20_photon_converted_trouble
std::vector< TF1 * > m_function_2015_cone40_author_1_electron
std::vector< TF1 * > m_function_2015_cone30_author_1_electron
std::vector< TF1 * > m_function_2015_cone20_author_1_electron
std::vector< TF1 * > m_function_2015_cone40_author_16_electron
std::vector< TF1 * > m_function_2015_cone30_author_16_electron
std::vector< TF1 * > m_function_2015_cone20_author_16_electron
std::vector< TGraph * > m_graph_histoMean_2015_cone40_photon_converted_trouble
std::vector< TGraph * > m_graph_histoMean_2015_cone30_photon_converted_trouble
std::vector< TGraph * > m_graph_histoMean_2015_cone20_photon_converted_trouble
std::vector< TGraph * > m_graph_histoMean_2015_cone40_author_16_electron
std::vector< TGraph * > m_graph_histoMean_2015_cone30_author_16_electron
std::vector< TGraph * > m_graph_histoMean_2015_cone20_author_16_electron
std::vector< TGraph * > m_graph_cone40_photon_unconverted
std::vector< TGraph * > m_graph_cone30_photon_unconverted
std::vector< TGraph * > m_graph_cone20_photon_unconverted
std::vector< TGraph * > m_graph_cone40_photon_converted
std::vector< TGraph * > m_graph_cone30_photon_converted
std::vector< TGraph * > m_graph_cone20_photon_converted
std::vector< TGraph * > m_graph_cone40_electron
std::vector< TGraph * > m_graph_cone30_electron
std::vector< TGraph * > m_graph_cone20_electron
std::vector< float > m_mc_rel17_leakage_correction_slopes_electron_15
std::vector< float > m_mc_rel17_leakage_correction_slopes_electron_20
std::vector< float > m_mc_rel17_leakage_correction_slopes_electron_25
std::vector< float > m_mc_rel17_leakage_correction_slopes_electron_30
std::vector< float > m_mc_rel17_leakage_correction_slopes_electron_35
std::vector< float > m_mc_rel17_leakage_correction_slopes_electron_40
std::vector< float > m_mc_rel17_leakage_correction_offsets_electron_15
std::vector< float > m_mc_rel17_leakage_correction_offsets_electron_20
std::vector< float > m_mc_rel17_leakage_correction_offsets_electron_25
std::vector< float > m_mc_rel17_leakage_correction_offsets_electron_30
std::vector< float > m_mc_rel17_leakage_correction_offsets_electron_35
std::vector< float > m_mc_rel17_leakage_correction_offsets_electron_40
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_converted_15
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_converted_20
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_converted_25
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_converted_30
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_converted_35
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_converted_40
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_converted_15
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_converted_20
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_converted_25
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_converted_30
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_converted_35
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_converted_40
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_unconverted_15
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_unconverted_20
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_unconverted_25
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_unconverted_30
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_unconverted_35
std::vector< float > m_mc_rel17_leakage_correction_slopes_photon_unconverted_40
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_unconverted_15
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_unconverted_20
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_unconverted_25
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_unconverted_30
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_unconverted_35
std::vector< float > m_mc_rel17_leakage_correction_offsets_photon_unconverted_40
std::string m_nm
 Message source name.
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels).
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer.
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level.
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging).

Detailed Description

Member Enumeration Documentation

◆ ParticleType

◆ Version

Constructor & Destructor Documentation

◆ IsolationCorrection()

CP::IsolationCorrection::IsolationCorrection ( const std::string & name)

Definition at line 33 of file IsolationCorrection.cxx.

34 : asg::AsgMessaging(name),
38 m_corr_file(""),
40 m_corr_ddsmearing_file(""), // in run I, there was a shift and a smearing
41 m_is_mc(false),
42 m_AFII_corr(false),
43 m_set_mc(false),
44 m_correct_etcone(false),
46 m_useLogLogFit(false),
48 m_shower(nullptr),
49 m_previousYear("2000")
50 {
51 // 3 possible periods
52 for (int i = 0; i < 3; i++) {
53 // 2 simulation flavour
54 for (int j = 0; j < 2; j++)
55 m_corrInitialized[i][j] = false;
56 }
57 }
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)

◆ ~IsolationCorrection()

CP::IsolationCorrection::~IsolationCorrection ( )

Definition at line 835 of file IsolationCorrection.cxx.

835 {
836 m_eta_bins_fine.clear();
837 m_eta_bins_coarse.clear();
838
839 if (m_tool_ver == REL17_2) {
843
847
851
854
855 } else if (m_tool_ver == REL20_2 || m_tool_ver == REL21 || m_tool_ver == REL22) {
856
857 //---- Rel 20_2 pT leakage correction file
858
862
866
870
874
878
879
880 //---- Rel 20_2 pT leakage correction with histogram mean file
881
885
889
890 }
891
897 }
903 }
904
905 // For etcone, we only have very old corrections...
912
919
920 // photons: last eta bin isn't used
927
934
941
948
949 // -------------------------------------------------------------------------------------------
950 //Delete m_shower instance
951 delete m_shower;
952
953 }

Member Function Documentation

◆ FitType()

void CP::IsolationCorrection::FitType ( bool b)
inline

◆ ForcePartType()

void CP::IsolationCorrection::ForcePartType ( bool b)
inline

◆ FreeClear()

template<class T>
void CP::IsolationCorrection::FreeClear ( T & cntr)
private

Definition at line 819 of file IsolationCorrection.cxx.

819 {
820 ATH_MSG_DEBUG("FreeClearing the container " << cntr.size());
821 for ( typename T::iterator it = cntr.begin();
822 it != cntr.end(); ++it ) {
823 if (*it) {
824 if (msgLvl(MSG::DEBUG)) {
825 ATH_MSG_DEBUG("Deleting " << *it << " " << typeid(*it).name());
826 ATH_MSG_DEBUG((*it)->GetName());
827 (*it)->Print();
828 }
829 delete * it;
830 }
831 }
832 cntr.clear();
833 }
#define ATH_MSG_DEBUG(x,...)
bool msgLvl(const MSG::Level lvl) const
Test the output level of the object.

◆ GetConversionType()

int CP::IsolationCorrection::GetConversionType ( int conversion_flag,
float conv_radius,
float conv_ratio )
staticprivate

Definition at line 1249 of file IsolationCorrection.cxx.

1249 {
1250 // ph_convFlag==0
1251 if(conversion_flag == 0) return 0;
1252 // ((ph_convFlag==1)||(ph_convFlag==2&&ph_ptconv_ratio>0.3)||(ph_convFlag==2&&ph_ptconv_ratio<0.3&&ph_truth_Rconv>140.))
1253 if( (conversion_flag == 1) || ((conversion_flag == 2 && conv_ratio > 0.3) || (conversion_flag == 2 && conv_ratio < 0.3 && conv_radius > 140.)) ) return 1;
1254 // (ph_convFlag==2&&ph_ptconv_ratio<0.3&&ph_truth_Rconv<140.)
1255 if(conversion_flag == 2 && conv_radius < 140.) return 2;
1256 return 0;
1257 }

◆ GetDDCorrection()

float CP::IsolationCorrection::GetDDCorrection ( const xAOD::Egamma & input,
const xAOD::Iso::IsolationType isol,
const std::string & year )

Definition at line 318 of file IsolationCorrection.cxx.

318 {
319
320 ATH_MSG_VERBOSE("Getting DD correction");
321 if (setupDD(year) == StatusCode::FAILURE) {
322 return 0;
323 }
324
325 // corrections only for MC and photon
326 if(!m_is_mc || input.type() == xAOD::Type::Electron) return 0;
327
328 const xAOD::Photon* ph_input = static_cast<const xAOD::Photon_v1*> (&input);
329 int convFlag_int = xAOD::EgammaHelpers::conversionType(ph_input);
330
331 bool converted = false;
332 if(convFlag_int > 0) converted = true;
333
334 float etaS2 = input.eta();
335 int eta_bin = 0;
336
337 double feta = fabs(etaS2);
338 for (unsigned int i = 0; i < m_feta_bins_dd->size()-1; i++) {
339 if (feta >= m_feta_bins_dd->at(i) && feta < m_feta_bins_dd->at(i+1))
340 eta_bin = i;
341 }
342 if (eta_bin == m_crackBin)
343 return 0;
344 else if (eta_bin > m_crackBin)
345 eta_bin -= 1;
346
347 if (eta_bin < 0) {
348 ATH_MSG_WARNING("Strange cluster S2 eta for photon isolation DD correction ! eta = " << etaS2 << ". No correction");
349 return 0;
350 }
351
352 if (input.pt() > 25e3)
353 ATH_MSG_VERBOSE("Getting correction for photon pt: " <<input.pt()
354 << " eta: " << etaS2 << " etabin: " << eta_bin);
355
356 float pt_gev = input.pt()*0.001;
357 if (pt_gev > 999.) pt_gev = 999. ;
358
359 float isolation_ddcorrection = 0;
360 if (isol==xAOD::Iso::topoetcone40) {
361 if (!converted)
362 isolation_ddcorrection = 1e3*(*m_graph_dd_cone40_unconv_photon_shift)[eta_bin]->Eval(pt_gev);
363 else
364 isolation_ddcorrection = 1e3*(*m_graph_dd_cone40_conv_photon_shift)[eta_bin]->Eval(pt_gev);
365 } else if (isol==xAOD::Iso::topoetcone20) {
366 if (!converted)
367 isolation_ddcorrection = 1e3*(*m_graph_dd_cone20_unconv_photon_shift)[eta_bin]->Eval(pt_gev);
368 else
369 isolation_ddcorrection = 1e3*(*m_graph_dd_cone20_conv_photon_shift)[eta_bin]->Eval(pt_gev);
370 }
371
372 return isolation_ddcorrection;
373 }
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_VERBOSE(x,...)
StatusCode setupDD(const std::string &year)
mapped_type at(key_type key) const
Look up an element in the map.
@ Electron
The object is an electron.
Definition ObjectType.h:46
xAOD::EgammaParameters::ConversionType conversionType(const xAOD::Photon *ph)
return the photon conversion type (see EgammaEnums)
@ topoetcone20
Topo-cluster ET-sum.
Photon_v1 Photon
Definition of the current "egamma version".

◆ GetEtaBinCoarse()

int CP::IsolationCorrection::GetEtaBinCoarse ( float eta) const
private

Definition at line 1146 of file IsolationCorrection.cxx.

1146 {
1147 int eta_bin=-1;
1148 float fabs_eta = fabs(eta);
1149 for (unsigned int i=0; i < m_nBinsEtaCoarse; ++i) {
1150 if ((fabs_eta >= m_eta_bins_coarse[i]) && (fabs_eta < m_eta_bins_coarse[i+1])) {
1151 eta_bin = i;
1152 break;
1153 }
1154 }
1155 return eta_bin;
1156 }
Scalar eta() const
pseudorapidity method

◆ GetEtaBinFine()

int CP::IsolationCorrection::GetEtaBinFine ( float eta) const
private

Definition at line 1128 of file IsolationCorrection.cxx.

1128 {
1129 int eta_bin=-1;
1130 float fabs_eta = fabs(eta);
1131 for (unsigned int i=0; i < m_nBinsEtaFine; ++i) {
1132 if ((fabs_eta >= m_eta_bins_fine[i]) && (fabs_eta < m_eta_bins_fine[i+1])) {
1133 eta_bin = i;
1134 break;
1135 }
1136 }
1137 return eta_bin;
1138 }

◆ GetEtaPointing()

float CP::IsolationCorrection::GetEtaPointing ( const xAOD::Egamma * input)

Definition at line 375 of file IsolationCorrection.cxx.

375 {
376 if (input->caloCluster() == nullptr) {
377 ATH_MSG_WARNING("The associated cluster of the object does not exist ! Maybe the thinning was too agressive... use object eta for eta (instead of etaS2 or pointing).");
378 return input->eta();
379 }
380 float etaS1 = input->caloCluster()->etaBE(1);
381 float etaS2 = input->caloCluster()->etaBE(2);
382 float phiCluster = input->caloCluster()->phi();
384
385 if(part_type == IsolationCorrection::PHOTON && fabs(etaS2) > 2.37) return 0.;
386 if(part_type == IsolationCorrection::ELECTRON && fabs(etaS2) > 2.47) return 0.;
387 if(fabs(etaS1) > 2.5) return 0.;
388 if(fabs(phiCluster) > 3.2) return 0.;
389
390 auto etaPointing = m_shower->getCaloPointingEta(etaS1, etaS2, phiCluster);
391 //using std::optional here
392 return etaPointing.value_or(0.);
393 }

◆ getPtAtFirstMeasurement()

float CP::IsolationCorrection::getPtAtFirstMeasurement ( const xAOD::TrackParticle * tp)
staticprivate

Definition at line 223 of file IsolationCorrection.cxx.

224 {
225 if (!tp) return 0;
226 for (unsigned int i = 0; i < tp->numberOfParameters(); ++i)
228 return hypot(tp->parameterPX(i), tp->parameterPY(i));
229 return tp->pt();
230 }
float parameterPX(unsigned int index) const
Returns the parameter x momentum component, for 'index'.
float parameterPY(unsigned int index) const
Returns the parameter y momentum component, for 'index'.
xAOD::ParameterPosition parameterPosition(unsigned int index) const
Return the ParameterPosition of the parameters at 'index'.
size_t numberOfParameters() const
Returns the number of additional parameters stored in the TrackParticle.
virtual double pt() const override final
The transverse momentum ( ) of the particle.
@ FirstMeasurement
Parameter defined at the position of the 1st measurement.

◆ GetPtCorrectedIsolation() [1/2]

float CP::IsolationCorrection::GetPtCorrectedIsolation ( const xAOD::Egamma & input,
const xAOD::Iso::IsolationType isol ) const

Definition at line 81 of file IsolationCorrection.cxx.

81 {
82 float corrected_isolation = input.isolationValue(isol) - GetPtCorrection(input, isol);
83 return corrected_isolation;
84
85 }
float GetPtCorrection(const xAOD::Egamma &, const xAOD::Iso::IsolationType) const

◆ GetPtCorrectedIsolation() [2/2]

float CP::IsolationCorrection::GetPtCorrectedIsolation ( float energy,
float etaS2,
float etaPointing,
float etaCluster,
float radius,
bool is_mc,
float Etcone_value,
bool isConversion = false,
ParticleType parttype = ELECTRON )
private

Definition at line 959 of file IsolationCorrection.cxx.

967 {
968
969 float pt_correction = GetPtCorrection(energy, etaS2, etaPointing, etaCluster, radius, is_mc, isConversion, parttype);
970 return Etcone_value - pt_correction;
971 }

◆ GetPtCorrectedIsolationError()

float CP::IsolationCorrection::GetPtCorrectedIsolationError ( float energy,
float etaS2,
float etaPointing,
float etaCluster,
float radius,
bool is_mc,
ParticleType parttype = ELECTRON,
Version ver = REL17_2 )
private

◆ GetPtCorrectedTopoIsolation()

float CP::IsolationCorrection::GetPtCorrectedTopoIsolation ( float energy,
float etaS2,
float etaPointing,
float etaCluster,
float radius,
bool is_mc,
float Etcone_value,
bool isConversion = false,
ParticleType parttype = ELECTRON,
Version ver = REL17_2 )
private

Definition at line 978 of file IsolationCorrection.cxx.

987 {
988
989 float pt_correction = GetPtCorrectionTopo(energy, etaS2, etaPointing, etaCluster, radius, is_mc, isConversion, parttype, ver);
990 return Etcone_value - pt_correction;
991 }
float GetPtCorrectionTopo(float energy, float etaS2, float etaPointing, float etaCluster, float radius, bool is_mc=true, bool isConversion=false, ParticleType parttype=ELECTRON, Version ver=REL17_2, int convFlag_int=0, int author=0, float conv_radius=0., float conv_ratio=0.) const

◆ GetPtCorrection() [1/2]

float CP::IsolationCorrection::GetPtCorrection ( const xAOD::Egamma & input,
const xAOD::Iso::IsolationType isol ) const

Definition at line 88 of file IsolationCorrection.cxx.

88 {
89 /*
90 - nPV: number of primary vertices (corrections were derived requiring >= 2 tracks/vertex in 2011 data)
91
92 - Etcone40: (ph_Etcone40) *** in MeV!
93 - Etcone40_ED_corrected: ED corrected version of Etcone40 (ph_Etcone40_ED_corrected) *** in Mev!
94
95 - energy: cluster energy (ph_cl_E) *** in MeV!
96 - etaS2: eta in the 2nd calo sampling (ph_etas2)
97 - etaPointing: pointing eta -> from 1st and 2nd calo samplings (ph_etap)
98 - etaCluster: cluster eta (ph_cl_eta)
99 - radius: radius of the input EtconeXX variable. Can be given as, e.g., .20 or 20
100 - is_mc: set to true if running on MC
101 - Etcone_value: value of uncorrected EtconeXX variable (ph_EtconeXX) *** in MeV!
102 - isConversion: photons only: conversion flag (ph_isConv)
103 - parttype: ELECTRON or PHOTON, enum defined below
104 - version: REL22, REL21, REL20_2, REL17_2, REL17 or REL16, enum defined below
105 */
106 float isolation_ptcorrection = 0;
107 float energy = 0;
108
109 //energy = input.caloCluster()->energyBE(1) + input.caloCluster()->energyBE(2) + input.caloCluster()->energyBE(3); //input.e()
110 if (input.caloCluster() == nullptr) {
111 ATH_MSG_WARNING("The associated cluster of the object does not exist ! Maybe the thinning was too agressive... No leakage correction computed.");
112 return 0.;
113 }
115 energy = input.caloCluster()->energyBE(1) + input.caloCluster()->energyBE(2) + input.caloCluster()->energyBE(3);
116 else
117 energy = input.caloCluster()->e();
118
119 bool is_mc = m_is_mc;
121 bool convFlag = false;
122
123 float etaS2 = input.caloCluster()->etaBE(2);
124 float etaS1 = input.caloCluster()->etaBE(1);
125 float etaCluster = input.caloCluster()->eta();
126 float phiCluster = input.caloCluster()->phi();
127
128 if(part_type == IsolationCorrection::PHOTON && fabs(etaS2) > 2.37) return 0.;
129 if(part_type == IsolationCorrection::ELECTRON && fabs(etaS2) > 2.47) return 0.;
130
131 if(fabs(etaS1) > 2.5) return 0.;
132 if(fabs(phiCluster) > float(M_PI)) return 0.;
133
134 if (part_type == IsolationCorrection::ELECTRON && energy > 15e3)
135 ATH_MSG_VERBOSE("Electron ? " << (part_type == IsolationCorrection::ELECTRON) << " Input E = " << input.caloCluster()->e() << " E used " << energy << " author = " << input.author() << " pT = " << input.pt() << " phi = " << input.phi());
136
137 int convFlag_int = 0;
138 float conv_radius = 0.;
139 float conv_ratio = 0.;
140
141 if(part_type == IsolationCorrection::PHOTON){
142 const xAOD::Photon* ph_input = static_cast<const xAOD::Photon_v1*> (&input);
143
144 convFlag_int = xAOD::EgammaHelpers::conversionType(ph_input);
145 if(convFlag_int == 3 ) convFlag_int = 2;
146 else if(convFlag_int != 0) convFlag_int = 1;
147
148 if(convFlag_int != 0) convFlag = true;
149 conv_radius = xAOD::EgammaHelpers::conversionRadius(ph_input);
150
151 if(convFlag_int == 2){
152 const xAOD::Vertex* phVertex = ph_input->vertex();
153
154 static const SG::Accessor<float> accPt1("pt1");
155 static const SG::Accessor<float> accPt2("pt2");
156 const xAOD::TrackParticle* tp0 = phVertex->trackParticle(0);
157 const xAOD::TrackParticle* tp1 = phVertex->trackParticle(1);
158
159 float pt1conv{}, pt2conv{};
160 if (accPt1.isAvailable(*phVertex) && accPt2.isAvailable(*phVertex) ){
161 pt1conv = accPt1(*phVertex);
162 pt2conv = accPt2(*phVertex);
163 }else{
164 pt1conv = getPtAtFirstMeasurement( tp0 );
165 pt2conv = getPtAtFirstMeasurement( tp1 );
166 }
167 //avoid unlikely zero division
168 const auto [numerator, denominator] = std::minmax(pt1conv,pt2conv);
169 if (denominator == 0.)[[unlikely]]{
170 //something is very wrong
171 ATH_MSG_WARNING("denominator is zero.");
172 return 0.;
173 }
174 conv_ratio = numerator/denominator;
175 }
176 }
177 int author = input.author();
178
179 // for test
181 if (input.phi() > 0)
182 author = 1;
183 else
184 author = 16;
185 }
186
187 //using std::optional
188 auto etaPointing = m_shower->getCaloPointingEta(etaS1, etaS2, phiCluster, is_mc);
189 if (!etaPointing.has_value()) return 0.;
190
191 float radius = xAOD::Iso::coneSize(isol);
193
194 if(is_topo){
195
196 isolation_ptcorrection = GetPtCorrectionTopo( energy,
197 etaS2,
198 etaPointing.value(),
199 etaCluster,
200 radius,
201 is_mc,
202 convFlag,
203 part_type,
205 convFlag_int,
206 author,
207 conv_radius,
208 conv_ratio);
209 }else{
210 isolation_ptcorrection = GetPtCorrection( energy,
211 etaS2,
212 etaPointing.value(),
213 etaCluster,
214 radius,
215 is_mc,
216 convFlag,
217 part_type);
218 }
219
220 return isolation_ptcorrection;
221 }
#define M_PI
static float getPtAtFirstMeasurement(const xAOD::TrackParticle *tp)
const xAOD::Vertex * vertex(size_t index=0) const
Pointer to the xAOD::Vertex/es that match the photon candidate.
Definition Photon_v1.cxx:61
const TrackParticle * trackParticle(size_t i) const
Get the pointer to a given track that was used in vertex reco.
float conversionRadius(const xAOD::Vertex *vx)
return the conversion radius or 9999.
IsolationFlavour isolationFlavour(IsolationType type)
convert Isolation Type into Isolation Flavour
@ topoetcone
Topo-cluster ET-sum.
float coneSize(IsolationConeSize type)
convert Isolation Size into cone size
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Vertex_v1 Vertex
Define the latest version of the vertex class.
#define unlikely(x)

◆ GetPtCorrection() [2/2]

float CP::IsolationCorrection::GetPtCorrection ( float energy,
float etaS2,
float etaPointing,
float etaCluster,
float radius,
bool is_mc = true,
bool isConversion = false,
ParticleType parttype = ELECTRON ) const
private

Definition at line 1005 of file IsolationCorrection.cxx.

1009 {
1010
1011 int newrad = GetRadius(radius);
1012 std::vector<float> mc_correction_slopes_ptr;
1013 std::vector<float> mc_correction_offsets_ptr;
1014 std::vector<float> data_correction_slopes_ptr;
1015
1016 //TODO: when implementing ptcorr for etconeXX change this
1017
1018 switch(newrad){
1019 case 20:
1020 if (parttype == PHOTON) {
1021 // photons
1022 if(isConversion) {
1023 // converted
1026 } else {
1027 // unconverted
1030 }
1031 } else {
1032 // electrons
1033 mc_correction_slopes_ptr = m_mc_rel17_leakage_correction_slopes_electron_20;
1034 mc_correction_offsets_ptr = m_mc_rel17_leakage_correction_offsets_electron_20;
1035 }
1036 break;
1037 case 30:
1038 if (parttype == PHOTON) {
1039 // photons
1040 if(isConversion) {
1041 // converted
1044 } else {
1045 // unconverted
1048 }
1049 } else {
1050 // electrons
1051 mc_correction_slopes_ptr = m_mc_rel17_leakage_correction_slopes_electron_30;
1052 mc_correction_offsets_ptr = m_mc_rel17_leakage_correction_offsets_electron_30;
1053 }
1054 break;
1055 case 40:
1056 if (parttype == PHOTON) {
1057 // photons
1058 if(isConversion) {
1059 // converted
1062 } else {
1063 // unconverted
1066 }
1067 } else {
1068 // electrons
1069 mc_correction_slopes_ptr = m_mc_rel17_leakage_correction_slopes_electron_40;
1070 mc_correction_offsets_ptr = m_mc_rel17_leakage_correction_offsets_electron_40;
1071 }
1072 break;
1073 default:
1074 ATH_MSG_WARNING("Unable to retrieve leakage correction for topoIso cone with radius = " << radius << ".\n--- Radii must be one of {.20, .30, .40} OR {20, 30, 40}.\n");
1075 return 0.;
1076 }
1077
1078 float scale_factor = GetPtCorrectionFactor(etaS2, mc_correction_slopes_ptr, data_correction_slopes_ptr);
1079 float offset = 0.;
1080 if (!mc_correction_offsets_ptr.empty()) offset = GetPtCorrectionFactor(etaS2, mc_correction_offsets_ptr);
1081
1082 //avoid warnings
1083 if(is_mc) is_mc = true;
1084 return offset + GetPtCorrectionValue(energy, etaPointing, etaCluster, scale_factor);
1085
1086 }
float GetPtCorrectionFactor(float eta, const std::vector< float > &mc_leakage_corrections_ptr=std::vector< float >(), const std::vector< float > &data_leakage_corrections_ptr=std::vector< float >()) const
static int GetRadius(float radius)
static float GetPtCorrectionValue(float energy, float etaPointing, float etaCluster, float scale_factor)

◆ GetPtCorrection_FromGraph()

float CP::IsolationCorrection::GetPtCorrection_FromGraph ( float energy,
float etaS2,
float etaPointing,
float etaCluster,
float radius,
bool isConversion,
ParticleType parttype ) const
private

Definition at line 1197 of file IsolationCorrection.cxx.

1198 {
1199 int newrad = GetRadius(radius);
1200 double etaForPt = ((fabs(etaPointing - etaCluster) < 0.15) ? etaPointing : etaCluster);
1201 double et = (fabs(etaForPt)<99.) ? energy/cosh(etaForPt) : 0.;
1202 int etabin = GetEtaBinFine(etaS2);
1203 if( m_corr_file.empty() ){
1204 ATH_MSG_WARNING("IsolationCorrection::GetPtCorrection_FromGraph: the file containing the isolation leakage corrections is not initialized.\nNo correction is applied.\n");
1205 return 0;
1206 }
1207 if (etabin < 0) return 0; // must have eta in fiducial region
1208
1209 if( (etabin == 9 || etabin == 5) && parttype == PHOTON ){
1210 //No correction for photons with |etaS2|>2.37 or 1.37<|etaS2|<1.52
1211 return 0.;
1212 }
1213 double correction_value_mev = -1e6;
1214 switch(newrad){
1215 case 20:
1216 if(parttype == ELECTRON)
1217 correction_value_mev = GeV*m_graph_cone20_electron[etabin]->Eval(et/GeV);
1218 else
1219 if(isConversion) correction_value_mev = GeV*m_graph_cone20_photon_converted[etabin]->Eval(et/GeV);
1220 else correction_value_mev = GeV*m_graph_cone20_photon_unconverted[etabin]->Eval(et/GeV);
1221 break;
1222 case 30:
1223 if(parttype == ELECTRON)
1224 correction_value_mev = GeV*m_graph_cone30_electron[etabin]->Eval(et/GeV);
1225 else
1226 if(isConversion) correction_value_mev = GeV*m_graph_cone30_photon_converted[etabin]->Eval(et/GeV);
1227 else correction_value_mev = GeV*m_graph_cone30_photon_unconverted[etabin]->Eval(et/GeV);
1228 break;
1229 case 40:
1230 if(parttype == ELECTRON)
1231 correction_value_mev = GeV*m_graph_cone40_electron[etabin]->Eval(et/GeV);
1232 else
1233 if(isConversion) correction_value_mev = GeV*m_graph_cone40_photon_converted[etabin]->Eval(et/GeV);
1234 else correction_value_mev = GeV*m_graph_cone40_photon_unconverted[etabin]->Eval(et/GeV);
1235 break;
1236 default:
1237 ATH_MSG_WARNING("Unable to retrieve leakage correction for topoIso cone with radius = " << radius << ".\n--- Radii must be one of {.20, .30, .40} OR {20, 30, 40}.\n");
1238 return 0.;
1239 }
1240 return correction_value_mev;
1241
1242 }
int GetEtaBinFine(float eta) const

◆ GetPtCorrection_FromGraph_2015()

float CP::IsolationCorrection::GetPtCorrection_FromGraph_2015 ( float energy,
float etaS2,
float radius,
int conversion_flag,
int author,
float conv_radius,
float conv_ratio,
ParticleType parttype ) const
private

Definition at line 1259 of file IsolationCorrection.cxx.

1259 {
1260 int newrad = GetRadius(radius);
1261 double etaForPt = etaS2; //((fabs(etaPointing - etaCluster) < 0.15) ? etaPointing : etaCluster);
1262 double et = energy/cosh(etaForPt); //(fabs(etaForPt)<99.) ? energy/cosh(etaForPt) : 0.;
1263 int etabin = GetEtaBinFine(etaS2);
1264
1265 int conversion_type = 0;
1266 if(parttype == PHOTON) conversion_type = GetConversionType(conversion_flag, conv_radius, conv_ratio);
1267
1268 // for test
1269 if (m_forcePartType && parttype == PHOTON) conversion_type = conv_radius > 800 ? 0 : (conv_radius > 140 ? 1 : 2);
1270
1271 if( m_corr_file.empty() ){
1272 ATH_MSG_WARNING("In IsolationCorrection::GetPtCorrection_FromGraph_2015: the file containing the isolation leakage corrections is not initialized.\nNo correction is applied.\n");
1273 return 0;
1274 }
1275
1276 if (etabin < 0) return 0; // must have eta in fiducial region
1277 if(parttype == PHOTON) if( (etabin == 9 || etabin == 5) ) return 0; // No correction for photons with |etaS2|>2.37 or 1.37<|etaS2|<1.52
1278
1279 double correction_value_mev = 0;
1280
1281 float pt_threshold = 250000.;
1282
1283 //if(parttype == PHOTON) ATH_MSG_INFO("Applying 2015 corrections photon etaBin "<<etabin<<" Pt: "<<et<<" || "<< conversion_type <<" "<< author <<" "<< conv_radius <<" "<< conv_ratio <<"\n");
1284 //else ATH_MSG_INFO("Applying 2015 corrections electron etaBin "<<etabin<<" Pt: "<<et<<" || "<< conversion_type <<" "<< author <<" "<< conv_radius <<" "<< conv_ratio <<"\n");
1285 //TODO: switch author_1 with author_16 in the right places, invert function and histomean
1286 switch(newrad){
1287 case 20:
1288 if(parttype == ELECTRON){
1289 if(author == 1) correction_value_mev = m_function_2015_cone20_author_1_electron[etabin]->Eval(et);
1290 if(author == 16){
1291 if(m_trouble_categories && et < pt_threshold) correction_value_mev = m_graph_histoMean_2015_cone20_author_16_electron[etabin]->Eval(et);
1292 else correction_value_mev = m_function_2015_cone20_author_16_electron[etabin]->Eval(et);
1293 }
1294 }else{
1295 if(conversion_type == 0) correction_value_mev = m_function_2015_cone20_photon_unconverted[etabin]->Eval(et);
1296 if(conversion_type == 1) correction_value_mev = m_function_2015_cone20_photon_converted_ok[etabin]->Eval(et);
1297 if(conversion_type == 2){
1298 if(m_trouble_categories && et < pt_threshold) correction_value_mev = m_graph_histoMean_2015_cone20_photon_converted_trouble[etabin]->Eval(et);
1299 else correction_value_mev = m_function_2015_cone20_photon_converted_trouble[etabin]->Eval(et);
1300 }
1301 }
1302 break;
1303 case 30:
1304 if(parttype == ELECTRON){
1305 if(author == 1) correction_value_mev = m_function_2015_cone30_author_1_electron[etabin]->Eval(et);
1306 if(author == 16) {
1307 if(m_trouble_categories && et < pt_threshold) correction_value_mev = m_graph_histoMean_2015_cone30_author_16_electron[etabin]->Eval(et);
1308 else correction_value_mev = m_function_2015_cone30_author_16_electron[etabin]->Eval(et);
1309 }
1310 }else{
1311 if(conversion_type == 0) correction_value_mev = m_function_2015_cone30_photon_unconverted[etabin]->Eval(et);
1312 if(conversion_type == 1) correction_value_mev = m_function_2015_cone30_photon_converted_ok[etabin]->Eval(et);
1313 if(conversion_type == 2){
1314 if(m_trouble_categories && et < pt_threshold) correction_value_mev = m_graph_histoMean_2015_cone30_photon_converted_trouble[etabin]->Eval(et);
1315 else correction_value_mev = m_function_2015_cone30_photon_converted_trouble[etabin]->Eval(et);
1316 }
1317 }
1318 break;
1319 case 40:
1320 if(parttype == ELECTRON){
1321 if(author == 1) correction_value_mev = m_function_2015_cone40_author_1_electron[etabin]->Eval(et);
1322 if(author == 16){
1323 if(m_trouble_categories && et < pt_threshold) correction_value_mev = m_graph_histoMean_2015_cone40_author_16_electron[etabin]->Eval(et);
1324 else correction_value_mev = m_function_2015_cone40_author_16_electron[etabin]->Eval(et);
1325 }
1326 }else{
1327 if(conversion_type == 0) correction_value_mev = m_function_2015_cone40_photon_unconverted[etabin]->Eval(et);
1328 if(conversion_type == 1) correction_value_mev = m_function_2015_cone40_photon_converted_ok[etabin]->Eval(et);
1329 if(conversion_type == 2){
1330 if(m_trouble_categories && et < pt_threshold) correction_value_mev = m_graph_histoMean_2015_cone40_photon_converted_trouble[etabin]->Eval(et);
1331 else correction_value_mev = m_function_2015_cone40_photon_converted_trouble[etabin]->Eval(et);
1332 }
1333 }
1334 break;
1335 default:
1336 ATH_MSG_WARNING("Unable to retrieve leakage correction for topoIso cone with radius = " << radius << ".\n--- Radii must be one of {.20, .30, .40} OR {20, 30, 40}.\n");
1337 return 0.;
1338 }
1339 //ATH_MSG_INFO(" Correction: "<< correction_value_mev <<"\n");
1340 if (et > 20e3)
1341 ATH_MSG_VERBOSE("Electron ? " << (parttype == ELECTRON) << " author / conversion type = " << (parttype == ELECTRON ? author : conversion_type) << " et = " << et << " eta = " << etaS2 << " etabin = " << etabin << " correction: "<< correction_value_mev);
1342 return correction_value_mev;
1343 }
static int GetConversionType(int conversion_flag, float conv_radius, float conv_ratio)

◆ GetPtCorrectionFactor()

float CP::IsolationCorrection::GetPtCorrectionFactor ( float eta,
const std::vector< float > & mc_leakage_corrections_ptr = std::vector<float>(),
const std::vector< float > & data_leakage_corrections_ptr = std::vector<float>() ) const
private

Definition at line 1163 of file IsolationCorrection.cxx.

1165 {
1166 if(mc_leakage_corrections_ptr.empty() && data_leakage_corrections_ptr.empty())
1167 return 0.;
1168
1169 int eta_bin_fine = GetEtaBinFine(eta);
1170 int eta_bin_coarse = GetEtaBinCoarse(eta);
1171
1172 float correction = 0.;
1173 if (!mc_leakage_corrections_ptr.empty() && (eta_bin_fine >= 0)) correction += mc_leakage_corrections_ptr[eta_bin_fine];
1174 if (!data_leakage_corrections_ptr.empty() && (eta_bin_coarse >= 0)) correction += data_leakage_corrections_ptr[eta_bin_coarse];
1175
1176 return correction;
1177 }
int GetEtaBinCoarse(float eta) const
correction(mu, runmode, campaign, run=None)
Definition zlumi_mc_cf.py:4

◆ GetPtCorrectionTopo()

float CP::IsolationCorrection::GetPtCorrectionTopo ( float energy,
float etaS2,
float etaPointing,
float etaCluster,
float radius,
bool is_mc = true,
bool isConversion = false,
ParticleType parttype = ELECTRON,
Version ver = REL17_2,
int convFlag_int = 0,
int author = 0,
float conv_radius = 0.,
float conv_ratio = 0. ) const
private

Definition at line 1093 of file IsolationCorrection.cxx.

1098 {
1099 double correction_value = 0.;
1100 if (ver== REL17_2) {
1101 correction_value = GetPtCorrection_FromGraph(energy,etaS2,etaPointing,etaCluster,radius,isConversion,parttype);
1102 } else if (m_tool_ver == REL20_2 || m_tool_ver == REL21 || m_tool_ver == REL22){
1103 correction_value = GetPtCorrection_FromGraph_2015(energy, etaS2, radius, convFlag_int, author, conv_radius, conv_ratio, parttype);
1104 }
1105
1106 return correction_value;
1107 }
float GetPtCorrection_FromGraph(float energy, float etaS2, float etaPointing, float etaCluster, float radius, bool isConversion, ParticleType parttype) const
float GetPtCorrection_FromGraph_2015(float energy, float etaS2, float radius, int conversion_flag, int author, float conv_radius, float conv_ratio, ParticleType parttype) const

◆ GetPtCorrectionValue()

float CP::IsolationCorrection::GetPtCorrectionValue ( float energy,
float etaPointing,
float etaCluster,
float scale_factor )
staticprivate

Definition at line 1183 of file IsolationCorrection.cxx.

1183 {
1184 // apply the correction to et
1185 double etaForPt = ((fabs(etaPointing - etaCluster) < 0.15) ? etaPointing : etaCluster);
1186 double et = (fabs(etaForPt)<99.) ? energy/cosh(etaForPt) : 0.;
1187
1188 return scale_factor * et;
1189 }

◆ GetRadius()

int CP::IsolationCorrection::GetRadius ( float radius)
staticprivate

Definition at line 1114 of file IsolationCorrection.cxx.

1114 {
1115 int newrad = 0;
1116 // avoid roundoff errors by adding 0.1
1117 if(radius < 1) newrad = (int)(radius * 100 + 0.1);
1118 else newrad = (int)radius;
1119 return newrad;
1120 }
setRawEt setRawPhi int

◆ initialize()

StatusCode CP::IsolationCorrection::initialize ( )

Definition at line 68 of file IsolationCorrection.cxx.

68 {
69
70 setEtaBins();
72 m_shower = new CP::ShowerDepthUtil();
73 return StatusCode::SUCCESS;
74 }

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40{
42 // If user did not set an explicit level, set a default
43 if (m_lvl == MSG::NIL) {
44 m_lvl = m_imsg ?
45 static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
46 MSG::INFO;
47 }
48}
std::string m_nm
Message source name.
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
std::atomic< MSG::Level > m_lvl
Current logging level.
IMessageSvc * getMessageSvc(bool quiet=false)
int outputLevel(const IMessageSvc *ims, const std::string &source)

◆ load2012Corr()

void CP::IsolationCorrection::load2012Corr ( )
private

Definition at line 499 of file IsolationCorrection.cxx.

499 {
500 std::unique_ptr<TFile> file_ptleakagecorr(TFile::Open(m_corr_file.c_str(), "READ"));
501 if(!file_ptleakagecorr){
502 ATH_MSG_WARNING("Correction file for 2012 data/mc not found, tool not initialized for 2012 corrections\n");
503 m_corr_file = "";
504 return;
505 }else{
506 m_graph_cone40_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_unconverted_etabin0_extrap") );
507 m_graph_cone40_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_unconverted_etabin1_extrap") );
508 m_graph_cone40_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_unconverted_etabin2_extrap") );
509 m_graph_cone40_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_unconverted_etabin3_extrap") );
510 m_graph_cone40_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_unconverted_etabin4_extrap") );
511 m_graph_cone40_photon_unconverted.push_back( new TGraph() );//No corrections for photons in the crack region
512 m_graph_cone40_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_unconverted_etabin6_extrap") );
513 m_graph_cone40_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_unconverted_etabin7_extrap") );
514 m_graph_cone40_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_unconverted_etabin8_extrap") );
515 m_graph_cone40_photon_unconverted.push_back( new TGraph() );//No corrections for photons with |eta|>2.37
516
517 m_graph_cone40_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_converted_etabin0_extrap") );
518 m_graph_cone40_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_converted_etabin1_extrap") );
519 m_graph_cone40_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_converted_etabin2_extrap") );
520 m_graph_cone40_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_converted_etabin3_extrap") );
521 m_graph_cone40_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_converted_etabin4_extrap") );
522 m_graph_cone40_photon_converted.push_back( new TGraph() );//No corrections for photons in the crack region
523 m_graph_cone40_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_converted_etabin6_extrap") );
524 m_graph_cone40_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_converted_etabin7_extrap") );
525 m_graph_cone40_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_photon_converted_etabin8_extrap") );
526 m_graph_cone40_photon_converted.push_back( new TGraph() );//No corrections for photons with |eta|>2.37
527
528 m_graph_cone40_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_electron_etabin0_extrap") );
529 m_graph_cone40_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_electron_etabin1_extrap") );
530 m_graph_cone40_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_electron_etabin2_extrap") );
531 m_graph_cone40_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_electron_etabin3_extrap") );
532 m_graph_cone40_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_electron_etabin4_extrap") );
533 m_graph_cone40_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_electron_etabin5_extrap") );
534 m_graph_cone40_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_electron_etabin6_extrap") );
535 m_graph_cone40_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_electron_etabin7_extrap") );
536 m_graph_cone40_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_electron_etabin8_extrap") );
537 m_graph_cone40_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone40_electron_etabin9_extrap") );
538
539 m_graph_cone30_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_unconverted_etabin0_extrap") );
540 m_graph_cone30_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_unconverted_etabin1_extrap") );
541 m_graph_cone30_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_unconverted_etabin2_extrap") );
542 m_graph_cone30_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_unconverted_etabin3_extrap") );
543 m_graph_cone30_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_unconverted_etabin4_extrap") );
544 m_graph_cone30_photon_unconverted.push_back( new TGraph() );//No corrections for photons in the crack region
545 m_graph_cone30_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_unconverted_etabin6_extrap") );
546 m_graph_cone30_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_unconverted_etabin7_extrap") );
547 m_graph_cone30_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_unconverted_etabin8_extrap") );
548 m_graph_cone30_photon_unconverted.push_back( new TGraph() );//No corrections for photons with |eta|>2.37
549
550 m_graph_cone30_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_converted_etabin0_extrap") );
551 m_graph_cone30_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_converted_etabin1_extrap") );
552 m_graph_cone30_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_converted_etabin2_extrap") );
553 m_graph_cone30_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_converted_etabin3_extrap") );
554 m_graph_cone30_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_converted_etabin4_extrap") );
555 m_graph_cone30_photon_converted.push_back( new TGraph() );//No corrections for photons in the crack region
556 m_graph_cone30_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_converted_etabin6_extrap") );
557 m_graph_cone30_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_converted_etabin7_extrap") );
558 m_graph_cone30_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_photon_converted_etabin8_extrap") );
559 m_graph_cone30_photon_converted.push_back( new TGraph() );//No corrections for photons with |eta|>2.37
560
561 m_graph_cone30_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_electron_etabin0_extrap") );
562 m_graph_cone30_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_electron_etabin1_extrap") );
563 m_graph_cone30_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_electron_etabin2_extrap") );
564 m_graph_cone30_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_electron_etabin3_extrap") );
565 m_graph_cone30_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_electron_etabin4_extrap") );
566 m_graph_cone30_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_electron_etabin5_extrap") );
567 m_graph_cone30_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_electron_etabin6_extrap") );
568 m_graph_cone30_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_electron_etabin7_extrap") );
569 m_graph_cone30_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_electron_etabin8_extrap") );
570 m_graph_cone30_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone30_electron_etabin9_extrap") );
571
572 m_graph_cone20_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_unconverted_etabin0_extrap") );
573 m_graph_cone20_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_unconverted_etabin1_extrap") );
574 m_graph_cone20_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_unconverted_etabin2_extrap") );
575 m_graph_cone20_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_unconverted_etabin3_extrap") );
576 m_graph_cone20_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_unconverted_etabin4_extrap") );
577 m_graph_cone20_photon_unconverted.push_back( new TGraph() );//No corrections for photons in the crack region
578 m_graph_cone20_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_unconverted_etabin6_extrap") );
579 m_graph_cone20_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_unconverted_etabin7_extrap") );
580 m_graph_cone20_photon_unconverted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_unconverted_etabin8_extrap") );
581 m_graph_cone20_photon_unconverted.push_back( new TGraph() );//No corrections for photons with |eta|>2.37
582
583 m_graph_cone20_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_converted_etabin0_extrap") );
584 m_graph_cone20_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_converted_etabin1_extrap") );
585 m_graph_cone20_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_converted_etabin2_extrap") );
586 m_graph_cone20_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_converted_etabin3_extrap") );
587 m_graph_cone20_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_converted_etabin4_extrap") );
588 m_graph_cone20_photon_converted.push_back( new TGraph() );//No corrections for photons in the crack region
589 m_graph_cone20_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_converted_etabin6_extrap") );
590 m_graph_cone20_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_converted_etabin7_extrap") );
591 m_graph_cone20_photon_converted.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_photon_converted_etabin8_extrap") );
592 m_graph_cone20_photon_converted.push_back( new TGraph() );//No corrections for photons with |eta|>2.37
593
594 m_graph_cone20_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_electron_etabin0_extrap") );
595 m_graph_cone20_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_electron_etabin1_extrap") );
596 m_graph_cone20_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_electron_etabin2_extrap") );
597 m_graph_cone20_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_electron_etabin3_extrap") );
598 m_graph_cone20_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_electron_etabin4_extrap") );
599 m_graph_cone20_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_electron_etabin5_extrap") );
600 m_graph_cone20_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_electron_etabin6_extrap") );
601 m_graph_cone20_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_electron_etabin7_extrap") );
602 m_graph_cone20_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_electron_etabin8_extrap") );
603 m_graph_cone20_electron.push_back( (TGraph*) file_ptleakagecorr->Get("graph_cone20_electron_etabin9_extrap") );
604 }
605 }

◆ load2015Corr()

void CP::IsolationCorrection::load2015Corr ( )
private

Definition at line 615 of file IsolationCorrection.cxx.

615 {
616 std::unique_ptr<TFile> file_ptleakagecorr(TFile::Open(m_corr_file.c_str(), "READ"));
617 if(!file_ptleakagecorr){
618 ATH_MSG_WARNING("Correction file for 2015 data/mc not found, "<<m_corr_file<<". tool not initialized for 2015 corrections\n");
619 m_corr_file = "";
620 }else{
621 if(!file_ptleakagecorr->GetListOfKeys()->Contains("mean_f_topoetcone40_eta_1.15_1.37_converted_ok")){
622 ATH_MSG_ERROR("Correction file for 2015 data/mc is not right, "<<m_corr_file<<". Tool not initialized for 2015 corrections\n");
623 m_corr_file = "";
624 } else {
625
626 // ******************************
627 // Global fit corrections *******
628 // ******************************
629
630 static const int nEta = 10;
631 static const TString etaLab[nEta] = { "0.0_0.1", "0.1_0.6", "0.6_0.8", "0.8_1.15", "1.15_1.37", "1.37_1.52", "1.52_1.81", "1.81_2.01", "2.01_2.37", "2.37_2.47" };
632 static const TString pLab[5] = { "_unconverted", "_converted_ok", "_converted_trouble", "_author_1_electron", "_author_16_electron" };
633 static const TString dRLab[3] = { "20", "30", "40" };
634
644
651
656
660 }
661
662 for (int iPart = 0; iPart < 5; iPart++) {
663
664 for (int iEta = 0; iEta < 10; iEta++) {
665
666 // No parametrisation in the crack or above |eta| = 2.37 for photons
667 if (iPart < 3 && (iEta == 5 || iEta == 9))
668 continue;
669
670 for (int idR = 0; idR < 3; idR++) {
671 // The LogLog fit is a quick-and-dirty solution to get rid of negative leakage at low ET for unconverted and converted_ok photons
672 TString fN = (m_useLogLogFit && iPart < 2) ? "mean_flog_histo_topoetcone" : "mean_f_topoetcone";
673 fN += dRLab[idR]; fN += "_eta_"; fN += etaLab[iEta]; fN += pLab[iPart];
674 TString gN;
675 // Trouble categories are converted_trouble photons and author 16 electrons. Below 250 GeV, one uses the mean of the leakage histo
676 // instead of a fit to the mean of the CB vs ET
677 if (m_trouble_categories && (iPart == 2 || iPart == 4)) {
678 gN = "mean_g_histo_topoetcone"; gN += dRLab[idR]; gN += "_eta_"; gN += etaLab[iEta]; gN += pLab[iPart];
679 }
680 if (idR == 2) {
681 if (iPart == 0) {
682 m_function_2015_cone40_photon_unconverted.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
683 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone40_photon_unconverted.at(iEta));
684 } else if (iPart == 1) {
685 m_function_2015_cone40_photon_converted_ok.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
686 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone40_photon_converted_ok.at(iEta));
687 } else if (iPart == 2) {
688 m_function_2015_cone40_photon_converted_trouble.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
689 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone40_photon_converted_trouble.at(iEta));
691 m_graph_histoMean_2015_cone40_photon_converted_trouble.at(iEta) = ((TGraph*)file_ptleakagecorr->Get(gN));
692 ATH_MSG_DEBUG("TGraph name (trouble categories at low ET) : " << gN << " ptr = " << m_graph_histoMean_2015_cone40_photon_converted_trouble.at(iEta));
693 }
694 } else if (iPart == 3) {
695 m_function_2015_cone40_author_1_electron.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
696 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone40_author_1_electron.at(iEta));
697 } else if (iPart == 4) {
698 m_function_2015_cone40_author_16_electron.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
699 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone40_author_16_electron.at(iEta));
701 m_graph_histoMean_2015_cone40_author_16_electron.at(iEta) = ((TGraph*)file_ptleakagecorr->Get(gN));
702 ATH_MSG_DEBUG("TGraph name (trouble categories at low ET) : " << gN << " ptr = " << m_graph_histoMean_2015_cone40_author_16_electron.at(iEta));
703 }
704 }
705
706 } else if (idR == 1) {
707 if (iPart == 0) {
708 m_function_2015_cone30_photon_unconverted.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
709 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone30_photon_unconverted.at(iEta));
710 } else if (iPart == 1) {
711 m_function_2015_cone30_photon_converted_ok.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
712 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone30_photon_converted_ok.at(iEta));
713 } else if (iPart == 2) {
714 m_function_2015_cone30_photon_converted_trouble.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
715 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone30_photon_converted_trouble.at(iEta));
717 m_graph_histoMean_2015_cone30_photon_converted_trouble.at(iEta) = ((TGraph*)file_ptleakagecorr->Get(gN));
718 ATH_MSG_DEBUG("TGraph name (trouble categories at low ET) : " << gN << " ptr = " << m_graph_histoMean_2015_cone30_photon_converted_trouble.at(iEta));
719 }
720 } else if (iPart == 3) {
721 m_function_2015_cone30_author_1_electron.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
722 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone30_author_1_electron.at(iEta));
723 } else if (iPart == 4) {
724 m_function_2015_cone30_author_16_electron.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
725 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone30_author_16_electron.at(iEta));
727 m_graph_histoMean_2015_cone30_author_16_electron.at(iEta) = ((TGraph*)file_ptleakagecorr->Get(gN));
728 ATH_MSG_DEBUG("TGraph name (trouble categories at low ET) : " << gN << " ptr = " << m_graph_histoMean_2015_cone30_author_16_electron.at(iEta));
729 }
730 }
731
732 } else {
733 if (iPart == 0) {
734 m_function_2015_cone20_photon_unconverted.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
735 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone20_photon_unconverted.at(iEta));
736 } else if (iPart == 1) {
737 m_function_2015_cone20_photon_converted_ok.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
738 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone20_photon_converted_ok.at(iEta));
739 } else if (iPart == 2) {
740 m_function_2015_cone20_photon_converted_trouble.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
741 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone20_photon_converted_trouble.at(iEta));
743 m_graph_histoMean_2015_cone20_photon_converted_trouble.at(iEta) = ((TGraph*)file_ptleakagecorr->Get(gN));
744 ATH_MSG_DEBUG("TGraph name (trouble categories at low ET) : " << gN << " ptr = " << m_graph_histoMean_2015_cone20_photon_converted_trouble.at(iEta));
745 }
746 } else if (iPart == 3) {
747 m_function_2015_cone20_author_1_electron.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
748 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone20_author_1_electron.at(iEta));
749 } else if (iPart == 4) {
750 m_function_2015_cone20_author_16_electron.at(iEta) = ((TF1*)file_ptleakagecorr->Get(fN));
751 ATH_MSG_DEBUG("TF1 name : " << fN << " ptr = " << m_function_2015_cone20_author_16_electron.at(iEta));
753 m_graph_histoMean_2015_cone20_author_16_electron.at(iEta) = ((TGraph*)file_ptleakagecorr->Get(gN));
754 ATH_MSG_DEBUG("TGraph name (trouble categories at low ET) : " << gN << " ptr = " << m_graph_histoMean_2015_cone20_author_16_electron.at(iEta));
755 }
756 }
757 }
758
759 } // dR bin
760
761 } // eta bin
762
763 } // particle type
764
765 } // root file : no good format
766 } // root file not found
767 }
#define ATH_MSG_ERROR(x,...)
constexpr int nEta
Default bin number of eta for vertex map.
setScale setgFexType iEta

◆ loadDDCorr()

void CP::IsolationCorrection::loadDDCorr ( )
private

Definition at line 777 of file IsolationCorrection.cxx.

777 {
778 std::unique_ptr< TFile > file_ddshift_corr( TFile::Open( m_corr_ddshift_file.c_str(), "READ" ) );
779 std::unique_ptr< TFile > file_ddsmearingcorr( TFile::Open( m_corr_ddsmearing_file.c_str(), "READ" ) );
780
781 if(!file_ddshift_corr || !file_ddsmearingcorr){
782 ATH_MSG_WARNING("Correction file for data-driven corrections not found, tool not initialized for data-driven corrections\n");
785 }else{
786
787 // **********************************
788 // Data driven corrections **********
789 // https://cds.cern.ch/record/2008664
790 // **********************************
791
792 // Photon shift corrections
793 std::vector< std::shared_ptr<TGraphAsymmErrors> > graph_shift;
794 // Photon smearing corrections (to be applied in end caps only)
795 std::vector< std::shared_ptr<TGraphAsymmErrors> > graph_smearing;
796 for (int ig = 0; ig <= 13; ig++) {
797 graph_shift.emplace_back( dynamic_cast<TGraphAsymmErrors*>(file_ddshift_corr->Get(Form("graph_%i",ig))) );
798 graph_smearing.emplace_back( dynamic_cast<TGraphAsymmErrors*>(file_ddsmearingcorr->Get(Form("graph_%i",ig))) );
799 }
800 for (int ig = 0; ig <= 13; ig++) {
801 if (ig <= 7)
802 m_graph_dd_cone40_photon_shift.push_back( graph_shift.at(ig)->GetFunction("f") );
803 else
804 m_graph_dd_cone40_photon_shift.push_back( graph_shift.at(ig)->GetFunction("f_2") );
805 m_graph_dd_cone40_photon_smearing.push_back( graph_smearing.at(ig)->GetFunction("f_3") );
806 }
807
808 for (const auto& gr : graph_shift) {
809 if (gr == nullptr)
810 ATH_MSG_ERROR("Null pointer for one of the DD correction graphs");
811 }
812 for (const auto& gr : graph_smearing) {
813 if (gr == nullptr)
814 ATH_MSG_ERROR("Null pointer for one of the smearing graphs");
815 }
816 }
817 }
#define gr

◆ msg() [1/2]

MsgStream & asg::AsgMessaging::msg ( ) const
inherited

The standard message stream.

Returns
A reference to the default message stream of this object.

Definition at line 49 of file AsgMessaging.cxx.

49 {
50#ifndef XAOD_STANDALONE
51 return ::AthMessaging::msg();
52#else // not XAOD_STANDALONE
53 return m_msg;
54#endif // not XAOD_STANDALONE
55 }

◆ msg() [2/2]

MsgStream & asg::AsgMessaging::msg ( const MSG::Level lvl) const
inherited

The standard message stream.

Parameters
lvlThe message level to set the stream to
Returns
A reference to the default message stream, set to level "lvl"

Definition at line 57 of file AsgMessaging.cxx.

57 {
58#ifndef XAOD_STANDALONE
59 return ::AthMessaging::msg( lvl );
60#else // not XAOD_STANDALONE
61 m_msg << lvl;
62 return m_msg;
63#endif // not XAOD_STANDALONE
64 }

◆ msgLvl()

bool asg::AsgMessaging::msgLvl ( const MSG::Level lvl) const
inherited

Test the output level of the object.

Parameters
lvlThe message level to test against
Returns
boolean Indicting if messages at given level will be printed
true If messages at level "lvl" will be printed

Definition at line 41 of file AsgMessaging.cxx.

41 {
42#ifndef XAOD_STANDALONE
43 return ::AthMessaging::msgLvl( lvl );
44#else // not XAOD_STANDALONE
45 return m_msg.msgLevel( lvl );
46#endif // not XAOD_STANDALONE
47 }

◆ Print()

void CP::IsolationCorrection::Print ( )

Definition at line 1345 of file IsolationCorrection.cxx.

1345 {
1346 ATH_MSG_INFO("Print properties of the parametrisation");
1348 ATH_MSG_INFO("ptr = " << i);
1349 if (i) {
1350 ATH_MSG_INFO(typeid(i).name());
1351 i->Print();
1352 }
1353 }
1354 }
#define ATH_MSG_INFO(x,...)

◆ set2011Corr()

void CP::IsolationCorrection::set2011Corr ( )
private

Definition at line 442 of file IsolationCorrection.cxx.

442 {
443
444 // -------------------------------------------------------------------------------------------
445 // ------------- full 2011 (rel 17) leakage corrections --------------------------------------
446 // CURRENT isolation corrections: fine grained in eta, derived from MC11
447 m_mc_rel17_leakage_correction_slopes_electron_15 = { 0.01466, 0.01421, 0.01427, 0.01872, 0.02008, 0.02181, 0.02141, 0.02636, 0.03285, 0.03564 };
448 m_mc_rel17_leakage_correction_slopes_electron_20 = { 0.01616, 0.01572, 0.01596, 0.02139, 0.02339, 0.03350, 0.02499, 0.03038, 0.03870, 0.04337 };
449 m_mc_rel17_leakage_correction_slopes_electron_25 = { 0.01663, 0.01616, 0.01667, 0.02223, 0.02445, 0.03852, 0.02611, 0.03174, 0.04093, 0.04692 };
450 m_mc_rel17_leakage_correction_slopes_electron_30 = { 0.01689, 0.01635, 0.01684, 0.02256, 0.02485, 0.04223, 0.02660, 0.03232, 0.04182, 0.04846 };
451 m_mc_rel17_leakage_correction_slopes_electron_35 = { 0.01695, 0.01642, 0.01693, 0.02268, 0.02501, 0.04403, 0.02685, 0.03254, 0.04223, 0.04928 };
452 m_mc_rel17_leakage_correction_slopes_electron_40 = { 0.01701, 0.01646, 0.01702, 0.02272, 0.02517, 0.04550, 0.02698, 0.03267, 0.04242, 0.04964 };
453
454 m_mc_rel17_leakage_correction_offsets_electron_15 = { 21.71, 36.00, 132.56, 191.64, 263.46, 619.58, 288.75, 121.92, 102.35, 175.02 };
455 m_mc_rel17_leakage_correction_offsets_electron_20 = { 76.67, 85.35, 184.90, 276.72, 384.97, 595.60, 657.99, 231.88, 170.48, 312.30 };
456 m_mc_rel17_leakage_correction_offsets_electron_25 = { 90.44, 105.02, 267.95, 420.38, 555.09, 1014.50, 765.83, 283.50, 224.18, 357.30 };
457 m_mc_rel17_leakage_correction_offsets_electron_30 = { 119.55, 127.09, 279.48, 430.96, 571.81, 846.86, 968.01, 354.46, 263.11, 455.21 };
458 m_mc_rel17_leakage_correction_offsets_electron_35 = { 138.79, 161.87, 371.47, 572.08, 754.17, 1249.38, 1000.44, 389.22, 295.72, 464.28 };
459 m_mc_rel17_leakage_correction_offsets_electron_40 = { 180.08, 187.89, 363.31, 553.46, 707.60, 1006.20, 1105.73, 434.21, 312.78, 535.90 };
460
461 // photons: last eta bin isn't used
462 m_mc_rel17_leakage_correction_slopes_photon_converted_15 = { 0.01450, 0.01410, 0.01410, 0.01860, 0.01990, 0.0, 0.02120, 0.02610, 0.03260, 0.0 };
463 m_mc_rel17_leakage_correction_slopes_photon_converted_20 = { 0.01600, 0.01560, 0.01580, 0.02130, 0.02320, 0.0, 0.02450, 0.03000, 0.03840, 0.0 };
464 m_mc_rel17_leakage_correction_slopes_photon_converted_25 = { 0.01630, 0.01600, 0.01620, 0.02210, 0.02420, 0.0, 0.02560, 0.03140, 0.04060, 0.0 };
465 m_mc_rel17_leakage_correction_slopes_photon_converted_30 = { 0.01630, 0.01600, 0.01630, 0.02240, 0.02460, 0.0, 0.02610, 0.03190, 0.04150, 0.0 };
466 m_mc_rel17_leakage_correction_slopes_photon_converted_35 = { 0.01660, 0.01600, 0.01630, 0.02240, 0.02470, 0.0, 0.02640, 0.03210, 0.04190, 0.0 };
467 m_mc_rel17_leakage_correction_slopes_photon_converted_40 = { 0.01610, 0.01590, 0.01620, 0.02250, 0.02480, 0.0, 0.02650, 0.03220, 0.04210, 0.0 };
468
469 m_mc_rel17_leakage_correction_offsets_photon_converted_15 = { 36.50, 61.80, 176.90, 206.40, 300.70, 0.0, 277.40, 91.70, 126.60, 0.0 };
470 m_mc_rel17_leakage_correction_offsets_photon_converted_20 = { 93.30, 101.40, 270.60, 369.10, 514.70, 0.0, 586.10, 160.80, 193.80, 0.0 };
471 m_mc_rel17_leakage_correction_offsets_photon_converted_25 = { 195.80, 166.20, 386.50, 472.30, 637.30, 0.0, 739.40, 207.60, 240.60, 0.0 };
472 m_mc_rel17_leakage_correction_offsets_photon_converted_30 = { 286.60, 241.60, 501.60, 570.70, 739.50, 0.0, 860.00, 264.50, 270.40, 0.0 };
473 m_mc_rel17_leakage_correction_offsets_photon_converted_35 = { 329.90, 314.70, 585.60, 655.60, 835.70, 0.0, 934.30, 291.50, 291.90, 0.0 };
474 m_mc_rel17_leakage_correction_offsets_photon_converted_40 = { 478.70, 383.80, 679.20, 725.70, 938.70, 0.0, 999.30, 322.80, 316.20, 0.0 };
475
476 m_mc_rel17_leakage_correction_slopes_photon_unconverted_15 = { 0.01480, 0.01410, 0.01400, 0.01820, 0.01950, 0.0, 0.02140, 0.02660, 0.03250, 0.0 };
477 m_mc_rel17_leakage_correction_slopes_photon_unconverted_20 = { 0.01630, 0.01560, 0.01560, 0.02060, 0.02240, 0.0, 0.02480, 0.03060, 0.03830, 0.0 };
478 m_mc_rel17_leakage_correction_slopes_photon_unconverted_25 = { 0.01670, 0.01610, 0.01620, 0.02140, 0.02330, 0.0, 0.02590, 0.03200, 0.04050, 0.0 };
479 m_mc_rel17_leakage_correction_slopes_photon_unconverted_30 = { 0.01690, 0.01630, 0.01640, 0.02170, 0.02360, 0.0, 0.02630, 0.03260, 0.04140, 0.0 };
480 m_mc_rel17_leakage_correction_slopes_photon_unconverted_35 = { 0.01700, 0.01640, 0.01650, 0.02180, 0.02380, 0.0, 0.02650, 0.03280, 0.04180, 0.0 };
481 m_mc_rel17_leakage_correction_slopes_photon_unconverted_40 = { 0.01710, 0.01640, 0.01650, 0.02190, 0.02390, 0.0, 0.02660, 0.03290, 0.04200, 0.0 };
482
483 m_mc_rel17_leakage_correction_offsets_photon_unconverted_15 = { -27.80, 3.80, 67.50, 80.90, 114.90, 0.0, 82.60, 2.10, 39.80, 0.0 };
484 m_mc_rel17_leakage_correction_offsets_photon_unconverted_20 = { -17.70, 12.60, 97.80, 126.50, 186.20, 0.0, 200.80, 24.00, 62.30, 0.0 };
485 m_mc_rel17_leakage_correction_offsets_photon_unconverted_25 = { -8.60, 20.30, 118.20, 161.80, 244.30, 0.0, 271.80, 39.80, 79.10, 0.0 };
486 m_mc_rel17_leakage_correction_offsets_photon_unconverted_30 = { 5.40, 33.80, 141.60, 199.50, 295.40, 0.0, 336.50, 64.80, 90.40, 0.0 };
487 m_mc_rel17_leakage_correction_offsets_photon_unconverted_35 = { 9.60, 47.80, 154.10, 231.10, 346.10, 0.0, 384.60, 77.80, 96.90, 0.0 };
488 m_mc_rel17_leakage_correction_offsets_photon_unconverted_40 = { 13.30, 62.00, 177.00, 267.10, 406.20, 0.0, 419.80, 89.40, 105.90, 0.0 };
489 }

◆ set2012Corr()

void CP::IsolationCorrection::set2012Corr ( )
private

Definition at line 491 of file IsolationCorrection.cxx.

491 {
492 if( !m_corr_file.empty()){
493 load2012Corr();
494 }else{
495 ATH_MSG_WARNING("Correction file for 2017 data/mc not specified, tool not initialized for 2017 corrections\n");
496 }
497 }

◆ set2015Corr()

void CP::IsolationCorrection::set2015Corr ( )
private

Definition at line 607 of file IsolationCorrection.cxx.

607 {
608 if( !m_corr_file.empty()){
609 load2015Corr();
610 }else{
611 ATH_MSG_WARNING("Correction file for 2015 data/mc not specified, tool not initialized for 2015 corrections\n");
612 }
613 }

◆ SetAFII()

void CP::IsolationCorrection::SetAFII ( bool AFII_corr)

Definition at line 400 of file IsolationCorrection.cxx.

400 {
401 m_AFII_corr = AFII_corr;
402 }

◆ SetCorrectEtcone()

void CP::IsolationCorrection::SetCorrectEtcone ( bool correct_etcone)

Definition at line 411 of file IsolationCorrection.cxx.

411 {
412 m_correct_etcone = correct_etcone;
413 }

◆ SetCorrectionFile()

void CP::IsolationCorrection::SetCorrectionFile ( const std::string & corr_file,
const std::string & corr_ddshift_file,
const std::string & corr_ddsmearing_file )

Definition at line 59 of file IsolationCorrection.cxx.

59 {
60 // the leakage parameterisation
62 // the DD shifts (for photons)
64 // And an eventual smearing (run I)
66 }
std::string PathResolverFindCalibFile(const std::string &logical_file_name)

◆ SetDataMC() [1/2]

void CP::IsolationCorrection::SetDataMC ( bool is_mc)

Definition at line 395 of file IsolationCorrection.cxx.

395 {
396 m_is_mc = is_mc;
397 m_set_mc = true;
398 }

◆ SetDataMC() [2/2]

void CP::IsolationCorrection::SetDataMC ( const xAOD::EventInfo * event_info)

Definition at line 419 of file IsolationCorrection.cxx.

419 {
421 }
bool eventType(EventType type) const
Check for one particular bitmask value.
@ IS_SIMULATION
true: simulation, false: data

◆ setDDCorr()

void CP::IsolationCorrection::setDDCorr ( )
private

Definition at line 769 of file IsolationCorrection.cxx.

769 {
770 if( !m_corr_ddshift_file.empty() && !m_corr_ddsmearing_file.empty()){
771 loadDDCorr();
772 }else{
773 ATH_MSG_WARNING("Data-driven correction files not specified, tool not initialized for data-driven corrections\n");
774 }
775 }

◆ setEtaBins()

void CP::IsolationCorrection::setEtaBins ( )
private

Definition at line 423 of file IsolationCorrection.cxx.

423 {
426 m_eta_bins_fine = {0.0, 0.10, 0.60, 0.80, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47};
427 m_eta_bins_coarse = {0.0, 0.60, 1.37, 1.52, 1.81, 2.47};
428 }

◆ setIsolCorr()

void CP::IsolationCorrection::setIsolCorr ( )
private

Definition at line 432 of file IsolationCorrection.cxx.

432 {
433 if (m_tool_ver == REL17_2) {
434 set2011Corr(); // in fact, this is for etcone
435 set2012Corr();
436 setDDCorr();
437 } else if (m_tool_ver == REL20_2 || m_tool_ver == REL21 || m_tool_ver == REL22)
438 set2015Corr();
439 }

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29{
30 m_lvl = lvl;
31}

◆ SetToolVer()

void CP::IsolationCorrection::SetToolVer ( CP::IsolationCorrection::Version ver)

◆ SetTroubleCategories()

void CP::IsolationCorrection::SetTroubleCategories ( bool trouble_categories)

Definition at line 415 of file IsolationCorrection.cxx.

415 {
416 m_trouble_categories = trouble_categories;
417 }

◆ setupDD()

StatusCode CP::IsolationCorrection::setupDD ( const std::string & year)
private

Definition at line 233 of file IsolationCorrection.cxx.

233 {
234
235 if (m_corr_ddshift_file.empty()){
236 ATH_MSG_WARNING("IsolationCorrection::GetDDCorrection " << year << ", unknown correction file name.\nNo correction is applied.\n");
237 return StatusCode::FAILURE;
238 }
239
240 int ii = year == "2017" ? 2 : (year == "2015_2016" ? 1 : 0);
241 int jj = m_AFII_corr ? 1 : 0;
242
243 if (year == m_previousYear && m_corrInitialized[ii][jj])
244 return StatusCode::SUCCESS;
245
246 ATH_MSG_VERBOSE("Will setup the tool to retrieve " << year << " DD corrections");
247
249 if (year == "2015") {
251 m_crackBin = 2;
256 } else if (year == "2015_2016") {
258 m_crackBin = 4;
263 } else if (year == "2017") {
265 m_crackBin = 4;
270 } else {
271 ATH_MSG_WARNING("Year " << year << " is not known in IsolationCorrection ! Check your input ! No correction is applied");
272 return StatusCode::FAILURE;
273 }
274
275 if (!m_corrInitialized[ii][jj]) {
276
277 ATH_MSG_VERBOSE("DD corrections for year " << year << " not loaded yet. Doing it know");
278
279 std::unique_ptr< TFile > file_ptleakagecorr( TFile::Open( m_corr_ddshift_file.c_str(), "READ" ) );
280 if (!file_ptleakagecorr) {
281 ATH_MSG_ERROR("file " << m_corr_ddshift_file << " not found ! Check your inputs");
282 return StatusCode::FAILURE;
283 }
284 TString baseN = year + "/" + (m_AFII_corr ? "AF2/" : "FullSim/");
285 TVector *veta = (TVector*)file_ptleakagecorr->Get(baseN+"/etaBinning");
286 m_feta_bins_dd->resize(veta->GetNrows());
287 for (int ieta = 0; ieta < veta->GetNrows(); ieta++) m_feta_bins_dd->at(ieta) = (*veta)[ieta];
288 TTree *tbinLabel = (TTree*)file_ptleakagecorr->Get(baseN+"tbinLabel");
289 TBranch *bbinLabel(nullptr);
290 TString *binLabel(nullptr); tbinLabel->SetBranchAddress("binLabel",&binLabel,&bbinLabel);
291 for (unsigned int ieta = 0; ieta < m_feta_bins_dd->size()-2; ieta++) {
292 tbinLabel->GetEntry(ieta);
293 TString gN = "topoETcone40_DataDriven_unconverted_photon_eta_";
294 gN += (*binLabel);
295 m_graph_dd_cone40_unconv_photon_shift->push_back( (TGraph*) file_ptleakagecorr->Get(baseN+gN));
296 gN = "topoETcone40_DataDriven_converted_photon_eta_";
297 gN += (*binLabel);
298 m_graph_dd_cone40_conv_photon_shift->push_back( (TGraph*) file_ptleakagecorr->Get(baseN+gN));
299 gN = "topoETcone20_DataDriven_unconverted_photon_eta_";
300 gN += (*binLabel);
301 m_graph_dd_cone20_unconv_photon_shift->push_back( (TGraph*) file_ptleakagecorr->Get(baseN+gN));
302 gN = "topoETcone20_DataDriven_converted_photon_eta_";
303 gN += (*binLabel);
304 m_graph_dd_cone20_conv_photon_shift->push_back( (TGraph*) file_ptleakagecorr->Get(baseN+gN));
305 ATH_MSG_VERBOSE("Got graphs \n"
306 << " dR = 0.4, unconv " << m_graph_dd_cone40_unconv_photon_shift->at(ieta)->GetName() << "\n"
307 << " dR = 0.4, conv " << m_graph_dd_cone40_conv_photon_shift->at(ieta)->GetName() << "\n"
308 << " dR = 0.2, unconv " << m_graph_dd_cone20_unconv_photon_shift->at(ieta)->GetName() << "\n"
309 << " dR = 0.2, conv " << m_graph_dd_cone20_conv_photon_shift->at(ieta)->GetName());
310
311 }
312 m_corrInitialized[ii][jj] = true;
313 }
314
315 return StatusCode::SUCCESS;
316}

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging).

Definition at line 141 of file AthMessaging.h.

◆ m_AFII_corr

bool CP::IsolationCorrection::m_AFII_corr
private

◆ m_corr_ddshift_file

std::string CP::IsolationCorrection::m_corr_ddshift_file
private

◆ m_corr_ddsmearing_file

std::string CP::IsolationCorrection::m_corr_ddsmearing_file
private

◆ m_corr_file

std::string CP::IsolationCorrection::m_corr_file
private

◆ m_correct_etcone

bool CP::IsolationCorrection::m_correct_etcone
private

◆ m_corrInitialized

bool CP::IsolationCorrection::m_corrInitialized[3][2] {}
private

◆ m_crackBin

int CP::IsolationCorrection::m_crackBin {}
private

◆ m_eta_bins_coarse

std::vector<float> CP::IsolationCorrection::m_eta_bins_coarse
private

◆ m_eta_bins_dd

std::vector<float> CP::IsolationCorrection::m_eta_bins_dd
private

◆ m_eta_bins_fine

std::vector<float> CP::IsolationCorrection::m_eta_bins_fine
private

◆ m_feta_bins_dd

std::vector<float>* CP::IsolationCorrection::m_feta_bins_dd {}
private

◆ m_feta_bins_dd_2015

std::vector<float> CP::IsolationCorrection::m_feta_bins_dd_2015
private

◆ m_feta_bins_dd_2017

std::vector<float> CP::IsolationCorrection::m_feta_bins_dd_2017
private

◆ m_forcePartType

bool CP::IsolationCorrection::m_forcePartType
private

◆ m_function_2015_cone20_author_16_electron

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone20_author_16_electron
private

◆ m_function_2015_cone20_author_1_electron

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone20_author_1_electron
private

◆ m_function_2015_cone20_photon_converted_ok

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone20_photon_converted_ok
private

◆ m_function_2015_cone20_photon_converted_trouble

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone20_photon_converted_trouble
private

◆ m_function_2015_cone20_photon_unconverted

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone20_photon_unconverted
private

◆ m_function_2015_cone30_author_16_electron

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone30_author_16_electron
private

◆ m_function_2015_cone30_author_1_electron

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone30_author_1_electron
private

◆ m_function_2015_cone30_photon_converted_ok

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone30_photon_converted_ok
private

◆ m_function_2015_cone30_photon_converted_trouble

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone30_photon_converted_trouble
private

◆ m_function_2015_cone30_photon_unconverted

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone30_photon_unconverted
private

◆ m_function_2015_cone40_author_16_electron

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone40_author_16_electron
private

◆ m_function_2015_cone40_author_1_electron

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone40_author_1_electron
private

◆ m_function_2015_cone40_photon_converted_ok

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone40_photon_converted_ok
private

◆ m_function_2015_cone40_photon_converted_trouble

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone40_photon_converted_trouble
private

◆ m_function_2015_cone40_photon_unconverted

std::vector<TF1*> CP::IsolationCorrection::m_function_2015_cone40_photon_unconverted
private

◆ m_graph_afIIdd_2015_2016_cone20_conv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_afIIdd_2015_2016_cone20_conv_photon_shift
private

◆ m_graph_afIIdd_2015_2016_cone20_unconv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_afIIdd_2015_2016_cone20_unconv_photon_shift
private

◆ m_graph_afIIdd_2015_2016_cone40_conv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_afIIdd_2015_2016_cone40_conv_photon_shift
private

◆ m_graph_afIIdd_2015_2016_cone40_unconv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_afIIdd_2015_2016_cone40_unconv_photon_shift
private

◆ m_graph_afIIdd_2017_cone20_conv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_afIIdd_2017_cone20_conv_photon_shift
private

◆ m_graph_afIIdd_2017_cone20_unconv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_afIIdd_2017_cone20_unconv_photon_shift
private

◆ m_graph_afIIdd_2017_cone40_conv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_afIIdd_2017_cone40_conv_photon_shift
private

◆ m_graph_afIIdd_2017_cone40_unconv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_afIIdd_2017_cone40_unconv_photon_shift
private

◆ m_graph_cone20_electron

std::vector<TGraph*> CP::IsolationCorrection::m_graph_cone20_electron
private

◆ m_graph_cone20_photon_converted

std::vector<TGraph*> CP::IsolationCorrection::m_graph_cone20_photon_converted
private

◆ m_graph_cone20_photon_unconverted

std::vector<TGraph*> CP::IsolationCorrection::m_graph_cone20_photon_unconverted
private

◆ m_graph_cone30_electron

std::vector<TGraph*> CP::IsolationCorrection::m_graph_cone30_electron
private

◆ m_graph_cone30_photon_converted

std::vector<TGraph*> CP::IsolationCorrection::m_graph_cone30_photon_converted
private

◆ m_graph_cone30_photon_unconverted

std::vector<TGraph*> CP::IsolationCorrection::m_graph_cone30_photon_unconverted
private

◆ m_graph_cone40_electron

std::vector<TGraph*> CP::IsolationCorrection::m_graph_cone40_electron
private

◆ m_graph_cone40_photon_converted

std::vector<TGraph*> CP::IsolationCorrection::m_graph_cone40_photon_converted
private

◆ m_graph_cone40_photon_unconverted

std::vector<TGraph*> CP::IsolationCorrection::m_graph_cone40_photon_unconverted
private

◆ m_graph_dd_2015_2016_cone20_conv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2015_2016_cone20_conv_photon_shift
private

◆ m_graph_dd_2015_2016_cone20_unconv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2015_2016_cone20_unconv_photon_shift
private

◆ m_graph_dd_2015_2016_cone40_conv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2015_2016_cone40_conv_photon_shift
private

◆ m_graph_dd_2015_2016_cone40_unconv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2015_2016_cone40_unconv_photon_shift
private

◆ m_graph_dd_2015_cone20_conv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2015_cone20_conv_photon_shift
private

◆ m_graph_dd_2015_cone20_unconv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2015_cone20_unconv_photon_shift
private

◆ m_graph_dd_2015_cone40_conv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2015_cone40_conv_photon_shift
private

◆ m_graph_dd_2015_cone40_unconv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2015_cone40_unconv_photon_shift
private

◆ m_graph_dd_2017_cone20_conv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2017_cone20_conv_photon_shift
private

◆ m_graph_dd_2017_cone20_unconv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2017_cone20_unconv_photon_shift
private

◆ m_graph_dd_2017_cone40_conv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2017_cone40_conv_photon_shift
private

◆ m_graph_dd_2017_cone40_unconv_photon_shift

std::vector<TGraph*> CP::IsolationCorrection::m_graph_dd_2017_cone40_unconv_photon_shift
private

◆ m_graph_dd_cone20_conv_photon_shift

std::vector<TGraph*>* CP::IsolationCorrection::m_graph_dd_cone20_conv_photon_shift {}
private

◆ m_graph_dd_cone20_unconv_photon_shift

std::vector<TGraph*>* CP::IsolationCorrection::m_graph_dd_cone20_unconv_photon_shift {}
private

◆ m_graph_dd_cone40_conv_photon_shift

std::vector<TGraph*>* CP::IsolationCorrection::m_graph_dd_cone40_conv_photon_shift {}
private

◆ m_graph_dd_cone40_photon_shift

std::vector<TF1*> CP::IsolationCorrection::m_graph_dd_cone40_photon_shift
private

◆ m_graph_dd_cone40_photon_smearing

std::vector<TF1*> CP::IsolationCorrection::m_graph_dd_cone40_photon_smearing
private

◆ m_graph_dd_cone40_unconv_photon_shift

std::vector<TGraph*>* CP::IsolationCorrection::m_graph_dd_cone40_unconv_photon_shift {}
private

◆ m_graph_histoMean_2015_cone20_author_16_electron

std::vector<TGraph*> CP::IsolationCorrection::m_graph_histoMean_2015_cone20_author_16_electron
private

◆ m_graph_histoMean_2015_cone20_photon_converted_trouble

std::vector<TGraph*> CP::IsolationCorrection::m_graph_histoMean_2015_cone20_photon_converted_trouble
private

◆ m_graph_histoMean_2015_cone30_author_16_electron

std::vector<TGraph*> CP::IsolationCorrection::m_graph_histoMean_2015_cone30_author_16_electron
private

◆ m_graph_histoMean_2015_cone30_photon_converted_trouble

std::vector<TGraph*> CP::IsolationCorrection::m_graph_histoMean_2015_cone30_photon_converted_trouble
private

◆ m_graph_histoMean_2015_cone40_author_16_electron

std::vector<TGraph*> CP::IsolationCorrection::m_graph_histoMean_2015_cone40_author_16_electron
private

◆ m_graph_histoMean_2015_cone40_photon_converted_trouble

std::vector<TGraph*> CP::IsolationCorrection::m_graph_histoMean_2015_cone40_photon_converted_trouble
private

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

135{ nullptr };

◆ m_is_mc

bool CP::IsolationCorrection::m_is_mc
private

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

138{ MSG::NIL };

◆ m_mc_rel17_leakage_correction_offsets_electron_15

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_electron_15
private

◆ m_mc_rel17_leakage_correction_offsets_electron_20

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_electron_20
private

◆ m_mc_rel17_leakage_correction_offsets_electron_25

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_electron_25
private

◆ m_mc_rel17_leakage_correction_offsets_electron_30

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_electron_30
private

◆ m_mc_rel17_leakage_correction_offsets_electron_35

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_electron_35
private

◆ m_mc_rel17_leakage_correction_offsets_electron_40

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_electron_40
private

◆ m_mc_rel17_leakage_correction_offsets_photon_converted_15

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_converted_15
private

◆ m_mc_rel17_leakage_correction_offsets_photon_converted_20

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_converted_20
private

◆ m_mc_rel17_leakage_correction_offsets_photon_converted_25

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_converted_25
private

◆ m_mc_rel17_leakage_correction_offsets_photon_converted_30

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_converted_30
private

◆ m_mc_rel17_leakage_correction_offsets_photon_converted_35

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_converted_35
private

◆ m_mc_rel17_leakage_correction_offsets_photon_converted_40

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_converted_40
private

◆ m_mc_rel17_leakage_correction_offsets_photon_unconverted_15

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_unconverted_15
private

◆ m_mc_rel17_leakage_correction_offsets_photon_unconverted_20

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_unconverted_20
private

◆ m_mc_rel17_leakage_correction_offsets_photon_unconverted_25

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_unconverted_25
private

◆ m_mc_rel17_leakage_correction_offsets_photon_unconverted_30

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_unconverted_30
private

◆ m_mc_rel17_leakage_correction_offsets_photon_unconverted_35

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_unconverted_35
private

◆ m_mc_rel17_leakage_correction_offsets_photon_unconverted_40

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_offsets_photon_unconverted_40
private

◆ m_mc_rel17_leakage_correction_slopes_electron_15

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_electron_15
private

◆ m_mc_rel17_leakage_correction_slopes_electron_20

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_electron_20
private

◆ m_mc_rel17_leakage_correction_slopes_electron_25

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_electron_25
private

◆ m_mc_rel17_leakage_correction_slopes_electron_30

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_electron_30
private

◆ m_mc_rel17_leakage_correction_slopes_electron_35

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_electron_35
private

◆ m_mc_rel17_leakage_correction_slopes_electron_40

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_electron_40
private

◆ m_mc_rel17_leakage_correction_slopes_photon_converted_15

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_converted_15
private

◆ m_mc_rel17_leakage_correction_slopes_photon_converted_20

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_converted_20
private

◆ m_mc_rel17_leakage_correction_slopes_photon_converted_25

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_converted_25
private

◆ m_mc_rel17_leakage_correction_slopes_photon_converted_30

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_converted_30
private

◆ m_mc_rel17_leakage_correction_slopes_photon_converted_35

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_converted_35
private

◆ m_mc_rel17_leakage_correction_slopes_photon_converted_40

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_converted_40
private

◆ m_mc_rel17_leakage_correction_slopes_photon_unconverted_15

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_unconverted_15
private

◆ m_mc_rel17_leakage_correction_slopes_photon_unconverted_20

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_unconverted_20
private

◆ m_mc_rel17_leakage_correction_slopes_photon_unconverted_25

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_unconverted_25
private

◆ m_mc_rel17_leakage_correction_slopes_photon_unconverted_30

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_unconverted_30
private

◆ m_mc_rel17_leakage_correction_slopes_photon_unconverted_35

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_unconverted_35
private

◆ m_mc_rel17_leakage_correction_slopes_photon_unconverted_40

std::vector<float> CP::IsolationCorrection::m_mc_rel17_leakage_correction_slopes_photon_unconverted_40
private

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels).

Definition at line 132 of file AthMessaging.h.

◆ m_nBinsEtaCoarse

const unsigned int CP::IsolationCorrection::m_nBinsEtaCoarse
private

◆ m_nBinsEtaFine

const unsigned int CP::IsolationCorrection::m_nBinsEtaFine
private

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_previousYear

std::string CP::IsolationCorrection::m_previousYear
private

◆ m_set_mc

bool CP::IsolationCorrection::m_set_mc
private

◆ m_shower

◆ m_tool_ver

◆ m_trouble_categories

bool CP::IsolationCorrection::m_trouble_categories
private

◆ m_useLogLogFit

bool CP::IsolationCorrection::m_useLogLogFit
private

The documentation for this class was generated from the following files: