21 #pragma GCC system_header 30 #include "TObjArray.h" 31 #include "TObjString.h" 34 #include "TGraphAsymmErrors.h" 51 #define CHI2_THR -2.5 // if negative the chirp pixels are tagged with pix->likelihood=0 after the selection 52 #define TMERGER_CUT 0.1 55 #define DUMP_WAVE false // dump rec/inj/wht waveforms to output root file 56 #define DUMP_CLUSTER false // dump pixel cluster to output root file 132 std::vector<netpixel> *pCLUSTER;
169 if(gCWB2G->
istage!=
CWB_STAGE_FULL) {cout<<
"CWB_Plugin_ChirpMass - Error : EBBH can be executed only in CWB_STAGE_FULL mode" << endl;
exit(1);}
174 cout <<
"CWB_Plugin_ChirpMass Error : EBBH enable only with pattern>0 !!!" << endl;
184 gEBBH.ch_mass[
i] = 0;
185 gEBBH.ch_tmerger[
i] = 0;
186 gEBBH.ch_merr[
i] = 0;
187 gEBBH.ch_mchi2[
i] = 0;
188 gEBBH.ch_energy[
i] = 0;
205 int gLRETRY=-1;
IMPORT(
int,gLRETRY)
223 for(
int k=0;
k<
K;
k++) {
225 id = NET->
getwc(
k)->
get(const_cast<char*>(
"ID"), 0,
'L', rate);
229 int ID = size_t(
id.data[
j]+0.5);
237 cout <<
"event parameters : ID -> " << ID << endl;
239 cout <<
"rec_theta : " << EVT->
theta[0] <<
" rec_phi : " << EVT->
phi[0] << endl;
240 cout <<
"SNRnet : " << sqrt(EVT->
likelihood) <<
" netcc[0] : " << EVT->
netcc[0]
241 <<
" rho[0] : " << EVT->
rho[0] <<
" size : " << EVT->
size[0] << endl;
247 std::vector<wavearray<double> >
vINJ;
249 if(vINJ.size()!=
nIFO) {
250 cout <<
"CWB_Plugin_ChirpMass Error : Injection Waveform Not Found !!!" << endl;
253 for(
int n=0;
n<
nIFO;
n++) gwINJ[
n] = vINJ[
n];
278 while(!gCLUSTER.empty()) gCLUSTER.pop_back();
279 gCLUSTER.clear(); std::vector<netpixel>().swap(gCLUSTER);
298 std::vector<netpixel> vPIX;
302 if(V>cfg->
BATCH)
return vPIX;
307 __m128* _xi = (__m128*) xi.
data;
308 __m128* _XI = (__m128*) XI.
data;
310 __m128* _aa = (__m128*) NET->
a_00.
data;
311 __m128* _AA = (__m128*) NET->
a_90.
data;
314 for(
int j=0;
j<V;
j++) {
319 if(ee>En) nPC++;
else ee=0.;
326 for(
int j=0;
j<V;
j++) {
328 vPIX.push_back(*pix);
346 if(V>cfg->
BATCH)
return;
347 for(
int j=0;
j<V;
j++) {
352 while(!vPIX->empty()) vPIX->pop_back();
353 vPIX->clear(); std::vector<netpixel>().swap(*vPIX);
358 std::vector<wavearray<double> > xINJ;
362 double recTime = EVT->
time[0];
367 double injTime = 1.e12;
369 for(
int m=0;
m<
M;
m++) {
372 if(T<injTime && INJ.
fill_in(NET,mdcID)) {
387 pwfINJ[
n] = INJ.
pwf[
n];
388 if (pwfINJ[
n]==NULL) {
389 cout <<
"CWB_Plugin_ChirpMass.C : Error : Injected waveform not saved !!! : detector " 395 rFactor *= factor>0 ?
factor : 1;
409 std::vector<wavearray<double> > xREC;
417 int idSize = pd->
RWFID.size();
419 for(
int mm=0; mm<idSize; mm++)
if (pd->
RWFID[mm]==ID) wfIndex=mm;
422 cout <<
"CWB_Plugin_ChirpMass.C : Error : Reconstructed waveform not saved !!! : ID -> " 423 << ID <<
" : detector " << NET->
ifoName[
n] << endl;
426 if(wfIndex>=0) pwfREC[
n] = pd->
RWFP[wfIndex];
438 if(type!=
'S' && type!=
's' && type!=
'W' && type!=
'w' && type!=
'N' && type!=
'n') {
439 cout <<
"GetWaveform : not valid type : Abort" << endl;
exit(1);
446 if(type==
'S' || type==
's') {
452 if(type==
'W' || type==
'w') {
458 if(type==
'N' || type==
'n') {
473 watplot PTS(const_cast<char*>(
"ptspe"),200,20,800,500);
477 if(wref==NULL)
return;
478 if(wf1==NULL)
return;
479 else tmin=wf1->
start();
480 if(wf2!=NULL)
if(wf2->
start()<tmin) tmin=wf2->
start();
481 if(wf3!=NULL)
if(wf3->
start()<tmin) tmin=wf3->
start();
484 if(wf2!=NULL)
if(wf2!=wf1) wf2->
start(wf2->
start()-tmin);
485 if(wf3!=NULL)
if(wf3!=wf1 && wf3!=wf2) wf3->
start(wf3->
start()-tmin);
486 if(wref!=wf1 && wref!=wf2 && wref!=wf3) wref->
start(wref->
start()-tmin);
489 PTS.
plot(wf1, const_cast<char*>(
"AL"), kRed, 0, 0,
true, cfg->
fLow, cfg->
fHigh);
493 PTS.
plot(wf1, const_cast<char*>(
"AL"), kRed, bT, eT);
494 PTS.
graph[0]->GetXaxis()->SetRangeUser(bT, eT);
496 PTS.
graph[0]->SetLineWidth(1);
497 PTS.
graph[0]->SetTitle(title);
499 TString xtitle = TString::Format(
"Time (sec) : GPS OFFSET = %.3f",tmin);
500 PTS.
graph[0]->GetXaxis()->SetTitle(xtitle);
504 if(wf2!=NULL) PTS.
plot(wf2, const_cast<char*>(
"SAME"), kBlue, 0, 0,
true, cfg->
fLow, cfg->
fHigh);
506 if(wf2!=NULL) PTS.
plot(wf2, const_cast<char*>(
"SAME"), kBlue, 0, 0);
508 if(wf2!=NULL) PTS.
graph[1]->SetLineWidth(1);
513 if(wf3!=NULL) PTS.
plot(wf3, const_cast<char*>(
"SAME"), kGreen+2, 0, 0,
true, cfg->
fLow, cfg->
fHigh);
515 if(wf3!=NULL) PTS.
plot(wf3, const_cast<char*>(
"SAME"), kGreen+2, 0, 0);
517 if(wf3!=NULL) PTS.
graph[2]->SetLineWidth(1);
521 if(wf2!=NULL)
if(wf2!=wf1) wf2->
start(wf2->
start()+tmin);
522 if(wf3!=NULL)
if(wf3!=wf1 && wf3!=wf2) wf3->
start(wf3->
start()+tmin);
523 if(wref!=wf1 && wref!=wf2 && wref!=wf3) wref->
start(wref->
start()+tmin);
532 PTS.
canvas->Print(ofname);
533 cout <<
"write : " << ofname << endl;
539 double R=wf1->
rate();
541 double b_wf1 = wf1->
start();
542 double e_wf1 = wf1->
start()+wf1->
size()/R;
543 double b_wf2 = wf2->
start();
544 double e_wf2 = wf2->
start()+wf2->
size()/R;
546 int o_wf1 = b_wf1>b_wf2 ? 0 :
int((b_wf2-b_wf1)*R+0.5);
547 int o_wf2 = b_wf1<b_wf2 ? 0 :
int((b_wf1-b_wf2)*R+0.5);
549 double startXCOR = b_wf1>b_wf2 ? b_wf1 : b_wf2;
550 double endXCOR = e_wf1<e_wf2 ? e_wf1 : e_wf2;
551 int sizeXCOR =
int((endXCOR-startXCOR)*R+0.5);
556 wfdif.
start(b_wf1+
double(o_wf1)/R);
558 for(
int i=0;
i<sizeXCOR;
i++) wfdif[
i] = wf1->
data[
i+o_wf1] - wf2->
data[
i+o_wf2];
566 float* gSLAGSHIFT=NULL;
IMPORT(
float*,gSLAGSHIFT)
572 TList *files = (TList*)gROOT->GetListOfFiles();
579 while ((file=(TSystemFile*)
next())) {
580 fname = file->GetName();
582 if(fname.Contains(
"wave_")) {
583 froot=(TFile*)file;froot->cd();
585 gOUTPUT.ReplaceAll(
".root.tmp",
".txt");
590 cout <<
"CWB_Plugin_ChirpMass.C : Error - output root file not found" << endl;
594 cout <<
"CWB_Plugin_ChirpMass.C : Error - output root file not found" << endl;
598 gTREE = (TTree *) froot->Get(
"waveburst");
608 static bool ebbh_tree_init =
false;
614 for(
int n=0;
n<nIFO;
n++) gEBBH.wDAT[
n] = &gwDAT[
n];
615 for(
int n=0;
n<
nIFO;
n++) gEBBH.wREC[
n] = &gwREC[
n];
616 for(
int n=0;
n<nIFO;
n++) gEBBH.sREC[
n] = &gsREC[
n];
618 if(gOPT.dump_cluster) {
623 if(!ebbh_tree_init) {
625 ebbh_tree_init =
true;
627 gTREE->Branch(
"ebbh_ei", &gEBBH.ei,
"ebbh_ei/F");
628 gTREE->Branch(
"ebbh_nch",&gEBBH.nch,
"ebbh_nch/I");
630 gTREE->Branch(
"ebbh_ch_mass", gEBBH.ch_mass,TString::Format(
"ebbh_ch_mass[%i]/F",
NCHIRP_MAX));
631 gTREE->Branch(
"ebbh_ch_tmerger",gEBBH.ch_tmerger,TString::Format(
"ebbh_ch_tmerger[%i]/F",
NCHIRP_MAX));
632 gTREE->Branch(
"ebbh_ch_merr", gEBBH.ch_merr,TString::Format(
"ebbh_ch_merr[%i]/F",
NCHIRP_MAX));
633 gTREE->Branch(
"ebbh_ch_mchi2", gEBBH.ch_mchi2,TString::Format(
"ebbh_ch_mchi2[%i]/F",
NCHIRP_MAX));
634 gTREE->Branch(
"ebbh_ch_energy", gEBBH.ch_energy,TString::Format(
"ebbh_ch_energy[%i]/F",
NCHIRP_MAX));
636 gTREE->Branch(
"ebbh_seggps",&gEBBH.segGPS,
"ebbh_seggps/D");
639 if(cfg->
simulation)
gTREE->Branch(TString::Format(
"ebbh_wINJ_%d",
n).Data(),
"wavearray<double>",&gEBBH.wINJ[
n],32000,0);
640 gTREE->Branch(TString::Format(
"ebbh_wDAT_%d",
n).Data(),
"wavearray<double>",&gEBBH.wDAT[
n],32000,0);
641 gTREE->Branch(TString::Format(
"ebbh_wREC_%d",
n).Data(),
"wavearray<double>",&gEBBH.wREC[
n],32000,0);
642 gTREE->Branch(TString::Format(
"ebbh_sREC_%d",
n).Data(),
"wavearray<double>",&gEBBH.sREC[
n],32000,0);
645 if(gOPT.dump_cluster) {
646 gTREE->Branch(
"ebbh_crate",&gEBBH.cRATE,
"ebbh_crate/F");
647 gTREE->Branch(
"ebbh_cluster",
"vector<netpixel>",&gEBBH.pCLUSTER,32000,0);
652 gTREE->SetBranchAddress(
"ebbh_ei", &gEBBH.ei);
653 gTREE->SetBranchAddress(
"ebbh_nch",&gEBBH.nch);
655 gTREE->SetBranchAddress(
"ebbh_ch_mass", gEBBH.ch_mass);
656 gTREE->SetBranchAddress(
"ebbh_ch_tmerger",gEBBH.ch_tmerger);
657 gTREE->SetBranchAddress(
"ebbh_ch_merr", gEBBH.ch_merr);
658 gTREE->SetBranchAddress(
"ebbh_ch_mchi2", gEBBH.ch_mchi2);
659 gTREE->SetBranchAddress(
"ebbh_ch_energy", gEBBH.ch_energy);
661 gTREE->SetBranchAddress(
"ebbh_seggps",&gEBBH.segGPS);
664 if(cfg->
simulation)
gTREE->SetBranchAddress(TString::Format(
"ebbh_wINJ_%d",
n).Data(),&gEBBH.wINJ[
n]);
665 gTREE->SetBranchAddress(TString::Format(
"ebbh_wDAT_%d",
n).Data(),&gEBBH.wDAT[
n]);
666 gTREE->SetBranchAddress(TString::Format(
"ebbh_wREC_%d",
n).Data(),&gEBBH.wREC[
n]);
667 gTREE->SetBranchAddress(TString::Format(
"ebbh_sREC_%d",
n).Data(),&gEBBH.sREC[
n]);
670 if(gOPT.dump_cluster) {
671 gTREE->SetBranchAddress(
"ebbh_crate",&gEBBH.cRATE);
672 gTREE->SetBranchAddress(
"ebbh_cluster",&gEBBH.pCLUSTER);
691 if(wf1==NULL)
return wf;
692 if(wf1->
size()==0)
return wf;
694 double R=wf1->
rate();
696 double b_wf1 = wf1->
start();
697 double e_wf1 = wf1->
start()+wf1->
size()/R;
698 double b_wf2 = wf2->
start();
699 double e_wf2 = wf2->
start()+wf2->
size()/R;
701 int o_wf1 = b_wf1>b_wf2 ? 0 :
int((b_wf2-b_wf1)*R+0.5);
702 int o_wf2 = b_wf1<b_wf2 ? 0 :
int((b_wf1-b_wf2)*R+0.5);
704 double startXCOR = b_wf1>b_wf2 ? b_wf1 : b_wf2;
705 double endXCOR = e_wf1<e_wf2 ? e_wf1 : e_wf2;
706 int sizeXCOR =
int((endXCOR-startXCOR)*R+0.5);
708 for(
int i=0;
i<sizeXCOR;
i++) wf[
i+o_wf2] = wf1->
data[
i+o_wf1];
724 T = E>0 ?
T/E : 0.5*size/
rate;
738 for(
int i=0;
i<
N;
i++) {avr+=
i*x[
i]*x[
i]; E+=x[
i]*x[
i];}
745 double sum = ((M>=0)&&(M<N)) ? x[M]*x[M] : 0.;
746 for(
int j=1;
j<
N;
j++) {
747 a = ((M-
j>=0)&&(M-j<N)) ? x[M-j] : 0.;
748 b = ((M+j>=0)&&(M+j<N)) ? x[M+j] : 0.;
768 double dF=(rate/(double)size)/2.;
769 for(
int j=0;
j<size/2;
j+=2) {
770 a = x[
j]*x[
j]+x[
j+1]*x[
j+1];
790 for(
int i=0;
i<
N;
i++) {avr+=
i*x[
i]*x[
i]; E+=x[
i]*x[
i];}
797 double sum = ((M>=0)&&(M<N)) ? x[M]*x[M] : 0.;
798 for(
int j=1;
j<
N;
j++) {
799 a = ((M-
j>=0)&&(M-j<N)) ? x[M-j] : 0.;
800 b = ((M+j>=0)&&(M+j<N)) ? x[M+j] : 0.;
807 double dF=(x.
rate()/(double)x.
size())/2.;
820 n = ifo->
IWFP.size();
821 for (
int i=0;
i<
n;
i++) {
828 n = ifo->
RWFP.size();
829 for (
int i=0;
i<
n;
i++) {
841 if(wf1==NULL)
return wf;
842 if(wf1->
size()==0)
return wf;
844 double R=wf1->
rate();
846 double b_wf1 = wf1->
start();
847 double e_wf1 = wf1->
start()+wf1->
size()/R;
848 double b_wf2 = wf2->
start();
849 double e_wf2 = wf2->
start()+wf2->
size()/R;
851 int o_wf1 = b_wf1>b_wf2 ? 0 :
int((b_wf2-b_wf1)*R+0.5);
852 int o_wf2 = b_wf1<b_wf2 ? 0 :
int((b_wf1-b_wf2)*R+0.5);
854 double startXCOR = b_wf1>b_wf2 ? b_wf1 : b_wf2;
855 double endXCOR = e_wf1<e_wf2 ? e_wf1 : e_wf2;
856 int sizeXCOR =
int((endXCOR-startXCOR)*R+0.5);
858 for(
int i=0;
i<sizeXCOR;
i++) wf[
i+o_wf1] += wf2->
data[
i+o_wf2];
870 for(
int n=0;
n<cfg->
nIFO;
n++) {
884 cout <<
"Write file : " << cfg->
DQF[cfg->
nDQF-1].
file << endl;
885 if (!out.good()) {cout <<
"Error Opening File : " << cfg->
DQF[cfg->
nDQF-1].
file << endl;
exit(1);}
889 out <<
"1 " << istart <<
" " << istop <<
" " << 2*cfg->
iwindow << endl;
898 std::vector<netpixel> vPIX;
903 for(
int j=0;
j<V;
j++) {
905 vPIX.push_back(*pix);
915 double chi2_thr = gOPT.chi2_thr;
916 double tmerger_cut = gOPT.tmerger_cut;
917 double zmax_thr = gOPT.zmax_thr;
923 double echirp = pwc->
mchirp(
id,chi2_thr,tmerger_cut,zmax_thr);
926 TF1* fit = &(pcd->
fit);
928 gEBBH.ch_mass[
i] = pcd->
mchirp;
929 gEBBH.ch_tmerger[
i] = -fit->GetParameter(1)/fit->GetParameter(0);
932 gEBBH.ch_energy[
i] = echirp;
939 for(
int i=0;
i<
NCHIRP_MAX;
i++)
if(gEBBH.ch_energy[
i]>emax) {emax=gEBBH.ch_energy[
i];imax=
i;}
943 if(
i==imax)
continue;
944 if(gEBBH.ch_mass[
i]>0) {
945 if(gEBBH.ch_mass[
i]>gEBBH.ch_mass[imax])
if(gEBBH.ch_energy[
i]>gEBBH.ch_energy[imax]/4.) imax2=
i;
951 if(gEBBH.ch_mass[
i]>0) {
952 if(gEBBH.ch_mass[
i]<gEBBH.ch_mass[imax]) gEBBH.ei+=gEBBH.ch_energy[
i];
953 if(gEBBH.ch_mass[
i]>gEBBH.ch_mass[imax]) gEBBH.ei-=gEBBH.ch_energy[
i];
956 gEBBH.ei/=gEBBH.ch_energy[imax];
960 cout <<
"---------------------------------------------------" << endl;
961 for(
int i=0;
i<
NCHIRP_MAX;
i++) cout <<
"mchirp " <<
i <<
" -> " << gEBBH.ch_mass[
i] <<
"\t\t echirp -> " << gEBBH.ch_energy[
i] << endl;
962 cout <<
"Eccentricity Index : " << gEBBH.ei << endl;
963 cout <<
"---------------------------------------------------" << endl;
966 pwc->
cData[
id-1] = CD;
980 if(options.CompareTo(
"")!=0) {
981 cout << options << endl;
982 if(!options.Contains(
"--")) {
985 for(
int j=0;
j<token->GetEntries();
j++){
987 TObjString* tok = (TObjString*)token->At(
j);
988 TString stok = tok->GetString();
990 if(stok.Contains(
"ebbh_chi2_thr=")) {
992 ebbh_chi2_thr.Remove(0,ebbh_chi2_thr.Last(
'=')+1);
993 if(ebbh_chi2_thr.IsFloat()) gOPT.chi2_thr=ebbh_chi2_thr.Atof();
996 if(stok.Contains(
"ebbh_tmerger_cut=")) {
998 ebbh_tmerger_cut.Remove(0,ebbh_tmerger_cut.Last(
'=')+1);
999 if(ebbh_tmerger_cut.IsFloat()) gOPT.tmerger_cut=ebbh_tmerger_cut.Atof();
1002 if(stok.Contains(
"ebbh_zmax_thr=")) {
1004 ebbh_zmax_thr.Remove(0,ebbh_zmax_thr.Last(
'=')+1);
1005 if(ebbh_zmax_thr.IsFloat()) gOPT.zmax_thr=ebbh_zmax_thr.Atof();
1008 if(stok.Contains(
"ebbh_dump_wave=")) {
1010 opt.Remove(0,opt.Last(
'=')+1);
1011 if(opt==
"false") gOPT.dump_wave=
false;
1012 if(opt==
"true") gOPT.dump_wave=
true;
1015 if(stok.Contains(
"ebbh_dump_cluster=")) {
1017 opt.Remove(0,opt.Last(
'=')+1);
1018 if(opt==
"false") gOPT.dump_cluster=
false;
1019 if(opt==
"true") gOPT.dump_cluster=
true;
1028 cout <<
"-----------------------------------------" << endl;
1029 cout <<
"eBBH Plugin config options" << endl;
1030 cout <<
"-----------------------------------------" << endl << endl;
1032 cout <<
"chi2_thr : " << gOPT.chi2_thr << endl;
1033 cout <<
"tmerger_cut : " << gOPT.tmerger_cut << endl;
1034 cout <<
"zmax_thr : " << gOPT.zmax_thr << endl;
1035 cout <<
"dump_wave : " << gOPT.dump_wave << endl;
1036 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)
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)
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)
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<< "\ 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...
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
virtual size_t size() const
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)
printf("total live time: non-zero lags = %10.1f \, liveTot)
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)