Difference between revisions of "Lmd eta three pion hlu"

From Lmdwiki
Jump to navigationJump to search
Line 75: Line 75:
 
<tr>
 
<tr>
 
<td>[[File:Side band subtracted standard gaussian fit 1sigma.png|thumb|left|300px|fit of side-band subtracted Gaussian. bin width:1, Sigma: 1 Original magnitude: 3.98942e+02; fitted magnitude: 3.31002e+02]]</td>
 
<td>[[File:Side band subtracted standard gaussian fit 1sigma.png|thumb|left|300px|fit of side-band subtracted Gaussian. bin width:1, Sigma: 1 Original magnitude: 3.98942e+02; fitted magnitude: 3.31002e+02]]</td>
<td>[[File:Side band subtracted standard gaussian fit 0.5sigma.png|thumb|left|300px|fit of side-band subtracted Gaussian. bin width:1, Sigma: 0.5 Original magnitude: 1.99471e+02; fitted magnitude: 1.91370e+02]]</td>
+
<td>[[File:Side band subtracted standard gaussian fit 0.5sigma.png|thumb|left|300px|fit of side-band subtracted Gaussian. bin width:0.5, Sigma: 1 Original magnitude: 1.99471e+02; fitted magnitude: 1.91370e+02]]</td>
<td>[[File:Side band subtracted standard gaussian fit 2sigma.png|thumb|left|300px|fit of side-band subtracted Gaussian. bin width:1, Sigma: 0.5 Original magnitude: 7.97884e+02; fitted magnitude: 2.49810e+02]]</td>
+
<td>[[File:Side band subtracted standard gaussian fit 2sigma.png|thumb|left|300px|fit of side-band subtracted Gaussian. bin width:2, Sigma: 1 Original magnitude: 7.97884e+02; fitted magnitude: 2.49810e+02]]</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
Line 127: Line 127:
  
 
</pre>
 
</pre>
 +
 
===Test with background===
 
===Test with background===
 
<table>
 
<table>

Revision as of 15:19, 17 March 2014

Statistics

Fit missing mass of proton

Error creating thumbnail: File missing
fit missing mass of proton with linear background from g11 data. ~1.3M events
Error creating thumbnail: File missing
fit missing mass of proton with linear background from g12 data. ~1.5M events

More

File:Eta and eta prime two pion.pdf

Form of side-band subtraction histograms

Question: Suppose there is an original function (e.g. Gaussian), what is the form of the function after bin-by-bin side-band subtraction

Answer: Suppose the function is y=f(x). The side-band subtraction makes a new function:

Formula.gif

Test of the formula

10M events of Gaussian distribution were generated for a histograms:

Standard gaussian fit.png

side-band subtracted and plot together with the function:

Side band subtracted standard gaussian fit.png

source code:

test(){
  const float NEvent=1e7;
  const int NBin=50;
  const float Low=-5;
  const float High=5;
  const float BinWidth=(High-Low)/NBin;
  TH1D* h1=new TH1D("test","test",NBin,Low,High);
  h1->FillRandom("gaus",NEvent);
  TH1D* h2=h1->Clone("subtracted");
  for(int i=2;i<100;i++){
    float middle=h1->GetBinContent(i);
    float left=h1->GetBinContent(i-1);
    float right=h1->GetBinContent(i+1);
    float result=middle-(left+right)/2.0;
    float error=sqrt(middle+left/2.0+right/2.0);
    h2->SetBinContent(i,result);
    h2->SetBinError(i,error);
  }

  TF1* func=new TF1("fit","-[3]*[3]/2*(-gaus(0)/[2]/[2]+(x-[1])*(x-[1])*gaus(0)/([2]**4))");

  func->FixParameter(2,1);
  func->FixParameter(0,NEvent/sqrt(2*3.1416)/1*BinWidth);
  func->FixParameter(1,0);
  func->FixParameter(3,BinWidth);

  h2->Fit("fit");
  TCanvas* c1=new TCanvas("c1","c1",696,474);
  h2->Draw();
  TCanvas* c2=new TCanvas("c2","c2",696,474);
  h1->Fit("gaus");
  h1->Draw();
}


Test with larg bin width

