20#include "BDSGlobalConstants.hh"
21#include "BDSSDThinThing.hh"
22#include "BDSTrajectoryOptions.hh"
23#include "BDSTrajectoryPoint.hh"
24#include "BDSUtilities.hh"
27#include "G4SDManager.hh"
29#include "G4StepPoint.hh"
30#include "G4ThreeVector.hh"
40 thinThingCollection(nullptr),
41 itsCollectionName(name),
43 storeTrajectoryLocal(trajectoryOptionsIn.storeLocal),
44 storeTrajectoryLinks(trajectoryOptionsIn.storeLinks),
45 storeTrajectoryIon(trajectoryOptionsIn.storeIon)
47 collectionName.insert(name);
50BDSSDThinThing::~BDSSDThinThing()
64 G4cout << __METHOD_NAME__ <<
"Hits Collection ID: " <<
itsHCID << G4endl;
70 std::vector<G4VHit*> hits;
76 const std::vector<G4VHit*>& )
83 G4bool condition2 =
BDS::IsFinite(step->GetPostStepPoint()->GetMomentumDirection() - step->GetPreStepPoint()->GetMomentumDirection());
85 G4bool condition3 =
BDS::IsFinite(step->GetTotalEnergyDeposit());
87 if (condition1 || condition2 || condition3)
89 G4Track* track = step->GetTrack();
109 if (hitsVector->empty())
114 return static_cast<G4VHit*
>(lastHit);
static BDSGlobalConstants * Instance()
Access method.
A hit if a particle lost energy in a thin object.
virtual G4bool ProcessHits(G4Step *aStep, G4TouchableHistory *rOHist) override
virtual G4bool ProcessHitsOrdered(G4Step *step, G4TouchableHistory *rOHist, const std::vector< G4VHit * > &hits) override
BDSHitsCollectionThinThing * thinThingCollection
The hits collection for this sensitive detector class that's owned by each instance.
G4String itsCollectionName
The name of the hits collection that's created and registered.
virtual G4VHit * last() const override
Return the last collimator hit.
virtual void Initialize(G4HCofThisEvent *HCE) override
BDSSDThinThing(const G4String &name, const BDS::TrajectoryOptions &trajectoryOptionsIn)
Include unique name for each instance.
Virtual class to define interface for ordered multi-sensitive detector.
A Point in a trajectory with extra information.
G4bool IsScatteringPoint() const
G4bool IsFinite(G4double value, G4double tolerance=std::numeric_limits< double >::epsilon())