@@ -387,6 +387,11 @@ void TRestGeant4AnalysisProcess::InitProcess() {
387387 fTracksEDepObservables .push_back (fObservables [i]);
388388 fParticleTrackEdep .emplace_back (particleName.Data ());
389389 }
390+
391+ if (fObservables [i].find (" primaryOriginDistanceToPrism" ) != string::npos) {
392+ fPrismCenter = Get3DVectorParameterWithUnits (" prismCenter" );
393+ fPrismSize = Get3DVectorParameterWithUnits (" prismSizeXYZ" );
394+ }
390395 }
391396}
392397
@@ -437,6 +442,28 @@ TRestEvent* TRestGeant4AnalysisProcess::ProcessEvent(TRestEvent* inputEvent) {
437442 Double_t size = fOutputG4Event ->GetBoundingBoxSize ();
438443 SetObservableValue (" boundingSize" , size);
439444
445+ std::string eventPrimaryParticleName = fOutputG4Event ->GetPrimaryEventParticleName (0 ).Data ();
446+ SetObservableValue (" eventPrimaryParticleName" , eventPrimaryParticleName);
447+
448+ std::string subEventPrimaryParticleName = fOutputG4Event ->GetSubEventPrimaryEventParticleName ().Data ();
449+ SetObservableValue (" subEventPrimaryParticleName" , subEventPrimaryParticleName);
450+
451+ auto observables = TRestEventProcess::ReadObservables ();
452+ auto it = std::find (observables.begin (), observables.end (), " primaryOriginDistanceToPrism" );
453+ if (it != observables.end ()) {
454+ TVector3 positionCentered = fOutputG4Event ->GetPrimaryEventOrigin () - fPrismCenter ;
455+ double mx = TMath::Max (0 ., TMath::Max (-fPrismSize .X () / 2 - positionCentered.X (),
456+ -fPrismSize .X () / 2 + positionCentered.X ()));
457+ double my = TMath::Max (0 ., TMath::Max (-fPrismSize .Y () / 2 - positionCentered.Y (),
458+ -fPrismSize .Y () / 2 + positionCentered.Y ()));
459+ double mz = TMath::Max (0 ., TMath::Max (-fPrismSize .Z () / 2 - positionCentered.Z (),
460+ -fPrismSize .Z () / 2 + positionCentered.Z ()));
461+
462+ auto distance = TMath::Sqrt (mx * mx + my * my + mz * mz);
463+
464+ SetObservableValue (" primaryOriginDistanceToPrism" , distance);
465+ }
466+
440467 // process names as named by Geant4
441468 // processes present here will be added to the list of observables which can be used to see if the event
442469 // contains the process of interest.
0 commit comments