Logo Coherent WaveBurst  
Reference Guide
Logo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
cwb_condor_create.C
Go to the documentation of this file.
1 // creates dag/sub files under the condor dir : used by the cwb_condor 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  if(TString(condor_tag)=="") {
13  cout << endl;
14  cout << "cwb_condor_create.C : Error - the accounting_group is not defined !!!" << endl;
15  cout << "The accounting_group must be defined in the user_parameters.C file" << endl;
16  cout << "See the following link:" << endl;
17  cout <<" https://ldas-gridmon.ligo.caltech.edu/accounting/condor_groups/determine_condor_account_group.html" << endl;
18  cout << "Examples : " << endl;
19  cout << "strcpy(condor_tag,\"ligo.dev.o2.burst.allsky.cwboffline\");" << endl;
20  cout << "strcpy(condor_tag,\"ligo.prod.o2.burst.allsky.cwboffline\");" << endl;
21  cout << "If you don't need it set : strcpy(condor_tag,\"disabled\");" << endl << endl;
22  exit(1);
23  }
24  if(TString(condor_tag)=="disabled") strcpy(condor_tag,"");
25 
26  // get cwb stage name
27  TString cwb_stage_name="CWB_STAGE_FULL";
28  if(gSystem->Getenv("CWB_STAGE_NAME")!=NULL) {
29  cwb_stage_name=TString(gSystem->Getenv("CWB_STAGE_NAME"));
30  }
31 
32  char full_condor_dir[512];
35 
36  sprintf(full_condor_dir,"%s/%s",work_dir,condor_dir);
37  sprintf(full_condor_out_dir,"%s/%s",work_dir,log_dir);
38  sprintf(full_condor_err_dir,"%s/%s",work_dir,log_dir);
39 
40 
41  char dagfile[1024];
42  sprintf(dagfile,"%s/%s.dag",condor_dir,data_label);
43 
44  // Check if dag file already exist
45  Long_t id,size,flags,mt;
46  int estat = gSystem->GetPathInfo(dagfile,&id,&size,&flags,&mt);
47  if (estat==0) {
48  char answer[256];
49  strcpy(answer,"");
50  do {
51  cout << "File \"" << dagfile << "\" already exist" << endl;
52  cout << "Do you want to overwrite the file ? (y/n) ";
53  cin >> answer;
54  cout << endl << endl;
55  } while ((strcmp(answer,"y")!=0)&&(strcmp(answer,"n")!=0));
56  if (strcmp(answer,"n")==0) {
57  exit(0);
58  }
59  }
60 
61 
62  if(nIFO==1) { // Single Detector Mode
64  config.Import();
65  config.SetSingleDetectorMode();
66  config.Export();
67  }
68 
69  vector<slag> rslagList;
70  vector<TString> ifos(nIFO);
71  for(int n=0;n<nIFO;n++) {
72  if(strlen(ifo[n])!=0) ifos[n]=ifo[n]; // built in detector
73  else ifos[n]=detParms[n].name; // user define detector
74  }
75 
76  vector<waveSegment> cat1List=TB.readSegList(nDQF, DQF, CWB_CAT1);
77 
78  // extract detector's segments range from dq cat 1
79  if(slagSize==0) {
80  vector<waveSegment> cat2List=TB.readSegList(nDQF, DQF, CWB_CAT2);
81  // segments are standard style !!!
82  vector<waveSegment> jobList=TB.getJobList(cat1List, cat2List, segLen, segMLS, segTHR, segEdge);
83  cout << "Standard Segments : " << jobList.size() << endl;
84  // create dag condor file
85  vector<TString> jobFiles;
86  TB.createDagFile(jobList, full_condor_dir, data_label, jobFiles, cwb_stage_name);
87  } else {
88  // segments are slag style
89  int slagSegs=TB.getSlagJobList(cat1List, segLen).size();
90  // full slag list
91  vector<slag> slagList=TB.getSlagList(nIFO, slagSize, slagSegs, slagOff, slagMin, slagMax, slagSite, slagFile);
92  cout << "slagList size : " << slagList.size() << endl;
93  // reduced slag list (removed slag with max segLength < segMSL after cat1 & segLength < segTHR after cat2)
94  cout << endl << "Start segments selection from dq cat1 list ..." << endl << endl;
95  rslagList=TB.getSlagList( slagList, ifos, segLen, segMLS, segEdge, nDQF, DQF, CWB_CAT1);
96  cout << "Number of selected jobs after cat1 : " << rslagList.size() << endl;
97  cout << endl << "Start segments selection from dq cat2 list ..." << endl << endl;
98  rslagList=TB.getSlagList(rslagList, ifos, segLen, segTHR, segEdge, nDQF, DQF, CWB_CAT2);
99  cout << "Number of selected jobs after cat2 : " << rslagList.size() << endl;
100  // create dag condor file
101  vector<TString> jobFiles;
102  TB.createDagFile(rslagList, full_condor_dir, data_label, jobFiles, cwb_stage_name);
103  }
104 
105  if(gSystem->Getenv("_USE_OSG")!=NULL) {
106  // create tgz of the working dir
107  TString exec_cmd = TString::Format("tar -czf %s/%s.tgz %s %s %s %s %s --exclude='*/.svn' --exclude='%s/*' --exclude='%s/*'",
109  gSystem->Exec(exec_cmd);
110  cout << endl << "Created tgz file : " << condor_dir<<"/"<<data_label<<".tgz" << endl;
111  }
112 
113  if(gSystem->Getenv("_USE_LSF")!=NULL) {
114 
115  // make lsf label
116  char lsf_label[1024];
117  if(cwb_stage_name=="CWB_STAGE_FULL") {
118  sprintf(lsf_label,"%s",data_label);
119  } else {
120  sprintf(lsf_label,"%s_%s",data_label,cwb_stage_name.Data());
121  }
122 
123  // create tgz of the working dir
124  TString exec_cmd = TString::Format("tar -czf %s/%s.tgz %s %s %s %s/*.sh --exclude='*/.svn'",
126  gSystem->Exec(exec_cmd);
127  cout << endl << "Created tgz file : " << condor_dir<<"/"<<lsf_label<<".tgz" << endl;
128 
129  // create LSF file from the DAG file
130  char dagFile[256];
131  sprintf(dagFile,"%s/%s.dag",condor_dir,data_label);
133  if(lsfFile!="") {
134  cout << endl << "Created LSF file : " << lsfFile << endl << endl;
135  cout << "To submit lsf jobs, type : cwb_lsf submit" << endl;
136  } else {
137  cout << endl << "No jobs to be submitted !!!" << endl << endl;
138  }
139  gSystem->Exit(0);
140  }
141 
142  if(gSystem->Getenv("_USE_PEGASUS")!=NULL) {
143  // create in tgz file
144  ofstream out;
145  char infile[1024];
146  sprintf(infile,"%s/%s.in",full_condor_dir,data_label);
147  out.open(infile,ios::out);
148  out << "../" << config_dir << "/" << endl;
149  out << "../" << input_dir << "/" << endl;
150  out << "../" << macro_dir << "/" << endl;
151  out.close();
152  // execute cwb_pegasus_create.sh
153  sprintf(dagfile,"%s.dag",data_label);
154  TString cwb_scripts = TString(gSystem->Getenv("CWB_SCRIPTS"));
155  TString exec_cmd = TString::Format("cd %s;%s/cwb_pegasus_create.sh %s",
156  condor_dir,cwb_scripts.Data(),dagfile);
157  int ret=gSystem->Exec(exec_cmd);
158  if(ret) {cout << "Error while executing cwb_pegasus_create !!!" << endl;exit(1);}
159 
160  cout << endl;
161  cout << "To submit pegasus jobs, type : cwb_pegasus submit" << endl;
162  cout << endl;
163  } else {
164  // create sub condor file
165  TB.createSubFile(data_label, full_condor_dir, full_condor_out_dir,
166  full_condor_err_dir, condor_log, "", condor_tag);
167 
168  cout << endl;
169  cout << "To submit condor jobs, type : cwb_condor submit" << endl;
170  cout << endl;
171  }
172 
173  gSystem->Exit(0);
174 }
Long_t mt
TString cwb_scripts
double segMLS
Definition: test_config1.C:47
int slagSize
Definition: test_config1.C:65
TString cwb_stage_name
void Export(TString fname="")
Definition: config.cc:388
size_t * slagSite
Definition: test_config1.C:69
int slagOff
Definition: test_config1.C:68
char name[32]
Definition: detector.hh:32
cout<< "slagList size : "<< slagList.size()<< endl;cout<< endl<< "Start segments selection from dq cat1 list ..."<< endl<< endl;rslagList=TB.getSlagList(slagList, ifos, segLen, segMLS, segEdge, nDQF, DQF, CWB_CAT1);cout<< "Number of selected jobs after cat1 : "<< rslagList.size()<< endl;cout<< endl<< "Start segments selection from dq cat2 list ..."<< endl<< endl;rslagList=TB.getSlagList(rslagList, ifos, segLen, segTHR, segEdge, nDQF, DQF, CWB_CAT2);cout<< "Number of selected jobs after cat2 : "<< rslagList.size()<< endl;vector< TString > jobFiles
int n
Definition: cwb_net.C:10
TString("c")
vector< slag > rslagList
int slagMax
Definition: test_config1.C:67
char macro_dir[512]
Definition: test_config1.C:150
double segEdge
Definition: test_config1.C:49
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
char ifo[NIFO_MAX][8]
nDQF
Definition: cwb_eced.C:92
double segTHR
Definition: test_config1.C:48
#define nIFO
ofstream out
Definition: cwb_merge.C:196
vector< TString > ifos(nIFO)
char data_label[512]
Definition: test_config1.C:160
char input_dir[512]
Definition: test_config1.C:145
int estat
static int createSubFile(TString label, TString condor_dir, TString out_dir, TString err_dir, TString log_dir, TString ext="", TString condor_tag="")
Definition: Toolbox.cc:1317
vector< int > jobList
vector< slag > slagList
dqfile DQF[12]
Definition: test_config1.C:171
char full_condor_dir[512]
static vector< waveSegment > getSlagJobList(vector< waveSegment > ilist, int seglen=600)
Definition: Toolbox.cc:1771
segLen
Definition: cwb_eced.C:7
Long_t flags
sprintf(full_condor_dir,"%s/%s", work_dir, condor_dir)
char data_dir[512]
Definition: test_config1.C:152
vector< waveSegment > cat1List
char log_dir[512]
Definition: test_config1.C:151
static int createDagFile(vector< waveSegment > jobList, TString condor_dir, TString label, int jobmin=0, int jobmax=0)
Definition: Toolbox.cc:1152
Long_t id
char config_dir[512]
Definition: test_config1.C:144
static vector< waveSegment > getJobList(vector< waveSegment > ilist, double segLen=600., double segMLS=300., double segEdge=8.)
Definition: Toolbox.cc:627
static vector< slag > getSlagList(size_t nIFO, size_t slagSize, int slagSegs, int slagOff, size_t slagMin, size_t slagMax, size_t *slagSite, char *slagFile=NULL)
Definition: Toolbox.cc:790
static vector< waveSegment > readSegList(dqfile DQF)
Definition: Toolbox.cc:391
char answer[256]
static TString DAG2LSF(char *dagFile, char *data_label, char *nodedir, char *data_dir, char *condor_dir, char *log_dir, char *output_dir, char *work_dir)
Definition: Toolbox.cc:1541
strcpy(RunLabel, RUN_LABEL)
cout<< "total cat1 livetime : "<< int(cat1_time)<< " sec "<< cat1_time/3600.<< " h "<< cat1_time/86400.<< " day"<< endl;cout<< endl;vector< waveSegment > cat2List
Definition: cwb_dump_job.C:22
char condor_log[512]
Definition: test_config1.C:163
Long_t size
slagFile
Definition: cwb_tune_slag.C:7
char nodedir[1024]
Definition: test_config1.C:187
char condor_dir[512]
Definition: test_config1.C:148
char work_dir[512]
Definition: test_config1.C:143
char full_condor_out_dir[512]
int slagMin
Definition: test_config1.C:66
TString config
detectorParams detParms[4]
char output_dir[512]
Definition: test_config1.C:146
char dagfile[1024]
void SetSingleDetectorMode()
Definition: config.cc:1334
char full_condor_err_dir[512]
exit(0)