FairRoot/PandaRoot
Functions | Variables
hypGeGeoBuilderTripleBall40Offset20GeometryCrystalsOnly.C File Reference
#include "TGeoManager.h"

Go to the source code of this file.

Functions

int hypGeGeoBuilderTripleBall40Offset20GeometryCrystalsOnly ()
 

Variables

double Pi = TMath::Pi()
 

Function Documentation

int hypGeGeoBuilderTripleBall40Offset20GeometryCrystalsOnly ( )

Definition at line 5 of file hypGeGeoBuilderTripleBall40Offset20GeometryCrystalsOnly.C.

References Double_t, fi, geobuild, geoFace, geoLoad, geom(), gGeoManager, Media, outfile, PndGeoHypGeCluster::PlaceCluster(), PndGeoHypGeTripleClusterCrystalsOnly::PrintNodes(), PndGeoHypGeBase::ReadCoordinatesAndAngles(), top, and TString.

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_Ball40_Offset20CrystalsOnly.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 SourceToBallCenterOffset = 20;
54  Double_t GlobalZOffset = -55+SourceToBallCenterOffset;
55 
56  //Place Support
58  //MBP -> PlaceBeamPipe(Realtop);
59 
61  //MCTF -> PlaceCTFrame(Realtop,new TGeoTranslation(0,0,GlobalZOffset));
62 
63  //Place a sphere to check the right positioning of the clusters
64  //TGeoSphere *Ball = new TGeoSphere("Ball",0,40,0,180,0,360);
65  //TGeoVolume *BallVol = new TGeoVolume("BallVol",Ball,Al);
66  //Realtop->AddNode(BallVol,0,new TGeoTranslation(0,0,-45));
67 
69 
70  //Read coordinates and angles from file
71 
72  const Int_t NumberOfCluster=16;
73  Double_t CoordinatesAndAngles[NumberOfCluster*6];
74  string Filename = "TripleBall40GeometryCoordinatesAndAngles.txt";
75 
76 
77  TripleCluster->ReadCoordinatesAndAngles(Filename,NumberOfCluster,CoordinatesAndAngles);
78 
79  //for (Int_t i = 0; i < 16*6; i++)
80  // cout << CoordinatesAndAngles[i] << endl;
81  // Double_t ClusterRadius = 30;
82 
83  for (Int_t iCluster = 0; iCluster < 16; iCluster++)
84  {
85 
86 
87  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);
88 
89 
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 }
FairGeoLoader * geoLoad
FairGeoMedia * Media
TGeoManager * gGeoManager
TGeoVolume * top
FairGeoBuilder * geobuild
TFile * fi
Double_t
void PlaceCluster(TGeoVolume *top, TGeoMatrix *ClusterPlaceAndDirectionTranslation, Int_t *CrystalNumber)
FairGeoInterface * geoFace
TString outfile
void ReadCoordinatesAndAngles(string Filename, Int_t NumberOfCluster, Double_t *CoordinatesAndAngles)

Variable Documentation

double Pi = TMath::Pi()