3 #pragma GCC system_header
10 #include "TObjArray.h"
11 #include "TObjString.h"
14 #include "TGraphAsymmErrors.h"
31 #define CHI2_THR -2.5 // if negative the chirp pixels are tagged with pix->likelihood=0 after the selection
32 #define TMERGER_CUT 0.1
35 #define DUMP_WAVE false // dump rec/inj/wht waveforms to output root file
36 #define DUMP_CLUSTER false // dump pixel cluster to output root file
112 std::vector<netpixel> *pCLUSTER;
149 if(gCWB2G->
istage!=
CWB_STAGE_FULL) {cout<<
"CWB_Plugin_ChirpMass - Error : EBBH can be executed only in CWB_STAGE_FULL mode" << endl;
exit(1);}
154 cout <<
"CWB_Plugin_ChirpMass Error : EBBH enable only with pattern>0 !!!" << endl;
164 gEBBH.ch_mass[
i] = 0;
165 gEBBH.ch_tmerger[
i] = 0;
166 gEBBH.ch_merr[
i] = 0;
167 gEBBH.ch_mchi2[
i] = 0;
168 gEBBH.ch_energy[
i] = 0;
185 int gLRETRY=-1;
IMPORT(
int,gLRETRY)
203 for(
int k=0;
k<
K;
k++) {
209 int ID = size_t(
id.data[
j]+0.5);
217 cout <<
"event parameters : ID -> " << ID << endl;
219 cout <<
"rec_theta : " << EVT->
theta[0] <<
" rec_phi : " << EVT->
phi[0] << endl;
220 cout <<
"SNRnet : " << sqrt(EVT->
likelihood) <<
" netcc[0] : " << EVT->
netcc[0]
221 <<
" rho[0] : " << EVT->
rho[0] <<
" size : " << EVT->
size[0] << endl;
227 std::vector<wavearray<double> >
vINJ;
229 if(vINJ.size()!=
nIFO) {
230 cout <<
"CWB_Plugin_ChirpMass Error : Injection Waveform Not Found !!!" << endl;
233 for(
int n=0;
n<
nIFO;
n++) gwINJ[
n] = vINJ[
n];
258 while(!gCLUSTER.empty()) gCLUSTER.pop_back();
259 gCLUSTER.clear(); std::vector<netpixel>().swap(gCLUSTER);
278 std::vector<netpixel> vPIX;
282 if(V>cfg->
BATCH)
return vPIX;
287 __m128* _xi = (__m128*) xi.
data;
288 __m128* _XI = (__m128*) XI.
data;
290 __m128* _aa = (__m128*) NET->
a_00.
data;
291 __m128* _AA = (__m128*) NET->
a_90.
data;
294 for(
int j=0;
j<V;
j++) {
299 if(ee>En) nPC++;
else ee=0.;
306 for(
int j=0;
j<V;
j++) {
308 vPIX.push_back(*pix);
326 if(V>cfg->
BATCH)
return;
327 for(
int j=0;
j<V;
j++) {
332 while(!vPIX->empty()) vPIX->pop_back();
333 vPIX->clear(); std::vector<netpixel>().swap(*vPIX);
338 std::vector<wavearray<double> > xINJ;
342 double recTime = EVT->
time[0];
347 double injTime = 1.e12;
349 for(
int m=0;
m<
M;
m++) {
352 if(T<injTime && INJ.
fill_in(NET,mdcID)) {
367 pwfINJ[
n] = INJ.
pwf[
n];
368 if (pwfINJ[
n]==NULL) {
369 cout <<
"CWB_Plugin_ChirpMass.C : Error : Injected waveform not saved !!! : detector "
375 rFactor *= factor>0 ? factor : 1;
389 std::vector<wavearray<double> > xREC;
397 int idSize = pd->
RWFID.size();
399 for(
int mm=0; mm<idSize; mm++)
if (pd->
RWFID[mm]==ID) wfIndex=mm;
402 cout <<
"CWB_Plugin_ChirpMass.C : Error : Reconstructed waveform not saved !!! : ID -> "
403 << ID <<
" : detector " << NET->
ifoName[
n] << endl;
406 if(wfIndex>=0) pwfREC[
n] = pd->
RWFP[wfIndex];
418 if(type!=
'S' && type!=
's' && type!=
'W' && type!=
'w' && type!=
'N' && type!=
'n') {
419 cout <<
"GetWaveform : not valid type : Abort" << endl;
exit(1);
426 if(type==
'S' || type==
's') {
432 if(type==
'W' || type==
'w') {
438 if(type==
'N' || type==
'n') {
457 if(wref==NULL)
return;
458 if(wf1==NULL)
return;
459 else tmin=wf1->
start();
460 if(wf2!=NULL)
if(wf2->
start()<tmin) tmin=wf2->
start();
461 if(wf3!=NULL)
if(wf3->
start()<tmin) tmin=wf3->
start();
464 if(wf2!=NULL)
if(wf2!=wf1) wf2->
start(wf2->
start()-tmin);
465 if(wf3!=NULL)
if(wf3!=wf1 && wf3!=wf2) wf3->
start(wf3->
start()-tmin);
466 if(wref!=wf1 && wref!=wf2 && wref!=wf3) wref->
start(wref->
start()-tmin);
474 PTS.
graph[0]->GetXaxis()->SetRangeUser(bT, eT);
476 PTS.
graph[0]->SetLineWidth(1);
477 PTS.
graph[0]->SetTitle(title);
479 TString xtitle = TString::Format(
"Time (sec) : GPS OFFSET = %.3f",tmin);
480 PTS.
graph[0]->GetXaxis()->SetTitle(xtitle);
488 if(wf2!=NULL) PTS.
graph[1]->SetLineWidth(1);
497 if(wf3!=NULL) PTS.
graph[2]->SetLineWidth(1);
501 if(wf2!=NULL)
if(wf2!=wf1) wf2->
start(wf2->
start()+tmin);
502 if(wf3!=NULL)
if(wf3!=wf1 && wf3!=wf2) wf3->
start(wf3->
start()+tmin);
503 if(wref!=wf1 && wref!=wf2 && wref!=wf3) wref->
start(wref->
start()+tmin);
512 PTS.
canvas->Print(ofname);
513 cout <<
"write : " << ofname << endl;
519 double R=wf1->
rate();
521 double b_wf1 = wf1->
start();
522 double e_wf1 = wf1->
start()+wf1->
size()/R;
523 double b_wf2 = wf2->
start();
524 double e_wf2 = wf2->
start()+wf2->
size()/R;
526 int o_wf1 = b_wf1>b_wf2 ? 0 :
int((b_wf2-b_wf1)*R+0.5);
527 int o_wf2 = b_wf1<b_wf2 ? 0 :
int((b_wf1-b_wf2)*R+0.5);
529 double startXCOR = b_wf1>b_wf2 ? b_wf1 : b_wf2;
530 double endXCOR = e_wf1<e_wf2 ? e_wf1 : e_wf2;
531 int sizeXCOR =
int((endXCOR-startXCOR)*R+0.5);
536 wfdif.
start(b_wf1+
double(o_wf1)/R);
538 for(
int i=0;
i<sizeXCOR;
i++) wfdif[
i] = wf1->
data[
i+o_wf1] - wf2->
data[
i+o_wf2];
546 float* gSLAGSHIFT=NULL;
IMPORT(
float*,gSLAGSHIFT)
552 TList *
files = (TList*)gROOT->GetListOfFiles();
559 while ((file=(TSystemFile*)
next())) {
560 fname = file->GetName();
562 if(fname.Contains(
"wave_")) {
563 froot=(TFile*)file;froot->cd();
565 gOUTPUT.ReplaceAll(
".root.tmp",
".txt");
570 cout <<
"CWB_Plugin_ChirpMass.C : Error - output root file not found" << endl;
574 cout <<
"CWB_Plugin_ChirpMass.C : Error - output root file not found" << endl;
578 gTREE = (TTree *) froot->Get(
"waveburst");
588 static bool ebbh_tree_init =
false;
594 for(
int n=0;
n<nIFO;
n++) gEBBH.wDAT[
n] = &gwDAT[
n];
595 for(
int n=0;
n<
nIFO;
n++) gEBBH.wREC[
n] = &gwREC[
n];
596 for(
int n=0;
n<nIFO;
n++) gEBBH.sREC[
n] = &gsREC[
n];
598 if(gOPT.dump_cluster) {
603 if(!ebbh_tree_init) {
605 ebbh_tree_init =
true;
607 gTREE->Branch(
"ebbh_ei", &gEBBH.ei,
"ebbh_ei/F");
608 gTREE->Branch(
"ebbh_nch",&gEBBH.nch,
"ebbh_nch/I");
610 gTREE->Branch(
"ebbh_ch_mass", gEBBH.ch_mass,TString::Format(
"ebbh_ch_mass[%i]/F",
NCHIRP_MAX));
611 gTREE->Branch(
"ebbh_ch_tmerger",gEBBH.ch_tmerger,TString::Format(
"ebbh_ch_tmerger[%i]/F",
NCHIRP_MAX));
612 gTREE->Branch(
"ebbh_ch_merr", gEBBH.ch_merr,TString::Format(
"ebbh_ch_merr[%i]/F",
NCHIRP_MAX));
613 gTREE->Branch(
"ebbh_ch_mchi2", gEBBH.ch_mchi2,TString::Format(
"ebbh_ch_mchi2[%i]/F",
NCHIRP_MAX));
614 gTREE->Branch(
"ebbh_ch_energy", gEBBH.ch_energy,TString::Format(
"ebbh_ch_energy[%i]/F",
NCHIRP_MAX));
616 gTREE->Branch(
"ebbh_seggps",&gEBBH.segGPS,
"ebbh_seggps/D");
619 if(cfg->
simulation)
gTREE->Branch(TString::Format(
"ebbh_wINJ_%d",
n).Data(),
"wavearray<double>",&gEBBH.wINJ[
n],32000,0);
620 gTREE->Branch(TString::Format(
"ebbh_wDAT_%d",
n).Data(),
"wavearray<double>",&gEBBH.wDAT[
n],32000,0);
621 gTREE->Branch(TString::Format(
"ebbh_wREC_%d",
n).Data(),
"wavearray<double>",&gEBBH.wREC[
n],32000,0);
622 gTREE->Branch(TString::Format(
"ebbh_sREC_%d",
n).Data(),
"wavearray<double>",&gEBBH.sREC[
n],32000,0);
625 if(gOPT.dump_cluster) {
626 gTREE->Branch(
"ebbh_crate",&gEBBH.cRATE,
"ebbh_crate/F");
627 gTREE->Branch(
"ebbh_cluster",
"vector<netpixel>",&gEBBH.pCLUSTER,32000,0);
632 gTREE->SetBranchAddress(
"ebbh_ei", &gEBBH.ei);
633 gTREE->SetBranchAddress(
"ebbh_nch",&gEBBH.nch);
635 gTREE->SetBranchAddress(
"ebbh_ch_mass", gEBBH.ch_mass);
636 gTREE->SetBranchAddress(
"ebbh_ch_tmerger",gEBBH.ch_tmerger);
637 gTREE->SetBranchAddress(
"ebbh_ch_merr", gEBBH.ch_merr);
638 gTREE->SetBranchAddress(
"ebbh_ch_mchi2", gEBBH.ch_mchi2);
639 gTREE->SetBranchAddress(
"ebbh_ch_energy", gEBBH.ch_energy);
641 gTREE->SetBranchAddress(
"ebbh_seggps",&gEBBH.segGPS);
644 if(cfg->
simulation)
gTREE->SetBranchAddress(TString::Format(
"ebbh_wINJ_%d",
n).Data(),&gEBBH.wINJ[
n]);
645 gTREE->SetBranchAddress(TString::Format(
"ebbh_wDAT_%d",
n).Data(),&gEBBH.wDAT[
n]);
646 gTREE->SetBranchAddress(TString::Format(
"ebbh_wREC_%d",
n).Data(),&gEBBH.wREC[
n]);
647 gTREE->SetBranchAddress(TString::Format(
"ebbh_sREC_%d",
n).Data(),&gEBBH.sREC[
n]);
650 if(gOPT.dump_cluster) {
651 gTREE->SetBranchAddress(
"ebbh_crate",&gEBBH.cRATE);
652 gTREE->SetBranchAddress(
"ebbh_cluster",&gEBBH.pCLUSTER);
671 if(wf1==NULL)
return wf;
672 if(wf1->
size()==0)
return wf;
674 double R=wf1->
rate();
676 double b_wf1 = wf1->
start();
677 double e_wf1 = wf1->
start()+wf1->
size()/R;
678 double b_wf2 = wf2->
start();
679 double e_wf2 = wf2->
start()+wf2->
size()/R;
681 int o_wf1 = b_wf1>b_wf2 ? 0 :
int((b_wf2-b_wf1)*R+0.5);
682 int o_wf2 = b_wf1<b_wf2 ? 0 :
int((b_wf1-b_wf2)*R+0.5);
684 double startXCOR = b_wf1>b_wf2 ? b_wf1 : b_wf2;
685 double endXCOR = e_wf1<e_wf2 ? e_wf1 : e_wf2;
686 int sizeXCOR =
int((endXCOR-startXCOR)*R+0.5);
688 for(
int i=0;
i<sizeXCOR;
i++) wf[
i+o_wf2] = wf1->
data[
i+o_wf1];
704 T = E>0 ?
T/E : 0.5*size/
rate;
718 for(
int i=0;
i<
N;
i++) {avr+=
i*x[
i]*x[
i]; E+=x[
i]*x[
i];}
725 double sum = ((M>=0)&&(M<N)) ? x[M]*x[M] : 0.;
726 for(
int j=1;
j<
N;
j++) {
727 a = ((M-
j>=0)&&(M-j<N)) ? x[M-j] : 0.;
728 b = ((M+j>=0)&&(M+j<N)) ? x[M+j] : 0.;
748 double dF=(rate/(double)size)/2.;
749 for(
int j=0;
j<size/2;
j+=2) {
750 a = x[
j]*x[
j]+x[
j+1]*x[
j+1];
770 for(
int i=0;
i<
N;
i++) {avr+=
i*x[
i]*x[
i]; E+=x[
i]*x[
i];}
777 double sum = ((M>=0)&&(M<N)) ? x[M]*x[M] : 0.;
778 for(
int j=1;
j<
N;
j++) {
779 a = ((M-
j>=0)&&(M-j<N)) ? x[M-j] : 0.;
780 b = ((M+j>=0)&&(M+j<N)) ? x[M+j] : 0.;
787 double dF=(x.
rate()/(double)x.
size())/2.;
800 n = ifo->
IWFP.size();
801 for (
int i=0;
i<
n;
i++) {
808 n = ifo->
RWFP.size();
809 for (
int i=0;
i<
n;
i++) {
821 if(wf1==NULL)
return wf;
822 if(wf1->
size()==0)
return wf;
824 double R=wf1->
rate();
826 double b_wf1 = wf1->
start();
827 double e_wf1 = wf1->
start()+wf1->
size()/R;
828 double b_wf2 = wf2->
start();
829 double e_wf2 = wf2->
start()+wf2->
size()/R;
831 int o_wf1 = b_wf1>b_wf2 ? 0 :
int((b_wf2-b_wf1)*R+0.5);
832 int o_wf2 = b_wf1<b_wf2 ? 0 :
int((b_wf1-b_wf2)*R+0.5);
834 double startXCOR = b_wf1>b_wf2 ? b_wf1 : b_wf2;
835 double endXCOR = e_wf1<e_wf2 ? e_wf1 : e_wf2;
836 int sizeXCOR =
int((endXCOR-startXCOR)*R+0.5);
838 for(
int i=0;
i<sizeXCOR;
i++) wf[
i+o_wf1] += wf2->
data[
i+o_wf2];
850 for(
int n=0;
n<cfg->
nIFO;
n++) {
864 cout <<
"Write file : " << cfg->
DQF[cfg->
nDQF-1].
file << endl;
865 if (!out.good()) {cout <<
"Error Opening File : " << cfg->
DQF[cfg->
nDQF-1].
file << endl;
exit(1);}
869 out <<
"1 " << istart <<
" " << istop <<
" " << 2*cfg->
iwindow << endl;
878 std::vector<netpixel> vPIX;
883 for(
int j=0;
j<V;
j++) {
885 vPIX.push_back(*pix);
895 double chi2_thr = gOPT.chi2_thr;
896 double tmerger_cut = gOPT.tmerger_cut;
897 double zmax_thr = gOPT.zmax_thr;
903 double echirp = pwc->
mchirp(
id,chi2_thr,tmerger_cut,zmax_thr);
906 TF1* fit = &(pcd->
fit);
908 gEBBH.ch_mass[
i] = pcd->
mchirp;
909 gEBBH.ch_tmerger[
i] = -fit->GetParameter(1)/fit->GetParameter(0);
912 gEBBH.ch_energy[
i] = echirp;
919 for(
int i=0;
i<
NCHIRP_MAX;
i++)
if(gEBBH.ch_energy[
i]>emax) {emax=gEBBH.ch_energy[
i];imax=
i;}
923 if(
i==imax)
continue;
924 if(gEBBH.ch_mass[
i]>0) {
925 if(gEBBH.ch_mass[
i]>gEBBH.ch_mass[imax])
if(gEBBH.ch_energy[
i]>gEBBH.ch_energy[imax]/4.) imax2=
i;
931 if(gEBBH.ch_mass[
i]>0) {
932 if(gEBBH.ch_mass[
i]<gEBBH.ch_mass[imax]) gEBBH.ei+=gEBBH.ch_energy[
i];
933 if(gEBBH.ch_mass[
i]>gEBBH.ch_mass[imax]) gEBBH.ei-=gEBBH.ch_energy[
i];
936 gEBBH.ei/=gEBBH.ch_energy[imax];
940 cout <<
"---------------------------------------------------" << endl;
941 for(
int i=0;
i<
NCHIRP_MAX;
i++) cout <<
"mchirp " <<
i <<
" -> " << gEBBH.ch_mass[
i] <<
"\t\t echirp -> " << gEBBH.ch_energy[
i] << endl;
942 cout <<
"Eccentricity Index : " << gEBBH.ei << endl;
943 cout <<
"---------------------------------------------------" << endl;
946 pwc->
cData[
id-1] = CD;
960 if(options.CompareTo(
"")!=0) {
961 cout << options << endl;
962 if(!options.Contains(
"--")) {
965 for(
int j=0;
j<token->GetEntries();
j++){
967 TObjString* tok = (TObjString*)token->At(
j);
968 TString stok = tok->GetString();
970 if(stok.Contains(
"ebbh_chi2_thr=")) {
972 ebbh_chi2_thr.Remove(0,ebbh_chi2_thr.Last(
'=')+1);
973 if(ebbh_chi2_thr.IsFloat()) gOPT.chi2_thr=ebbh_chi2_thr.Atof();
976 if(stok.Contains(
"ebbh_tmerger_cut=")) {
978 ebbh_tmerger_cut.Remove(0,ebbh_tmerger_cut.Last(
'=')+1);
979 if(ebbh_tmerger_cut.IsFloat()) gOPT.tmerger_cut=ebbh_tmerger_cut.Atof();
982 if(stok.Contains(
"ebbh_zmax_thr=")) {
984 ebbh_zmax_thr.Remove(0,ebbh_zmax_thr.Last(
'=')+1);
985 if(ebbh_zmax_thr.IsFloat()) gOPT.zmax_thr=ebbh_zmax_thr.Atof();
988 if(stok.Contains(
"ebbh_dump_wave=")) {
990 opt.Remove(0,opt.Last(
'=')+1);
991 if(opt==
"false") gOPT.dump_wave=
false;
992 if(opt==
"true") gOPT.dump_wave=
true;
995 if(stok.Contains(
"ebbh_dump_cluster=")) {
997 opt.Remove(0,opt.Last(
'=')+1);
998 if(opt==
"false") gOPT.dump_cluster=
false;
999 if(opt==
"true") gOPT.dump_cluster=
true;
1008 cout <<
"-----------------------------------------" << endl;
1009 cout <<
"eBBH Plugin config options" << endl;
1010 cout <<
"-----------------------------------------" << endl << endl;
1012 cout <<
"chi2_thr : " << gOPT.chi2_thr << endl;
1013 cout <<
"tmerger_cut : " << gOPT.tmerger_cut << endl;
1014 cout <<
"zmax_thr : " << gOPT.zmax_thr << endl;
1015 cout <<
"dump_wave : " << gOPT.dump_wave << endl;
1016 cout <<
"dump_cluster : " << gOPT.dump_cluster << endl;
double GetTimeBoundaries(wavearray< double > x, double P, double &bT, double &eT)
monster wdmMRA
list of pixel pointers for MRA
wavearray< double > gwREC[NIFO_MAX]
std::vector< char * > ifoName
detector * getifo(size_t n)
param: detector index
static float _sse_abs_ps(__m128 *_a)
void PlotWaveform(TString ofname, TString title, CWB::config *cfg, wavearray< double > *wf1, wavearray< double > *wf2, wavearray< double > *wf3, wavearray< double > *wref, bool fft=false, TString pdir="", double P=0.99)
virtual size_t size() const
wavearray< double > GetAlignedWaveform(wavearray< double > *wf1, wavearray< double > *wf2)
Float_t * rho
biased null statistics
std::vector< netpixel > gCLUSTER
void CWB_Plugin(TFile *jfile, CWB::config *cfg, network *NET, WSeries< double > *x, TString ifo, int type)
std::vector< wavearray< double > > GetRecWaveform(network *NET, netevent *EVT, int id)
std::vector< wavearray< double > > wREC[MAX_TRIALS]
void setSLags(float *slag)
printf("total live time: non-zero lags = %10.1f \n", liveTot)
std::vector< double > * getmdcTime()
wavearray< double > GetDifWaveform(wavearray< double > *wf1, wavearray< double > *wf2)
virtual void rate(double r)
wavearray< double > a(hp.size())
static void _sse_zero_ps(__m128 *_p)
cout<< "skymap size : "<< L<< endl;for(int l=0;l< L;l++) sm.set(l, l);sm > const_cast< char * >("skymap.dat")
wavearray< float > a_90
buffer for cluster sky 00 amplitude
Int_t * size
cluster volume
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...
std::vector< wavearray< double > * > RWFP
int _sse_mra_ps(float *, float *, float, int)
std::vector< TGraph * > graph
void ResetPCA(network *NET, CWB::config *cfg, netcluster *pwc, std::vector< netpixel > *vPIX, int ID)
std::vector< wavearray< double > > vINJ
wavearray< double > gsREC[NIFO_MAX]
WSeries< double > waveBand
virtual void start(double s)
bool getMRAwave(size_t ID, size_t lag, char atype='S', int mode=0, bool tof=false)
void plot(wavearray< double > &, char *=NULL, int=1, double=0., double=0., bool=false, float=0., float=0., bool=false, float=0., bool=false)
std::vector< detector * > ifoList
void dopen(const char *fname, char *mode, bool header=true)
std::vector< wavearray< double > > GetInjWaveform(network *NET, netevent *EVT, int id, double factor)
wavearray< double > AddWaveforms(wavearray< double > *wf1, wavearray< double > *wf2)
wavearray< float > pNRG
buffers for cluster residual energy
double GetFrequencyBoundaries(wavearray< double > x, double P, double &bF, double &eF)
wavearray< double > gwINJ[NIFO_MAX]
void output2G(TTree *, network *, size_t, int, double)
wavearray< double > gwDAT[NIFO_MAX]
std::vector< netpixel > DoPCA(network *NET, CWB::config *cfg, int lag, int id)
void ClearWaveforms(detector *ifo)
Int_t Psave
number of detectors
#define IMPORT(TYPE, VAR)
xtalk getXTalk(int nLay1, size_t indx1, int nLay2, size_t indx2)
param: numbers of layers identifying the resolution of the first pixel param: TF map index of the fir...
Double_t * gps
average center_of_gravity time
void DumpOutputFile(network *NET, netevent *&EVT, CWB::config *cfg, int ID, int k, int factor)
wavearray< float > a_00
wdm multi-resolution analysis
void SetEventWindow(CWB::config *cfg, double gps)
TIter next(twave->GetListOfBranches())
wavearray< double > gsINJ[NIFO_MAX]
Float_t * netcc
effective correlated SNR
std::vector< wavearray< double > * > IWFP
double mchirp(int ID, double=2.5, double=1.e20, double=0)
wavearray< double > gHOT[NIFO_MAX]
double GetCentralFrequency(wavearray< double > x)
std::vector< netpixel > GetCluster(network *NET, CWB::config *cfg, int lag, int id)
wavearray< double > sINJ[NIFO_MAX]
double GetCentralTime(wavearray< double > x)
netpixel * getPixel(size_t n, size_t i)
void ReadUserOptions(CWB::config *cfg)
void GetEccentricityIndex(network *NET, int lag, int id)
Float_t * phi
sqrt(h+*h+ + hx*hx)
netevent EVT(itree, nifo)
Float_t * theta
[0]-reconstructed, [1]-injected phi angle, [2]-RA
Double_t * time
beam pattern coefficients for hx
WSeries< double > waveForm
double fabs(const Complex &x)
wavearray< double > GetWaveform(int ifoId, network *NET, int lag, int id, char type, bool shift=true)
strcpy(RunLabel, RUN_LABEL)
netcluster * getwc(size_t n)
param: delay index
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
std::vector< clusterdata > cData
wavearray< float > rNRG
buffer for cluster sky 90 amplitudes
double factors[FACTORS_MAX]
wavearray< double > wINJ[NIFO_MAX]
void SetOutputFile(network *NET, netevent *&EVT, CWB::config *cfg, bool dump_ebbh)
Bool_t fill_in(network *, int, bool=true)
WSeries< double > waveNull
size_t getmdc__ID(size_t n)
wavearray< double > ** pwf
[x1,y1,z1,x2,y2,z2] components of spin vector
bool setdata(double a, char type='R', size_t n=0)