24 #define DAY (24.*3600.)
27 bool sortByName(
const string &ifo1,
const string &ifo2) {
return ifo1 < ifo2; }
29 void ComputeJobProcDataTime(TString type, TString parameter1, TString parameter2=
"", TString parameter3=
"", TString parameter4=
"") {
40 if(type!=
"standard" && type!=
"extended" && type!=
"exclusive") {
41 cout <<
"ComputeJobProcDataTime.C - Error: allowed input type must be standard/extended/exclusive" << endl;
46 vector<waveSegment> segList;
51 if(strlen(ifo[
n])!=0)
ifos[
n]=ifo[
n];
52 else ifos[
n]=detParms[
n].name;
56 vector<string> uifos(
nIFO);
57 for(
int i=0;i<
nIFO;i++) uifos[i]=
ifos[i].Data();
60 int n=0;
for(
string &ifo : uifos) sifos[
n++]=ifo.c_str();
64 TString snet = sifos[0];
65 for(
int i=1;i<
nIFO;i++) snet +=
"_"+sifos[i];
67 if(type==
"exclusive") {
74 vector<waveSegment> seg1 = TB.readSegments(ifname1);
75 double seg1_time = TB.getTimeSegList(seg1);
76 cout <<
"seg1_time = " << (int)seg1_time <<
" sec - " << seg1_time/
DAY <<
" days" << endl;
78 vector<waveSegment> seg2 = TB.readSegments(ifname2);
79 double seg2_time = TB.getTimeSegList(seg2);
80 cout <<
"seg2_time = " << (int)seg2_time <<
" sec - " << seg2_time/
DAY <<
" days" << endl;
82 vector<waveSegment> iseg2 = TB.invertSegments(seg2);
84 vector<waveSegment> xseg12 = TB.mergeSegLists(seg1,iseg2);
85 double xseg12_time = TB.getTimeSegList(xseg12);
86 cout <<
"xseg12_time = " << (int)xseg12_time <<
" sec - " << xseg12_time/
DAY <<
" days" << endl;
89 seg_time = xseg12_time;
93 TString
label = olabel!=
"_not" ?
"_not_"+olabel :
"";
94 ofname.ReplaceAll(
".txt",
label+
".txt");
97 if(type==
"standard" || type==
"extended") {
104 vector<waveSegment> cat0List=TB.readSegList(
nDQF, DQF, CWB_CAT0);
105 double cat0_time=TB.getTimeSegList(cat0List);
106 cout <<
"total livetime after cat0: " << int(cat0_time) <<
" sec "
107 << cat0_time/
HOUR <<
" h " << cat0_time/
DAY <<
" days" << endl;
111 vector<waveSegment> cat1List=TB.readSegList(
nDQF, DQF, CWB_CAT1);
112 double cat1_time=TB.getTimeSegList(cat1List);
113 cout <<
"total livetime after cat1: " << int(cat1_time) <<
" sec "
114 << cat1_time/
HOUR <<
" h " << cat1_time/
DAY <<
" days" << endl;
118 vector<waveSegment> cat2List=TB.readSegList(
nDQF, DQF, CWB_CAT2);
119 double cat2_time=TB.getTimeSegList(cat2List);
120 cout <<
"total livetime after cat2: " << int(cat2_time) <<
" sec "
121 << cat2_time/
HOUR <<
" h " << cat2_time/
DAY <<
" days" << endl;
125 if(type==
"standard") {
126 vector<waveSegment> jobList=TB.getSlagJobList(cat1List,
segLen);
127 int slagSegs=jobList.size();
128 vector<slag> rslagList;
131 cout <<
"slagList size : " << slagList.size() << endl;
133 cout << endl <<
"Start segments selection from dq cat1 list ..." << endl << endl;
135 cout <<
"Number of selected jobs after cat1 : " << rslagList.size() << endl;
136 cout << endl <<
"Start segments selection from dq cat2 list ..." << endl << endl;
138 cout <<
"Number of selected jobs after cat2 : " << rslagList.size() << endl;
142 vector<waveSegment> tmpList;
144 for(
int i=0;i<rslagList.size();i++) {
149 SEG.start = jobList[SLAG.segId[0]-1].start-
segEdge;
150 SEG.stop = jobList[SLAG.segId[0]-1].stop+
segEdge;
152 tmpList.push_back(SEG);
153 tmpList = TB.mergeSegLists(cat1List,tmpList);
154 SEG = TB.getMaxSeg(tmpList);
155 int segLength=SEG.stop-SEG.start;
159 segList.push_back(SEG);
164 TString
label = olabel!=
"" ?
"_"+olabel :
"";
165 sprintf(
fname,
"%s/K%s_sjobs_%s_cat012%s.txt",odir.Data(),chunk.Data(),snet.Data(),
label.Data());
169 if(type==
"extended") {
171 cout<<endl<<
"Final number of extended jobs : " << jobList.size() <<endl<<endl;
175 TString
label = olabel!=
"" ?
"_"+olabel :
"";
176 sprintf(
fname,
"%s/K%s_ejobs_%s_cat012%s.txt",odir.Data(),chunk.Data(),snet.Data(),
label.Data());
182 double job_time=TB.getTimeSegList(segList);
183 cout <<
"cat1 livetime (zero lag) of the standard job list : " << int(job_time) <<
" sec "
184 << job_time/
HOUR <<
" h " << job_time/
DAY <<
" days" << endl;
187 segList = TB.mergeSegLists(segList,cat2List);
188 double job_time_cat2=TB.getTimeSegList(segList);
189 cout <<
"cat1+cat2 livetime (zero lag) of the standard job list : " << int(job_time_cat2) <<
" sec "
190 << job_time_cat2/
HOUR <<
" h " << job_time_cat2/
DAY <<
" days" << endl;
192 seg_time = job_time_cat2;
198 vector<waveSegment> osegList;
199 for(
int i=0;i<segList.size();i++) {
200 if(segList[i].stop > segList[i].start) osegList.push_back(segList[i]);
204 cout<<
"Dump segment list : includes jobs discarted by the condition livetime<segTHR"<<endl;
205 TB.dumpSegList(osegList,ofname);
209 if(TB.isFileExisting(
"README.md")) {
210 out.open(
"README.md",ios::app);
212 out.open(
"README.md",ios::out);
214 if(!out.good()) {cout <<
"ComputeJobProcDataTime.C - Error : Opening File : "
215 <<
"README.md" << endl;gSystem->Exit(1);}
217 out <<
"--------------------------------------------------------------------------" << endl;
218 if(type==
"exclusive") out << snet <<
" network exclusive time after cat0+cat1+cat2 on standard segments" << endl;
219 if(type==
"standard") out << snet <<
" network coincident time after cat0+cat1+cat2 on standard segments" << endl;
220 if(type==
"extended") out << snet <<
" network coincident time after cat0+cat1+cat2 on extended segments" << endl;
221 out <<
"--------------------------------------------------------------------------" << endl;
223 out << snet <<
"_time = " << (int)seg_time <<
" sec - " << seg_time/
DAY <<
" days" << endl;
224 out <<
"-> " << gSystem->BaseName(ofname) << endl << endl;
bool sortByName(const string &ifo1, const string &ifo2)
void ComputeJobProcDataTime(TString type, TString parameter1, TString parameter2="", TString parameter3="", TString parameter4="")
sprintf(tag,"wave_%s", data_label)