Utility.cxx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #include <Utility.h>
  2. #include <TDatabasePDG.h>
  3. #include <TParticlePDG.h>
  4. ClassImp(qaUtility);
  5. qaUtility *qaUtility::fUtility = nullptr;
  6. ;
  7. qaUtility::qaUtility() : Nevents(-1),
  8. debug(0),
  9. format("mctree")
  10. {
  11. }
  12. qaUtility::~qaUtility()
  13. {
  14. }
  15. qaUtility *qaUtility::GetInstance()
  16. {
  17. if (fUtility == nullptr)
  18. {
  19. fUtility = new qaUtility();
  20. }
  21. return fUtility;
  22. }
  23. TChain *qaUtility::initChain(const TString &inputFileName, const char *chainName)
  24. {
  25. TChain *chain = new TChain(chainName);
  26. std::ifstream file(inputFileName.Data());
  27. std::string line;
  28. while (std::getline(file, line))
  29. {
  30. chain->Add(line.c_str());
  31. }
  32. return chain;
  33. }
  34. std::vector<Float_t> qaUtility::ParseVector(std::string _input)
  35. {
  36. std::vector<Float_t> vB;
  37. std::istringstream iss(_input);
  38. std::copy(std::istream_iterator<Float_t>(iss),
  39. std::istream_iterator<Float_t>(),
  40. std::back_inserter(vB));
  41. return vB;
  42. }
  43. Double_t qaUtility::GetCharge(Int_t pdg)
  44. {
  45. auto particle = (TParticlePDG *)TDatabasePDG::Instance()->GetParticle(pdg);
  46. if (!particle)
  47. return error_code;
  48. return particle->Charge() / 3.;
  49. }
  50. Int_t qaUtility::GetPdgId(Int_t pdg)
  51. {
  52. if (pdg == vpdg.at(1))
  53. return 1;
  54. if (pdg == vpdg.at(2))
  55. return 2;
  56. if (pdg == vpdg.at(3))
  57. return 3;
  58. if (pdg == vpdg.at(4))
  59. return 4;
  60. if (pdg == vpdg.at(6))
  61. return 6;
  62. if (pdg == vpdg.at(7))
  63. return 7;
  64. if (pdg == vpdg.at(8))
  65. return 8;
  66. if (pdg == vpdg.at(9))
  67. return 9;
  68. return -1;
  69. }
  70. Double_t qaUtility::GetBeamP(Double_t sqrtSnn)
  71. {
  72. double m_target = 0.938;
  73. double m_beam = 0.938;
  74. return sqrt( pow((pow(sqrtSnn,2) - pow(m_target,2) - pow(m_beam,2))/(2*m_target), 2) - pow(m_beam,2) );
  75. }