00001 #include "otsdaq-core/DataDecoders/TriggerData.h" 00002 00003 #include <iostream> 00004 00005 using namespace ots; 00006 00007 //======================================================================================================================== 00008 TriggerData::TriggerData(void) 00009 {} 00010 00011 //======================================================================================================================== 00012 TriggerData::~TriggerData(void) 00013 {} 00014 00015 //======================================================================================================================== 00016 bool TriggerData::isTriggerHigh(uint32_t data) 00017 { 00018 //int type = data & 0xf; 00019 //int dataType = (data>>4) & 0xf; 00020 //if(type==8 && dataType==0xb) return true; 00021 if((data & 0xf)==8 && (data & 0xf0)==0xb0) return true; 00022 return false; 00023 } 00024 00025 //======================================================================================================================== 00026 bool TriggerData::isTriggerLow(uint32_t data) 00027 { 00028 //int type = data & 0xf; 00029 //int dataType = (data>>4) & 0xf; 00030 //if(type==8 && dataType==0xa) return true; 00031 if((data & 0xf)==8 && (data & 0xf0)==0xa0) return true; 00032 return false; 00033 } 00034 00035 //======================================================================================================================== 00036 uint32_t TriggerData::decodeTriggerHigh(uint32_t data) 00037 { 00038 return (data>>8) & 0xffffff; 00039 } 00040 00041 //======================================================================================================================== 00042 uint32_t TriggerData::decodeTriggerLow(uint32_t data) 00043 { 00044 return (data>>16) & 0xffff; 00045 } 00046 00047 //======================================================================================================================== 00048 uint64_t TriggerData::mergeTriggerHighAndLow(uint32_t triggerHigh, uint32_t triggerLow) 00049 { 00050 //uint64_t trigger = 0; 00051 //trigger |= ((uint64_t)triggerHigh)<<16; 00052 //trigger |= (uint64_t)triggerLow; 00053 return (((uint64_t)triggerHigh)<<16) + triggerLow; 00054 } 00055 00056 //======================================================================================================================== 00057 void TriggerData::insertTriggerHigh(uint64_t& trigger, uint32_t dataTriggerHigh) 00058 { 00059 trigger |= ((uint64_t)decodeTriggerHigh(dataTriggerHigh))<<16; 00060 } 00061 00062 //======================================================================================================================== 00063 void TriggerData::insertTriggerLow(uint64_t& trigger, uint32_t dataTriggerLow) 00064 { 00065 trigger |= (uint64_t)decodeTriggerLow(dataTriggerLow); 00066 }