171 {
172 bool hasCalc=true;
174 if (emptydet) {
175 G4ThreeVector
pos = aStep->GetPostStepPoint()->GetPosition();
176 const G4TouchableHistory* theTouchable = static_cast<const G4TouchableHistory*>(aStep->GetPostStepPoint()->GetTouchable());
177 int depth = theTouchable->GetHistoryDepth();
178 bool correct_volume = false;
180 correct_volume = true;
181 }
182 G4VPhysicalVolume* rootVol = theTouchable->GetVolume(
depth - 1);
183 int curdepth = 0;
187 G4VPhysicalVolume* cur_volume = theTouchable->GetVolume(curdepth);
188 G4LogicalVolume* cur_log_volume = cur_volume->GetLogicalVolume();
189
190 do {
191 if ((cur_log_volume->GetName() == "LArMgr::LAr::FCAL::Module1::Absorber") ||
192 (cur_log_volume->GetName() == "LArMgr::LAr::FCAL::Module2::Absorber") ||
193 (cur_log_volume->GetName() == "LArMgr::LAr::EMEC::Pos::OuterWheel") ||
194 (cur_log_volume->GetName() == "LArMgr::LAr::EMEC::Neg::OuterWheel") ||
195 (cur_log_volume->GetName() == "LArMgr::LAr::EMEC::Pos::InnerWheel") ||
196 (cur_log_volume->GetName() == "LArMgr::LAr::EMEC::Neg::InnerWheel") ||
197 (cur_log_volume->GetName() == "LArMgr::LAr::EMB::STAC")) {
198 correct_volume = true;
199 }
200 if (!correct_volume) {
201 curdepth++;
204 cur_volume = theTouchable->GetVolume(curdepth);
205 cur_log_volume = cur_volume->GetLogicalVolume();
206 }
207 }
while ((!correct_volume) && (cur_volume != rootVol) && (curdepth < (
depth-1)));
208
210
211 if (cur_log_volume->GetName() == "LArMgr::LAr::FCAL::Module1::Absorber") {
212
215 } else if (cur_log_volume->GetName() == "LArMgr::LAr::FCAL::Module2::Absorber") {
216
219 } else if ((cur_log_volume->GetName() == "LArMgr::LAr::EMEC::Pos::InnerWheel") ||
220 (cur_log_volume->GetName() == "LArMgr::LAr::EMEC::Neg::InnerWheel")) {
221
224 } else if ((cur_log_volume->GetName() == "LArMgr::LAr::EMEC::Pos::OuterWheel") ||
225 (cur_log_volume->GetName() == "LArMgr::LAr::EMEC::Neg::OuterWheel")) {
226
229 } else if (cur_log_volume->GetName() == "LArMgr::LAr::EMB::STAC") {
230
233 } else {
234
235
236 hasCalc=false;
237 }
238 }
239
240 if (aStep->GetTotalEnergyDeposit()>0) {
241
242 if (!hasCalc) {
243 m_eventSteps->invalid_energy += aStep->GetTotalEnergyDeposit();
244 return;
245 }
246
247
248
249 G4ThreeVector pos1=aStep->GetPreStepPoint()->GetPosition();
250 G4ThreeVector pos2=aStep->GetPostStepPoint()->GetPosition();
251
252
253 G4ThreeVector
pos = 0.5*(pos1+pos2);
254
255 G4ThreeVector prepos = pos1;
258 m_eventSteps->invalid_energy += aStep->GetTotalEnergyDeposit();
259 return;
260 }
261
262 G4VPhysicalVolume* pCurrentVolume = aStep->GetPreStepPoint()->GetPhysicalVolume();
263 if (!pCurrentVolume->GetLogicalVolume()->GetSensitiveDetector()){
264 return;
265 }
266
268 std::vector<LArHitData>
results;
270 {
271 for (const auto& larhit: results)
272 {
274 }
275 }
276 else
277 {
278 G4cout << "Error: Hit not processed by calculator!" << G4endl;
279 return;
280 }
281
282
284 return;
285 }
286
287 ShowerLib::StepInfo* theInfo = new ShowerLib::StepInfo();
288
290
291#ifdef _myDEBUG_
292 G4cout<<
" TAGINFO: "<<
et <<
" "<<aStep->GetTotalEnergyDeposit()<< G4endl;
293#endif
294
295 theInfo->
setTime(aStep->GetPreStepPoint()->GetGlobalTime());
296
298
300
301 } else {
302#ifdef _myDEBUG_
303 G4cout << "DEBUG: step " << aStep->GetTotalEnergyDeposit() << G4endl;
304#endif
305 }
306 }
float et(const xAOD::jFexSRJetRoI *j)
void setTime(const double t)
set time
void setP(const CLHEP::Hep3Vector &p)
set position
void setE(const double t)
set depoisted energy
std::string depth
tag string for intendation