18#include "TRestGeant4Hits.h"
20#include "TRestGeant4Event.h"
21#include "TRestGeant4Track.h"
27TRestGeant4Hits::TRestGeant4Hits() :
TRestHits() {}
29TRestGeant4Hits::~TRestGeant4Hits() =
default;
31void TRestGeant4Hits::RemoveG4Hits() {
36 fKineticEnergy.clear();
39Double_t TRestGeant4Hits::GetEnergyInVolume(Int_t volumeID)
const {
42 for (
size_t n = 0; n <
fNHits; n++) {
43 if (fVolumeID[n] == volumeID) {
44 energy += GetEnergy(n);
51TVector3 TRestGeant4Hits::GetMeanPositionInVolume(Int_t volumeID)
const {
54 for (
size_t n = 0; n <
fNHits; n++)
55 if (fVolumeID[n] == volumeID) {
57 energy += GetEnergy(n);
61 Double_t nan = TMath::QuietNaN();
62 return {nan, nan, nan};
65 pos = (1. / energy) * pos;
69TVector3 TRestGeant4Hits::GetFirstPositionInVolume(Int_t volumeID)
const {
70 for (
size_t n = 0; n <
fNHits; n++)
71 if (fVolumeID[n] == volumeID)
return GetPosition(n);
73 Double_t nan = TMath::QuietNaN();
74 return {nan, nan, nan};
77TVector3 TRestGeant4Hits::GetLastPositionInVolume(Int_t volumeID)
const {
78 for (
int n =
fNHits - 1; n >= 0; n--) {
79 if (fVolumeID[n] == volumeID) {
83 Double_t nan = TMath::QuietNaN();
84 return {nan, nan, nan};
87size_t TRestGeant4Hits::GetNumberOfHitsInVolume(Int_t volumeID)
const {
89 for (
size_t n = 0; n <
fNHits; n++) {
90 if (fVolumeID[n] == volumeID) {
99 if (fTrack !=
nullptr) {
100 event = fTrack->GetEvent();
104 if (event ==
nullptr) {
110TString TRestGeant4Hits::GetProcessName(
size_t n)
const {
111 const auto metadata = GetGeant4Metadata();
112 return metadata ==
nullptr ?
"" : metadata->GetGeant4PhysicsInfo().GetProcessName(GetProcessId(n));
115TString TRestGeant4Hits::GetVolumeName(
size_t n)
const {
116 const auto metadata = GetGeant4Metadata();
117 return metadata ==
nullptr ?
"" : metadata->GetGeant4GeometryInfo().GetVolumeFromID(GetVolumeId(n));
An event class to store geant4 generated event information.
It saves a 3-coordinate position and an energy for each punctual deposition.
virtual void RemoveHits()
It removes all hits inside the class.
size_t fNHits
Number of punctual energy depositions, it is the length for all the arrays.
TVector3 GetPosition(int n) const
It returns the position of hit number n.