Utility.cxx 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  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. Is_minbias(1),
  11. Is_refmult(1),
  12. Is_v1(1),
  13. Is_v2(1),
  14. Is_v3(1),
  15. Is_v4(1),
  16. Cut_minbias_Event_bmin(0.),
  17. Cut_minbias_Event_bmax(16.),
  18. Cut_minbias_Particle_ptmin(0.),
  19. Cut_minbias_Particle_ptmax(100.),
  20. Cut_minbias_Particle_etamin(-100.),
  21. Cut_minbias_Particle_etamax(100.),
  22. Cut_minbias_Particle_ymin(-100.),
  23. Cut_minbias_Particle_ymax(100.),
  24. Cut_refmult_Event_bmin(0.),
  25. Cut_refmult_Event_bmax(16.),
  26. Cut_refmult_Particle_ptmin(0.15),
  27. Cut_refmult_Particle_ptmax(3.),
  28. Cut_refmult_Particle_etamin(-0.5),
  29. Cut_refmult_Particle_etamax(0.5),
  30. Cut_refmult_Particle_isCharged(1)
  31. {
  32. }
  33. qaUtility::~qaUtility()
  34. {
  35. }
  36. qaUtility *qaUtility::GetInstance()
  37. {
  38. if (fUtility == nullptr)
  39. {
  40. fUtility = new qaUtility();
  41. }
  42. return fUtility;
  43. }
  44. Bool_t qaUtility::ReadConfig(const TString &configFileName)
  45. {
  46. if (configFileName.Length() == 0)
  47. {
  48. return false;
  49. }
  50. TEnv env(configFileName);
  51. Nevents = env.GetValue("Nevents", 0);
  52. debug = env.GetValue("debug", 0);
  53. Is_minbias = env.GetValue("Is_minbias", 0);
  54. Cut_minbias_Event_bmin = env.GetValue("Cut_minbias_Event_bmin", 0.);
  55. Cut_minbias_Event_bmax = env.GetValue("Cut_minbias_Event_bmax", 0.);
  56. Cut_minbias_Particle_ptmin = env.GetValue("Cut_minbias_Particle_ptmin", 0.);
  57. Cut_minbias_Particle_ptmax = env.GetValue("Cut_minbias_Particle_ptmax", 0.);
  58. Cut_minbias_Particle_etamin = env.GetValue("Cut_minbias_Particle_etamin", 0.);
  59. Cut_minbias_Particle_etamax = env.GetValue("Cut_minbias_Particle_etamax", 0.);
  60. Cut_minbias_Particle_ymin = env.GetValue("Cut_minbias_Particle_ymin", 0.);
  61. Cut_minbias_Particle_ymax = env.GetValue("Cut_minbias_Particle_ymax", 0.);
  62. Is_refmult = env.GetValue("Is_refmult", 0);
  63. Cut_refmult_Event_bmin = env.GetValue("Cut_refmult_Event_bmin", 0.);
  64. Cut_refmult_Event_bmax = env.GetValue("Cut_refmult_Event_bmax", 0.);
  65. Cut_refmult_Particle_ptmin = env.GetValue("Cut_refmult_Particle_ptmin", 0.);
  66. Cut_refmult_Particle_ptmax = env.GetValue("Cut_refmult_Particle_ptmax", 0.);
  67. Cut_refmult_Particle_etamin = env.GetValue("Cut_refmult_Particle_etamin", 0.);
  68. Cut_refmult_Particle_etamax = env.GetValue("Cut_refmult_Particle_etamax", 0.);
  69. Cut_refmult_Particle_isCharged = env.GetValue("Cut_refmult_Particle_isCharged", 0);
  70. Is_v1 = env.GetValue("Is_v1", 0);
  71. Is_v2 = env.GetValue("Is_v2", 0);
  72. Is_v3 = env.GetValue("Is_v3", 0);
  73. Is_v4 = env.GetValue("Is_v4", 0);
  74. return true;
  75. }
  76. TChain *qaUtility::initChain(const TString &inputFileName, const char *chainName)
  77. {
  78. TChain *chain = new TChain(chainName);
  79. std::ifstream file(inputFileName.Data());
  80. std::string line;
  81. while (std::getline(file, line))
  82. {
  83. chain->Add(line.c_str());
  84. }
  85. return chain;
  86. }
  87. std::vector<Float_t> qaUtility::ParseVector(std::string _input)
  88. {
  89. std::vector<Float_t> vB;
  90. std::istringstream iss(_input);
  91. std::copy(std::istream_iterator<Float_t>(iss),
  92. std::istream_iterator<Float_t>(),
  93. std::back_inserter(vB));
  94. return vB;
  95. }
  96. Bool_t qaUtility::Cut_Event_minbias(qaEvent *const &event)
  97. {
  98. if (event->GetB() < Cut_minbias_Event_bmin)
  99. return false;
  100. if (event->GetB() > Cut_minbias_Event_bmax)
  101. return false;
  102. return true;
  103. }
  104. Bool_t qaUtility::Cut_Event_refmult(qaEvent *const &event)
  105. {
  106. if (event->GetB() < Cut_refmult_Event_bmin)
  107. return false;
  108. if (event->GetB() > Cut_refmult_Event_bmax)
  109. return false;
  110. return true;
  111. }
  112. Bool_t qaUtility::Cut_Particle_minbias(qaParticle *const &particle)
  113. {
  114. if (particle->GetPt() < Cut_minbias_Particle_ptmin)
  115. return false;
  116. if (particle->GetPt() > Cut_minbias_Particle_ptmax)
  117. return false;
  118. if (particle->GetEta() < Cut_minbias_Particle_etamin)
  119. return false;
  120. if (particle->GetEta() > Cut_minbias_Particle_etamax)
  121. return false;
  122. return true;
  123. }
  124. Bool_t qaUtility::Cut_Particle_refmult(qaParticle *const &particle)
  125. {
  126. if (particle->GetPt() < Cut_refmult_Particle_ptmin)
  127. return false;
  128. if (particle->GetPt() > Cut_refmult_Particle_ptmax)
  129. return false;
  130. if (particle->GetEta() < Cut_refmult_Particle_etamin)
  131. return false;
  132. if (particle->GetEta() > Cut_refmult_Particle_etamax)
  133. return false;
  134. Double_t charge = GetCharge(particle->GetPdg());
  135. if (Cut_refmult_Particle_isCharged)
  136. {
  137. if (charge == error_code)
  138. return false;
  139. if (charge == 0)
  140. return false;
  141. }
  142. return true;
  143. }
  144. Double_t qaUtility::GetCharge(Int_t pdg)
  145. {
  146. auto particle = (TParticlePDG *)TDatabasePDG::Instance()->GetParticle(pdg);
  147. if (!particle)
  148. return error_code;
  149. return particle->Charge() / 3.;
  150. }
  151. Int_t qaUtility::GetPdgId(Int_t pdg)
  152. {
  153. if (pdg == vpdg.at(1))
  154. return 1;
  155. if (pdg == vpdg.at(2))
  156. return 2;
  157. if (pdg == vpdg.at(3))
  158. return 3;
  159. if (pdg == vpdg.at(4))
  160. return 4;
  161. if (pdg == vpdg.at(6))
  162. return 6;
  163. if (pdg == vpdg.at(7))
  164. return 7;
  165. if (pdg == vpdg.at(8))
  166. return 8;
  167. if (pdg == vpdg.at(9))
  168. return 9;
  169. return -1;
  170. }
  171. Int_t qaUtility::GetCentralityBin(Float_t b, std::vector<Float_t> vcent)
  172. {
  173. if (vcent.size() == 0)
  174. return -1;
  175. for (int i = 0; i < (int)vcent.size() - 1; i++)
  176. {
  177. if (b >= vcent.at(i) && b < vcent.at(i + 1))
  178. return i;
  179. }
  180. return -1;
  181. }
  182. Int_t qaUtility::GetCentMultBin(Int_t mult, std::vector<Float_t> vcent)
  183. {
  184. if (vcent.size() == 0)
  185. return -1;
  186. for (int i = 0; i < (int)vcent.size() - 1; i++)
  187. {
  188. if (mult >= vcent.at(i) && mult < vcent.at(i + 1))
  189. return i;
  190. }
  191. return -1;
  192. }