qaReader_smash_root.cxx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include <qaReader_smash_root.h>
  2. ClassImp(qaReader_smash_root);
  3. qaReader_smash_root::qaReader_smash_root(/* args */) : is_init(false), fCurrentEvent(-1)
  4. {
  5. }
  6. qaReader_smash_root::~qaReader_smash_root()
  7. {
  8. }
  9. Bool_t qaReader_smash_root::ChainCheck()
  10. {
  11. if (!is_init)
  12. {
  13. return false;
  14. }
  15. if (fCurrentEvent == -1)
  16. {
  17. return false;
  18. }
  19. if (!fChain->GetEntry(fCurrentEvent))
  20. {
  21. return false;
  22. }
  23. return true;
  24. }
  25. void qaReader_smash_root::SetChain(const TString &inputFileName)
  26. {
  27. fChain = (TChain *)qaUtility::GetInstance()->initChain(inputFileName, fChainName);
  28. fChain->SetBranchAddress("npart", &npart);
  29. fChain->SetBranchAddress("impact_b", &impact_b);
  30. fChain->SetBranchAddress("pdgcode", pdgcode);
  31. fChain->SetBranchAddress("p0", p0);
  32. fChain->SetBranchAddress("px", px);
  33. fChain->SetBranchAddress("py", py);
  34. fChain->SetBranchAddress("pz", pz);
  35. fChain->SetBranchAddress("t", t);
  36. fChain->SetBranchAddress("x", x);
  37. fChain->SetBranchAddress("y", y);
  38. fChain->SetBranchAddress("z", z);
  39. is_init = kTRUE;
  40. }
  41. qaEvent *qaReader_smash_root::ReadEvent(Long64_t iev)
  42. {
  43. fCurrentEvent = iev;
  44. if (!ChainCheck())
  45. {
  46. return nullptr;
  47. }
  48. qaEvent *event = new qaEvent();
  49. event->SetB(impact_b);
  50. event->SetPhiRP(0.);
  51. event->SetNparticles(npart);
  52. return event;
  53. }
  54. qaParticle *qaReader_smash_root::ReadParticle(Int_t ipart)
  55. {
  56. if (!ChainCheck())
  57. {
  58. return nullptr;
  59. }
  60. if (ipart >= npart)
  61. {
  62. return nullptr;
  63. }
  64. qaParticle *particle = new qaParticle();
  65. particle->SetEnergy(p0[ipart]);
  66. particle->SetPdg(pdgcode[ipart]);
  67. particle->SetPxPyPz(px[ipart], py[ipart], pz[ipart]);
  68. particle->SetTime(t[ipart]);
  69. particle->SetXYZ(x[ipart], y[ipart], z[ipart]);
  70. particle->SetCharge(qaUtility::GetInstance()->GetCharge(pdgcode[ipart]));
  71. return particle;
  72. }