source: Sophya/trunk/AddOn/TAcq/vismfib.cc@ 3938

Last change on this file since 3938 was 3895, checked in by ansari, 15 years ago

correction bugs divers ds calcul visibilites avec plusieurs threads en execution parallele et amelioration prints, Reza 28/09/2010

File size: 3.9 KB
Line 
1// Utilisation de SOPHYA pour faciliter les tests ...
2#include "sopnamsp.h"
3#include "machdefs.h"
4
5/* ----------------------------------------------------------
6 Programme de lecture / calcul de visibilite multi-canaux
7 BAORadio - LAL/IRFU R. Ansari, C. Magneville
8 V1 : Nov 2009
9 ---------------------------------------------------------- */
10
11// include standard c/c++
12#include <iostream>
13#include <string>
14#include <exception>
15
16// include sophya mesure ressource CPU/memoire ...
17#include "resusage.h"
18#include "ctimer.h"
19#include "timing.h"
20#include "timestamp.h"
21#include "strutilxx.h"
22#include "tarrinit.h"
23#include "histinit.h"
24
25#include "brpaqu.h"
26#include "brfitsrd.h"
27#include "brproc.h"
28#include "brviscalc.h"
29#include "brdiskw.h"
30
31#include "branap.h"
32
33
34
35//----------------------------------------------------
36//----------------------------------------------------
37int main(int narg, char* arg[])
38{
39
40 TArrayInitiator _inia;
41
42 int rc = 0;
43 try {
44 // Decodage parametres
45 BRAnaParam par;
46 cout << " ===> visimfib.cc: decoding command line arguments " << endl;
47 rc = par.DecodeArgs(narg, arg);
48 if (rc) return rc;
49 rc = par.PaqSizeFromFits();
50 if (rc) return rc;
51 par.Print(cout);
52 if ((par.action_!="cube3d")&&(par.action_!="vis")&&(par.action_!="viscktt")) {
53 cout << " !!! visimfib.cc BAD action = " << par.action_ << " possible values: vis,viscktt,cube3d" << endl;
54 return 5;
55 }
56
57 cout << " ---------- visimfib.cc Start - Action= " << par.action_ << " ------------- " << endl;
58 ResourceUsage resu;
59
60 cout << " visimfib: Creating MemZoneMgr/threads - PaqSz= " << par.paqsize_ << endl;
61
62 RAcqMemZoneMgr mmgr(par.nzones_, par.dirlist_.size(), par.npaqinzone_, par.paqsize_);
63 if (par.action_ == "cube3d") mmgr.SetFinalizedMask((uint_4)MemZS_Saved);
64 else {
65 if (par.nbcalgrp_==2)
66 mmgr.SetFinalizedMask((uint_4)MemZS_ProcA|(uint_4)MemZS_ProcB);
67 else if (par.nbcalgrp_==3)
68 mmgr.SetFinalizedMask((uint_4)MemZS_ProcA|(uint_4)MemZS_ProcB|(uint_4)MemZS_ProcC);
69 else if (par.nbcalgrp_==4)
70 mmgr.SetFinalizedMask((uint_4)MemZS_ProcA|(uint_4)MemZS_ProcB|(uint_4)MemZS_ProcC|(uint_4)MemZS_ProcD);
71 else if (par.nbcalgrp_==5)
72 mmgr.SetFinalizedMask((uint_4)MemZS_ProcA|(uint_4)MemZS_ProcB|(uint_4)MemZS_ProcC|(uint_4)MemZS_ProcD|(uint_4)MemZS_ProcE);
73 else if (par.nbcalgrp_==6)
74 mmgr.SetFinalizedMask((uint_4)MemZS_ProcA|(uint_4)MemZS_ProcB|(uint_4)MemZS_ProcC|
75 (uint_4)MemZS_ProcD|(uint_4)MemZS_ProcE|(uint_4)MemZS_ProcF);
76 else mmgr.SetFinalizedMask((uint_4)MemZS_ProcA);
77 }
78 BRMultiFitsReader reader(mmgr, par.dirlist_, par.rdsamefc_, par.imin_, par.imax_, par.istep_);
79 reader.SetPrintLevel(par.prtlevel_,par.prtmodulo_);
80
81 /* BRVisibilityCalculator proc(mmgr, par.outpath_, par.nmean_, par.nthreads_);
82 proc.SelectFreqBinning(par.freqmin_, par.freqmax_, par.nbinfreq_); */
83 BRVisCalcGroup procg(par.nbcalgrp_, mmgr, par.outpath_, par.nmean_, par.nthreads_);
84 procg.SelectFreqBinning(par.freqmin_, par.freqmax_, par.nbinfreq_);
85
86 if (par.action_ == "viscktt") procg.ActivateTimeTagCheck(par.TotalNPaquets());
87
88 FitsCubeWriter wrt(mmgr, par.outpath_, par.nbloc_);
89 // BRBaseProcessor proc(mmgr);
90
91 cout << " visimfib: Starting threads (reader procVisi) ... " << endl;
92 reader.start();
93 if (par.action_ == "cube3d") wrt.start();
94 else procg.start();
95 usleep(200000);
96 reader.join();
97 if (par.action_ == "cube3d") wrt.join();
98 else procg.join();
99 mmgr.Print(cout);
100 cout << resu ;
101 }
102 catch (std::exception& sex) {
103 cerr << "\n visimfib.cc std::exception :" << (string)typeid(sex).name()
104 << "\n msg= " << sex.what() << endl;
105 rc = 78;
106 }
107 catch (...) {
108 cerr << " visimfib.cc catched unknown (...) exception " << endl;
109 rc = 79;
110 }
111
112 cout << ">>>> visimfib.cc ------- END ----------- RC=" << rc << endl;
113 return rc;
114
115}
116
117
Note: See TracBrowser for help on using the repository browser.