CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes
EcalDCCTBHeaderRuntypeDecoder Class Reference

#include <EcalDCCHeaderRuntypeDecoder.h>

Public Member Functions

bool Decode (unsigned long headerWord, EcalDCCHeaderBlock *theHeader)
 
 EcalDCCTBHeaderRuntypeDecoder ()
 
 ~EcalDCCTBHeaderRuntypeDecoder ()
 

Protected Member Functions

void CleanEcalDCCSettingsInfo (EcalDCCHeaderBlock::EcalDCCEventSettings *theEventSettings)
 
void DecodeSetting (int settings, EcalDCCHeaderBlock *theHeader)
 

Protected Attributes

bool WasDecodingOk_
 

Detailed Description

Definition at line 6 of file EcalDCCHeaderRuntypeDecoder.h.

Constructor & Destructor Documentation

EcalDCCTBHeaderRuntypeDecoder::EcalDCCTBHeaderRuntypeDecoder ( )

Definition at line 8 of file EcalDCCHeaderRuntypeDecoder.cc.

8 {;}
EcalDCCTBHeaderRuntypeDecoder::~EcalDCCTBHeaderRuntypeDecoder ( )

Definition at line 9 of file EcalDCCHeaderRuntypeDecoder.cc.

9 {;}

Member Function Documentation

void EcalDCCTBHeaderRuntypeDecoder::CleanEcalDCCSettingsInfo ( EcalDCCHeaderBlock::EcalDCCEventSettings theEventSettings)
protected

Definition at line 114 of file EcalDCCHeaderRuntypeDecoder.cc.

References EcalDCCHeaderBlock::EcalDCCEventSettings::delay, EcalDCCHeaderBlock::EcalDCCEventSettings::LaserFilter, EcalDCCHeaderBlock::EcalDCCEventSettings::LaserPower, EcalDCCHeaderBlock::EcalDCCEventSettings::MEMVinj, EcalDCCHeaderBlock::EcalDCCEventSettings::mgpa_content, EcalDCCHeaderBlock::EcalDCCEventSettings::ped_offset, and EcalDCCHeaderBlock::EcalDCCEventSettings::wavelength.

Referenced by DecodeSetting().

114  {
115  dummySettings->LaserPower =-1;
116  dummySettings->LaserFilter =-1;
117  dummySettings->wavelength =-1;
118  dummySettings->delay =-1;
119  dummySettings->MEMVinj =-1;
120  dummySettings->mgpa_content =-1;
121  dummySettings->ped_offset =-1;
122 }
bool EcalDCCTBHeaderRuntypeDecoder::Decode ( unsigned long  headerWord,
EcalDCCHeaderBlock theHeader 
)

Definition at line 11 of file EcalDCCHeaderRuntypeDecoder.cc.

References EcalDCCHeaderBlock::BEAMH2, EcalDCCHeaderBlock::BEAMH4, EcalDCCHeaderBlock::COSMIC, DecodeSetting(), EcalDCCHeaderBlock::LASER_DELAY_SCAN, EcalDCCHeaderBlock::LASER_POWER_SCAN, EcalDCCHeaderBlock::LASER_STD, EcalDCCHeaderBlock::LED_STD, EcalDCCHeaderBlock::MTCC, EcalDCCHeaderBlock::PEDESTAL_25NS_SCAN, EcalDCCHeaderBlock::PEDESTAL_OFFSET_SCAN, EcalDCCHeaderBlock::PEDESTAL_STD, lumiContext::sequence, EcalDCCHeaderBlock::setMemGain(), EcalDCCHeaderBlock::setMgpaGain(), EcalDCCHeaderBlock::setRunType(), EcalDCCHeaderBlock::TESTPULSE_MGPA, EcalDCCHeaderBlock::TESTPULSE_SCAN_MEM, and WasDecodingOk_.

Referenced by EcalTB07DaqFormatter::interpretRawData(), and EcalTBDaqFormatter::interpretRawData().

