FairRoot/PandaRoot
hypGe_GeoBuilder_template.C
Go to the documentation of this file.
1 #include "TGeoManager.h"
2 double Pi = TMath::Pi();
3 
4 
5 
7 {
8 
9  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
10 
11  // Load this libraries
12  gSystem->Load("libGeoBase");
13  gSystem->Load("libParBase");
14  gSystem->Load("libBase");
15  gSystem->Load("libPndData");
16  gSystem->Load("libPassive");
17  gSystem->Load("libHypGe");
18 
19  TString outfile= "testgeo.root";
20 
21  TFile* fi = new TFile(outfile,"RECREATE");
22 
23  FairGeoLoader* geoLoad = new FairGeoLoader("TGeo","FairGeoLoader");
24  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
25  geoFace->setMediaFile("../../../../geometry/media_pnd.geo");
26  geoFace->readMedia();
27  //geoFace->print();
28 
29  FairGeoMedia *Media = geoFace->getMedia();
30  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
31 
32  FairGeoMedium *medGe = Media->getMedium("germanium");
33  Int_t nmedGe=geobuild->createMedium(medGe);
34 
35 
36  FairGeoMedium *medcap = Media->getMedium("HYPaluminium");
37  Int_t nmedcap=geobuild->createMedium(medcap);
38 
39  TGeoMedium *Ge = gGeoManager->GetMedium("germanium");
40 
41 
42  TGeoMedium *Al = gGeoManager->GetMedium("HYPaluminium");
43 
44 
45 
46  TGeoManager *geom = (TGeoManager*)gROOT->FindObject("FAIRGeom");
47  TGeoVolume *top = new TGeoVolumeAssembly("hpGe");
48  TGeoVolume *Realtop = new TGeoVolumeAssembly("Realtop");
49 
50 //cout<<" geom "<<geom<<endl;
51  geom->SetTopVolume(top);
52 
53 
55  MBP -> PlaceBeamPipe(Realtop);
56 
58  MCTF -> PlaceCTFrame(Realtop);
59 
60  Int_t CrystalNumber = 1;
61  cout << "CrystalNumber: " << CrystalNumber << endl;
62  PndGeoHypGeDoubleCluster *DoubleCluster = new PndGeoHypGeDoubleCluster(Ge,Al,1);
63  //cout << "ClusterNumber 1: " << DoubleCluster->GetClusterNumber()<<endl;
64 
65  //DoubleCluster ->PlaceCluster(Realtop, 0,30,30,-30,0,&CrystalNumber);
66 
67  cout << "CrystalNumber: " << CrystalNumber << endl;
68  //DoubleCluster ->PlaceCluster(Realtop, 0,30,30,-60,0,&CrystalNumber);
69 
70  cout << "CrystalNumber: " << CrystalNumber << endl;
71  PndGeoHypGeTripleCluster *TripleCluster = new PndGeoHypGeTripleCluster(Ge,Al,DoubleCluster->GetClusterNumber());
72  TripleCluster ->PlaceCluster(Realtop, 0,30,30,30,0,&CrystalNumber);
73  cout << "CrystalNumber: " << CrystalNumber << endl;
74  //TripleCluster ->PlaceCluster(Realtop, 0,30,30,60,0,&CrystalNumber);
75  cout << "CrystalNumber: " << CrystalNumber << endl;
76  //TripleCluster ->PlaceCluster(Realtop, 0,30,30,90,0,&CrystalNumber);
77  cout << "CrystalNumber: " << CrystalNumber << endl;
78 
79  //PndGeoHypGeTripleCluster *TripleCluster2 = new PndGeoHypGeTripleCluster(Ge,Al,1);
80  //TripleCluster2 ->PlaceCluster(Realtop, new TGeoTranslation(-20,0,0));
81  top->AddNode(Realtop,0);
82 
83  Realtop->PrintNodes();
84  geom->CloseGeometry();
85  cout << "# of Nodes: " << Realtop->CountNodes(10,1) << endl;
86  //TripleCluster->PrintNodes(1);
87  top->Write();
88  fi->Close();
89 
90  //Realtop->Browse(new TBrowser);
91  //c1 = new TCanvas("c1","hypGe",800,600);Realtop->Draw("");// Realtop->Raytrace();
92  Realtop->Draw("ogl");
93 
94 
95  //c1->x3d();
96  geom->CheckOverlaps(0.0000000001,option="d"); //1 Overlap von Strahlrohr + Kugel ist normal!!!!!!!!!!!!!!!!!
97  geom->PrintOverlaps();
98 
99 
100  return 0;
101 }
102 
103 
FairGeoLoader * geoLoad
FairGeoMedia * Media
TGeoManager * gGeoManager
TGeoVolume * top
FairGeoBuilder * geobuild
TFile * fi
int hypGe_GeoBuilder_template()
void PlaceCluster(TGeoVolume *top, TGeoMatrix *ClusterPlaceAndDirectionTranslation, Int_t *CrystalNumber)
FairGeoInterface * geoFace
Double_t Pi
TString outfile