TH1D * rootstuff::newTH1D(char *name,char *comment,__int32 bins,double xmin,double xmax,char *titelx,char *option) { TH1D * hist; hist = new TH1D(name,comment,bins,xmin,xmax); hist->SetOption(option); hist->GetXaxis()->SetTitle(titelx); return hist; }
TH1D * rootstuff::newTH1D(__int32 number,char *comment,__int32 bins,double xmin,double xmax,char *titelx,char *option) { char name[200]; TH1D * hist; sprintf(name,"%i",number); hist = new TH1D(name,comment,bins,xmin,xmax); hist->SetOption(option); hist->GetXaxis()->SetTitle(titelx); return hist; }
void Plot_McollRatio(TString file, TString fakefile, TString sample, TString SR, bool subtractFakes) { SetAtlasStyle(); #ifdef __CINT__ gROOT->LoadMacro("AtlasUtils.C"); #endif double xmin = 50; double xmax = 400; TFile* f = new TFile(file); TFile* fakef = new TFile(fakefile); TH1D* hME; TH1D* hEM; //if (isScaled){ // hME =(TH1D*)f->Get("ME_scaled");//nom/ME_McollHiggs_Unblind"); // hEM =(TH1D*)f->Get("EM");//nom/EM_McollHiggs_Unblind"); // hME_orig = (TH1D*)f->Get("ME_original"); // hEM_orig = (TH1D*)f->Get("EM_original"); //} //else{ hME =(TH1D*)f->Get("nom/ME_McollHiggs_Unblind"); hEM =(TH1D*)f->Get("nom/EM_McollHiggs_Unblind"); //} if (subtractFakes){ TH1D* hME_fake = (TH1D*)fakef->Get("nom/ME_McollHiggs_Unblind"); TH1D* hEM_fake = (TH1D*)fakef->Get("nom/EM_McollHiggs_Unblind"); hME->Add(hME_fake,-1); hEM->Add(hEM_fake,-1); } hEM->SetMarkerStyle(8); hEM->SetMarkerSize(0.7); hEM->SetLineColor(kPink + 8);hEM->SetOption("e1"); hEM->SetMarkerColor(kPink + 8); hME->SetMarkerStyle(8); hME->SetMarkerSize(0.7); hME->SetLineColor(kTeal - 6);hME->SetOption("e1"); hME->SetMarkerColor(kTeal - 6); hME->GetXaxis()->SetLabelOffset(0); hME->GetXaxis()->SetLabelSize(0); hEM->GetXaxis()->SetLabelOffset(0); hEM->GetXaxis()->SetLabelSize(0); hEM->GetXaxis()->SetRangeUser(xmin,xmax); hME->GetXaxis()->SetRangeUser(xmin,xmax); hEM->GetYaxis()->SetTitleOffset(1.0); hME->GetYaxis()->SetTitleOffset(1.0); // hEM_orig->SetMarkerStyle(8); hEM_orig->SetMarkerSize(0.7); // hEM_orig->SetLineColor(kPink + 8);hEM_orig->SetOption("e1"); // hEM_orig->SetMarkerColor(kPink + 8); // hME_orig->SetMarkerStyle(8); hME_orig->SetMarkerSize(0.7); // hME_orig->SetLineColor(kTeal - 6);hME_orig->SetOption("e1"); // hME_orig->SetMarkerColor(kTeal - 6); // hME_orig->GetXaxis()->SetLabelOffset(0); hME_orig->GetXaxis()->SetLabelSize(0); // hEM_orig->GetXaxis()->SetLabelOffset(0); hEM_orig->GetXaxis()->SetLabelSize(0); // hEM_orig->GetXaxis()->SetRangeUser(xmin,xmax); hME_orig->GetXaxis()->SetRangeUser(xmin,xmax); // hEM_orig->GetYaxis()->SetTitleOffset(1.0); // hME_orig->GetYaxis()->SetTitleOffset(1.0); double numEM = hEM->Integral(); double numME = hME->Integral(); cout<<"# entries EM = " << numEM << endl; cout<<"# entries ME = " << numME << endl; // TH1D* ratio2 = GetRatio(hEM_orig,hME_orig,xmin,xmax); // TH1D* diff2 = GetDiff(hEM_orig,hME_orig,xmin,xmax); TH1D* ratio = GetRatio(hEM,hME,xmin,xmax); TH1D* diff = GetDiff(hEM,hME,xmin,xmax); TLegend* leg = new TLegend(0.6,0.45,0.75,0.55); leg->SetFillColor(kWhite); leg->SetBorderSize(1); leg->SetLineColor(0); leg->SetTextFont(42); leg->SetTextSize(.05); TLine* line1 = new TLine(xmin,1,xmax,1); line1->SetLineColor(kRed); line1->SetLineStyle(2); TLine* line14 = new TLine(xmin,1.5,xmax,1.5); line14->SetLineStyle(9); line14->SetLineColor(kBlack); TLine* line13 = new TLine(xmin,2./3,xmax,2./3); line13->SetLineStyle(2); line13->SetLineColor(kRed); TLine* line12 = new TLine(xmin,2,xmax,2); line12->SetLineStyle(9); line12->SetLineColor(kBlack); TLine* line15 = new TLine(xmin,0.5,xmax,0.5); line15->SetLineStyle(9); line15->SetLineColor(kBlack); TLine* line2 = new TLine(xmin,0,xmax,0); line2->SetLineColor(kBlack); line2->SetLineStyle(9); TLine* vline1 = new TLine(100,0,100,3000); vline1->SetLineStyle(2); TLine* vline2 = new TLine(150,0,150,3000); vline2->SetLineStyle(2); TCanvas* c0 = new TCanvas("mcoll ","mcoll ",600,600); c0=c0; TPad *pad1 = new TPad("pad1", "12<L1<15",0.0,0.2,1,1.0,21); pad1->SetMargin(0.1,0.1,0.02,0.2); TPad *pad2 = new TPad("pad2", "ratio", 0.0,0,1,0.2,21); pad2->SetMargin(0.1,0.1,0.3,0.02); // TPad *pad3 = new TPad("pad3", "diff", 0.0,0,1,0.2,21); pad3->SetMargin(0.1,0.1,0.3,0.02); pad1->SetFillColor(0);pad2->SetFillColor(0);//pad3->SetFillColor(0); pad1->Draw(); pad2->Draw();//pad3->Draw(); pad1->cd(); #ifdef __CINT__ gROOT->LoadMacro("AtlasLabels.C"); #endif leg->AddEntry(hME,"#mue","le"); leg->AddEntry(hEM,"e#mu","le"); hEM->Draw("e1"); hME->Draw("e1 sames"); vline1->Draw(); vline2->Draw(); pad2->cd(); ratio->Draw(); line14->Draw();line15->Draw();line1->Draw(); // pad3->cd(); // diff->Draw(); // line2->Draw(); pad1->cd(); myText(0.5,0.65,1,"#int L dt = 20.3 fb^{-1} #sqrt{s} = 8 TeV"); myText(0.6,0.35,1,sample); myText(0.6,0.25,1,SR); ATLASLabel(0.62,0.75,"Internal"); leg->Draw(); c0->Update(); // TCanvas* c1 = new TCanvas("mcoll original","mcoll original",600,600); c0=c0; // TPad *pad1_2 = new TPad("pad1", "12<L1<15",0.0,0.4,1,1.0,21); pad1_2->SetMargin(0.1,0.1,0.02,0.2); // TPad *pad2_2 = new TPad("pad2", "ratio", 0.0,0.2,1,0.4,21); pad2_2->SetMargin(0.1,0.1,0.02,0.02); // TPad *pad3_2 = new TPad("pad3", "diff", 0.0,0,1,0.2,21); pad3_2->SetMargin(0.1,0.1,0.3,0.02); // // pad1_2->SetFillColor(0);pad2_2->SetFillColor(0);pad3_2->SetFillColor(0); // pad1_2->Draw(); pad2_2->Draw();pad3_2->Draw(); // // // pad1_2->cd(); // hEM_orig->Draw("e1"); hME_orig->Draw("e1 sames"); // vline1->Draw(); vline2->Draw(); // pad2_2->cd(); // ratio2->Draw(); // line14->Draw();line15->Draw();line1->Draw(); // pad3_2->cd(); // diff2->Draw(); // line2->Draw(); // pad1_2->cd(); // myText(0.5,0.65,1,"#int L dt = 20.3 fb^{-1} #sqrt{s} = 8 TeV"); // myText(0.6,0.35,1,sample); // // ATLASLabel(0.62,0.75,"Internal"); // // leg->Draw(); // // // c1->Update(); return; }
//_______________________________________ void FitMCshape(AliDielectronSignalBase *sig) { TFile mcFile(mcLineShapeFile); if (!mcFile.IsOpen()) { printf("mcMinv_LHC10e2 not found!!!\n"); return; } TH1D *hMmc = (TH1D*)mcFile.Get("mcMinv"); if (!hMmc) { printf("mcMinv not found!!\n"); return; } hMmc->SetDirectory(0); hMmc->SetName("mcMinv"); mcFile.Close(); TH1* hMsub=sig->GetSignalHistogram(); Double_t mb1=sig->GetIntegralMin(); Double_t mb2=sig->GetIntegralMax(); Double_t effInt = 0.; for(Int_t iBin=hMmc->FindBin(mb1); iBin<hMmc->FindBin(mb2); iBin++) { effInt += hMmc->GetBinContent(iBin); } effInt/=hMmc->Integral(); printf("MC signal fraction in range %4.2f-%4.2f GeV: %5.3f \n",hMmc->GetBinLowEdge(hMmc->FindBin(mb1)),hMmc->GetBinLowEdge(hMmc->FindBin(mb2)+1),effInt); Float_t mcScale1=(hMsub->GetXaxis()->GetBinWidth(1)/hMmc->GetXaxis()->GetBinWidth(1))* hMsub->Integral(hMsub->FindBin(mb1),hMsub->FindBin(mb2))/ hMmc->Integral(hMmc->FindBin(mb1),hMmc->FindBin(mb2)); printf("1st guess of MC scale factor: %6.3f\n",mcScale1); Float_t mcScale=0.; Float_t chi2_min=100000.; Int_t iMin=0; Int_t ndf=0; for(Int_t i=0; i<20; i++){ Float_t chi2=0.; Float_t scale=(0.4+0.05*(Float_t)i)*mcScale1; ndf=0; for(Int_t ib=1; ib<=hMsub->GetXaxis()->GetNbins(); ib++){ Float_t data=(Float_t)hMsub->GetBinContent(ib); Float_t err=(Float_t)hMsub->GetBinError(ib); Float_t mc=scale*((Float_t)hMmc->GetBinContent(hMmc->FindBin(hMsub->GetBinCenter(ib)))); if (err>0) { chi2 += ((data-mc)*(data-mc))/(err*err); ndf++; } else { //printf("bin %d Err: %6.3f, chi2: %6.1f\n",ib,err,chi2); } } //printf("%d scale factor: %6.3f, chi2: %6.1f\n",i,scale,chi2); if(chi2 < chi2_min){ chi2_min = chi2; mcScale = scale; iMin=i; } } //Float_t chi2dof=chi2_min/(Float_t)(hMinv->GetXaxis()->GetNbins()-1); Float_t chi2dof=chi2_min/((Float_t)(ndf-1)); printf("MC fit (i=%d): chi2/dof: %6.3f/%d, Scale: %7.4f \n",iMin,chi2_min,(ndf-1),mcScale); hMmc->SetTitle(Form("%f",chi2dof)); //mcScale=IntData/IntMC;printf("Int Data, MC: %10.1f %10.1f, MC scale: %6.3f\n",IntData,IntMC,mcScale); hMmc->Scale(mcScale); hMmc->SetOption("sameHISTC"); hMsub->GetListOfFunctions()->Add(hMmc); }