File indexing completed on 2024-04-06 12:09:24
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 int elePublishHistos()
0015 {
0016 TString pub_input_file = gSystem->Getenv("PUB_INPUT_FILE") ;
0017 TString pub_input_folder = gSystem->Getenv("PUB_INPUT_FOLDER") ;
0018 TString pub_output_dir = gSystem->Getenv("PUB_OUTPUT_DIR") ;
0019 TString pub_title = gSystem->Getenv("PUB_TITLE") ;
0020 TString pub_comment = gSystem->Getenv("PUB_COMMENT") ;
0021
0022
0023 pub_output_dir = gSystem->ExpandPathName(pub_output_dir.Data()) ;
0024 if (gSystem->AccessPathName(pub_output_dir.Data())==kFALSE)
0025 { std::cout<<"Output directory is "<<pub_output_dir<<std::endl ; }
0026 else if (gSystem->mkdir(pub_output_dir,kTRUE)<0)
0027 { std::cerr<<"Failed to create "<<pub_output_dir<<std::endl ; exit(1) ; }
0028 else
0029 { std::cout<<"Creating "<<pub_output_dir<<std::endl ; }
0030
0031
0032 if (gSystem->CopyFile(pub_input_file.Data(),(pub_output_dir+"/"+pub_input_file).Data(),kTRUE)<0)
0033 { std::cerr<<"Failed to copy "<<pub_input_file<<std::endl ; exit(2) ; }
0034 else
0035 { std::cout<<"Input file is "<<pub_input_file<<std::endl ; }
0036 TFile * file = TFile::Open(pub_input_file) ;
0037 if (file!=0)
0038 {
0039 std::cout<<"Opening "<<pub_input_file<<std::endl ;
0040 if (file->cd(pub_input_folder)!=kTRUE)
0041 { std::cerr<<"Do not find "<<pub_input_folder<<std::endl ; exit(4) ; }
0042 else
0043 { std::cout<<"Input folder is "<<pub_input_folder<<std::endl ; }
0044 }
0045 else
0046 { std::cerr<<"Failed to open "<<pub_input_file<<std::endl ; exit(3) ; }
0047
0048
0049
0050 std::ofstream web_page((pub_output_dir+"/index.html").Data()) ;
0051 web_page
0052 <<"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n"
0053 <<"<html>\n"
0054 <<"<head>\n"
0055 <<"<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />\n"
0056 <<"<title>"<<pub_title<<"</title>\n"
0057 <<"</head>\n"
0058 <<"<h1><a href=\"../\">"<<pub_title<<"</a></h1>\n" ;
0059 web_page<<"<p>"<<pub_comment ;
0060 web_page
0061 <<" They were made using configurations "
0062 <<"<a href=\"http://cmslxr.fnal.gov/lxr/source/DQMOffline/EGamma/test/ElectronAnalyzer_cfg.py\">"
0063 <<"DQMOffline/EGamma/test/ElectronAnalyzer_cfg.py</a> and "
0064 <<"<a href=\"http://cmslxr.fnal.gov/lxr/source/DQMOffline/EGamma/test/ElectronOfflineClient_cfg.py\">"
0065 <<"DQMOffline/EGamma/test/ElectronOfflineClient_cfg.py</a>." ;
0066 web_page
0067 <<" One can download the full <a href=\""<<pub_input_file<<"\"> histograms file</a>." ;
0068 web_page<<"</p>\n" ;
0069
0070
0071 TStyle *eleStyle = new TStyle("eleStyle","Style for electron dqm offline");
0072 eleStyle->SetCanvasBorderMode(0);
0073 eleStyle->SetCanvasColor(kWhite);
0074 eleStyle->SetCanvasDefH(600);
0075 eleStyle->SetCanvasDefW(800);
0076 eleStyle->SetCanvasDefX(0);
0077 eleStyle->SetCanvasDefY(0);
0078 eleStyle->SetPadBorderMode(0);
0079 eleStyle->SetPadColor(kWhite);
0080 eleStyle->SetPadGridX(false);
0081 eleStyle->SetPadGridY(false);
0082 eleStyle->SetGridColor(0);
0083 eleStyle->SetGridStyle(3);
0084 eleStyle->SetGridWidth(1);
0085 eleStyle->SetPadTickX(1);
0086 eleStyle->SetPadTickY(1);
0087 eleStyle->SetHistLineColor(1);
0088 eleStyle->SetHistLineStyle(0);
0089 eleStyle->SetHistLineWidth(2);
0090 eleStyle->SetEndErrorSize(2);
0091 eleStyle->SetErrorX(0.);
0092 eleStyle->SetTitleColor(1, "XYZ");
0093 eleStyle->SetTitleFont(42, "XYZ");
0094 eleStyle->SetTitleXOffset(1.0);
0095 eleStyle->SetTitleYOffset(1.0);
0096 eleStyle->SetLabelOffset(0.005, "XYZ");
0097 eleStyle->SetTitleSize(0.05, "XYZ");
0098 eleStyle->SetTitleFont(22,"X");
0099 eleStyle->SetTitleFont(22,"Y");
0100 eleStyle->SetHistLineWidth(2);
0101 eleStyle->SetPadBottomMargin(0.13);
0102 eleStyle->SetPadLeftMargin(0.15);
0103 eleStyle->SetMarkerStyle(21);
0104 eleStyle->SetMarkerSize(0.8);
0105 eleStyle->cd();
0106 gROOT->ForceStyle();
0107
0108
0109 int cat_num ;
0110 TList * keys1, * keys2 ;
0111 TKey * key1, * key2 ;
0112 TObject * obj1, * obj2 ;
0113 TDirectory * dir ;
0114 TH1 * histo ;
0115 TString short_histo_name, anchor_name, histo_option ;
0116 file->cd(pub_input_folder) ;
0117 keys1 = gDirectory->GetListOfKeys() ;
0118 TIter * nextKey1, * nextKey2 ;
0119
0120
0121 std::cout<<"Writing top table"<<std::endl ;
0122 web_page
0123 <<"<br><table border=\"1\" cellpadding=\"5\" width=\"100%\">"
0124 <<"<tr valign=\"top\">\n" ;
0125 cat_num = 0 ;
0126 file->cd(pub_input_folder) ;
0127 keys1 = gDirectory->GetListOfKeys() ;
0128 nextKey1 = new TIter(keys1) ;
0129 while (key1 = (TKey *)(*nextKey1)())
0130 {
0131 obj1 = key1->ReadObj() ;
0132 if (obj1->IsA()->InheritsFrom("TDirectory")==kFALSE)
0133 { std::cout<<"Ignoring object "<<obj1->GetName()<<std::endl ; continue ; }
0134 else
0135 { std::cout<<"Processing folder "<<obj1->GetName()<<std::endl ; }
0136 dir = (TDirectory *)obj1 ;
0137 web_page<<"<td width=\"20%\"><b>"<<dir->GetName()<<"</b><br><br>\n" ;
0138 keys2 = dir->GetListOfKeys() ;
0139 nextKey2 = new TIter(keys2) ;
0140 while (key2 = (TKey *)(*nextKey2)())
0141 {
0142 obj2 = key2->ReadObj() ;
0143 if (obj2->IsA()->InheritsFrom("TH1")==kFALSE)
0144 { std::cout<<"Ignoring object "<<obj2->GetName()<<std::endl ; continue ; }
0145 short_histo_name = obj2->GetName() ;
0146
0147 anchor_name = dir->GetName() ;
0148 anchor_name += "_" ;
0149 anchor_name += short_histo_name ;
0150 web_page<<"<a href=\"#"<<anchor_name<<"\">"<<short_histo_name<<"</a><br>\n" ;
0151 }
0152 web_page<<"<br></td>\n" ;
0153 cat_num++ ;
0154 if ((cat_num%5)==0)
0155 { web_page<<"</tr>\n<tr valign=\"top\">" ; }
0156 }
0157 web_page<<"</tr></table>\n" ;
0158
0159
0160 std::cout<<"Plotting histograms"<<std::endl ;
0161 gErrorIgnoreLevel = kWarning ;
0162 web_page<<"<br><br><table cellpadding=\"5\"><tr valign=\"top\"><td>\n" ;
0163 TCanvas * canvas ;
0164 TString left_histo_name, histo_name, gif_name, gif_path, canvas_name ;
0165 cat_num = 0 ;
0166 file->cd(pub_input_folder) ;
0167 keys1 = gDirectory->GetListOfKeys() ;
0168 nextKey1 = new TIter(keys1) ;
0169 while (key1 = (TKey *)(*nextKey1)())
0170 {
0171 obj1 = key1->ReadObj() ;
0172 if (obj1->IsA()->InheritsFrom("TDirectory")==kFALSE)
0173 { continue ; }
0174 dir = (TDirectory *)obj1 ;
0175 keys2 = dir->GetListOfKeys() ;
0176 nextKey2 = new TIter(keys2) ;
0177 while (key2 = (TKey *)(*nextKey2)())
0178 {
0179 obj2 = key2->ReadObj() ;
0180 if (obj2->IsA()->InheritsFrom("TH1")==kFALSE)
0181 { std::cout<<"Ignoring object "<<obj2->GetName()<<std::endl ; continue ; }
0182 histo = (TH1 *)obj2 ;
0183
0184 std::cout
0185 <<dir->GetName()<<"/"<<histo->GetName()<<";"<<key2->GetCycle()
0186 <<" has "<<histo->GetEntries()<<" entries"
0187 <<" (~"<<histo->GetEffectiveEntries()<<")"
0188 <<" of mean value "<<histo->GetMean()
0189 <<std::endl ;
0190
0191 histo_name = histo->GetName() ;
0192 if (left_histo_name.IsNull()==kFALSE)
0193 {
0194 if (histo_name.Index(left_histo_name)==0)
0195 { web_page<<"</td><td>" ; }
0196 else
0197 {
0198 left_histo_name = histo_name ;
0199 web_page<<"</td></tr>\n<tr valign=\"top\"><td>" ;
0200 }
0201 }
0202 else
0203 { left_histo_name = histo_name ; }
0204
0205 short_histo_name = histo_name ;
0206
0207 anchor_name = dir->GetName() ;
0208 anchor_name += "_" ;
0209 anchor_name += short_histo_name ;
0210 gif_name = anchor_name+".gif" ;
0211 gif_path = pub_output_dir+"/"+gif_name ;
0212 canvas_name = "c_" ;
0213 canvas_name += anchor_name ;
0214 canvas = new TCanvas(canvas_name) ;
0215 canvas->SetFillColor(10) ;
0216
0217 histo->SetLineColor(2) ;
0218 histo->SetMarkerColor(2) ;
0219 histo->SetLineWidth(3) ;
0220
0221 histo_option = histo->GetOption() ;
0222 if ((histo_option.Contains("ELE_LOGY")==kTRUE)&&(histo->GetEntries()>0)&&(histo->GetMaximum()>0))
0223 { canvas->SetLogy(1) ; }
0224
0225 if (histo->IsA()->InheritsFrom("TH2")==kTRUE)
0226 {
0227 gStyle->SetPalette(1) ;
0228 gStyle->SetOptStat(111) ;
0229 histo->Draw() ;
0230 }
0231 else if (histo->IsA()->InheritsFrom("TProfile")==kTRUE)
0232 {
0233 gStyle->SetOptStat(111) ;
0234 histo->Draw() ;
0235 }
0236 else
0237 {
0238 gStyle->SetOptStat(111111) ;
0239 histo->Draw() ;
0240 }
0241 canvas->SaveAs(gif_path.Data()) ;
0242
0243 web_page
0244 <<"<a id=\""<<anchor_name<<"\" name=\""<<anchor_name<<"\"></a>"
0245 <<"<a href=\""<<gif_name<<"\"><img border=\"0\" class=\"image\" width=\"500\" src=\""<<gif_name<<"\"></a><br>\n" ;
0246 }
0247 }
0248 web_page<<"</td></tr></table>\n" ;
0249
0250
0251 web_page<<"\n</html>"<<std::endl ;
0252 web_page.close() ;
0253 std::cout<<"Histos written to "<<pub_output_dir<<std::endl ;
0254 return 0 ;
0255 }