FairRoot/PandaRoot
hypGe_TripleGeo_class.C
Go to the documentation of this file.
1 #include "TGeoManager.h"
2 double Pi = TMath::Pi();
3 
4 void ClusterPlacer(double x, double y, double z, double GlobalZOffset , int ObjectNo, TGeoVolume *top,TGeoVolume *Clusterr,double phi, double theta, double psi)
5 {
6 TGeoRotation *Clusterrot = new TGeoRotation("Clusterrot",phi, theta,psi-phi);
7  Clusterrot->RegisterYourself();
8 top->AddNode(Clusterr,ObjectNo,new TGeoCombiTrans(x,y,GlobalZOffset+z,Clusterrot));
9 }
10 
12 {
13 
14 gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
15 
16  // Load this libraries
17  gSystem->Load("libGeoBase");
18  gSystem->Load("libParBase");
19  gSystem->Load("libBase");
20  gSystem->Load("libPndData");
21  gSystem->Load("libPassive");
22  TString outfile= "../../../../geometry/hypGe_GeoMarcell_TripleClass.root";
23 
24  TFile* fi = new TFile(outfile,"RECREATE");
25 
26 
27 
28  FairGeoLoader* geoLoad = new FairGeoLoader("TGeo","FairGeoLoader");
29  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
30  geoFace->setMediaFile("../../../../geometry/media_pnd.geo");
31  geoFace->readMedia();
32  geoFace->print();
33 
34  FairGeoMedia *Media = geoFace->getMedia();
35  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
36 
37  FairGeoMedium *medGe = Media->getMedium("germanium");
38  Int_t nmedGe=geobuild->createMedium(medGe);
39 
40  // aluminum capsule
41  FairGeoMedium *medcap = Media->getMedium("HYPaluminium");
42  Int_t nmedcap=geobuild->createMedium(medcap);
43 
44  TGeoMedium *Ge = gGeoManager->GetMedium("germanium");
45 
46  //capsule
47  TGeoMedium *Al_sol = gGeoManager->GetMedium("HYPaluminium");
48 
49 
50 
51 
52  TGeoManager *geom = (TGeoManager*)gROOT->FindObject("FAIRGeom");
53  TGeoVolume *top = new TGeoVolumeAssembly("hpGe");
54  TGeoVolume *strange = new TGeoVolumeAssembly("strange");
55 
56 cout<<" geom "<<geom<<endl;
57  geom->SetTopVolume(top);
58 
59  Double_t GlobalZOffset = -55;
60  int ObjektNr = 0;
61  //Strahlrohr
62  TGeoVolume *Strahlrohr =geom->MakeTube("Strahlrohr",Al_sol,0,7.5,150);
63  Strahlrohr->SetLineColor(kBlue);
64  //top->AddNode(Strahlrohr,ObjektNr);
65  ObjektNr++;
66  //Außenhülle
67  TGeoVolume *Außenhülle =geom->MakeTube("Außenhülle",Al_sol,45,45.5,100);
68  Außenhülle->SetLineColor(kBlue);
69  //top->AddNode(Außenhülle,ObjektNr,new TGeoTranslation(0,0,GlobalZOffset));
70  ObjektNr++;
71 
72 //Halteplatte
73  TGeoVolume *HoldingStruc =geom->MakeBox("HoldingStruc",Al_sol,1,45,50);
74  HoldingStruc->SetLineColor(kGreen);
75  //top->AddNode(HoldingStruc,ObjektNr,new TGeoTranslation(0,0,GlobalZOffset));
76  ObjektNr++;
77 //Hilfskugel
78  TGeoSphere *Kugel = new TGeoSphere("Kugel",1,30,0,180,0,360);
79  TGeoVolume *Kugell = new TGeoVolume("Kugell",Kugel,Al_sol);
80  Kugell->SetLineColor(kBlue);
81  Kugell->SetTransparency(50);
82  //top->AddNode(Kugell,ObjektNr,new TGeoTranslation(0,0,GlobalZOffset));
83  ObjektNr++;
84 
85 //Nullpunktmarker
86  TGeoSphere *Origin = new TGeoSphere("Origin",0,1,0,180,0,360);
87  TGeoVolume *Originn = new TGeoVolume("Originn",Origin,Al_sol);
88  Originn->SetLineColor(kGreen);
89  //top->AddNode(Originn,ObjektNr);
90  ObjektNr++;
91 
92 ClusterPlacer(7.0801,12.5751, -26.3009, GlobalZOffset , 1000, strange,Cluster[0],180+150.62, 28.73,180-4.95);
93 cout << "test2" << endl;
94 ClusterPlacer(12.8422,-0, -27.1123, GlobalZOffset , 2000, strange,Cluster[1],180+90,25.34,180);
95  ClusterPlacer(7.0801,-12.5751, -26.3009, GlobalZOffset , 3000, strange,Cluster[2],180+29.38,28.73,180+4.95);
96 
97  ClusterPlacer(-7.0801,-12.5751, -26.3009, GlobalZOffset , 4000, strange,Cluster[3],150.62,28.73,4.95);
98  ClusterPlacer(-12.8422,0, -27.1123, GlobalZOffset , 5000, strange,Cluster[4],90,25.34,0);
99  ClusterPlacer(-7.0801,12.5751, -26.3009, GlobalZOffset , 6000, strange,Cluster[5],29.38,28.73,4.95);
100 
101 //Outer Ring
102 ClusterPlacer(8.421,20.8241, -19.8857, GlobalZOffset , 7000, strange,Cluster[6],180+157.98,48.5,0); //Patient
103 ClusterPlacer(17.9414,10.7963, -21.4836, GlobalZOffset , 8000, strange,Cluster[7],180+121.04,44.29,180-4.95);
104 ClusterPlacer(24.3173,0, -17.5689, GlobalZOffset , 9000, strange,Cluster[8],180+90,54.51,0);
105 ClusterPlacer(17.9414,-10.7963, -21.4836, GlobalZOffset , 10000, strange,Cluster[9],180+180-121.04,44.29,180+4.95);
106 ClusterPlacer(8.421,-20.8241, -19.8857, GlobalZOffset , 11000, strange,Cluster[10],180+180-157.98,48.5,0); //Patient
107 
108 ClusterPlacer(-8.421,-20.8241, -19.8857, GlobalZOffset , 12000, strange,Cluster[11],+157.98,48.5,180); //Patient
109 ClusterPlacer(-17.9414,-10.7963, -21.4836, GlobalZOffset , 13000, strange,Cluster[12],+121.04,44.29,-4.95);
110 ClusterPlacer(-24.3173,0, -17.5689, GlobalZOffset , 14000, strange,Cluster[13],+90,54.51,180);
111 ClusterPlacer(-17.9414,10.7963, -21.4836, GlobalZOffset , 15000, strange,Cluster[14],+180-121.04,44.29,4.95);
112 ClusterPlacer(-8.421,20.8241, -19.8857, GlobalZOffset , 16000, strange,Cluster[15],+180-157.98,48.5,180); //Patient
113 
114  top->AddNode(strange,0);
115  geom->CloseGeometry();
116  top->Write();
117  fi->Close();
118  //strange->Draw(""); strange->Raytrace();
119  strange->Draw("ogl");
120  geom->CheckOverlaps(0.0000000001,option="d"); //1 Overlap von Strahlrohr + Kugel ist normal!!!!!!!!!!!!!!!!!
121  geom->PrintOverlaps();
122  cout <<"Anzahl der Objekte: "<< ObjektNr << endl;
123  //Paket[1]->Print();
124 }
125 
126 
FairGeoLoader * geoLoad
FairGeoMedia * Media
TGeoManager * gGeoManager
TGeoVolume * top
FairGeoBuilder * geobuild
TFile * fi
Double_t
Double_t z
int hypGe_TripleGeo()
Double_t x
void ClusterPlacer(double x, double y, double z, double GlobalZOffset, int ObjectNo, TGeoVolume *top, TGeoVolume *Clusterr, double phi, double theta, double psi)
FairGeoInterface * geoFace
Double_t y
Double_t Pi
TString outfile