ATLAS Offline Software
Loading...
Searching...
No Matches
TileOFCorrelation.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5//*************************************************************************************
6// Filename : TileOFCorrelation.h
7// Author : Valencia TileCal group, cristobal.cuenca@cern.ch,
8// Mantained by Ximo Poveda, jpoveda@cern.ch
9//
10// Created : May, 2004
11// Moved to TileCalibAlgs on Dec'06
12//
13// DESCRIPTION
14// Implementation of a class for correlation among digits calculation.
15
16// ************************************************************************************
17#ifndef TILECALIBALGS_TILELOFCORRELATION_H
18#define TILECALIBALGS_TILELOFCORRELATION_H
19
20#include "GaudiKernel/MsgStream.h"
22
23#include <vector>
24#include <string>
25
26#define NPARTITIONS 4
27#define NDIG 9
28
29class TileHWID;
30
32{
33 public:
34
37
40
41 void SetCorrelationZero(MsgStream & log, int dignum);
42 void SetCorrelationDelta(MsgStream & log, int dignum);
43
44 void Sum(std::vector<float> &digits, int ros, int drawer, int channel, int gain,
45 MsgStream & log, bool debug, int &dignum, bool doRobustCov);
46
47 void RunningCorrelation(std::vector<float> &digits, int ros, int drawer, int channel, int gain,
48 MsgStream & log, bool debug, int &dignum, int chthres);
49
50 void CalcCorrelation(MsgStream & log, int dignum, bool flag_7to9, bool doRobustCov);
51
52 void CalcRunningCorrelation(MsgStream & log, int dignum, int chthres, bool flag_7to9);
53
54 void GetCorrelation(int dignum, float tmpCorr[][9], int ros, int drawer, int chan, int gain);
55
56 void PrintCorrelation(int dignum);
57
58 void SaveCorrelationSumm(bool deltaCorrelation, const std::string& OptFilterFile_CorrelationSumm,
59 const TileHWID *tileHWID, MsgStream & log, int dignum);
60
61 void SaveCorrelationMatrix(bool deltaCorrelation, const std::string& OptFilterFile_CorrelationMatrix,
62 const TileHWID *tileHWID, MsgStream & log, int dignum);
63
64 void CalcWeights(bool of2,
65 bool deltaCorrelation,
66 const std::vector<double>& LshapeForm,
67 const std::vector<double>& HshapeForm,
68 const std::vector<double>& LdshapeForm,
69 const std::vector<double>& HdshapeForm,
70 MsgStream & log, int ros, int drawer, int channel, int gain, int dignum);
71
72 static void BuildPulseShape(std::vector<double> &pulseShape, std::vector<double> &pulseShapeX,
73 std::vector<double> &pulseShapeT, int dignum, MsgStream &log);
74
75 void WriteWeightsToFile(bool deltaCorrelation, int dignum, const std::string& m_OptFilterFile_ai_lo,
76 const std::string& m_OptFilterFile_bi_lo, const std::string& m_OptFilterFile_ai_hi,
77 const std::string& m_OptFilterFile_bi_hi, int ros, int drawer, int channel, int gain,
78 const TileHWID *tileHWID, MsgStream & log);
79
80 void CloseWeightsFile(std::string OptFilterFile_ai_lo, std::string OptFilterFile_bi_lo,
81 std::string OptFilterFile_ai_hi, std::string OptFilterFile_bi_hi,
82 MsgStream & log);
83
84 static void OpenWeightsFile(const std::string& OptFilterFile_ai_lo, const std::string& OptFilterFile_bi_lo,
85 const std::string& OptFilterFile_ai_hi, const std::string& OptFilterFile_bi_hi,
86 MsgStream & log);
87
88 float* getCorrelationSumm(bool deltaCorrelation, int ros, int drawer, int channel, int gain, int dignum);
89
90 double w_a[201][9]={};
91 double w_b[201][9]={};
92 double w_c[201][9]={};
93 double g[201][9]={};
94
95
96 private:
97
99 //double SS(9,9);
103 //int N_events[4][64][48][2];
105
106 double m_corr2[NDIG];
109 double m_ncorr;
110 float m_corr[8];
114 double m_N_d;
120
121};
122
123#endif
const bool debug
#define NDIG
#define NPARTITIONS
Static class providing several utility functions and constants.
static const unsigned int MAX_GAIN
Number of gains per channel.
static const unsigned int MAX_DRAWER
Number of drawers in ROS 1-4.
static const unsigned int MAX_CHAN
Number of channels in drawer.
Helper class for TileCal online (hardware) identifiers.
Definition TileHWID.h:49
double(* m_corr_sum_sq)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
double(* m_S22)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
void PrintCorrelation(int dignum)
TileOFCorrelation(const TileOFCorrelation &)=delete
static void OpenWeightsFile(const std::string &OptFilterFile_ai_lo, const std::string &OptFilterFile_bi_lo, const std::string &OptFilterFile_ai_hi, const std::string &OptFilterFile_bi_hi, MsgStream &log)
void CalcCorrelation(MsgStream &log, int dignum, bool flag_7to9, bool doRobustCov)
std::vector< std::vector< float > > m_DataVector[NPARTITIONS][Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
void SaveCorrelationMatrix(bool deltaCorrelation, const std::string &OptFilterFile_CorrelationMatrix, const TileHWID *tileHWID, MsgStream &log, int dignum)
void SetCorrelationDelta(MsgStream &log, int dignum)
void WriteWeightsToFile(bool deltaCorrelation, int dignum, const std::string &m_OptFilterFile_ai_lo, const std::string &m_OptFilterFile_bi_lo, const std::string &m_OptFilterFile_ai_hi, const std::string &m_OptFilterFile_bi_hi, int ros, int drawer, int channel, int gain, const TileHWID *tileHWID, MsgStream &log)
void SaveCorrelationSumm(bool deltaCorrelation, const std::string &OptFilterFile_CorrelationSumm, const TileHWID *tileHWID, MsgStream &log, int dignum)
double(* m_S)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
double(* m_corr_sum)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
double(* m_S11)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
double(* m_SS)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG][NDIG]
void GetCorrelation(int dignum, float tmpCorr[][9], int ros, int drawer, int chan, int gain)
TileOFCorrelation & operator=(const TileOFCorrelation &)=delete
void Sum(std::vector< float > &digits, int ros, int drawer, int channel, int gain, MsgStream &log, bool debug, int &dignum, bool doRobustCov)
void CalcRunningCorrelation(MsgStream &log, int dignum, int chthres, bool flag_7to9)
double(* m_S1)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
double(* m_S2)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
void RunningCorrelation(std::vector< float > &digits, int ros, int drawer, int channel, int gain, MsgStream &log, bool debug, int &dignum, int chthres)
int(* m_N_pairs)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
void CloseWeightsFile(std::string OptFilterFile_ai_lo, std::string OptFilterFile_bi_lo, std::string OptFilterFile_ai_hi, std::string OptFilterFile_bi_hi, MsgStream &log)
float * getCorrelationSumm(bool deltaCorrelation, int ros, int drawer, int channel, int gain, int dignum)
double(* m_R)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG][NDIG]
void CalcWeights(bool of2, bool deltaCorrelation, const std::vector< double > &LshapeForm, const std::vector< double > &HshapeForm, const std::vector< double > &LdshapeForm, const std::vector< double > &HdshapeForm, MsgStream &log, int ros, int drawer, int channel, int gain, int dignum)
void SetCorrelationZero(MsgStream &log, int dignum)
double(* m_S12)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
int(* m_N)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
static void BuildPulseShape(std::vector< double > &pulseShape, std::vector< double > &pulseShapeX, std::vector< double > &pulseShapeT, int dignum, MsgStream &log)