Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:18:06

0001 void draw_vec_branches(const char* infile = "/mnt/e/sphenix/INTT-EMCAL/InttSeedingTrackDev/ParticleGen/output/electron_PrTT_1GeV.root")
0002 {
0003     // 打开文件
0004     TFile *f = TFile::Open(infile, "READ");
0005     if (!f || f->IsZombie()) {
0006         std::cerr << "Error opening file: " << infile << std::endl;
0007         return;
0008     }
0009 
0010     // 获取 tree
0011     TTree *tree = dynamic_cast<TTree*>(f->Get("tree"));
0012     if (!tree) {
0013         std::cerr << "Cannot find tree 'tree' in file." << std::endl;
0014         return;
0015     }
0016 
0017     // 定义变量
0018     std::vector<float> *_PrG4_TTPRO_dD = nullptr;
0019     std::vector<float> *_PrG4_TTPRO_dR = nullptr;
0020     std::vector<float> *_PrG4_TTPRO_dphi = nullptr;
0021 
0022     // 设置 branch address
0023     tree->SetBranchAddress("PrG4_TTPRO_dD", &_PrG4_TTPRO_dD);
0024     tree->SetBranchAddress("PrG4_TTPRO_dR", &_PrG4_TTPRO_dR);
0025     tree->SetBranchAddress("PrG4_TTPRO_dphi", &_PrG4_TTPRO_dphi);
0026 
0027     // 创建直方图
0028     TH1D *h_dD = new TH1D("h_dD", "PrG4_TTPRO_dD;dD(cm)", 300, 0, 30);
0029     TH1D *h_dR = new TH1D("h_dR", "PrG4_TTPRO_dR;dR(cm)", 200, -5, 5);
0030     TH1D *h_dphi = new TH1D("h_dphi", "PrG4_TTPRO_dphi;dphi(rad)", 1000, -1, 1); // dphi 通常是角度范围
0031 
0032     // 创建 2D 直方图:dR vs dphi
0033     TH2D *h2_dR_dphi = new TH2D("h2_dR_dphi", "dR vs dphi;dR;dphi", 200, -5, 5, 1000, -1, 1);
0034 
0035     // 遍历事件
0036     Long64_t nentries = tree->GetEntries();
0037     for (Long64_t i = 0; i < nentries; ++i)
0038     {
0039         tree->GetEntry(i);
0040         
0041         // 填入直方图
0042         for (float val : *_PrG4_TTPRO_dD)     h_dD->Fill(val);
0043         for (float val : *_PrG4_TTPRO_dR)     h_dR->Fill(val);
0044         for (float val : *_PrG4_TTPRO_dphi)   h_dphi->Fill(val);
0045 
0046         // 填入 2D hist
0047         size_t nvals = std::min(_PrG4_TTPRO_dR->size(), _PrG4_TTPRO_dphi->size());
0048         for (size_t j = 0; j < nvals; ++j)
0049         {
0050             h2_dR_dphi->Fill(_PrG4_TTPRO_dR->at(j), _PrG4_TTPRO_dphi->at(j));
0051         }
0052     }
0053 
0054     // 保存到新文件
0055     TFile *fout = new TFile("draw_ePrTT_1GeV.root", "RECREATE");
0056     h_dD->Write();
0057     h_dR->Write();
0058     h_dphi->Write();
0059     h2_dR_dphi->Write();
0060     fout->Close();
0061 
0062     std::cout << "Histograms saved to output_hist.root" << std::endl;
0063 }