ATLAS Offline Software
Loading...
Searching...
No Matches
CaloLCCoeffHelper.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef CALOUTILS_CALOLCCOEFFHELPER_H
6#define CALOUTILS_CALOLCCOEFFHELPER_H
7
8#include <fstream>
9#include <string>
10#include <optional>
13
14
16 public:
17
20
21 static std::optional<CaloLocalHadCoeff> InitDataFromFile(const char *fname);
22 static void PrintData(CaloLocalHadCoeff *m_data, std::ostream &fout);
23 static void PrintData(CaloLocalHadCoeff *m_data, const char *fname);
24
25 static const CaloLocalHadCoeff::LocalHadArea * getAreaFromName(const CaloLocalHadCoeff * m_coeff, const std::string& sname, int &m_indx) ;
26
27 // Interpolate m_data, n_area in phase space point x, over dimensions dim (all if 0)
28 // return in pars
29 static bool Interpolate(const CaloLocalHadCoeff *m_data, const unsigned int n_area, std::vector<float> &x,
30 CaloLocalHadCoeff::LocalHadCoeff &pars, const std::vector<int> &dim, double xfit=0.);
31
32 static CaloLocalHadDefs::LocalHadDimensionId getDimensionId(const std::string& dimensionName)
33 {
34 if(dimensionName == "DIMC_SIDE") {
36 }else if(dimensionName == "DIMC_ETA") {
38 }else if(dimensionName == "DIMC_PHI") {
40 }else if(dimensionName == "DIMC_ENER") {
42 }else if(dimensionName == "DIMC_EDENS") {
44 }else if(dimensionName == "DIMC_LAMBDA") {
46
47 }else if(dimensionName == "DIMW_SIDE") {
49 }else if(dimensionName == "DIMW_ETA") {
51 }else if(dimensionName == "DIMW_PHI") {
53 }else if(dimensionName == "DIMW_ENER") {
55 }else if(dimensionName == "DIMW_EDENS") {
57
58 }else if(dimensionName == "DIMO_SIDE") {
60 }else if(dimensionName == "DIMO_PHI") {
62 }else if(dimensionName == "DIMO_ENER") {
64 }else if(dimensionName == "DIMO_ETA") {
66 }else if(dimensionName == "DIMO_LAMBDA") {
68
69 }else if(dimensionName == "DIMD_EMFRAC") {
71 }else if(dimensionName == "DIMD_SIDE") {
73 }else if(dimensionName == "DIMD_ETA") {
75 }else if(dimensionName == "DIMD_PHI") {
77 }else if(dimensionName == "DIMD_ENER") {
79 }else if(dimensionName == "DIMD_LAMBDA") {
81
82 }else{
83 //std::cout << " CaloUtils/CaloLocalHadCoeffHelper/getDimensionId() -> Error! Unknown dimension '" << dimensionName << "'" << std::endl;
85 }
86 }
87
88 private:
89 static std::optional<CaloLocalHadCoeff::LocalHadDimension> parse_dim(const std::string &sLine);
90
91};
92
93
94
95#endif
#define x
virtual ~CaloLCCoeffHelper()
static bool Interpolate(const CaloLocalHadCoeff *m_data, const unsigned int n_area, std::vector< float > &x, CaloLocalHadCoeff::LocalHadCoeff &pars, const std::vector< int > &dim, double xfit=0.)
static void PrintData(CaloLocalHadCoeff *m_data, std::ostream &fout)
static std::optional< CaloLocalHadCoeff > InitDataFromFile(const char *fname)
static CaloLocalHadDefs::LocalHadDimensionId getDimensionId(const std::string &dimensionName)
static std::optional< CaloLocalHadCoeff::LocalHadDimension > parse_dim(const std::string &sLine)
static const CaloLocalHadCoeff::LocalHadArea * getAreaFromName(const CaloLocalHadCoeff *m_coeff, const std::string &sname, int &m_indx)
Definition of correction area.
Hold binned correction data for local hadronic calibration procedure.
std::vector< float > LocalHadCoeff
Correction parameters for one general bin.
static TFile * fout
Definition listroot.cxx:40
LocalHadDimensionId
enums to identify user dimensions id number DIMC_* - classification, DIMW_*-weighting,...