60 G4ClassificationOfNewTrack classification = fWaiting;
63 Double_t buffer = 500;
66 int ppdg = aTrack->GetParentID();
67 TString process(
"NA");
68 if (ppdg) process = (TString)aTrack->GetCreatorProcess()->GetProcessName();
72 if (aTrack->GetParentID() == 0) {
73 G4ParticleDefinition* particleType = aTrack->GetDefinition();
74 if (((particleType == G4MuonPlus::MuonPlusDefinition()) ||
75 (particleType == G4MuonMinus::MuonMinusDefinition())) &&
76 !volName.Contains(
"unknown")) {
77 classification = fUrgent;
80 if (volName.Contains(
"unknown")) classification = fKill;
85 if (aTrack->GetTrackStatus() == fSuspend) {
break; }
87 if ((aTrack->GetDefinition()->GetPDGEncoding() == 2112 ||
88 aTrack->GetDefinition()->GetPDGEncoding() == 130 ||
89 aTrack->GetDefinition()->GetPDGEncoding() == 310 ||
90 aTrack->GetDefinition()->GetPDGEncoding() == 311 ||
91 aTrack->GetDefinition()->GetPDGEncoding() == 3122) &&
92 (aTrack->GetParentID() == 1) && !volName.Contains(
"unknown")) {
94 const G4ThreeVector tr4Pos = aTrack->GetPosition();
96 const TVector3 trPos(tr4Pos.x() / CLHEP::cm, tr4Pos.y() / CLHEP::cm, tr4Pos.z() / CLHEP::cm);
97 classification = fUrgent;
99 auto const& tpc = geom->
TPC({0, 0});
100 if (trPos.X() < (tpc.HalfWidth() * 2.0 + buffer) && trPos.X() > (-buffer) &&
101 trPos.Y() < (tpc.HalfHeight() * 2.0 + buffer) &&
102 trPos.Y() > (-tpc.HalfHeight() * 2.0 - buffer) && trPos.Z() < (tpc.Length() + buffer) &&
103 trPos.Z() > (-buffer)) {
104 classification = fUrgent;
110 classification = fKill;
115 if (volName.Contains(
"unknown")) classification = fKill;
121 if (aTrack->GetParentID() == 0 && !volName.Contains(
"unknown")) {
122 classification = fUrgent;
126 auto const& tpc = geom->
TPC({0, 0});
127 if (volName.Contains(tpc.ActiveVolume()->GetName()) && aTrack->GetParentID() != 0) {
128 classification = fUrgent;
129 if (
fStack & 0
x4 && aTrack->GetCreatorProcess()->GetProcessName().contains(
"muIoni")) {
130 classification = fKill;
134 else if (volName.Contains(
"unknown")) {
135 classification = fKill;
139 if (aTrack->GetDefinition()->GetPDGEncoding() == 11 &&
140 aTrack->GetCreatorProcess()->GetProcessName().contains(
"muIoni")) {
141 classification = fKill;
145 classification = fKill;
149 return classification;
std::string InsideTPC(const G4Track *aTrack)
Float_t x4[n_points_geant4]
TPCGeo const & TPC(TPCID const &tpcid=details::tpc_zero) const
Returns the specified TPC.