ATLAS Offline Software
TileCisDefaultCalibTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TILECALIBALG_TILECISDEFAULTCALIBTOOL_H
6 #define TILECALIBALG_TILECISDEFAULTCALIBTOOL_H
7 
8 // Gaudi includes
9 #include "GaudiKernel/ToolHandle.h"
10 #include "GaudiKernel/ServiceHandle.h"
11 
12 // Athena includes
15 
16 // Tile includes
18 
19 #include "TileEvent/TileDQstatus.h"
25 
26 #include "TString.h"
27 #include <stdint.h>
28 #include <string>
29 #include <map>
30 
31 #define NBITS 10
32 #define NBSTATUS 4
33 
34 // Forward declaration
35 class TileHWID;
36 class TileCablingSvc;
37 class TFile;
38 class TileInfo;
39 class TMap;
40 
42  , virtual public ITileCalibTool {
43 
44  public:
45  TileCisDefaultCalibTool(const std::string& type, const std::string& name,
46  const IInterface* pParent);
47  virtual ~TileCisDefaultCalibTool();
48 
49  virtual StatusCode initialize() override;
50  virtual StatusCode initNtuple(int runNumber, int runType, TFile * rootfile) override;
51  virtual StatusCode execute() override;
52  virtual StatusCode finalizeCalculations() override;
53  virtual StatusCode writeNtuple(int runNumber, int runType, TFile * rootfile) override;
54  virtual StatusCode finalize() override;
55 
56  private:
57 
58  // Bit definitions for calibration quality flag
59  enum QualityType {
62  rangeBit = 2,
63  probBit = 3,
64  noiseBit = 4,
65  injRMSBit = 5,
68  edgeSamp = 8,
70  stuckbitBit = 10
71  };
72  // typedefs for maps
73  // dac map: uses dac value as key
74  typedef std::map<uint32_t, int> TDACIntMap;
75  typedef std::map<uint32_t, double> TDACDoubleMap;
77  // adc map: uses hwid as key
78  // values of these maps are dac maps
79  typedef std::map<HWIdentifier, TDACIntMap*> TAdcIntMap;
80  typedef std::map<HWIdentifier, TDACDoubleMap*> TAdcDoubleMap;
82 
83  // Maps for number of events, mean, and rms:
84  // Fill these with "running" values, i.e. values are updated event-by-event,
89 
90  // Tools / storegate info
94  ToolHandle<ITileStuckBitsProbsTool> m_stuckBitsProbs{this,
95  "StuckBitsProbsTool","","Tile stuck bits probabilities tool"};
96 
99  "TileDigitsContainer", "TileDigitsCnt", "Tile digits container"};
101  "TileRawChannelContainer", "TileRawChannelFit", "Tile raw channel container"};
102  // jobOptions
104  std::string m_ntupleID;
106  // whether or not to use small capacitor, by default no
108 
109  // remove pedestal events: should only be necessary for runs where
110  // pedestal triggers are mixed with CIS triggers
112 
113  // expected maximal ped to set overflow limit (mostly needed for low gain)
114  double m_maxPed;
115 
116  // phase range for calibration, by default use full range
117  double m_phaseMin;
118  double m_phaseMax;
119 
120  // Maximum charge (gain-dependent) for filling dac map: not equivalent to charge range used in linear fit
121  // by default, fill low gain up to 800 pC, high gain up to 12.5 pC (25 pC for demonstrator)
126 
127  // Range for linear fits: by default do high gain fit from 3-10 pC, and low gain from 300 - 700 pC
132 
133  // Range for linear fits for demonstrator: by default do high gain fit from 6-20 pC, and low gain from 300 - 700 pC
138 
140 
142  // Results
145  int (*m_nDAC)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]; // This is now deprecated since you can get this form the TGraph
148 
149  // These will not be saved to the ntuple
150  // They are for the sample check that gets written to qflag
151  // Mike Miller - 4 June 2009
154 
155  // these arrays are used to contain information about stuck bits in adc's
156  // this array pertains to the "stuck bit" quality flag; it is not written to
157  // the ntuple
159  // This array contains information about each bit in the adc
160  // it IS written into the ntuple
162  // used to count the number of injection samples analyzed for odd bit behavior
164 
165  TMap* m_scanMap;
167 
168  double m_defaultCalib[4] = {0., 0., 0., 0.};
169  double m_dac2Charge[4] = {0., 0., 0., 0.};
170  double m_chargeMin[4] = {0., 0., 0., 0.};
171  double m_chargeMax[4] = {0., 0., 0., 0.};
172  double m_linfitMin[4] = {0., 0., 0., 0.};
173  double m_linfitMax[4] = {0., 0., 0., 0.};
174  double m_maxAmp[4] = {0., 0., 0., 0.};
175  std::vector<int> m_fragIDsDemonstrators;
176 
177  // TileInfo
178  std::string m_infoName;
180 
181  // Functions
182  inline int chanIsConnected(int ros, int chan) {
183  if (m_cabling->channel2hole(ros, chan) < 0) return 0; //negative means not connected
184  return 1;
185  }
186 
187  inline void setBit(QualityType qb, int& bitflag) {
188  bitflag |= (1 << qb);
189  }
190 
191  inline void unsetBit(QualityType qb, int& bitflag) {
192  bitflag &= ~(1 << qb);
193  }
194 
195  inline TString arrayString(int ros, int drawer, int chan, int gain) {
196  TString str = "";
197  str += ros;
198  str += "_";
199  str += drawer;
200  str += "_";
201  str += chan;
202  str += "_";
203  str += gain;
204  return str;
205  }
206 
207 };
208 
209 #endif // #ifndef TILECALIBALG_TILECISDEFAULTCALIBTOOL_H
TileCisDefaultCalibTool::m_sampleBit
int(* m_sampleBit)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NBITS]
Definition: TileCisDefaultCalibTool.h:158
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
TileCisDefaultCalibTool::m_scanMap
TMap * m_scanMap
Definition: TileCisDefaultCalibTool.h:165
TileCisDefaultCalibTool::m_chi2
float(* m_chi2)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
Definition: TileCisDefaultCalibTool.h:147
TileCisDefaultCalibTool::finalize
virtual StatusCode finalize() override
Definition: TileCisDefaultCalibTool.cxx:830
TileCisDefaultCalibTool::m_infoName
std::string m_infoName
Definition: TileCisDefaultCalibTool.h:178
TileCisDefaultCalibTool::m_cablingSvc
ServiceHandle< TileCablingSvc > m_cablingSvc
Definition: TileCisDefaultCalibTool.h:93
TileCisDefaultCalibTool::stuckbitBit
@ stuckbitBit
Definition: TileCisDefaultCalibTool.h:70
TileCisDefaultCalibTool::noiseBit
@ noiseBit
Definition: TileCisDefaultCalibTool.h:64
TileCisDefaultCalibTool::digiErrorBit
@ digiErrorBit
Definition: TileCisDefaultCalibTool.h:66
xAOD::short
short
Definition: Vertex_v1.cxx:165
TileCisDefaultCalibTool::m_linfitMin
double m_linfitMin[4]
Definition: TileCisDefaultCalibTool.h:172
TileCisDefaultCalibTool::~TileCisDefaultCalibTool
virtual ~TileCisDefaultCalibTool()
Definition: TileCisDefaultCalibTool.cxx:91
TileCisDefaultCalibTool
Definition: TileCisDefaultCalibTool.h:42
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
TileCisDefaultCalibTool::m_dac2Charge
double m_dac2Charge[4]
Definition: TileCisDefaultCalibTool.h:169
ITileCalibTool
Definition: ITileCalibTool.h:19
TileCalibUtils.h
TileCisDefaultCalibTool::TAdcDoubleMapIter
std::map< HWIdentifier, TDACDoubleMap * >::iterator TAdcDoubleMapIter
Definition: TileCisDefaultCalibTool.h:81
ReadBchFromCrest.ros
ros
Definition: ReadBchFromCrest.py:73
TileInfo
Definition: TileInfo.h:49
TileCisDefaultCalibTool::m_linfitMinHiDemo
double m_linfitMinHiDemo
Definition: TileCisDefaultCalibTool.h:135
TileCisDefaultCalibTool::m_dqStatusKey
SG::ReadHandleKey< TileDQstatus > m_dqStatusKey
Definition: TileCisDefaultCalibTool.h:97
SG::ReadHandleKey< TileDQstatus >
TileCisDefaultCalibTool::m_nDigitalErrors
int(* m_nDigitalErrors)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
Definition: TileCisDefaultCalibTool.h:146
TileCisDefaultCalibTool::m_DigitsContainerName
std::string m_DigitsContainerName
Definition: TileCisDefaultCalibTool.h:105
LArCalib_HVScale2NtupleConfig.rootfile
string rootfile
Definition: LArCalib_HVScale2NtupleConfig.py:84
TileCisDefaultCalibTool::m_chargeMinLo
double m_chargeMinLo
Definition: TileCisDefaultCalibTool.h:125
TileCisDefaultCalibTool::m_defaultCalib
double m_defaultCalib[4]
Definition: TileCisDefaultCalibTool.h:168
NBITS
#define NBITS
Definition: TileCisDefaultCalibTool.h:31
TileCisDefaultCalibTool::m_MeanMap
TAdcDoubleMap m_MeanMap
Definition: TileCisDefaultCalibTool.h:87
TileCisDefaultCalibTool::QualityType
QualityType
Definition: TileCisDefaultCalibTool.h:59
TileCisDefaultCalibTool::m_linfitMaxLo
double m_linfitMaxLo
Definition: TileCisDefaultCalibTool.h:130
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
TileCisDefaultCalibTool::m_linfitMaxHiDemo
double m_linfitMaxHiDemo
Definition: TileCisDefaultCalibTool.h:134
TileCisDefaultCalibTool::probBit
@ probBit
Definition: TileCisDefaultCalibTool.h:63
TileCisDefaultCalibTool::m_stuckBitsProbs
ToolHandle< ITileStuckBitsProbsTool > m_stuckBitsProbs
Definition: TileCisDefaultCalibTool.h:94
TileCalibUtils::MAX_DRAWER
static const unsigned int MAX_DRAWER
Number of drawers in ROS 1-4.
Definition: TileCalibUtils.h:139
TileCisDefaultCalibTool::m_calib
float(* m_calib)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
Definition: TileCisDefaultCalibTool.h:143
TileRawChannelContainer.h
TileCisDefaultCalibTool::rangeBit
@ rangeBit
Definition: TileCisDefaultCalibTool.h:62
TileCisDefaultCalibTool::m_linfitMinHi
double m_linfitMinHi
Definition: TileCisDefaultCalibTool.h:129
ITileCalibTool.h
TileHWID
Helper class for TileCal online (hardware) identifiers.
Definition: TileHWID.h:49
TileCisDefaultCalibTool::m_linfitMinLo
double m_linfitMinLo
Definition: TileCisDefaultCalibTool.h:131
TileCisDefaultCalibTool::TileCisDefaultCalibTool
TileCisDefaultCalibTool(const std::string &type, const std::string &name, const IInterface *pParent)
Definition: TileCisDefaultCalibTool.cxx:33
TileCisDefaultCalibTool::m_chargeMaxLo
double m_chargeMaxLo
Definition: TileCisDefaultCalibTool.h:124
Tile
Definition: TileVolumeBuilder.h:42
TileCisDefaultCalibTool::m_cabling
const TileCablingService * m_cabling
Definition: TileCisDefaultCalibTool.h:92
TileCisDefaultCalibTool::m_edgeSample
int(* m_edgeSample)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
Definition: TileCisDefaultCalibTool.h:152
TileCisDefaultCalibTool::TAdcDoubleMap
std::map< HWIdentifier, TDACDoubleMap * > TAdcDoubleMap
Definition: TileCisDefaultCalibTool.h:80
TileCablingSvc
Definition: TileCablingSvc.h:28
TileCisDefaultCalibTool::m_linfitMaxLoDemo
double m_linfitMaxLoDemo
Definition: TileCisDefaultCalibTool.h:136
TileCisDefaultCalibTool::m_maxPed
double m_maxPed
Definition: TileCisDefaultCalibTool.h:114
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
TileCisDefaultCalibTool::m_maxAmp
double m_maxAmp[4]
Definition: TileCisDefaultCalibTool.h:174
TileDigitsContainer.h
TileCisDefaultCalibTool::m_removePed
bool m_removePed
Definition: TileCisDefaultCalibTool.h:111
TileCisDefaultCalibTool::m_linfitMax
double m_linfitMax[4]
Definition: TileCisDefaultCalibTool.h:173
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
python.CaloAddPedShiftConfig.str
str
Definition: CaloAddPedShiftConfig.py:42
AthAlgTool.h
TileCisDefaultCalibTool::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileCisDefaultCalibTool.h:91
TileCisDefaultCalibTool::TDACDoubleMap
std::map< uint32_t, double > TDACDoubleMap
Definition: TileCisDefaultCalibTool.h:75
TileCisDefaultCalibTool::m_NEvtMap
TAdcIntMap m_NEvtMap
Definition: TileCisDefaultCalibTool.h:85
TileCisDefaultCalibTool::m_nDAC
int(* m_nDAC)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
Definition: TileCisDefaultCalibTool.h:145
TileCisDefaultCalibTool::chanIsConnected
int chanIsConnected(int ros, int chan)
Definition: TileCisDefaultCalibTool.h:182
TileCisDefaultCalibTool::writeNtuple
virtual StatusCode writeNtuple(int runNumber, int runType, TFile *rootfile) override
Definition: TileCisDefaultCalibTool.cxx:798
TileCisDefaultCalibTool::probChi2Bit
@ probChi2Bit
Definition: TileCisDefaultCalibTool.h:67
TileCablingService
Definition: TileCablingService.h:23
TileDQstatus.h
Information produced by TileDQstatusAlg (used to be done by TileBeamInfoProvider).
TileCisDefaultCalibTool::initialize
virtual StatusCode initialize() override
Definition: TileCisDefaultCalibTool.cxx:106
python.OnlineISConfiguration.runType
def runType
Definition: OnlineISConfiguration.py:112
NBSTATUS
#define NBSTATUS
Definition: TileCisDefaultCalibTool.h:32
TileCisDefaultCalibTool::m_chargeMin
double m_chargeMin[4]
Definition: TileCisDefaultCalibTool.h:170
TileCisDefaultCalibTool::m_useSmallCap
bool m_useSmallCap
Definition: TileCisDefaultCalibTool.h:107
TileCisDefaultCalibTool::m_rawChannelContainerKey
SG::ReadHandleKey< TileRawChannelContainer > m_rawChannelContainerKey
Definition: TileCisDefaultCalibTool.h:100
TileCisDefaultCalibTool::nextToEdgeSamp
@ nextToEdgeSamp
Definition: TileCisDefaultCalibTool.h:69
TileCisDefaultCalibTool::m_digitsContainerKey
SG::ReadHandleKey< TileDigitsContainer > m_digitsContainerKey
Definition: TileCisDefaultCalibTool.h:98
HWIdentifier.h
TileCisDefaultCalibTool::includedBit
@ includedBit
Definition: TileCisDefaultCalibTool.h:60
TileCisDefaultCalibTool::m_bitStatus
unsigned short(* m_bitStatus)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NBSTATUS]
Definition: TileCisDefaultCalibTool.h:161
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
TileCisDefaultCalibTool::m_chargeMaxHi
double m_chargeMaxHi
Definition: TileCisDefaultCalibTool.h:122
TileCisDefaultCalibTool::initNtuple
virtual StatusCode initNtuple(int runNumber, int runType, TFile *rootfile) override
Definition: TileCisDefaultCalibTool.cxx:185
TileCisDefaultCalibTool::m_scanMapRMS
TMap * m_scanMapRMS
Definition: TileCisDefaultCalibTool.h:166
TileCisDefaultCalibTool::m_ntupleID
std::string m_ntupleID
Definition: TileCisDefaultCalibTool.h:104
TileCisDefaultCalibTool::m_rawChannelContainerName
std::string m_rawChannelContainerName
Definition: TileCisDefaultCalibTool.h:103
TileCisDefaultCalibTool::m_fragIDsDemonstrators
std::vector< int > m_fragIDsDemonstrators
Definition: TileCisDefaultCalibTool.h:175
TileCisDefaultCalibTool::TDACDoubleMapIter
std::map< uint32_t, double >::iterator TDACDoubleMapIter
Definition: TileCisDefaultCalibTool.h:76
TileCisDefaultCalibTool::m_NDigitalErrorsMap
TAdcIntMap m_NDigitalErrorsMap
Definition: TileCisDefaultCalibTool.h:86
TileCisDefaultCalibTool::m_nextToEdgeSample
int(* m_nextToEdgeSample)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
Definition: TileCisDefaultCalibTool.h:153
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
TileCisDefaultCalibTool::unsetBit
void unsetBit(QualityType qb, int &bitflag)
Definition: TileCisDefaultCalibTool.h:191
TileCisDefaultCalibTool::m_chargeMinHi
double m_chargeMinHi
Definition: TileCisDefaultCalibTool.h:123
TileCisDefaultCalibTool::m_phaseMax
double m_phaseMax
Definition: TileCisDefaultCalibTool.h:118
TileCablingService::channel2hole
static int channel2hole(int ros, int channel)
Definition: TileCablingService.cxx:1946
python.Classes.TileCalibUtils
TileCalibUtils
Definition: TileCalib/TileCalibBlobObjs/python/Classes.py:5
TileCisDefaultCalibTool::finalizeCalculations
virtual StatusCode finalizeCalculations() override
Definition: TileCisDefaultCalibTool.cxx:401
TileCisDefaultCalibTool::m_doSampleChecking
bool m_doSampleChecking
Definition: TileCisDefaultCalibTool.h:139
ITileStuckBitsProbsTool.h
TileCisDefaultCalibTool::injRMSBit
@ injRMSBit
Definition: TileCisDefaultCalibTool.h:65
TileCisDefaultCalibTool::setBit
void setBit(QualityType qb, int &bitflag)
Definition: TileCisDefaultCalibTool.h:187
TileCisDefaultCalibTool::TAdcIntMap
std::map< HWIdentifier, TDACIntMap * > TAdcIntMap
Definition: TileCisDefaultCalibTool.h:79
str
Definition: BTagTrackIpAccessor.cxx:11
TileCisDefaultCalibTool::arrayString
TString arrayString(int ros, int drawer, int chan, int gain)
Definition: TileCisDefaultCalibTool.h:195
TileCisDefaultCalibTool::edgeSamp
@ edgeSamp
Definition: TileCisDefaultCalibTool.h:68
TileCisDefaultCalibTool::execute
virtual StatusCode execute() override
Definition: TileCisDefaultCalibTool.cxx:191
AthAlgTool
Definition: AthAlgTool.h:26
TileCalibUtils::MAX_CHAN
static const unsigned int MAX_CHAN
Number of channels in drawer.
Definition: TileCalibUtils.h:141
TileCisDefaultCalibTool::TDACIntMap
std::map< uint32_t, int > TDACIntMap
Definition: TileCisDefaultCalibTool.h:74
TileCisDefaultCalibTool::m_tileInfo
const TileInfo * m_tileInfo
Definition: TileCisDefaultCalibTool.h:179
TileCisDefaultCalibTool::m_phaseMin
double m_phaseMin
Definition: TileCisDefaultCalibTool.h:117
TileCisDefaultCalibTool::m_linfitMinLoDemo
double m_linfitMinLoDemo
Definition: TileCisDefaultCalibTool.h:137
TileCisDefaultCalibTool::m_chargeMax
double m_chargeMax[4]
Definition: TileCisDefaultCalibTool.h:171
TileCisDefaultCalibTool::m_qflag
int(* m_qflag)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
Definition: TileCisDefaultCalibTool.h:144
TileCisDefaultCalibTool::calibratedBit
@ calibratedBit
Definition: TileCisDefaultCalibTool.h:61
TileCisDefaultCalibTool::m_MeanSqMap
TAdcDoubleMap m_MeanSqMap
Definition: TileCisDefaultCalibTool.h:88
TileCisDefaultCalibTool::m_numSamp
int(* m_numSamp)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
Definition: TileCisDefaultCalibTool.h:163
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65
ServiceHandle< TileCablingSvc >
TileCisDefaultCalibTool::m_linfitMaxHi
double m_linfitMaxHi
Definition: TileCisDefaultCalibTool.h:128
TileCalibUtils::MAX_GAIN
static const unsigned int MAX_GAIN
Number of gains per channel
Definition: TileCalibUtils.h:142