#include "GeneEventAction.hh" #include "G4Event.hh" #include "G4EventManager.hh" #include "G4HCofThisEvent.hh" #include "G4SDManager.hh" #include "G4SystemOfUnits.hh" #include "G4Trajectory.hh" #include "G4TrajectoryContainer.hh" #include "G4UImanager.hh" #include "G4UnitsTable.hh" #include "G4VHitsCollection.hh" #include "G4VVisManager.hh" #include "G4ios.hh" #include "GeneAnalysisManager.hh" #include "GeneHe3detHit.hh" #include "Randomize.hh" #define ANALYSIS_USE //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... GeneEventAction::GeneEventAction() : GeneHe3detSDCollID(-1), drawFlag("non") {} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... GeneEventAction::~GeneEventAction() {} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... void GeneEventAction::BeginOfEventAction(const G4Event* evt) { G4int evtNb = evt->GetEventID(); if (evtNb % 1000 == 0) G4cout << "Event No." << evtNb << G4endl; G4SDManager* SDman = G4SDManager::GetSDMpointer(); if (GeneHe3detSDCollID == -1) { GeneHe3detSDCollID = SDman->GetCollectionID("GeneHe3detHitCollection"); } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... void GeneEventAction::EndOfEventAction(const G4Event* evt) { // G4int event_id = evt->GetEventID(); G4HCofThisEvent* HCE = evt->GetHCofThisEvent(); GeneHe3detHitsCollection* GeneHe3detHC = 0; GeneAnalysisManager* analysisManager = GeneAnalysisManager::GetInstance(); if (HCE) { GeneHe3detHC = (GeneHe3detHitsCollection*)(HCE->GetHC(GeneHe3detSDCollID)); G4double ede = 0.; G4double Etot[24]; G4int Ndet[24]; G4int cpNo; for (G4int i = 0; i < 24; i++) { Etot[i] = 0.; Ndet[i] = -1; } // GeneHe3det event if (GeneHe3detHC) { G4int n_hits = GeneHe3detHC->entries(); if (n_hits > 0) { for (G4int i = 0; i < n_hits; i++) { cpNo = (*GeneHe3detHC)[i]->GetCpNo(); ede = (*GeneHe3detHC)[i]->GetEdep(); Etot[cpNo - 300] += ede; } cpNo = 0; for (G4int i = 0; i < 24; i++) { if (Etot[i] > 0) { Ndet[cpNo] = i; Etot[cpNo] = Etot[i]; cpNo++; } } analysisManager->FillDetData(cpNo, Etot, Ndet); // analysisManager->EventNo(); // evtNo++ only for detected events #ifdef ANALYSIS_USE analysisManager->FillTree(); #endif } } } // G4cout<<"--> EndOfEventAction in EventAction"<GetTrajectoryContainer(); G4int n_trajectories = 0; if (trajContainer) n_trajectories = trajContainer->entries(); for (G4int i = 0; i < n_trajectories; i++) { G4Trajectory* trj = (G4Trajectory*)(*trajContainer)[i]; if (trj->GetParticleName() != "opticalphoton") trj->DrawTrajectory(); } G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); } }