![]() |
![]() |
#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_ |
Definition at line 6 of file EcalDCCHeaderRuntypeDecoder.h.
EcalDCCTBHeaderRuntypeDecoder::EcalDCCTBHeaderRuntypeDecoder | ( | ) |
Definition at line 8 of file EcalDCCHeaderRuntypeDecoder.cc.
{;}
EcalDCCTBHeaderRuntypeDecoder::~EcalDCCTBHeaderRuntypeDecoder | ( | ) |
Definition at line 9 of file EcalDCCHeaderRuntypeDecoder.cc.
{;}
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().
{ dummySettings->LaserPower =-1; dummySettings->LaserFilter =-1; dummySettings->wavelength =-1; dummySettings->delay =-1; dummySettings->MEMVinj =-1; dummySettings->mgpa_content =-1; dummySettings->ped_offset =-1; }
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, EcalDCCHeaderBlock::setMemGain(), EcalDCCHeaderBlock::setMgpaGain(), EcalDCCHeaderBlock::setRunType(), EcalDCCHeaderBlock::TESTPULSE_MGPA, EcalDCCHeaderBlock::TESTPULSE_SCAN_MEM, and WasDecodingOk_.
Referenced by EcalTB07DaqFormatter::interpretRawData(), and EcalTBDaqFormatter::interpretRawData().
{ // unsigned long DCCNumberMask = 63;//2^6-1 unsigned long WhichHalfOffSet = 64;//2^6 unsigned long TypeOffSet = 256;//2^8 unsigned long SubTypeOffSet = 2048;//2^11 unsigned long SettingOffSet = 131072;//2^17; unsigned long GainModeOffSet = 16384;//2^14 unsigned long TwoBitsMask = 3; unsigned long ThreeBitsMask = 7; unsigned long ThirdBitMask = 4; // EcalDCCTBHeaderInfos->setId( int ( headerWord & DCCNumberMask) ); EcalDCCHeaderInfos-> setRtHalf( int ((headerWord / WhichHalfOffSet) & TwoBitsMask) ); int type = int ((headerWord / TypeOffSet) & ThreeBitsMask); int sequence = int ((headerWord / SubTypeOffSet) & ThreeBitsMask); EcalDCCHeaderInfos->setMgpaGain(int ((headerWord / GainModeOffSet) & TwoBitsMask) ); EcalDCCHeaderInfos->setMemGain( int ((headerWord / GainModeOffSet) & ThirdBitMask)/ThirdBitMask ); // EcalDCCHeaderInfos.Setting = int ( headerWord / SettingOffSet); if (type ==0 && sequence == 0){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::COSMIC);} // begin: added for XDAQ 3 else if (type ==0 && sequence == 1){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::COSMIC);} else if (type ==0 && sequence == 2){ EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::BEAMH4);} else if (type ==0 && sequence == 3){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::BEAMH2);} else if (type ==0 && sequence == 4){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::MTCC);} // end: added for XDAQ 3 else if (type ==1 && sequence == 0){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::LASER_STD);} else if (type ==1 && sequence == 1){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::LASER_POWER_SCAN);} else if (type ==1 && sequence == 2){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::LASER_DELAY_SCAN);} else if (type ==2 && sequence == 0){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::TESTPULSE_SCAN_MEM);} else if (type ==2 && sequence == 1){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::TESTPULSE_MGPA);} else if (type ==3 && sequence == 0){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::PEDESTAL_STD);} else if (type ==3 && sequence == 1){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::PEDESTAL_OFFSET_SCAN);} else if (type ==3 && sequence == 2){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::PEDESTAL_25NS_SCAN);} else if (type ==4 && sequence == 0){EcalDCCHeaderInfos->setRunType(EcalDCCHeaderBlock::LED_STD);} else { edm::LogWarning("EcalTBRawToDigi") <<"@SUB=EcalDCCHeaderRuntypeDecoder::Decode unrecognized runtype and sequence: "<<type<<" "<<sequence; EcalDCCHeaderInfos->setRunType(-1); WasDecodingOk_ = false; } DecodeSetting (int ( headerWord / SettingOffSet),EcalDCCHeaderInfos); return WasDecodingOk_; }
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().
{ EcalDCCHeaderBlock::EcalDCCEventSettings theSettings;// = new EcalDCCEventSettings; CleanEcalDCCSettingsInfo(&theSettings); if( theHeader->getRunType() == EcalDCCHeaderBlock::COSMIC || theHeader->getRunType() == EcalDCCHeaderBlock::BEAMH2 || theHeader->getRunType() == EcalDCCHeaderBlock::BEAMH4 || theHeader->getRunType() == EcalDCCHeaderBlock::MTCC ) {;}//no settings foreseen else if(theHeader->getRunType() == EcalDCCHeaderBlock::LASER_STD) { theSettings.LaserPower = (Setting & 8128)/64; theSettings.LaserFilter = (Setting & 56)/8; theSettings.wavelength = Setting & 7; } else if(theHeader->getRunType() == EcalDCCHeaderBlock::LASER_POWER_SCAN){ theSettings.LaserPower = (Setting & 8128)/64; theSettings.LaserFilter = (Setting & 56)/8; theSettings.wavelength = Setting & 7; } else if(theHeader->getRunType() == EcalDCCHeaderBlock::LASER_DELAY_SCAN){ theSettings.wavelength = Setting & 7; theSettings.delay = (Setting & 2040)/8; } else if(theHeader->getRunType() == EcalDCCHeaderBlock::TESTPULSE_SCAN_MEM){ theSettings.MEMVinj = Setting & 511; } else if(theHeader->getRunType() == EcalDCCHeaderBlock::TESTPULSE_MGPA){ theSettings.mgpa_content = Setting & 255; } else if(theHeader->getRunType() == EcalDCCHeaderBlock::PEDESTAL_STD){;}//no settings foreseen else if(theHeader->getRunType() == EcalDCCHeaderBlock::PEDESTAL_OFFSET_SCAN){ theSettings.ped_offset = Setting; } else if(theHeader->getRunType() == EcalDCCHeaderBlock::PEDESTAL_25NS_SCAN ){ theSettings.delay = (Setting & 255); } else if(theHeader->getRunType() == EcalDCCHeaderBlock::LED_STD){ theSettings.wavelength = Setting & 7; } else { edm::LogWarning("EcalTBRawToDigi") <<"@SUB=EcalDCCTBHeaderRuntypeDecoder::DecodeSettings unrecognized run type: "<<theHeader->getRunType(); WasDecodingOk_ = false; } theHeader->setEventSettings(theSettings); }
bool EcalDCCTBHeaderRuntypeDecoder::WasDecodingOk_ [protected] |
Definition at line 13 of file EcalDCCHeaderRuntypeDecoder.h.
Referenced by Decode(), and DecodeSetting().