#include #include #include ClassImp(qaUtility); qaUtility *qaUtility::fUtility = nullptr; ; qaUtility::qaUtility() : Nevents(-1), debug(0), format("mctree") { } qaUtility::~qaUtility() { } qaUtility *qaUtility::GetInstance() { if (fUtility == nullptr) { fUtility = new qaUtility(); } return fUtility; } TChain *qaUtility::initChain(const TString &inputFileName, const char *chainName) { TChain *chain = new TChain(chainName); std::ifstream file(inputFileName.Data()); std::string line; while (std::getline(file, line)) { chain->Add(line.c_str()); } return chain; } std::vector qaUtility::ParseVector(std::string _input) { std::vector vB; std::istringstream iss(_input); std::copy(std::istream_iterator(iss), std::istream_iterator(), std::back_inserter(vB)); return vB; } Double_t qaUtility::GetCharge(Int_t pdg) { auto particle = (TParticlePDG *)TDatabasePDG::Instance()->GetParticle(pdg); if (!particle) return error_code; return particle->Charge() / 3.; } Int_t qaUtility::GetPdgId(Int_t pdg) { if (pdg == vpdg.at(1)) return 1; if (pdg == vpdg.at(2)) return 2; if (pdg == vpdg.at(3)) return 3; if (pdg == vpdg.at(4)) return 4; if (pdg == vpdg.at(6)) return 6; if (pdg == vpdg.at(7)) return 7; if (pdg == vpdg.at(8)) return 8; if (pdg == vpdg.at(9)) return 9; return -1; } Double_t qaUtility::GetBeamP(Double_t sqrtSnn) { double m_target = 0.938; double m_beam = 0.938; return sqrt( pow((pow(sqrtSnn,2) - pow(m_target,2) - pow(m_beam,2))/(2*m_target), 2) - pow(m_beam,2) ); }