| [3683] | 1 | #ifndef  BRPROC_H_SEEN | 
|---|
|  | 2 | #define  BRPROC_H_SEEN | 
|---|
| [3635] | 3 |  | 
|---|
|  | 4 | //---------------------------------------------------------------- | 
|---|
| [3683] | 5 | // Projet BAORadio - (C) LAL/IRFU  2008-2010 | 
|---|
|  | 6 | // Classes de threads de traitememt donnees BAORadio | 
|---|
| [3635] | 7 | //---------------------------------------------------------------- | 
|---|
|  | 8 |  | 
|---|
|  | 9 |  | 
|---|
|  | 10 | #include <string> | 
|---|
|  | 11 | #include <vector> | 
|---|
|  | 12 | #include <iostream> | 
|---|
| [3683] | 13 |  | 
|---|
|  | 14 | #include "racqumem.h" | 
|---|
|  | 15 | #include "brbaseproc.h" | 
|---|
| [3724] | 16 | #include "parlex.h" | 
|---|
| [3635] | 17 | #include "sopnamsp.h" | 
|---|
| [3683] | 18 | #include "tvector.h" | 
|---|
|  | 19 | #include "ntuple.h" | 
|---|
|  | 20 | #include "datatable.h" | 
|---|
| [3635] | 21 |  | 
|---|
|  | 22 | using namespace std; | 
|---|
|  | 23 |  | 
|---|
|  | 24 |  | 
|---|
|  | 25 | //--------------------------------------------------------------------- | 
|---|
| [3683] | 26 | // Classe de traitement - calcul de visibilite pour n fibres | 
|---|
| [3635] | 27 | //--------------------------------------------------------------------- | 
|---|
| [3724] | 28 | class BRVisibilityCalculator : public BRBaseProcessor, ParallelTaskInterface { | 
|---|
| [3683] | 29 | public: | 
|---|
|  | 30 | BRVisibilityCalculator(RAcqMemZoneMgr& memgr, string outpath, uint_4 nmean=1000, | 
|---|
| [3724] | 31 | uint_4 freq1=0, uint_4 freq2=0, uint_4 nbfreq=1, size_t nthr=1); | 
|---|
| [3683] | 32 | virtual ~BRVisibilityCalculator(); // Fait le nettoyage final , sauvegarde des objets ... | 
|---|
| [3652] | 33 |  | 
|---|
| [3724] | 34 | virtual void run(); | 
|---|
| [3705] | 35 | // Pour activer la verification des timetag | 
|---|
|  | 36 | // Creation / sauvegarde d'une matrice de TimeTag / FrameCounter avec NCols=maxnpaq (nb de paquets/trigger) | 
|---|
|  | 37 | int ActivateTimeTagCheck(uint_8 maxnpaq); | 
|---|
| [3724] | 38 |  | 
|---|
|  | 39 | // Methode de la classe ParallelTaskInterface | 
|---|
|  | 40 | virtual int    execute(int tid); | 
|---|
| [3705] | 41 |  | 
|---|
| [3703] | 42 | protected: | 
|---|
| [3683] | 43 | virtual int Process(); | 
|---|
| [3692] | 44 | virtual int FillVisibTable(double fcm, double ttm); | 
|---|
| [3705] | 45 | virtual int CheckTimeTag(); | 
|---|
| [3692] | 46 |  | 
|---|
| [3724] | 47 | ParallelExecutor paralex_;  // Pour l'execution en parallele | 
|---|
|  | 48 | size_t nparthr_; | 
|---|
|  | 49 |  | 
|---|
| [3683] | 50 | uint_4 nmean_;  // Nombre de spectres pour le calcul des moyennes | 
|---|
|  | 51 | string outpath_;  // directory pour fichiers de sortie | 
|---|
|  | 52 | uint_4 numfreq1_,numfreq2_,nbinfreq_; | 
|---|
| [3692] | 53 | uint_4 jf1_,jf2_,djf_; | 
|---|
| [3689] | 54 |  | 
|---|
| [3694] | 55 | vector<TwoByteComplex*> vpdata_; | 
|---|
| [3726] | 56 | bool* fgallfibok; | 
|---|
| [3694] | 57 |  | 
|---|
| [3692] | 58 | double moyfc_, moytt_; | 
|---|
|  | 59 | TMatrix< complex<r_4> > vismtx_; | 
|---|
|  | 60 | TVector< uint_4 > chanum_; | 
|---|
|  | 61 | //  FitsInOutFile dtfos_; | 
|---|
|  | 62 | DataTable visdt_; | 
|---|
|  | 63 |  | 
|---|
| [3694] | 64 | uint_4 numfile_; | 
|---|
| [3705] | 65 | uint_8 totnbpaq_; | 
|---|
| [3692] | 66 | double* xnt_; | 
|---|
| [3705] | 67 |  | 
|---|
|  | 68 | // Variables/objets pour la verifications des timetag | 
|---|
|  | 69 | bool fgcktt_;  // true -> checktimetag | 
|---|
| [3711] | 70 | int_8 mindeltatt_;       // difference minimum de deux timetag successifs | 
|---|
| [3705] | 71 | TMatrix< uint_8 > fcmtx_; // matrices des framecounters | 
|---|
|  | 72 | TMatrix< uint_8 > ttmtx_; // matrices des timetag | 
|---|
|  | 73 | vector< uint_8 > vlasttt_;  // dernieres valeurs de TimeTag / fibre | 
|---|
|  | 74 | vector< uint_8 > vbadtt_;  // Number of bad TimeTag paquets per fiber | 
|---|
|  | 75 | vector< uint_8 > vnsamett_;  // Number of paquets having TimeTag <> TT_Fiber1 per fiber | 
|---|
| [3709] | 76 | vector< uint_8 > vndiff5tt_;  // Number of paquets having |TimeTag-TT_Fiber1|>5 per fiber | 
|---|
|  | 77 |  | 
|---|
| [3683] | 78 | }; | 
|---|
|  | 79 |  | 
|---|
|  | 80 |  | 
|---|
|  | 81 | //------------------------------------------------------------------------- | 
|---|
|  | 82 | //    **** OBSOLETE : BRProcA2C et BRProcB4C | 
|---|
|  | 83 | //   Anciennes classes de traitement (Avant Nov2009) utilises par mcrd.cc | 
|---|
|  | 84 | //------------------------------------------------------------------------- | 
|---|
|  | 85 | //--------------------------------------------------------------------- | 
|---|
|  | 86 | // Classe thread de traitement avec 2 voies par frame (donnees raw/FFT | 
|---|
|  | 87 | //--------------------------------------------------------------------- | 
|---|
|  | 88 |  | 
|---|
| [3652] | 89 | /*-- Arguments du constructeur : | 
|---|
|  | 90 | o mem : gestionnaire zones memoires avec contenant les "frames" avec 2 voies/frame | 
|---|
|  | 91 | o path : Chemin et nom des fichiers PPF produits (on ajoute _numero.ppf ) | 
|---|
|  | 92 | o nmean : Nombre de frame (paquets) moyennes | 
|---|
|  | 93 | o nmax : Nombre maxi de frames traites | 
|---|
|  | 94 | o fghist = true -> fait aussi l'histo des valeurs des echantillons temps | 
|---|
| [3656] | 95 | o nfsmap>0 : fabrication de cartes (image 2D) des spectres, | 
|---|
|  | 96 | avec nfsmap=nombre de frequences sommes | 
|---|
| [3652] | 97 | o fgnotrl = true -> fichiers fits / paquets sans trailer | 
|---|
|  | 98 | o card : numero de carte , juste pour les impressions | 
|---|
|  | 99 | */ | 
|---|
| [3683] | 100 | class BRProcA2C : public ZThread { | 
|---|
| [3635] | 101 | public: | 
|---|
| [3683] | 102 | BRProcA2C(RAcqMemZoneMgr& mem, string& path, bool fgraw, | 
|---|
|  | 103 | uint_4 nmean=10, uint_4 nmax=100, bool fgtshist=false, | 
|---|
|  | 104 | uint_4 nfsmap=0, bool fgnotrl=false, int card=1); | 
|---|
| [3635] | 105 | virtual void run(); | 
|---|
|  | 106 | void Stop(); | 
|---|
|  | 107 | inline void STOP() { stop_ = true; } | 
|---|
|  | 108 | protected: | 
|---|
|  | 109 | RAcqMemZoneMgr& memgr; | 
|---|
|  | 110 | bool stop_; | 
|---|
| [3683] | 111 | bool fgraw_;   // true -> raw data | 
|---|
| [3635] | 112 | uint_4 nmax_;  // Nombre maxi de blocs MemZone traites | 
|---|
| [3656] | 113 | uint_4 nmean_;  // Nombre de spectres pour le calcul des moyennes | 
|---|
|  | 114 | uint_4 nfsmap_;  // Binning en frequence pour les cartes 2D temps-freq | 
|---|
| [3635] | 115 | string path_; | 
|---|
| [3652] | 116 | bool fghist_;   // if true, fill and save histogram with time sample values | 
|---|
| [3640] | 117 | bool fgnotrl_;   // if true, don't check packet trailer - when using pre-june fits files | 
|---|
| [3645] | 118 | int card_;   // Numeros de voies 2*card_-1, 2*card_ | 
|---|
| [3635] | 119 | }; | 
|---|
|  | 120 |  | 
|---|
| [3645] | 121 | //--------------------------------------------------------------------- | 
|---|
| [3683] | 122 | // Classe thread de traitement 2 x 2 voies/paquet (Apres BRProcA2C) | 
|---|
| [3645] | 123 | //--------------------------------------------------------------------- | 
|---|
| [3652] | 124 | /*-- Arguments du constructeur : | 
|---|
|  | 125 | o mem1,mem2 : gestionnairea zones memoires avec contenant les donnees des 4 voies (2 voies/frame) | 
|---|
|  | 126 | o path : Chemin et nom des fichiers PPF produits (on ajoute _numero.ppf ) | 
|---|
|  | 127 | o nmean : Nombre de frame (paquets) moyennes | 
|---|
|  | 128 | o nmax : Nombre maxi de frames traites | 
|---|
|  | 129 | o fgnotrl = true -> fichiers fits / paquets sans trailer | 
|---|
|  | 130 | o card : numero de carte , juste pour les impressions | 
|---|
|  | 131 | */ | 
|---|
|  | 132 |  | 
|---|
| [3683] | 133 | class BRProcB4C : public ZThread { | 
|---|
| [3645] | 134 | public: | 
|---|
| [3683] | 135 | BRProcB4C(RAcqMemZoneMgr& mem1, RAcqMemZoneMgr& mem2, string& path, | 
|---|
|  | 136 | bool fgraw, uint_4 nmean=10, uint_4 nmax=100, bool fgnotrl=false); | 
|---|
| [3645] | 137 | virtual void run(); | 
|---|
|  | 138 | void Stop(); | 
|---|
|  | 139 | inline void STOP() { stop_ = true; } | 
|---|
|  | 140 | protected: | 
|---|
|  | 141 | RAcqMemZoneMgr& memgr1; | 
|---|
|  | 142 | RAcqMemZoneMgr& memgr2; | 
|---|
|  | 143 | bool stop_; | 
|---|
| [3683] | 144 | bool fgraw_;   // true -> raw data | 
|---|
| [3645] | 145 | uint_4 nmax_;  // Nombre maxi de blocs MemZone traites | 
|---|
|  | 146 | uint_4 nmean_;  // Nombre de blocs pour le calcul des moyennes | 
|---|
|  | 147 | string path_; | 
|---|
|  | 148 | bool fgnotrl_;   // if true, don't check packet trailer - when using pre-june fits files | 
|---|
|  | 149 | }; | 
|---|
| [3635] | 150 |  | 
|---|
| [3645] | 151 |  | 
|---|
|  | 152 |  | 
|---|
| [3635] | 153 | #endif | 
|---|