コード例 #1
0
ファイル: SinglePi.C プロジェクト: Andrej-CMS/cmssw
void SinglePi(const TString ref_vers, const TString val_vers, bool fastsim){

    //Warning!!! This rootlogon hacks the root color pallate
   setColors();

   TString ref_file = "pi50scan"+ref_vers+"_fullGeom_ECALHCAL_CaloTowers.root";
   TString val_file = "pi50scan"+val_vers+"_fullGeom_ECALHCAL_CaloTowers.root";
      
   TFile f1(ref_file);
   TFile f2(val_file);
   
   // service variables
   //
   //Profiles
   const int Nprof   = 12;

   TProfile* f1_prof[Nprof];
   TProfile* f2_prof[Nprof];

   char labelp[Nprof][64];

   //1D Histos
   const int Nhist1  = 7;

   TH1* f1_hist1[Nhist1];
   TH1* f2_hist1[Nhist1];

   char label1[Nhist1][64];

   //Labels
   //Profiles
   sprintf(labelp[0], "CaloTowersTask_emean_vs_ieta_E1.gif");
   sprintf(labelp[1], "CaloTowersTask_emean_vs_ieta_H1.gif");
   sprintf(labelp[2], "CaloTowersTask_emean_vs_ieta_EH1.gif");

   sprintf(labelp[3], "RecHitsTask_emean_vs_ieta_E.gif");
   sprintf(labelp[4], "RecHitsTask_emean_vs_ieta_H.gif");
   sprintf(labelp[5], "RecHitsTask_emean_vs_ieta_EH.gif");
   if (!fastsim) {
       sprintf(labelp[6], "SimHitsTask_emean_vs_ieta_E.gif");
       sprintf(labelp[7], "SimHitsTask_emean_vs_ieta_H.gif");
       sprintf(labelp[8], "SimHitsTask_emean_vs_ieta_EH.gif");
   }
   sprintf(labelp[9], "RecHitsTask_timing_vs_energy_profile_HB.gif");
   sprintf(labelp[10], "RecHitsTask_timing_vs_energy_profile_HE.gif");
   sprintf(labelp[11], "RecHitsTask_timing_vs_energy_profile_HF.gif");



   //1D Histos
   sprintf(label1[0], "N_calotowers_HB.gif");
   sprintf(label1[1], "N_calotowers_HE.gif");
   sprintf(label1[2], "N_calotowers_HF.gif");
   
   sprintf(label1[3], "RecHits_energy_HB.gif");
   sprintf(label1[4], "RecHits_energy_HE.gif");
   sprintf(label1[5], "RecHits_energy_HO.gif");
   sprintf(label1[6], "RecHits_energy_HF.gif");

   TDirectory *td = fileDirectory(&f1, "CaloTowersTask");
   //f1.cd("DQMData/CaloTowersV/CaloTowersTask");
   //gDirectory->pwd();
   td->pwd();
   f1_prof[0] = (TProfile*)td->Get("emean_vs_ieta_E1");
   f1_prof[1] = (TProfile*)td->Get("emean_vs_ieta_H1");
   f1_prof[2] = (TProfile*)td->Get("emean_vs_ieta_EH1");

   f1_hist1[0] = (TH1*)td->Get("CaloTowersTask_number_of_fired_towers_HB");
   f1_hist1[1] = (TH1*)td->Get("CaloTowersTask_number_of_fired_towers_HE");
   f1_hist1[2] = (TH1*)td->Get("CaloTowersTask_number_of_fired_towers_HF");

   td = fileDirectory(&f1, "HcalRecHitTask");
   //f1.cd("DQMData/HcalRecHitsV/HcalRecHitTask");
   f1_prof[3] = (TProfile*)td->Get("HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths_E");
   f1_prof[4] = (TProfile*)td->Get("HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths");
   f1_prof[5] = (TProfile*)td->Get("HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths_EH");

   f1_prof[9] = (TProfile*)td->Get("HcalRecHitTask_timing_vs_energy_profile_HB");
   f1_prof[10] = (TProfile*)td->Get("HcalRecHitTask_timing_vs_energy_profile_Low_HE");
   f1_prof[11] = (TProfile*)td->Get("HcalRecHitTask_timing_vs_energy_profile_Low_HF");

   f1_hist1[3] = (TH1*)td->Get("HcalRecHitTask_energy_of_rechits_HB");
   f1_hist1[4] = (TH1*)td->Get("HcalRecHitTask_energy_of_rechits_HE");
   f1_hist1[5] = (TH1*)td->Get("HcalRecHitTask_energy_of_rechits_HO");
   f1_hist1[6] = (TH1*)td->Get("HcalRecHitTask_energy_of_rechits_HF");   

   if (!fastsim) {
       td = fileDirectory(&f1, "HcalSimHitTask");
       //f1.cd("DQMData/HcalSimHitsV/HcalSimHitTask");
       f1_prof[6] = (TProfile*)td->Get("HcalSimHitTask_En_simhits_cone_profile_vs_ieta_all_depths_E");
       f1_prof[7] = (TProfile*)td->Get("HcalSimHitTask_En_simhits_cone_profile_vs_ieta_all_depths");
       f1_prof[8] = (TProfile*)td->Get("HcalSimHitTask_En_simhits_cone_profile_vs_ieta_all_depths_EH");
   }

   td = fileDirectory(&f2, "CaloTowersTask");
   //f2.cd("DQMData/CaloTowersV/CaloTowersTask");
   //gDirectory->pwd();
   td->pwd();
   f2_prof[0] = (TProfile*)td->Get("emean_vs_ieta_E1");
   f2_prof[1] = (TProfile*)td->Get("emean_vs_ieta_H1");
   f2_prof[2] = (TProfile*)td->Get("emean_vs_ieta_EH1");

   f2_hist1[0] = (TH1*)td->Get("CaloTowersTask_number_of_fired_towers_HB");
   f2_hist1[1] = (TH1*)td->Get("CaloTowersTask_number_of_fired_towers_HE");
   f2_hist1[2] = (TH1*)td->Get("CaloTowersTask_number_of_fired_towers_HF");

   td = fileDirectory(&f2, "HcalRecHitTask");
   //f2.cd("DQMData/HcalRecHitsV/HcalRecHitTask");
   f2_prof[3] = (TProfile*)td->Get("HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths_E");
   f2_prof[4] = (TProfile*)td->Get("HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths");
   f2_prof[5] = (TProfile*)td->Get("HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths_EH");

   f2_prof[9] = (TProfile*)td->Get("HcalRecHitTask_timing_vs_energy_profile_HB");
   f2_prof[10] = (TProfile*)td->Get("HcalRecHitTask_timing_vs_energy_profile_Low_HE");
   f2_prof[11] = (TProfile*)td->Get("HcalRecHitTask_timing_vs_energy_profile_Low_HF"); 

   f2_hist1[3] = (TH1*)td->Get("HcalRecHitTask_energy_of_rechits_HB");
   f2_hist1[4] = (TH1*)td->Get("HcalRecHitTask_energy_of_rechits_HE");
   f2_hist1[5] = (TH1*)td->Get("HcalRecHitTask_energy_of_rechits_HO");
   f2_hist1[6] = (TH1*)td->Get("HcalRecHitTask_energy_of_rechits_HF");

   if (!fastsim) {
       td = fileDirectory(&f2, "HcalSimHitTask");
       //f2.cd("DQMData/HcalSimHitsV/HcalSimHitTask");
       f2_prof[6] = (TProfile*)td->Get("HcalSimHitTask_En_simhits_cone_profile_vs_ieta_all_depths_E");
       f2_prof[7] = (TProfile*)td->Get("HcalSimHitTask_En_simhits_cone_profile_vs_ieta_all_depths");
       f2_prof[8] = (TProfile*)td->Get("HcalSimHitTask_En_simhits_cone_profile_vs_ieta_all_depths_EH");
   }

   //Profiles
   f1_prof[0]->GetXaxis()->SetTitle("CaloTowers eE (GeV) vs ieta 1 Tower");
   f1_prof[1]->GetXaxis()->SetTitle("CaloTowers hE (GeV) vs ieta 1 Tower");
   f1_prof[2]->GetXaxis()->SetTitle("CaloTowers eE+hE (GeV) vs ieta 1 Tower");
   f1_prof[3]->GetXaxis()->SetTitle("RecHits eE (GeV) vs ieta R = 0.3 Cone");
   f1_prof[4]->GetXaxis()->SetTitle("RecHits hE (GeV) vs ieta R = 0.3 Cone");
   f1_prof[5]->GetXaxis()->SetTitle("RecHits eE+hE (GeV) vs ieta R = 0.3 Cone");
   if (!fastsim) {
     f1_prof[6]->GetXaxis()->SetTitle("SimHits eE (GeV) vs ieta R = 0.3 Cone");
     f1_prof[7]->GetXaxis()->SetTitle("SimHits hE (GeV) vs ieta R = 0.3 Cone");
     f1_prof[8]->GetXaxis()->SetTitle("SimHits eE+hE (GeV) vs ieta R = 0.3 Cone");
   }
   f1_prof[9]->GetXaxis()->SetTitle("HB RecHits timing (ns) vs Energy (GeV)");
   f1_prof[10]->GetXaxis()->SetTitle("HE RecHits timing (ns) vs Energy (GeV)");
   f1_prof[11]->GetXaxis()->SetTitle("HF RecHits timing (ns) vs Energy (GeV)");


   //1D Histos
   f1_hist1[0]->GetXaxis()->SetTitle("Number of HB CaloTowers");
   f1_hist1[1]->GetXaxis()->SetTitle("Number of HE CaloTowers");
   f1_hist1[2]->GetXaxis()->SetTitle("Number of HF CaloTowers");

   f1_hist1[3]->GetXaxis()->SetTitle("HB RecHits energy (GeV)");
   f1_hist1[4]->GetXaxis()->SetTitle("HE RecHits energy (GeV)");
   f1_hist1[5]->GetXaxis()->SetTitle("HO RecHits energy (GeV)");
   f1_hist1[6]->GetXaxis()->SetTitle("HF RecHits energy (GeV)");

   //
   f1_prof[0]->SetMaximum(20.);
   f1_prof[1]->SetMaximum(40.);
   f1_prof[2]->SetMaximum(40.);
   f1_prof[4]->SetMaximum(50.);
   f1_prof[5]->SetMaximum(50.);

   f1_prof[0]->SetMinimum(0.);
   f1_prof[1]->SetMinimum(0.);
   f1_prof[2]->SetMinimum(0.);
   f1_prof[3]->SetMinimum(0.);
   f1_prof[4]->SetMinimum(0.);
   f1_prof[5]->SetMinimum(0.);

   if (!fastsim) {
     f1_prof[6]->SetMinimum(0.);
     f1_prof[7]->SetMinimum(0.);
     f1_prof[8]->SetMinimum(0.);
   }

   f1_prof[9]->GetXaxis()->SetRangeUser(0.,75.);
   f1_prof[10]->GetXaxis()->SetRangeUser(0.,75.);
   f1_prof[11]->GetXaxis()->SetRangeUser(0.,75.);

   /* 
   f1_prof[9]->SetMinimum(0.);
   f1_prof[10]->SetMinimum(0.);
   f1_prof[11]->SetMinimum(0.);
   */



   // f1_hist[2]->GetXaxis()->SetRangeUser(0.,1200.);
   // f1_hist[7]->GetXaxis()->SetRangeUser(0.,160.);
   // hist1->GetXaxis()->SetNdivisions(-21);
   // hist1->GetYaxis()->SetNdivisions(-1003);

   f1_hist1[0]->GetXaxis()->SetRangeUser(0.,100.);
   f2_hist1[0]->GetXaxis()->SetRangeUser(0.,100.);

   f1_hist1[1]->GetXaxis()->SetRangeUser(0.,150.);
   f2_hist1[1]->GetXaxis()->SetRangeUser(0.,150.);

   f1_hist1[2]->GetXaxis()->SetRangeUser(0.,100.);
   f2_hist1[2]->GetXaxis()->SetRangeUser(0.,100.);

   f1_hist1[3]->GetXaxis()->SetRangeUser(0.,100.);
   f2_hist1[3]->GetXaxis()->SetRangeUser(0.,100.);

   f1_hist1[4]->GetXaxis()->SetRangeUser(0.,100.);
   f2_hist1[4]->GetXaxis()->SetRangeUser(0.,100.);

   f1_hist1[5]->GetXaxis()->SetRangeUser(0.,100.);
   f2_hist1[5]->GetXaxis()->SetRangeUser(0.,100.);

   f1_hist1[6]->GetXaxis()->SetRangeUser(0.,100.);
   f2_hist1[6]->GetXaxis()->SetRangeUser(0.,100.);

   f1_hist1[3]->SetMaximum(1.e8);
   f1_hist1[4]->SetMaximum(1.e8);
   f1_hist1[5]->SetMaximum(1.e8);
   f1_hist1[6]->SetMaximum(1.e8);



   //  1D-histo

   for (int i = 0; i < Nhist1; i++){

     TCanvas *myc = new TCanvas("myc","",800,600);
     gStyle->SetOptStat(1111);

     if(i > 2) myc->SetLogy();
     
     f1_hist1[i]->SetStats(kTRUE);   // stat box  
     f2_hist1[i]->SetStats(kTRUE);  

     f1_hist1[i]->SetTitle("");
     f2_hist1[i]->SetTitle("");
     
     f1_hist1[i]->SetLineWidth(2); 
     f2_hist1[i]->SetLineWidth(2); 
     
     // diffferent histo colors and styles
     f1_hist1[i]->SetLineColor(41);
     f1_hist1[i]->SetLineStyle(1); 
     
     f2_hist1[i]->SetLineColor(43);
     f2_hist1[i]->SetLineStyle(2);  
     
     //Set maximum to the larger of the two
     if (f1_hist1[i]->GetMaximum() < f2_hist1[i]->GetMaximum()) f1_hist1[i]->SetMaximum(1.05 * f2_hist1[i]->GetMaximum());

     TLegend *leg = new TLegend(0.2, 0.91, 0.6, 0.99, "","brNDC");

     leg->SetBorderSize(2);
     //  leg->SetFillColor(51); // see new color definition above
     leg->SetFillStyle(1001); //
     leg->AddEntry(f1_hist1[i],"CMSSW_"+ref_vers,"l");
     leg->AddEntry(f2_hist1[i],"CMSSW_"+val_vers,"l");


     TPaveStats *ptstats = new TPaveStats(0.85,0.86,0.98,0.98,"brNDC");
     ptstats->SetTextColor(41);
     f1_hist1[i]->GetListOfFunctions()->Add(ptstats);
     ptstats->SetParent(f1_hist1[i]->GetListOfFunctions());
     TPaveStats *ptstats2 = new TPaveStats(0.85,0.74,0.98,0.86,"brNDC");
     ptstats2->SetTextColor(43);
     f2_hist1[i]->GetListOfFunctions()->Add(ptstats2);
     ptstats2->SetParent(f2_hist1[i]->GetListOfFunctions());
         
     f1_hist1[i]->Draw(""); // "stat"   
     f2_hist1[i]->Draw("histsames");   
     
     leg->Draw();   
     
     myc->SaveAs(label1[i]);

     if(myc) delete myc;
   }     


  //  Profiles
  for (int i = 0; i < Nprof; i++){

    TCanvas *myc = new TCanvas("myc","",800,600);

    bool skipHisto = false;
    if (fastsim && i>=6 && i<=8) skipHisto = true;

    if (!skipHisto) {
      f1_prof[i]->SetStats(kFALSE);   
      f2_prof[i]->SetStats(kFALSE); 
      
      f1_prof[i]->SetTitle("");
      f2_prof[i]->SetTitle("");
      

      f1_prof[i]->SetLineColor(41);
      f1_prof[i]->SetLineStyle(1);     
      f1_prof[i]->SetLineWidth(1); 
      f1_prof[i]->SetMarkerColor(41);
      f1_prof[i]->SetMarkerStyle(21);
      f1_prof[i]->SetMarkerSize(1.0);  
      
      f2_prof[i]->SetLineColor(43);
      f2_prof[i]->SetLineStyle(1);  
      f2_prof[i]->SetLineWidth(1); 
      f2_prof[i]->SetMarkerColor(43);
      f2_prof[i]->SetMarkerStyle(20);
      f2_prof[i]->SetMarkerSize(0.8);  
      
      if(i > 8 ) {
	f1_prof[i]->SetMarkerSize(0.1);
	f2_prof[i]->SetMarkerSize(0.3);  
      }
      
      myc->SetGrid();
      
      if( i <= 8) {
	f1_prof[i]->Draw("histpl");   
	f2_prof[i]->Draw("histplsame"); // esame   
      }
      else {
	f1_prof[i]->Draw("pl");   
	f2_prof[i]->Draw("plsame"); // esame   
      }

      
      TLegend *leg = new TLegend(0.40, 0.91, 0.74, 0.99, "","brNDC");    
      leg->SetBorderSize(2);
      leg->SetFillStyle(1001); 
      leg->AddEntry(f1_prof[i],"CMSSW_"+ref_vers,"pl");
      leg->AddEntry(f2_prof[i],"CMSSW_"+val_vers,"pl");
      
      leg->Draw("");   
     
      myc->SaveAs(labelp[i]);
    }
    if(myc) delete myc;
  }

  TCanvas *myc = new TCanvas("myc","",800,600);

  TProfile* ratio1 = (TProfile*)f2_prof[2]->Clone();
  ratio1->Divide(f1_prof[2]);
  ratio1->SetMaximum(1.2);
  ratio1->SetMinimum(0.8);
  myc->SetGrid();  
  ratio1->Draw("hist pl");

  TLegend *leg = new TLegend(0.20, 0.91, 0.70, 0.99, "","brNDC");
  leg->SetBorderSize(2);
  leg->SetFillStyle(1001);
  leg->AddEntry(ratio1,"CaloTowers scale (pi50) ratio "+val_vers+"/"+ref_vers+" vs ieta","pl");
  leg->Draw("");


  //  f1_prof[2]->Draw();
  myc->SaveAs("Ratio.gif");


   // close ROOT files
   //
   f1.Close() ;  
   f2.Close() ;
   
   return ;  
     
}