11  {
12 
13  // unsigned long DCCNumberMask = 63;//2^6-1
14 
15  unsigned long WhichHalfOffSet = 64;//2^6
16  unsigned long TypeOffSet = 256;//2^8
17  unsigned long SubTypeOffSet = 2048;//2^11
18  unsigned long SettingOffSet = 131072;//2^17;
19  unsigned long GainModeOffSet = 16384;//2^14
20 
21  unsigned long TwoBitsMask = 3;
22  unsigned long ThreeBitsMask = 7;
23  unsigned long ThirdBitMask = 4;
24 
25  // EcalDCCTBHeaderInfos->setId( int ( headerWord & DCCNumberMask) );
26  EcalDCCHeaderInfos-> setRtHalf( int ((headerWord / WhichHalfOffSet) & TwoBitsMask) );
27  int type = int ((headerWord / TypeOffSet) & ThreeBitsMask);
28  int sequence = int ((headerWord / SubTypeOffSet) & ThreeBitsMask);
29  EcalDCCHeaderInfos->setMgpaGain(int ((headerWord / GainModeOffSet) & TwoBitsMask) );
30  EcalDCCHeaderInfos->setMemGain( int ((headerWord / GainModeOffSet) & ThirdBitMask)/ThirdBitMask );
31  // EcalDCCHeaderInfos.Setting = int ( headerWord / SettingOffSet);
32 
33 
34  if (type ==0 && sequence == 0){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::COSMIC);}
35 // begin: added for XDAQ 3
36  else if (type ==0 && sequence == 1){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::COSMIC);}
37  else if (type ==0 && sequence == 2){
38  EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::BEAMH4);}
39  else if (type ==0 && sequence == 3){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::BEAMH2);}
40  else if (type ==0 && sequence == 4){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::MTCC);}
41 // end: added for XDAQ 3
42  else if (type ==1 && sequence == 0){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::LASER_STD);}
43  else if (type ==1 && sequence == 1){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::LASER_POWER_SCAN);}
44  else if (type ==1 && sequence == 2){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::LASER_DELAY_SCAN);}
45  else if (type ==2 && sequence == 0){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::TESTPULSE_SCAN_MEM);}
46  else if (type ==2 && sequence == 1){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::TESTPULSE_MGPA);}
47  else if (type ==3 && sequence == 0){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::PEDESTAL_STD);}
48  else if (type ==3 && sequence == 1){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::PEDESTAL_OFFSET_SCAN);}
49  else if (type ==3 && sequence == 2){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::PEDESTAL_25NS_SCAN);}
50  else if (type ==4 && sequence == 0){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::LED_STD);}
51  else {
52  edm::LogWarning("EcalTBRawToDigi") <<"@SUB=EcalDCCHeaderRuntypeDecoder::Decode unrecognized runtype and sequence: "<<type<<" "<<sequence;
53  EcalDCCHeaderInfos->setRunType(-1);
54  WasDecodingOk_ = false;
55  }
56 
57 
58  DecodeSetting (int ( headerWord / SettingOffSet),EcalDCCHeaderInfos);
59 
60 
61  return WasDecodingOk_;
62 }
type
Definition: HCALResponse.h:22
void DecodeSetting(int settings, EcalDCCHeaderBlock *theHeader)
void EcalDCCTBHeaderRuntypeDecoder::DecodeSetting ( int  settings,
EcalDCCHeaderBlock theHeader 
)
protected

Definition at line 64 of file EcalDCCHeaderRuntypeDecoder.cc.

