FairRoot/PandaRoot
PndLmdGeometryFactory.h
Go to the documentation of this file.
1 /*
2  * PndLmdGeometryFactory.h
3  *
4  * Created on: Nov 6, 2017
5  * Author: steve
6  */
7 
8 #ifndef LMD_LMDMC_PNDLMDGEOMETRYFACTORY_H_
9 #define LMD_LMDMC_PNDLMDGEOMETRYFACTORY_H_
10 
11 #include <vector>
12 
13 #include <boost/property_tree/ptree.hpp>
14 
15 class TGeoManager;
16 class TGeoVolume;
17 class TGeoVolumeAssembly;
18 class FairGeoLoader;
19 class TGeoNode;
20 
21 typedef std::pair<std::string, bool> StringBoolPair;
22 
24  boost::property_tree::ptree geometry_property_tree;
25  std::vector<StringBoolPair> navigation_paths;
26  TGeoManager* gGeoMan;
27 
28  void retrieveMaterial(FairGeoLoader* geoLoad);
29 
30  TGeoVolume* generateLmdBox() const;
31  TGeoVolume* generateBeamPipe() const;
32 
33  TGeoVolume* generateDetectorHalf(bool is_bottom_half) const;
34  TGeoVolume* generateDetectorHalfPlane(bool is_bottom_half) const;
35  TGeoVolume* generateAluminumCoolingStructure() const;
36  TGeoVolume* generatePCB() const;
37  TGeoVolume* generatePCBMountScrew() const;
38  TGeoVolume* generatePCBCopperPlug() const;
39  TGeoVolume* generatePCBBacksideElectronics() const;
40  TGeoVolume* generateSensorModule() const;
41  TGeoVolume* generateCVDCoolingDisc() const;
42  TGeoVolume* generateSensor() const;
43 
44  TGeoVolume* generateBoxVacuum(const TGeoVolume* lmd_vol) const;
45  void recursiveNodeSubtraction(std::stringstream& ss, TGeoNode* node) const;
46 
47  void makeNodesAlignable() const;
48  void makeNodesAlignable(TGeoNode* node,
49  unsigned int current_navigation_path_index) const;
50 
51  public:
53  const boost::property_tree::ptree& geometry_property_tree_);
54  virtual ~PndLmdGeometryFactory();
55 
56  void init(FairGeoLoader* geoLoad);
57 
58  TGeoVolumeAssembly* generateLmdGeometry() const;
59 };
60 
61 #endif /* LMD_LMDMC_PNDLMDGEOMETRYFACTORY_H_ */
PndLmdGeometryFactory(const boost::property_tree::ptree &geometry_property_tree_)
void recursiveNodeSubtraction(std::stringstream &ss, TGeoNode *node) const
TGeoVolume * generateLmdBox() const
TGeoVolume * generateBeamPipe() const
FairGeoLoader * geoLoad
TGeoVolume * generateCVDCoolingDisc() const
TGeoVolume * generateSensor() const
TGeoVolume * generateAluminumCoolingStructure() const
void init(FairGeoLoader *geoLoad)
TGeoVolumeAssembly * generateLmdGeometry() const
TGeoVolume * generateSensorModule() const
TGeoVolume * generatePCBBacksideElectronics() const
TGeoVolume * generatePCBMountScrew() const
void retrieveMaterial(FairGeoLoader *geoLoad)
TGeoVolume * generateDetectorHalf(bool is_bottom_half) const
std::vector< StringBoolPair > navigation_paths
TGeoVolume * generatePCBCopperPlug() const
TGeoVolume * generateBoxVacuum(const TGeoVolume *lmd_vol) const
std::pair< std::string, bool > StringBoolPair
boost::property_tree::ptree geometry_property_tree
TGeoVolume * generateDetectorHalfPlane(bool is_bottom_half) const
TGeoVolume * generatePCB() const