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

Go to the source code of this file.

Functions

int CrystalShapeTest ()
 

Variables

double Pi = TMath::Pi()
 

Function Documentation

int CrystalShapeTest ( )

Definition at line 6 of file CrystalShapeTest.C.

References CrystalShape, Double_t, geobuild, geoFace, geoLoad, geom(), gGeoManager, Media, Pi, CAMath::Tan(), and top.

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 
18 
19  FairGeoLoader* geoLoad = new FairGeoLoader("TGeo","FairGeoLoader");
20  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
21  geoFace->setMediaFile("../../../../geometry/media_pnd.geo");
22  geoFace->readMedia();
23  geoFace->print();
24 
25  FairGeoMedia *Media = geoFace->getMedia();
26  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
27 
28  FairGeoMedium *medGe = Media->getMedium("germanium");
29  Int_t nmedGe=geobuild->createMedium(medGe);
30 
31  // aluminum capsule
32  FairGeoMedium *medcap = Media->getMedium("HYPaluminium");
33  Int_t nmedcap=geobuild->createMedium(medcap);
34 
35  TGeoMedium *Ge = gGeoManager->GetMedium("germanium");
36 
37  //capsule
38  TGeoMedium *Al_sol = gGeoManager->GetMedium("HYPaluminium");
39 
40 
41  TGeoManager *geom = (TGeoManager*)gROOT->FindObject("FAIRGeom");
42  TGeoVolume *top = new TGeoVolumeAssembly("hpGe");
43  TGeoVolume *strange = new TGeoVolumeAssembly("strange");
44 
45 cout<<" geom "<<geom<<endl;
46  geom->SetTopVolume(top);
47 
48  Double_t GlobalZOffset = -55;
49  int ObjektNr = 0;
50 
51  Double_t CapsuleThickness;
52  Double_t VacuumThickness;
53  Double_t CrystalLenght;
54  Double_t CrystalFrontPgonInnerRadius;
55 
56  Double_t CrystalInnerPgonRadius;
57  //objects to build the main crystal shape
58  TGeoTube *CrystalTube;
59  TGeoPgon *CrystalPgon;
60  //objects to build the inner crystal hole
61  TGeoTube *CrystalInnerTube;
62  TGeoTranslation *CrystalInnerTubeZTranslation;
63  TGeoTorus *CrystalInnerTubeTorus;
64  TGeoTranslation *CrystalInnerTubeTorusZTranslation;
65  TGeoTube *CrystalInnerTubeMiniExtraTube;
66  TGeoTranslation *CrystalInnerTubeMiniExtraTubeZTranslation;
67  //objects to get the top rounding of the crystal
68  TGeoTube *CrystalTopRoundingTube;
69  TGeoTranslation *CrystalTopRoundingTubeZTranslation;
70  TGeoTorus *CrystalTopRoundingTorus;
71  TGeoCompositeShape *CrystalTopRoundingTooling;
72  TGeoTranslation *CrystalTopRoundingToolingZTranslation;
73 
74  //objects to build the guard ring of the crystal
75  TGeoTube *CrystalGuardRingTube;
76  TGeoTranslation *CrystalGuardRingTubeZTranslation;
77  TGeoTorus *CrystalGuardRingTorus;
78  TGeoTorus *CrystalGuardRingTorusInner;
79  TGeoTranslation *CrystalGuardRingTorusZTranslation;
80  TGeoTube *CrystalGuardRingMiniExtraTube;
81  TGeoTranslation *CrystalGuardRingMiniExtraTubeZTranslation;
82 
83  //building the whole crystal
84  TGeoCompositeShape *CrystalShape;
85  TGeoVolume *Crystal;
86 
87 
88 
89 
90 
91  CapsuleThickness = 0.08;
92  VacuumThickness = 0.08;
93  CrystalLenght = 7.85;
94  CrystalFrontPgonInnerRadius = 2.9485;
95 
96  //building the main shape of the crystal
97  CrystalTube = new TGeoTube("CrystalTube",0,3.5,CrystalLenght/2);
98  CrystalPgon = new TGeoPgon("CrystalPgon",0.,360.,6,2);
99  CrystalPgon->DefineSection(0,-CrystalLenght/2,CrystalFrontPgonInnerRadius,3.8);
100  CrystalPgon->DefineSection(1,8-CrystalLenght/2,CrystalFrontPgonInnerRadius+8*TMath::Tan(Pi/180*4.12),3.8);
101 
102  //building the inner hole of the crystal
103  CrystalInnerTube = new TGeoTube("CrystalInnerTube",0,0.6,3.05);
104  CrystalInnerTubeZTranslation = new TGeoTranslation("CrystalInnerTubeZTranslation",0,0,CrystalLenght/2-3.05);
105  CrystalInnerTubeZTranslation->RegisterYourself();
106  CrystalInnerTubeTorus = new TGeoTorus("CrystalInnerTubeTorus",0.2,0,0.4,0,360);
107  CrystalInnerTubeTorusZTranslation = new TGeoTranslation("CrystalInnerTubeTorusZTranslation",0,0,CrystalLenght/2-3.05*2);
108  CrystalInnerTubeTorusZTranslation->RegisterYourself();
109  CrystalInnerTubeMiniExtraTube = new TGeoTube("CrystalInnerTubeMiniExtraTube",0,0.2,0.2);
110  CrystalInnerTubeMiniExtraTubeZTranslation = new TGeoTranslation("CrystalInnerTubeMiniExtraTubeZTranslation",0,0,CrystalLenght/2-3.05*2-0.2);
111  CrystalInnerTubeMiniExtraTubeZTranslation ->RegisterYourself();
112 
113  //building the top rounding of the crystal
114  CrystalTopRoundingTube = new TGeoTube("CrystalTopRoundingTube",2.9,3.5,0.3);
115  CrystalTopRoundingTubeZTranslation = new TGeoTranslation("CrystalTopRoundingTubeZTranslation",0,0,0.3);
116  CrystalTopRoundingTubeZTranslation->RegisterYourself();
117  CrystalTopRoundingTorus = new TGeoTorus("CrystalTopRoundingTorus",2.9,0,0.6,0,360);
118  CrystalTopRoundingTooling = new TGeoCompositeShape ("CrystalTopRoundingTooling" ,"CrystalTopRoundingTube:CrystalTopRoundingTubeZTranslation-CrystalTopRoundingTorus");
119  CrystalTopRoundingToolingZTranslation = new TGeoTranslation("CrystalTopRoundingToolingZTranslation",0,0,CrystalLenght/2-0.6);
120  CrystalTopRoundingToolingZTranslation->RegisterYourself();
121 
122  //building the guard ring of the crystal
123  CrystalGuardRingTube = new TGeoTube("CrystalGuardRingTube",0.9,1.4,0.15);
124  CrystalGuardRingTubeZTranslation = new TGeoTranslation("CrystalGuardRingTubeZTranslation",0,0,CrystalLenght/2-0.15);
125  CrystalGuardRingTubeZTranslation->RegisterYourself();
126  CrystalGuardRingTorus = new TGeoTorus("CrystalGuardRingTorus",1.2,0,0.2,0,360);
127  CrystalGuardRingTorusInner = new TGeoTorus("CrystalGuardRingTorusInner",1.1,0,0.2,0,360);
128  CrystalGuardRingTorusZTranslation = new TGeoTranslation("CrystalGuardRingTorusZTranslation",0,0,CrystalLenght/2-0.15*2);
129  CrystalGuardRingTorusZTranslation->RegisterYourself();
130  CrystalGuardRingMiniExtraTube = new TGeoTube("CrystalGuardRingMiniExtraTube",1.1,1.2,0.2);
131  CrystalGuardRingMiniExtraTubeZTranslation = new TGeoTranslation("CrystalGuardRingMiniExtraTubeZTranslation",0,0,CrystalLenght/2-0.15*2);
132  CrystalGuardRingMiniExtraTubeZTranslation ->RegisterYourself();
133 
134  //combining the final shape of the crystal
135  CrystalShape= new TGeoCompositeShape("CrystalShape","(CrystalTube-CrystalPgon)-CrystalTopRoundingTooling:CrystalTopRoundingToolingZTranslation-(CrystalInnerTube:CrystalInnerTubeZTranslation+CrystalInnerTubeTorus:CrystalInnerTubeTorusZTranslation+CrystalInnerTubeMiniExtraTube:CrystalInnerTubeMiniExtraTubeZTranslation)-(CrystalGuardRingTube:CrystalGuardRingTubeZTranslation+CrystalGuardRingTorus:CrystalGuardRingTorusZTranslation+CrystalGuardRingTorusInner:CrystalGuardRingTorusZTranslation+CrystalGuardRingMiniExtraTube:CrystalGuardRingMiniExtraTubeZTranslation)"); // (main shape) - (inner tube) - (top rounding) - (guard ring)
136  Crystal = new TGeoVolume("Crystal",CrystalShape,Ge);
137  Crystal->SetLineColor(kGreen);
138  Crystal->SetFillColor(kGreen);
139 
140 
141 //TGeoTranslation *CryTrans = new TGeoTranslation(0,0,5-1.5+CapsuleThickness+VacuumThickness);
142 //CryTrans->RegisterYourself();
143 strange->AddNode(Crystal,6);
144 
145 
146 
147  top->AddNode(strange,0);
148  geom->CloseGeometry();
149 
150 
151  //strange->Draw(""); strange->Raytrace();
152  strange->Draw("ogl");
153 
154 
155  return 0;
156 }
FairGeoLoader * geoLoad
FairGeoMedia * Media
TGeoShape * CrystalShape
float Tan(float x)
Definition: PndCAMath.h:165
TGeoManager * gGeoManager
TGeoVolume * top
FairGeoBuilder * geobuild
Double_t
FairGeoInterface * geoFace
Double_t Pi

Variable Documentation

double Pi = TMath::Pi()

Definition at line 2 of file CrystalShapeTest.C.