18#include "BDSMultiSensitiveDetectorOrdered.hh"
19#include "BDSSensitiveDetector.hh"
22#include "G4VSensitiveDetector.hh"
24BDSMultiSensitiveDetectorOrdered::BDSMultiSensitiveDetectorOrdered(
const G4String& name):
25 G4VSensitiveDetector(name)
28BDSMultiSensitiveDetectorOrdered::~BDSMultiSensitiveDetectorOrdered()
34 G4VSensitiveDetector(rhs),
35 sensitiveDetectors(rhs.sensitiveDetectors)
43 G4VSensitiveDetector::operator=(
static_cast<const G4VSensitiveDetector&
>(rhs));
44 sensitiveDetectors = rhs.sensitiveDetectors;
49void BDSMultiSensitiveDetectorOrdered::clear()
51 for (
auto sd : sensitiveDetectors)
55void BDSMultiSensitiveDetectorOrdered::DrawAll()
57 for (
auto sd : sensitiveDetectors)
61void BDSMultiSensitiveDetectorOrdered::PrintAll()
63 for (
auto sd : sensitiveDetectors)
67G4bool BDSMultiSensitiveDetectorOrdered::ProcessHits(G4Step* step,
70 std::vector<G4VHit*> hits;
72 for (
auto sd : sensitiveDetectors)
75 G4bool sdStored = sd->HitOrdered(step, hits);
77 {hits.push_back(sd->last());}
79 {hits.push_back(
nullptr);}
85G4VSensitiveDetector* BDSMultiSensitiveDetectorOrdered::Clone()
const
88 for (
auto sd : sensitiveDetectors )
90 G4VSensitiveDetector* newSD = sd->Clone();
92 newInst->AddSD(newSDBDS);
Modified G4MultiSensitiveDetector that retains order and passes hits in sequence.
Virtual class to define interface for ordered multi-sensitive detector.
const char * GetName(int)
Name of element.