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