#include #include #include "branap.h" #include "minifits.h" #include "strutilxx.h" #include "sopnamsp.h" //-------------------------------------------------------------- // Projet BAORadio - (C) LAL/IRFU 2008-2010 // Classe de gestion des parametres programmes d'analyse //-------------------------------------------------------------- /* --Methode-- */ BRAnaParam::BRAnaParam(uint_4 nmean, uint_4 nzon, uint_4 npaqz) { outpath_="./"; fgfitsout_=false; imin_=imax_=0; istep_=1; rdsamefc_=true; // read paquets with same frame counter freqmin_=0; freqmax_=-1; nbinfreq_=1; paqsize_=16424; nzones_=nzon; npaqinzone_=npaqz; fgdatafft_=false; fgforceraworfft_=false; fgsinglechannel_=false; fgforcesingleortwochan_=false; prtlevel_=0; prtmodulo_=50000; prtmodulo2_=10; nmean_=nmean; fgtimeinterval_=false; timeinterval_=1.; nbloc_=1; nbcalgrp_=1; nthreads_=1; spec_win_sz_=0; spw_ext_sz_=0; nbmax_specwfiles_=0; vmin_=0.; vmax_=9e99; nbands_=0; bandfirst_ = bandlast_ = 0; fgdtpaq_ = fgdtms_ = false; fgfreqfilter_=false; //JEC 1/2/11 medhalfwidth_=50; //JEC 6/4/11 gainfile_=""; proctimeduration_=9.e9; fgtimeselect_=false; } /* --Methode-- */ int BRAnaParam::DecodeArgs(int narg, char* arg[]) { if ((narg>1)&&(strcmp(arg[1],"-h")==0)) return Usage(false); if (narg<5) return Usage(true); bool okarg=false; int ka=1; while (ka<(narg-1)) { if (strcmp(arg[ka],"-act")==0) { action_=arg[ka+1]; ka+=2; } else if (strcmp(arg[ka],"-out")==0) { outpath_=arg[ka+1]; size_t lenp=outpath_.size(); if ((lenp>0)&&(outpath_[lenp-1]!='/')) outpath_+='/'; ka+=2; } else if (strcmp(arg[ka],"-fitsout")==0) { fgfitsout_=true; ka++; } else if (strcmp(arg[ka],"-nmean")==0) { nmean_=atoi(arg[ka+1]); ka+=2; } else if (strcmp(arg[ka],"-tmint")==0) { timeinterval_=atof(arg[ka+1]); fgtimeinterval_=true; ka+=2; } else if (strcmp(arg[ka],"-nbloc")==0) { nbloc_=atoi(arg[ka+1]); ka+=2; } else if (strcmp(arg[ka],"-freq")==0) { sscanf(arg[ka+1],"%d,%d,%d",&freqmin_,&freqmax_,&nbinfreq_); ka+=2; } else if (strcmp(arg[ka],"-zones")==0) { int nzon=4; int npaqz=128; sscanf(arg[ka+1],"%d,%d",&nzon,&npaqz); nzones_=nzon; npaqinzone_=npaqz; ka+=2; } else if (strcmp(arg[ka],"-prt")==0) { sscanf(arg[ka+1],"%d,%ld,%ld",&prtlevel_,&prtmodulo_,&prtmodulo2_); ka+=2; } else if (strcmp(arg[ka],"-nthr")==0) { nthreads_=atoi(arg[ka+1]); ka+=2; } else if (strcmp(arg[ka],"-nvcal")==0) { nbcalgrp_=atoi(arg[ka+1]); ka+=2; } else if (strcmp(arg[ka],"-nosfc")==0) { rdsamefc_=false; ka++; } else if (strcmp(arg[ka],"-singlechan")==0) { fgsinglechannel_=true; fgforcesingleortwochan_ = true; ka++; } else if (strcmp(arg[ka],"-twochan")==0) { fgsinglechannel_=false; fgforcesingleortwochan_ = true; ka++; } else if (strcmp(arg[ka],"-rawdata")==0) { fgforceraworfft_=true; fgdatafft_ = false; ka++; } else if (strcmp(arg[ka],"-fftdata")==0) { fgforceraworfft_=true; fgdatafft_ = true; ka++; } else if (strcmp(arg[ka],"-varcut")==0) { sscanf(arg[ka+1],"%lg,%lg",&vmin_,&vmax_); ka+=2; } else if (strcmp(arg[ka],"-nband")==0) { sscanf(arg[ka+1],"%d,%d,%d",&nbands_,&bandfirst_,&bandlast_); ka+=2; } else if (strcmp(arg[ka],"-fdtpaq")==0) { fgdtpaq_=true; ka++; } else if (strcmp(arg[ka],"-fdtms")==0) { fgdtms_=true; ka++; } else if (strcmp(arg[ka],"-freqfilter")==0) { fgfreqfilter_=true; ka++; if (strcmp(arg[ka],"-")!=0) medhalfwidth_=atof(arg[ka]); ka++; } //-tmproc hh:mm:ss,nseconds else if (strcmp(arg[ka],"-tmproc")==0) { int ah=0,am=0; double as=0, als=0; sscanf(arg[ka+1],"%d:%d:%lg,%lg",&ah,&am,&as,&als); fgtimeselect_=true; proctimeduration_=als; proctimestart_.SetHour(ah,am,as); ka+=2; } else if (strcmp(arg[ka],"-gain")==0) { gainfile_=arg[ka+1]; ka+=2; } else if (strcmp(arg[ka],"-tspwin")==0) { int ai1=0,ai2=0,ai3=0; sscanf(arg[ka+1],"%d,%d,%d",&ai1,&ai2,&ai3); spec_win_sz_=ai1; spw_ext_sz_=ai2; nbmax_specwfiles_=ai3; ka+=2; } else if (strcmp(arg[ka],"-in")==0) { if ((narg-ka)<4) { cout << " BRAnaParam::DecodeArgs() / Argument error " << endl; return Usage(true); } sscanf(arg[ka+1],"%d,%d,%d",&imin_,&imax_,&istep_); ka+=2; while(ka<(narg-1)) { string inpath = arg[ka]; size_t lenp=inpath.size(); if (lenp<1) inpath="./"; if ((lenp>0)&&(inpath[lenp-1]!='/')) inpath+='/'; vector fiblist; string sa1 = arg[ka+1]; FillVStringFrString(sa1, fiblist, ','); char dbuff[32]; for(size_t i=0; i0) tmstart.Set(fkvs); fkvs=mff.GetKeyValue("TMSTART"); if (fkvs.length()>0) tmstart.Set(fkvs); return 0; }