Jpp 19.3.0-rc.3
the software that should make you happy
Loading...
Searching...
No Matches
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
17KM3NeT_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
36void 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
65void 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
#define DEBUG_MSG(str, lev)
boost::shared_ptr< KM3::TOALIB::CTOAFinder::probeSignalT > pProbe
boost::function< void(ToA_Packet packet)> callback_send_toa
#define BSWAP_64(x)
Definition KM3NeT_DOM.h:20
void Add_probe(pProbe probe, std::size_t id, std::size_t threshold)
void Append(real_type sample)
void Check_time(Audio_Header header)
Audio_Header header_
Definition KM3NeT_DOM.h:55
void Handle_samples(uint8_t *buffer, uint32_t length)
Definition KM3NeT_DOM.cc:65
KM3NeT_Audio_Channel ch_n2
Definition KM3NeT_DOM.h:61
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
uint32_t audio_word_size_
Definition KM3NeT_DOM.h:58
virtual ~KM3NeT_DOM()
Definition KM3NeT_DOM.cc:31
KM3NeT_Audio_Channel ch_n1
Definition KM3NeT_DOM.h:60
void Check_time(Audio_Header header)
Definition KM3NeT_DOM.cc:42
void Add_probe(pProbe probe, std::size_t id, std::size_t threshold)
Definition KM3NeT_DOM.cc:36
DAQ_Common_Header Common_Header
uint8_t Samplig_Rate
union Info_Word::Info_Word_Bitfield Info
struct Info_Word::Info_Word_Bitfield::@0 Bits