source: Sophya/trunk/AddOn/TAcq/brparam.h@ 3671

Last change on this file since 3671 was 3671, checked in by ansari, 16 years ago
  • Nettoyage complet des programmes d'acquisition
  • Ajout methode BRPaquet::CopyFrom() pour reduction de paquet
  • Introduction des classes BRParList , BRConfList , BRAcqConfig
  • Introduction du nouveau programme acquisition mfacq.cc (MultiFibresAcq)

Reza, 13/11/2009

File size: 6.1 KB
RevLine 
[3671]1#ifndef BRPARAM_H
2#define BRPARAM_H
3
4//---------------------------------------------------------------
5// Logiciels d'acquisition BAORadio
6// LAL - 2009 - 2010 , R. Ansari, M.Taurigna
7//---------------------------------------------------------------
8
9//---------------------------------------------------------------
10// Classes BRParList , BRConfList , BRAcqConfig
11// BRParList : Liste de parametres pour un run d'acquisition
12// BRConfList : Liste des parametres caracterisant une configuration
13// (nombre de cartes, versions firwares ...)
14// BRAcqConfig : Classe donnant acces a un objet global BRParList et
15// un objet global BRConfList
16//---------------------------------------------------------------
17
18#include "machdefs.h"
19#include <string>
20#include "brpaqu.h"
21#include "datacards.h"
22#include "bracqvers.h"
23
24using namespace std;
25using namespace SOPHYA;
26
27#define PMAXNBFIBRES 6
28
29//-----------------------------------------------------------------------------
30//---- Classe de liste des parametres d'acquisition BAORadio
31class BRParList {
32public:
33 BRParList (string fibres="1", unsigned int szframe= 16424, unsigned int nframeDMA = 32,
34 int nfiles=1, string acqmode="fft2c", int nblocfile=10,
35 int nmaxpr = 0, string outpath="TstAcq",
36 uint_4 nzon = 4, uint_4 npaqzon = 128, bool fgcntlc=false);
37
38 BRParList(BRParList const & p);
39
40 void Set(BRParList const & p);
41 ostream& Print(ostream& os) ;
42 void ReadDCFile(string file);
43
44 // Nombre de fibres
45 inline int NFibers() { return NbFibers; }
46 // Taille des operations DMA (en octets)
47 inline uint_4 DMASizeBytes() { return nbFrameDMA*1024; }
48 // Taille des operations DMA (en KB=1024 bytes)
49 inline uint_4 DMASizeKB() { return nbFrameDMA; }
50 // Taille des paquets recus sur PCIExpress
51 inline uint_4 RecvPaquetSize() { return PaqSize; }
52 // Taille des paquets apres reduction eventuelle (donc ds memory manager)
53 inline uint_4 MMgrPaquetSize() { return (fgreducpsize)?redpqsize:PaqSize; }
54 // Operation de conversion/mise en ordre des donnees a la reception
55 inline BRDataFmtConv GetDataConvFg() { return swapall; };
56
57 // Nombre maximum de fichiers enregistres
58 inline uint_4 MaxNbFiles() { return NbFiles; }
59 // Nombre de blocs MMgr dans chaque fichiers
60 inline uint_4 BlocPerFile() { return NBlocPerFile; }
61 // Nombre maximum de blocs MMgr traites
62 inline uint_4 MaxNbBlocs() { return NbFiles*NBlocPerFile; }
63
64 //..........................................
65 void Decode();
66
67 string AcqMode; // Mode d'acquisition (conditionne la mise en ordre/conversion des donnees lues par DMA
68 string FiberListS ; // liste des fibres a utiliser 1,3,4 par exemple
69 int NbFibers; // liste des fibres a utiliser 1,3,4 par exemple
70 int FiberNum[PMAXNBFIBRES];
71
72 string OutPathName; // directory de base
73 string ProcPathName;
74 unsigned int PaqSize ; // taille des paquets ou sizeFrame
75 unsigned int nbFrameDMA ; // taille du dma en multiple de 2 (2 a 56)
76 int NbFiles; // nombre de fichier produits
77 int NBlocPerFile; // nombre de bloc par fichier
78 int NMaxProc; // Nombre de blocs traites par le thread de calcul
79 // Gestionnaire zones memoire
80 uint_4 nZones; // Nombre de zones memoires
81 uint_4 nPaqZone; // 128 Paquets / zone memoire - valeur par defaut
82
83 bool fg_hard_ctrlc ; // autorise le CtrlC si true
84
85 bool savesigfits ; // si true on prduit de sfichier fits
86 bool fgnulldev4fits ;
87
88 BRDataFmtConv swapall ; // type de l'acquisition voir brpaqu.h
89
90 // ---- Pour gerer la reduction des tailles de paquets
91 bool fgreducpsize; // true -> reduction taille des paquets
92 uint_4 redpqsize;
93 uint_4 reducoffset;
94
95 // Pour des tests de performances ou sans carte ADC (pattern)
96 bool monothr ; // pour les test mono thread
97 bool activate_pattern; // true -> on active le pattern du firmware au lieu de la fibre
98
99 double nopciLossRate; // Utilise avec pour les tests sans carte pciexpress TestPCIWrapperNODMA
100};
101
102//-----------------------------------------------------------------------------
103//---- Classe de gestion des parametres d'acquisition -
104//---- Utilise l'instance global de BRParList
105//-----------------------------------------------------------------------------
106
107class BRAcqConfig {
108 public:
109
110 BRAcqConfig();
111
112 inline void ReadDCFile(string file)
113 { param_->ReadDCFile(file); }
114 inline void Set(BRParList& par)
115 { param_->Set(par); }
116 inline ostream& Print(ostream& os)
117 { return param_->Print(os); }
118
119 int CreateOutputDirectories();
120
121 static inline double AcqVersion() { return BAOR_ACQ_VER ; }
122 static inline const char* AcqVersionS() { return BAOR_ACQ_VER_STR ; }
123
124 inline BRParList& GetParams() { return (*param_) ;};
125 inline BRDataFmtConv GetSwapall() { return param_->swapall; };
126 inline bool GetPattern() { return param_->activate_pattern; };
127 inline bool GetMonothr() { return param_->monothr; };
128 inline bool GetSaveFits() { return param_->savesigfits; };
129 inline bool GetFileDevNull() { return param_->fgnulldev4fits; };
130
131 // Nombre de fibres
132 inline int NFibers() { return param_->NbFibers; }
133 // Taille des operations DMA (en octets)
134 inline uint_4 DMASizeBytes() { return param_->DMASizeBytes(); }
135 // Taille des operations DMA (en KB=1024 bytes)
136 inline uint_4 DMASizeKB() { return param_->DMASizeKB(); }
137 // Taille des paquets recus sur PCIExpress
138 inline uint_4 RecvPaquetSize() { return param_->RecvPaquetSize(); }
139 // Taille des paquets apres reduction eventuelle (donc ds memory manager)
140 inline uint_4 MMgrPaquetSize() { return param_->MMgrPaquetSize(); }
141 // Operation de conversion/mise en ordre des donnees a la reception
142 inline BRDataFmtConv GetDataConvFg() { return param_->GetDataConvFg(); };
143
144 // Nombre maximum de fichiers enregistres
145 inline uint_4 MaxNbFiles() { return param_->MaxNbFiles(); }
146 // Nombre de blocs MMgr dans chaque fichiers
147 inline uint_4 BlocPerFile() { return param_->BlocPerFile(); }
148 // Nombre maximum de blocs MMgr traites
149 inline uint_4 MaxNbBlocs() { return param_->MaxNbBlocs(); }
150
151 // repertoire d'acquisition
152 inline string& OutputDirectory() { param_->OutPathName; }
153 string OutputDirectoryFib(int fib);
154
155 protected:
156 static BRParList* param_;
157};
158
159
160#endif
Note: See TracBrowser for help on using the repository browser.