FairRoot/PandaRoot
hypGeGeoBuilderTriple30cmRadius.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= "../../../../geometry/hypGeGeoTripleCluster_V3.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  Int_t CrystalNumber = 1;
54  Double_t GlobalZOffset = -55;
55  Double_t ClusterRadius = 30;
56 
58  //MBP -> PlaceBeamPipe(Realtop);
59 
61  //MCTF -> PlaceCTFrame(Realtop,new TGeoTranslation(0,0,GlobalZOffset));
62 
63 
64 
65 
66  PndGeoHypGeTripleCluster *TripleCluster = new PndGeoHypGeTripleCluster(Ge,Al,1);
67 
68  for (Int_t iHalves = 0; iHalves < 2; iHalves++)
69  {
70  //iHalves = 0 -> right half, iHalves = 1 -> left half (looking in +z (beam forward) direction
71  //inner ring: counter clockwise starting at 5 o'clock
72 
73  TripleCluster ->PlaceCluster(Realtop, GlobalZOffset,ClusterRadius, 180*iHalves + 150.62,28.73,-4.95-( 150.62)+180,&CrystalNumber);
74 
75  TripleCluster ->PlaceCluster(Realtop, GlobalZOffset,ClusterRadius, 180*iHalves + 90,25.34,-90+180,&CrystalNumber);
76 
77  TripleCluster ->PlaceCluster(Realtop, GlobalZOffset,ClusterRadius, 180*iHalves +29.38,28.73,4.95 - (29.38)+180 ,&CrystalNumber);
78 
79 
80  //outer ring: counter clockwise starting at 5 o'clock
81  TripleCluster ->PlaceCluster(Realtop, GlobalZOffset,ClusterRadius, +180*iHalves +157.98,48.5,-157.98,&CrystalNumber);
82 
83  TripleCluster ->PlaceCluster(Realtop, GlobalZOffset,ClusterRadius, +180*iHalves +121.04,44.29,-4.95-121.04+180,&CrystalNumber);
84 
85  TripleCluster ->PlaceCluster(Realtop, GlobalZOffset,ClusterRadius,+180*iHalves +90,54.51,180-90+180 ,&CrystalNumber);
86 
87  TripleCluster ->PlaceCluster(Realtop, GlobalZOffset,ClusterRadius, +180*iHalves +180-121.04,44.29,4.95-(180-121.04)+180,&CrystalNumber);
88 
89  TripleCluster ->PlaceCluster(Realtop, GlobalZOffset,ClusterRadius, +180*iHalves +180-157.98,48.5,180-(180-157)+180,&CrystalNumber);
90  }
91 
92 
93  top->AddNode(Realtop,0);
94  Realtop->PrintNodes();
95  geom->CloseGeometry();
96  cout << "# of Nodes: " << Realtop->CountNodes(10,1) << endl;
97  TripleCluster->PrintNodes(0);
98  top->Write();
99  fi->Close();
100 
101  //Realtop->Browse(new TBrowser);
102  //c1 = new TCanvas("c1","hypGe",800,600);Realtop->Draw("");// Realtop->Raytrace();
103  Realtop->Draw("ogl");
104 
105 
106  //c1->x3d();
107  //geom->CheckOverlaps(0.0000000001,option="d"); //1 Overlap von Strahlrohr + Kugel ist normal!!!!!!!!!!!!!!!!!
108  //geom->PrintOverlaps();
109 
110 
111  return 0;
112 }
113 
114 
FairGeoLoader * geoLoad
FairGeoMedia * Media
TGeoManager * gGeoManager
TGeoVolume * top
FairGeoBuilder * geobuild
TFile * fi
Double_t
void PlaceCluster(TGeoVolume *top, TGeoMatrix *ClusterPlaceAndDirectionTranslation, Int_t *CrystalNumber)
int hypGeGeoBuilderTriple30cmRadius()
FairGeoInterface * geoFace
TString outfile