Logo Coherent WaveBurst  
Reference Guide
Logo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
cwb_dump_inj.C
Go to the documentation of this file.
1 // dump the list of injections : used by the cwb_dump command
2 
3 {
4  #include <vector>
5 
7 
8  TB.checkFile(gSystem->Getenv("CWB_ROOTLOGON_FILE"));
9  TB.checkFile(gSystem->Getenv("CWB_PARAMETERS_FILE"));
10  TB.checkFile(gSystem->Getenv("CWB_UPARAMETERS_FILE"));
11 
12  network NET; // network
13 
14  if(!simulation) {
15  cout << "cwb_dump_inj.C : dump injection type list works only in simulation mode !!!" << endl;
16  exit(1);
17  }
18 
19  if(TString(frFiles[nIFO])!="") { // MDC from frame files : read MDC list from MDC frames log file
20 
21  cout << "cwb_dump_inj.C : Opening MDC frame file ... " << frFiles[nIFO] << endl;
22  TB.checkFile(frFiles[nIFO]);
23  CWB::frame ifr(frFiles[nIFO]);
24  int nfrFiles=ifr.getNfiles();
25  cout << "MDC " << " -> nfrFiles : " << nfrFiles << endl;
26  waveSegment mdc_range = ifr.getFrRange();
27  cout << "mdc_range : " << mdc_range.start << " " << mdc_range.stop << endl;
28  double GPS = (mdc_range.stop+mdc_range.start)/2;
29  int nINJ = NET.readMDClog(injectionList,GPS);
30  printf("GPS: %16.6f saved, injections: %d\n",GPS,nINJ);
31  //for(int i=0;i<NET.mdcType.size();i++) cout << i << " " << NET.mdcType[i] << endl;
32  //for(int i=0;i<NET.mdcTime.size();i++) cout << i << " " << NET.mdcTime[i] << endl;
33 
34  } else { // MDC from cWB engine : read MDC list from configPlugin
35 
36  cout << "cwb_dump_inj.C : read MDC list from configPlugin ... " << configPlugin.GetTitle() << endl;
37  TB.checkFile(configPlugin.GetTitle());
38 
39  // export to CINT net,cfg
40  char cmd[128];
41  sprintf(cmd,"network* net = new network;");
42  gROOT->ProcessLine(cmd);
44  cfg->Import();
45  sprintf(cmd,"CWB::config* cfg = (CWB::config*)%p;",cfg);
46  gROOT->ProcessLine(cmd);
47  sprintf(cmd,"int gIFACTOR=1;");
48  gROOT->ProcessLine(cmd);
49  // exec config plugin
50  configPlugin.Exec();
51 // MDC.Print();
52 
53  // fill mdcType list
54  NET.mdcType.clear();
55  if(MDC.GetInspiral()!="") { // inspiral MDC type
56  NET.mdcType.push_back(MDC.GetInspName.Data());
57  } else { // burst MDC type
58 
59  for(int i=0;i<(int)MDC.wfList.size();i++) {
60  bool save=true;
61  for(int j=0; j<(int)NET.mdcType.size(); j++){
62  if(MDC.wfList[i].name.CompareTo(NET.mdcType[j])==0) {save = false; break;}
63  }
64  if(save) {
65  NET.mdcType.push_back(MDC.wfList[i].name.Data());
66  }
67  }
68  }
69  //cout.precision(14);
70  //for(int k=0;k<(int)NET.mdcType.size();k++) cout << k << " mdcType " << NET.mdcType[k] << endl;
71  }
72 
73  if(NET.mdcType.size()==0) {
74  cout << endl << "cwb_dump_inj.C - Error : injection types not found !!! " << endl << endl;
75  exit(1);
76  }
77 
78  // dump the inj list to file
79 
80  char mdc_inj_file[1024];
81  sprintf(mdc_inj_file,"%s/%s.inj",dump_dir,data_label);
82  bool overwrite=TB.checkFile(mdc_inj_file,true);
83  if(!overwrite) gSystem->Exit(1);
84 
85  FILE* fP;
86  if((fP = fopen(mdc_inj_file, "w")) == NULL) {
87  cout << "cwb_dump_inj.C : cannot open output file " << mdc_inj_file <<". \n";
88  exit(1);
89  };
90  cout << "Write output file : " << mdc_inj_file << endl << endl;
91  for(int i=0;i<NET.mdcType.size();i++) {
92  char ostr[256];
93  sprintf(ostr,"MDC_SET\t%4d\t%20s\t%6.0f\t%6.0f",i,NET.mdcType[i].data(),(fLow+fHigh)/2.,(fHigh-fLow)/2.);
94  cout << ostr << endl;
95  fprintf(fP,"%s\n",ostr);
96  }
97  fclose(fP);
98 
99  char cmd[256];
100  sprintf(cmd,"sort -k 3 -d %s > %s",mdc_inj_file,TString(mdc_inj_file).ReplaceAll(".inj",".inj.tmp").Data());
101  //cout << cmd << endl;
102  gSystem->Exec(cmd);
103  sprintf(cmd,"mv %s %s",TString(mdc_inj_file).ReplaceAll(".inj",".inj.tmp").Data(),mdc_inj_file);
104  //cout << cmd << endl;
105  gSystem->Exec(cmd);
106  cout << endl;
107  cout << "Output inj MDC file : " << mdc_inj_file << endl << endl;
108 
109  exit(0);
110 }
double start
Definition: network.hh:37
char mdc_inj_file[1024]
printf("total live time: non-zero lags = %10.1f \n", liveTot)
size_t readMDClog(char *, double=0., int=11, int=12)
param: MDC log file param: approximate gps time
Definition: network.cc:3339
fprintf(stdout,"start=%f duration=%f rate=%f\n", x.start(), x.size()/x.rate(), x.rate())
double fHigh
TString("c")
CWB::config * cfg
Definition: cwb_dump_inj.C:43
char frFiles[NIFO_MAX+1][256]
Definition: test_config1.C:166
std::vector< std::string > mdcType
Definition: network.hh:595
CWB::mdc * MDC
int j
Definition: cwb_net.C:10
i drho i
void Import(TString umacro="")
Definition: config.cc:334
static bool checkFile(TString fName, bool question=false, TString message="")
Definition: Toolbox.cc:3956
CWB::Toolbox TB
Definition: ComputeSNR.C:5
FILE * fP
Definition: cwb_dump_inj.C:85
waveSegment getFrRange()
Definition: frame.hh:89
char injectionList[1024]
#define nIFO
char data_label[512]
Definition: test_config1.C:160
i() int(T_cor *100))
network NET
Definition: cwb_dump_inj.C:12
char cmd[128]
Definition: cwb_dump_inj.C:40
int getNfiles()
Definition: frame.hh:92
int nfrFiles[nIFO+1]
Definition: cwb_net.C:174
vector< waveform > wfList
Definition: mdc.hh:355
condor_log_dir ReplaceAll("X_HOME", uhome.Data())
double fLow
char dump_dir[512]
Definition: test_config1.C:156
#define GPS
bool overwrite
Definition: cwb_dump_inj.C:82
TMacro configPlugin
bool save
simulation
Definition: cwb_eced.C:9
fclose(ftrig)
TString config
double stop
Definition: network.hh:38
sprintf(cmd,"network* net = new network;")
exit(0)