otsdaq  v1_01_02
 All Classes Namespaces Functions
TriggerData.cc
1 #include "otsdaq-core/DataDecoders/TriggerData.h"
2 
3 #include <iostream>
4 
5 using namespace ots;
6 
7 //========================================================================================================================
8 TriggerData::TriggerData(void)
9 {}
10 
11 //========================================================================================================================
12 TriggerData::~TriggerData(void)
13 {}
14 
15 //========================================================================================================================
16 bool TriggerData::isTriggerHigh(uint32_t data)
17 {
18  //int type = data & 0xf;
19  //int dataType = (data>>4) & 0xf;
20  //if(type==8 && dataType==0xb) return true;
21  if((data & 0xf)==8 && (data & 0xf0)==0xb0) return true;
22  return false;
23 }
24 
25 //========================================================================================================================
26 bool TriggerData::isTriggerLow(uint32_t data)
27 {
28  //int type = data & 0xf;
29  //int dataType = (data>>4) & 0xf;
30  //if(type==8 && dataType==0xa) return true;
31  if((data & 0xf)==8 && (data & 0xf0)==0xa0) return true;
32  return false;
33 }
34 
35 //========================================================================================================================
36 uint32_t TriggerData::decodeTriggerHigh(uint32_t data)
37 {
38  return (data>>8) & 0xffffff;
39 }
40 
41 //========================================================================================================================
42 uint32_t TriggerData::decodeTriggerLow(uint32_t data)
43 {
44  return (data>>16) & 0xffff;
45 }
46 
47 //========================================================================================================================
48 uint64_t TriggerData::mergeTriggerHighAndLow(uint32_t triggerHigh, uint32_t triggerLow)
49 {
50  //uint64_t trigger = 0;
51  //trigger |= ((uint64_t)triggerHigh)<<16;
52  //trigger |= (uint64_t)triggerLow;
53  return (((uint64_t)triggerHigh)<<16) + triggerLow;
54 }
55 
56 //========================================================================================================================
57 void TriggerData::insertTriggerHigh(uint64_t& trigger, uint32_t dataTriggerHigh)
58 {
59  trigger |= ((uint64_t)decodeTriggerHigh(dataTriggerHigh))<<16;
60 }
61 
62 //========================================================================================================================
63 void TriggerData::insertTriggerLow(uint64_t& trigger, uint32_t dataTriggerLow)
64 {
65  trigger |= (uint64_t)decodeTriggerLow(dataTriggerLow);
66 }