new TF1Lib.cc -> GEn_paper.C (error band and Fourier transform classes)

From: Christopher Crawford (crawford@pa.uky.edu)
Date: Thu Oct 18 2007 - 09:58:35 EDT


Hi Michael,

   I checked my modified version of your GEn PRL code into 'CVSROOT/
exp/gen/prl'. The new files 'TF1Lib.h,cc' contain the classes for
drawing error bands and Fourier transforms:

     TH1Error - subclass of TH1D which calculates error band from
associated function (given in constructor).
     TH1Fourier - subclass of TH1D which calculates radial Fourier
transform and associated error band (similar to above).
     TF1Fourier - subclass of TF1, Fourier transform without error
band.

   I modified 'GEnFitFunc.C' to construct 'TH1Error' classes instead
of regular TH1F. The (...,0) in the constructor delays calculation
of the error band. I removed the associated error propagation
calculation functions in 'GEnFitFuncLib.C'. I modified 'GEn_paper.C'
with statements like

     hFriedrichWalcherError->CalcErrorBand(1);
     hFriedrichWalcher2Error->CalcErrorBand(2);

for 1 and 2 sigma error bands. The histograms are draw the same way
as before. You can see the changes by

     cvs diff -r 1.1 GEn_paper.C

I also added a section to the bottom to calculate the Fourier
transform, with a smoothed out error band, as discussed in the
meeting. There are a couple of lines using the new classes to
calculate the transform (without smoothing), which are commented out:

      TH1Fourier* ft = new TH1Fourier(fTwoDipolesRfit,0,4);
      ft->SetFillColor(6);
     ft->Draw("e3same");

      TF1Fourier* fn = new TF1Fourier(fTwoDipolesRfit,0,4);
      fn->SetLineColor(2);
     fn->Draw("same");

The last thing worth noting is that I introduced a new way of
accounting for the data of <r_n^2>. In steading of fixing one of the
parameters to give the right value of <r_n^2> and then explicitly
calculating the error in that parameter, I add

     ( ( r2n-f(p) ) / dr2n )^2

to the ChiSq function and keep all three parameters free in the two
dipole fit. The resulting error band is about 10-20% in places.

Technically, this is done still within the TGraph::Fit() framework by
adding an extra point to the world GEn data: r2n +/- dr2n at Q^2=-.
1, and then modifying the fit function to return 'r^2_n' at negative
Q^2. You don't see it because of the lower limit at Q^2=0. You can
find the changes in the functions

     'fTwoDipolesRfit', etc, modified from 'fTwoDipolesRnn' in
'GEnFitFuncLib.C'

I used your code as the basis for the plots of the GEn rho_Breit.

Hope this helps,
--Chris

Dept. of Physics & Astronomy
University of Kentucky
373 C.-P. Building
Lexington, KY 40506-0055

859-257-2504 (office)
859-323-2846 (fax)



This archive was generated by hypermail 2.1.2 : Mon Feb 24 2014 - 14:07:33 EST