LDMX Software
VolumeChecks.h
1#pragma once
2
3#include "G4LogicalVolume.hh"
4#include "G4Region.hh"
5#include "G4String.hh"
6
7namespace simcore {
8namespace g4user {
9namespace volumechecks {
10
23inline bool isInEcal(G4LogicalVolume* vol, const std::string& vol_to_bias) {
24 const G4String& volume_name = vol->GetName();
25 return ((volume_name.contains("Si") || volume_name.contains("W") ||
26 volume_name.contains("PCB") || volume_name.contains("strongback") ||
27 volume_name.contains("Glue") || volume_name.contains("CFMix") ||
28 volume_name.contains("Al") || volume_name.contains("C")) &&
29 volume_name.contains("volume")) ||
30 (volume_name.contains("nohole_motherboard"));
31}
32
41inline bool isInHcal(G4LogicalVolume* vol, const std::string& vol_to_bias) {
42 const G4String& volume_name = vol->GetName();
43 return ((volume_name.contains("abso") || volume_name.contains("ScintBox") ||
44 volume_name.contains("scint")) &&
45 volume_name.contains("hcal") && volume_name.contains("olume"));
46}
47
59inline bool isInEcalOld(G4LogicalVolume* vol, const std::string& vol_to_bias) {
60 const G4String& volume_name = vol->GetName();
61 return ((volume_name.contains("Si") || volume_name.contains("W")) &&
62 volume_name.contains("volume"));
63}
64
73inline bool isInTargetRegion(G4LogicalVolume* vol,
74 const std::string& vol_to_bias) {
75 auto region = vol->GetRegion();
76 return (region and region->GetName().contains("target"));
77}
78
89inline bool isInTargetOnly(G4LogicalVolume* vol,
90 const std::string& vol_to_bias) {
91 return vol->GetName().contains("target");
92}
93
106inline bool nameContains(G4LogicalVolume* vol, const std::string& vol_to_bias) {
107 return vol->GetName().contains(vol_to_bias);
108}
109
110} // namespace volumechecks
111} // namespace g4user
112} // namespace simcore
This namespace is meant to contain all the standard user actions that allow a Geant4 user to interfac...
Dynamically loadable photonuclear models either from SimCore or external libraries implementing this ...