3 #pragma GCC system_header
9 #include "wavearray.hh"
11 #include "TObjArray.h"
12 #include "TObjString.h"
35 CWB_Plugin(TFile* jfile, CWB::config* cfg,
network* net, WSeries<double>* x, TString ifo,
int type) {
45 if(type==CWB_PLUGIN_CONFIG) {
47 cout <<
"-----> CWB_Plugin_Gating.C" << endl;
51 if(type==CWB_PLUGIN_ICOHERENCE) {
54 cwb2G* gCWB2G; IMPORT(cwb2G*,gCWB2G)
55 double Tb = gCWB2G->GetSegBegin()-cfg->segEdge;
56 double Te = gCWB2G->GetSegEnd()+cfg->segEdge;
61 int nIFO = (gCWB2G->IsSingleDetector()) ? 1 : net->ifoListSize();
62 int size = net->getifo(0)->getHoT()->size();
63 double rate = net->getifo(0)->getHoT()->rate();
68 wavearray<double>* hot[NIFO_MAX];
69 for(
int n=0;
n<
nIFO;
n++) hot[
n] = net->getifo(
n)->getHoT();
77 int X = int(cfg->segEdge/dt+0.5);
78 int M = int(
TEDG/dt)+1;
81 vector<waveSegment> glist;
82 wavearray<double> SE(
size);
83 wavearray<int> sVeto(
size);
90 for(
int j=0;j<N;j++) SE[N-1]+=pow(hot[
n]->
data[N-1-j],2);
91 for(
int i=N;i<
size;i++) {
93 SE[i] -= pow(hot[
n]->
data[i-N],2);
94 SE[i] += pow(hot[
n]->
data[i],2);
98 for(
int i=0;i<
size;i++) {
100 int is = i-
M>X ? i-
M : X;
102 for(
int k=is;k<es;k++) sVeto[k]=1;
106 sVeto[0]=0;sVeto[
size-1]=0;
107 for(
int i=0;i<
size-1;i++) sVeto[i]=sVeto[i+1]-sVeto[i];
112 for(
int i=0;i<
size;i++) {
113 if(sVeto[i]== 1) gseg.start = Tb+int(i*dt);
115 gseg.stop = Tb+int(i*dt+0.5);
117 glist.push_back(gseg);
124 for(
int j=gsize;j<glist.size();j++) {
125 cout << j <<
" -----> CWB_Plugin_Gating.C - " << net->getifo(
n)->Name <<
" gating time : start="
126 << glist[j].start <<
" stop=" << glist[j].stop <<
" len=" << glist[j].stop-glist[j].start << endl;
133 double gating_time = 0;
135 glist = CWB::Toolbox::unionSegments(glist);
136 gating_time = CWB::Toolbox::getTimeSegList(glist);
137 glist = CWB::Toolbox::invertSegments(glist);
138 net->segList = CWB::Toolbox::mergeSegLists(glist,net->segList);
141 cout<<
"-----> CWB_Plugin_Gating.C - gating time : " << gating_time << endl << endl;
145 sprintf(info,
"-GT:%g",gating_time);
146 gCWB2G->PrintAnalysisInfo(CWB_STAGE_COHERENCE,
"cwb2G::Coherence",info,
false);
#define SETHR
DATA_CONDITIONING.
void CWB_Plugin(TFile *jfile, CWB::config *cfg, network *net, WSeries< double > *x, TString ifo, int type)
sprintf(tag,"wave_%s", data_label)