File indexing completed on 2024-04-06 12:24:14
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 void dumpPlotFromEffFile( char* inputFileName = "testEfficiency_data.root",
0025 char* dir="GsfElectronToId",
0026 bool isCutAndCount=true,
0027 bool isMCTruth = false ) {
0028
0029 std::cout << " ################################################## " << std::endl;
0030 if(isCutAndCount) {
0031 std::cout << "Plotting efficiency from cut & count. No background subtraction performed !" << std::endl;
0032 std::cout << "If you want to plot MC truth efficiency, please set: isMCTruth = true." << std::endl;
0033 }
0034 else std::cout << "Plotting efficiency from simultaneous fit." << std::endl;
0035 std::cout << " ################################################## " << std::endl;
0036
0037
0038
0039 TFile* f = new TFile(inputFileName);
0040 f->cd(dir);
0041
0042 TKey *key;
0043 TCanvas* c;
0044 TIter next( gDirectory->GetListOfKeys() );
0045 while ((key = (TKey*) next())) {
0046
0047 TObject *obj = key->ReadObj();
0048 char* name = obj->GetName();
0049
0050 if ( !(obj->IsA()->InheritsFrom( "TDirectory" )) ) continue;
0051 if( !isMCTruth && TString(name).Contains("MCtruth_") ) continue;
0052 if( isMCTruth && !(TString(name).Contains("MCtruth_")) ) continue;
0053
0054 std::cout << " ================================================== " << std::endl;
0055 TString dirName = Form("%s/cnt_eff_plots/", name);
0056 if( !isCutAndCount ) dirName = Form("%s/fit_eff_plots/", name);
0057 cout << "****************************dirName = " << dirName << endl;
0058 gDirectory->cd(dirName);
0059 char* canvasname = "probe_sc_et_probe_sc_eta_PLOT";
0060 if(isMCTruth) canvasname = "probe_sc_et_probe_sc_eta_PLOT_mcTrue_true";
0061 if(dir=="SuperClusterToGsfElectron") canvasname = "probe_et_probe_eta_PLOT";
0062 if(dir=="SuperClusterToGsfElectron" && isMCTruth)
0063 canvasname = "probe_et_probe_eta_PLOT_mcTrue_true";
0064
0065
0066 c = (TCanvas*) gDirectory->Get( canvasname );
0067 if(c==0) continue;
0068 gStyle->SetPalette(1);
0069 gStyle->SetPaintTextFormat(".2f");
0070 TH2F* h = (TH2F*) c->FindObject(canvasname );
0071 c->Draw();
0072 c->SaveAs( TString(name)+TString(".png"));
0073 makeTable( h, (const char*) (TString(name)+TString(".txt")) );
0074
0075
0076 if( !isCutAndCount ) {
0077
0078
0079 gDirectory->cd("../");
0080 gDirectory->ls();
0081
0082 TKey *innerkey;
0083 TIter innernext( gDirectory->GetListOfKeys() );
0084 while ((innerkey = (TKey*) innernext())) {
0085 obj = innerkey->ReadObj();
0086 char* innername = obj->GetName();
0087 if(!(obj->IsA()->InheritsFrom( "TDirectory" )) ||
0088 !(TString(innername).Contains("_bin")) ) continue;
0089 gDirectory->cd(innername);
0090 c = (TCanvas*) gDirectory->Get("fit_canvas");
0091 c->Draw();
0092 TString plotname = TString("fit")+TString(name)+TString("_")+
0093 TString(innername)+TString(".gif");
0094 plotname.ReplaceAll("probe_sc_", "");
0095 plotname.ReplaceAll("__pdfSignalPlusBackground", "");
0096 c->SaveAs(plotname);
0097 gDirectory->cd("../");
0098 }
0099 }
0100
0101
0102
0103 if( !isCutAndCount ) gDirectory->cd("../");
0104 else gDirectory->cd("../../");
0105
0106 std::cout << " ================================================== " << std::endl;
0107 }
0108
0109 }
0110
0111
0112
0113
0114
0115
0116 void makeTable(TH2F* h, char* tablefilename)
0117 {
0118
0119 int nX = h->GetNbinsX();
0120 int nY = h->GetNbinsY();
0121
0122
0123 FILE *file = fopen(tablefilename,"w+");
0124
0125
0126 for(int i=1; i<=nX; ++i) {
0127
0128 Double_t pT0 = h->GetXaxis()->GetBinLowEdge(i);
0129 Double_t pT1 = h->GetXaxis()->GetBinLowEdge(i+1);
0130
0131 for(int j=1; j<=nY; ++j) {
0132 Double_t x = h->GetBinContent(i,j);
0133 Double_t dx = h->GetBinError(i,j);
0134 Double_t eta0 = h->GetYaxis()->GetBinLowEdge(j);
0135 Double_t eta1 = h->GetYaxis()->GetBinLowEdge(j+1);
0136
0137 fprintf( file ,"%4.1f %4.1f %+6.4f %+6.4f %6.4f %6.4f \n",
0138 pT0, pT1, eta0, eta1, x, dx);
0139 }
0140 }
0141
0142 fclose(file);
0143 }