//====================================== void runMCTnPTriggerEff(Char_t *fileNameOut = "MCTnPTriggerEff_HLTMu0TkMu0OSTJpsi_23May2011.root", Int_t effSample = MC, //DATA, MC, MCTRUTH Char_t *trigLabel = "HLT_Mu0_TkMu0_OST_Jpsi", //"HLT_DoubleMu0", "HLT_Mu0_TkMu0_OST_Jpsi", Char_t *fileNameIn = "/Users/hwoehri/CMS/CMSSW/hWoehri/Polarization/macros/JPsiToMuMu_Fall10-START38_V12-HLTrereco-WithAllMCEvents.root", //Char_t *fileNameIn = "/Users/hwoehri/CMS/Work/Polarization/Ilse/3April2011/JPsiToMuMu_pol_Fall10_noDimuVtxCut_1April2011.root", // Char_t *fileNameIn = "/home/hermine/CMS/CMSSW/hWoehri/Polarization/macros/JPsiToMuMu_Fall10-START38_V12-v1-Onia2MuMu-v6-WithAllMCEvents_merged.root", Char_t *oniaLabel = "J/#psi" //"J/#psi", "#psi'", "Ups(1S)", "Ups(2S)", "Ups(3S)" ){ TFile *fIn = new TFile(fileNameIn); TTree *treeData = (TTree*)fIn->Get("data"); TFile *fOut = new TFile(fileNameOut, "RECREATE"); printf("initializing tree\n"); MCTnPTriggerEff tree(treeData); printf("...done\n"); for(int iEff = 0; iEff < kNbEff; iEff++) LoadEfficiencies(iEff, effSample); printf("efficiencies loaded\n"); BookHistos(oniaLabel); tree.Loop(effSample, trigLabel); DivideHistos(); fOut->cd(); WriteHistos(); fOut->Close(); }
int electronCompare() { TString CMP_DIR = gSystem->Getenv( "CMP_DIR" ) ; TString CMP_URL = gSystem->Getenv( "CMP_URL" ) ; TString CMP_TITLE = gSystem->Getenv( "CMP_TITLE" ) ; TString CMP_RED_FILE = gSystem->Getenv( "CMP_RED_FILE" ) ; TString CMP_BLUE_FILE = gSystem->Getenv( "CMP_BLUE_FILE" ) ; TString CMP_RED_NAME = gSystem->Getenv( "CMP_RED_NAME" ) ; TString CMP_BLUE_NAME = gSystem->Getenv( "CMP_BLUE_NAME" ) ; TString CMP_RED_COMMENT = gSystem->Getenv( "CMP_RED_COMMENT" ) ; TString CMP_BLUE_COMMENT = gSystem->Getenv( "CMP_BLUE_COMMENT" ) ; TString CMP_CONFIG = gSystem->Getenv( "CMP_CONFIG" ) ; TString CMP_RED_RELEASE = gSystem->Getenv( "CMP_RED_RELEASE" ) ; TString CMP_BLUE_RELEASE = gSystem->Getenv( "CMP_BLUE_RELEASE" ) ; //----- // AC // std::cout << "red_file : C : " << CMP_RED_FILE << std::endl; // std::cout << "blue_file : C : " << CMP_BLUE_FILE << std::endl; std::cout << "red_release : C : " << CMP_RED_RELEASE << std::endl; std::cout << "blue_release : C : " << CMP_BLUE_RELEASE << std::endl; //----- // style: TStyle *eleStyle = new TStyle("eleStyle","Style for electron validation"); eleStyle->SetCanvasBorderMode(0); eleStyle->SetCanvasColor(kWhite); eleStyle->SetCanvasDefH(600); eleStyle->SetCanvasDefW(800); eleStyle->SetCanvasDefX(0); eleStyle->SetCanvasDefY(0); eleStyle->SetPadBorderMode(0); eleStyle->SetPadColor(kWhite); eleStyle->SetPadGridX(false); eleStyle->SetPadGridY(false); eleStyle->SetGridColor(0); eleStyle->SetGridStyle(3); eleStyle->SetGridWidth(1); eleStyle->SetOptStat(1); eleStyle->SetPadTickX(1); eleStyle->SetPadTickY(1); eleStyle->SetHistLineColor(1); eleStyle->SetHistLineStyle(0); eleStyle->SetHistLineWidth(2); eleStyle->SetEndErrorSize(2); eleStyle->SetErrorX(0.); eleStyle->SetOptStat(1); eleStyle->SetTitleColor(1, "XYZ"); eleStyle->SetTitleFont(42, "XYZ"); eleStyle->SetTitleXOffset(1.0); eleStyle->SetTitleYOffset(1.0); eleStyle->SetLabelOffset(0.005, "XYZ"); eleStyle->SetTitleSize(0.05, "XYZ"); eleStyle->SetTitleFont(22,"X"); eleStyle->SetTitleFont(22,"Y"); eleStyle->SetHistLineWidth(2); eleStyle->SetPadBottomMargin(0.13); eleStyle->SetPadLeftMargin(0.15); eleStyle->SetMarkerStyle(21); eleStyle->SetMarkerSize(0.8); //-- AC -- eleStyle->SetPadRightMargin(0.2) ; eleStyle->cd(); gROOT->ForceStyle(); TString internal_path("DQMData/Run 1/EgammaV/Run summary/") ; TString old_internal_path("DQMData/EgammaV/") ; TString file_ref_dir ; TFile * file_ref = 0 ; if ( CMP_BLUE_FILE != "" ) { file_ref = TFile::Open(CMP_BLUE_FILE) ; if (file_ref!=0) { std::cout<<"open "<<CMP_BLUE_FILE<<std::endl ; if (file_ref->cd(internal_path)==kTRUE) { std::cerr<<"cd "<<internal_path<<std::endl ; file_ref_dir = internal_path ; file_ref->cd() ; } else if (file_ref->cd(old_internal_path)==kTRUE) { std::cerr<<"cd "<<old_internal_path<<std::endl ; file_ref_dir = old_internal_path ; file_ref->cd() ; } else { std::cerr<<"Failed move to: "<<internal_path<<" and "<<old_internal_path<<std::endl ; file_ref_dir = "" ; } } else { std::cerr<<"Failed to open: "<<CMP_BLUE_FILE<<std::endl ; } } TString file_new_dir = internal_path ; TFile * file_new = 0 ; if ( CMP_RED_FILE != "" ) { file_new = TFile::Open(CMP_RED_FILE) ; if (file_new!=0) { std::cout<<"open "<<CMP_RED_FILE<<std::endl ; if (file_new->cd(internal_path)==kTRUE) { std::cerr<<"cd "<<internal_path<<std::endl ; file_new_dir = internal_path ; file_new->cd() ; } else if (file_new->cd(old_internal_path)==kTRUE) { std::cerr<<"cd "<<old_internal_path<<std::endl ; file_new_dir = old_internal_path ; file_new->cd() ; } else { std::cerr<<"Failed move to: "<<internal_path<<" and "<<old_internal_path<<std::endl ; file_new_dir = "" ; } } else { std::cerr<<"Failed to open: "<<CMP_RED_FILE<<std::endl ; } } TCanvas * canvas ; TH1 * histo_ref, * histo_new ; TPaveStats * st_ref, * st_new ; std::ofstream web_page(CMP_DIR+"/index.html") ; web_page <<"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n" <<"<html>\n" <<"<head>\n" <<"<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />\n" <<"<title>"<<CMP_TITLE<<"</title>\n" <<"</head>\n" <<"<h1><a href=\"../\"><img border=0 width=\"22\" height=\"22\" src=\"../../../../img/up.gif\" alt=\"Up\"/></a> "<<CMP_TITLE<<"</h1>\n" ; if (file_ref==0) { web_page <<"<p>In all plots below" <<", there was no reference histograms to compare with" <<", and the "<<CMP_RED_NAME<<" histograms are in red." ; } else { /* web_page <<"<p>In all plots below" <<", the "<<CMP_RED_NAME<<" histograms are in red" <<", and the "<<CMP_BLUE_NAME<<" histograms are in blue." ;*/ web_page <<"<p>In all plots below" <<", the "<<CMP_RED_RELEASE<<" histograms are in red" <<", and the "<<CMP_BLUE_RELEASE<<" histograms are in blue." ; /* std::cout <<"<p>In all plots below " <<", the "<<CMP_RED_RELEASE<<" histograms are in red" <<", and the "<<CMP_BLUE_RELEASE<<" histograms are in blue." << std::endl ;*/ } std::ifstream red_comment_file(CMP_RED_COMMENT) ; std::string red_comment ; std::getline(red_comment_file,red_comment) ; red_comment_file.close() ; std::ifstream blue_comment_file(CMP_BLUE_COMMENT) ; std::string blue_comment ; std::getline(blue_comment_file,blue_comment) ; blue_comment_file.close() ; web_page<<" "<<red_comment<<" "<<blue_comment <<" Some more details" <<": <a href=\"electronCompare.C\">script</a> used to make the plots" <<", <a href=\""<<CMP_CONFIG<<"\">specification</a> of histograms" <<", <a href=\"gifs/\">images</a> of histograms" <<"." ; web_page<<"</p>\n" ; // canvas_name std::string => TString TString canvas_name, histo_name, histo_full_path, gif_name, gif_path ; TString short_histo_name ; TString first_short_histo_name, first_histo_name ; TString dl_short_histo_name, dl_histo_name ; TString num_ref, denom_ref, num_full, denom_full ; Int_t n_ele_charge ; int scaled, err ; int divide; std::string cat, line, histo_path, num, denom ; int eol ; // end of line int eoc ; // enf of category double rescale_factor = 0. ; std::ifstream histo_file1(CMP_CONFIG) ; web_page <<"<br><table border=\"1\" cellpadding=\"5\" width=\"100%\">" <<"<tr valign=\"top\"><td width=\"20%\">\n" ; int cat_num = 0 ; cat = "" ; do { std::getline(histo_file1,cat) ; } while (cat.find_first_not_of(" \t")==std::string::npos) ; web_page<<"<b>"<<cat<<"</b><br><br>" ; while (std::getline(histo_file1,line)) { if (line.empty()) continue ; std::size_t first = line.find_first_not_of(" \t") ; if (first==std::string::npos) continue ; if (line[first]=='#') continue ; std::istringstream linestream(line) ; divide = 0 ; num = denom = "" ; linestream >> histo_path >> scaled >> err >> eol >> eoc >> divide >> num >> denom ; histo_name = histo_path ; Ssiz_t pos = histo_name.Last('/') ; if (pos!=kNPOS) histo_name.Remove(0,pos+1) ; short_histo_name = histo_name ; short_histo_name.Remove(0,2) ; if (short_histo_name.BeginsWith("ele_")) { short_histo_name.Remove(0,4) ; } if (first_histo_name.IsNull()) { first_short_histo_name = short_histo_name ; first_histo_name = histo_name ; dl_short_histo_name = short_histo_name ; dl_histo_name = histo_name ; } else { TString common ; TString first_specific ; TString second_specific ; CompareHistoNames(first_short_histo_name,short_histo_name,common,first_specific,second_specific) ; if (!dl_histo_name.IsNull()) { if (first_specific.IsNull()) { web_page<<"<a href=\"#"<<first_histo_name<<"\">"<<first_short_histo_name<<"</a>" ; } else { web_page<<common<<" | <a href=\"#"<<first_histo_name<<"\">"<<first_specific<<"</a>" ; } dl_short_histo_name = dl_histo_name = "" ; } web_page<<" | <a href=\"#"<<histo_name<<"\">"<<second_specific<<"</a>" ; } if ((eol)||(eoc)) { if (!dl_histo_name.IsNull()) { web_page<<"<a href=\"#"<<dl_histo_name<<"\">"<<dl_short_histo_name<<"</a>" ; } web_page<<"<br>\n" ; first_histo_name = first_short_histo_name = "" ; } if (eoc) { cat_num++ ; if ((cat_num%5)==0) { web_page<<"<br></td></tr>\n<tr valign=\"top\"><td width=\"20%\">" ; } else { web_page<<"<br></td><td width=\"20%\">\n" ; } cat = "" ; do { std::getline(histo_file1,cat) ; } while (cat.find_first_not_of(" \t")==std::string::npos) ; web_page<<"<b>"<<cat<<"</b><br><br>" ; } } web_page<<"<br></td></tr></table>\n" ; histo_file1.close() ; web_page<<"<br><br><table cellpadding=\"5\"><tr valign=\"top\"><td><a href=\""<<CMP_URL<<"/\"><img width=\"18\" height=\"18\" border=\"0\" align=\"middle\" src=\"../../../../img/up.gif\" alt=\"Top\"/></a></td><td>\n" ; std::ifstream histo_file2(CMP_CONFIG) ; n_ele_charge = 0 ; cat = "" ; do { std::getline(histo_file2,cat) ; } while (cat.empty()) ; while (std::getline(histo_file2,line)) { if (line.empty()) continue ; std::size_t first = line.find_first_not_of(" \t") ; if (first==std::string::npos) continue ; if (line[first]=='#') continue ; std::istrstream linestream(line) ; divide = 0 ; num = denom = "" ; linestream >> histo_path >> scaled >> err >> eol >> eoc >> divide >> num >> denom ; histo_name = histo_path.c_str() ; histo_ref = 0 ; histo_new = 0 ; st_ref = 0 ; st_new = 0 ; Ssiz_t pos = histo_name.Last('/') ; if (pos!=kNPOS) histo_name.Remove(0,pos+1) ; short_histo_name = histo_name ; short_histo_name.Remove(0,2) ; gif_name = "gifs/" ; gif_name += histo_name ; gif_name += ".gif" ; gif_path = CMP_DIR ; gif_path += "/" ; gif_path += gif_name ; canvas_name = "c" ; canvas_name += histo_name ; canvas = new TCanvas(canvas_name) ; canvas->SetFillColor(10) ; //std::cout << "canvas width " << canvas->GetWindowWidth() << std::endl; // 800 default //std::cout << "canvas height " << canvas->GetWindowHeight() << std::endl; // 600 default //std::cout << "canvas Y real " << canvas->GetYsizeReal() << std::endl; //std::cout << "canvas Y user " << canvas->GetYsizeUser() << std::endl; web_page<<"<a id=\""<<histo_name<<"\" name=\""<<short_histo_name<<"\"></a>" ; // search histo_ref if ( file_ref != 0 ) { if (file_ref_dir.IsNull()) { histo_full_path = histo_name ; } else { histo_full_path = file_ref_dir ; histo_full_path += histo_path.c_str() ; } histo_ref = (TH1 *)file_ref->Get(histo_full_path) ; if (histo_ref!=0) { // renaming those histograms avoid very strange bugs because they // have the same names as the ones loaded from the new file histo_ref->SetName(TString(histo_ref->GetName())+"_ref") ; } else { web_page<<"No <b>"<<histo_path<<"</b> for "<<CMP_BLUE_NAME<<".<br>" ; } } // search histo_new histo_full_path = file_new_dir ; histo_full_path += histo_path.c_str() ; histo_new = (TH1 *)file_new->Get(histo_full_path) ; //std::cout << "size " << histo_new->GetSize() << std::endl ; // special treatments if ((scaled==1)&&(histo_new!=0)&&(histo_ref!=0)&&(histo_ref->GetEntries()!=0)) { Int_t new_entries = histo_new->GetEntries() ; if (new_entries==0) { new_entries = n_ele_charge ; } if (new_entries==0) { std::cerr<<"DO NOT KNOW HOW TO RESCALE "<<histo_name<<std::endl ; } else { // we want to reuse the rescale factor of the first histogram // for all the subsequent histograms. if (rescale_factor==0.) { rescale_factor = new_entries/histo_ref->GetEntries() ; } histo_ref->Scale(rescale_factor) ; } } if ((histo_new!=0)&&(histo_ref!=0)&&(histo_ref->GetMaximum()>histo_new->GetMaximum())) { histo_new->SetMaximum(histo_ref->GetMaximum()*1.1) ; } if (histo_new==0) { web_page<<"No <b>"<<histo_path<<"</b> for "<<CMP_RED_NAME<<".<br>" ; } else { // catch n_ele_charge if (histo_name=="h_ele_charge") { n_ele_charge = histo_new->GetEntries() ; } // draw histo_new TString newDrawOptions(err==1?"E1 P":"hist") ; gErrorIgnoreLevel = kWarning ; if (divide!=0) { num_full = file_new_dir ; num_full += num.c_str() ; denom_full = file_new_dir ; denom_full += denom.c_str() ; histo_new = DivideHistos(file_new,histo_new,num_full,denom_full) ; } histo_new->SetLineColor(kRed) ; histo_new->SetMarkerColor(2) ; histo_new->SetLineWidth(3) ; RenderHisto(histo_new,canvas) ; histo_new->Draw(newDrawOptions) ; // std::cout << "SIZE : " << canvas->GetWw() << std::endl ; // 796 default // std::cout << "SIZE : " << canvas->GetWh() << std::endl ; // 572 default //canvas->Update() ; //canvas->SetWindowSize(440, 600); canvas->SetCanvasSize(960, 600); canvas->Update() ; st_new = (TPaveStats*)histo_new->FindObject("stats"); st_new->SetTextColor(kRed) ; // draw histo_ref if (histo_ref!=0) { if (divide!=0) { num_ref = num ; denom_ref = denom ; if (file_ref_dir.IsNull()) { pos = num_ref.Last('/') ; if (pos!=kNPOS) num_ref.Remove(0,pos+1) ; pos = denom_ref.Last('/') ; if (pos!=kNPOS) denom_ref.Remove(0,pos+1) ; } histo_ref = DivideHistos(file_ref,histo_ref,file_ref_dir+num_ref,file_ref_dir+denom_ref) ; } RenderHisto(histo_ref,canvas) ; histo_ref->SetLineColor(kBlue) ; histo_ref->SetLineWidth(3) ; histo_ref->Draw("sames hist") ; canvas->Update() ; st_ref = (TPaveStats*)histo_ref->FindObject("stats"); st_ref->SetTextColor(kBlue) ; Double_t y1 = st_ref->GetY1NDC() ; Double_t y2 = st_ref->GetY2NDC() ; st_ref->SetY1NDC(2*y1-y2) ; st_ref->SetY2NDC(y1) ; //Double_t x1 = st_ref->GetX1NDC() ; //Double_t x2 = st_ref->GetX2NDC() ; //std::cout << "position s x1 = " << x1 << std::endl ; // 0.78 par defaut //std::cout << "position s x2 = " << x2 << std::endl ; // 0.98 par defaut //std::cout << "position s y1 = " << y1 << std::endl ; // 0.755 ou 0.835 par defaut //std::cout << "position s y2 = " << y2 << std::endl ; // 0.995 par defaut } // Redraws newDrawOptions = "sames " ; newDrawOptions += (err==1?"E1 P":"hist") ; histo_new->Draw(newDrawOptions) ; if (st_ref!=0) st_ref->Draw() ; if (st_new!=0) st_new->Draw() ; // eventual log scale //if ( (log==1) && ( (histo_new->GetEntries()>0) || ( (histo_ref!=0) && (histo_ref->GetEntries()!=0) ) ) ) // { canvas->SetLogy(1) ; } // ne pas oublier de decommenter les 4 lignes suivantes std::cout<<histo_name <<" has "<<histo_new->GetEffectiveEntries()<<" entries" <<" of mean value "<<histo_new->GetMean() <<std::endl ; canvas->SaveAs(gif_path.Data()) ; web_page<<"<a href=\""<<gif_name<<"\"><img border=\"0\" class=\"image\" width=\"440\" src=\""<<gif_name<<"\"></a><br>" ; } // else if ((file_ref!=0)&&(histo_ref!=0)) // { // std::cout<<histo_path<<" NOT FOUND"<<std::endl ; // web_page<<"<br>(no such histo)" ; // canvas->SaveAs(gif_path.Data()) ; // web_page<<"<a href=\""<<gif_name<<"\"><img border=\"0\" class=\"image\" width=\"440\" src=\""<<gif_name<<"\"></a><br>" ; // } if (eol) { web_page<<"</td></tr>\n<tr valign=\"top\"><td><a href=\""<<CMP_URL<<"/\"><img width=\"18\" height=\"18\" border=\"0\" align=\"middle\" src=\"../../../../img/up.gif\" alt=\"Top\"/></a></td><td>" ; } else { web_page<<"</td><td>" ; } if (eoc) { cat = "" ; do { std::getline(histo_file2,cat) ; } while (cat.empty()) ; } } histo_file2.close() ; web_page<<"</td></tr></table>\n" ; web_page<<"\n</html>"<<std::endl ; web_page.close() ; }