4 #include "lcdd/core/LCDDProcessor.hh"
5 #include "lcdd/detectors/SensitiveDetector.hh"
8 #include "G4SDManager.hh"
9 #include "G4HCtable.hh"
10 #include "G4EventManager.hh"
19 G4SDManager* SDmgr = G4SDManager::GetSDMpointer();
20 G4HCtable* HCtbl = SDmgr->GetHCtable();
21 G4int num_entries = HCtbl->entries();
23 std::vector<SensitiveDetector*> sds;
25 for (G4int i = 0; i < num_entries; i++) {
27 G4String sdname = HCtbl->GetSDname(i);
29 SensitiveDetector* sd =
static_cast<SensitiveDetector*
>(G4SDManager::GetSDMpointer()->FindSensitiveDetector(sdname));
31 if (sd && std::find(sds.begin(), sds.end(), sd) == sds.end())
38 std::vector<int> hcids;
40 for (std::vector<SensitiveDetector*>::const_iterator it = sds.begin(); it != sds.end(); it++) {
41 SensitiveDetector* sd = (*it);
42 for (
int i = 0; i < sd->getNumberOfHitsCollections(); i++) {
43 hcids.push_back(sd->getHCID(i));
52 const G4Event* currEvent = G4EventManager::GetEventManager()->GetConstCurrentEvent();
54 G4HCofThisEvent* hce = currEvent->GetHCofThisEvent();
56 std::vector<std::string> hcnames;
60 G4VHitsCollection* hc = 0;
62 for (std::vector<int>::const_iterator iter = hcids.begin(); iter != hcids.end(); iter++) {
63 hc = hce->GetHC((*iter));
64 hcnames.push_back(hc->GetName());
static std::vector< std::string > getHCNames()
static std::vector< int > getHCIDs()
static std::vector< SensitiveDetector * > getSensitiveDetectors()