References EcalDCCHeaderBlock::BEAMH2, EcalDCCHeaderBlock::BEAMH4, CleanEcalDCCSettingsInfo(), EcalDCCHeaderBlock::COSMIC, EcalDCCHeaderBlock::EcalDCCEventSettings::delay, EcalDCCHeaderBlock::getRunType(), EcalDCCHeaderBlock::LASER_DELAY_SCAN, EcalDCCHeaderBlock::LASER_POWER_SCAN, EcalDCCHeaderBlock::LASER_STD, EcalDCCHeaderBlock::EcalDCCEventSettings::LaserFilter, EcalDCCHeaderBlock::EcalDCCEventSettings::LaserPower, EcalDCCHeaderBlock::LED_STD, EcalDCCHeaderBlock::EcalDCCEventSettings::MEMVinj, EcalDCCHeaderBlock::EcalDCCEventSettings::mgpa_content, EcalDCCHeaderBlock::MTCC, EcalDCCHeaderBlock::EcalDCCEventSettings::ped_offset, EcalDCCHeaderBlock::PEDESTAL_25NS_SCAN, EcalDCCHeaderBlock::PEDESTAL_OFFSET_SCAN, EcalDCCHeaderBlock::PEDESTAL_STD, EcalDCCHeaderBlock::setEventSettings(), EcalDCCHeaderBlock::TESTPULSE_MGPA, EcalDCCHeaderBlock::TESTPULSE_SCAN_MEM, WasDecodingOk_, and EcalDCCHeaderBlock::EcalDCCEventSettings::wavelength.

Referenced by Decode().

65 {
66  EcalDCCHeaderBlock::EcalDCCEventSettings theSettings;// = new EcalDCCEventSettings;
67  CleanEcalDCCSettingsInfo(&theSettings);
68 
69  if( theHeader->getRunType() == EcalDCCHeaderBlock::COSMIC ||
70  theHeader->getRunType() == EcalDCCHeaderBlock::BEAMH2 ||
71  theHeader->getRunType() == EcalDCCHeaderBlock::BEAMH4 ||
72  theHeader->getRunType() == EcalDCCHeaderBlock::MTCC
73  )
74  {;}//no settings foreseen
75  else if(theHeader->getRunType() == EcalDCCHeaderBlock::LASER_STD)
76  {
77  theSettings.LaserPower = (Setting & 8128)/64;
78  theSettings.LaserFilter = (Setting & 56)/8;
79  theSettings.wavelength = Setting & 7;
80  }
81  else if(theHeader->getRunType() == EcalDCCHeaderBlock::LASER_POWER_SCAN){
82  theSettings.LaserPower = (Setting & 8128)/64;
83  theSettings.LaserFilter = (Setting & 56)/8;
84  theSettings.wavelength = Setting & 7;
85  }
86  else if(theHeader->getRunType() == EcalDCCHeaderBlock::LASER_DELAY_SCAN){
87  theSettings.wavelength = Setting & 7;
88  theSettings.delay = (Setting & 2040)/8;
89  }
90  else if(theHeader->getRunType() == EcalDCCHeaderBlock::TESTPULSE_SCAN_MEM){
91  theSettings.MEMVinj = Setting & 511;
92  }
93  else if(theHeader->getRunType() == EcalDCCHeaderBlock::TESTPULSE_MGPA){
94  theSettings.mgpa_content = Setting & 255;
95  }
96  else if(theHeader->getRunType() == EcalDCCHeaderBlock::PEDESTAL_STD){;}//no settings foreseen
98  theSettings.ped_offset = Setting;
99  }
100  else if(theHeader->getRunType() == EcalDCCHeaderBlock::PEDESTAL_25NS_SCAN ){
101  theSettings.delay = (Setting & 255);
102  }
103  else if(theHeader->getRunType() == EcalDCCHeaderBlock::LED_STD){
104  theSettings.wavelength = Setting & 7;
105  }
106  else {
107  edm::LogWarning("EcalTBRawToDigi") <<"@SUB=EcalDCCTBHeaderRuntypeDecoder::DecodeSettings unrecognized run type: "<<theHeader->getRunType();
108  WasDecodingOk_ = false;
109  }
110  theHeader->setEventSettings(theSettings);
111 
112 }
void CleanEcalDCCSettingsInfo(EcalDCCHeaderBlock::EcalDCCEventSettings *theEventSettings)
void setEventSettings(const EcalDCCEventSettings &EventSettings)
short getRunType() const

Member Data Documentation

bool EcalDCCTBHeaderRuntypeDecoder::WasDecodingOk_
protected

Definition at line 13 of file EcalDCCHeaderRuntypeDecoder.h.

Referenced by Decode(), and DecodeSetting().