46 #define DAY (24.*3600.)
53 vector<TString> ifname = CWB::Toolbox::getFileListFromDir(DQ_dir,
".txt",
"",
"_cat0",
true);
54 if(ifname.size()==0) {
55 cout <<
"No cat0 files are present on the directory : " << DQ_dir << endl;
61 for(
int j=0;j<ifname.size();j++) {
63 TString xifo = TString(gSystem->BaseName(ifname[j]))(0,2);
67 int nifo = ifo.size();
70 cout <<
"Error, max ifos number is : " <<
MAX_IFOS << endl;
76 if(CWB::Toolbox::isFileExisting(
"README.md")) {
77 out.open(
"README.md",ios::app);
79 out.open(
"README.md",ios::out);
81 if(!out.good()) {cout <<
"ComputeObsTime.C - Error : Opening File : "
82 <<
"README.md" << endl;gSystem->Exit(1);}
86 out <<
"-------------------------------------------------------" << endl;
87 out <<
"single detector cat0 observation time" << endl;
88 out <<
"-------------------------------------------------------" << endl;
91 vector<vector<waveSegment>> ifo1_seg(nifo);
92 for(
int i=0;i<nifo;i++) {
94 ifo1_seg[i] = CWB::Toolbox::readSegments(ifname[i]);
96 double ifo1_time=CWB::Toolbox::getTimeSegList(ifo1_seg[i]);
97 out << ifo[i] <<
"_time = " << (int)ifo1_time <<
" sec - " << ifo1_time/
DAY <<
" days" << endl;
100 if(OBSTIME_dir!=
"") {
101 TString ofname = TString::Format(
"%s/%s_cat0.txt",OBSTIME_dir.Data(),ifo[i].Data());
102 out <<
"-> " << gSystem->BaseName(ofname) << endl << endl;
103 CWB::Toolbox::dumpSegList(ifo1_seg[i],ofname);
110 out <<
"-------------------------------------------------------" << endl;
111 out <<
"double detectors cat0 coincident observation time" << endl;
112 out <<
"-------------------------------------------------------" << endl;
115 vector<vector<vector<waveSegment>>> ifo2_seg(nifo);
116 for(
int i=0;i<nifo;i++) {
118 ifo2_seg[i].resize(nifo);
120 for(
int j=i+1;j<nifo;j++) {
122 ifo2_seg[i][j] = CWB::Toolbox::mergeSegLists(ifo1_seg[i],ifo1_seg[j]);
123 double ifo2_time = CWB::Toolbox::getTimeSegList(ifo2_seg[i][j]);
124 out << ifo[i] <<
"_" << ifo[j] <<
"_time = " << (int)ifo2_time <<
" sec - " << ifo2_time/
DAY <<
" days" << endl;
127 if(OBSTIME_dir!=
"") {
128 TString ofname = TString::Format(
"%s/%s_%s_cat0.txt",OBSTIME_dir.Data(),ifo[i].Data(),ifo[j].Data());
129 out <<
"-> " << gSystem->BaseName(ofname) << endl << endl;
130 CWB::Toolbox::dumpSegList(ifo2_seg[i][j],ofname);
138 out <<
"-------------------------------------------------------" << endl;
139 out <<
"triple detectors cat0 coincident observation time" << endl;
140 out <<
"-------------------------------------------------------" << endl;
143 TString ifo3_name=ifo[0];
144 vector<waveSegment> ifo3_seg = ifo1_seg[0];
145 for(
int i=1;i<nifo;i++) {
146 ifo3_seg = CWB::Toolbox::mergeSegLists(ifo3_seg,ifo1_seg[i]);
147 ifo3_name +=
"_"+ifo[i];
149 double ifo3_time = CWB::Toolbox::getTimeSegList(ifo3_seg);
150 out << ifo3_name+
"_time = " << (int)ifo3_time <<
" sec - " << ifo3_time/
DAY <<
" days" << endl;
152 if(OBSTIME_dir!=
"") {
154 TString ofname = TString::Format(
"%s/%s_cat0.txt",OBSTIME_dir.Data(),ifo3_name.Data());
155 out <<
"-> " << gSystem->BaseName(ofname) << endl << endl;
156 CWB::Toolbox::dumpSegList(ifo3_seg,ofname);
160 vector<waveSegment> ifo3_iseg = CWB::Toolbox::invertSegments(ifo3_seg);
164 out <<
"-------------------------------------------------------" << endl;
165 out <<
"double detectors cat0 exclusive observation time" << endl;
166 out <<
"-------------------------------------------------------" << endl;
169 vector<vector<vector<waveSegment>>> ifo2_xseg(nifo);
170 vector<vector<vector<waveSegment>>> ifo2_ixseg(nifo);
171 for(
int i=0;i<nifo;i++) {
173 ifo2_xseg[i].resize(nifo);
174 ifo2_ixseg[i].resize(nifo);
176 for(
int j=i+1;j<nifo;j++) {
178 ifo2_xseg[i][j] = CWB::Toolbox::mergeSegLists(ifo2_seg[i][j],ifo3_iseg);
179 double ifo2_xtime = CWB::Toolbox::getTimeSegList(ifo2_xseg[i][j]);
180 out << ifo[i] <<
"_" << ifo[j] <<
"_xtime = " << (int)ifo2_xtime <<
" sec - " << ifo2_xtime/
DAY <<
" days" << endl;
183 if(OBSTIME_dir!=
"") {
184 TString ofname = TString::Format(
"%s/%s_%s_xcat0.txt",OBSTIME_dir.Data(),ifo[i].Data(),ifo[j].Data());
185 out <<
"-> " << gSystem->BaseName(ofname) << endl << endl;
186 CWB::Toolbox::dumpSegList(ifo2_xseg[i][j],ofname);
189 ifo2_ixseg[i][j] = CWB::Toolbox::invertSegments(ifo2_xseg[i][j]);
196 out <<
"-------------------------------------------------------" << endl;
197 out <<
"single detector cat0 exclusive observation time" << endl;
198 out <<
"-------------------------------------------------------" << endl;
201 for(
int i=0;i<nifo;i++)
for(
int j=i+1;j<nifo;j++) ifo2_ixseg[j][i] = ifo2_ixseg[i][j];
203 vector<vector<waveSegment>> ifo1_xseg(nifo);
204 for(
int i=0;i<nifo;i++) {
206 ifo1_xseg[i] = CWB::Toolbox::mergeSegLists(ifo1_seg[i],ifo3_iseg);
208 for(
int j=0;j<nifo;j++) {
209 if(j!=i) ifo1_xseg[i] = CWB::Toolbox::mergeSegLists(ifo1_xseg[i],ifo2_ixseg[i][j]);
212 double ifo1_xtime=CWB::Toolbox::getTimeSegList(ifo1_xseg[i]);
213 out << ifo[i] <<
"_xtime = " << (int)ifo1_xtime <<
" sec - " << ifo1_xtime/
DAY <<
" days" << endl;
216 if(OBSTIME_dir!=
"") {
217 TString ofname = TString::Format(
"%s/%s_xcat0.txt",OBSTIME_dir.Data(),ifo[i].Data());
218 out <<
"-> " << gSystem->BaseName(ofname) << endl << endl;
219 CWB::Toolbox::dumpSegList(ifo1_xseg[i],ofname);
void ComputeObsTime(TString DQ_dir, TString OBSTIME_dir="")