ATLAS Offline Software
LArRodBlockCalibrationV3.h
Go to the documentation of this file.
1 //Dear emacs, this is -*- c++ -*-
2 
3 /*
4  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 #ifndef LARBYTESTREAM_LARRODBLOCKCALIBRATIONV3_H
8 #define LARBYTESTREAM_LARRODBLOCKCALIBRATIONV3_H
9 
22 
24 {
25 public:
26  // ----------------- Header words indexes -----------------
27  enum {
28  NWTot, // First words: DSP event header
32  FEB_SN, // FEB serial number
33  FEB_SN_h, // FEB serial number
34  ResultsOff1, // Size of results (Calibration averages in DSP)
35  ResultsDim1, // Offset to results
36  ResultsOff2, // Size of times (in physics)
37  ResultsDim2, // Offset to times (in physics)
39  RawDataBlkDim, // Raw FEB event offset
40  EventStatus, // Bits describing the event
46  InFPGAFormat, // added 08.09.2005 - wrong 28.09.2005?
48  endtag //This tag needs to be an odd number, see *) for constructor
49  };
50  enum{
53  Dac,
74  feb_ssw7
75  };
76  // constructor
78 
79  // ------ Identify RodBlockStructure -------
80  std::string BlockType() { return std::string("RodBlockCalibrationV3");}
81  public:
82  //void dumpFragment() { dumpFragment(m_FebBlock); }
83  // ----------------- Encoding methods -----------------
84  // Never to be used while decoding!
85  // ----------------- Decoding methods -----------------
86  // Never to be used while encoding!
87  // set full ROD fragment before trying to get anything!
88  // in case there is more than 1 FEB in 1 fragment, jump to next FEB
89  virtual uint8_t getTDCPhase() const;
90  virtual int getNextRawData(int& channelNumber, std::vector<short>& samples, uint32_t& gain);
91  virtual int getNextAccumulatedCalibDigit(int& channelNumber, std::vector < uint64_t >& samplesSum, std::vector < uint64_t >& samples2Sum, uint32_t& iStepTrigger, uint32_t& gain);
92  virtual uint32_t getNumberOfSamples() const;
93  virtual uint32_t getNumberOfGains() const;
94  virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const;
95  virtual uint16_t getResults1Size() const;
96  virtual uint16_t getResults2Size() const;
97  virtual uint16_t getRawDataSize() const;
98  virtual uint16_t getCtrl1(uint32_t adc) const;
99  virtual uint16_t getCtrl2(uint32_t adc) const;
100  virtual uint16_t getCtrl3(uint32_t adc) const;
101  virtual uint32_t getStatus() const;
102 
103  virtual inline int setGain(const int GainValue); // ---------------- Define gain for decoding
104  virtual inline uint32_t hasCalibBlock() const {return getHeader16(ResultsOff1);} ;
105  virtual inline uint32_t hasRawDataBlock() const {return getHeader16(RawDataBlkOff);} ;
106  virtual inline uint32_t hasControlWords() const {return getHeader16(RawDataBlkOff);} ;
107 
108  // ----------------- Printing methods -----------------
109  // print the full ROD fragment
110  //virtual void dumpFragment();
111 private:
112  void clearBlocks();
113  virtual void resetPointers();
114  //Separated blocks for encoding
115 
116  // One raw data block per gain to start with
117  std::vector<uint32_t> m_RawDataBlock;
118  //Counter for channels inside of a FEB
120  int m_Result1Index = 0;
122  int m_Result2Index = 0;
124  int m_RawDataIndex = 0;
125  //For fixed gain mode
126  unsigned m_fixedGain;
127  //FIXME, very ugly hack! See explanation in LArRodDecoder.h
128 public:
129  inline uint16_t getNTrigger() const;
130  inline uint16_t getStepIndex() const;
131  inline uint16_t getNStep() const;
132  inline uint16_t getDAC() const;
133  inline uint16_t getDelay() const;
134  inline uint16_t getFebConfig() const;
135  inline uint16_t getFirstSampleIndex() const;
136 
137  inline bool getPulsed(const unsigned channelNumber) const;
138 
139  virtual bool canSetCalibration() {return false;}
140 };
141 
142 
143 inline int LArRodBlockCalibrationV3::setGain(const int GainValue)
144 {//This RodBlockStructure allows only predefined gains
145  /*
146  std::cout << " Set fixed gain Value " << GainValue << std::endl;
147  std::cout << " Number of words in Gain Block " << std::endl;
148  std::cout << "\tHigh (1): " << getHeader16(NWRawData1) << std::endl;
149  std::cout << "\tMedium (2): " << getHeader16(NWRawData2) << std::endl;
150  std::cout << "\tLow (3): " << getHeader16(NWRawData3) << std::endl;
151  */
152  if (GainValue<0 || GainValue>3)
153  return 0;
154  m_fixedGain=GainValue;
155  return 1;
156 }
157 
159 {
160  return getHeader16(FebConfig);
161 }
162 
164 {
166 }
167 
168 inline bool LArRodBlockCalibrationV3::getPulsed(const unsigned channelNumber) const
169 {
171  return getBit(m_FebBlock+index+IsPulsed/2,channelNumber);
172 }
173 
174 
175 
176 #endif
LArRodBlockCalibrationV3::getNStep
uint16_t getNStep() const
Definition: LArRodBlockCalibrationV3.cxx:302
LArRodBlockStructure
Definition: LArRodBlockStructure.h:48
LArRodBlockCalibrationV3::FEB_SN_h
@ FEB_SN_h
Definition: LArRodBlockCalibrationV3.h:33
LArRodBlockCalibrationV3::resetPointers
virtual void resetPointers()
Definition: LArRodBlockCalibrationV3.cxx:38
LArRodBlockCalibrationV3::getResults2Size
virtual uint16_t getResults2Size() const
Definition: LArRodBlockCalibrationV3.cxx:292
LArRodBlockCalibrationV3::FEBID_h
@ FEBID_h
Definition: LArRodBlockCalibrationV3.h:31
LArRodBlockCalibrationV3::NWTot
@ NWTot
Definition: LArRodBlockCalibrationV3.h:28
LArRodBlockCalibrationV3::getRawDataSize
virtual uint16_t getRawDataSize() const
Definition: LArRodBlockCalibrationV3.cxx:297
LArRodBlockCalibrationV3::RawDataBlkDim
@ RawDataBlkDim
Definition: LArRodBlockCalibrationV3.h:39
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
LArRodBlockCalibrationV3::feb_ssw6
@ feb_ssw6
Definition: LArRodBlockCalibrationV3.h:73
LArRodBlockCalibrationV3::getNumberOfSamples
virtual uint32_t getNumberOfSamples() const
Definition: LArRodBlockCalibrationV3.cxx:248
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LArRodBlockCalibrationV3::m_Result1Counter
int m_Result1Counter
Definition: LArRodBlockCalibrationV3.h:119
LArRodBlockCalibrationV3::canSetCalibration
virtual bool canSetCalibration()
Definition: LArRodBlockCalibrationV3.h:139
index
Definition: index.py:1
LArRodBlockCalibrationV3::hasCalibBlock
virtual uint32_t hasCalibBlock() const
Definition: LArRodBlockCalibrationV3.h:104
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
LArRodBlockCalibrationV3::getNTrigger
uint16_t getNTrigger() const
Definition: LArRodBlockCalibrationV3.cxx:258
LArRodBlockCalibrationV3::ResultsDim1
@ ResultsDim1
Definition: LArRodBlockCalibrationV3.h:35
LArRodBlockCalibrationV3::IsPulsed7
@ IsPulsed7
Definition: LArRodBlockCalibrationV3.h:64
LArRodBlockStructure::m_FebBlock
const uint32_t * m_FebBlock
Definition: LArRodBlockStructure.h:227
LArRodBlockCalibrationV3::NTrigger_h
@ NTrigger_h
Definition: LArRodBlockCalibrationV3.h:52
LArRodBlockCalibrationV3::getCtrl2
virtual uint16_t getCtrl2(uint32_t adc) const
Definition: LArRodBlockCalibrationV3.cxx:336
LArRodBlockCalibrationV3::feb_ssw3
@ feb_ssw3
Definition: LArRodBlockCalibrationV3.h:70
LArRodBlockCalibrationV3::m_RawDataCounter
int m_RawDataCounter
Definition: LArRodBlockCalibrationV3.h:123
LArRodBlockCalibrationV3::getNextAccumulatedCalibDigit
virtual int getNextAccumulatedCalibDigit(int &channelNumber, std::vector< uint64_t > &samplesSum, std::vector< uint64_t > &samples2Sum, uint32_t &iStepTrigger, uint32_t &gain)
Definition: LArRodBlockCalibrationV3.cxx:156
LArRodBlockCalibrationV3::FEB_SN
@ FEB_SN
Definition: LArRodBlockCalibrationV3.h:32
LArRodBlockCalibrationV3::feb_ssw2
@ feb_ssw2
Definition: LArRodBlockCalibrationV3.h:69
LArRodBlockCalibrationV3::getFebConfig
uint16_t getFebConfig() const
Definition: LArRodBlockCalibrationV3.h:158
LArRodBlockCalibrationV3::getStepIndex
uint16_t getStepIndex() const
Definition: LArRodBlockCalibrationV3.cxx:280
LArRodBlockCalibrationV3::ResultsOff1
@ ResultsOff1
Definition: LArRodBlockCalibrationV3.h:34
LArRodBlockCalibrationV3::InFPGAFormat_h
@ InFPGAFormat_h
Definition: LArRodBlockCalibrationV3.h:47
LArRodBlockCalibrationV3::IsPulsed3
@ IsPulsed3
Definition: LArRodBlockCalibrationV3.h:60
LArRodBlockCalibrationV3::m_Result1Index
int m_Result1Index
Definition: LArRodBlockCalibrationV3.h:120
LArRodBlockCalibrationV3::getStatus
virtual uint32_t getStatus() const
Definition: LArRodBlockCalibrationV3.cxx:372
LArRodBlockCalibrationV3::InFPGAFormat
@ InFPGAFormat
Definition: LArRodBlockCalibrationV3.h:46
LArRodBlockCalibrationV3::m_Result2Counter
int m_Result2Counter
Definition: LArRodBlockCalibrationV3.h:121
LArRodBlockCalibrationV3::getRadd
virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const
Definition: LArRodBlockCalibrationV3.cxx:309
LArRodBlockCalibrationV3::FirstSampleIndex
@ FirstSampleIndex
Definition: LArRodBlockCalibrationV3.h:44
LArRodBlockCalibrationV3::EventStatus_h
@ EventStatus_h
Definition: LArRodBlockCalibrationV3.h:41
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
LArRodBlockCalibrationV3::endtag
@ endtag
Definition: LArRodBlockCalibrationV3.h:48
LArRodBlockCalibrationV3::m_Result2Index
int m_Result2Index
Definition: LArRodBlockCalibrationV3.h:122
LArRodBlockCalibrationV3::getCtrl1
virtual uint16_t getCtrl1(uint32_t adc) const
Definition: LArRodBlockCalibrationV3.cxx:320
LArRodBlockCalibrationV3::IsPulsed4
@ IsPulsed4
Definition: LArRodBlockCalibrationV3.h:61
LArRodBlockCalibrationV3::ResultsDim2
@ ResultsDim2
Definition: LArRodBlockCalibrationV3.h:37
01SubmitToGrid.samples
samples
Definition: 01SubmitToGrid.py:58
LArRodBlockCalibrationV3::m_RawDataBlock
std::vector< uint32_t > m_RawDataBlock
Definition: LArRodBlockCalibrationV3.h:117
LArRodBlockCalibrationV3::getTDCPhase
virtual uint8_t getTDCPhase() const
Definition: LArRodBlockCalibrationV3.cxx:50
LArRodBlockCalibrationV3::getCtrl3
virtual uint16_t getCtrl3(uint32_t adc) const
Definition: LArRodBlockCalibrationV3.cxx:352
LArRodBlockCalibrationV3::NWTot_h
@ NWTot_h
Definition: LArRodBlockCalibrationV3.h:29
LArRodBlockCalibrationV3::Dac
@ Dac
Definition: LArRodBlockCalibrationV3.h:53
LArRodBlockCalibrationV3::getNumberOfGains
virtual uint32_t getNumberOfGains() const
Definition: LArRodBlockCalibrationV3.cxx:253
LArRodBlockCalibrationV3::clearBlocks
void clearBlocks()
Definition: LArRodBlockCalibrationV3.cxx:33
LArRodBlockCalibrationV3::IsPulsed5
@ IsPulsed5
Definition: LArRodBlockCalibrationV3.h:62
LArRodBlockCalibrationV3::feb_ssw4
@ feb_ssw4
Definition: LArRodBlockCalibrationV3.h:71
LArRodBlockCalibrationV3::NTrigger
@ NTrigger
Definition: LArRodBlockCalibrationV3.h:51
LArRodBlockStructure::getBit
int getBit(const uint32_t *const p, const unsigned chan) const
Definition: LArRodBlockStructure.h:433
LArRodBlockCalibrationV3::Delay
@ Delay
Definition: LArRodBlockCalibrationV3.h:55
LArRodBlockCalibrationV3::Dac_h
@ Dac_h
Definition: LArRodBlockCalibrationV3.h:54
LArRodBlockCalibrationV3::IsPulsed6
@ IsPulsed6
Definition: LArRodBlockCalibrationV3.h:63
LArRodBlockCalibrationV3
This class provides decoding/encoding from/to ROD format.
Definition: LArRodBlockCalibrationV3.h:24
LArRodBlockCalibrationV3::hasControlWords
virtual uint32_t hasControlWords() const
Definition: LArRodBlockCalibrationV3.h:106
LArRodBlockCalibrationV3::LArRodBlockCalibrationV3
LArRodBlockCalibrationV3()
Definition: LArRodBlockCalibrationV3.cxx:25
LArRodBlockCalibrationV3::feb_ssw1
@ feb_ssw1
Definition: LArRodBlockCalibrationV3.h:68
LArRodBlockCalibrationV3::IsPulsed
@ IsPulsed
Definition: LArRodBlockCalibrationV3.h:57
LArRodBlockCalibrationV3::getPulsed
bool getPulsed(const unsigned channelNumber) const
Definition: LArRodBlockCalibrationV3.h:168
LArRodBlockCalibrationV3::getFirstSampleIndex
uint16_t getFirstSampleIndex() const
Definition: LArRodBlockCalibrationV3.h:163
LArRodBlockCalibrationV3::NGains
@ NGains
Definition: LArRodBlockCalibrationV3.h:42
LArRodBlockCalibrationV3::StepIndex
@ StepIndex
Definition: LArRodBlockCalibrationV3.h:65
LArRodBlockCalibrationV3::FEBID
@ FEBID
Definition: LArRodBlockCalibrationV3.h:30
LArRodBlockCalibrationV3::EventStatus
@ EventStatus
Definition: LArRodBlockCalibrationV3.h:40
LArRodBlockCalibrationV3::m_RawDataIndex
int m_RawDataIndex
Definition: LArRodBlockCalibrationV3.h:124
LArRodBlockCalibrationV3::NSamples
@ NSamples
Definition: LArRodBlockCalibrationV3.h:43
LArRodBlockCalibrationV3::feb_ssw7
@ feb_ssw7
Definition: LArRodBlockCalibrationV3.h:74
LArRodBlockStructure.h
LArRodBlockCalibrationV3::BlockType
std::string BlockType()
Definition: LArRodBlockCalibrationV3.h:80
LArRodBlockCalibrationV3::NStep
@ NStep
Definition: LArRodBlockCalibrationV3.h:66
LArRodBlockCalibrationV3::hasRawDataBlock
virtual uint32_t hasRawDataBlock() const
Definition: LArRodBlockCalibrationV3.h:105
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
LArRodBlockCalibrationV3::feb_ssw
@ feb_ssw
Definition: LArRodBlockCalibrationV3.h:67
LArRodBlockCalibrationV3::getResults1Size
virtual uint16_t getResults1Size() const
Definition: LArRodBlockCalibrationV3.cxx:287
LArRodBlockCalibrationV3::Delay_h
@ Delay_h
Definition: LArRodBlockCalibrationV3.h:56
LArRodBlockCalibrationV3::feb_ssw5
@ feb_ssw5
Definition: LArRodBlockCalibrationV3.h:72
LArRodBlockCalibrationV3::IsPulsed2
@ IsPulsed2
Definition: LArRodBlockCalibrationV3.h:59
LArRodBlockCalibrationV3::getNextRawData
virtual int getNextRawData(int &channelNumber, std::vector< short > &samples, uint32_t &gain)
Definition: LArRodBlockCalibrationV3.cxx:58
LArRodBlockCalibrationV3::ResultsOff2
@ ResultsOff2
Definition: LArRodBlockCalibrationV3.h:36
LArRodBlockCalibrationV3::RawDataBlkOff
@ RawDataBlkOff
Definition: LArRodBlockCalibrationV3.h:38
LArRodBlockCalibrationV3::setGain
virtual int setGain(const int GainValue)
Definition: LArRodBlockCalibrationV3.h:143
LArRodBlockCalibrationV3::getDelay
uint16_t getDelay() const
Definition: LArRodBlockCalibrationV3.cxx:273
CaloGain.h
LArRodBlockCalibrationV3::FebConfig
@ FebConfig
Definition: LArRodBlockCalibrationV3.h:45
LArRodBlockStructure::getHeader16
uint16_t getHeader16(const unsigned n) const
Definition: LArRodBlockStructure.h:355
LArRodBlockCalibrationV3::getDAC
uint16_t getDAC() const
Definition: LArRodBlockCalibrationV3.cxx:266
LArRodBlockCalibrationV3::m_fixedGain
unsigned m_fixedGain
Definition: LArRodBlockCalibrationV3.h:126
LArRodBlockCalibrationV3::IsPulsed1
@ IsPulsed1
Definition: LArRodBlockCalibrationV3.h:58