File indexing completed on 2025-08-05 08:18:15
0001 #ifndef G4MVTX_PHG4MVTXSUPPORT_H
0002 #define G4MVTX_PHG4MVTXSUPPORT_H
0003
0004 #include "PHG4MvtxDefs.h"
0005
0006 #include <array>
0007 #include <string>
0008
0009 class G4AssemblyVolume;
0010 class G4LogicalVolume;
0011 class PHG4MvtxCable;
0012 class PHG4MvtxDetector;
0013 class PHG4MvtxDisplayAction;
0014
0015 class PHG4MvtxSupport
0016 {
0017 public:
0018 PHG4MvtxSupport(PHG4MvtxDetector *detector, PHG4MvtxDisplayAction *dispAct, bool overlapCheck);
0019
0020 virtual ~PHG4MvtxSupport();
0021
0022 void ConstructMvtxSupport(G4LogicalVolume *&lv);
0023
0024 private:
0025 PHG4MvtxDetector *m_Detector{nullptr};
0026 PHG4MvtxDisplayAction *m_DisplayAction{nullptr};
0027
0028 void CreateMvtxSupportMaterials();
0029
0030 void CreateEndWheelsSideN(G4AssemblyVolume *&av);
0031 void CreateEndWheelsSideS(G4AssemblyVolume *&av);
0032 void CreateConeLayers(G4AssemblyVolume *&av);
0033 void CreateCYSS(G4AssemblyVolume *&av);
0034 void CreateServiceBarrel(G4AssemblyVolume *&av);
0035
0036 void GetEndWheelSideN(const int lay, G4AssemblyVolume *&endWheel);
0037 void GetEndWheelSideS(const int lay, G4AssemblyVolume *&endWheel);
0038 void GetConeVolume(int lay, G4AssemblyVolume *&av);
0039
0040 void CreateCable(PHG4MvtxCable *object, G4AssemblyVolume &assemblyVolume);
0041 void CreateCableBundle(G4AssemblyVolume &assemblyVolume, const std::string &superName,
0042 bool enableSignal, bool enableCooling, bool enablePower,
0043 double x1, double x2, double y1, double y2, double z1, double z2);
0044
0045 G4AssemblyVolume *buildBarrelCable();
0046 G4AssemblyVolume *buildLayerCables(const int &lay);
0047
0048 G4AssemblyVolume *m_avSupport{nullptr};
0049 G4AssemblyVolume *m_avBarrelCable{nullptr};
0050 std::array<G4AssemblyVolume *, PHG4MvtxDefs::kNLayers> m_avLayerCable{nullptr, nullptr, nullptr};
0051
0052 bool m_overlapCheck{false};
0053 };
0054
0055 #endif