FairRoot/PandaRoot
createLmdGeometry.C
Go to the documentation of this file.
1 #include <iostream>
2 
4 
5 #include "FairGeoLoader.h"
6 #include "FairGeoInterface.h"
7 #include "FairGeoBuilder.h"
8 #include "FairGeoMedia.h"
9 
10 #include "TFile.h"
11 #include "TROOT.h"
12 #include "TGeoManager.h"
13 #include "TGeoVolume.h"
14 
15 #include <boost/property_tree/json_parser.hpp>
16 
17 using boost::property_tree::ptree;
18 
19 void createLmdGeometry(std::string output_filename = "Luminosity-Detector.root",
20  std::string geo_params_config_file_url = "../lmd-geo-params.json") {
21  // load parameters
22  ptree geo_property_tree;
23  read_json(geo_params_config_file_url, geo_property_tree);
24 
25  FairGeoLoader* geoLoad = new FairGeoLoader("TGeo", "FairGeoLoader");
26  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
27  std::string pandaroot_dir(getenv("VMCWORKDIR"));
28  geoFace->setMediaFile((pandaroot_dir + "/geometry/media_pnd.geo").c_str());
29  geoFace->readMedia();
30  FairGeoMedia *Media = geoFace->getMedia();
31  FairGeoBuilder *geobuild = geoLoad->getGeoBuilder();
32 
33  TFile file(output_filename.c_str(), "RECREATE");
34 
35  TGeoManager* gGeoMan = (TGeoManager*) gROOT->FindObject("FAIRGeom");
36 
37  PndLmdGeometryFactory lmd_geo_factory(geo_property_tree);
38  lmd_geo_factory.init(geoLoad);
39  TGeoVolumeAssembly *top = lmd_geo_factory.generateLmdGeometry();
40 
41  gGeoMan->CheckOverlaps(0.0001); // 1mu
42  gGeoMan->PrintOverlaps();
43 
44  top->Write();
45  file.Close();
46 
47  gGeoMan->SetVisLevel(20);
48  top->Draw("ogle");
49 
50 }
FairGeoLoader * geoLoad
FairGeoMedia * Media
TFile * file
TGeoManager * gGeoMan
std::string pandaroot_dir(getenv("VMCWORKDIR"))
void createLmdGeometry(std::string output_filename="Luminosity-Detector.root", std::string geo_params_config_file_url="../lmd-geo-params.json")
TGeoVolume * top
void init(FairGeoLoader *geoLoad)
FairGeoBuilder * geobuild
TGeoVolumeAssembly * generateLmdGeometry() const
FairGeoInterface * geoFace