ATLAS Offline Software
LArRodBlockCalibrationV1.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_LARRODBLOCKCALIBRATIONV1_H
8 #define LARBYTESTREAM_LARRODBLOCKCALIBRATIONV1_H
9 
20 
22 {
23 public:
24  // ----------------- Header words indexes -----------------
25  enum {
26  NWTot, // First words: DSP event header
30  FEB_SN, // FEB serial number
31  FEB_SN_h, // FEB serial number
32  ResultsOff1, // Size of results (Calibration averages in DSP)
33  ResultsDim1, // Offset to results
34  ResultsOff2, // Size of times (in physics)
35  ResultsDim2, // Offset to times (in physics)
37  RawDataBlkDim, // Raw FEB event offset
38  EventStatus, // Bits describing the event
44  InFPGAFormat, // added 08.09.2005 - wrong 28.09.2005?
46  };
47  enum{
50  Dac,
70  endtag //This tag needs to be an odd number, see *) for constructor
71  };
72  // constructor
74 
75  // ------ Identify RodBlockStructure -------
76  std::string BlockType() { return std::string("RodBlockCalibrationV1");}
77  public:
78  //void dumpFragment() { dumpFragment(m_FebBlock); }
79  // ----------------- Encoding methods -----------------
80  // Never to be used while decoding!
81  // ----------------- Decoding methods -----------------
82  // Never to be used while encoding!
83  // set full ROD fragment before trying to get anything!
84  // in case there is more than 1 FEB in 1 fragment, jump to next FEB
85  virtual uint8_t getTDCPhase() const;
86  virtual int getNextRawData(int& channelNumber, std::vector<short>& samples, uint32_t& gain);
88  virtual int getNextAccumulatedCalibDigit(int& channelNumber, std::vector< std::vector < uint32_t > >& samplesSum, std::vector< std::vector < uint32_t > >& samples2Sum, uint32_t& iStepTrigger, uint32_t& gain);
89  virtual uint32_t getNumberOfSamples() const;
90  virtual uint32_t getNumberOfGains() const;
91  virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const;
92  virtual uint16_t getCtrl1(uint32_t adc) const;
93  virtual uint16_t getCtrl2(uint32_t adc) const;
94  virtual uint16_t getCtrl3(uint32_t adc) const;
95  virtual uint32_t getStatus() const;
96 
97  virtual inline uint32_t hasCalibBlock() const {return getHeader16(ResultsOff1);} ;
98  virtual inline uint32_t hasPhysicsBlock() const {return getHeader16(ResultsOff2);} ;
99  virtual inline uint32_t hasRawDataBlock() const {return getHeader16(RawDataBlkOff);} ;
100  virtual inline uint32_t hasControlWords() const {return getHeader16(RawDataBlkOff);} ;
101 
102  // ----------------- Printing methods -----------------
103  // print the full ROD fragment
104  //virtual void dumpFragment();
105 private:
106  void clearBlocks();
107  virtual void resetPointers();
108  //Separated blocks for encoding
109 
110  // One raw data block per gain to start with
111  std::vector<uint32_t> m_RawDataBlock;
112  //Counter for channels inside of a FEB
114  int m_Result1Index = 0;
116  int m_Result2Index = 0;
118  int m_RawDataIndex = 0;
119  //For fixed gain mode
121  //FIXME, very ugly hack! See explanation in LArRodDecoder.h
122 public:
123  inline uint16_t getNTrigger() const;
124  inline uint16_t getDAC() const;
125  inline uint16_t getDelay() const;
126  inline uint32_t getFebConfig() const;
127  inline bool getPulsed(const unsigned channelNumber) const;
128 
129  virtual bool canSetCalibration() {return false;}
130 };
131 
132 
134 {
135  return getHeader32(FebConfig);
136 }
137 
138 inline bool LArRodBlockCalibrationV1::getPulsed(const unsigned channelNumber) const
139 {
141  //std::cout << " ===> in getPulsed " << std::hex << (m_FebBlock[index+IsPulsed/2]) << " " << (m_FebBlock[index+(IsPulsed/2+1)]) << " " << (m_FebBlock[index+(IsPulsed/2+2)]) << " " << (m_FebBlock[index+(IsPulsed/2+3)]) << " " << std::dec << channelNumber << " i=" << i << " ii=" << ii << std::endl;
142  return getBit(m_FebBlock+index+IsPulsed/2,channelNumber);
143 }
144 
145 
146 
147 #endif
LArRodBlockCalibrationV1::Delay
@ Delay
Definition: LArRodBlockCalibrationV1.h:52
LArRodBlockStructure
Definition: LArRodBlockStructure.h:48
LArRodBlockCalibrationV1::getNextRawData
virtual int getNextRawData(int &channelNumber, std::vector< short > &samples, uint32_t &gain)
Definition: LArRodBlockCalibrationV1.cxx:58
LArRodBlockCalibrationV1::FebConfig
@ FebConfig
Definition: LArRodBlockCalibrationV1.h:42
LArRodBlockCalibrationV1::m_fixedGain
int m_fixedGain
Definition: LArRodBlockCalibrationV1.h:120
LArRodBlockCalibrationV1::feb_ssw6
@ feb_ssw6
Definition: LArRodBlockCalibrationV1.h:68
LArRodBlockCalibrationV1::IsPulsed2
@ IsPulsed2
Definition: LArRodBlockCalibrationV1.h:56
LArRodBlockCalibrationV1::feb_ssw1
@ feb_ssw1
Definition: LArRodBlockCalibrationV1.h:63
LArRodBlockCalibrationV1::IsPulsed
@ IsPulsed
Definition: LArRodBlockCalibrationV1.h:54
LArRodBlockCalibrationV1::canSetCalibration
virtual bool canSetCalibration()
Definition: LArRodBlockCalibrationV1.h:129
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
LArRodBlockCalibrationV1::EventStatus
@ EventStatus
Definition: LArRodBlockCalibrationV1.h:38
LArRodBlockCalibrationV1::FEBID
@ FEBID
Definition: LArRodBlockCalibrationV1.h:28
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LArRodBlockCalibrationV1::m_RawDataIndex
int m_RawDataIndex
Definition: LArRodBlockCalibrationV1.h:118
index
Definition: index.py:1
LArRodBlockCalibrationV1::hasControlWords
virtual uint32_t hasControlWords() const
Definition: LArRodBlockCalibrationV1.h:100
LArRodBlockCalibrationV1::feb_ssw
@ feb_ssw
Definition: LArRodBlockCalibrationV1.h:62
LArRodBlockCalibrationV1::NSamples
@ NSamples
Definition: LArRodBlockCalibrationV1.h:41
LArRodBlockCalibrationV1::LArRodBlockCalibrationV1
LArRodBlockCalibrationV1()
Definition: LArRodBlockCalibrationV1.cxx:25
LArRodBlockCalibrationV1::m_Result1Counter
int m_Result1Counter
Definition: LArRodBlockCalibrationV1.h:113
LArRodBlockCalibrationV1::ResultsOff2
@ ResultsOff2
Definition: LArRodBlockCalibrationV1.h:34
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
LArRodBlockCalibrationV1::IsPulsed3
@ IsPulsed3
Definition: LArRodBlockCalibrationV1.h:57
LArRodBlockCalibrationV1::endtag
@ endtag
Definition: LArRodBlockCalibrationV1.h:70
LArRodBlockCalibrationV1::getCtrl3
virtual uint16_t getCtrl3(uint32_t adc) const
Definition: LArRodBlockCalibrationV1.cxx:352
LArRodBlockCalibrationV1::getDAC
uint16_t getDAC() const
Definition: LArRodBlockCalibrationV1.cxx:288
LArRodBlockCalibrationV1::getNextAccumulatedCalibDigit
virtual int getNextAccumulatedCalibDigit(int &channelNumber, std::vector< std::vector< uint32_t > > &samplesSum, std::vector< std::vector< uint32_t > > &samples2Sum, uint32_t &iStepTrigger, uint32_t &gain)
Definition: LArRodBlockCalibrationV1.cxx:149
LArRodBlockStructure::m_FebBlock
const uint32_t * m_FebBlock
Definition: LArRodBlockStructure.h:227
LArRodBlockCalibrationV1::m_RawDataBlock
std::vector< uint32_t > m_RawDataBlock
Definition: LArRodBlockCalibrationV1.h:111
LArRodBlockCalibrationV1::ResultsDim2
@ ResultsDim2
Definition: LArRodBlockCalibrationV1.h:35
LArRodBlockCalibrationV1::NTrigger_h
@ NTrigger_h
Definition: LArRodBlockCalibrationV1.h:49
LArRodBlockCalibrationV1::IsPulsed7
@ IsPulsed7
Definition: LArRodBlockCalibrationV1.h:61
LArRodBlockCalibrationV1::RawDataBlkDim
@ RawDataBlkDim
Definition: LArRodBlockCalibrationV1.h:37
LArRodBlockCalibrationV1::getNTrigger
uint16_t getNTrigger() const
Definition: LArRodBlockCalibrationV1.cxx:280
LArRodBlockCalibrationV1::getCtrl1
virtual uint16_t getCtrl1(uint32_t adc) const
Definition: LArRodBlockCalibrationV1.cxx:320
LArRodBlockCalibrationV1::IsPulsed6
@ IsPulsed6
Definition: LArRodBlockCalibrationV1.h:60
LArRodBlockStructure::getHeader32
uint32_t getHeader32(const unsigned n) const
Definition: LArRodBlockStructure.h:365
LArRodBlockCalibrationV1::feb_ssw7
@ feb_ssw7
Definition: LArRodBlockCalibrationV1.h:69
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
LArRodBlockCalibrationV1::ResultsDim1
@ ResultsDim1
Definition: LArRodBlockCalibrationV1.h:33
LArRodBlockCalibrationV1::resetPointers
virtual void resetPointers()
Definition: LArRodBlockCalibrationV1.cxx:38
LArRodBlockCalibrationV1::clearBlocks
void clearBlocks()
Definition: LArRodBlockCalibrationV1.cxx:33
LArRodBlockCalibrationV1
This class provides decoding/encoding from/to ROD format.
Definition: LArRodBlockCalibrationV1.h:22
LArRodBlockCalibrationV1::feb_ssw2
@ feb_ssw2
Definition: LArRodBlockCalibrationV1.h:64
LArRodBlockCalibrationV1::NWTot_h
@ NWTot_h
Definition: LArRodBlockCalibrationV1.h:27
01SubmitToGrid.samples
samples
Definition: 01SubmitToGrid.py:58
LArRodBlockCalibrationV1::IsPulsed4
@ IsPulsed4
Definition: LArRodBlockCalibrationV1.h:58
LArRodBlockCalibrationV1::Delay_h
@ Delay_h
Definition: LArRodBlockCalibrationV1.h:53
LArRodBlockCalibrationV1::hasPhysicsBlock
virtual uint32_t hasPhysicsBlock() const
Definition: LArRodBlockCalibrationV1.h:98
LArRodBlockCalibrationV1::feb_ssw3
@ feb_ssw3
Definition: LArRodBlockCalibrationV1.h:65
LArRodBlockCalibrationV1::feb_ssw4
@ feb_ssw4
Definition: LArRodBlockCalibrationV1.h:66
LArRodBlockCalibrationV1::getNumberOfGains
virtual uint32_t getNumberOfGains() const
Definition: LArRodBlockCalibrationV1.cxx:275
LArRodBlockStructure::getBit
int getBit(const uint32_t *const p, const unsigned chan) const
Definition: LArRodBlockStructure.h:433
LArRodBlockCalibrationV1::InFPGAFormat_h
@ InFPGAFormat_h
Definition: LArRodBlockCalibrationV1.h:45
LArRodBlockCalibrationV1::getCtrl2
virtual uint16_t getCtrl2(uint32_t adc) const
Definition: LArRodBlockCalibrationV1.cxx:336
LArRodBlockCalibrationV1::Dac
@ Dac
Definition: LArRodBlockCalibrationV1.h:50
LArRodBlockCalibrationV1::NGains
@ NGains
Definition: LArRodBlockCalibrationV1.h:40
LArRodBlockCalibrationV1::getTDCPhase
virtual uint8_t getTDCPhase() const
Definition: LArRodBlockCalibrationV1.cxx:50
LArRodBlockCalibrationV1::m_Result1Index
int m_Result1Index
Definition: LArRodBlockCalibrationV1.h:114
LArRodBlockCalibrationV1::ResultsOff1
@ ResultsOff1
Definition: LArRodBlockCalibrationV1.h:32
LArRodBlockCalibrationV1::FEB_SN
@ FEB_SN
Definition: LArRodBlockCalibrationV1.h:30
LArRodBlockCalibrationV1::getPulsed
bool getPulsed(const unsigned channelNumber) const
Definition: LArRodBlockCalibrationV1.h:138
LArRodBlockCalibrationV1::NTrigger
@ NTrigger
Definition: LArRodBlockCalibrationV1.h:48
LArRodBlockCalibrationV1::getRadd
virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const
Definition: LArRodBlockCalibrationV1.cxx:309
LArRodBlockStructure.h
LArRodBlockCalibrationV1::IsPulsed1
@ IsPulsed1
Definition: LArRodBlockCalibrationV1.h:55
LArRodBlockCalibrationV1::FebConfig_h
@ FebConfig_h
Definition: LArRodBlockCalibrationV1.h:43
LArRodBlockCalibrationV1::FEBID_h
@ FEBID_h
Definition: LArRodBlockCalibrationV1.h:29
LArRodBlockCalibrationV1::getFebConfig
uint32_t getFebConfig() const
Definition: LArRodBlockCalibrationV1.h:133
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
LArRodBlockCalibrationV1::hasCalibBlock
virtual uint32_t hasCalibBlock() const
Definition: LArRodBlockCalibrationV1.h:97
LArRodBlockCalibrationV1::EventStatus_h
@ EventStatus_h
Definition: LArRodBlockCalibrationV1.h:39
LArRodBlockCalibrationV1::BlockType
std::string BlockType()
Definition: LArRodBlockCalibrationV1.h:76
LArRodBlockCalibrationV1::getNumberOfSamples
virtual uint32_t getNumberOfSamples() const
Definition: LArRodBlockCalibrationV1.cxx:270
LArRodBlockCalibrationV1::NWTot
@ NWTot
Definition: LArRodBlockCalibrationV1.h:26
LArRodBlockCalibrationV1::getDelay
uint16_t getDelay() const
Definition: LArRodBlockCalibrationV1.cxx:295
LArRodBlockStructure::getNextAccumulatedCalibDigit
virtual int getNextAccumulatedCalibDigit(int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &Samples2Sum, uint32_t &nStepTriggers, uint32_t &gain)
Definition: LArRodBlockStructure.cxx:94
LArRodBlockCalibrationV1::FEB_SN_h
@ FEB_SN_h
Definition: LArRodBlockCalibrationV1.h:31
LArRodBlockCalibrationV1::IsPulsed5
@ IsPulsed5
Definition: LArRodBlockCalibrationV1.h:59
LArRodBlockCalibrationV1::Dac_h
@ Dac_h
Definition: LArRodBlockCalibrationV1.h:51
LArRodBlockCalibrationV1::feb_ssw5
@ feb_ssw5
Definition: LArRodBlockCalibrationV1.h:67
CaloGain.h
LArRodBlockCalibrationV1::m_Result2Index
int m_Result2Index
Definition: LArRodBlockCalibrationV1.h:116
LArRodBlockCalibrationV1::getStatus
virtual uint32_t getStatus() const
Definition: LArRodBlockCalibrationV1.cxx:372
LArRodBlockStructure::getHeader16
uint16_t getHeader16(const unsigned n) const
Definition: LArRodBlockStructure.h:355
LArRodBlockCalibrationV1::m_Result2Counter
int m_Result2Counter
Definition: LArRodBlockCalibrationV1.h:115
LArRodBlockCalibrationV1::RawDataBlkOff
@ RawDataBlkOff
Definition: LArRodBlockCalibrationV1.h:36
LArRodBlockCalibrationV1::hasRawDataBlock
virtual uint32_t hasRawDataBlock() const
Definition: LArRodBlockCalibrationV1.h:99
LArRodBlockCalibrationV1::InFPGAFormat
@ InFPGAFormat
Definition: LArRodBlockCalibrationV1.h:44
LArRodBlockCalibrationV1::m_RawDataCounter
int m_RawDataCounter
Definition: LArRodBlockCalibrationV1.h:117