21 #pragma GCC system_header 28 #include "TObjArray.h" 29 #include "TObjString.h" 47 cout <<
"-----> plugins/CWB_Plugin_waveform.C" << endl;
48 cout <<
"ifo " << ifo.Data() << endl;
49 cout <<
"type " << type << endl;
64 bool batch = gROOT->IsBatch();
65 gROOT->SetBatch(
true);
68 char strtime[1024] =
"";
73 double eventTime[
NIFO];
84 TList *files = (TList*)gROOT->GetListOfFiles();
90 while ((file=(TSystemFile*)
next())) {
91 fname = file->GetName();
93 if(fname.Contains(
"wave_")) {froot=(TFile*)file;froot->cd();}
96 cout <<
"plugins/CWB_Plugin_waveform.C : Error - output root file not found" << endl;
100 cout <<
"plugins/CWB_Plugin_waveform.C : Error - output root file not found" << endl;
113 for(n=0; n<nIFO; n++) wave[n] = new wavearray<double>;
114 TTree* wftree = (TTree *) froot->Get(
"waveform");
116 wftree =
new TTree(
"waveform",
"waveform");
117 wftree->Branch(
"ndim",&ndim,
"ndim/I");
118 wftree->Branch(
"run",&run,
"run/I");
119 wftree->Branch(
"eventID",&eventID,
"eventID/I");
120 wftree->Branch(
"rho",&rho,
"rho/F");
121 wftree->Branch(
"netcc",&netcc,
"netcc/F");
122 wftree->Branch(
"likelihood",&likelihood,
"likelihood/F");
123 char csnr[16];
sprintf(csnr,
"snr[%1d]/F",nIFO);
124 wftree->Branch(
"snr",snr,csnr);
125 wftree->Branch(
"frequency",&frequency,
"frequency/F");
127 wftree->Branch(
"time",time,ctime);
128 char clag[16];
sprintf(clag,
"lag[%1d]/F",nIFO+1);
129 char cslag[16];
sprintf(cslag,
"slag[%1d]/F",nIFO+1);
130 wftree->Branch(
"lag",lag,clag);
131 wftree->Branch(
"slag",slag,cslag);
133 for(n=0; n<
nIFO; n++) {
135 wftree->Branch(label,
"wavearray<double>",&wave[n],32000,0);
138 wftree->SetBranchAddress(
"ndim",&ndim);
139 wftree->SetBranchAddress(
"run",&run);
140 wftree->SetBranchAddress(
"eventID",&eventID);
141 wftree->SetBranchAddress(
"rho",&rho);
142 wftree->SetBranchAddress(
"netcc",&netcc);
143 wftree->SetBranchAddress(
"frequency",&frequency);
144 wftree->SetBranchAddress(
"likelihood",&likelihood);
145 wftree->SetBranchAddress(
"snr",snr);
146 wftree->SetBranchAddress(
"time",time);
147 wftree->SetBranchAddress(
"lag",lag);
148 wftree->SetBranchAddress(
"slag",slag);
150 for(n=0; n<
nIFO; n++) {
153 wftree->SetBranchAddress(label,&wave[n]);
163 id = NET->
getwc(k)->
get(const_cast<char*>(
"ID"), 0,
'L', rate);
165 for(j=0; j<(
int)
id.
size(); j++) {
167 ID = size_t(
id.data[j]+0.5);
171 EVT->
output(NULL,NET,factor,ID,k);
175 netcc = EVT->
netcc[0];
178 for(n=0; n<
nIFO; n++) snr[n] = EVT->
sSNR[n];
179 for(n=0; n<nIFO; n++) time[
n] = EVT->
time[
n];
180 for(n=0; n<=
nIFO; n++) lag[n] = EVT->
lag[n];
181 for(n=0; n<=nIFO; n++) slag[
n] = EVT->
slag[
n];
184 int lagMin=2147483647;
185 for(n=0; n<
nIFO; n++)
if(EVT->
lag[n]<lagMin) {lagMin=
int(EVT->
lag[n]);masterDet=
n;}
190 double gps_start = EVT->
time[masterDet]-EVT->
duration[masterDet];
191 double gps_stop = EVT->
time[masterDet]+EVT->
duration[masterDet];
198 for(n=0; n<
nIFO; n++) eventTime[n]=(EVT->
start[n]+EVT->
stop[n])/2.;
199 for(n=0; n<
nIFO; n++) minTime = (eventTime[n]<minTime) ? eventTime[
n] : minTime;
200 for(n=0; n<
nIFO; n++) lagTime[n]=eventTime[n]-minTime;
201 for(n=0; n<
nIFO; n++) minTimeDet = (eventTime[n]<=minTime) ?
n : minTimeDet;
205 for(n=0; n<
nIFO; n++) {
208 w.
resize(pD[n]->waveForm.size());
209 for(
int i=0;i<w.
size();i++) w[i]=pD[n]->waveForm.data[i];
217 int size = (eT-bT)/dt;
222 for(
int i=0;i<
size;i++) wave[n]->data[i]=w[i+os];
229 wftree->Write(
"", TObject::kOverwrite);
231 gROOT->SetBatch(batch);
235 for(n=0; n<
nIFO; n++)
delete wave[n];
256 for(
int i=0;
i<
N;
i++) {avr+=
i*x[
i]*x[
i]; E+=x[
i]*x[
i];}
263 double sum = ((M>=0)&&(M<N)) ? x[M]*x[M] : 0.;
264 for(
int j=1;
j<
N;
j++) {
265 a = ((M-
j>=0)&&(M-j<N)) ? x[M-j] : 0.;
266 b = ((M+j>=0)&&(M+j<N)) ? x[M+j] : 0.;
std::vector< char * > ifoName
detector * getifo(size_t n)
param: detector index
Float_t * rho
biased null statistics
Double_t * start
cluster duration = stopW-startW
virtual void rate(double r)
Float_t * duration
max cluster time relative to segment start
bool getwave(size_t, size_t, char='W')
param: cluster ID param: delay index param: time series type return: true if time series are extracte...
wavearray< double > a(hp.size())
cout<< endl;cout<< "ts size = "<< ts.size()<< " ts rate = "<< ts.rate()<< endl;tf.Forward(ts, wdm);int levels=tf.getLevel();cout<< "tf size = "<< tf.size()<< endl;double dF=tf.resolution();double dT=1./(2 *dF);cout<< "rate(hz) : "<< RATE<< "\ layers : "<< nLAYERS<< "\ dF(hz) : "<< dF<< "\ dT(ms) : "<< dT *1000.<< endl;int itime=TIME_PIXEL_INDEX;int ifreq=FREQ_PIXEL_INDEX;int index=(levels+1) *itime+ifreq;double time=itime *dT;double freq=(ifreq >0) ? ifreq *dF :dF/4;cout<< endl;cout<< "PIXEL TIME = "<< time<< " sec "<< endl;cout<< "PIXEL FREQ = "<< freq<< " Hz "<< endl;cout<< endl;wavearray< double > x
wavearray< double > get(char *name, size_t index=0, char atype='R', int type=1, bool=true)
param: string with parameter name param: index in the amplitude array, which define detector param: c...
virtual void start(double s)
std::vector< size_t > mdc__ID
virtual size_t size() const
Float_t * frequency
GPS stop time of the cluster.
Double_t * stop
GPS start time of the cluster.
TIter next(twave->GetListOfBranches())
Float_t * lag
time between consecutive events
Float_t * netcc
effective correlated SNR
Float_t * slag
time lag [sec]
void output(TTree *=NULL, network *=NULL, double=0., size_t=0, int=-1)
long likelihood(char='E', double=sqrt(2.), int=0, size_t=0, int=-1, bool=false)
netevent EVT(itree, nifo)
Double_t * time
beam pattern coefficients for hx
Float_t * sSNR
data-signal correlation Xk*Sk
netcluster * getwc(size_t n)
param: delay index
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
virtual void resize(unsigned int)