Jpp  18.3.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
KM3NeT_DOM.cc
Go to the documentation of this file.
1 #include "KM3NeT_DOM.h"
2 /**
3  * \author fsimeone
4  */
5 
6 
7 #ifdef DEBUG_KM3NET_DOM
8 #include <stdlib.h>
9 #include <iostream>
10 #include <boost/date_time/posix_time/posix_time.hpp>
11 #include <Tools/KM3NeT_Debug.h>
12 #define DEBUG_MSG(str,lev) do { if (((uint8_t)lev)>=KM3NeT_DOM::DEBUG_LEVEL) { DBG_MSG << boost::posix_time::microsec_clock::local_time() << " DOM(" << (void*)this << "): "<< str << '\n'; } }while( false )
13 #else
14 #define DEBUG_MSG(str,lev) do { } while ( false )
15 #endif
16 
17 KM3NeT_DOM::KM3NeT_DOM( boost::asio::io_service& io_service,\
18  callback_send_toa callback,\
19  std::string& debug_path,\
20  std::size_t window,\
21  std::size_t overlap\
22  ): strand_(io_service),\
23  ch_n1(io_service,callback,1,debug_path,window,overlap),\
24  ch_n2(io_service,callback,2,debug_path,window,overlap)
25 
26 
27 {
28  DEBUG_MSG("Constructor",3);
29 }
30 
32 {
33  DEBUG_MSG("Destructor",3);
34 }
35 
36 void KM3NeT_DOM::Add_probe(pProbe probe, std::size_t id, std::size_t threshold)
37 {
38  ch_n1.Add_probe(probe,id,threshold);
39  ch_n2.Add_probe(probe,id,threshold);
40 }
41 
43 {
44  DEBUG_MSG("CK time",1);
45 
46  header_=header;
49 
50  ch1_=ch2_=false;
53  {
54  ch1_=true;
55  ch2_=true;
58  }
59  else if (header_.Info.Info.Bits.ChannelsSent==1) ch1_=true;
60  else ch2_=true;
63 }
64 
65 void KM3NeT_DOM::Handle_samples(uint8_t* buffer,uint32_t length)
66 {
67  DEBUG_MSG("Hsample",1);
68  uint8_t* l_dummy=buffer;
69  uint8_t l_shift1;
70  uint8_t l_shift2;
71  uint64_t l_mask1;
72  uint64_t l_mask2;
73  real_type l_max=2147483648.;
74 
76  {
77  l_mask1=0x00FFF00000000000;
78  l_mask2=0x00000FFF00000000;
79  l_shift1=24;
80  l_shift2=12;
81  }
83  {
84  l_mask1=0x00FFFF0000000000;
85  l_mask2=0x000000FFFF000000;
86  l_shift1=24;
87  l_shift2=8;
88  }
89  else
90  {
91  l_mask1=0x00FFFFFF00000000;
92  l_mask2=0x00000000FFFFFF00;
93  l_shift1=24;
94  l_shift2=0;
95  }
96 
97  uint32_t l_k=0;
98  int64_t l_audio_w;
99  if(header_.Info.Samplig_Rate != 0){
101  {
102  l_audio_w= BSWAP_64(*((int64_t*)buffer));
103  if(ch1_) ch_n1.Append((real_type) ((int32_t)(((l_audio_w) & l_mask1) >> l_shift1 ))/l_max);
104  if(ch2_) ch_n2.Append((real_type) ((int32_t)(((l_audio_w) & l_mask2) >> l_shift2 ))/l_max);
105  l_k++;
106  buffer+=audio_word_size_;
107  }
108  }
109  free(l_dummy);
110 }
111 
KM3NeT_Audio_Channel ch_n1
Definition: KM3NeT_DOM.h:60
KM3NeT_DOM(boost::asio::io_service &io_service, callback_send_toa callback, std::string &debug_path, std::size_t window=STD_WINDOW, std::size_t overlap=STD_OVERLAP)
Definition: KM3NeT_DOM.cc:17
struct Info_Word::Info_Word_Bitfield::@0 Bits
uint32_t audio_word_size_
Definition: KM3NeT_DOM.h:58
void Check_time(Audio_Header header)
Definition: KM3NeT_DOM.cc:42
void Append(real_type sample)
virtual ~KM3NeT_DOM()
Definition: KM3NeT_DOM.cc:31
Audio_Header header_
Definition: KM3NeT_DOM.h:55
then awk string
uint8_t Samplig_Rate
Info_Word Info
bool ch1_
Definition: KM3NeT_DOM.h:56
uint32_t Time_Stamp_seconds
void Add_probe(pProbe probe, std::size_t id, std::size_t threshold)
void Add_probe(pProbe probe, std::size_t id, std::size_t threshold)
Definition: KM3NeT_DOM.cc:36
#define BSWAP_64(x)
Definition: KM3NeT_DOM.h:20
void Handle_samples(uint8_t *buffer, uint32_t length)
Definition: KM3NeT_DOM.cc:65
DAQ_Common_Header Common_Header
bool overlap(const JRange< T, JComparator_t > &first, const JRange< T, JComparator_t > &second)
Test overlap between ranges.
Definition: JRange.hh:641
boost::shared_ptr< KM3::TOALIB::CTOAFinder::probeSignalT > pProbe
union Info_Word::Info_Word_Bitfield Info
KM3NeT_Audio_Channel ch_n2
Definition: KM3NeT_DOM.h:61
bool ch2_
Definition: KM3NeT_DOM.h:57
#define DEBUG_MSG(str, lev)
Definition: KM3NeT_DOM.cc:14
void Check_time(Audio_Header header)
boost::function< void(ToA_Packet packet)> callback_send_toa