#include #include #include "HEPUnits.hxx" #include "IG4HitCalo.hxx" #include "ICOMETEvent.hxx" #include "IEventFolder.hxx" ClassImp(COMET::IG4HitCalo); COMET::IG4HitCalo::IG4HitCalo() : IG4VHit(), fEntryX(0), fEntryY(0), fEntryZ(0), fEntryLocalX(0), fEntryLocalY(0), fEntryLocalZ(0), fPosX(0), fPosY(0), fPosZ(0), fPosT(0), fIncidentMomentumX(0), fIncidentMomentumY(0), fIncidentMomentumZ(0), fEdepElem(0),fEdepHad(0),fIncidentPID(0),fCrystalID(0) {} COMET::IG4HitCalo::IG4HitCalo(const COMET::IG4HitCalo& rhs) : IG4VHit(rhs), fEntryX(rhs.fEntryX), fEntryY(rhs.fEntryY), fEntryZ(rhs.fEntryZ), fEntryLocalX(rhs.fEntryLocalX), fEntryLocalY(rhs.fEntryLocalY), fEntryLocalZ(rhs.fEntryLocalZ), fPosX(rhs.fPosX), fPosY(rhs.fPosY), fPosZ(rhs.fPosZ), fPosT(rhs.fPosT), fIncidentMomentumX(rhs.fIncidentMomentumX), fIncidentMomentumY(rhs.fIncidentMomentumY), fIncidentMomentumZ(rhs.fIncidentMomentumZ), fEdepElem(rhs.fEdepElem),fEdepHad(rhs.fEdepHad), fIncidentPID(rhs.fIncidentPID), fCrystalID(rhs.fCrystalID) {} COMET::IG4HitCalo::~IG4HitCalo() {} void COMET::IG4HitCalo::ls(Option_t *opt) const { COMET::ls_header(this,opt); std::cout << " Incident Momentum: " << GetIncidentMomentum().Mag(); double energy = fEdepElem+fEdepHad; int prec = std::cout.precision(); std::cout.precision(4); if (energy > 1*unit::GeV) { std::cout << " E: " << energy/unit::GeV << " GeV"; } else if (energy > 1*unit::MeV) { std::cout << " E: " << energy/unit::MeV << " MeV"; } else { std::cout << " E: " << energy/unit::keV << " keV"; } std::cout << " ( "; if (fEdepElem > 1*unit::GeV) { std::cout << " EM: " << fEdepElem/unit::GeV << " GeV"; } else if (fEdepElem > 1*unit::MeV) { std::cout << " EM: " << fEdepElem/unit::MeV << " MeV"; } else { std::cout << " EM: " << fEdepElem/unit::keV << " keV"; } if (fEdepHad > 1*unit::GeV) { std::cout << " Had: " << fEdepHad/unit::GeV << " GeV"; } else if (fEdepHad > 1*unit::MeV) { std::cout << " Had: " << fEdepHad/unit::MeV << " MeV"; } else { std::cout << " Had: " << fEdepHad/unit::keV << " keV"; } std::cout << " ) " << std::endl; std::string option(opt); if (option.find("dump") != std::string::npos) { TROOT::IncreaseDirLevel(); TROOT::IndentLevel(); std::cout << std::setprecision(4) << "Entry: (" << fEntryX << " cm" << ", " << fEntryY << " cm" << ", " << fEntryZ << " cm)" << std::endl; TROOT::IndentLevel(); std::cout << std::setprecision(4) << "EntryLocal: (" << fEntryLocalX << " cm" << ", " << fEntryLocalY << " cm" << ", " << fEntryLocalZ << " cm)" << std::endl; TROOT::IndentLevel(); std::cout << std::setprecision(4) << "Pos: (" << fPosX << " cm" << ", " << fPosY << " cm" << ", " << fPosZ << " cm)" << std::endl; TROOT::IndentLevel(); std::cout << std::setprecision(4) << "IncidentMomentum: (" << fIncidentMomentumX << " MeV/c" << ", " << fIncidentMomentumY << " MeV/c" << ", " << fIncidentMomentumZ << " MeV/c)" << std::endl; TROOT::IndentLevel(); std::cout << std::setprecision(4) << "Primary Id = " << fPrimaryId << ", time = " << fPosT << ", crystal ID = " << fCrystalID << std::endl; TROOT::DecreaseDirLevel(); } std::cout.precision(prec); }