Logo coherent WaveBurst  
Library Reference Guide
Logo
cwb_online.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 # Copyright (C) 2019 Marco Drago, Serena Vinciguerra
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see <https://www.gnu.org/licenses/>.
17 
18 import commands, os, sys, glob
19 import cWB_conf
20 
21 class cwb_create:
22  def __init__(self):
23  self.add_prod_plugin=False
25  self.add_cuts=""
26  #self.web_pages=["run","week","day","mid","hour"]
27  #self.name_pages=["the_whole_run","last_week","last_day","last_12_hours","last_hour"]
28  self.web_pages=["week","day"]
29  self.name_pages=["last_week","last_day"]
30  try:
31  self.prod=cWB_conf.production_dir
32  self.copy=True
33  except:
34  self.copy=False
35 
36  def make_checks(self):
37  #check that scracth is high enough
38  TDSize=12 # time-delay filter size (max 20), from TDSize in $CWB_PARAMETERS_FILE
39  SAMP_RATE = 2**14
40 
41  if cWB_conf.job_offset<=1.5*TDSize/(SAMP_RATE>>(cWB_conf.levelR+cWB_conf.l_high)):
42  print "Error - segEdge must be > 1.5x the length for time delay amplitudes!!! Increase job_offset or decrease levelR + l_high"
43  print "job_offset: ",cWB_conf.job_offset,"levelR ",cWB_conf.levelR,"l_high: ",cWB_conf.l_high
44  exit()
45 
46  # check existing file plugin
47  if hasattr(cWB_conf, 'prod_plugins'):
48  for prod_file in cWB_conf.prod_plugins:
49  if not os.path.exists(prod_file):
50  print "Error - Plugin not found: change \"prod_plugins\" %s entry in cWB_conf.py"%(prod_file)
51  sys.exit(1)
52  else:
53  print "No plugin specified"
54 
55  # check existing lag
56  if hasattr(cWB_conf, 'bkg_laglist'):
57  if not os.path.exists(cWB_conf.bkg_laglist):
58  print "Error - Bkg lag list %s not found: change \"bkg_laglist\" in cWB_conf.py"%(cWB_conf.bkg_laglist)
59  sys.exit(1)
60  else:
61  print "No Lags specified"
62 
63  # check existing superlag
64  if hasattr(cWB_conf, 'bkg_superlaglist'):
65  if not os.path.exists(cWB_conf.bkg_superlaglist):
66  print "Error - Bkg superlag list %s not found: change \"bkg_superlaglist\" in cWB_conf.py"%(cWB_conf.bkg_superlaglist)
67  sys.exit(1)
68  else:
69  print "No Superlags specified"
70 
71 
72  # check existing file Cut
73  if hasattr(cWB_conf, 'Cuts_file'):
74  if not os.path.exists(cWB_conf.Cuts_file):
75  print "Error - Cut file %s not found: change \"Cuts_file\" in cWB_conf.py"%(cWB_conf.Cuts_file)
76  sys.exit(1)
77  else:
78  print "No Cuts specified"
79 
80  # check if certificates exist
81  if hasattr(cWB_conf, 'gracedb_group'):
82  #export X509_USER_CERT=${HOME}/.certificates/waveburst_cwb.ligo.caltech.edu.cert.pem
83  try:
84  X509_USER_CERT=os.environ['X509_USER_CERT']
85  if (len(X509_USER_CERT)==0):
86  print "Error - X509_USER_CERT defined void"
87  exit()
88  else:
89  if not os.path.exists(X509_USER_CERT):
90  print "Error - X509_USER_CERT file %s not found"%X509_USER_CERT
91  exit()
92  except:
93  print "Error - X509_USER_CERT not defined"
94  exit()
95  try:
96  X509_USER_KEY=os.environ['X509_USER_KEY']
97  if (len(X509_USER_KEY)==0):
98  print "Error - X509_USER_KEY defined void"
99  sys.exit(1)
100  else:
101  if not os.path.exists(X509_USER_KEY):
102  print "Error - X509_USER_KEY file %s not found"%X509_USER_KEY
103  sys.exit(1)
104  except:
105  print "Error - X509_USER_KEY not defined"
106  sys.exit(1)
107 
108 #export X509_USER_KEY=${HOME}/.certificates/waveburst.key.pem
109 
110  # check if overwriting directories
111  if os.path.isdir(cWB_conf.web_dir):
112  print "Error - web-directory %s already exists, change \"web_dir\" in cWB_conf.py"%(cWB_conf.web_dir)
113  exit()
114  if os.path.isdir(cWB_conf.online_dir):
115  print "Error - online-directory %s already exists, change \"online_dir\" in cWB_conf.py"%(cWB_conf.online_dir)
116  exit()
117 
118  def make_dirs(self):
119  commands.getstatusoutput("mkdir -p %s"%(cWB_conf.run_dir))
120  commands.getstatusoutput("mkdir -p %s/%s"%(cWB_conf.run_dir,cWB_conf.summaries_dir))
121  commands.getstatusoutput("mkdir -p %s"%(cWB_conf.bkg_run_dir))
122  commands.getstatusoutput("mkdir -p %s/%s"%(cWB_conf.bkg_run_dir,cWB_conf.postprod_dir))
123  commands.getstatusoutput("mkdir -p %s"%(cWB_conf.web_dir))
124  commands.getstatusoutput("mkdir -p %s"%(cWB_conf.config_dir))
125  commands.getstatusoutput("mkdir -p %s/%s"%(cWB_conf.run_dir,cWB_conf.jobs_dir))
126 
127  if (self.copy):
128  commands.getstatusoutput("ln -s %s/%s %s/%s"%(cWB_conf.run_dir.replace(cWB_conf.online_dir,cWB_conf.production_dir),cWB_conf.seg_dir,cWB_conf.run_dir,cWB_conf.seg_dir))
129  commands.getstatusoutput("ln -s %s/%s %s/%s"%(cWB_conf.bkg_run_dir.replace(cWB_conf.online_dir,cWB_conf.production_dir),cWB_conf.seg_dir,cWB_conf.bkg_run_dir,cWB_conf.seg_dir))
130  commands.getstatusoutput("ln -s %s/%s %s/%s"%(cWB_conf.bkg_run_dir.replace(cWB_conf.online_dir,cWB_conf.production_dir),cWB_conf.jobs_dir,cWB_conf.bkg_run_dir,cWB_conf.jobs_dir))
131  for n in range(1,cWB_conf.bkg_njobs):
132  commands.getstatusoutput("ln -s %s/%s_%i %s/%s_%i"%(cWB_conf.bkg_run_dir.replace(cWB_conf.online_dir,cWB_conf.production_dir),cWB_conf.jobs_dir,n,cWB_conf.bkg_run_dir,cWB_conf.jobs_dir,n))
133  else:
134  commands.getstatusoutput("mkdir -p %s/%s"%(cWB_conf.run_dir,cWB_conf.seg_dir))
135  commands.getstatusoutput("mkdir -p %s/%s"%(cWB_conf.bkg_run_dir,cWB_conf.seg_dir))
136  commands.getstatusoutput("mkdir -p %s/%s"%(cWB_conf.bkg_run_dir,cWB_conf.jobs_dir))
137 
138 
139  commands.getstatusoutput("mkdir %s/python"%(cWB_conf.online_dir))
140  commands.getstatusoutput("cp %s/python/*.py %s/python/."%(os.environ['CWB_ONLINE'],cWB_conf.online_dir))
141  commands.getstatusoutput("cp cWB_conf.py %s/python/"%(cWB_conf.online_dir))
142  commands.getstatusoutput("cp %s/html/* %s/."%(os.environ['CWB_ONLINE'],cWB_conf.web_dir))
143 
144  commands.getstatusoutput("echo > %s/%s/%s"%(cWB_conf.bkg_run_dir,cWB_conf.seg_dir,cWB_conf.considered_segments_file))
145  commands.getstatusoutput("echo > %s/%s/%s"%(cWB_conf.bkg_run_dir,cWB_conf.seg_dir,cWB_conf.processed_segments_file))
146  commands.getstatusoutput("echo > %s/%s/%s"%(cWB_conf.bkg_run_dir,cWB_conf.seg_dir,cWB_conf.running_segments_file))
147  commands.getstatusoutput("echo > %s/%s/%s"%(cWB_conf.bkg_run_dir,cWB_conf.seg_dir,cWB_conf.missing_segments_file))
148  commands.getstatusoutput("echo > %s/%s/%s"%(cWB_conf.bkg_run_dir,cWB_conf.seg_dir,cWB_conf.run_segments_file))
149  commands.getstatusoutput("echo > %s/%s/%s"%(cWB_conf.bkg_run_dir,cWB_conf.seg_dir,cWB_conf.job_segments_file))
150 
151  commands.getstatusoutput("ln -s %s/%s %s/."%(cWB_conf.run_dir,cWB_conf.jobs_dir,cWB_conf.web_dir))
152  commands.getstatusoutput("ln -s %s/%s %s/."%(cWB_conf.run_dir,cWB_conf.summaries_dir,cWB_conf.web_dir))
153  commands.getstatusoutput("ln -s %s/%s %s/."%(cWB_conf.bkg_run_dir,cWB_conf.postprod_dir,cWB_conf.web_dir))
154 
155  def cuts_file(self):
156  try:
157  Cuts_lines=open("%s"%(cWB_conf.Cuts_file)).readlines()
158  Cuts_file="%s/Cuts.hh"%(cWB_conf.config_dir)#,cWB_conf.Cuts_file.split("/")[len(cWB_conf.Cuts_file.split("/"))-1])
159  #com="cp %s %s"%(cWB_conf.Cuts_file,Cuts_file)
160  #commands.getstatusoutput(com)
161  f=open("%s"%(Cuts_file),"w")
162  for line in Cuts_lines:
163  print >>f,"%s"%(line.replace("\n",""))
164  if (len(cWB_conf.Cuts_list)>1):
165  print >>f,"""\nTCut OR_cut = TCut("OR_cut",(%s).GetTitle());"""%("||".join(cWB_conf.Cuts_list))
166  f.close()
167  #com="./mkhtml.csh %s"%(Cuts_file)
168  com="%s/scripts/cwb_mkhtml.csh %s"%(os.environ['HOME_CWB'],Cuts_file)
169  print com
170  commands.getstatusoutput(com)
171  com="mv %s/Cuts/Cuts.hh.html %s/.;rm -rf %s/Cuts"%(cWB_conf.config_dir,cWB_conf.web_dir,cWB_conf.config_dir)
172  commands.getstatusoutput(com)
173  self.add_cuts="""#include "%s"
174 
175  """%(Cuts_file)
176  except:
177  pass#self.add_cuts=""
178 
179  def plugins(self):
180  try:
181  nplugins=len(cWB_conf.prod_plugins)
182  self.add_prod_plugin=True
183  if (nplugins==1):
184  final_plugin="%s/%s"%(cWB_conf.config_dir,cWB_conf.prod_plugins[0].split("/")[len(cWB_conf.prod_plugins[0].split("/"))-1])
185  com="cp %s %s"%(cWB_conf.prod_plugins[0],final_plugin)
186  else:
187  final_plugin="%s/prod_plugin.C"%(cWB_conf.config_dir)
188  com="%s/scripts/cwb_mplugin.csh %s %s"%(os.environ['HOME_CWB'],final_plugin," ".join(cWB_conf.prod_plugins))
189  #print commands.getstatusoutput(com)
190  com="%s;root -q -b -l %s+"%(com,final_plugin)
191  #print "Please compile plugin: %s"%com
192  print "Compiling plugin: %s"%com
193  commands.getstatusoutput(com)
194  self.final_plugin_string=""" plugin = TMacro("%s"); // Macro source
195  plugin.SetTitle("%s");"""%(final_plugin,final_plugin.replace(".C","_C.so"))
196  except:
197  pass#self.add_prod_plugin=False
198 
199 #def phone_par(self):
200  #try:
201  # f=open("%s"%(cWB_conf.phone_par),"w")
202  # print >>f,"A transient candidate from coherent Waveburst of significance less than %g is being passed for follow-up. Please check your email immediately and alert the others."%(cWB_conf.phone_alert)
203  # f.close()
204  #except:
205  # print "not sending mail to phone"
206 
207  def user_parameters(self):
208  f=open("%s"%(cWB_conf.zerolag_par),"w")
209 
210  ######### from 24/7/2018 in cwb_conf.py
211  # strcpy(analysis,"%s");
212 
213  # nIFO = %i;
214  # cfg_search = '%s';
215  # optim=%s;\n"""%(cWB_conf.version_wat,len(cWB_conf.ifos),cWB_conf.search,cWB_conf.optim)
216  ############################
217  print >>f,"""{"""
218  for i in range(len(cWB_conf.ifos)):
219  print >>f,""" strcpy(ifo[%i],"%s");"""%(i,cWB_conf.ifos[i])
220  print >>f,""" strcpy(refIFO,"%s");"""%(cWB_conf.ifos[0])
221  print >>f,"""
222  //lags
223  lagSize = 1;
224  lagOff = 0;
225  lagMax = 0;
226 
227  //jobs
228  segLen = %i;
229  segMLS = %i;
230  segEdge = %i;
231  segTHR = 0;"""%(cWB_conf.seg_duration,cWB_conf.seg_duration,cWB_conf.job_offset)
232 
233  #for line in lines:
234  # print >>f,line
235  print >>f,"\n%s"%(cWB_conf.cwb_par)
236  for i in range(len(cWB_conf.ifos)):
237  print >>f,""" strcpy(channelNamesRaw[%i],"%s");"""%(i,cWB_conf.channelname[cWB_conf.ifos[i]])
238  for i in range(len(cWB_conf.ifos)):
239  print >>f,""" strcpy(frFiles[%i],"input/%s.frames");"""%(i,cWB_conf.ifos[i])
240 
241  if (self.add_prod_plugin==True):
242  print >>f,self.final_plugin_string#""" plugin = TMacro("%s"); // Macro source
243 # plugin.SetTitle("%s");"""%(final_plugin,final_plugin.replace(".C","_C.so"))
244 
245  print >>f,"""
246  nDQF=%i;
247  dqfile dqf[%i]={"""%(2*len(cWB_conf.ifos),2*len(cWB_conf.ifos))
248  for i in range(len(cWB_conf.ifos)):
249  print >>f,""" {"%s" ,"input/burst.in", CWB_CAT1, 0., false, false},"""%(cWB_conf.ifos[i])
250  for i in range(len(cWB_conf.ifos)):
251  print >>f,""" {"%s" ,"input/%s_cat2.in", CWB_CAT2, 0., false, false},"""%(cWB_conf.ifos[i],cWB_conf.ifos[i])
252  #print >>f,""" {"%s" ,"input/burst.in", CWB_CAT2, 0., false, false},"""%(cWB_conf.ifos[i])
253  print >>f,""" };
254  for(int i=0;i<nDQF;i++) DQF[i]=dqf[i];
255 
256  strcpy(data_dir,"OUTPUT");
257 
258  online = true;
259  frRetryTime=0;
260  dump = true;
261  cedDump = true;
262  cedRHO = %f;
263 
264 }"""%(cWB_conf.th_rho_lum)
265  f.close()
266 
267  def pe_parameters(self):
268  try:
269  pe_plugin="%s/%s"%(cWB_conf.config_dir,cWB_conf.pe_plugin.split("/")[len(cWB_conf.pe_plugin.split("/"))-1])
270  add_pe_plugin=True
271  com="cp %s %s"%(cWB_conf.pe_plugin,pe_plugin)
272  commands.getstatusoutput(com)
273  com="root -b -l %s+"%(pe_plugin)
274  print "Please compile plugin: %s"%com
275  #commands.getstatusoutput(com)
276  except:
277  add_pe_plugin=False
278 
279  try:
280  f=open("%s"%(cWB_conf.pe_par),"w")
281 
282  ########from 24/07/2018 in cWB_conf.py
283  # strcpy(analysis,"%s");
284 
285  # nIFO = %i;
286  # cfg_search = '%s';
287  # optim=%s;\n"""%(cWB_conf.version_wat,len(cWB_conf.ifos),cWB_conf.search,cWB_conf.optim)
288  #########################
289  print >>f,"""{"""
290 
291  for i in range(len(cWB_conf.ifos)):
292  print >>f,""" strcpy(ifo[%i],"%s");"""%(i,cWB_conf.ifos[i])
293  print >>f,""" strcpy(refIFO,"%s");"""%(cWB_conf.ifos[0])
294  print >>f,"""
295  //lags
296  lagSize = 1;
297  lagOff = 0;
298  lagMax = 0;
299 
300  //jobs
301  segLen = %i;
302  segMLS = %i;
303  segEdge = %i;
304  segTHR = 0;"""%(cWB_conf.seg_duration,cWB_conf.seg_duration,cWB_conf.job_offset)
305 
306  #for line in lines:
307  # print >>f,line
308  print >>f,"\n%s"%(cWB_conf.cwb_par)
309  for i in range(len(cWB_conf.ifos)):
310  print >>f,""" strcpy(channelNamesRaw[%i],"%s");"""%(i,cWB_conf.channelname[cWB_conf.ifos[i]])
311  for i in range(len(cWB_conf.ifos)):
312  print >>f,""" strcpy(frFiles[%i],"input/%s_scratch.frames");"""%(i,cWB_conf.ifos[i])
313 
314  if (add_pe_plugin==True):
315  print >>f,""" plugin = TMacro("%s"); // Macro source
316  plugin.SetTitle("%s");"""%(pe_plugin,pe_plugin.replace(".C","_C.so"))
317 
318  print >>f,"""
319  nDQF=%i;
320  dqfile dqf[%i]={"""%(2*len(cWB_conf.ifos),2*len(cWB_conf.ifos))
321  for i in range(len(cWB_conf.ifos)):
322  print >>f,""" {"%s" ,"input/burst.in", CWB_CAT1, 0., false, false},"""%(cWB_conf.ifos[i])
323  #print >>f,""" {"%s" ,"input/burst.in", CWB_CAT2, 0., false, false},"""%(cWB_conf.ifos[i])
324  for i in range(len(cWB_conf.ifos)):
325  print >>f,""" {"%s" ,"input/%s_cat2.in", CWB_CAT2, 0., false, false},"""%(cWB_conf.ifos[i],cWB_conf.ifos[i])
326  print >>f,""" };
327  for(int i=0;i<nDQF;i++) DQF[i]=dqf[i];
328 
329  strcpy(data_dir,"OUTPUT_PE");
330  strcpy(tmp_dir,"tmp_pe");
331  cedRHO = 1.000000;
332 
333  online = true;
334  frRetryTime=0;
335  dump = false;
336 
337 }"""
338  f.close()
339  except:
340  print "no parameter estimation"
341 
342  def bkg_parameters(self):
343  for l in range(0,3):
344  superlag_string="""
345  //super lags
346  slagSize = %i;
347  slagMin = 0;
348  slagMax = %i;
349  slagOff = 0;
350 """%(cWB_conf.bkg_njobs+1,cWB_conf.bkg_njobs)
351 
352  tmpfile=cWB_conf.bkg_par
353  lagsize="%i"%cWB_conf.bkg_nlags
354  lagoff="1";
355  if (l==1):
356  tmpfile=tmpfile.replace(".C","_split.C")
357  superlag_string=""
358  if (l==2):
359  tmpfile="user_parameters.C"
360  try:
361  superlag_string="""%s
362 
363  slagFile = new char[1024];
364  strcpy(slagFile,"%s");
365  """%(superlag_string,cWB_conf.bkg_superlaglist)
366  except:
367  superlag_string="%s"%(superlag_string)
368 
369  f=open("%s"%(tmpfile),"w")
370 
371  ####### from 24/07/2018 in cWB_conf
372  # strcpy(analysis,"%s");
373  #
374  # nIFO = %i;
375  # cfg_search = '%s';
376  # optim=%s;\n"""%(cWB_conf.version_wat,len(cWB_conf.ifos),cWB_conf.search,cWB_conf.optim)
377  #########################################
378  print >>f,"""{"""
379  for i in range(len(cWB_conf.ifos)):
380  print >>f,""" strcpy(ifo[%i],"%s");"""%(i,cWB_conf.ifos[i])
381  print >>f,""" strcpy(refIFO,"%s");"""%(cWB_conf.ifos[0])
382  print >>f,""" //lags
383  lagSize = %s;
384  lagStep = 1.;
385  lagOff = %s;
386  lagMax = 0;
387  %s
388  %s
389  //jobs
390  segLen = %i;
391  segMLS = %i;
392  segEdge = %i;
393  segTHR = 0;"""%(lagsize,lagoff,self.lag_string,superlag_string,cWB_conf.bkg_job_duration,cWB_conf.bkg_job_minimum,cWB_conf.job_offset)
394 
395  if (l==1):
396  print >>f,"""
397  sprintf(data_label,"%s_%i",data_label,(int)dataShift[1]);
398  TString data_Shift=TString(gSystem->Getenv(\"Slag_datashift\"));
399  TObjArray* bitoken = data_Shift.Tokenize(TString(','));"""
400  print >>f,"""
401  TObjString* itok[%i];
402  TString sitok[%i];"""%(len(cWB_conf.ifos),len(cWB_conf.ifos))
403  for i in range(len(cWB_conf.ifos)):
404  print >>f,"""
405  itok[%i] = (TObjString*)bitoken->At(%i);
406  sitok[%i] = itok[%i]->GetString();
407  dataShift[%i] = sitok[%i].Atoi();"""%(i,i,i,i,i,i)
408 
409 
410  #for line in lines:
411  # print >>f,line
412  print >>f,"\n%s"%(cWB_conf.cwb_par)
413  for i in range(len(cWB_conf.ifos)):
414  print >>f,""" strcpy(channelNamesRaw[%i],"%s");"""%(i,cWB_conf.channelname[cWB_conf.ifos[i]])
415  for i in range(len(cWB_conf.ifos)):
416  print >>f,""" strcpy(frFiles[%i],"input/%s.frames");"""%(i,cWB_conf.ifos[i])
417 
418  if (self.add_prod_plugin==True and l<2):
419  print >>f,self.final_plugin_string#""" plugin = TMacro("%s"); // Macro source
420 # plugin.SetTitle("%s");"""%(final_plugin,final_plugin.replace(".C","_C.so"))
421 
422  print >>f,"""
423  nDQF=%i;
424  dqfile dqf[%i]={"""%(len(cWB_conf.ifos),len(cWB_conf.ifos))
425  for i in range(len(cWB_conf.ifos)):
426  print >>f,""" {"%s" ,"input/%s_burst.in", CWB_CAT1, dataShift[%i], false, false},"""%(cWB_conf.ifos[i],cWB_conf.ifos[i],i)
427  #print >>f,""" {"%s" ,"input/%s_burst.in", CWB_CAT2, 0., false, false},"""%(cWB_conf.ifos[i],cWB_conf.ifos[i])
428  if (os.environ['SITE_CLUSTER']=="CASCINA"):
429  nodedir_sub="sprintf(nodedir,\"%s/tmp\",gSystem->WorkingDirectory());"
430  else:
431  nodedir_sub=""
432  print >>f,""" };
433  for(int i=0;i<nDQF;i++) DQF[i]=dqf[i];
434 
435  //strcpy(data_dir,"OUTPUT");
436 
437  online = true;
438  //frRetryTime=0;
439  //dump = false;
440  %s
441 }"""%(nodedir_sub)
442  f.close()
443 
444  def user_pparameters(self):
445  f=open("%s"%(cWB_conf.pp_par),"w")
446  print >>f,"""#define RUN_LABEL "%s"
447 
448 //PUT VETO DEFINE HERE
449 
450 {
451  %s
452  T_cor = %f; // cc cut
453  T_cut = 0.0; // rho high frequency cut
454 
455  hours = 1; // bin size in hours for rate vs time plot
456 
457  pp_irho = %i;
458  pp_inetcc = %i;
459  pp_rho_max = 10;
460  pp_rho_min = 5;
461 
462  pp_batch = true;
463 
464  pp_jet_benckmark = -1;
465  pp_mem_benckmark = -1;
466 
467 //PUT VETO FILES HERE
468 
469 }"""%(cWB_conf.title,self.add_cuts,cWB_conf.th_cc,cWB_conf.id_rho,cWB_conf.id_cc)
470  f.close()
471 
472  def lag_file(self):
473  if hasattr(cWB_conf, 'bkg_laglist'):
474  lag_file="%s/laglist.txt"%(cWB_conf.config_dir)
475  commands.getstatusoutput("cp %s %s/laglist.txt"%(cWB_conf.bkg_laglist,cWB_conf.config_dir))
476  print "cp %s %s/laglist.txt"%(cWB_conf.bkg_laglist,cWB_conf.config_dir)
477  self.lag_string="""lagFile = new char[1024];
478  strcpy(lagFile,"%s");"""%(lag_file)
479  else:
480  self.lag_string=""
481 
482  def superlag_file(self):
483  #create superlag file
484  commands.getstatusoutput("mkdir -p config input report/dump")
485  commands.getstatusoutput("mv user_parameters.C config/.")
486  for i in range(len(cWB_conf.ifos)):
487  f=open("input/%s_burst.in"%(cWB_conf.ifos[i]),"w")
488  print >>f,"0 %i"%(cWB_conf.bkg_job_duration*(cWB_conf.bkg_njobs+2))
489  f.close()
490  f=open("input/%s_cat2.in"%(cWB_conf.ifos[i]),"w")
491  print >>f,"0 %i"%(cWB_conf.bkg_job_duration*(cWB_conf.bkg_njobs+2))
492  f.close()
493  commands.getstatusoutput("%s/scripts/cwb_dump.csh slag"%(os.environ['HOME_CWB']))
494  commands.getstatusoutput("cp report/dump/tmp_ONLINE.slag %s/superlaglist.txt"%(cWB_conf.config_dir))
495 
496  def create_crontab(self):
497  try:
498  dir_for_logfiles="%s"%(cWB_conf.log_dir)
499  commands.getstatusoutput("mkdir -p %s"%(dir_for_logfiles))
500  commands.getstatusoutput("ln -s %s %s/log"%(dir_for_logfiles,cWB_conf.online_dir))
501  except:
502  dir_for_logfiles="%s/log"%(cWB_conf.online_dir)
503  commands.getstatusoutput("mkdir %s/log"%(cWB_conf.online_dir))
504 
505  commands.getstatusoutput("mkdir %s/crontab"%(cWB_conf.online_dir))
506  command="""
507  * * * * * %s/bin/check_restart.sh %s/python %s/run.log none %s/bin/restart_run.sh >> /tmp/%s_restart_run.log 2>&1
508  """%(os.environ['CWB_ONLINE'],cWB_conf.online_dir,dir_for_logfiles,os.environ['CWB_ONLINE'],cWB_conf.user)
509  file="%s/crontab/run.crontab"%(cWB_conf.online_dir)
510  f=open(file,"w")
511  print >>f, command
512  f.close()
513 
514  file="%s/crontab/web.crontab"%(cWB_conf.online_dir)
515  ff=open(file,"w")
516  command="""* * * * * %s/bin/check_restart.sh %s/python %s/web_pages_%s.log %s %s/bin/restart_web_pages.sh >> /tmp/%s_restart_web_pages.log 2>&1"""%(os.environ['CWB_ONLINE'],cWB_conf.online_dir,dir_for_logfiles,"daily","daily",os.environ['CWB_ONLINE'],cWB_conf.user)
517  print >>ff, command
518  for w in self.web_pages:
519  command="""* * * * * %s/bin/check_restart.sh %s/python %s/web_pages_%s.log %s %s/bin/restart_web_pages.sh >> /tmp/%s_restart_web_pages.log 2>&1"""%(os.environ['CWB_ONLINE'],cWB_conf.online_dir,dir_for_logfiles,w,w,os.environ['CWB_ONLINE'],cWB_conf.user)
520  print >>ff, command
521  command="""* * * * * %s/bin/check_restart.sh %s/python %s/web_pages_%s.log %s %s/bin/restart_web_pages.sh >> /tmp/%s_restart_web_pages.log 2>&1"""%(os.environ['CWB_ONLINE'],cWB_conf.online_dir,dir_for_logfiles,"check","check",os.environ['CWB_ONLINE'],cWB_conf.user)
522  print >>ff, command
523  ff.close()
524 
525  com="cat %s/crontab/run.crontab %s/crontab/web.crontab > %s/crontab/run_and_web.crontab"%(cWB_conf.online_dir,cWB_conf.online_dir,cWB_conf.online_dir)
526  commands.getstatusoutput(com)
527 
528  if (not self.copy):
529  command="""
530  * * * * * %s/bin/check_restart.sh %s/python %s/run_ts.log none %s/bin/restart_run_ts.sh >> /tmp/%s_restart_run_ts.log 2>&1
531  """%(os.environ['CWB_ONLINE'],cWB_conf.online_dir,dir_for_logfiles,os.environ['CWB_ONLINE'],cWB_conf.user)
532  file="%s/crontab/bkg.crontab"%(cWB_conf.online_dir)
533  f=open(file,"w")
534  print >>f, command
535  f.close()
536 
537  com="cat %s/crontab/web.crontab %s/crontab/bkg.crontab > %s/crontab/web_andbkg.crontab"%(cWB_conf.online_dir,cWB_conf.online_dir,cWB_conf.online_dir)
538  commands.getstatusoutput(com)
539 
540  com="cat %s/crontab/run.crontab %s/crontab/web.crontab %s/crontab/bkg.crontab > %s/crontab/run_and_web_andbkg.crontab"%(cWB_conf.online_dir,cWB_conf.online_dir,cWB_conf.online_dir,cWB_conf.online_dir)
541  commands.getstatusoutput(com)
542 
543  def create_web(self):
544  file="%s/index.html"%(cWB_conf.web_dir)
545  ffindex=open(file,"w")
546  command="""
547 <?xml version="1.0"?>
548 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
549 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
550 <!-- -->
551 <!-- Author: CWB team (http://www.virgo.lnl.infn.it/Wiki/index.php/Main_Page) -->
552 <!-- -->
553 <!-- Date: Sun Jan 13 16:13:38 2013 -->
554 <!-- -->
555 <head>
556 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
557 <title>CWB Display</title>
558 <meta name="rating" content="General" />
559 <meta name="objecttype" content="Report" />
560 <meta name="keywords" content="software development, GW, Analisys, Virgo, LIGO " />
561 <meta name="description" content="CWB - An Framework For GW Burst Data Analysis." />
562 <link rel="shortcut icon" href="/~waveburst/waveburst/logo/cwb_logo_icon_modern.png" type="image/png" />
563 <link rel="icon" href="/~waveburst/waveburst/logo/cwb_logo_icon_modern.png" type="image/png" />
564 <link rel="stylesheet" type="text/css" href="ROOT_modern.css" id="CWBstyle" />
565 <script type="text/javascript" src="ROOT.js"></script>
566 
567 <script type="text/javascript">
568  function toggleVisible(division) {
569  if (document.getElementById("div_" + division).style.display == "none") {
570  document.getElementById("div_" + division).style.display = "block";
571  document.getElementById("input_" + division).checked = true;
572  } else {
573  document.getElementById("div_" + division).style.display = "none";
574  document.getElementById("input_" + division).checked = false;
575  }
576 }
577 </script>
578 
579 <script type="text/javascript">
580 function onSearch() {
581 var s='http://www.google.com/search?q=%s+site%3A%u+-site%3A%u%2Fsrc%2F+-site%3A%u%2Fexamples%2F';
582 var ref=String(document.location.href).replace(/https?:\/\//,'').replace(/\/[^\/]*$/,'').replace(/\//g,'%2F');
583 window.location.href=s.replace(/%u/ig,ref).replace(/%s/ig,escape(document.searchform.t.value));
584 return false;}
585 </script>
586 
587 </head>
588 
589 <body onload="javascript:SetValuesFromCookie();"><div id="body_content">
590 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
591 <div id="titlearea">
592 <table bgcolor="#223E5F" cellspacing="0" cellpadding="0" width="100%" height="120px" align="center">
593  <tr>
594  <td> <img style="height:100px" alt="Logo" src="https://ldas-jobs.ligo.caltech.edu/~waveburst/doc/cwb-lbanner-modern.png" USEMAP="#cwb_lbanner_modern" /> </td>
595  <td style="width:45%"> </td>
596  <td align="middle" style="color: #FFFFFF" nowrap="nowrap"><font size="6">Coherent WaveBurst</font> &#160;
597  <td style="width:55%"> </td>
598  <td> <img style="height:100px" alt="Logo" src="https://ldas-jobs.ligo.caltech.edu/~waveburst/doc/ligo_virgo_logo_modern.png" USEMAP="#ligo_virgo_map" /> </td>
599  </tr>
600 </table>
601 </div>
602 
603 <map id="cwb_lbanner_modern" name="cwb_lbanner_modern"><area shape="rect" alt="" title="cWB Documentation" coords="0,90,300,0" href="https://ldas-jobs.ligo.caltech.edu/~waveburst/LSC/doc/cWB_documentation/" target="_
604 blanck" /></map>
605 
606 <map id="ligo_virgo_map" name="ligo_virgo_map"><area shape="rect" alt="" title="LIGO Homepage" coords="0,45,140,0" href="http://www.ligo.caltech.edu/" target="_blanck" /><area shape="rect" alt="" title="VIRGO Homepage"
607 coords="0,90,140,45" href="https://www.virgo-gw.eu/" target="_blanck" /></map>
608 
609 <div id="toplinks">
610 <div class="descrhead"><div class="descrheadcontent">
611 <span class="descrtitle">Quick Links:</span>
612 <a class="descrheadentry" href="http://www.virgo.lnl.infn.it/Wiki/index.php/Main_Page">CWB Wiki</a>
613 <a class="descrheadentry" href="https://ldas-jobs.ligo.caltech.edu/~waveburst/LSC/doc/cWB_documentation/">CWB Documentation</a>
614 <a class="descrheadentry" href="https://ldas-jobs.ligo.caltech.edu/~waveburst/doc/cwb/ref">CWB Reference</a>
615 <a class="descrheadentry" href="https://git.ligo.org/cWB">CWB Repository</a>
616 <a class="descrheadentry" href="https://git.ligo.org/groups/cWB/-/issues">CWB Issues</a>
617 <a class="descrheadentry" href="http://root.cern.ch">ROOT Homepage</a>
618 </div>
619 </div>
620 </div>
621 
622 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
623 <html><head>
624 <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
625 <title>MAIN_Index</title>
626 <!-- Include the tabber code -->
627 <script type="text/javascript" src="tabber.js"></script>
628 <link rel="stylesheet" href="tabber.css" TYPE="text/css" MEDIA="screen">
629 
630 <script type="text/javascript">
631 
632 /* Optional: Temporarily hide the "tabber" class so it does not "flash" on
633  * the page as plain HTML. After tabber runs, the class is changed
634  to "tabberlive" and it will appear. */
635 
636 document.write('<style type="text/css">.tabber{display:none;}<\/style>');
637 
638 </script>"""
639 
640  command+="""
641 </head>
642 <title>%s</title>
643 """%cWB_conf.title
644 
645  command+="""
646 <body>
647 <html>
648 <h1 align=center>%s</h1>
649 <br>
650 <div class="tabber">
651 """%cWB_conf.title
652 
653  page_length=3500
654 
655  for n in self.name_pages:
656  title=n.replace("_"," ")
657  command+="""
658 <div class="tabbertab">
659  <h2>%s</h2>
660  <iframe src="%s/%s/%s.html" width="100%%" height="%ipx" frameborder="0"></iframe>
661 </div>"""%(title,cWB_conf.summaries_dir,n,n,page_length)
662 
663  command+="""
664 <div class="tabbertab">
665  <h2>Calendar</h2>
666  <iframe src="main.html" width="100%%" height="%ipx" frameborder="0"></iframe>
667 </div>"""%(page_length)
668 
669  command+="""
670 <div class="tabbertab">
671  <h2>Status</h2>
672  <iframe src="%s/check.html" width="100%%" height="%ipx" frameborder="0"></iframe>
673 </div>
674 
675 </div>
676 </html>
677  """%(cWB_conf.summaries_dir,page_length)
678  print >>ffindex, command
679  ffindex.close()
680 
681 if(__name__=="__main__"):
682 
683  cwb=cwb_create()
684  cwb.make_checks()
685  cwb.make_dirs()
686  cwb.cuts_file()
687  cwb.plugins()
688  cwb.lag_file()
689  cwb.user_parameters()
690  cwb.pe_parameters()
691  cwb.bkg_parameters()
692  cwb.user_pparameters()
693  cwb.superlag_file()
694  cwb.create_crontab()
695  cwb.create_web()
696 
697  print cwb.add_prod_plugin
698 
699  print "Analysis dir: %s"%(cWB_conf.online_dir)
def make_checks(self)
Definition: cwb_online.py:36
def create_crontab(self)
Definition: cwb_online.py:496
add_prod_plugin
from 24/07/2018 in cWB_conf strcpy(analysis,"%s");
Definition: cwb_online.py:23
def user_parameters(self)
Definition: cwb_online.py:207
def user_pparameters(self)
Definition: cwb_online.py:444
def pe_parameters(self)
Definition: cwb_online.py:267
def superlag_file(self)
Definition: cwb_online.py:482
if[["$OSTYPE"=~ "linux"]]
Definition: config.sh:3
in open(HEN_LIST, ios::in)
exit(0)
def bkg_parameters(self)
Definition: cwb_online.py:342