LDMX Software
VolumeChecks.h
1#pragma once
2
3#include "Framework/Exception/Exception.h"
4#include "G4LogicalVolume.hh"
5#include "G4LogicalVolumeStore.hh"
6#include "G4Region.hh"
7#include "G4String.hh"
8
9namespace simcore {
10namespace g4user {
11namespace volumechecks {
12
25inline bool isInEcal(G4LogicalVolume* vol, const std::string& vol_to_bias) {
26 const G4String& volume_name = vol->GetName();
27 return ((volume_name.contains("Si") || volume_name.contains("W") ||
28 volume_name.contains("PCB") || volume_name.contains("strongback") ||
29 volume_name.contains("Glue") || volume_name.contains("CFMix") ||
30 volume_name.contains("Al") || volume_name.contains("C")) &&
31 volume_name.contains("volume")) ||
32 (volume_name.contains("nohole_motherboard"));
33}
34
43inline bool isInHcal(G4LogicalVolume* vol, const std::string& vol_to_bias) {
44 const G4String& volume_name = vol->GetName();
45 return ((volume_name.contains("abso") || volume_name.contains("ScintBox") ||
46 volume_name.contains("scint")) &&
47 volume_name.contains("hcal") && volume_name.contains("olume"));
48}
49
61inline bool isInEcalOld(G4LogicalVolume* vol, const std::string& vol_to_bias) {
62 const G4String& volume_name = vol->GetName();
63 return ((volume_name.contains("Si") || volume_name.contains("W")) &&
64 volume_name.contains("volume"));
65}
66
75inline bool isInTargetRegion(G4LogicalVolume* vol,
76 const std::string& vol_to_bias) {
77 auto region = vol->GetRegion();
78 return (region and region->GetName().contains("target"));
79}
80
91inline bool isInTargetOnly(G4LogicalVolume* vol,
92 const std::string& vol_to_bias) {
93 return vol->GetName().contains("target");
94}
95
108inline bool nameContains(G4LogicalVolume* vol, const std::string& vol_to_bias) {
109 return vol->GetName().contains(vol_to_bias);
110}
111
112} // namespace volumechecks
113} // namespace g4user
114} // 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 ...