示例#1
0
文件: Make2DPlots.C 项目: manuelfs/MJ
//
// 2D histograms 
//
void Make2DPlots(TString HistName, char* Region, int NMergeBins=1, bool doRatio=false) 
{ 
    TFile* HistFile = TFile::Open("HistFiles/Hist.root");
   
    char *Xvar, *Yvar, *Zvar; 
    if(HistName=="mjvsmj")
    {   
        Xvar=(char*)"mj [GeV]";
        Yvar=(char*)"mj [GeV]";
        Zvar=(char*)"Events/bin";
    }
    if(HistName=="mjvsFatjetPt")
    {   
        Xvar=(char*)"mj [GeV]";
        Yvar=(char*)"pT(fatjet) [GeV]";
        Zvar=(char*)"Events/bin";
    }


    TH2F *h2_DATA[7], *h2_T[7], *h2_TT_sl[7], *h2_TT_ll[7], *h2_TT[7], *h2_WJets[7], *h2_DY[7]; 
    TH2F *h2_Ratio[7], *h2_MC[7]; 
    TH2F *h2_f1500_100[7], *h2_f1200_800[7];
    TCanvas *c_TT_sl = new TCanvas("c_TT_sl","c_TT_sl",1600,360);  
    TCanvas *c_TT_ll = new TCanvas("c_TT_ll","c_TT_ll",1600,360);  
    TCanvas *c_Ratio = new TCanvas("c_Ratio","c_Ratio",1600,360);  
    c_TT_sl->Divide(5,1);
    c_TT_ll->Divide(5,1);
    c_Ratio->Divide(5,1);
    for(int i=2; i<7; i++) 
    {
        if(HistName=="mjvsmj" && i!=2) continue;

        h2_DATA[i]          = (TH2F*)HistFile->Get(Form("h2_DATA_%s_%ifatjet", HistName.Data(), i)); 
        h2_T[i]             = (TH2F*)HistFile->Get(Form("h2_T_%s_%ifatjet", HistName.Data(), i));
        h2_TT_sl[i]         = (TH2F*)HistFile->Get(Form("h2_TT_sl_%s_%ifatjet", HistName.Data(), i));
        h2_TT_ll[i]         = (TH2F*)HistFile->Get(Form("h2_TT_ll_%s_%ifatjet", HistName.Data(), i));
        h2_WJets[i]         = (TH2F*)HistFile->Get(Form("h2_WJets_%s_%ifatjet", HistName.Data(), i));
//        h2_DY[i]          = (TH2F*)HistFile->Get(Form("h2_DY_%s_%ifatjet", HistName.Data(), i)); 
        h2_f1500_100[i]      = (TH2F*)HistFile->Get(Form("h2_T1tttt_f1500_100_%s_%ifatjet", HistName.Data(), i)); 
        h2_f1200_800[i]    = (TH2F*)HistFile->Get(Form("h2_T1tttt_f1200_800_%s_%ifatjet", HistName.Data(), i)); 

        h2cosmetic(h2_DATA[i],          Form("DATA %ifatjet", i),               Xvar,   Yvar,   Zvar);
        h2cosmetic(h2_TT_sl[i],         Form("TT(l) %ifatjet", i),              Xvar,   Yvar,   Zvar);
        h2cosmetic(h2_TT_ll[i],         Form("TT(ll) %ifatjet", i),             Xvar,   Yvar,   Zvar);
        h2cosmetic(h2_T[i],             Form("T %ifatjet", i),                  Xvar,   Yvar,   Zvar);
        h2cosmetic(h2_WJets[i],         Form("WJets %ifatjet", i),              Xvar,   Yvar,   Zvar);
        h2cosmetic(h2_f1500_100[i],      Form("T1tttt(1200,25) %ifatjet", i),    Xvar,   Yvar,   Zvar);
        h2cosmetic(h2_f1200_800[i],    Form("T1tttt(1200,1000) %ifatjet", i),  Xvar,   Yvar,   Zvar);
    }

    // Drawing
    for(int i=2; i<7; i++) 
    {
        if(HistName=="mjvsmj" && i!=2) continue;
        c_TT_sl->cd(i-1);
        h2_TT_sl[i]->Draw("colz");
        c_TT_ll->cd(i-1);
        h2_TT_ll[i]->Draw("colz");
    
        c_TT_sl->Print( Form("Figures/%s/2D_TT_sl_%s%s.pdf", 
                        Region, HistName.Data(), DoLog?"_log":"") ); 
        c_TT_ll->Print( Form("Figures/%s/2D_TT_ll_%s%s.pdf", 
                        Region, HistName.Data(), DoLog?"_log":"") ); 
    }
  
    if(doRatio) 
    { 
        for(int i=2; i<7; i++) 
        {
            h2_Ratio[i] = (TH2F*) h2_DATA[i]->Clone(); 
            h2_MC[i]    = (TH2F*) h2_TT_sl[i]->Clone();
            h2_MC[i]->Add(h2_TT_ll[i]);
            h2_MC[i]->Add(h2_T[i]);
            h2_MC[i]->Add(h2_WJets[i]);
            h2_Ratio[i]->Divide(h2_MC[i]);
            c_Ratio->cd(i-1);
            h2_Ratio[i]->SetMinimum(0.5);
            h2_Ratio[i]->SetMaximum(1.5);
            h2_Ratio[i]->Draw("colz");
            c_Ratio->Print( Form("Figures/%s/2D_Ratio_%s%s.pdf",
                            Region, HistName.Data(), DoLog?"_log":"") ); 
        } 
    }

    // 
    HistFile->Close();
    delete c_TT_sl;
    delete c_TT_ll;
    delete c_Ratio;
}
示例#2
0
void HCALPedestalTableAnalysis(TString PedTable="PedestalTable_results.txt") 
{ 

    // [HB HE HO HF][cap 0 1 2 3] 
    TH1D        *h1_mean[4][4];
    TH1D        *h1_width[4][4];
    TH2D        *h2_mean[4][4];
    TH2D        *h2_width[4][4];
    for(int depth=0; depth<4; depth++)
    {
        TString subdet="HB"; if(depth==1) subdet="HE"; if(depth==2) subdet="HO"; if(depth==3) subdet="HF";
        for(int cap=0; cap<4; cap++)
        {
            float Max=4;
            float Min=2; 
            if(depth==3) { Max=11; Min=7; }
            h1_mean[depth][cap]  = new TH1D(Form("h1_mean_%s_cap%i",subdet.Data(),cap),   Form("h1_mean_%s_cap%i",subdet.Data(),cap),      50,0,16);
            h1_width[depth][cap]  = new TH1D(Form("h1_width_%s_cap%i",subdet.Data(),cap),   Form("h1_width_%s_cap%i",subdet.Data(),cap),   50,0,2);
            
            h2_mean[depth][cap]  = new TH2D(Form("h2_mean_depth%i_cap%i",(depth+1),cap),   Form("h2_mean_depth%i_cap%i",(depth+1),cap),      83,-41.5,41.5,72,0.5,72.5);
            h2_width[depth][cap] = new TH2D(Form("h2_width_depth%i_cap%i",(depth+1),cap),   Form("h2_width_depth%i_cap%i",(depth+1),cap),      83,-41.5,41.5,72,0.5,72.5);
            h2cosmetic(h2_mean[depth][cap],Form("Mean of pedestal in depth=%i and capid=%i",(depth+1),cap),"ieta", "iphi", "mean ADC", Max, Min);
            h2cosmetic(h2_width[depth][cap],Form("Width of pedestal in depth=%i and capid=%i",(depth+1),cap),"ieta", "iphi", "width ADC", 2, 0);
        }
    }

    string line;
    int ieta, iphi, depth;
    double cap0, cap1, cap2, cap3, widthcap0, widthcap1, widthcap2, widthcap3;
    string det;
    ifstream fin(PedTable.Data()); 
    if(fin.is_open()) { 
        while(fin.good()){

            // get a line from fin
            getline(fin, line);

            if( line.find("#")!=string::npos ) continue;

            // Store each element in the line to the defined variables
            stringstream stream(line);
            stream >> ieta >> iphi >> depth >> det >> cap0 >> cap1 >> cap2 >> cap3 >> widthcap0 >> widthcap1 >> widthcap2 >> widthcap3;  
            
            if( !fin.good() ) continue;
            
            if(det=="HB") { h1_mean[0][0]->Fill(cap0); h1_mean[0][1]->Fill(cap1); h1_mean[0][2]->Fill(cap2); h1_mean[0][3]->Fill(cap3);}
            if(det=="HE") { h1_mean[1][0]->Fill(cap0); h1_mean[1][1]->Fill(cap1); h1_mean[1][2]->Fill(cap2); h1_mean[1][3]->Fill(cap3);}
            if(det=="HO") { h1_mean[2][0]->Fill(cap0); h1_mean[2][1]->Fill(cap1); h1_mean[2][2]->Fill(cap2); h1_mean[2][3]->Fill(cap3);}
            if(det=="HF") { h1_mean[3][0]->Fill(cap0); h1_mean[3][1]->Fill(cap1); h1_mean[3][2]->Fill(cap2); h1_mean[3][3]->Fill(cap3);}
            
            if(det=="HB") { h1_width[0][0]->Fill(widthcap0); h1_width[0][1]->Fill(widthcap1); h1_width[0][2]->Fill(widthcap2); h1_width[0][3]->Fill(widthcap3);}
            if(det=="HE") { h1_width[1][0]->Fill(widthcap0); h1_width[1][1]->Fill(widthcap1); h1_width[1][2]->Fill(widthcap2); h1_width[1][3]->Fill(widthcap3);}
            if(det=="HO") { h1_width[2][0]->Fill(widthcap0); h1_width[2][1]->Fill(widthcap1); h1_width[2][2]->Fill(widthcap2); h1_width[2][3]->Fill(widthcap3);}
            if(det=="HF") { h1_width[3][0]->Fill(widthcap0); h1_width[3][1]->Fill(widthcap1); h1_width[3][2]->Fill(widthcap2); h1_width[3][3]->Fill(widthcap3);}

            h2_mean[depth-1][0]->SetBinContent(ieta+42,iphi,cap0);
            h2_mean[depth-1][1]->SetBinContent(ieta+42,iphi,cap1);
            h2_mean[depth-1][2]->SetBinContent(ieta+42,iphi,cap2);
            h2_mean[depth-1][3]->SetBinContent(ieta+42,iphi,cap3);
            h2_width[depth-1][0]->SetBinContent(ieta+42,iphi,widthcap0);
            h2_width[depth-1][1]->SetBinContent(ieta+42,iphi,widthcap1);
            h2_width[depth-1][2]->SetBinContent(ieta+42,iphi,widthcap2);
            h2_width[depth-1][3]->SetBinContent(ieta+42,iphi,widthcap3);

        }
    }
   

    TCanvas *c_mean_2d[4], *c_width_2d[4], *c_mean_1d[4], *c_width_1d[4];
    for(int depth=0; depth<4; depth++)
    { 
        // 2d 
        c_mean_2d[depth] = new TCanvas(Form("c_mean_2d_depth%i", depth+1), Form("c_mean_2d_depth%i", depth+1), 800,600);
        c_mean_2d[depth]->Divide(2,2);
        c_mean_2d[depth]->cd(1); h2_mean[depth][0]->Draw("colz");
        c_mean_2d[depth]->cd(2); h2_mean[depth][1]->Draw("colz");
        c_mean_2d[depth]->cd(3); h2_mean[depth][2]->Draw("colz");
        c_mean_2d[depth]->cd(4); h2_mean[depth][3]->Draw("colz");
        c_mean_2d[depth]->Print(Form("Fig/c_mean_2d_depth%i.pdf", depth+1));

        c_width_2d[depth] = new TCanvas(Form("c_width_2d_depth%i", depth+1), Form("c_width_2d_depth%i", depth+1), 800,600);
        c_width_2d[depth]->Divide(2,2);
        c_width_2d[depth]->cd(1); h2_width[depth][0]->Draw("colz");
        c_width_2d[depth]->cd(2); h2_width[depth][1]->Draw("colz");
        c_width_2d[depth]->cd(3); h2_width[depth][2]->Draw("colz");
        c_width_2d[depth]->cd(4); h2_width[depth][3]->Draw("colz");
        c_width_2d[depth]->Print(Form("Fig/c_width_2d_depth%i.pdf", depth+1));
       
        // 1d 
        TString subdet="HB"; if(depth==1) subdet="HE"; if(depth==2) subdet="HO"; if(depth==3) subdet="HF";
        c_mean_1d[depth] = new TCanvas(Form("c_mean_1d_%s", subdet.Data()), Form("c_mean_1d_%s", subdet.Data()), 800,600);
        c_mean_1d[depth]->Divide(2,2);
        c_mean_1d[depth]->cd(1); c_mean_1d[depth]->cd(1)->SetLogy(1); h1_mean[depth][0]->Draw("hist");
        c_mean_1d[depth]->cd(2); c_mean_1d[depth]->cd(2)->SetLogy(1); h1_mean[depth][1]->Draw("hist");
        c_mean_1d[depth]->cd(3); c_mean_1d[depth]->cd(3)->SetLogy(1); h1_mean[depth][2]->Draw("hist");
        c_mean_1d[depth]->cd(4); c_mean_1d[depth]->cd(4)->SetLogy(1); h1_mean[depth][3]->Draw("hist");
        c_mean_1d[depth]->Print(Form("Fig/c_mean_1d_%s.pdf", subdet.Data()));
        
        c_width_1d[depth] = new TCanvas(Form("c_width_1d_%s", subdet.Data()), Form("c_width_1d_%s", subdet.Data()), 800,600);
        c_width_1d[depth]->Divide(2,2);
        c_width_1d[depth]->cd(1); c_width_1d[depth]->cd(1)->SetLogy(1); h1_width[depth][0]->Draw("hist");
        c_width_1d[depth]->cd(2); c_width_1d[depth]->cd(2)->SetLogy(1); h1_width[depth][1]->Draw("hist");
        c_width_1d[depth]->cd(3); c_width_1d[depth]->cd(3)->SetLogy(1); h1_width[depth][2]->Draw("hist");
        c_width_1d[depth]->cd(4); c_width_1d[depth]->cd(4)->SetLogy(1); h1_width[depth][3]->Draw("hist");
        c_width_1d[depth]->Print(Form("Fig/c_width_1d_%s.pdf", subdet.Data()));
    }

    fin.close();
}