FairRoot/PandaRoot
PndGeoHypGeCrystalWithoutCapsule.cxx
Go to the documentation of this file.
1 // ******** Implementation of class to build HypGe encapsulated HPGe Crystal needed to build cluster detectors *************
2 // by steinen@kph.uni-mainz.de
3 
5 
6 
7 
8 
10 
11 // ----- Default constructor -------------------------------------------
13 
14 
15 // ---- constructor to use ----------------------------------
16 PndGeoHypGeCrystalWithoutCapsule::PndGeoHypGeCrystalWithoutCapsule(TGeoMedium *ExtGe, TGeoMedium *ExtAl,Int_t ExtCrystalNumber)
17 {
18  Pi = TMath::Pi();
19  Ge = ExtGe;
20  Al = ExtAl;
21  CrystalNumber = ExtCrystalNumber;
22 
23 
24 //building a capsule
25  OuterPgonInnerRadius = 3.0571;
26  CapsuleThickness = 0.08;
28  CapsuleLength = 10;
29 
30  // building parts of capsule shape
31  CapsuleOuterTube = new TGeoTube("CapsuleOuterTube",0.,3.75,CapsuleLength/2);
32  CapsuleOuterPgon = new TGeoPgon("CapsuleOuterPgon",0.,360.,6,2);;
33  CapsuleOuterPgon->DefineSection(0,-CapsuleLength/2,OuterPgonInnerRadius,3.8);
34  CapsuleOuterPgon->DefineSection(1,4.9094,3.75,3.8);
35  CapsuleInnerTube = new TGeoTube("CapsuleInnerTube",0,3.75*InnerScale,5);;
36  CapsuleInnerPgon = new TGeoPgon("CapsuleInnerPgon",0.,360.,6,2);
38  CapsuleInnerPgon->DefineSection(1,4.9094,3.75-CapsuleThickness,3.8);
39  CapsuleTopCover = new TGeoTube("CapsuleTopCover",0,3.75,CapsuleThickness/2);
40  CapsuleTopZTranslation = new TGeoTranslation("CapsuleTopZTranslation",0,0,5-CapsuleThickness/2);
41  CapsuleTopZTranslation->RegisterYourself();
42 
43  //combining simple shapes
44  CapsuleOuterShape = new TGeoCompositeShape("CapsuleOuterShape","(CapsuleOuterTube-CapsuleOuterPgon)");
45  CapsuleInnerShape = new TGeoCompositeShape("CapsuleInnerShape","(CapsuleInnerTube-CapsuleInnerPgon)");
46  CapsuleInnerZTranslation = new TGeoTranslation("CapsuleInnerZTranslation",0,0,CapsuleThickness);
47  CapsuleInnerZTranslation->RegisterYourself();
48  CapsuleCompleteShape = new TGeoCompositeShape("CapsuleCompleteShape", "CapsuleOuterShape-CapsuleInnerShape:CapsuleInnerZTranslation+CapsuleTopCover:CapsuleTopZTranslation");
49 
50  //building capsule volume
51  CapsuleName= new char[11];
52  sprintf(CapsuleName,"Capsule",(int)CrystalNumber);
53  Capsule = new TGeoVolume(CapsuleName,CapsuleCompleteShape,Al);
54  Capsule->SetTransparency(50);
55  Capsule->SetLineColor(19);
56 
57 
58 //building a crystal
59 
60  CapsuleThickness = 0.08;
61  VacuumThickness = 0.08;
62  CrystalLength = 7.85;
64 
65  //building the main shape of the crystal
66  CrystalTube = new TGeoTube("CrystalTube",0,3.5,CrystalLength/2);
67  CrystalPgon = new TGeoPgon("CrystalPgon",0.,360.,6,2);
68  CrystalPgon->DefineSection(0,-CrystalLength/2,CrystalFrontPgonInnerRadius,3.8);
69  CrystalPgon->DefineSection(1,8-CrystalLength/2,CrystalFrontPgonInnerRadius+8*TMath::Tan(Pi/180*4.12),3.8);
70 
71  //building the inner hole of the crystal
72  CrystalInnerTube = new TGeoTube("CrystalInnerTube",0,0.6,3.05);
73  CrystalInnerTubeZTranslation = new TGeoTranslation("CrystalInnerTubeZTranslation",0,0,CrystalLength/2-3.05);
74  CrystalInnerTubeZTranslation->RegisterYourself();
75  CrystalInnerTubeTorus = new TGeoTorus("CrystalInnerTubeTorus",0.2,0,0.4,0,360);
76  CrystalInnerTubeTorusZTranslation = new TGeoTranslation("CrystalInnerTubeTorusZTranslation",0,0,CrystalLength/2-3.05*2);
77  CrystalInnerTubeTorusZTranslation->RegisterYourself();
78  CrystalInnerTubeMiniExtraTube = new TGeoTube("CrystalInnerTubeMiniExtraTube",0,0.2,0.2);
79  CrystalInnerTubeMiniExtraTubeZTranslation = new TGeoTranslation("CrystalInnerTubeMiniExtraTubeZTranslation",0,0,CrystalLength/2-3.05*2-0.2);
80  CrystalInnerTubeMiniExtraTubeZTranslation ->RegisterYourself();
81 
82  //building the top rounding of the crystal
83  CrystalTopRoundingTube = new TGeoTube("CrystalTopRoundingTube",2.9,3.5,0.3);
84  CrystalTopRoundingTubeZTranslation = new TGeoTranslation("CrystalTopRoundingTubeZTranslation",0,0,0.3);
85  CrystalTopRoundingTubeZTranslation->RegisterYourself();
86  CrystalTopRoundingTorus = new TGeoTorus("CrystalTopRoundingTorus",2.9,0,0.6,0,360);
87  CrystalTopRoundingTooling = new TGeoCompositeShape ("CrystalTopRoundingTooling" ,"CrystalTopRoundingTube:CrystalTopRoundingTubeZTranslation-CrystalTopRoundingTorus");
88  CrystalTopRoundingToolingZTranslation = new TGeoTranslation("CrystalTopRoundingToolingZTranslation",0,0,CrystalLength/2-0.6);
89  CrystalTopRoundingToolingZTranslation->RegisterYourself();
90 
91  //building the guard ring of the crystal
92  CrystalGuardRingTube = new TGeoTube("CrystalGuardRingTube",0.9,1.4,0.15);
93  CrystalGuardRingTubeZTranslation = new TGeoTranslation("CrystalGuardRingTubeZTranslation",0,0,CrystalLength/2-0.15);
94  CrystalGuardRingTubeZTranslation->RegisterYourself();
95  CrystalGuardRingTorus = new TGeoTorus("CrystalGuardRingTorus",1.2,0,0.2,0,360);
96  CrystalGuardRingTorusInner = new TGeoTorus("CrystalGuardRingTorusInner",1.1,0,0.2,0,360);
97  CrystalGuardRingTorusZTranslation = new TGeoTranslation("CrystalGuardRingTorusZTranslation",0,0,CrystalLength/2-0.15*2);
98  CrystalGuardRingTorusZTranslation->RegisterYourself();
99  CrystalGuardRingMiniExtraTube = new TGeoTube("CrystalGuardRingMiniExtraTube",1.1,1.2,0.2);
100  CrystalGuardRingMiniExtraTubeZTranslation = new TGeoTranslation("CrystalGuardRingMiniExtraTubeZTranslation",0,0,CrystalLength/2-0.15*2);
101  CrystalGuardRingMiniExtraTubeZTranslation ->RegisterYourself();
102 
103  //combining the final shape of the crystal
104  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)
105 
106  CrystalName= new char[11];
107  sprintf(CrystalName,"Crystal",CrystalNumber);
108  Crystal = new TGeoVolume(CrystalName,CrystalShape,Ge);
109  Crystal->SetLineColor(kBlue);
110  Crystal->SetFillColor(kBlue);
111 
112 
113 //combining capsule and crystal
114 
115  CrystalPlusCapsule = new TGeoVolumeAssembly("CrystalPlusCapsule");
116  CapsuleCombiTrans = new TGeoCombiTrans(0,0,-CapsuleLength/2, new TGeoRotation("CapsuleRotation",0,180,0));
117  CapsuleCombiTrans->RegisterYourself();
118  CrystalInsideCapsuleCombiTrans = new TGeoCombiTrans(0,0,-(CrystalLength/2+CapsuleThickness+VacuumThickness), new TGeoRotation("CrystalRotation",0,180,0));
119  CrystalInsideCapsuleCombiTrans->RegisterYourself();
120 
121  //CrystalPlusCapsule->AddNode(Capsule, CrystalNumber, CapsuleCombiTrans);
123 
124 
125 };
126 
128 {
129  return CrystalNumber;
130 }
132 {
133  CrystalPlusCapsule->GetNdaughters();
134 };
135 
136 
138 {
139  CrystalPlusCapsule->PrintNodes();
140 }
141 
142 void PndGeoHypGeCrystalWithoutCapsule::PlaceCrystal(TGeoVolume *top, TGeoMatrix* CrystalPlaceAndDirectionTranslation)
143 {
144  top->AddNode(CrystalPlusCapsule,CrystalNumber,CrystalPlaceAndDirectionTranslation);
145 };
TGeoCombiTrans * CapsuleCombiTrans
void PlaceCrystal(TGeoVolume *top, TGeoMatrix *CrystalPlaceAndDirectionTranslation)
TGeoCompositeShape * CrystalShape
TGeoTranslation * CrystalTopRoundingTubeZTranslation
TGeoTranslation * CrystalTopRoundingToolingZTranslation
TGeoVolumeAssembly * CrystalPlusCapsule
TGeoTorus * CrystalTopRoundingTorus
Double_t CrystalFrontPgonInnerRadius
TGeoTranslation * CrystalGuardRingTorusZTranslation
TGeoCompositeShape * CrystalTopRoundingTooling
float Tan(float x)
Definition: PndCAMath.h:165
TGeoVolume * top
TGeoCompositeShape * CapsuleCompleteShape
TGeoTranslation * CrystalGuardRingMiniExtraTubeZTranslation
TGeoTranslation * CrystalInnerTubeTorusZTranslation
TGeoTranslation * CrystalInnerTubeZTranslation
TGeoTube * CrystalGuardRingTube
TGeoTorus * CrystalInnerTubeTorus
ClassImp(PndGeoHypGeCrystalWithoutCapsule)
TGeoTranslation * CrystalGuardRingTubeZTranslation
TGeoCompositeShape * CapsuleOuterShape
TGeoTube * CrystalInnerTubeMiniExtraTube
TGeoCompositeShape * CapsuleInnerShape
TGeoTube * CrystalGuardRingMiniExtraTube
TGeoTranslation * CrystalInnerTubeMiniExtraTubeZTranslation
TGeoTranslation * CapsuleTopZTranslation
TGeoTranslation * CapsuleInnerZTranslation
TGeoCombiTrans * CrystalInsideCapsuleCombiTrans
Double_t Pi
TGeoTorus * CrystalGuardRingTorusInner
TGeoTorus * CrystalGuardRingTorus
TGeoTube * CrystalTopRoundingTube