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, unsigned int current_navigation_path_index) const;
49 
50  public:
51  PndLmdGeometryFactory(const boost::property_tree::ptree &geometry_property_tree_);
52  virtual ~PndLmdGeometryFactory();
53 
54  void init(FairGeoLoader *geoLoad);
55 
56  TGeoVolumeAssembly *generateLmdGeometry() const;
57 };
58 
59 #endif /* LMD_LMDMC_PNDLMDGEOMETRYFACTORY_H_ */
virtual ~PndLmdGeometryFactory()
PndLmdGeometryFactory(const boost::property_tree::ptree &geometry_property_tree_)
void init(FairGeoLoader *geoLoad)
TGeoVolumeAssembly * generateLmdGeometry() const
std::pair< std::string, bool > StringBoolPair