Project
Loading...
Searching...
No Matches
CalOnlineGainTables.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
12#ifndef O2_TRD_CALONLINEGAINTABLES_H
13#define O2_TRD_CALONLINEGAINTABLES_H
14
16// //
17// TRD calibration class for online gain tables. //
18// 2019 - Ported from various bits of AliRoot (SHTM) //
19// Most things were stored in AliTRDOnlineGainTable{,ROC,MCM}.h //
20//
21// For my own sanity ... What happened in Run2 is not relevant for the new class.
22// What is relevant is how the data was transfered across....
23// OCDB2CCDB takes the old AliTRDOnlineGainTable* and produces a single
24// array of 540x128. So Det*128+ROB, and each of those has 21 values 1 for each adc.
25//
26// Notes:
27// sector, stack, layer === via Geometry Class === Detector. [0,539]
28// rob (read out board) *16 + MCM == [0,127] max number of MCM is 16.
30
31#include <array>
32#include "TRDBase/Geometry.h"
33class FeeParam;
34
35namespace o2
36{
37namespace trd
38{
39
41{
42 public:
45 // get and set the various values stored internally in the gain tables.
46 float getGainCorrectionFactorrm(int det, int rob, int mcm) const;
47 float getGainCorrectionFactor(int det, int row, int col) const;
48 float getGainCorrectionFactor(int sector, int stack, int layer, int row, int col) const { return getGainCorrectionFactor(Geometry::getDetector(sector, stack, layer), row, col); };
49 short getAdcdacrm(int det, int rob, int mcm) const;
50 short getAdcdac(int det, int row, int col) const;
51 short getAdcdac(int sector, int stack, int layer, int row, int col) const { return getAdcdac(Geometry::getDetector(sector, stack, layer), row, col); };
52 float getMCMGainrm(int det, int rob, int mcm) const;
53 float getMCMGain(int det, int row, int col) const;
54 float getMCMGain(int sector, int stack, int layer, int row, int col) const { return getMCMGain(Geometry::getDetector(sector, stack, layer), row, col); };
55 short getFGANrm(int det, int rob, int mcm, int channel) const;
56 short getFGAN(int det, int row, int col) const;
57 short getFGAN(int sector, int stack, int layer, int row, int col) const { return getFGAN(Geometry::getDetector(sector, stack, layer), row, col); };
58 short getFGFNrm(int det, int rob, int mcm, int channel) const;
59 short getFGFN(int det, int row, int col) const;
60 short getFGFN(int sector, int stack, int layer, int row, int col) const { return getFGFN(Geometry::getDetector(sector, stack, layer), row, col); };
61 void setGainCorrectionFactorrm(int det, int rob, int mcm, float gain);
62 void setGainCorrectionFactor(int det, int row, int col, float gain);
63 void setGainCorrectionFactor(int sector, int stack, int layer, int row, int col, float gain) { setGainCorrectionFactor(Geometry::getDetector(sector, stack, layer), row, col, gain); };
64 void setAdcdacrm(int det, int rob, int mcm, short gain);
65 void setAdcdac(int det, int row, int col, short gain);
66 void setAdcdac(int sector, int stack, int layer, int row, int col, short gain) { setAdcdac(Geometry::getDetector(sector, stack, layer), row, col, gain); };
67 void setMCMGainrm(int det, int rob, int mcm, float gain);
68 void setMCMGain(int det, int row, int col, float gain);
69 void setMCMGain(int sector, int stack, int layer, int row, int col, float gain) { setMCMGain(Geometry::getDetector(sector, stack, layer), row, col, gain); };
70 void setFGANrm(int det, int rob, int mcm, int channel, short gain);
71 void setFGAN(int det, int row, int col, short gain);
72 void setFGAN(int sector, int stack, int layer, int row, int col, short gain) { setFGAN(Geometry::getDetector(sector, stack, layer), row, col, gain); };
73 void setFGFNrm(int det, int rob, int mcm, int channel, short gain);
74 void setFGFN(int det, int row, int col, short gain);
75 void setFGFN(int sector, int stack, int layer, int row, int col, short gain) { setFGFN(Geometry::getDetector(sector, stack, layer), row, col, gain); };
76
77 // these 4 are used primarily to reading in from run2 ocdb, might have wider uses.
78 void setAdcdac(int arrayoffset, short adc) { mGainTable[arrayoffset].mAdcdac = adc; };
79 void setMCMGain(int arrayoffset, float gain) { mGainTable[arrayoffset].mMCMGain = gain; };
80 void setFGAN(int arrayoffset, int channel, short gain) { mGainTable[arrayoffset].mFGAN[channel] = gain; };
81 void setFGFN(int arrayoffset, int channel, short gain) { mGainTable[arrayoffset].mFGFN[channel] = gain; };
82
83 // two methods to localise the algorithms replacing many copies of the calculations.
84 int getArrayOffset(int det, int row, int col) const;
85 int getArrayOffsetrm(int det, int row, int col) const;
86 int getChannel(int col) const;
87
88 static float UnDef;
89 class MCMGain
90 {
91 public:
92 short mAdcdac{0}; // Reference voltage of the ADCs U_Ref = (1.05V + (fAdcdac/31)*0.4V
93 std::array<short, 21> mFGFN{}; // Gain Correction Filter Factor
94 std::array<short, 21> mFGAN{}; // Gain Correction Filter Additive
95 float mMCMGain{0};
96 };
97
98 std::array<MCMGain, 540 * 128> mGainTable;
100};
101} // namespace trd
102} // namespace o2
103#endif
uint16_t mcm
uint16_t rob
uint32_t col
Definition RawData.h:4
uint32_t stack
Definition RawData.h:1
void setMCMGain(int sector, int stack, int layer, int row, int col, float gain)
short getFGAN(int sector, int stack, int layer, int row, int col) const
void setGainCorrectionFactor(int det, int row, int col, float gain)
ClassDefNV(CalOnlineGainTables, 1)
void setFGAN(int arrayoffset, int channel, short gain)
void setFGFN(int arrayoffset, int channel, short gain)
void setAdcdac(int arrayoffset, short adc)
float getMCMGain(int sector, int stack, int layer, int row, int col) const
void setAdcdacrm(int det, int rob, int mcm, short gain)
short getAdcdac(int det, int row, int col) const
short getFGFN(int det, int row, int col) const
void setFGFN(int det, int row, int col, short gain)
void setGainCorrectionFactorrm(int det, int rob, int mcm, float gain)
float getMCMGain(int det, int row, int col) const
void setFGFNrm(int det, int rob, int mcm, int channel, short gain)
std::array< MCMGain, 540 *128 > mGainTable
void setFGANrm(int det, int rob, int mcm, int channel, short gain)
void setMCMGainrm(int det, int rob, int mcm, float gain)
int getArrayOffset(int det, int row, int col) const
void setFGAN(int det, int row, int col, short gain)
float getMCMGainrm(int det, int rob, int mcm) const
void setFGFN(int sector, int stack, int layer, int row, int col, short gain)
int getArrayOffsetrm(int det, int row, int col) const
void setMCMGain(int det, int row, int col, float gain)
short getFGFNrm(int det, int rob, int mcm, int channel) const
void setAdcdac(int det, int row, int col, short gain)
float getGainCorrectionFactor(int sector, int stack, int layer, int row, int col) const
void setMCMGain(int arrayoffset, float gain)
short getAdcdacrm(int det, int rob, int mcm) const
float getGainCorrectionFactorrm(int det, int rob, int mcm) const
short getFGANrm(int det, int rob, int mcm, int channel) const
short getFGAN(int det, int row, int col) const
void setFGAN(int sector, int stack, int layer, int row, int col, short gain)
void setGainCorrectionFactor(int sector, int stack, int layer, int row, int col, float gain)
float getGainCorrectionFactor(int det, int row, int col) const
short getAdcdac(int sector, int stack, int layer, int row, int col) const
void setAdcdac(int sector, int stack, int layer, int row, int col, short gain)
short getFGFN(int sector, int stack, int layer, int row, int col) const
GLenum GLuint GLint GLint layer
Definition glcorearb.h:1310
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::vector< int > row
ArrayADC adc