Logo Coherent WaveBurst  
Reference Guide
Logo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CWB_Plugin_MDC_Frames.C
Go to the documentation of this file.
1 //!NOISE_MDC_SIMULATION
2 // Plugin used to setup frame files and log MDC 'on the fly' using simulation=4
3 
4 #define XIFO 4
5 
6 #pragma GCC system_header
7 
8 #include "cwb.hh"
9 #include "config.hh"
10 #include "network.hh"
11 #include "wavearray.hh"
12 #include "TString.h"
13 #include "TObjArray.h"
14 #include "TObjString.h"
15 #include "TRandom.h"
16 #include "TComplex.h"
17 #include "TMath.h"
18 #include "cwb2G.hh"
19 #include "mdc.hh"
20 #include <vector>
21 
22 
23 void
25 
26  if(type==CWB_PLUGIN_CONFIG) {
27  cfg->mdcPlugin=true; // disable read mdc from frames
28  }
29 
30  if(type==CWB_PLUGIN_MDC) {
31 
32  cout << "Execute CWB_Plugin_MDC_Frames.C : Inject On The Fly MDC ..." << endl;
33 
34  int ifoID =0; for(int n=0;n<cfg->nIFO;n++) if(ifo==net->getifo(n)->Name) {ifoID=n;break;}
35 
36  int nIFO = net->ifoListSize(); // number of detectors
37  int gIFACTOR = -1; IMPORT(int,gIFACTOR)
38  int xstart = (int)x->start();
39  int xstop = (int)x->stop();
40  int segEdge = int(cfg->segEdge);
41 
42  cwb2G* gCWB2G; IMPORT(cwb2G*,gCWB2G)
43 
44  // Export parms to the config plugin
45  static bool cfg_init = false;
46  if(!cfg_init) { // declaration is made only one time to avoid cling error
47  char cmd[128];
48  sprintf(cmd,"CWB::config* cfg = (CWB::config*)%p;",cfg);
49  gROOT->ProcessLine(cmd);
50  cfg_init=true;
51  }
52  CWB_PLUGIN_EXPORT(gIFACTOR)
53 
54  // Export MDC frame files & log from plugin config
55  std::vector<TString> mdcPar;
56  CWB_PLUGIN_EXPORT(mdcPar)
57  // Export mdcType
58  std::vector<std::string> mdcType;
59  CWB_PLUGIN_EXPORT(mdcType)
60  // Export channelName
61  std::vector<std::string> channelName;
62  CWB_PLUGIN_EXPORT(channelName)
63 
64  // read plugin config
65  cfg->configPlugin.Exec();
66 
67  TString injectionList = mdcPar[0];
68  TString frFiles = mdcPar[1];
69  cout << "injectionList : " << injectionList << endl;
70  cout << "frFiles : " << frFiles << endl;
71 
72  // open frame file
73  CWB::frame fr;
74  fr.open(frFiles.Data());
75  fr.setVerbose();
76  fr.setRetryTime(cfg->frRetryTime);
77  fr.setSRIndex(TMath::Nint(TMath::Log2(cfg->inRate))); // force data to be resampled to inRate
78  int nfrFiles = fr.getNfiles();
79  cout << "MDC " << " -> nfrFiles : " << nfrFiles << endl;
80  if(cfg->mdc_shift.startMDC<0) { // the mdc shift is automatically selected
81  // read mdc range from mdc frl files
82  waveSegment mdc_range = fr.getFrRange();
83  cout << "mdc_range : " << mdc_range.start << " " << mdc_range.stop << endl;
84  cfg->mdc_shift.startMDC=mdc_range.start;
85  cfg->mdc_shift.stopMDC=mdc_range.stop;
86  }
87  double mdcShift = CWB::Toolbox::getMDCShift(cfg->mdc_shift, xstart);
88  cout << "mdcShift : " << mdcShift << endl;
89 
90  // read injection list
91  net->mdcList.clear();
92  net->mdcType.clear();
93  net->mdcTime.clear();
94  vector<TString> ifos(nIFO);
95  for(int n=0;n<nIFO;n++) ifos[n] = net->getifo(n)->Name;
96  int i=net->readMDClog(const_cast<char*>(injectionList.Data()),double(long(gCWB2G->Tb))-mdcShift);
97  for(int i=0;i<(int)net->mdcTime.size();i++) net->mdcTime[i]+=mdcShift;
98  printf("GPS: %16.6f saved, injections: %d\n",double(long(gCWB2G->Tb)),i);
99  net->mdcType=mdcType;
100 
101  // read frame file
102  frfile FRF = fr.getFrList(xstart-mdcShift+segEdge, xstop-mdcShift-segEdge, segEdge);
103  fr.readFrames(FRF,const_cast<char*>(channelName[ifoID].c_str()),*x);
104  x->start(x->start()+mdcShift);
105  if(x->rate()!=cfg->inRate)
106  {cout << "CWB_Plugin_MDC_Frames.C - input rate from frame " << x->rate()
107  << " do not match the one defined in config : " << cfg->inRate << endl;gSystem->Exit(1);}
108 
109  // print MDC injections list
110  cout.precision(14);
111  if(ifo.CompareTo(net->ifoName[0])==0) {
112  //for(int k=0;k<(int)net->mdcList.size();k++) cout << k << " mdcList " << net->mdcList[k] << endl;
113  //for(int k=0;k<(int)net->mdcTime.size();k++) cout << k << " mdcTime " << net->mdcTime[k] << endl;
114  for(int k=0;k<(int)net->mdcType.size();k++) cout << k << " mdcType " << net->mdcType[k] << endl;
115  }
116 
117  }
118 
119  return;
120 }
std::vector< char * > ifoName
Definition: network.hh:591
detector * getifo(size_t n)
param: detector index
Definition: network.hh:418
CWB::config * cfg
Definition: TestCWB_Plugin.C:5
double startMDC
Definition: Toolbox.hh:88
double start
Definition: network.hh:37
printf("total live time: non-zero lags = %10.1f \n", liveTot)
TMacro configPlugin
Definition: config.hh:344
char cmd[1024]
size_t readMDClog(char *, double=0., int=11, int=12)
param: MDC log file param: approximate gps time
Definition: network.cc:3339
bool mdcPlugin
Definition: config.hh:347
virtual void rate(double r)
Definition: wavearray.hh:123
int n
Definition: cwb_net.C:10
cout<< "skymap size : "<< L<< endl;for(int l=0;l< L;l++) sm.set(l, l);sm > const_cast< char * >("skymap.dat")
TString("c")
double Tb
Definition: cwb.hh:269
double stopMDC
Definition: Toolbox.hh:89
cout<< endl;cout<< "ts size = "<< ts.size()<< " ts rate = "<< ts.rate()<< endl;tf.Forward(ts, wdm);int levels=tf.getLevel();cout<< "tf size = "<< tf.size()<< endl;double dF=tf.resolution();double dT=1./(2 *dF);cout<< "rate(hz) : "<< RATE<< "\t layers : "<< nLAYERS<< "\t dF(hz) : "<< dF<< "\t dT(ms) : "<< dT *1000.<< endl;int itime=TIME_PIXEL_INDEX;int ifreq=FREQ_PIXEL_INDEX;int index=(levels+1)*itime+ifreq;double time=itime *dT;double freq=(ifreq >0)?ifreq *dF:dF/4;cout<< endl;cout<< "PIXEL TIME = "<< time<< " sec "<< endl;cout<< "PIXEL FREQ = "<< freq<< " Hz "<< endl;cout<< endl;wavearray< double > x
CWB::frame fr(FRLIST_NAME)
char frFiles[NIFO_MAX+1][256]
Definition: test_config1.C:166
void CWB_Plugin(TFile *jfile, CWB::config *cfg, network *net, WSeries< double > *x, TString ifo, int type)
COHERENCE.
std::vector< std::string > mdcType
Definition: network.hh:595
virtual void start(double s)
Definition: wavearray.hh:119
double segEdge
Definition: test_config1.C:49
i drho i
std::vector< double > mdcTime
Definition: network.hh:596
char ifo[NIFO_MAX][8]
Definition: cwb2G.hh:15
network ** net
NOISE_MDC_SIMULATION.
size_t ifoListSize()
Definition: network.hh:413
waveSegment getFrRange()
Definition: frame.hh:89
char injectionList[1024]
double mdcShift
Definition: cwb_net.C:178
double segEdge
Definition: config.hh:146
#define nIFO
jfile
Definition: cwb_job_obj.C:25
#define CWB_PLUGIN_EXPORT(VAR)
Definition: CWB_Plugin.h:18
#define IMPORT(TYPE, VAR)
Definition: cwb.hh:51
i() int(T_cor *100))
std::vector< std::string > mdcList
Definition: network.hh:594
int gIFACTOR
void setVerbose(bool verbose=true)
Definition: frame.hh:119
frfile FRF[nIFO+1]
Definition: cwb_net.C:251
int k
int frRetryTime
Definition: config.hh:326
int getNfiles()
Definition: frame.hh:92
int nfrFiles[nIFO+1]
Definition: cwb_net.C:174
void setSRIndex(int srIndex)
Definition: frame.hh:96
static double getMDCShift(mdcshift mshift, double time)
Definition: Toolbox.cc:2276
mdcshift mdc_shift
Definition: config.hh:193
char Name[16]
Definition: detector.hh:309
virtual void stop(double s)
Definition: wavearray.hh:121
void readFrames(char *filename, char *channel, wavearray< double > &w)
Definition: frame.cc:810
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
frfile getFrList(int istart, int istop, int segEdge)
Definition: frame.cc:509
int nIFO
Definition: config.hh:102
void setRetryTime(int frRetryTime=60)
Definition: frame.hh:123
void open(TString ioFile, TString chName="", Option_t *option="", bool onDisk=false, TString label=".gwf", unsigned int mode=0)
Definition: frame.cc:212
double stop
Definition: network.hh:38
size_t inRate
Definition: config.hh:114
TString ifos[60]