ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
TileCalorimeter
TileConditions
src
TileInfo.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
/**************************************************************************
6
Filename : TileInfo.cxx
7
Author : F. Merritt
8
Created : May, 2002
9
Last Modified : April 2006 - F Spano' (add covariance matrix for coherent
10
noise)
11
Version 00-01-22
12
13
:DESCRIPTION: see header file.
14
****************************************************************************/
15
//Gaudi includes
16
#include "GaudiKernel/MsgStream.h"
17
#include "GaudiKernel/Bootstrap.h"
18
#include "GaudiKernel/ISvcLocator.h"
19
#include "GaudiKernel/IMessageSvc.h"
20
#include "GaudiKernel/INTupleSvc.h"
21
#include "GaudiKernel/IDataProviderSvc.h"
22
#include "GaudiKernel/SmartDataPtr.h"
23
#include "
StoreGate/StoreGateSvc.h
"
24
25
#include "
TileConditions/TileInfo.h
"
26
#include "
TileConditions/TileCablingService.h
"
27
#include "
TileConditions/TilePulseShapes.h
"
28
#include "
TileConditions/TileWienerFilterWeights.h
"
29
30
#include "
TileCalibBlobObjs/TileCalibDrawerFlt.h
"
31
#include "
TileCalibBlobObjs/TileCalibUtils.h
"
32
33
#include "
CaloIdentifier/TileID.h
"
34
#include "
CaloIdentifier/TileTBID.h
"
35
#include "
TileIdentifier/TileHWID.h
"
36
#include "
TileIdentifier/TileFragHash.h
"
37
#include "
AthenaKernel/errorcheck.h
"
38
#include "GaudiKernel/IClassIDSvc.h"
39
40
#include <cmath>
41
#include <fstream>
42
#include <iostream>
43
#include <iomanip>
44
45
46
//
47
//_____________________________________________________________________________
48
TileInfo::TileInfo
()
49
:
m_tileID
(nullptr)
50
,
m_tileHWID
(nullptr)
51
,
m_tileTBID
(nullptr)
52
,
m_cabling
(nullptr)
53
,
m_ADCmax
(0)
54
,
m_ADCmaskValue
(0)
55
,
m_nSamples
(0)
56
,
m_iTrigSample
(0)
57
,
m_tileNoise
(0)
58
,
m_tileCoherNoise
(0)
59
,
m_tileZeroSuppress
(0)
60
,
m_thresholdRawChannel
(0)
61
,
m_thresholdDigits
(0)
62
,
m_ttL1Calib
(0)
63
,
m_ttL1NoiseSigma
(0)
64
,
m_ttL1Thresh
(0)
65
,
m_ttL1Ped
(0)
66
,
m_ttL1Max
(0)
67
,
m_MuRcvCalib
(0)
68
,
m_MuRcvNoiseSigma
(0)
69
,
m_MuRcvThresh
(0)
70
,
m_MuRcvPed
(0)
71
,
m_MuRcvMax
(0)
72
,
m_muL1Calib
(0)
73
,
m_muL1NoiseSigma
(0)
74
,
m_muL1Thresh
(0)
75
,
m_muL1Ped
(0)
76
,
m_muL1Max
(0)
77
,
m_mbtsL1Calib
(0)
78
,
m_mbtsL1NoiseSigma
(0)
79
,
m_mbtsL1Thresh
(0)
80
,
m_mbtsL1Ped
(0)
81
,
m_mbtsL1Max
(0)
82
,
m_ttL1CosmicsGain
(0)
83
,
m_ttL1CosmicsThresh
(0)
84
,
m_digitsNBinsHi
(0)
85
,
m_digitsNBinsLo
(0)
86
,
m_digitsTime0BinHi
(0)
87
,
m_digitsTime0BinLo
(0)
88
,
m_digitsBinsPerXHi
(0)
89
,
m_digitsBinsPerXLo
(0)
90
,
m_TTL1NBins
(0)
91
,
m_TTL1Time0Bin
(0)
92
,
m_TTL1BinsPerX
(0)
93
,
m_MuRcvNBins
(0)
94
,
m_MuRcvTime0Bin
(0)
95
,
m_MuRcvBinsPerX
(0)
96
,
m_MuL1NBins
(0)
97
,
m_MuL1Time0Bin
(0)
98
,
m_MuL1BinsPerX
(0)
99
,
m_pulseShapes
(nullptr)
100
,
m_WienerFilterWeights
(nullptr)
101
,
m_tileCablingSvc
(
"TileCablingSvc"
,
"TileInfo"
)
102
{
103
//=== initialize TestBeam defaults
104
for
(
int
i=0; i<32; ++i)
105
m_emscaleTB
[i] = 1.0;
106
107
for
(
int
i=0; i<32; ++i)
108
m_mev2adcTB
[i] = 1.0;
109
110
// scale factors from ADC HF noise to Opt filter noise calculated by Luca Fiorini
111
m_noiseScaleFactor
[0] = 1.0;
// no scale at all
112
m_noiseScaleFactor
[1] = 1.14;
// opt filter without iterations
113
m_noiseScaleFactor
[2] = 1.28;
// opt filter with iterations
114
m_noiseScaleFactor
[3] = 1.27;
// fit method
115
116
m_noiseScaleIndex
= 1;
// by default noise for opt filter without iterations
117
}
118
119
120
//
121
//_____________________________________________________________________________
122
TileInfo::~TileInfo
()
123
{
124
int
sizepart=
m_decoCovaria
.size();
125
for
(
int
i=0; i<sizepart; ++i){
126
int
sizemodu=(
m_decoCovaria
[i]).
size
();
127
for
(
int
j=0; j<sizemodu; ++j){
128
int
sizegain=(
m_decoCovaria
[i][j]).
size
();
129
for
(
int
k=0; k<sizegain; ++k){
130
if
(
m_decoCovaria
[i][j][k])
delete
m_decoCovaria
[i][j][k];
131
}
132
m_decoCovaria
[i][j].clear();
133
}
134
m_decoCovaria
[i].clear();
135
}
136
m_decoCovaria
.clear();
137
138
}
139
140
141
//
142
//_____________________________________________________________________________
143
StatusCode
144
TileInfo::initialize
()
145
{
146
MsgStream log(
msgSvc
(),
"TileInfo"
);
147
MSG::Level logLevel = log.level();
148
bool
debug
= (logLevel <= MSG::DEBUG);
149
150
if
(
debug
) log<<MSG::DEBUG<<
"In TileInfo::initialize..."
<<
endmsg
;
151
152
//=== get TileCablingSvc
153
StatusCode
sc
=
m_tileCablingSvc
.retrieve();
154
if
(
sc
.isFailure()){
155
log << MSG::ERROR
156
<<
"Unable to retrieve "
<<
m_tileCablingSvc
<<
endmsg
;
157
return
StatusCode::FAILURE;
158
}
159
//=== cache pointers to cabling helpers
160
m_cabling
=
m_tileCablingSvc
->cablingService();
161
if
(!
m_cabling
){
162
log << MSG::ERROR
163
<<
"Pointer to TileCablingService is zero: "
<<
m_cabling
<<
endmsg
;
164
return
StatusCode::FAILURE;
165
166
}
167
m_tileID
=
m_cabling
->getTileID();
168
m_tileTBID
=
m_cabling
->getTileTBID();
169
m_tileHWID
=
m_cabling
->getTileHWID();
170
171
172
//=== Initialize TilePulseShapes
173
if
(
m_pulseShapes
)
174
m_pulseShapes
->load(log);
175
176
//=== Read WienerFilter Weights in TileInfoLoader.cxx
177
if
(
m_WienerFilterWeights
) {
178
m_WienerFilterWeights
->loadWeights(log);
179
180
if
(!
m_WienerFilterWeights
->loaded()) {
181
log << MSG::ERROR
182
<<
"Unable to load WienerFilter weights"
<<
endmsg
;
183
return
StatusCode::FAILURE;
184
}
185
}
186
187
if
(
debug
) log << MSG::DEBUG <<
" TileInfo initialization completed. "
<<
endmsg
;
188
return
StatusCode::SUCCESS;
189
}
190
191
//
192
//_____________________________________________________________________________
193
IMessageSvc*
194
TileInfo::msgSvc
()
const
195
{
196
return
Athena::getMessageSvc
();
197
}
198
199
//_____________________________________________________________________________
200
const
TMatrixD*
201
TileInfo::DecoCovariance
(
int
ros,
int
drawer,
int
hilo)
const
{
202
203
int
part(0);
204
switch
(ros) {
205
case
TileHWID::EXTBAR_POS
: part=0;
break
;
// EBA
206
case
TileHWID::BARREL_POS
: part=1;
break
;
// LBA
207
case
TileHWID::BARREL_NEG
: part=2;
break
;
// LBC
208
case
TileHWID::EXTBAR_NEG
: part=3;
break
;
// EBC
209
}
210
211
int
gain = (hilo) ? 0 : 1;
212
213
return
m_decoCovaria
[part][drawer][gain];
214
}
215
216
218
// Return shape vector of a TTL1 signal, to multiply by (summed) TTL1 Amplitude
219
// to construct a TTL1 object. phase is a phase shift, default=0.
220
//
221
//_____________________________________________________________________________
222
void
TileInfo::ttl1Shape
(
const
int
nsamp,
const
int
itrig,
const
double
phase,std::vector<double> &ttl1shape)
const
{
223
224
//ttl1shape.resize(nsamp, 0.); // assume that resize already done in calling function
225
for
(
int
i=0; i<nsamp; ++i) {
226
int
j =
m_TTL1Time0Bin
+ (i-itrig)*
m_TTL1BinsPerX
+(
int
)(phase*(
m_TTL1BinsPerX
*(1./25.0)));
227
if
(j<0) j = 0;
228
if
(j>=
m_TTL1NBins
) j =
m_TTL1NBins
-1;
229
ttl1shape[i] =
m_TTL1FullShape
[j];
230
}
231
#ifndef NDEBUG
232
MsgStream log(
msgSvc
(),
"TileInfo"
);
233
if
(log.level() <= MSG::DEBUG){
234
log << MSG::DEBUG <<
" Shaping profile at beam crossings: nsamp = "
<< nsamp <<
", itrig = "
<< itrig <<
endmsg
;
235
int
jc = 0;
236
for
(
int
i=0; i<nsamp; i++) {
237
if
(jc==0) log << MSG::DEBUG <<
" bin = "
<< i <<
" Shape factor ="
;
238
log << MSG::DEBUG << std::setw(8) << std::setprecision(4) << ttl1shape[i] <<
" "
;
239
if
(++jc==5) {
240
log << MSG::DEBUG <<
endmsg
;
241
jc=0;
242
}
243
}
244
log << MSG::DEBUG <<
endmsg
;
245
}
246
#endif
247
}
248
249
// Returns the shape vector of the Muon Receiver Board input signal, to multiply by the channel amplitude
250
// to construct a Muon Receiver Board object. The phase is a phase shift (default=0).
251
//
252
//_____________________________________________________________________________
253
254
void
TileInfo::muRcvShape
(
const
int
nsamp,
const
int
itrig,
const
double
phase,std::vector<double> &murcvshape)
const
{
255
256
for
(
int
i=0; i<nsamp; ++i) {
257
int
j =
m_MuRcvTime0Bin
+ (i-itrig)*
m_MuRcvBinsPerX
+(
int
)(phase*(
m_MuRcvBinsPerX
*(1./25.0)));
258
if
(j<0) j = 0;
259
if
(j>=
m_MuRcvNBins
) j =
m_MuRcvNBins
-1;
260
murcvshape[i] =
m_MuRcvFullShape
[j];
261
}
262
263
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
TileTBID.h
errorcheck.h
Helpers for checking error return status codes and reporting errors.
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
debug
const bool debug
Definition
MakeUncertaintyPlots.cxx:53
StoreGateSvc.h
size
size_t size() const
Number of registered mappings.
TileCablingService.h
TileCalibDrawerFlt.h
TileCalibUtils.h
TileFragHash.h
TileHWID.h
TileID.h
TileInfo.h
TilePulseShapes.h
TileWienerFilterWeights.h
TileHWID::BARREL_POS
@ BARREL_POS
Definition
TileHWID.h:68
TileHWID::EXTBAR_NEG
@ EXTBAR_NEG
Definition
TileHWID.h:71
TileHWID::BARREL_NEG
@ BARREL_NEG
Definition
TileHWID.h:69
TileHWID::EXTBAR_POS
@ EXTBAR_POS
Definition
TileHWID.h:70
TileInfo::m_iTrigSample
int m_iTrigSample
Definition
TileInfo.h:299
TileInfo::m_mbtsL1Thresh
double m_mbtsL1Thresh
Definition
TileInfo.h:337
TileInfo::initialize
StatusCode initialize()
Initialization of the TileInfo object.
Definition
TileInfo.cxx:144
TileInfo::m_emscaleTB
double m_emscaleTB[32]
Definition
TileInfo.h:379
TileInfo::m_tileTBID
const TileTBID * m_tileTBID
Definition
TileInfo.h:293
TileInfo::m_tileCablingSvc
ServiceHandle< TileCablingSvc > m_tileCablingSvc
Definition
TileInfo.h:382
TileInfo::m_MuL1BinsPerX
int m_MuL1BinsPerX
Definition
TileInfo.h:373
TileInfo::m_MuRcvFullShape
std::vector< double > m_MuRcvFullShape
Definition
TileInfo.h:364
TileInfo::m_digitsNBinsLo
int m_digitsNBinsLo
Definition
TileInfo.h:351
TileInfo::m_muL1Max
double m_muL1Max
Definition
TileInfo.h:333
TileInfo::m_decoCovaria
std::vector< std::vector< std::vector< TMatrixD * > > > m_decoCovaria
Definition
TileInfo.h:387
TileInfo::TileInfo
TileInfo()
Definition
TileInfo.cxx:48
TileInfo::m_mbtsL1Calib
double m_mbtsL1Calib
Definition
TileInfo.h:335
TileInfo::m_nSamples
int m_nSamples
Definition
TileInfo.h:298
TileInfo::m_TTL1BinsPerX
int m_TTL1BinsPerX
Definition
TileInfo.h:361
TileInfo::m_ttL1NoiseSigma
double m_ttL1NoiseSigma
Definition
TileInfo.h:318
TileInfo::m_thresholdDigits
double m_thresholdDigits
Definition
TileInfo.h:315
TileInfo::m_ttL1Calib
double m_ttL1Calib
Definition
TileInfo.h:317
TileInfo::m_MuRcvMax
double m_MuRcvMax
Definition
TileInfo.h:327
TileInfo::m_tileZeroSuppress
bool m_tileZeroSuppress
Definition
TileInfo.h:313
TileInfo::msgSvc
IMessageSvc * msgSvc() const
Returns a handle to the MessageSvc.
Definition
TileInfo.cxx:194
TileInfo::m_mev2adcTB
double m_mev2adcTB[32]
Definition
TileInfo.h:380
TileInfo::m_ttL1Thresh
double m_ttL1Thresh
Definition
TileInfo.h:319
TileInfo::m_tileCoherNoise
bool m_tileCoherNoise
Definition
TileInfo.h:312
TileInfo::m_mbtsL1Ped
double m_mbtsL1Ped
Definition
TileInfo.h:338
TileInfo::m_WienerFilterWeights
TileWienerFilterWeights * m_WienerFilterWeights
Definition
TileInfo.h:377
TileInfo::m_TTL1FullShape
std::vector< double > m_TTL1FullShape
Definition
TileInfo.h:358
TileInfo::m_digitsBinsPerXHi
int m_digitsBinsPerXHi
Definition
TileInfo.h:354
TileInfo::DecoCovariance
const TMatrixD * DecoCovariance(int ros, int drawer, int hilo) const
Returns the decomposed covariance matrix.
Definition
TileInfo.cxx:201
TileInfo::m_mbtsL1Max
double m_mbtsL1Max
Definition
TileInfo.h:339
TileInfo::m_mbtsL1NoiseSigma
double m_mbtsL1NoiseSigma
Definition
TileInfo.h:336
TileInfo::m_muL1Calib
double m_muL1Calib
Definition
TileInfo.h:329
TileInfo::m_muL1Ped
double m_muL1Ped
Definition
TileInfo.h:332
TileInfo::m_ttL1CosmicsGain
double m_ttL1CosmicsGain
Definition
TileInfo.h:341
TileInfo::~TileInfo
~TileInfo()
Definition
TileInfo.cxx:122
TileInfo::m_MuL1Time0Bin
int m_MuL1Time0Bin
Definition
TileInfo.h:372
TileInfo::m_MuRcvPed
double m_MuRcvPed
Definition
TileInfo.h:326
TileInfo::muRcvShape
void muRcvShape(const int nsamp, const int itrig, const double phase, std::vector< double > &murcvshape) const
Definition
TileInfo.cxx:254
TileInfo::m_noiseScaleIndex
int m_noiseScaleIndex
Definition
TileInfo.h:309
TileInfo::m_muL1Thresh
double m_muL1Thresh
Definition
TileInfo.h:331
TileInfo::m_ADCmaskValue
int m_ADCmaskValue
Definition
TileInfo.h:297
TileInfo::m_thresholdRawChannel
double m_thresholdRawChannel
Definition
TileInfo.h:314
TileInfo::m_cabling
const TileCablingService * m_cabling
Definition
TileInfo.h:294
TileInfo::m_ADCmax
int m_ADCmax
Definition
TileInfo.h:296
TileInfo::m_MuRcvCalib
double m_MuRcvCalib
Definition
TileInfo.h:323
TileInfo::m_ttL1CosmicsThresh
double m_ttL1CosmicsThresh
Definition
TileInfo.h:342
TileInfo::m_digitsTime0BinHi
int m_digitsTime0BinHi
Definition
TileInfo.h:352
TileInfo::m_digitsTime0BinLo
int m_digitsTime0BinLo
Definition
TileInfo.h:353
TileInfo::m_MuRcvNBins
int m_MuRcvNBins
Definition
TileInfo.h:365
TileInfo::m_noiseScaleFactor
double m_noiseScaleFactor[4]
scale factor from digital noise to Opt Filter noise for various opt filter algoritms 0 - reserved 1 -...
Definition
TileInfo.h:308
TileInfo::m_ttL1Ped
double m_ttL1Ped
Definition
TileInfo.h:320
TileInfo::m_MuRcvThresh
double m_MuRcvThresh
Definition
TileInfo.h:325
TileInfo::m_pulseShapes
TilePulseShapes * m_pulseShapes
Definition
TileInfo.h:375
TileInfo::m_TTL1Time0Bin
int m_TTL1Time0Bin
Definition
TileInfo.h:360
TileInfo::m_MuL1NBins
int m_MuL1NBins
Definition
TileInfo.h:371
TileInfo::m_tileHWID
const TileHWID * m_tileHWID
Definition
TileInfo.h:292
TileInfo::m_tileNoise
bool m_tileNoise
Definition
TileInfo.h:311
TileInfo::m_tileID
const TileID * m_tileID
Definition
TileInfo.h:291
TileInfo::m_muL1NoiseSigma
double m_muL1NoiseSigma
Definition
TileInfo.h:330
TileInfo::m_ttL1Max
double m_ttL1Max
Definition
TileInfo.h:321
TileInfo::m_MuRcvTime0Bin
int m_MuRcvTime0Bin
Definition
TileInfo.h:366
TileInfo::m_digitsNBinsHi
int m_digitsNBinsHi
Definition
TileInfo.h:350
TileInfo::m_TTL1NBins
int m_TTL1NBins
Definition
TileInfo.h:359
TileInfo::m_digitsBinsPerXLo
int m_digitsBinsPerXLo
Definition
TileInfo.h:355
TileInfo::m_MuRcvBinsPerX
int m_MuRcvBinsPerX
Definition
TileInfo.h:367
TileInfo::m_MuRcvNoiseSigma
double m_MuRcvNoiseSigma
Definition
TileInfo.h:324
TileInfo::ttl1Shape
const std::vector< double > & ttl1Shape() const
Return bunch-X TTL1 shape vector.
Definition
TileInfo.h:204
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition
getMessageSvc.cxx:20
Generated on
for ATLAS Offline Software by
1.17.0