3 #pragma GCC system_header
10 #include "TObjArray.h"
11 #include "TObjString.h"
29 cout <<
"-----> plugins/CWB_Plugin_waveform.C" << endl;
30 cout <<
"ifo " << ifo.Data() << endl;
31 cout <<
"type " << type << endl;
46 bool batch = gROOT->IsBatch();
47 gROOT->SetBatch(
true);
50 char strtime[1024] =
"";
55 double eventTime[
NIFO];
66 TList *
files = (TList*)gROOT->GetListOfFiles();
72 while ((file=(TSystemFile*)
next())) {
73 fname = file->GetName();
75 if(fname.Contains(
"wave_")) {froot=(TFile*)file;froot->cd();}
78 cout <<
"plugins/CWB_Plugin_waveform.C : Error - output root file not found" << endl;
82 cout <<
"plugins/CWB_Plugin_waveform.C : Error - output root file not found" << endl;
95 for(n=0; n<nIFO; n++) wave[n] = new wavearray<double>;
96 TTree* wftree = (TTree *) froot->Get(
"waveform");
98 wftree =
new TTree(
"waveform",
"waveform");
99 wftree->Branch(
"ndim",&ndim,
"ndim/I");
100 wftree->Branch(
"run",&run,
"run/I");
101 wftree->Branch(
"eventID",&eventID,
"eventID/I");
102 wftree->Branch(
"rho",&rho,
"rho/F");
103 wftree->Branch(
"netcc",&netcc,
"netcc/F");
104 wftree->Branch(
"likelihood",&likelihood,
"likelihood/F");
105 char csnr[16];
sprintf(csnr,
"snr[%1d]/F",nIFO);
106 wftree->Branch(
"snr",snr,csnr);
107 wftree->Branch(
"frequency",&frequency,
"frequency/F");
109 wftree->Branch(
"time",time,ctime);
110 char clag[16];
sprintf(clag,
"lag[%1d]/F",nIFO+1);
111 char cslag[16];
sprintf(cslag,
"slag[%1d]/F",nIFO+1);
112 wftree->Branch(
"lag",lag,clag);
113 wftree->Branch(
"slag",slag,cslag);
115 for(n=0; n<
nIFO; n++) {
117 wftree->Branch(label,
"wavearray<double>",&wave[n],32000,0);
120 wftree->SetBranchAddress(
"ndim",&ndim);
121 wftree->SetBranchAddress(
"run",&run);
122 wftree->SetBranchAddress(
"eventID",&eventID);
123 wftree->SetBranchAddress(
"rho",&rho);
124 wftree->SetBranchAddress(
"netcc",&netcc);
125 wftree->SetBranchAddress(
"frequency",&frequency);
126 wftree->SetBranchAddress(
"likelihood",&likelihood);
127 wftree->SetBranchAddress(
"snr",snr);
128 wftree->SetBranchAddress(
"time",time);
129 wftree->SetBranchAddress(
"lag",lag);
130 wftree->SetBranchAddress(
"slag",slag);
132 for(n=0; n<
nIFO; n++) {
135 wftree->SetBranchAddress(label,&wave[n]);
147 for(j=0; j<(
int)
id.
size(); j++) {
149 ID = size_t(
id.data[j]+0.5);
153 EVT->
output(NULL,NET,factor,ID,k);
157 netcc = EVT->
netcc[0];
160 for(n=0; n<
nIFO; n++) snr[n] = EVT->
sSNR[n];
161 for(n=0; n<nIFO; n++) time[
n] = EVT->
time[
n];
162 for(n=0; n<=
nIFO; n++) lag[n] = EVT->
lag[n];
163 for(n=0; n<=nIFO; n++) slag[
n] = EVT->
slag[
n];
166 int lagMin=2147483647;
167 for(n=0; n<
nIFO; n++)
if(EVT->
lag[n]<lagMin) {lagMin=
int(EVT->
lag[n]);masterDet=
n;}
172 double gps_start = EVT->
time[masterDet]-EVT->
duration[masterDet];
173 double gps_stop = EVT->
time[masterDet]+EVT->
duration[masterDet];
180 for(n=0; n<
nIFO; n++) eventTime[n]=(EVT->
start[n]+EVT->
stop[n])/2.;
181 for(n=0; n<
nIFO; n++) minTime = (eventTime[n]<minTime) ? eventTime[
n] : minTime;
182 for(n=0; n<
nIFO; n++) lagTime[n]=eventTime[n]-minTime;
183 for(n=0; n<
nIFO; n++) minTimeDet = (eventTime[n]<=minTime) ? n : minTimeDet;
187 for(n=0; n<
nIFO; n++) {
190 w.
resize(pD[n]->waveForm.size());
191 for(
int i=0;i<w.
size();i++) w[i]=pD[n]->waveForm.data[i];
199 int size = (eT-bT)/dt;
204 for(
int i=0;i<
size;i++) wave[n]->data[i]=w[i+os];
211 wftree->Write(
"", TObject::kOverwrite);
213 gROOT->SetBatch(batch);
217 for(n=0; n<
nIFO; n++)
delete wave[n];
238 for(
int i=0;
i<
N;
i++) {avr+=
i*x[
i]*x[
i]; E+=x[
i]*x[
i];}
245 double sum = ((M>=0)&&(M<N)) ? x[M]*x[M] : 0.;
246 for(
int j=1;
j<
N;
j++) {
247 a = ((M-
j>=0)&&(M-j<N)) ? x[M-j] : 0.;
248 b = ((M+j>=0)&&(M+j<N)) ? x[M+j] : 0.;
std::vector< char * > ifoName
detector * getifo(size_t n)
param: detector index
virtual size_t size() const
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<< "skymap size : "<< L<< endl;for(int l=0;l< L;l++) sm.set(l, l);sm > const_cast< char * >("skymap.dat")
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<< "\t layers : "<< nLAYERS<< "\t dF(hz) : "<< dF<< "\t 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
TCut netcc("netcc","netcc[0]>0.7")
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)