source: Sophya/trunk/AddOn/TAcq/racquproc.h@ 3921

Last change on this file since 3921 was 3876, checked in by ansari, 15 years ago

Ajout de la fonctionalite de calcul des visibilites (sur donnees firmware FFT uniquement) dans le programme d'acquisition mfacq.cc , Reza 09/09/2010

File size: 4.6 KB
Line 
1#ifndef RACQUPROC_H_SEEN
2#define RACQUPROC_H_SEEN
3
4//----------------------------------------------------------------
5// ---- classe de thread de traitememt acquisition BAORadio -----
6// LAL - R. Ansari - 2008-2010
7// A/ Juin 2008 - Juin 2009
8// Classes DataProc, DataProc2C, DataProcFFT2C avec des
9// threads de traitement mono-fibre
10// B/ Novembre 2009
11// MonitorProc : Classe de traitement pour monitoring multifibres
12//----------------------------------------------------------------
13
14
15#include "racqumem.h"
16#include <string>
17#include <vector>
18#include <iostream>
19#include "sopnamsp.h"
20#include "zthread.h"
21#include "tmatrix.h"
22
23#include "brtypes.h"
24#include "brparam.h"
25
26using namespace std;
27
28// Quelques definitions globales
29// Nombre maximum de fibres geres par les classes MonitorProc
30#ifndef MAXNBFIB
31#define MAXNBFIB 32
32#endif
33
34//---------------------------------------------------------------------
35// Classe thread de traitement/monitoring multifibre Raw/FFT
36//---------------------------------------------------------------------
37class MonitorProc : public ZThread {
38public:
39 MonitorProc(RAcqMemZoneMgr& mem);
40 virtual ~MonitorProc();
41 MemZStatus SetMemZAction(MemZaction mmact=MemZA_Proc);
42 virtual void run();
43 void Stop();
44 inline void STOP() { stop_ = true; }
45protected:
46 int procData2C(ofstream& logf);
47 int procData1C(ofstream& logf);
48 int CheckFrameCounters();
49
50 RAcqMemZoneMgr& memgr;
51 MemZaction mmact_; // Definition de l'action sur les paquets (defaut=MemZA_Proc)
52 MemZStatus mmsta_; // Statut associe a mmact_ (defaut=MemZS_Proc)
53 BRParList par_;
54 bool stop_;
55 uint_4 nmax_; // Nombre maxi de blocs MemZone traites
56 uint_4 step_; // 1/step_ paquet traite ds chaque bloc
57 uint_4 nmean_; // Nombre de blocs pour le calcul des moyennes
58 string path_;
59 uint_4 nfiles_;
60 TMatrix<r_4> spectre_;
61 vector<uint_4> nzm_;
62 uint_4 nblocproc_; // nombre total de bloc MemMgr traites
63 uint_8 nprocpaq_; // nombre de paquets traites entre deux mises a zero
64 uint_8 npaqsamefc_; // nombre de paquets avec meme framecounter entre deux mises a zero
65 uint_8 totnprocpaq_; // nombre de paquets traites entre deux mises a zero
66 uint_8 totnpaqsamefc_; // nombre de paquets avec meme framecounter entre deux mises a zero
67 TMatrix<uint_8> curfc_; // Numeros de FrameCounter dans le bloc
68 TMatrix<uint_1> cpaqok_; // Paquets OK ou pas dans le bloc
69};
70
71
72//-------------------------------------------------------------------
73//-------- Premieres version - pour tmtacq.cc
74//-------------------------------------------------------------------
75//-------------------------------------------------------------------
76// Classe thread de traitement avec 1 voie par frame (donnees brutes)
77//-------------------------------------------------------------------
78class DataProc : public ZThread {
79public:
80 DataProc(RAcqMemZoneMgr& mem, string& path, uint_4 nmean=1, uint_4 step=1, uint_4 nmax=100);
81 virtual void run();
82 void Stop();
83 inline void STOP() { stop_ = true; }
84
85protected:
86 RAcqMemZoneMgr& memgr;
87 bool stop_;
88 uint_4 nmax_; // Nombre maxi de blocs MemZone traites
89 uint_4 step_; // 1/step_ frame traite ds chaque bloc
90 uint_4 nmean_; // Nombre de blocs pour le calcul des moyennes
91 string path_;
92 struct sigaction act;
93};
94
95//---------------------------------------------------------------------
96// Classe thread de traitement avec 2 voies par frame (donnees brutes)
97//---------------------------------------------------------------------
98class DataProc2C : public ZThread {
99public:
100 DataProc2C(RAcqMemZoneMgr& mem, string& path, uint_4 nmean=1, uint_4 step=1, uint_4 nmax=100);
101 virtual void run();
102 void Stop();
103 inline void STOP() { stop_ = true; }
104protected:
105 RAcqMemZoneMgr& memgr;
106 bool stop_;
107 uint_4 nmax_; // Nombre maxi de blocs MemZone traites
108 uint_4 step_; // 1/step_ frame traite ds chaque bloc
109 uint_4 nmean_; // Nombre de blocs pour le calcul des moyennes
110 string path_;
111};
112
113//---------------------------------------------------------------------
114// Classe thread de traitement donnees FFT avec 2 voies par frame
115//---------------------------------------------------------------------
116class DataProcFFT2C : public ZThread {
117public:
118 DataProcFFT2C(RAcqMemZoneMgr& mem, string& path, uint_4 nmean=1, uint_4 step=1, uint_4 nmax=100);
119 virtual void run();
120 void Stop();
121 inline void STOP() { stop_ = true; }
122protected:
123 RAcqMemZoneMgr& memgr;
124 bool stop_;
125 uint_4 nmax_; // Nombre maxi de blocs MemZone traites
126 uint_4 step_; // 1/step_ frame traite ds chaque bloc
127 uint_4 nmean_; // Nombre de blocs pour le calcul des moyennes
128 string path_;
129};
130
131#endif
Note: See TracBrowser for help on using the repository browser.