Loading...
Searching...
No Matches
RE01EventAction.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26/// \file runAndEvent/RE01/src/RE01EventAction.cc
27/// \brief Implementation of the RE01EventAction class
28//
29//
30
31#include "RE01EventAction.hh"
32#include "RE01TrackerHit.hh"
33#include "RE01CalorimeterHit.hh"
34
35#include "G4Event.hh"
36#include "G4EventManager.hh"
37#include "G4HCofThisEvent.hh"
38#include "G4VHitsCollection.hh"
39#include "G4TrajectoryContainer.hh"
40#include "G4VVisManager.hh"
41#include "G4SDManager.hh"
42#include "G4UImanager.hh"
43#include "G4ios.hh"
44#include "RE01Trajectory.hh"
45#include "G4PrimaryVertex.hh"
46#include "G4PrimaryParticle.hh"
47#include "G4SystemOfUnits.hh"
48
49//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
52 fTrackerCollID(-1),fCalorimeterCollID(-1)
53{;}
54
55//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
58
59//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
61{
62 G4SDManager * SDman = G4SDManager::GetSDMpointer();
64 {
65 G4String colNam;
66 fTrackerCollID = SDman->GetCollectionID(colNam="trackerCollection");
67 fCalorimeterCollID = SDman->GetCollectionID(colNam="calCollection");
68 }
69}
70
71//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
73{
74 G4cout << ">>> Summary of Event " << evt->GetEventID() << G4endl;
75 if(evt->GetNumberOfPrimaryVertex()==0)
76 {
77 G4cout << "Event is empty." << G4endl;
78 return;
79 }
80
81 if(fTrackerCollID<0||fCalorimeterCollID<0) return;
82
83 G4HCofThisEvent * HCE = evt->GetHCofThisEvent();
86 if(HCE)
87 {
88 THC = (RE01TrackerHitsCollection*)(HCE->GetHC(fTrackerCollID));
90 }
91
92 if(THC)
93 {
94 int n_hit = THC->entries();
95 G4cout << G4endl;
96 G4cout << "Tracker hits " <<
97 "--------------------------------------------------------------"
98 << G4endl;
99 G4cout << n_hit << " hits are stored in RE01TrackerHitsCollection."
100 << G4endl;
101 if(fpEventManager->GetVerboseLevel()>0)
102 {
103 G4cout << "List of hits in tracker" << G4endl;
104 for(int i=0;i<n_hit;i++)
105 { (*THC)[i]->Print(); }
106 }
107 }
108 if(CHC)
109 {
110 int n_hit = CHC->entries();
111 G4cout << G4endl;
112 G4cout << "Calorimeter hits "<<
113 "--------------------------------------------------------------"
114 << G4endl;
115 G4cout << n_hit << " hits are stored in RE01CalorimeterHitsCollection."
116 << G4endl;
117 G4double totE = 0;
118 for(int i=0;i<n_hit;i++)
119 { totE += (*CHC)[i]->GetEdep(); }
120 G4cout << " Total energy deposition in calorimeter : "
121 << totE / GeV << " (GeV)" << G4endl;
122 }
123
124 // get number of stored trajectories
125 G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer();
126 G4int n_trajectories = 0;
127 if (trajectoryContainer) n_trajectories = trajectoryContainer->entries();
128 // extract the trajectories and print them out
129 G4cout << G4endl;
130 G4cout << "Trajectories in tracker "<<
131 "--------------------------------------------------------------"
132 << G4endl;
133 if(fpEventManager->GetVerboseLevel()>0)
134 {
135 for(G4int i=0; i<n_trajectories; i++)
136 {
137 RE01Trajectory* trj =
138 (RE01Trajectory*)((*(evt->GetTrajectoryContainer()))[i]);
139 trj->ShowTrajectory();
140 }
141 }
142
143 G4cout << G4endl;
144 G4cout << "Primary particles "<<
145 "--------------------------------------------------------------"
146 << G4endl;
147 G4int n_vertex = evt->GetNumberOfPrimaryVertex();
148 for(G4int iv=0;iv<n_vertex;iv++)
149 {
150 G4PrimaryVertex* pv = evt->GetPrimaryVertex(iv);
151 G4cout << G4endl;
152 G4cout << "Primary vertex "
153 << G4ThreeVector(pv->GetX0(),pv->GetY0(),pv->GetZ0())
154 << " at t = " << (pv->GetT0())/ns << " [ns]" << G4endl;
155 if(fpEventManager->GetVerboseLevel()>0)
156 {
157 G4PrimaryParticle* pp = pv->GetPrimary();
158 while(pp)
159 {
160 PrintPrimary(pp,0);
161 pp = pp->GetNext();
162 }
163 }
164 }
165}
166
167//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
169{
170 for(G4int ii=0;ii<=ind;ii++)
171 { G4cout << " "; }
172 G4cout << "==PDGcode " << pp->GetPDGcode() << " ";
173 if(pp->GetG4code()!=0)
174 { G4cout << "(" << pp->GetG4code()->GetParticleName() << ")"; }
175 else
176 { G4cout << "is not defined in G4"; }
177 G4cout << " " << pp->GetMomentum()/GeV << " [GeV] ";
178 if(pp->GetTrackID()<0)
179 { G4cout << G4endl; }
180 else
181 { G4cout << ">>> G4Track ID " << pp->GetTrackID() << G4endl; }
182
183 G4PrimaryParticle* daughter = pp->GetDaughter();
184 while(daughter)
185 {
186 PrintPrimary(daughter,ind+1);
187 daughter = daughter->GetNext();
188 }
189}
190
191
Definition of the RE01CalorimeterHit class.
G4THitsCollection< RE01CalorimeterHit > RE01CalorimeterHitsCollection
Definition of the RE01EventAction class.
Definition of the RE01TrackerHit class.
G4THitsCollection< RE01TrackerHit > RE01TrackerHitsCollection
Definition of the RE01Trajectory class.
virtual void EndOfEventAction(const G4Event *)
void PrintPrimary(G4PrimaryParticle *pp, G4int ind)
virtual void BeginOfEventAction(const G4Event *)
virtual ~RE01EventAction()
virtual void ShowTrajectory(std::ostream &os=G4cout) const

Applications | User Support | Publications | Collaboration