LDMX Software
VolumeChecks.h
1#include "Framework/Exception/Exception.h"
2#include "SimCore/DetectorConstruction.h"
3#include "SimCore/SensitiveDetector.h"
4#include "SimCore/XsecBiasingOperator.h"
5
6namespace simcore {
7namespace g4user {
8namespace volumechecks {
9
22inline bool isInEcal(G4LogicalVolume* vol, const std::string& vol_to_bias) {
23 const G4String& volumeName = vol->GetName();
24 return ((volumeName.contains("Si") || volumeName.contains("W") ||
25 volumeName.contains("PCB") || volumeName.contains("strongback") ||
26 volumeName.contains("Glue") || volumeName.contains("CFMix") ||
27 volumeName.contains("Al") || volumeName.contains("C")) &&
28 volumeName.contains("volume")) ||
29 (volumeName.contains("nohole_motherboard"));
30}
31
40inline bool isInHcal(G4LogicalVolume* vol, const std::string& vol_to_bias) {
41 const G4String& volumeName = vol->GetName();
42 return ((volumeName.contains("abso") || volumeName.contains("ScintBox") ||
43 volumeName.contains("scint")) &&
44 volumeName.contains("hcal") && volumeName.contains("olume"));
45}
46
58inline bool isInEcalOld(G4LogicalVolume* vol, const std::string& vol_to_bias) {
59 const G4String& volumeName = vol->GetName();
60 return ((volumeName.contains("Si") || volumeName.contains("W")) &&
61 volumeName.contains("volume"));
62}
63
72inline bool isInTargetRegion(G4LogicalVolume* vol,
73 const std::string& vol_to_bias) {
74 auto region = vol->GetRegion();
75 return (region and region->GetName().contains("target"));
76}
77
88inline bool isInTargetOnly(G4LogicalVolume* vol,
89 const std::string& vol_to_bias) {
90 return vol->GetName().contains("target");
91}
92
105inline bool nameContains(G4LogicalVolume* vol, const std::string& vol_to_bias) {
106 return vol->GetName().contains(vol_to_bias);
107}
108
109} // namespace volumechecks
110} // namespace g4user
111} // namespace simcore
This namespace is meant to contain all the standard user actions that allow a Geant4 user to interfac...