ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArTest
LArCalibTest
src
LArReadHadDMCoeffFile.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
LArCalibTest/LArReadHadDMCoeffFile.h
"
6
#include "GaudiKernel/MsgStream.h"
7
#include "
CaloIdentifier/CaloCell_ID.h
"
8
#include "
StoreGate/StoreGateSvc.h
"
9
#include "
PathResolver/PathResolver.h
"
10
11
12
LArReadHadDMCoeffFile::LArReadHadDMCoeffFile
(
const
std::string & name,
13
ISvcLocator * pSvcLocator) :
14
AthAlgorithm
(name,pSvcLocator) {
15
declareProperty
(
"HadDMCoeffFileName"
,
m_hadDMCoeffFileName
);
16
declareProperty
(
"CorrectionKey"
,
m_key
=
"HadDMCoeff"
);
17
18
m_data
= 0;
19
}
20
21
22
LArReadHadDMCoeffFile::~LArReadHadDMCoeffFile
() {}
23
24
25
StatusCode
LArReadHadDMCoeffFile::initialize
() {
26
ATH_MSG_INFO
(
"=== LArReadHadDMCoeffFile::initialize() ==="
);
27
ATH_CHECK
(
initDataFromFile
(
m_hadDMCoeffFileName
));
28
29
if
(
msgLvl
(MSG::DEBUG))
m_data
->PrintData();
30
31
ATH_CHECK
(
detStore
()->record(
m_data
,
m_key
) );
32
ATH_CHECK
(
detStore
()->setConst(
m_data
) );
33
return
StatusCode::SUCCESS;
34
}
35
36
37
StatusCode
LArReadHadDMCoeffFile::execute
(
const
EventContext&
/*ctx*/
)
38
{
39
return
StatusCode::SUCCESS;
40
}
41
42
StatusCode
LArReadHadDMCoeffFile::finalize
()
43
{
44
return
StatusCode::SUCCESS;
45
}
46
47
48
StatusCode
LArReadHadDMCoeffFile::initDataFromFile
(
const
std::string& hadDMCoeffFileName)
49
{
50
m_data
=
new
CaloHadDMCoeff
();
51
52
// Find the full path to filename
53
std::string
file
=
PathResolver::find_file
(hadDMCoeffFileName,
"DATAPATH"
);
54
ATH_MSG_INFO
(
"Reading file "
<<
file
);
55
56
FILE *fin = fopen(
file
.c_str(),
"r"
);
57
if
( fin == NULL) {
58
ATH_MSG_ERROR
(
"Can't open file "
<<
file
);
59
return
StatusCode::FAILURE;
60
}
61
62
char
line[1024], title[128];
63
int
offset = 0;
64
int
indx_zone = 0;
65
int
nFrac, nEner, nEta, nPars;
66
while
(fgets(line,1024,fin)) {
67
if
(line[0] ==
'#'
|| line[0] ==
'\n'
)
continue
;
68
int
izone, is_on;
69
if
(sscanf(line,
"%80d %80d %127s\n"
,&izone, &is_on, title)!=3 || indx_zone != izone) {
70
ATH_MSG_ERROR
(
"Format error #1."
);
71
fclose (fin);
72
return
StatusCode::FAILURE;
73
}
74
CaloHadDMCoeff::HadDMArea
dmArea;
75
dmArea.
m_is_on
= is_on;
76
dmArea.
m_indx
= indx_zone;
77
dmArea.
m_title
= title;
78
79
fgets(line,1024,fin);
80
if
(sscanf(line,
"%80d %80f %80f\n"
, &nFrac, &dmArea.
m_MinFrac
, &dmArea.
m_MaxFrac
)!=3 ||
81
nFrac<0 || nFrac>1000)
82
{
83
ATH_MSG_ERROR
(
"Format error #2."
);
84
fclose (fin);
85
return
StatusCode::FAILURE;
86
}
87
fgets(line,1024,fin);
88
if
(sscanf(line,
"%80d %80f %80f\n"
, &nEner, &dmArea.
m_MinEner
, &dmArea.
m_MaxEner
)!=3 ||
89
nEner < 0 || nEner > 1000)
90
{
91
ATH_MSG_ERROR
(
"Format error #3."
);
92
fclose (fin);
93
return
StatusCode::FAILURE;
94
}
95
fgets(line,1024,fin);
96
if
(sscanf(line,
"%80d %80f %80f\n"
, &nEta, &dmArea.
m_MinEta
, &dmArea.
m_MaxEta
)!=3 ||
97
nEta < 0 || nEta > 1000)
98
{
99
ATH_MSG_ERROR
(
"Format error #4."
);
100
fclose (fin);
101
return
StatusCode::FAILURE;
102
}
103
fgets(line,1024,fin);
104
if
(sscanf(line,
"%80d \n"
, &nPars)!=1 || nPars < 0 || nPars> 1000) {
105
ATH_MSG_ERROR
(
"Format error #5."
);
106
fclose (fin);
107
return
StatusCode::FAILURE;
108
}
109
dmArea.
m_nPars
= nPars;
110
111
for
(
int
i_frac=0; i_frac<nFrac; i_frac++){
112
int
iparset = 0, ifrac = 0, iener = 0, ieta = 0;
113
float
frac = 0, ener = 0,
eta
= 0;
114
for
(
int
i_ener=0; i_ener<nEner; i_ener++){
115
for
(
int
i_eta=0; i_eta<nEta; i_eta++){
116
fgets(line,1024,fin);
117
std::string sLine;
118
sLine = std::string(line);
119
std::istringstream es( sLine.c_str() );
120
121
if
( es >> iparset >> ifrac >> iener >> ieta >> frac >> ener >>
eta
) {
122
CaloHadDMCoeff::HadDMCoeff
pars;
123
pars.resize(nPars);
124
for
(
int
i=0; i<nPars; i++) {
125
if
(!(es >> pars[i]) ) {
126
ATH_MSG_ERROR
(
"Format error #6."
);
127
fclose (fin);
128
return
StatusCode::FAILURE;
129
}
130
}
131
if
(ifrac != i_frac || iener != i_ener || ieta != i_eta || (
int
)pars.size() != nPars){
132
ATH_MSG_ERROR
(
"Format error #7."
);
133
fclose (fin);
134
return
StatusCode::FAILURE;
135
}
136
137
if
(i_frac==0 && i_ener==0) dmArea.
m_EtaBins
.push_back(
eta
);
138
m_data
->addHadDMCoeff(pars);
139
pars.clear();
140
}
else
{
141
ATH_MSG_ERROR
(
"Format error #8."
);
142
}
143
}
// i_eta
144
if
(i_frac == 0) dmArea.
m_EnerBins
.push_back(ener);
145
}
// i_ener
146
dmArea.
m_FracBins
.push_back(frac);
147
}
148
dmArea.
m_offset
= offset;
149
// std::cout << "indx_zone: " << indx_zone << " offset:" << offset << std::endl;
150
m_data
->addHadDMArea(dmArea);
151
offset += nFrac*nEner*nEta;
// ofset for next DM area
152
indx_zone++;
153
}
154
fclose(fin);
155
156
return
StatusCode::SUCCESS;
157
}
eta
Scalar eta() const
pseudorapidity method
Definition
AmgMatrixBasePlugin.h:83
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
CaloCell_ID.h
LArReadHadDMCoeffFile.h
PathResolver.h
StoreGateSvc.h
AthAlgorithm::AthAlgorithm
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
AthAlgorithm.cxx:10
AthCommonAlgorithm< Gaudi::Algorithm >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
AthCommonAlgorithm< Gaudi::Algorithm >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthCommonDataStore.h:95
AthCommonAlgorithm< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition
AthCommonMsg.h:30
CaloHadDMCoeff
Definition
CaloHadDMCoeff.h:23
CaloHadDMCoeff::HadDMCoeff
std::vector< float > HadDMCoeff
Definition
CaloHadDMCoeff.h:44
LArReadHadDMCoeffFile::execute
StatusCode execute(const EventContext &ctx)
Execute method.
Definition
LArReadHadDMCoeffFile.cxx:37
LArReadHadDMCoeffFile::~LArReadHadDMCoeffFile
~LArReadHadDMCoeffFile()
Definition
LArReadHadDMCoeffFile.cxx:22
LArReadHadDMCoeffFile::m_key
std::string m_key
Definition
LArReadHadDMCoeffFile.h:27
LArReadHadDMCoeffFile::LArReadHadDMCoeffFile
LArReadHadDMCoeffFile(const std::string &name, ISvcLocator *pSvcLocator)
Definition
LArReadHadDMCoeffFile.cxx:12
LArReadHadDMCoeffFile::initialize
StatusCode initialize()
Definition
LArReadHadDMCoeffFile.cxx:25
LArReadHadDMCoeffFile::m_hadDMCoeffFileName
std::string m_hadDMCoeffFileName
Definition
LArReadHadDMCoeffFile.h:28
LArReadHadDMCoeffFile::m_data
CaloHadDMCoeff * m_data
Definition
LArReadHadDMCoeffFile.h:30
LArReadHadDMCoeffFile::finalize
StatusCode finalize()
Definition
LArReadHadDMCoeffFile.cxx:42
LArReadHadDMCoeffFile::initDataFromFile
StatusCode initDataFromFile(const std::string &hadDMCoeffFileName)
Definition
LArReadHadDMCoeffFile.cxx:48
PathResolver::find_file
static std::string find_file(const std::string &logical_file_name, const std::string &search_path)
Definition
PathResolver.cxx:220
CaloHadDMCoeff::HadDMArea
Definition
CaloHadDMCoeff.h:25
CaloHadDMCoeff::HadDMArea::m_is_on
int m_is_on
Definition
CaloHadDMCoeff.h:28
CaloHadDMCoeff::HadDMArea::m_MaxEta
float m_MaxEta
Definition
CaloHadDMCoeff.h:36
CaloHadDMCoeff::HadDMArea::m_MaxEner
float m_MaxEner
Definition
CaloHadDMCoeff.h:33
CaloHadDMCoeff::HadDMArea::m_FracBins
std::vector< float > m_FracBins
Definition
CaloHadDMCoeff.h:31
CaloHadDMCoeff::HadDMArea::m_nPars
int m_nPars
Definition
CaloHadDMCoeff.h:38
CaloHadDMCoeff::HadDMArea::m_offset
int m_offset
Definition
CaloHadDMCoeff.h:39
CaloHadDMCoeff::HadDMArea::m_MinEta
float m_MinEta
Definition
CaloHadDMCoeff.h:35
CaloHadDMCoeff::HadDMArea::m_MinEner
float m_MinEner
Definition
CaloHadDMCoeff.h:32
CaloHadDMCoeff::HadDMArea::m_MinFrac
float m_MinFrac
Definition
CaloHadDMCoeff.h:29
CaloHadDMCoeff::HadDMArea::m_EnerBins
std::vector< float > m_EnerBins
Definition
CaloHadDMCoeff.h:34
CaloHadDMCoeff::HadDMArea::m_MaxFrac
float m_MaxFrac
Definition
CaloHadDMCoeff.h:30
CaloHadDMCoeff::HadDMArea::m_title
std::string m_title
Definition
CaloHadDMCoeff.h:26
CaloHadDMCoeff::HadDMArea::m_EtaBins
std::vector< float > m_EtaBins
Definition
CaloHadDMCoeff.h:37
CaloHadDMCoeff::HadDMArea::m_indx
int m_indx
Definition
CaloHadDMCoeff.h:27
file
TFile * file
Definition
tile_monitor.h:29
Generated on
for ATLAS Offline Software by
1.17.0