![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <TileInfoLoader.h>
Definition at line 53 of file TileInfoLoader.h.
◆ TileInfoLoader() [1/2]
TileInfoLoader::TileInfoLoader |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~TileInfoLoader()
TileInfoLoader::~TileInfoLoader |
( |
| ) |
|
|
virtual |
◆ TileInfoLoader() [2/2]
◆ buildCovMatrix()
void TileInfoLoader::buildCovMatrix |
( |
TileInfo & |
info | ) |
|
|
private |
Definition at line 633 of file TileInfoLoader.cxx.
652 info.m_decoCovaria.push_back(std::vector<std::vector<TMatrixD*> >());
654 for (
int modu = 0; modu < 64; ++modu) {
657 info.m_decoCovaria[
part].push_back(std::vector<TMatrixD*>());
669 if (
gain == 0) sprintf(gainstr,
"Hi");
670 else sprintf(gainstr,
"Lo");
681 std::ifstream cov_file(
file.c_str());
683 if (!cov_file.is_open()) {
684 ATH_MSG_WARNING(
"Can't read input files, setting tileCoherNoise flag to FALSE" );
686 info.m_tileCoherNoise =
false;
690 ATH_MSG_DEBUG(
" **** Start of Decomposed Covariance Matrix Read Out" );
692 if (std::getline(cov_file,
line)) {
698 if (std::getline(cov_file,
line)) {
699 if (sscanf(
line.c_str(),
"%80d", &dima) == 1)
704 TMatrixD* pDecoCova =
new TMatrixD(dima, dima);
709 const char* TOKENS = {
" \t\n" };
713 while (std::getline(cov_file,
line) &&
row < dima) {
719 if (*
buff ==
'!' || *
buff ==
'*')
continue;
722 word = strtok_r(
buff, TOKENS, &saveptr);
724 word = strtok_r(
nullptr, TOKENS, &saveptr);
726 double pippo = (word) ?
atof(word) : 0.0;
736 info.m_decoCovaria[
part][modu].push_back(pDecoCova);
◆ buildDigitsShapesHiLo()
StatusCode TileInfoLoader::buildDigitsShapesHiLo |
( |
TileInfo & |
info | ) |
|
|
private |
Definition at line 321 of file TileInfoLoader.cxx.
332 ATH_MSG_DEBUG(
" **** Start of High gain Pulse shapes in TileInfo " );
339 if (file_hi.empty()) {
341 return StatusCode::FAILURE;
344 std::ifstream shape_file_hi(file_hi.c_str());
345 if (!shape_file_hi.is_open()) {
347 return StatusCode::FAILURE;
350 if (std::getline(shape_file_hi,
line)) {
354 if (std::getline(shape_file_hi,
line)) {
355 if (sscanf(
line.c_str(),
"%80d", &
info.m_digitsNBinsHi) == 1)
356 ATH_MSG_DEBUG( std::setw(3) <<
info.m_digitsNBinsHi <<
" number of bins in shaping function" );
359 if (std::getline(shape_file_hi,
line)) {
360 if (sscanf(
line.c_str(),
"%80d", &
info.m_digitsTime0BinHi) == 1)
361 ATH_MSG_DEBUG( std::setw(3) <<
info.m_digitsTime0BinHi <<
" index of in-time bin" );
364 if (std::getline(shape_file_hi,
line)) {
365 if (sscanf(
line.c_str(),
"%80d", &
info.m_digitsBinsPerXHi) == 1)
366 ATH_MSG_DEBUG( std::setw(3) <<
info.m_digitsBinsPerXHi <<
" bins per beam crossing" );
370 info.m_digitsFullShapeHi.resize(
info.m_digitsNBinsHi, 0.);
372 while (std::getline(shape_file_hi,
line) && jt <
info.m_digitsFullShapeHi.size()) {
373 int nread = sscanf(
line.c_str(),
"%80lf %80lf", &It0, &dbuff);
374 if (nread > 1)
info.m_digitsFullShapeHi[jt++] = dbuff;
378 shape_file_hi.close();
381 ATH_MSG_DEBUG(
" **** Start of Low gain Pulse shapes in TileInfo " );
388 if (file_lo.empty()) {
390 return StatusCode::FAILURE;
393 std::ifstream shape_file_lo(file_lo.c_str());
394 if (!shape_file_lo.is_open()) {
396 return StatusCode::FAILURE;
399 if (std::getline(shape_file_lo,
line)) {
403 if (std::getline(shape_file_lo,
line)) {
404 if (sscanf(
line.c_str(),
"%80d", &
info.m_digitsNBinsLo) == 1)
405 ATH_MSG_DEBUG( std::setw(3) <<
info.m_digitsNBinsLo <<
" number of bins in shaping function" );
408 if (std::getline(shape_file_lo,
line)) {
409 if (sscanf(
line.c_str(),
"%80d", &
info.m_digitsTime0BinLo) == 1)
410 ATH_MSG_DEBUG( std::setw(3) <<
info.m_digitsTime0BinLo <<
" index of in-time bin" );
413 if (std::getline(shape_file_lo,
line)) {
414 if (sscanf(
line.c_str(),
"%80d", &
info.m_digitsBinsPerXLo) == 1)
415 ATH_MSG_DEBUG( std::setw(3) <<
info.m_digitsBinsPerXLo <<
" bins per beam crossing" );
419 info.m_digitsFullShapeLo.resize(
info.m_digitsNBinsLo, 0.);
421 while (std::getline(shape_file_lo,
line) && jt <
info.m_digitsFullShapeLo.size()) {
422 int nread = sscanf(
line.c_str(),
"%80lf %80lf", &It0, &dbuff);
423 if (nread > 1)
info.m_digitsFullShapeLo[jt++] = dbuff;
427 shape_file_lo.close();
434 for (
int i = 0;
i <
info.m_digitsNBinsHi;
i++) {
435 if (
info.m_digitsFullShapeHi[
i] > peak_hi) {
436 peak_hi =
info.m_digitsFullShapeHi[
i];
441 for (
int i = 0;
i <
info.m_digitsNBinsLo;
i++) {
442 if (
info.m_digitsFullShapeLo[
i] > peak_lo) {
443 peak_lo =
info.m_digitsFullShapeLo[
i];
450 <<
" at bin = " << it0_hi
451 <<
", info.m_digitsTime0BinHi = " <<
info.m_digitsTime0BinHi <<
endmsg;
454 <<
" at bin = " << it0_lo
455 <<
", info.m_digitsTime0BinLow = " <<
info.m_digitsTime0BinLo <<
endmsg;
459 info.m_digitsShapeHi.resize(
info.m_nSamples, 0.);
460 info.m_digitsShapeLo.resize(
info.m_nSamples, 0.);
463 for (
int i = 0;
i <
info.m_nSamples;
i++) {
464 int j =
info.m_digitsTime0BinHi + (
i -
info.m_iTrigSample) *
info.m_digitsBinsPerXHi;
466 if (j >
info.m_digitsNBinsHi) j =
info.m_digitsNBinsHi;
467 info.m_digitsShapeHi[
i] =
info.m_digitsFullShapeHi[j];
468 int k =
info.m_digitsTime0BinLo + (
i -
info.m_iTrigSample) *
info.m_digitsBinsPerXLo;
470 if (
k >
info.m_digitsNBinsLo)
k =
info.m_digitsNBinsLo;
471 info.m_digitsShapeLo[
i] =
info.m_digitsFullShapeLo[
k];
476 <<
" Number of samples = " <<
info.m_nSamples
477 <<
", Sample at Time 0 = " <<
info.m_iTrigSample <<
endmsg;
480 for (
int i = 0;
i <
info.m_nSamples;
i++) {
482 << std::setiosflags(std::ios::showpoint) << std::setw(9) << std::setprecision(5)
483 <<
info.m_digitsShapeHi[
i];
489 for (
int i = 0;
i <
info.m_nSamples;
i++) {
491 << std::setiosflags(std::ios::showpoint) << std::setw(9) << std::setprecision(5)
492 <<
info.m_digitsShapeLo[
i];
499 info.m_digitsDerivativeHi.resize(
info.m_digitsNBinsHi, 0.);
500 info.m_digitsDerivativeLo.resize(
info.m_digitsNBinsLo, 0.);
501 for (
int i = 1;
i <
info.m_digitsNBinsHi - 1;
i++) {
502 info.m_digitsDerivativeHi[
i] = (
info.m_digitsFullShapeHi[
i + 1]
503 -
info.m_digitsFullShapeHi[
i - 1]) / 2;
506 for (
int i = 1;
i <
info.m_digitsNBinsLo - 1;
i++) {
507 info.m_digitsDerivativeLo[
i] = (
info.m_digitsFullShapeLo[
i + 1]
508 -
info.m_digitsFullShapeLo[
i - 1]) / 2;
511 return StatusCode::SUCCESS;
◆ buildTTL1Shapes()
StatusCode TileInfoLoader::buildTTL1Shapes |
( |
TileInfo & |
info, |
|
|
const std::string & |
ShapeFile, |
|
|
int & |
NBins, |
|
|
int & |
Time0Bin, |
|
|
int & |
BinsPerX, |
|
|
std::vector< double > & |
FullShape, |
|
|
std::vector< double > & |
Shape |
|
) |
| |
|
private |
Definition at line 515 of file TileInfoLoader.cxx.
529 return StatusCode::FAILURE;
532 std::ifstream shape_file(
file.c_str());
533 if (!shape_file.is_open()) {
535 return StatusCode::FAILURE;
542 if (std::getline(shape_file,
line)) {
547 if (std::getline(shape_file,
line)) {
548 if (sscanf(
line.c_str(),
"%80d", &NBins) == 1)
549 ATH_MSG_DEBUG( std::setw(3) << NBins <<
" number of bins in shaping function" );
552 if (std::getline(shape_file,
line)) {
553 if (sscanf(
line.c_str(),
"%80d", &Time0Bin) == 1)
554 ATH_MSG_DEBUG( std::setw(3) << Time0Bin <<
" index of in-time bin" );
557 if (std::getline(shape_file,
line)) {
558 if (sscanf(
line.c_str(),
"%80d", &BinsPerX) == 1)
563 FullShape.resize(NBins, 0.);
565 while (std::getline(shape_file,
line) && jt < FullShape.size()) {
566 int nread = sscanf(
line.c_str(),
"%80lf %80lf", &It0, &dbuff);
567 if (nread > 1) FullShape[jt++] = dbuff;
574 int nline = (NBins - 1) / 8 + 1;
576 for (
int jline = 0; jline < nline; jline++) {
579 if (
j2 > NBins)
j2 = NBins;
582 for (
int i =
j1;
i <
j2;
i++) {
584 << std::setiosflags(std::ios::showpoint) << std::setw(9) << std::setprecision(5)
594 for (
int i = 0;
i < NBins;
i++) {
595 if (FullShape[
i] > peak) {
602 <<
" at bin = " << it0
603 <<
", Time0Bin = " << Time0Bin );
607 Shape.resize(
info.m_nSamples, 0.);
608 for (
int i = 0;
i <
info.m_nSamples;
i++) {
609 int j = Time0Bin + (
i -
info.m_iTrigSample) * BinsPerX;
611 if (j > NBins) j = NBins;
612 Shape[
i] = FullShape[j];
617 <<
" Number of samples = " <<
info.m_nSamples
618 <<
", Sample at Time 0 = " <<
info.m_iTrigSample <<
endmsg;
621 for (
int i = 0;
i <
info.m_nSamples;
i++) {
623 << std::setiosflags(std::ios::showpoint) << std::setw(9) << std::setprecision(5)
629 return StatusCode::SUCCESS;
◆ finalize()
StatusCode TileInfoLoader::finalize |
( |
| ) |
|
|
overridevirtual |
◆ initialize()
StatusCode TileInfoLoader::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 183 of file TileInfoLoader.cxx.
188 auto info = std::make_unique<TileInfo>();
231 if(service(
"GeoModelSvc", geoModel).isFailure()) {
236 int geo = atlasVersion.compare(0,9,
"ATLAS-GEO");
237 int run1 = atlasVersion.compare(0,8,
"ATLAS-R1");
238 int ibl = atlasVersion.compare(0,9,
"ATLAS-IBL");
239 int run2 = atlasVersion.compare(0,8,
"ATLAS-R2");
240 int comm = atlasVersion.compare(0,10,
"ATLAS-Comm");
241 int upg = atlasVersion.compare(0,7,
"ATLAS-P") ;
244 bool nothing_found = std::none_of(comparisons.begin(), comparisons.end(), [](
int zeroMeansFound){return zeroMeansFound==0;});
251 if (
geo == 0 ||
comm == 0 || ibl == 0 ||
run1 == 0 ||
run2 == 0 || upg == 0 || RUN2) {
252 int pos = (atlasVersion.substr(9)).
find(
'-');
253 if(
run1 == 0 ||
run2 == 0)
pos = (atlasVersion.substr(13)).
find(
'-') + 4;
254 std::string geoVersion = atlasVersion.substr(
pos+10,2)
255 + atlasVersion.substr(
pos+13,2)
256 + atlasVersion.substr(
pos+16,2);
257 ver =
atoi(geoVersion.c_str());
258 ATH_MSG_DEBUG(
"New ATLAS geometry detected: " << atlasVersion <<
" (" << geoVersion <<
")" <<
" version " <<
ver );
260 if (fabs(
info->m_ttL1Calib - 4.1) < 0.001) {
263 msg(MSG::INFO) <<
"Changing TTL1 calib from " <<
info->m_ttL1Calib;
264 info->m_ttL1Calib = 6.9;
267 msg(MSG::INFO) <<
"Changing TTL1 noise sigma from " <<
info->m_ttL1NoiseSigma;
268 info->m_ttL1NoiseSigma = 2.8;
269 msg(MSG::INFO) <<
" to " <<
info->m_ttL1NoiseSigma <<
endmsg;
281 ,
info->m_TTL1BinsPerX,
info->m_TTL1FullShape,
info->m_TTL1Shape) );
285 ,
info->m_MuRcvBinsPerX,
info->m_MuRcvFullShape,
info->m_MuRcvShape) );
288 ,
info->m_MuL1BinsPerX,
info->m_MuL1FullShape,
info->m_MuL1Shape) );
306 return StatusCode::SUCCESS;
◆ interfaceID()
static const InterfaceID& TileInfoLoader::interfaceID |
( |
| ) |
|
|
inlinestatic |
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ operator=()
◆ SvcFactory< TileInfoLoader >
◆ m_ADCmaskValue
int TileInfoLoader::m_ADCmaskValue |
|
private |
◆ m_ADCmax
int TileInfoLoader::m_ADCmax |
|
private |
◆ m_calibCntName
std::string TileInfoLoader::m_calibCntName |
|
private |
◆ m_connectedDrawers
std::vector<std::string> TileInfoLoader::m_connectedDrawers |
|
private |
◆ m_DecoCovaFilePrefix
std::string TileInfoLoader::m_DecoCovaFilePrefix |
|
private |
◆ m_detStore
◆ m_digitsShapeFileHi
std::string TileInfoLoader::m_digitsShapeFileHi |
|
private |
◆ m_digitsShapeFileLo
std::string TileInfoLoader::m_digitsShapeFileLo |
|
private |
◆ m_iTrigSample
int TileInfoLoader::m_iTrigSample |
|
private |
◆ m_loadWienerFilterWeights
bool TileInfoLoader::m_loadWienerFilterWeights |
|
private |
◆ m_mbtsL1Calib
double TileInfoLoader::m_mbtsL1Calib |
|
private |
◆ m_mbtsL1Max
double TileInfoLoader::m_mbtsL1Max |
|
private |
◆ m_mbtsL1NoiseSigma
double TileInfoLoader::m_mbtsL1NoiseSigma |
|
private |
◆ m_mbtsL1Ped
double TileInfoLoader::m_mbtsL1Ped |
|
private |
◆ m_mbtsL1Thresh
double TileInfoLoader::m_mbtsL1Thresh |
|
private |
◆ m_muL1Calib
double TileInfoLoader::m_muL1Calib |
|
private |
◆ m_muL1Max
double TileInfoLoader::m_muL1Max |
|
private |
◆ m_muL1NoiseSigma
double TileInfoLoader::m_muL1NoiseSigma |
|
private |
◆ m_muL1Ped
double TileInfoLoader::m_muL1Ped |
|
private |
◆ m_MuL1ShapeFile
std::string TileInfoLoader::m_MuL1ShapeFile |
|
private |
◆ m_muL1Thresh
double TileInfoLoader::m_muL1Thresh |
|
private |
◆ m_MuRcvCalib
double TileInfoLoader::m_MuRcvCalib |
|
private |
◆ m_MuRcvMax
double TileInfoLoader::m_MuRcvMax |
|
private |
◆ m_MuRcvNoiseSigma
double TileInfoLoader::m_MuRcvNoiseSigma |
|
private |
◆ m_MuRcvPed
double TileInfoLoader::m_MuRcvPed |
|
private |
◆ m_MuRcvShapeFile
std::string TileInfoLoader::m_MuRcvShapeFile |
|
private |
◆ m_MuRcvThresh
double TileInfoLoader::m_MuRcvThresh |
|
private |
◆ m_noiseScaleIndex
int TileInfoLoader::m_noiseScaleIndex |
|
private |
◆ m_nSamples
int TileInfoLoader::m_nSamples |
|
private |
◆ m_pulsevar
◆ m_thresholdDigits
double TileInfoLoader::m_thresholdDigits |
|
private |
◆ m_thresholdRawChannel
double TileInfoLoader::m_thresholdRawChannel |
|
private |
◆ m_tileCoherNoise
bool TileInfoLoader::m_tileCoherNoise |
|
private |
◆ m_tileInfoName
Gaudi::Property<std::string> TileInfoLoader::m_tileInfoName |
|
private |
Initial value:{this,
"TileInfo", "TileInfo", "Name of TileInfo object in Detector Store"}
Definition at line 75 of file TileInfoLoader.h.
◆ m_tileNoise
bool TileInfoLoader::m_tileNoise |
|
private |
◆ m_tileZeroSuppress
bool TileInfoLoader::m_tileZeroSuppress |
|
private |
◆ m_ttL1Calib
double TileInfoLoader::m_ttL1Calib |
|
private |
◆ m_ttL1CosmicsGain
double TileInfoLoader::m_ttL1CosmicsGain |
|
private |
◆ m_ttL1CosmicsThresh
double TileInfoLoader::m_ttL1CosmicsThresh |
|
private |
◆ m_ttL1Max
double TileInfoLoader::m_ttL1Max |
|
private |
◆ m_ttL1NoiseSigma
double TileInfoLoader::m_ttL1NoiseSigma |
|
private |
◆ m_ttL1Ped
double TileInfoLoader::m_ttL1Ped |
|
private |
◆ m_TTL1ShapeFile
std::string TileInfoLoader::m_TTL1ShapeFile |
|
private |
◆ m_ttL1Thresh
double TileInfoLoader::m_ttL1Thresh |
|
private |
◆ m_WFWeights
The documentation for this class was generated from the following files:
std::string m_filenameHiPhysDer
std::string m_TTL1ShapeFile
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
std::string m_MuRcvShapeFile
double m_mbtsL1NoiseSigma
std::string m_filenameLoLas
std::string m_filenameLoCISDer
std::string find(const std::string &s)
return a remapped string
static std::string find_file(const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
bool m_loadWienerFilterWeights
std::string m_filenameDLeakLo
std::string m_filenameLoPhys
std::string m_filenameHiLas
Gaudi::Property< std::string > m_tileInfoName
bool msgLvl(const MSG::Level lvl) const
std::string m_filenameHiCISDer
#define ATH_MSG_VERBOSE(x)
std::string m_digitsShapeFileLo
int m_nSamples
Properties to forward to TileInfo.
std::string m_filenameSHiCISDer
std::string m_DecoCovaFilePrefix
void buildCovMatrix(TileInfo &info)
std::string m_filenameSLeakLo
std::string m_filenameSLeakHi
std::string m_filenameHiPhys
std::string m_filenameHiCIS
std::string m_digitsShapeFileHi
Filenames of input files.
std::string m_filenameLoPhysDer
StatusCode buildTTL1Shapes(TileInfo &info, const std::string &ShapeFile, int &NBins, int &Time0Bin, int &BinsPerX, std::vector< double > &FullShape, std::vector< double > &Shape)
std::string m_filenameSLoCIS
std::string m_filenameHiLasDer
double m_ttL1CosmicsThresh
std::string m_filenameNkNoise
#define CHECK(...)
Evaluate an expression and check for errors.
double atof(std::string_view str)
Converts a string into a double / float.
std::string m_filenameDSLeakHi
std::string m_filenameSLoCISDer
virtual GeoModel::GeoConfig geoConfig() const =0
std::string m_filenameLeakLo
std::string m_filenameLeakHi
std::string m_filenameSHiCIS
double m_thresholdRawChannel
#define ATH_MSG_WARNING(x)
std::string m_MuL1ShapeFile
std::string m_filenameDLeakHi
TileWienerFilterWeights * m_WFWeights
Pointer to Wiener Filtering weights.
std::string m_filenameDSLeakLo
std::string m_filenameLoLasDer
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
std::string m_filenameLoCIS
std::string m_filenameOrigNoise
TilePulseShapes * m_pulsevar
Pointer to TilePulseShapes object.
virtual const std::string & atlasVersion() const =0
ServiceHandle< StoreGateSvc > m_detStore
StatusCode buildDigitsShapesHiLo(TileInfo &info)