11 #include <beast/srsensor/simulation/SensitiveDetector.h>
12 #include <beast/srsensor/dataobjects/SrsensorSimHit.h>
14 #include <framework/datastore/StoreArray.h>
15 #include <framework/datastore/RelationArray.h>
29 Simulation::SensitiveDetectorBase(
"SrsensorSensitiveDetector", Const::invalidDetector)
32 StoreArray<MCParticle> mcParticles;
33 StoreArray<SrsensorSimHit> simHits;
34 RelationArray relMCSimHit(mcParticles, simHits);
37 mcParticles.registerInDataStore();
38 simHits.registerInDataStore();
39 relMCSimHit.registerInDataStore();
51 const G4Track& track = *
step->GetTrack();
52 const int trackID = track.GetTrackID();
53 const double depEnergy =
step->GetTotalEnergyDeposit() * CLHEP::MeV;
54 const double nielEnergy =
step->GetNonIonizingEnergyDeposit() * CLHEP::MeV;
55 const G4ThreeVector G4tkPos =
step->GetTrack()->GetPosition();
57 tkPos[0] = G4tkPos.x() * CLHEP::cm;
58 tkPos[1] = G4tkPos.y() * CLHEP::cm;
59 tkPos[2] = G4tkPos.z() * CLHEP::cm;
60 const G4ThreeVector G4tkMom =
step->GetTrack()->GetMomentum();
62 tkMom[0] = G4tkMom.x() * CLHEP::MeV;
63 tkMom[1] = G4tkMom.y() * CLHEP::MeV;
64 tkMom[2] = G4tkMom.z() * CLHEP::MeV;
65 const G4ThreeVector G4tkMomDir =
step->GetTrack()->GetMomentumDirection();
67 tkMomDir[0] = G4tkMomDir.x() * CLHEP::MeV;
68 tkMomDir[1] = G4tkMomDir.y() * CLHEP::MeV;
69 tkMomDir[2] = G4tkMomDir.z() * CLHEP::MeV;
70 const int tkPDG =
step->GetTrack()->GetDefinition()->GetPDGEncoding();
71 const double tkKEnergy =
step->GetTrack()->GetKineticEnergy();
72 const int detNb =
step->GetTrack()->GetVolume()->GetCopyNo();
73 const double GlTime =
step->GetPreStepPoint()->GetGlobalTime();
75 if (depEnergy < CLHEP::eV)
return false;
97 relMCSimHit.add(trackID, hit->getArrayIndex(), 1.0);