File indexing completed on 2025-08-10 08:12:50
0001 #include "sPhenixStyle.C"
0002
0003 int TCanvasInTFile_MakePlot()
0004 {
0005 string input_directory = "/sphenix/tg/tg01/commissioning/INTT/work/cwshih/seflgendata/run_54280_HR_Dec042024/completed/Run24NewCode_EvtVtxZTracklet/completed";
0006 string intput_filename = "Plot_Data_EvtVtxZProtoTracklet_FieldOff_BcoFullDiff_VtxZReco_Tracklet_TrackletRotate_FirstRun20241218_00054280_00000.root";
0007 string output_direcotry = input_directory + "/INTTvtxZEventDisplay";
0008 bool isInternal = true;
0009 string plot_text = (isInternal) ? "Internal" : "Preliminary";
0010 string Bid_pad_name = "pad_EvtZDist";
0011 bool DrawLegend = true;
0012
0013 system(Form("if [ ! -d %s ]; then mkdir -p %s; fi",output_direcotry.c_str(),output_direcotry.c_str()));
0014
0015 TFile * file_in = TFile::Open(Form("%s/%s",input_directory.c_str(),intput_filename.c_str()));
0016
0017 SetsPhenixStyle();
0018
0019 std::map<std::string, TCanvas*> data_canvas_map;
0020 std::map<std::string, TPad*> data_pad_map;
0021 std::map<std::string, TF1*> data_TF1_map;
0022
0023 const std::vector<std::string> color_code = {
0024 "#9e0142",
0025 "#d53e4f",
0026 "#f46d43",
0027 "#fdae61",
0028 "#fee08b",
0029 "#e6f598",
0030 "#abdda4",
0031 "#66c2a5",
0032 "#3288bd",
0033 "#5e4fa2"
0034 };
0035
0036 TLatex * ltx = new TLatex();
0037 ltx->SetNDC();
0038 ltx->SetTextSize(0.045);
0039 ltx->SetTextAlign(31);
0040
0041 TLegend * leg = new TLegend(0.2,0.68,0.8,0.77);
0042 leg -> SetNColumns(2);
0043 leg -> SetBorderSize(0);
0044 leg -> SetTextSize(0.02);
0045 leg -> SetMargin(0.2);
0046
0047 for (TObject* keyAsObj : *file_in->GetListOfKeys())
0048 {
0049 auto key = dynamic_cast<TKey*>(keyAsObj);
0050 std::string canvas_name = key->GetName();
0051 std::string class_name = key->GetClassName();
0052
0053 std::cout<<std::endl;
0054 std::cout<<"canvas_name : "<<canvas_name<<", class_name : "<<class_name<<std::endl;
0055
0056 if (class_name == "TCanvas")
0057 {
0058 data_pad_map.clear();
0059 data_TF1_map.clear();
0060
0061 data_canvas_map[canvas_name.c_str()] = (TCanvas*) file_in -> Get( canvas_name.c_str() );
0062
0063 TList *primitives = data_canvas_map[canvas_name.c_str()]->GetListOfPrimitives();
0064
0065
0066 TIter next(primitives);
0067 TObject *obj;
0068 std::cout << "List of TPad objects in the canvas:" << std::endl;
0069 while ((obj = next())) {
0070 if (obj->InheritsFrom("TPad")) {
0071 TPad *pad = dynamic_cast<TPad*>(obj);
0072 if (pad) {
0073 std::cout << "TPad Name: " << pad->GetName() << ", Title: " << pad->GetTitle() << std::endl;
0074
0075 data_pad_map[Form("%s_%s",canvas_name.c_str(),pad->GetName())] = dynamic_cast<TPad*>(data_canvas_map[canvas_name.c_str()]->GetPrimitive(pad->GetName()));
0076 }
0077 }
0078 }
0079
0080 for (auto &pair : data_pad_map){
0081 int line_count = 0;
0082 std::cout<<"pair.first : "<<pair.first<<std::endl;
0083 TList *primitives = data_pad_map[pair.first]->GetListOfPrimitives();
0084
0085 TIter next(primitives);
0086 while ((obj = next())) {
0087 if (obj->InheritsFrom("TF1")) {
0088 TF1 *tf1 = dynamic_cast<TF1*>(obj);
0089 if (tf1) {
0090 std::cout << "TF1 Name: " << tf1->GetName() << ", Title: " << tf1->GetTitle() << std::endl;
0091
0092 data_TF1_map[Form("%s_%s",pair.first.c_str(),tf1->GetName())] = dynamic_cast<TF1*>(data_pad_map[pair.first]->GetPrimitive(tf1->GetName()));
0093 data_TF1_map[Form("%s_%s",pair.first.c_str(),tf1->GetName())] -> SetLineColor( TColor::GetColor(color_code[line_count].c_str()) );
0094 data_TF1_map[Form("%s_%s",pair.first.c_str(),tf1->GetName())] -> SetLineWidth(1);
0095
0096
0097 double fit_xmin, fit_xmax;
0098 data_TF1_map[Form("%s_%s",pair.first.c_str(),tf1->GetName())] -> GetRange(fit_xmin, fit_xmax);
0099
0100 leg -> AddEntry(data_TF1_map[Form("%s_%s",pair.first.c_str(),tf1->GetName())], Form("Gaus, range: [%.2f, %.2f] cm", fit_xmin, fit_xmax), "l");
0101
0102 line_count++;
0103 }
0104 }
0105 }
0106 }
0107
0108
0109
0110 data_canvas_map[canvas_name.c_str()] -> cd();
0111 data_pad_map[Form("%s_%s", canvas_name.c_str(), Bid_pad_name.c_str())]->cd();
0112 ltx->DrawLatex(1 - gPad->GetRightMargin(), 1 - gPad->GetTopMargin() + 0.01, Form("#it{#bf{sPHENIX}} %s", plot_text.c_str()));
0113 if (DrawLegend) {leg->Draw("same");}
0114 data_canvas_map[canvas_name.c_str()]->Print(Form("%s/%s.pdf",output_direcotry.c_str(),canvas_name.c_str()));
0115
0116 leg -> Clear();
0117 std::cout<<"------------------------------------------------------------------------------------"<<std::endl;
0118
0119 }
0120
0121
0122 }
0123
0124
0125
0126
0127 return 0;
0128 }