Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 #include <TSystem.h>
0002 #include <iostream>
0003 #include "PtCalculator.h"
0004 
0005 void PtCalcTutorial() 
0006 {
0007     // 先加载你的 .so
0008     gSystem->Load("libPtCalc.so");
0009 
0010     // ===== 下面保持你的原逻辑不变 =====
0011     SiCaloPt::PtCalculatorConfig cfg;        // 如果你的头文件里实际叫 PtCalculator::Config,请改成那种写法
0012     SiCaloPt::PtCalculator       calc(cfg);
0013     std::string err;
0014     if (!calc.init(&err)) {
0015         std::cout << "init failed: " << err << std::endl;
0016     }
0017 
0018     // EMD
0019     {
0020         SiCaloPt::InputEMD in;
0021         in.EMD_Angle  = 0.1f;
0022         in.EMD_Eta    = 0.0f;
0023         in.EMD_Radius = 93.5f;
0024         auto r = calc.ComputePt(SiCaloPt::Method::MethodEMD, SiCaloPt::AnyInput{in});
0025         std::cout << "[EMD] ok=" << r.ok << "  pt=" << r.pt_reco << "  err=\"" << r.err << "\"\n";
0026     }
0027 
0028     // Eproj
0029     {
0030         SiCaloPt::InputEproj in;
0031         in.Energy_Calo   = 8.f;
0032         in.Radius_Calo   = 100.f;
0033         in.Z_Calo        = 0.0f;
0034         in.Radius_vertex = 0.f;
0035         in.Z_vertex      = 100.0f;
0036         auto r = calc.ComputePt(SiCaloPt::Method::MethodEproj, SiCaloPt::AnyInput{in});
0037         std::cout << "[Eproj] ok=" << r.ok << "  pt=" << r.pt_reco << "  err=\"" << r.err << "\"\n";
0038     }
0039 }