Commit 0f6e0782 authored by Pierre Antoine Delsart's avatar Pierre Antoine Delsart Committed by Graeme Stewart
Browse files

'update for new event shape names' (JetCalibTools-00-04-05)

2014-10-16  David Adams
	JetCalibTools-00-04-05
	See ATLJETMET-21
	* Root/JetCalibrationTool.cxx: Update for new EventShape interface.
2014-10-10    <delsart@localhost>
	* JetCalibrationTool.cxx and all *cxx files : replaced FindFile by
	PathResolverFindCalibFile.
	* cmt/requirements and Makefile.RootCore adapted.
	* run time not tested in RootCore !
	* works with JetRec-02-04-04
	* JetCalibTools-00-04-04
2014-10-01 Joe Taenzer  <joseph.taenzer@cern.ch>
	JetCalibTools-00-04-03
	* Fixed the Changelog
	* Added declareProperty statement for isData
	* Added Moriond2013 AFII config
	* Added most recent Rscan config
	* All daughter classes now receive a unique name during initialization
	* Low pT JES extrapolation migrated from the old tool
	(not relevant to Moriond2013 and older calibration)
...
(Long ChangeLog diff - truncated)
parent 99738316
#! /usr/bin/env python
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
class H1Coefficients01:
def __init__(self):
self.wtEMB0 = '[ 1.661700, 1.126686]'
self.wtEME0 = '[ 0.900000, 1.367212]'
self.wtEMB1 = '[2.500000, 2.500000, 2.260946, 1.832065, 1.511315, 1.284198, 1.136217, 1.052875, 1.019675, 1.022120, 1.045713, 1.075956, 1.098352, 1.098404, 1.061616, 0.973489]'
self.wtEMB2 = '[2.500000, 2.500000, 2.500000, 1.924366, 1.467739, 1.165838, 0.992170, 0.920237, 0.923544, 0.975596, 1.049896, 1.119949, 1.159260, 1.141333, 1.039672, 0.900000]'
self.wtEME1 = '[2.500000, 2.500000, 2.500000, 2.500000, 2.175771, 1.870474, 1.610982, 1.395775, 1.223331, 1.092130, 1.000650, 0.947371, 0.930771, 0.949330, 1.001527, 1.085840]'
self.wtEME2 = '[2.500000, 2.444661, 2.267361, 2.093847, 1.926427, 1.767408, 1.619097, 1.483803, 1.363833, 1.261495, 1.179096, 1.118943, 1.083346, 1.074610, 1.095044, 1.146956]'
self.wtTile1 = '[1.305617, 1.244698, 1.205205, 1.181722, 1.168832, 1.161120, 1.153169, 1.139562, 1.114885, 1.073719, 1.010650, 0.920260, 0.900000, 0.900000, 0.900000, 0.900000]'
self.wtTile2 = '[1.590722, 1.480114, 1.383326, 1.299933, 1.229509, 1.171630, 1.125870, 1.091804, 1.069008, 1.057055, 1.055520, 1.063979, 1.082007, 1.109178, 1.145067, 1.189249]'
self.wtHec1 = '[1.032623, 1.202991, 1.318152, 1.386549, 1.416625, 1.416825, 1.395590, 1.361366, 1.322595, 1.287720, 1.265186, 1.263434, 1.290910, 1.356055, 1.467314, 1.633129]'
self.wtHec2 = '[1.765635, 1.663091, 1.574680, 1.499680, 1.437368, 1.387022, 1.347919, 1.319338, 1.300555, 1.290849, 1.289496, 1.295775, 1.308964, 1.328339, 1.353179, 1.382760]'
self.wtFCal1 = '[2.500000, 2.500000, 2.500000, 2.500000, 2.500000, 2.500000, 2.500000, 2.403764, 2.197850, 2.010935, 1.843019, 1.694102, 1.564184, 1.453264, 1.361344, 1.288423]'
self.wtFCal2 = '[2.500000, 2.500000, 2.384447, 2.259378, 2.142170, 2.032824, 1.931339, 1.837715, 1.751953, 1.674052, 1.604012, 1.541834, 1.487517, 1.441061, 1.402467, 1.371734]'
self.wtCryo = 1.022604
self.wtGap = 1.205071
self.wtScint = 1.566638
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
TrackFitDict = {}
TrackFitDict['AntiKt4TopoJets'] = [
[1.05754,1.10115,0.0164969,-0.0046288,-0.030435,0.00912633,4.48061e-05,0.00117745,0.0118138,-1.12836,0.0190392],
[1.02877,1.11953,0.00851397,0.000589692,-0.0283504,0.00451346,-0.000356189,0.00111315,0.00361306,-1.10473,0.00975281],
]
TrackFitDict['AntiKt4TopoJets'] = [
[1.019,1.00265,0.0184721,-0.00312634,-0.038165, 0.0253445, 6.58357e-05,0.00350771, 0.0561454, -0.937574,0.0190008],
[1.00826, 0.997179,0.0127713,-0.00162304,-0.0236996,0.0138358,-1.69167e-07, 0.000562509,0.0111679,-0.948705, 0.0134973],
]
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
from JetRec.JetAlgConfiguration import editParm
offsetDict = {}
_knownInput = ["tower","topo"]
#need to have a parameter which chooses MC or Data
def retrieveTruthConstants(finder='AntiKt', mainparam=0.4, inputType='Topo', calibType='EM', isMC=False, dataType="MC10B"):
#dataType="mc10b"
keyOOT=""
keyIT=""
if 'Topo' in inputType and not 'Tower' in inputType:
if 'LC' in calibType and not 'EM' in calibType:
keyOOT = dataType+'_oot_AntiKt'+editParm(mainparam)+'_LCTopo'
keyIT = dataType+'_it_AntiKt'+editParm(mainparam)+'_LCTopo'
else:
keyOOT = dataType+'_oot_AntiKt'+editParm(mainparam)+'_EMTopo'
keyIT = dataType+'_it_AntiKt'+editParm(mainparam)+'_EMTopo'
else:
return dummyOOTOffset, dummyITOffset
#keyOOT = dataType+'_oot_truth_offsets'
#keyIT = dataType+'_it_truth_offsets'
#key = period+'_'+finder+editParm(mainparam)+inputType
return offsetDict[keyOOT] , offsetDict[keyIT]
offsetDict = {}
def _buildOffsetDict():
# define the dicts in this function.
# ... just a trick to delay the initialisation after the _periodXXX variable are
# properly define
offsetDict['MC10B_oot_AntiKt6_LCTopo'] = _oot_MC10B_AntiKt6_LCTopo
offsetDict['MC10B_it_AntiKt6_LCTopo'] = _it_MC10B_AntiKt6_LCTopo
offsetDict['MC10B_oot_AntiKt4_LCTopo'] = _oot_MC10B_AntiKt4_LCTopo
offsetDict['MC10B_it_AntiKt4_LCTopo'] = _it_MC10B_AntiKt4_LCTopo
offsetDict['MC10B_oot_AntiKt6_EMTopo'] = _oot_MC10B_AntiKt6_EMTopo
offsetDict['MC10B_it_AntiKt6_EMTopo'] = _it_MC10B_AntiKt6_EMTopo
offsetDict['MC10B_oot_AntiKt4_EMTopo'] = _oot_MC10B_AntiKt4_EMTopo
offsetDict['MC10B_it_AntiKt4_EMTopo'] = _it_MC10B_AntiKt4_EMTopo
#OOT time stuff doesn't matter, but it needs to be loaded. Will fix.
offsetDict['MC11A_oot_AntiKt6_LCTopo'] = _oot_MC10B_AntiKt6_LCTopo
offsetDict['MC11A_it_AntiKt6_LCTopo'] = _it_MC11A_AntiKt6_LCTopo
offsetDict['MC11A_oot_AntiKt4_LCTopo'] = _oot_MC10B_AntiKt4_LCTopo
offsetDict['MC11A_it_AntiKt4_LCTopo'] = _it_MC11A_AntiKt4_LCTopo
offsetDict['MC11A_oot_AntiKt6_EMTopo'] = _oot_MC10B_AntiKt6_EMTopo
offsetDict['MC11A_it_AntiKt6_EMTopo'] = _it_MC11A_AntiKt6_EMTopo
offsetDict['MC11A_oot_AntiKt4_EMTopo'] = _oot_MC10B_AntiKt4_EMTopo
offsetDict['MC11A_it_AntiKt4_EMTopo'] = _it_MC11A_AntiKt4_EMTopo
#for the time being mc11a is mc11b
offsetDict['MC11B_oot_AntiKt6_LCTopo'] = _oot_MC10B_AntiKt6_LCTopo
offsetDict['MC11B_it_AntiKt6_LCTopo'] = _it_MC11B_AntiKt6_LCTopo
offsetDict['MC11B_oot_AntiKt4_LCTopo'] = _oot_MC10B_AntiKt4_LCTopo
offsetDict['MC11B_it_AntiKt4_LCTopo'] = _it_MC11B_AntiKt4_LCTopo
offsetDict['MC11B_oot_AntiKt6_EMTopo'] = _oot_MC10B_AntiKt6_EMTopo
offsetDict['MC11B_it_AntiKt6_EMTopo'] = _it_MC11B_AntiKt6_EMTopo
offsetDict['MC11B_oot_AntiKt4_EMTopo'] = _oot_MC10B_AntiKt4_EMTopo
offsetDict['MC11B_it_AntiKt4_EMTopo'] = _it_MC11B_AntiKt4_EMTopo
#mcllc
offsetDict['MC11C_oot_AntiKt6_LCTopo'] = _oot_MC10B_AntiKt6_LCTopo
offsetDict['MC11C_it_AntiKt6_LCTopo'] = _it_MC11C_AntiKt6_LCTopo
offsetDict['MC11C_oot_AntiKt4_LCTopo'] = _oot_MC10B_AntiKt4_LCTopo
offsetDict['MC11C_it_AntiKt4_LCTopo'] = _it_MC11C_AntiKt4_LCTopo
offsetDict['MC11C_oot_AntiKt6_EMTopo'] = _oot_MC10B_AntiKt6_EMTopo
offsetDict['MC11C_it_AntiKt6_EMTopo'] = _it_MC11C_AntiKt6_EMTopo
offsetDict['MC11C_oot_AntiKt4_EMTopo'] = _oot_MC10B_AntiKt4_EMTopo
offsetDict['MC11C_it_AntiKt4_EMTopo'] = _it_MC11C_AntiKt4_EMTopo
#MC11 has 8 eta bins between 0 and 4.5, whereas mc10b has 7.
_it_MC10B_AntiKt6_EMTopo=[
[0.113253, 0.554206],
[0.0988858, 0.560879],
[0.0229146, 0.615631],
[0.0216436, 0.604061],
[-0.117142, 0.643603],
[-0.251135, 0.627901],
[-0.330684, 0.645477],
[0.0,0.0]]
_it_MC10B_AntiKt6_LCTopo=[
[0.157548, 0.841648],
[0.130792, 0.856677],
[0.0549006, 0.919961],
[0.0753573, 0.92832],
[-0.131852, 0.909487],
[-0.373156, 0.913625],
[-0.412353, 0.754934],
[0.0,0.0]]
_it_MC10B_AntiKt4_EMTopo=[
[0.0262287, 0.297376],
[0.014356, 0.2657],
[-0.0311566, 0.287447],
[-0.0125061, 0.316899],
[-0.124887, 0.340274],
[-0.185109, 0.362528],
[-0.238533, 0.363839],
[0.0,0.0]]
_it_MC10B_AntiKt4_LCTopo=[
[0.0241725, 0.406266],
[0.0339716, 0.375533],
[-0.0238977, 0.4012],
[-0.0173475, 0.449796],
[-0.16973, 0.451956],
[-0.300495, 0.508713],
[-0.30317, 0.400553],
[0.0,0.0]]
_it_MC11A_AntiKt6_LCTopo = [
[0.081129, 0.863087],
[0.174856, 0.932187],
[0.157241, 0.949689],
[0.160154, 1.04587],
[-0.12353, 1.04282],
[-0.634638, 1.00018],
[-0.425224, 0.814888],
[-0.417126, 0.796178]]
_it_MC11A_AntiKt4_LCTopo = [
[0.176939, 0.395263],
[-0.0385627, 0.450651],
[-0.0285996, 0.456889],
[-0.0323493, 0.473201],
[-0.207551, 0.497915],
[-0.44302, 0.538598],
[-0.377041, 0.415136],
[-0.227415, 0.430346]]
_it_MC11A_AntiKt6_EMTopo = [
[0.0604418, 0.559813],
[0.0507161, 0.574198],
[0.0426326, 0.596214],
[0.0527892, 0.602762],
[-0.126838, 0.633544],
[-0.33467, 0.646801],
[-0.271933, 0.520153],
[-0.408004, 0.651975]]
_it_MC11A_AntiKt4_EMTopo = [
[0.150383, 0.258029],
[-0.0456719, 0.293964],
[-0.0308581, 0.306925],
[-0.0978798, 0.306813],
[-0.136627, 0.337463],
[-0.284215, 0.375363],
[-0.28942, 0.290287],
[-0.185365, 0.39293]]
_it_MC11B_AntiKt6_EMTopo = [
[0.15247, 0.525615],
[0.137904, 0.528486],
[0.1003, 0.582711],
[0.0512972, 0.587876],
[-0.0706831, 0.624681],
[-0.204989, 0.630142],
[-0.230592, 0.524266],
[-0.342938, 0.593821]]
_it_MC11B_AntiKt6_LCTopo = [
[0.210152, 0.831506],
[0.194024, 0.84977],
[0.144459, 0.946095],
[0.0872807, 1.00528],
[-0.113683, 1.0077],
[-0.368619, 0.95988],
[-0.40265, 0.81116],
[-0.470396, 0.733868]]
_it_MC11B_AntiKt4_EMTopo = [
[0.0547216, 0.232914],
[0.0400233, 0.239226],
[0.0267392, 0.268988],
[-0.021222, 0.296892],
[-0.108674, 0.334936],
[-0.201987, 0.372745],
[-0.190477, 0.279828],
[-0.27411, 0.359897]]
_it_MC11B_AntiKt4_LCTopo = [
[0.0596902, 0.364774],
[0.0397633, 0.37685],
[0.0146006, 0.421035],
[-0.0421451, 0.460094],
[-0.174076, 0.472976],
[-0.33694, 0.510443],
[-0.319749, 0.392799],
[-0.352995, 0.392092]]
_it_MC11C_AntiKt4_EMTopo = [
[0.0632614, 0.198421],
[0.030444, 0.215123],
[0.0345867, 0.248505],
[-0.00971721, 0.283437],
[-0.0833448, 0.308447],
[-0.156438, 0.335779],
[-0.134727, 0.240089],
[-0.191469, 0.333182]]
_it_MC11C_AntiKt4_LCTopo = [
[0.073347, 0.326819],
[0.0489984, 0.343063],
[0.026992, 0.38963],
[-0.016652, 0.436585],
[-0.121084, 0.444808],
[-0.265092, 0.458828],
[-0.259303, 0.334476],
[-0.261505, 0.372637]]
_it_MC11C_AntiKt6_EMTopo = [
[0.118838, 0.489917],
[0.129456, 0.486993],
[0.094688, 0.529729],
[0.0531085, 0.549239],
[-0.0316177, 0.567104],
[-0.145253, 0.566533],
[-0.181018, 0.459689],
[-0.268132, 0.507946]]
_it_MC11C_AntiKt6_LCTopo = [
[0.162535, 0.777937],
[0.18129, 0.784239],
[0.137138, 0.869763],
[0.095285, 0.943853],
[-0.0443445, 0.927513],
[-0.246819, 0.861009],
[-0.30851, 0.710359],
[-0.362572, 0.633215]]
dummyOOTOffset=[
[0.0 ,0.0, 0.0, 0.0],
[0.0 ,0.0, 0.0, 0.0],
[0.0 ,0.0, 0.0, 0.0],
[0.0 ,0.0, 0.0, 0.0],
[0.0 ,0.0, 0.0, 0.0],
[0.0 ,0.0, 0.0, 0.0],
[0.0 ,0.0, 0.0, 0.0],
[0.0,0.0,0.0,0.0]]
dummyITOffset=[
[0.0 , 0.0],
[0.0 , 0.0],
[0.0 , 0.0],
[0.0 , 0.0],
[0.0 , 0.0],
[0.0 , 0.0],
[0.0 , 0.0],
[0.0 , 0.0]]
_oot_MC10B_AntiKt6_EMTopo=[
[-0.516786,0.176786, 219.815, 153.02],
[-0.213497,0.166057, 225.802, 143.163],
[-0.792833,0.240971, 229.228, 154.93],
[-0.841995, 0.271792, 159.56, 194.246],
[-0.712023, 0.446724, 169.559, 174.039],
[-1.17867, 0.561732, 157.843, 169.152],
[-0.227607, 0.519801, 84.852, 71.4725],
[0.0,0.0,0.0,0.0]]
_oot_MC10B_AntiKt6_LCTopo=[
[-1.05206, 0.299674, 195.75, 157.166],
[-0.381549, 0.258617, 225.401, 149.555],
[-1.11227, 0.363869, 213.958, 169.54],
[-1.2208, 0.409732, 175.051, 177.975],
[-0.798995, 0.590115, 169.271, 166.405],
[-1.50429, 0.798656, 142.958, 181.86],
[-0.204731, 0.626874, 83.9244, 70.87],
[0.0,0.0,0.0,0.0]]
_oot_MC10B_AntiKt4_EMTopo=[
[-0.0784516, 0.0903611, 219.988, 141.379],
[0.200334, 0.0771597, 229.752, 146.789],
[-0.125066, 0.115621, 226.96, 151.696],
[-0.310489, 0.159661, 154.757, 203.12],
[-0.0907442, 0.262995, 172.674, 176.926],
[-0.398694, 0.318128, 168.459, 175.487],
[0.563824, 0.283193, 79.661, 68.3148],
[0.0,0.0,0.0,0.0]]
_oot_MC10B_AntiKt4_LCTopo=[
[-0.289889, 0.147889, 202.22, 139.99],
[-0.201576, 0.166532, 201.018, 168.25],
[-0.199492, 0.174711, 212.224, 169.018],
[-0.568545, 0.243709, 169.542, 190.765],
[-0.11559, 0.345286, 173.339, 173.295],
[-0.287665, 0.421048, 157.808, 182.386],
[0.735566, 0.318853, 79.7291, 66.558],
[0.0,0.0,0.0,0.0]]
_buildOffsetDict()
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef JETCALIBTOOLS_ETAJESCORRECTION_H
#define JETCALIBTOOLS_ETAJESCORRECTION_H 1
/* Implementation of EtaJESCorrection class
* This class will apply the absolute EtaJES correction
*
* Author: Joe Taenzer (joseph.taenzer@cern.ch)
* Date: August 19 2013
*/
#include <TEnv.h>
#include <TAxis.h>
#include "JetCalibTools/IJetCalibrationTool.h"
#include "JetCalibTools/JetCalibrationToolBase.h"
class EtaJESCorrection
: virtual public ::IJetCalibrationTool,
virtual public ::JetCalibrationToolBase
{
ASG_TOOL_CLASS( EtaJESCorrection, IJetCalibrationTool )
public:
EtaJESCorrection();
EtaJESCorrection(const std::string& name);
EtaJESCorrection(const std::string& name, TEnv * config, TString jetAlgo);
virtual ~EtaJESCorrection();
//virtual bool initializeTool(TEnv * config, TString jetAlgo);
virtual StatusCode initializeTool(const std::string& name);
protected:
virtual StatusCode calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const;
private:
double getJES(double E_uncorr, double eta_det) const;
double getLowPtJES(double E_uncorr, double eta_det) const;
double getEtaCorr(double E_corr, double eta_det) const;
double getLogPolN(const double *factors, double x) const;
double getLogPolNSlope(const double *factors, double x) const;
int getEtaBin(double eta_det) const;
private:
TEnv * m_config;
TString m_jetAlgo;
TString m_jesDesc;
double m_minPt_JES, m_minPt_EtaCorr, m_maxE_EtaCorr;
unsigned int m_lowPtExtrap;
double m_lowPtMinR;
TAxis * m_etaBinAxis;
// 90 eta bins, and up to 7 parameter for the pol-fit
const static unsigned int s_nEtaBins=90;
const static unsigned int s_nPar=7;
double m_JESFactors[s_nEtaBins][s_nPar];
double m_JES_MinPt_Slopes[s_nEtaBins];
double m_JES_MinPt_E[s_nEtaBins];
double m_JES_MinPt_R[s_nEtaBins];
double m_JES_MinPt_Rmin[s_nEtaBins];
double m_JES_MinPt_Param1[s_nEtaBins];
double m_JES_MinPt_Param2[s_nEtaBins];
double m_etaCorrFactors[s_nEtaBins][s_nPar];
};
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef JETCALIBTOOLS_GLOBALSEQUENTIALCORRECTION_H
#define JETCALIBTOOLS_GLOBALSEQUENTIALCORRECTION_H 1
/*
* Class definition of GlobalSequentialCorrection - see Root/GlobalSequentialCorrection.cxx for more details
* Joe Taenzer (joseph.taenzer@cern.ch), July 2014
*/
#include <TEnv.h>
#include <TAxis.h>
#include <TH2F.h>
#include "JetCalibTools/IJetCalibrationTool.h"
#include "JetCalibTools/JetCalibrationToolBase.h"
class GlobalSequentialCorrection
: virtual public ::IJetCalibrationTool,
virtual public ::JetCalibrationToolBase
{
ASG_TOOL_CLASS( GlobalSequentialCorrection, IJetCalibrationTool )
public:
//Some convenient typedefs
typedef std::vector<TH2F*> VecTH2F;
typedef std::vector<double> VecD;
typedef std::vector<TString> StrV;
typedef unsigned int uint;
GlobalSequentialCorrection();
GlobalSequentialCorrection(const std::string& name);
GlobalSequentialCorrection(const std::string& name, TEnv * config, TString jetAlgo); //Apply the full GS calibration by default
virtual ~GlobalSequentialCorrection();
virtual StatusCode initializeTool(const std::string& name);
protected:
virtual StatusCode calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const;
private:
double getTrackWIDTHResponse(double pT, uint etabin, double trackWIDTH) const;
double getNTrkResponse(double pT, uint etabin, double nTrk) const;
double getTile0Response(double pT, uint etabin, double Tile0) const;
double getEM3Response(double pT, uint etabin, double EM3) const;
double getPunchThroughResponse(double E, double eta_det, int Nsegments) const;
double getGSCCorrection(xAOD::JetFourMom_t jetP4, double eta,
double trackWIDTH, double nTrk, double Tile0, double EM3, int Nsegments) const;
double getJetPropertyMax(TString jetPropName, unsigned int etabin) {
if ( jetPropName.Contains("EM3") && etabin < m_EM3MaxEtaBin ) return m_respFactorsEM3[etabin]->GetYaxis()->GetXmax();
else if ( jetPropName.Contains("Tile0") && etabin < m_Tile0MaxEtaBin ) return m_respFactorsTile0[etabin]->GetYaxis()->GetXmax();
else if ( jetPropName.Contains("nTrk") && etabin < m_nTrkMaxEtaBin ) return m_respFactorsnTrk[etabin]->GetYaxis()->GetXmax();
else if ( jetPropName.Contains("trackWIDTH") && etabin < m_trackWIDTHMaxEtaBin ) return m_respFactorstrackWIDTH[etabin]->GetYaxis()->GetXmax();
else return 1;
}
void setPunchThroughEtaBins(VecD etabins) {
if (etabins.size()==0) ATH_MSG_ERROR("Please check that the punch through eta binning is properly set in your config file");
m_punchThroughEtaBins=etabins;
}
void setPunchThroughMinPt(double minPt) {
if (minPt < 0) ATH_MSG_ERROR("Error determining the punch through minimum pT");
m_punchThroughMinPt = minPt;
}
private:
double readPtJetPropertyHisto(double pT, double jetProperty,
TH2F *respFactors) const;
/*
bool fileExist(TString fn) { return gSystem->AccessPathName(fn)==false; };
TFile* openInputFile(TString fn) {
if ( !FileExist(fn)) error("Cannot open GSC factors file"+fn);
TFile* fileHandle = new TFile(fn);
if (fileHandle == NULL) error( "Found but could not open file %s"+fn);
return fileHandle;
};
TH2F *GetHisto(TFile *file, TString hname) {
TH2F *h = (TH2F*)file->Get(hname);
if (h==NULL) printf("WARNING: Cannot access histogram \"%s\" in file %s",hname.Data(),file->GetName());
return h;
}
*/
//shared functions/variables with JetCalibrationTool
//void error(TString msg)
//{ printf("\nERROR - GlobalSequentialCorrection:\n\n %s\n\n",msg.Data()); abort(); }
//TString FindFile(TString fn);
//end shared functions
private:
enum m_GSCSeq { ApplyTile0 = 1, ApplyEM3 = 2, ApplynTrk = 4, ApplytrackWIDTH = 8, ApplyPunchThrough = 16 };
//Private members set in the constructor
TEnv * m_config;