FairRoot/PandaRoot
Promme/create_Lmd_HV_MAPS.C
Go to the documentation of this file.
1 // compile with
2 // g++ $(root-config --cflags --glibs) -lGeom -I${PANDAROOT}/geobase -L${PANDAROOT}/buildPanda/lib -lGeoBase create_Lmd_HV_MAPS.C -o /tmp/create_geometry -I${PANDAROOT}/lmd/LmdMC
3 // and run with
4 // /tmp/create_geometry
5 
6 #include<TROOT.h>
7 #include<FairGeoLoader.h>
8 #include<FairGeoInterface.h>
9 #include<FairGeoBuilder.h>
10 #include<FairGeoPcon.h>
11 #include<FairGeoMedia.h>
12 #include<TGeoCompositeShape.h>
13 #include<TGeoMatrix.h>
14 #include<TGeoVolume.h>
15 #include<TGeoTube.h>
16 #include<TGeoArb8.h>
17 #include<TGeoPara.h>
18 #include<TSystem.h>
19 #include<TFile.h>
20 #include<TGeoPcon.h>
21 #include<TGeoManager.h>
22 #include<TGeoTorus.h>
23 #include<TGeoSphere.h>
24 #include<TMath.h>
25 #include<TRandom.h>
26 #include<PndLmdDim.h>
27 #include<TGeoPhysicalNode.h>
28 #include<TGeoCone.h>
29 
30 #include<iostream>
31 #include<cmath>
32 #include<sstream>
33 
34 //using namespace LmdDim;
35 
36 // to check the position and dimensions
37 // one may enable a beam pipe dummy to be displayed
38 const bool show_beam_pipe_dummy = true;
39 
40 const bool include_box = false;
41 
42 int create_HV_MAPS(bool misalign = false) {
43  /*
44  // ****************************** Parameters of Detector ************************
45  //--------------------------------------------------------------------
46  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
47 
48  // Load this libraries
49  gSystem->Load("libGeoBase");
50  gSystem->Load("libParBase");
51  gSystem->Load("libBase");
52  gSystem->Load("libPndData");
53  gSystem->Load("libPassive");
54 
55 
56  TString outfile = "geo/HV_MAPS-Design.root";
57  TFile* fi = new TFile(outfile, "RECREATE");
58 
59  FairGeoLoader* geoLoad = NULL;// FairGeoLoader::Instance();//
60  if (!geoLoad){
61  cout << " creating FairGeoLoader instance " << endl;
62  geoLoad = new FairGeoLoader("TGeo", "FairGeoLoader");
63  }
64 
65  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
66  geoFace->setMediaFile("../../geometry/media_pnd.geo");
67  geoFace->readMedia();
68  geoFace->print();
69 
70  FairGeoMedia *Media = geoFace->getMedia();
71  FairGeoBuilder *geobuild = geoLoad->getGeoBuilder();
72 
73  // retrieve available media
74  std::string str_ti = "Aluminum"; // "titanium" is in Panda software not yet implemented
75  FairGeoMedium* FairMediumAir = Media->getMedium("air");
76  FairGeoMedium* FairMediumSteel = Media->getMedium("steel");
77  FairGeoMedium* FairMediumTi = Media->getMedium(str_ti.c_str()); //titanium"); not found in media_pnd.geo !
78  FairGeoMedium *FairMediumSilicon = Media->getMedium("silicon");
79  FairGeoMedium *FairMediumDiamond = Media->getMedium("HYPdiamond");
80  FairGeoMedium *FairMediumVacuum = Media->getMedium("vacuum");
81  FairGeoMedium *FairMediumKapton = Media->getMedium("kapton");
82 
83  if (!FairMediumAir || !FairMediumSteel || !FairMediumTi || !FairMediumKapton || !FairMediumSilicon || !FairMediumVacuum) {
84  std::cout << " warning: not all media found " << std::endl;
85  }
86 
87  int nmed;
88  nmed = geobuild->createMedium(FairMediumAir);
89  nmed = geobuild->createMedium(FairMediumSteel);
90  nmed = geobuild->createMedium(FairMediumTi);
91  nmed = geobuild->createMedium(FairMediumKapton);
92  nmed = geobuild->createMedium(FairMediumSilicon);
93  nmed = geobuild->createMedium(FairMediumDiamond);
94  nmed = geobuild->createMedium(FairMediumVacuum);
95 
96  TGeoManager* gGeoMan = (TGeoManager*) gROOT->FindObject("FAIRGeom");
97  if (!gGeoMan) {
98  cout << " no FAIR Geometry manager found! " << endl;
99  return;
100  }
101 
102  TGeoVolume *top = new TGeoVolumeAssembly("lmd_HV_MAPS");
103 
104  gGeoMan->SetTopVolume(top);
105  PndLmdDim& lmddim = PndLmdDim::Get_instance();
106 */
107  //--------------------------------------------------------------------
108  //gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
109 
110  // Load this libraries
111  //gSystem->Load("libGeoBase");
112  //gSystem->Load("libParBase");
113  //gSystem->Load("libBase");
114  //gSystem->Load("libPndData");
115  //gSystem->Load("libPassive");
116 
117  TString outfile= "geo/HV_MAPS-Design.root";
118  TFile* fi = new TFile(outfile,"RECREATE");
119 
120  FairGeoLoader* geoLoad = new FairGeoLoader("TGeo","FairGeoLoader");
121  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
122  geoFace->setMediaFile("../../geometry/media_pnd.geo");
123  geoFace->readMedia();
124  geoFace->print();
125 
126  FairGeoMedia *Media = geoFace->getMedia();
127  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
128 
129  FairGeoMedium *FairMediumSilicon = Media->getMedium("silicon");
130 
131  Int_t nmed=geobuild->createMedium(FairMediumSilicon);
132 
133  TGeoManager* gGeoMan = (TGeoManager*)gROOT->FindObject("FAIRGeom");
134 
135  TGeoVolume *top = new TGeoVolumeAssembly("lum");
136 
137  gGeoMan->SetTopVolume(top);
138 
140 
141  // for testing purposes
142  lmddim.Generate_rootgeom(*top, misalign);
143  //lmddim.Write_transformation_matrices("matrices.txt", false);
144  if (!misalign)
145  lmddim.Write_transformation_matrices("matrices_perfect.txt", false);
146  else
147  lmddim.Write_transformation_matrices("matrices.txt", false);
148 
149  //lmddim.Read_transformation_matrices("matrices.txt", true);
150  //lmddim.Write_transformation_matrices("matrices_aligned.txt", true);
151 
152  gGeoMan->CloseGeometry();
153  top->Write();
154  fi->Close();
155  // gGeoManager->Export(outfile);
156  gGeoMan->SetVisLevel(20);
157  top->Draw("ogl");
158  // gGeoManager->Export(outfile);
159  //gGeoMan->SetVisLevel(20);
160  //top->Draw("ogl");
161  //top->RandomPoints(100000);
162  return 0;
163 }
164 
165 #include<TApplication.h>
166 
167 int main() {
168  TApplication myapp("myapp", 0, 0);
169  create_HV_MAPS();
170  myapp.Run();
171  return 0;
172 }
int create_HV_MAPS()
int main(int argc, char **argv)
FairGeoLoader * geoLoad
FairGeoMedia * Media
TGeoManager * gGeoMan
const bool include_box
TGeoVolume * top
const bool show_beam_pipe_dummy
FairGeoBuilder * geobuild
TFile * fi
void Generate_rootgeom(TGeoVolume &mothervol, bool misaligned=false)
Definition: PndLmdDim.cxx:331
void Write_transformation_matrices(string filename, bool aligned=true, int version_number=geometry_version)
Definition: PndLmdDim.cxx:2179
static PndLmdDim & Get_instance()
Definition: PndLmdDim.cxx:242
FairGeoInterface * geoFace
TString outfile