19#include "BDSGlobalConstants.hh"
20#include "BDSSDThinThing.hh"
21#include "BDSTrajectoryOptions.hh"
22#include "BDSTrajectoryPoint.hh"
23#include "BDSUtilities.hh"
26#include "G4SDManager.hh"
28#include "G4StepPoint.hh"
29#include "G4ThreeVector.hh"
39 thinThingCollection(nullptr),
40 itsCollectionName(name),
42 storeTrajectoryLocal(trajectoryOptionsIn.storeLocal),
43 storeTrajectoryLinks(trajectoryOptionsIn.storeLinks),
44 storeTrajectoryIon(trajectoryOptionsIn.storeIon)
46 collectionName.insert(name);
49BDSSDThinThing::~BDSSDThinThing()
63 G4cout << __METHOD_NAME__ <<
"Hits Collection ID: " <<
itsHCID << G4endl;
69 std::vector<G4VHit*> hits;
75 const std::vector<G4VHit*>& )
82 G4bool condition2 =
BDS::IsFinite(step->GetPostStepPoint()->GetMomentumDirection() - step->GetPreStepPoint()->GetMomentumDirection());
84 G4bool condition3 =
BDS::IsFinite(step->GetTotalEnergyDeposit());
86 if (condition1 || condition2 || condition3)
88 G4Track* track = step->GetTrack();
108 if (hitsVector->empty())
113 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())