3 #include "TTreeFormula.h"
4 #include "TStopwatch.h"
9 #include "Math/WrappedTF1.h"
10 #include "Math/BrentRootFinder.h"
12 #define CCAST(PAR) const_cast<char*>(PAR) \
27 tree->Draw(
"Entry$>>hist(Entries$,0,Entries$)",selection,
"goff");
28 TH1I *
hist = (TH1I*)gDirectory->Get(
"hist");
29 Long64_t iEntry = hist->GetBinLowEdge(hist->FindFirstBinAbove(0));
109 int nbins = -TMath::Nint(rho_bkg[index[bkg_entries-1]]-rho_bkg[index[0]])/
RHO_BIN;
110 cout <<
"Rho max : "<< rho_bkg[index[0]] <<
" Rho min : "<<rho_bkg[index[bkg_entries-1]] <<
" nbins : "<<nbins<<endl;
113 TH1D*
h =
new TH1D(
"h",
"h", nbins,rho_bkg[index[bkg_entries-1]],rho_bkg[index[0]]*1.05);
114 for (
int i = 0;
i<bkg_entries;
i++){h->Fill(rho_bkg[
i]);}
117 const Int_t nbinsx = h->GetNbinsX();
118 const Int_t nbinsy = h->GetNbinsY();
119 const Int_t nbinsz = h->GetNbinsZ();
120 TH1* hc = (TH1*) h->Clone();
123 for (Int_t binz = nbinsz; binz >= 1; --binz) {
124 for (Int_t biny = nbinsy; biny >= 1; --biny) {
125 for (Int_t binx = nbinsx; binx >= 1; --binx) {
126 const Int_t bin = hc->GetBin(binx, biny, binz);
127 sum += h->GetBinContent(bin);
128 hc->SetBinContent(bin, sum);
134 double far[nbins],efar[nbins],rad[nbins],rhobin[nbins],erad[nbins];
135 for (
int i = 0;
i<nbins;
i++) {
136 far[
i] = (double)hc->GetBinContent(
i)/
liveTot;
137 efar[
i] = (double)hc->GetBinError(
i)/
liveTot;
138 rhobin[
i] = hc->GetBinCenter(
i);
139 rad[
i] = AverageRad->Eval(rhobin[
i] );
149 hc->Scale(1./liveTot);
150 hc->GetYaxis()->SetTitle(
"FAR [Hz]");
151 hc->GetXaxis()->SetTitle(
"#rho");
154 sprintf(fname,
"%s/FAR.png",odir.Data());
161 c1->SetTheta(89.999);
164 TGraph2DErrors*
gr2=
new TGraph2DErrors(nbins,far,rad,rhobin,efar,erad,erad);
165 gr2->SetMarkerStyle(20);
166 gr2->SetLineColor(20);
167 gr2->SetMinimum(0.0);
168 double RHO_MAX = ceil(rho_bkg[index[0]]*1.05);
169 gr2->SetMaximum(RHO_MAX);
174 gr2->SetTitle(
"ROC Curve: Average Range vs FAR @rho threshold");
175 gr2->GetHistogram()->GetXaxis()->SetTitle(
"FAR [Hz]");
176 gr2->GetHistogram()->GetZaxis()->SetTitle(
"#rho");
179 gr2->GetHistogram()->GetXaxis()->SetLimits(1
e-12, 1
e-7);
180 gr2->GetHistogram()->GetYaxis()->SetTitle(
"Average Range [Mpc]");
181 gr2->GetXaxis()->SetTitleOffset(1.3);
182 gr2->GetYaxis()->SetTitleOffset(1.25);
183 gr2->GetXaxis()->SetTickLength(0.02);
184 gr2->GetYaxis()->SetTickLength(0.01);
185 gr2->GetXaxis()->CenterTitle(kTRUE);
186 gr2->GetYaxis()->CenterTitle(kTRUE);
187 gr2->GetZaxis()->CenterTitle(kTRUE);
188 gr2->GetXaxis()->SetTitleFont(42);
189 gr2->GetXaxis()->SetLabelFont(42);
190 gr2->GetYaxis()->SetTitleFont(42);
191 gr2->GetYaxis()->SetLabelFont(42);
193 gr2->GetYaxis()->SetNoExponent(kTRUE);
195 gr2->Draw(
"err zcolpcol");
196 sprintf(fname,
"%s/ROC.png",odir.Data());
201 sprintf(fname,
"%s/ROC.txt",odir.Data());
202 FILE* frange = fopen(fname,
"w");
203 fprintf(frange,
"#rho FAR[Hz] eFAR range[Mpc] erange\n");
204 for(
int i=0;
i<nbins;
i++){
fprintf(frange,
"%3.3g %4.3g %4.3g %4.4g %4.4g\n",hc->GetBinCenter(
i),far[
i],efar[
i],rad[
i],erad[
i]);}
217 void CWB::CBCTool::doROCPlot(
int bkg_entries,
double* rho_bkg,
int*
index,
float RHO_BIN,
float RHO_NBINS,
float RHO_MIN,
double liveTot,
double* Rrho,
double* eRrho,
double* Trho, TCanvas*
c1,
TString odir,
bool write_ascii) {
236 int nbins = (
int)RHO_NBINS;
237 cout <<
"Rho max : "<< rho_bkg[index[0]] <<
" Rho min : "<<rho_bkg[index[bkg_entries-1]] <<
" nbins : "<<nbins<<endl;
240 TH1D*
h =
new TH1D(
"h",
"h", nbins,RHO_MIN,RHO_NBINS*RHO_BIN);
241 for (
int i = 0;
i<bkg_entries;
i++){h->Fill(rho_bkg[
i]);}
245 const Int_t nbinsx = h->GetNbinsX();
246 const Int_t nbinsy = h->GetNbinsY();
247 const Int_t nbinsz = h->GetNbinsZ();
248 TH1* hc = (TH1*) h->Clone();
251 for (Int_t binz = nbinsz; binz >= 1; --binz) {
252 for (Int_t biny = nbinsy; biny >= 1; --biny) {
253 for (Int_t binx = nbinsx; binx >= 1; --binx) {
254 const Int_t bin = hc->GetBin(binx, biny, binz);
255 sum += h->GetBinContent(bin);
256 hc->SetBinContent(bin, sum);
261 double far[nbins],efar[nbins],rad[nbins],rhobin[nbins],erad[nbins], vol[nbins], evol[nbins], erhobin[nbins];
263 for (
int i = 0;
i<nbins;
i++) {
264 far[
i] = (double)hc->GetBinContent(
i+1)/liveTot*365.*86400.;
265 efar[
i] = (double)hc->GetBinError(
i+1)/liveTot*365.*86400.;
266 rhobin[
i] = hc->GetBinCenter(
i+1);
267 while(rhobin[
i]>Trho[j]) {j++;}
281 hc->Scale(365.*86400./liveTot);
282 hc->GetYaxis()->SetTitle(
"FAR [year^{-1}]");
283 hc->GetXaxis()->SetTitle(
"#rho");
286 sprintf(fname,
"%s/FAR.png",odir.Data());
293 c1->SetTheta(89.999);
296 TGraph2DErrors*
gr2=
new TGraph2DErrors(nbins,far,rad,rhobin,efar,erad,erhobin);
297 gr2->SetMarkerStyle(20);
298 gr2->SetLineColor(20);
299 gr2->SetMinimum(0.0);
300 double RHO_MAX = ceil(rho_bkg[index[0]]*1.05);
301 gr2->SetMaximum(RHO_MAX);
306 gr2->SetTitle(
"ROC Curve: Average Range vs FAR @rho threshold");
307 gr2->GetHistogram()->GetXaxis()->SetTitle(
"FAR [year^{-1}]");
308 gr2->GetHistogram()->GetZaxis()->SetTitle(
"#rho");
311 gr2->GetHistogram()->GetXaxis()->SetLimits(1
e-5, 1e1);
312 gr2->GetHistogram()->GetYaxis()->SetTitle(
"Average Range [Mpc]");
313 gr2->GetXaxis()->SetTitleOffset(1.3);
314 gr2->GetYaxis()->SetTitleOffset(1.25);
315 gr2->GetXaxis()->SetTickLength(0.02);
316 gr2->GetYaxis()->SetTickLength(0.01);
317 gr2->GetXaxis()->CenterTitle(kTRUE);
318 gr2->GetYaxis()->CenterTitle(kTRUE);
319 gr2->GetZaxis()->CenterTitle(kTRUE);
320 gr2->GetXaxis()->SetTitleFont(42);
321 gr2->GetXaxis()->SetLabelFont(42);
322 gr2->GetYaxis()->SetTitleFont(42);
323 gr2->GetYaxis()->SetLabelFont(42);
325 gr2->GetYaxis()->SetNoExponent(kTRUE);
327 gr2->Draw(
"err zcolpcol");
328 sprintf(fname,
"%s/ROC.png",odir.Data());
333 sprintf(fname,
"%s/ROC.txt",odir.Data());
334 FILE* frange = fopen(fname,
"w");
335 fprintf(frange,
"#rho FAR[year^{-1}] eFAR range[Mpc] erange\n");
336 for(
int i=0;
i<nbins;
i++){
fprintf(frange,
"%3.3g %4.3g %4.3g %4.4g %4.4g\n",hc->GetBinCenter(
i),far[
i],efar[
i],rad[
i],erad[
i]);}
341 TGraph2DErrors* gr3=
new TGraph2DErrors(nbins,far,vol,rhobin,efar,erad,erhobin);
342 gr3->SetTitle(
"ROC Curve: Average Volume vs FAR @rho threshold");
343 gr3->GetHistogram()->GetYaxis()->SetTitle(
"Average volume [Mpc^3]");
344 gr3->GetHistogram()->GetXaxis()->SetTitle(
"FAR [year^{-1}]");
345 gr3->GetHistogram()->GetZaxis()->SetTitle(
"#rho");
346 gr3->GetHistogram()->GetXaxis()->SetLimits(1
e-5, 1e2);
348 gr3->Draw(
"err zcolpcol");
349 sprintf(fname,
"%s/ROCV.png",odir.Data());
387 sprintf(fname,
"%s/range_threshold.txt",odir.Data());
388 FILE* frange = fopen(fname,
"w");
389 fprintf(frange,
"#rho range[Mpc] \n");
396 TF1 *
f2 =
new TF1(
"f2",
"[0]*pow(x,[1])*TMath::Exp(-x*[2])",T_out,Trho[RHO_NBINS-1]);
398 f2->SetParameters(500.,-1.,0.0);
400 TGraphErrors* grtmp =
new TGraphErrors(RHO_NBINS,Trho,Rrho,NULL,eRrho);
401 grtmp->SetMarkerStyle(20);
402 grtmp->SetMarkerSize(1.0);
403 grtmp->GetHistogram()->GetXaxis()->SetTitle(
"#rho");
404 grtmp->GetHistogram()->GetXaxis()->SetRangeUser(RHO_MIN,Trho[RHO_NBINS-1]);
405 grtmp->GetHistogram()->GetYaxis()->SetRangeUser(f2->Eval(Trho[RHO_NBINS-1]),f2->Eval(T_out));
406 grtmp->GetHistogram()->GetYaxis()->SetTitle(
"Average Range [Mpc]");
407 grtmp->GetXaxis()->SetTitleOffset(1.3);
408 grtmp->GetYaxis()->SetTitleOffset(1.25);
409 grtmp->GetXaxis()->SetTickLength(0.01);
410 grtmp->GetYaxis()->SetTickLength(0.01);
411 grtmp->GetXaxis()->CenterTitle(kTRUE);
412 grtmp->GetYaxis()->CenterTitle(kTRUE);
413 grtmp->GetXaxis()->SetTitleFont(42);
414 grtmp->GetXaxis()->SetLabelFont(42);
415 grtmp->GetYaxis()->SetTitleFont(42);
416 grtmp->GetYaxis()->SetLabelFont(42);
417 grtmp->GetYaxis()->SetMoreLogLabels(kTRUE);
418 grtmp->GetYaxis()->SetNoExponent(kTRUE);
421 grtmp->Fit(
"f2",
"R");
427 gStyle->SetOptFit(kTRUE);
428 sprintf(fname,
"%s : Range (%s) ", networkname.Data(), f2->GetExpFormula().Data());
429 grtmp->SetTitle(fname);
433 sprintf(fname,
"%s/Range.png",odir.Data());
472 TIter
next(liv.GetListOfBranches());
473 while ((branch=(TBranch*)
next())) {
474 if (
TString(
"slag").CompareTo(branch->GetName())==0) slagFound=
true;
478 cout <<
"CWB::Toolbox::getLiveTime : Error - live tree do not contains slag leaf" << endl;
486 liv.SetBranchAddress(
"slag",xslag);
487 liv.SetBranchAddress(
"lag",xlag);
489 liv.SetBranchAddress(
"live",&xlive);
490 liv.SetBranchStatus(
"gps",
false);
493 Long64_t
ntrg = liv.GetEntries();
494 for(Long64_t
i=0;
i<
ntrg;
i++) {
497 if((lag_number>=0)&&(slag_number>=0)) {
498 Live = (xlag[
nIFO]==lag_number&&xslag[
nIFO]==slag_number) ? xlive : 0.;
500 if((lag_number>=0)&&(slag_number==-1)) {
501 Live = ((xlag[
nIFO]==lag_number)&&!((xlag[nIFO]==0)&&(xslag[
nIFO]==0))) ? xlive : 0.;
503 if((lag_number==-1)&&(slag_number>=0)) {
504 Live = ((xslag[
nIFO]==slag_number)&&!((xlag[nIFO]==0)&&(xslag[
nIFO]==0))) ? xlive : 0.;
506 if((lag_number==-1)&&(slag_number==-1)) {
507 Live = !((xlag[
nIFO]==0)&&(xslag[nIFO]==0)) ? xlive : 0.;
527 TBranch* LIVE = liv.GetBranch(
"live");
528 LIVE->SetAddress(&xlive);
529 Long64_t
nentries = LIVE->GetEntries();
548 sprintf(cut,
"(lag[%d]==0&&slag[%d]==0)",nIFO,nIFO);
550 Long64_t
nentries = liv.Draw(
"live",cut,
"goff");
551 double*
xlive = liv.GetV1();
576 Long64_t
nentries = liv.GetEntries();
577 TBranch *lag = liv.GetBranch(
"lag");
578 lag->SetAddress(xlag);
579 TBranch *
slag = liv.GetBranch(
"slag");
580 slag->SetAddress(xslag);
581 TBranch *
live = liv.GetBranch(
"live");
582 live->SetAddress(&xlive);
587 if (xslag[nIFO]!=0)
continue;
589 if (xlag[nIFO]!=0)
continue;
604 while((rho>(
float)hc->GetBinCenter(w))&&(w<hc->GetNbinsX()-1)){w++;}
605 double far = (double)hc->GetBinContent(w+1)/
liveTot;
606 double efar = (double)hc->GetBinError(w+1)/
liveTot;
616 TH2F*
lSlag =
new TH2F(
"LSLAG",
"Live time distribution over slags",NSlag,SlagMin/86400.,SlagMax/86400.,NSlag,SlagMin/86400.,SlagMax/86400.);
617 cout <<
"Start filling lSlag histogram : " << endl;
619 float xslag[NIFO_MAX+1];
621 live.SetBranchStatus(
"*",0);
622 live.SetBranchStatus(
"slag",1);
623 live.SetBranchStatus(
"live",1);
624 live.SetBranchAddress(
"slag",xslag);
626 live.SetBranchAddress(
"live",&xlive);
629 long int ntrg = live.GetEntries();
630 for(
long int l=0;
l<
ntrg;
l++) {
632 lSlag->Fill(xslag[0]/86400.,xslag[1]/86400.,xlive);
633 if(
l%10000000==0) {cout << scientific << (double)
l/ntrg <<
"% - ";}
650 c1->SetTheta(89.999);
652 double efar[sel_events];
653 for(
int i=0;
i<sel_events;
i++) {efar[
i]=0.0;}
657 TGraph2DErrors*
gr2=
new TGraph2DErrors(sel_events,recMchirp,injMchirp,far,efar,efar,efar);
658 gr2->SetMarkerStyle(20);
659 gr2->SetLineColor(20);
663 gr2->GetHistogram()->GetXaxis()->SetTitle(
"Injected mchirp");
664 gr2->GetHistogram()->GetYaxis()->SetTitle(
"Recovered mchirp");
665 gr2->GetHistogram()->GetXaxis()->SetLimits(0.,70.);
666 gr2->GetHistogram()->GetYaxis()->SetLimits(0.,70.);
667 gr2->GetHistogram()->GetZaxis()->SetTitle(
"False Alarm Rate [years^{-1}]");
668 gr2->GetXaxis()->SetTitleOffset(1.3);
669 gr2->GetYaxis()->SetTitleOffset(1.25);
670 gr2->GetXaxis()->SetTickLength(0.02);
671 gr2->GetYaxis()->SetTickLength(0.01);
672 gr2->GetXaxis()->CenterTitle(kTRUE);
673 gr2->GetYaxis()->CenterTitle(kTRUE);
674 gr2->GetZaxis()->CenterTitle(kTRUE);
675 gr2->GetXaxis()->SetTitleFont(42);
676 gr2->GetXaxis()->SetLabelFont(42);
677 gr2->GetYaxis()->SetTitleFont(42);
678 gr2->GetYaxis()->SetLabelFont(42);
680 gr2->GetYaxis()->SetNoExponent(kTRUE);
682 gr2->Draw(
"err zcolpcol");
684 sprintf(fname,
"%s/ChirpFAR.png",odir.Data());
699 double z1 = 1.+pow((1.-pow(a,2.)),1./3)*(pow(1.+a,1./3) + pow(1.-a,1./3));
700 double z2 = pow(3.*pow(a,2.) + pow(z1,2.),1./2);
701 double a_sign = TMath::Sign(1.,a);
702 return 3+z2 - pow((3.-z1)*(3.+z1+2.*z2),1./2)*a_sign;
717 double u_isco = pow(r_isco,-0.5);
718 double v_isco = u_isco*pow(1.-a*pow(u_isco,3.)+pow(a,2.)*pow(u_isco,6.),1./3.);
732 double J_isco = (3*pow(r_isco,1./2)-2*a_f)*2./pow(3*r_isco,1./2);
736 double L0 = 0.686710;
737 double L1 = 0.613247;
738 double L2a = -0.145427;
739 double L2b = -0.115689;
740 double L2c = -0.005254;
741 double L2d = 0.801838;
742 double L3a = -0.073839;
743 double L3b = 0.004759;
744 double L3c = -0.078377;
745 double L3d = 1.585809;
746 double L4a = -0.003050;
747 double L4b = -0.002968;
748 double L4c = 0.004364;
749 double L4d = -0.047204;
750 double L4e = -0.053099;
751 double L4f = 0.953458;
752 double L4g = -0.067998;
753 double L4h = 0.001629;
754 double L4i = -0.066693;
756 double a_f_new = pow((4.*eta),2.)*(L0 + L1*S + L2a*Delta*delta_m + L2b*pow(S,2.) + L2c*pow(Delta,2.) \
757 + L2d*pow(delta_m,2.) + L3a*Delta*S*delta_m + L3b*S*pow(Delta,2.) + L3c*pow(S,3.) \
758 + L3d*S*pow(delta_m,2.) + L4a*Delta*pow(S,2)*delta_m + L4b*pow(Delta,3.)*delta_m \
759 + L4c*pow(Delta,4.) + L4d*pow(S,4.) + L4e*pow(Delta,2.)*pow(S,2.) + L4f*pow(delta_m,4.) + L4g*Delta*pow(delta_m,3.) \
760 + L4h*pow(Delta,2.)*pow(delta_m,2.) + L4i*pow(S,2.)*pow(delta_m,2.)) \
761 + S*(1. + 8.*eta)*pow(delta_m,4.) + eta*J_isco*pow(delta_m,6.);
763 return TMath::Abs(a_f-a_f_new);
776 double delta_m = par[1];
778 double Delta = par[3];
785 double J_isco = (3*pow(r_isco,1./2)-2*a_f)*2./pow(3*r_isco,1./2);
789 double L0 = 0.686710;
790 double L1 = 0.613247;
791 double L2a = -0.145427;
792 double L2b = -0.115689;
793 double L2c = -0.005254;
794 double L2d = 0.801838;
795 double L3a = -0.073839;
796 double L3b = 0.004759;
797 double L3c = -0.078377;
798 double L3d = 1.585809;
799 double L4a = -0.003050;
800 double L4b = -0.002968;
801 double L4c = 0.004364;
802 double L4d = -0.047204;
803 double L4e = -0.053099;
804 double L4f = 0.953458;
805 double L4g = -0.067998;
806 double L4h = 0.001629;
807 double L4i = -0.066693;
809 double a_f_new = pow((4.*eta),2.)*(L0 + L1*S + L2a*Delta*delta_m + L2b*pow(S,2.) + L2c*pow(Delta,2.) \
810 + L2d*pow(delta_m,2.) + L3a*Delta*S*delta_m + L3b*S*pow(Delta,2.) + L3c*pow(S,3.) \
811 + L3d*S*pow(delta_m,2.) + L4a*Delta*pow(S,2)*delta_m + L4b*pow(Delta,3.)*delta_m \
812 + L4c*pow(Delta,4.) + L4d*pow(S,4.) + L4e*pow(Delta,2.)*pow(S,2.) + L4f*pow(delta_m,4.) + L4g*Delta*pow(delta_m,3.) \
813 + L4h*pow(Delta,2.)*pow(delta_m,2.) + L4i*pow(S,2.)*pow(delta_m,2.)) \
814 + S*(1. + 8.*eta)*pow(delta_m,4.) + eta*J_isco*pow(delta_m,6.);
816 return TMath::Abs(a_f-a_f_new);
837 double eta = q/pow((1.+q),2.);
838 double delta_m = (m1-
m2)/m;
840 double S1 = chi1*pow(m1,2.);
841 double S2 = chi2*pow(m2,2.);
842 double S = (S1+
S2)/pow(m,2.);
843 double Delta = (S2/m2-S1/
m1)/m;
853 f.SetParameters(eta,delta_m, S, Delta);
854 ROOT::Math::WrappedTF1 wf1(f);
857 ROOT::Math::BrentRootFinder brf;
860 brf.SetFunction( wf1, -1.0, 1.0 );
864 double a_f = brf.Root();
873 double M0 = 0.951507;
874 double K1 = -0.051379;
875 double K2a = -0.004804;
876 double K2b = -0.054522;
877 double K2c = -0.000022;
878 double K2d = 1.995246;
879 double K3a = 0.007064;
880 double K3b = -0.017599;
881 double K3c = -0.119175;
882 double K3d = 0.025000;
883 double K4a = -0.068981;
884 double K4b = -0.011383;
885 double K4c = -0.002284;
886 double K4d = -0.165658;
887 double K4e = 0.019403;
888 double K4f = 2.980990;
889 double K4g = 0.020250;
890 double K4h = -0.004091;
891 double K4i = 0.078441;
894 double E_isco = (1. - 2./r_isco + a_f/pow(r_isco,1.5))/pow(1. - 3./r_isco + 2.*a_f/pow(r_isco,1.5),1./2.);
897 double mf = pow(4.*eta,2.)*(M0 + K1*S + K2a*Delta*delta_m + K2b*pow(S,2.) + K2c*pow(Delta,2.) + K2d*pow(delta_m,2.) \
898 + K3a*Delta*S*delta_m + K3b*S*pow(Delta,2.) + K3c*pow(S,3.) + K3d*S*pow(delta_m,2.) \
899 + K4a*Delta*pow(S,2.)*delta_m + K4b*pow(Delta,3.)*delta_m + K4c*pow(Delta,4.) + K4d*pow(S,4.) \
900 + K4e*pow(Delta,2.)*pow(S,2.) + K4f*pow(delta_m,4.) + K4g*Delta*pow(delta_m,3.) + K4h*pow(Delta,2.)*pow(delta_m,2.) \
901 + K4i*pow(S,2.)*pow(delta_m,2.)) + (1+eta*(E_isco+11.))*pow(delta_m,6.);
fprintf(stdout,"start=%f duration=%f rate=%f\n", x.start(), x.size()/x.rate(), x.rate())
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<< "\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
TIter next(twave->GetListOfBranches())
Meyer< double > S(1024, 2)
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)