Error creating thumbnail: File missing
fit of side-band subtracted Gaussian. bin width:1, Sigma: 1 Original magnitude: 3.98942e+02; fitted magnitude: 3.31002e+02
Error creating thumbnail: File missing
fit of side-band subtracted Gaussian. bin width:0.5, Sigma: 1 Original magnitude: 1.99471e+02; fitted magnitude: 1.91370e+02
Error creating thumbnail: File missing
fit of side-band subtracted Gaussian. bin width:2, Sigma: 1 Original magnitude: 7.97884e+02; fitted magnitude: 2.49810e+02
test(){
  const float NEvent=1e3;
  const int NBin=5;
  const float Low=-5;
  const float High=5;
  const float BinWidth=(High-Low)/NBin;
  TRandom3 random(0);
  TH1D* h1=new TH1D("test","test",NBin,Low,High);
  h1->FillRandom("gaus",NEvent);
  TH1D* h2=h1->Clone("subtracted");
  for(int i=2;i<100;i++){
    float middle=h1->GetBinContent(i);
    float left=h1->GetBinContent(i-1);
    float right=h1->GetBinContent(i+1);
    float result=middle-(left+right)/2.0;
    float error=sqrt(middle+left/2.0+right/2.0);
    h2->SetBinContent(i,result);
    h2->SetBinError(i,error);
  }

  TF1* funcFix=new TF1("fit_fix","-[3]*[3]/2*(-gaus(0)/[2]/[2]+(x-[1])*(x-[1])*ga\
us(0)/([2]**4))");

  funcFix->FixParameter(2,1);
  funcFix->FixParameter(0,NEvent/sqrt(2*3.1416)/1*BinWidth);
  funcFix->FixParameter(1,0);
  funcFix->FixParameter(3,BinWidth);
  funcFix->SetLineColor(kRed);
  h2->Fit("fit_fix");
  TF1* func=new TF1("fit","-[3]*[3]/2*(-gaus(0)/[2]/[2]+(x-[1])*(x-[1])*gaus(0)/(\
[2]**4))");

  func->FixParameter(2,1);
  //  func->FixParameter(0,NEvent/sqrt(2*3.1416)/1*BinWidth);
  func->FixParameter(1,0);
  func->FixParameter(3,BinWidth);
  func->SetLineColor(kBlue);
  h2->Fit("fit","+");
  TCanvas* c1=new TCanvas("c1","c1",696,474);
  h2->Draw();
  TCanvas* c2=new TCanvas("c2","c2",696,474);
  h1->Fit("gaus");
  h1->Draw();
}

Test with background

Error creating thumbnail: File missing
fit of standard Gaussian with second-order polynomial background.
Error creating thumbnail: File missing
fit of side-band subtracted Gaussian. bin width:1, Sigma: 0.5 Original magnitude: 1.99471e+04; fitted magnitude: 1.98083e+04
test(){
  const float NEvent=1e5;
  const float NSignal=1e5;
  const int NBin=20;
  const float Low=-5;
  const float High=5;
  const float BinWidth=(High-Low)/NBin;
  TRandom3 random(0);
  TH1D* h1=new TH1D("test","test",NBin,Low,High);
  h1->FillRandom("pol2",NEvent);
  h1->FillRandom("gaus",NSignal);
  TH1D* h2=h1->Clone("subtracted");
  for(int i=2;i<100;i++){
    float middle=h1->GetBinContent(i);
    float left=h1->GetBinContent(i-1);
    float right=h1->GetBinContent(i+1);
    float result=middle-(left+right)/2.0;
    float error=sqrt(middle+left/2.0+right/2.0);
    h2->SetBinContent(i,result);
    h2->SetBinError(i,error);
  }

  TF1* funcFix=new TF1("fit_fix","-[3]*[3]/2*(-gaus(0)/[2]/[2]+(x-[1])*(x-[1])*gaus(0)/([2]**4))");

  funcFix->FixParameter(2,1);
  funcFix->FixParameter(0,NSignal/sqrt(2*3.1416)/1*BinWidth);
  funcFix->FixParameter(1,0);
  funcFix->FixParameter(3,BinWidth);
  funcFix->SetLineColor(kRed);
  h2->Fit("fit_fix");
  TF1* func=new TF1("fit","-[3]*[3]/2*(-gaus(0)/[2]/[2]+(x-[1])*(x-[1])*gaus(0)/([2]**4))");

  func->FixParameter(2,1);
  //  func->FixParameter(0,NEvent/sqrt(2*3.1416)/1*BinWidth);
  func->FixParameter(1,0);
  func->FixParameter(3,BinWidth);
  func->SetLineColor(kBlue);
  h2->Fit("fit","+");

  TCanvas* c2=new TCanvas("c2","c2",696,474);
  h2->Draw();
  TCanvas* c1=new TCanvas("c1","c1",696,474);
  TF1* signal_back=new TF1("signal_back","gaus(0)+pol2(2)");
  signal_back->SetParameters(NEvent/sqrt(2*3.1416)/1*BinWidth,0.0,1.0,0.0,0.0,0.0);
  h1->Fit("signal_back");
  h1->Draw();
}

reference