74{
76 G4cout << G4endl;
77 G4cout << "******************************************";
78 G4cout << G4endl;
79 G4cout <<
"Internal Real Elapsed Time is: " <<
fTimerIntern.GetRealElapsed();
80 G4cout << G4endl;
81 G4cout <<
"Internal System Elapsed Time: " <<
fTimerIntern.GetSystemElapsed();
82 G4cout << G4endl;
83 G4cout <<
"Internal GetUserElapsed Time: " <<
fTimerIntern.GetUserElapsed();
84 G4cout << G4endl;
85 G4cout << "******************************************" << G4endl;
87 G4cout <<
" ------ ExGflashEventAction::End of event nr. " <<
fNevent <<
" -----" << G4endl;
88
95 G4double totE = 0;
96
98 if (THC) {
99
100 int n_hit = THC->entries();
101 G4cout << " " << n_hit << " hits are stored in ExGflashHitsCollection " << G4endl;
103
104 G4ThreeVector vtx = pvertex->GetPosition();
106
107 G4ThreeVector mom = pparticle->GetMomentum() / pparticle->GetMomentum().mag();
108
109
110 G4double energyincrystal[100];
111 G4int hitsincrystal[100];
112 for (int i = 0; i < 100; i++)
113 energyincrystal[i] = 0.;
114 for (int i = 0; i < 100; i++)
115 hitsincrystal[i] = 0.;
116
117
118
119 for (int i = 0; i < n_hit; i++) {
120 G4double estep = (*THC)[i]->GetEdep() / GeV;
121 if (estep > 0.0) {
122 totE += (*THC)[i]->GetEdep() / GeV;
123 G4int num = (*THC)[i]->GetCrystalNum();
124
125 energyincrystal[num] += (*THC)[i]->GetEdep() / GeV;
126 hitsincrystal[num]++;
127
128
129
130
131
132 G4ThreeVector hitpos = (*THC)[i]->GetPos();
133 G4ThreeVector l(hitpos.x(), hitpos.y(), hitpos.z());
134
135 l = l - vtx;
136
137 G4ThreeVector longitudinal = l;
138
139 G4ThreeVector radial = vtx.cross(l);
140 }
141 }
142 G4double max = 0;
143 G4int index = 0;
144
145 for (int i = 0; i < 100; i++) {
146
147 if (max < energyincrystal[i]) {
148 max = energyincrystal[i];
149 index = i;
150 }
151 }
152
153
154
155 G4double e3x3 = energyincrystal[index] + energyincrystal[index + 1] + energyincrystal[index - 1]
156 + energyincrystal[index - 10] + energyincrystal[index - 9]
157 + energyincrystal[index - 11] + energyincrystal[index + 10]
158 + energyincrystal[index + 11] + energyincrystal[index + 9];
159
160
161 G4double e5x5 =
162 energyincrystal[index] + energyincrystal[index + 1] + energyincrystal[index - 1]
163 + energyincrystal[index + 2] + energyincrystal[index - 2] + energyincrystal[index - 10]
164 + energyincrystal[index - 9] + energyincrystal[index - 11] + energyincrystal[index - 8]
165 + energyincrystal[index - 12] + energyincrystal[index + 10] + energyincrystal[index + 11]
166 + energyincrystal[index + 9] + energyincrystal[index + 12] + energyincrystal[index + 8];
167
168
169 G4int num3x3 = hitsincrystal[index] + hitsincrystal[index + 1] + hitsincrystal[index - 1]
170 + hitsincrystal[index - 10] + hitsincrystal[index - 9]
171 + hitsincrystal[index - 11] + hitsincrystal[index + 10]
172 + hitsincrystal[index + 11] + hitsincrystal[index + 9];
173
174
175 G4int num5x5 = hitsincrystal[index] + hitsincrystal[index + 1] + hitsincrystal[index - 1]
176 + hitsincrystal[index + 2] + hitsincrystal[index - 2] + hitsincrystal[index - 10]
177 + hitsincrystal[index - 9] + hitsincrystal[index - 11] + hitsincrystal[index - 8]
178 + hitsincrystal[index - 12] + hitsincrystal[index + 10]
179 + hitsincrystal[index + 11] + hitsincrystal[index + 9]
180 + hitsincrystal[index + 12] + hitsincrystal[index + 8];
181
182 G4cout << " e1 " << energyincrystal[index] << " e3x3 " << e3x3 << " GeV e5x5 " << e5x5
183 << G4endl;
184
185 G4cout << " num1 " << hitsincrystal[index] << " num3x3 " << num3x3 << " num5x5 "
186 << num5x5 << G4endl;
187 }
188
189 G4cout << " Total energy deposited in the calorimeter: " << totE << " (GeV)" << G4endl;
191 G4int n_trajectories = 0;
192 if (trajectoryContainer) {
193 n_trajectories = trajectoryContainer->entries();
194 }
195 G4cout << " " << n_trajectories << " trajectories stored in this event." << G4endl;
196}
G4int fCalorimeterCollectionId