void
plot2DSignalAnalytisch(
    TString filename,
    TString histogramName,
    TString xtitle = "x",
    TString ytitle = "y",
    double rebinx = 1,
    double rebiny = 1,
    double xtitleOffset = 1.1,
    double ytitleOffset = 1.3
    )
{
// {{{
    InitgStyle();
    //gStyle->SetOptStat(0);
    //gCanvas = new TCanvas("gCanvas", "gCanvas", 0, 0, 800, 600);
    

    LoadHistogramTH2D(histogramName , filename, 1.0, histogram);// Summe (SM

    //gCanvas->Clear();
  
    histogram->GetXaxis()->SetTitle(xtitle);
    histogram->GetXaxis()->SetTitleOffset(xtitleOffset);
    histogram->GetYaxis()->SetTitle(ytitle);
    histogram->GetYaxis()->SetTitleOffset(ytitleOffset);

    //histogram->GetZaxis()->SetTitle("d^{2}#sigma / dM_{#bar{t}}dM_{t} [pb]");
    //histogram->GetZaxis()->SetTitleOffset(ytitleOffset);

//    gCanvas->Update();

    //TF2 *fitFunction = new TF2("fitFunction", HistoSum, -1, 1, -1, 1, 4);  //allgemeine "return"-Varianten
    //fitFunction->SetParameters(0.9,0.,0.);

    TF2 *fitFunction = new TF2("fitFunction", HistoSum, -1, 1, -1, 1, 2);


    histogram->Fit(fitFunction, "N");
//    for(int i =1; i<=5;i++){
//        for(int j=1;j<=5;j++){
//            cout << "Bininhalt("<<i<<","<<j<<"): " << histogram->GetBinContent(i,j) << endl;
//        }
//    }
        
    histogram->RebinX(rebinx);
    histogram->RebinY(rebiny);
    histogram->Draw("lego"); 
    fitFunction->SetLineColor(kRed);
    fitFunction->SetLineWidth(0.5);
    fitFunction->Draw("same");
    cout << fitFunction->GetChisquare()/fitFunction->GetNDF() << endl;
       
    
    //gCanvas->Print(epsFilename(filename, histogramName)+".eps");
	//cout << histogram[0]->Integral() << endl;
// }}}
};
Exemplo n.º 2
0
void
plot2DSignalHisto(
    TString filename1,
    TString filename2, 
    TString histogramName,
//    TString drawopts = "",
    TString xtitle = "x",
    TString ytitle = "y",
    double xtitleOffset = 1.1,
    double ytitleOffset = 1.3
    )
{
// {{{
    InitgStyle();
    //gStyle->SetOptStat(0);
    //gCanvas = new TCanvas("gCanvas", "gCanvas", 0, 0, 800, 600);
    
    TFile *outputFile = new TFile("FitErgebnisse.root","RECREATE");
    TH2D *histogram__DiffAbs = new TH2D("histogram__DiffAbs","Differenz Fit - Input (Absolut)", 5, -1, 1, 5, -1, 1);
    TH2D *histogram__DiffRel = new TH2D("histogram__DiffRel","Differenz Fit - Input (Relativ)", 5, -1, 1, 5, -1, 1);
    TH2D *histogram__FitResult = new TH2D("histogram__FitResult ", "Ergebnis-Histogramm des Fits", 5, -1, 1, 5, -1, 1);


    
//    LoadHistogramTH2D(histogramName , filename1, 1.0, histogram);// Summe (SM)
    LoadHistogramTH2D("histogram__Correlation"+histogramName , filename1, 1.0, histogram);// Summe (SM

    //LoadHistogramTH2D(histogramName+"_LL" , filename2, 1.0, histo1);	// LL
    //LoadHistogramTH2D(histogramName+"_LR" , filename2, 1.0, histo2);	// LR
    //LoadHistogramTH2D(histogramName+"_RL" , filename2, 1.0, histo3);	// RL
    //LoadHistogramTH2D(histogramName+"_RR" , filename2, 1.0, histo4);	// RR
    
    //LoadHistogramTH2D("histogram__gen_N" , filename2, 1.0, histo1);
    //LoadHistogramTH2D("histogram__gen_A" , filename2, 1.0, histo2);
    
    LoadHistogramTH2D("histogram__N"+histogramName , filename2, 1.0, histo1);
    LoadHistogramTH2D("histogram__A"+histogramName , filename2, 1.0, histo2);


    //gCanvas->Clear();
  

    histogram->GetXaxis()->SetTitle(xtitle);
    histogram->GetXaxis()->SetTitleOffset(xtitleOffset);
    histogram->GetYaxis()->SetTitle(ytitle);
    histogram->GetYaxis()->SetTitleOffset(ytitleOffset);
    //histogram->GetZaxis()->SetTitle("d^{2}#sigma / dM_{#bar{t}}dM_{t} [pb]");
    //histogram->GetZaxis()->SetTitleOffset(ytitleOffset);

//    gCanvas->Update();

    /*    
    histo1->Scale(1.0/histo4->Integral());
    histo2->Scale(1.0/histo4->Integral());
    histo3->Scale(1.0/histo4->Integral());
    histo4->Scale(1.0/histo4->Integral());
    */

       
    //faktor = 1.0;
    faktor=Double_t(histogram->Integral())/Double_t(histo1->Integral());
    cout<<faktor<<endl; 
    
    TF2 *fitFunction = new TF2("fitFunction", HistoSum, -1, 1, -1, 1, 2);  //allgemeine "return"-Varianten
    //fitFunction->SetParameters(0.9,0.,0.);
    //fitFunction->SetLineColor(kRed);
    
    histogram->Fit(fitFunction, "N");
    fitFunction->SetNpx(5);
    fitFunction->SetNpy(5);
    
    double p0 = fitFunction->GetParameter(0);
    double p1 = fitFunction->GetParameter(1);
//    double p2 = fitFunction->GetParameter(2);
//    double p3 = fitFunction->GetParameter(3);

    for(int i =1; i <= 5; i++)
    {
        for(int j = 1; j <= 5; j++)
        {
            //double sigmaLL = p0*faktor*histo1->GetBinError(i,j);
            //double sigmaLR = p1*faktor*histo2->GetBinError(i,j);
            //double sigmaRL = p2*faktor*histo3->GetBinError(i,j);
            //double sigmaRR = p3*faktor*histo4->GetBinError(i,j);
            double sigmaN = p0*faktor*histo1->GetBinError(i,j);
            double sigmaA = p1*faktor*histo2->GetBinError(i,j);
            //histogram->SetBinError(i,j, sqrt( histogram->GetBinContent(i,j) + pow(sigmaLL,2) + pow(sigmaRR,2) + pow(sigmaRL,2) + pow(sigmaLR, 2) ));
            histogram->SetBinError(i,j, sqrt( histogram->GetBinContent(i,j) + pow(sigmaN,2) + pow(sigmaA,2) ));
        }
    }
    histogram->Fit(fitFunction, "NE");

    p0 = fitFunction->GetParameter(0);
    p1 = fitFunction->GetParameter(1);

    for(int i =1; i <= 5; i++)
    {
        for(int j = 1; j <= 5; j++)
        {
            //double sigmaLL = p0*faktor*histo1->GetBinError(i,j);
            //double sigmaLR = p1*faktor*histo2->GetBinError(i,j);
            //double sigmaRL = p2*faktor*histo3->GetBinError(i,j);
            //double sigmaRR = p3*faktor*histo4->GetBinError(i,j);
            double sigmaN = p0*faktor*histo1->GetBinError(i,j);
            double sigmaA = p1*faktor*histo2->GetBinError(i,j);
            //histogram->SetBinError(i,j, sqrt( histogram->GetBinContent(i,j) + pow(sigmaLL,2) + pow(sigmaRR,2) + pow(sigmaRL,2) + pow(sigmaLR, 2) ));
            histogram->SetBinError(i,j, sqrt( histogram->GetBinContent(i,j) + pow(sigmaN,2) + pow(sigmaA,2) ));
        }
    }
    histogram->Fit(fitFunction, "NE");

        
    //histogram->Draw("lego1");  
    //fitFunction->Draw("lego");
    cout << fitFunction->GetChisquare()/fitFunction->GetNDF() << endl;

    for(int i = 1; i <= 5; i++)
    {
        for(int j = 1; j <= 5; j++)
        {
            histogram__DiffAbs->SetBinContent(i,j, fitFunction->Eval(histogram->GetXaxis()->GetBinCenter(i),histogram->GetYaxis()->GetBinCenter(j))-histogram->GetBinContent(i,j) );
            histogram__DiffRel->SetBinContent(i,j, (fitFunction->Eval(histogram->GetXaxis()->GetBinCenter(i),histogram->GetYaxis()->GetBinCenter(j))-histogram->GetBinContent(i,j))/histogram->GetBinContent(i,j) );
            histogram__FitResult->SetBinContent(i,j, fitFunction->Eval(histogram->GetXaxis()->GetBinCenter(i),histogram->GetYaxis()->GetBinCenter(j)));
        }
    }
    
        
    outputFile->cd("");
    histogram__DiffAbs->Write("histogram__DiffAbs");
    histogram__DiffRel->Write("histogram__DiffRel");
    histogram__FitResult->Write("histogram__FitResult");
    outputFile->Close();
    delete outputFile;
       
    
    //gCanvas->Print(epsFilename(filename, histogramName)+".eps");
	//cout << histogram[0]->Integral() << endl;
// }}}
};