]>
Commit | Line | Data |
---|---|---|
b088c0a1 | 1 | #include <iostream> |
2 | #include "TGeoManager.h" | |
3 | #include "TGeoNode.h" | |
4 | #include "TEveGeoNode.h" | |
5 | #include "TEveGeoShape.h" | |
6 | #include "TEveManager.h" | |
7 | #include "TFile.h" | |
8 | ||
9 | #include "TGLViewer.h" | |
10 | ||
11 | #include "AliEveHltGeometry.h" | |
12 | ClassImp(AliEveHltGeometry) | |
13 | ||
14 | using namespace std; | |
15 | ||
16 | ///_______________________________________________________________________ | |
17 | AliEveHltGeometry::AliEveHltGeometry() { | |
18 | ||
19 | } | |
20 | ||
21 | ||
22 | ||
23 | ///_______________________________________________________________________ | |
24 | AliEveHltGeometry::~AliEveHltGeometry() { | |
25 | // see header file for class documentation | |
26 | ||
27 | } | |
28 | ||
29 | ///______________________________________________________________________ | |
30 | TEveGeoShape * AliEveHltGeometry::CreateGentleGeometry( Bool_t register_as_global) { | |
31 | TFile f("$ALICE_ROOT/EVE/alice-data/gentle_geo.root"); | |
32 | TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle"); | |
33 | TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse); | |
34 | f.Close(); | |
35 | ||
36 | TEveElement* elTRD = gsre->FindChild("TRD+TOF"); | |
37 | elTRD->SetRnrState(kFALSE); | |
38 | ||
39 | TEveElement* elHMPID = gsre->FindChild("HMPID"); | |
40 | elHMPID->SetRnrState(kFALSE); | |
41 | ||
42 | TEveElement* elPHOS = gsre->FindChild("PHOS"); | |
43 | elPHOS->SetRnrState(kTRUE); | |
44 | elPHOS->FindChild("PHOS_4")->SetRnrState(kFALSE); | |
45 | elPHOS->FindChild("PHOS_5")->SetRnrState(kFALSE); | |
46 | ||
47 | ||
48 | if (register_as_global) { | |
49 | gEve->AddGlobalElement(gsre); | |
50 | } | |
51 | ||
52 | return gsre; | |
53 | } | |
54 | ||
55 | ///______________________________________________________________________ | |
56 | TEveGeoTopNode * AliEveHltGeometry::CreateEmcalGeometry(TGeoManager * manager) { | |
57 | if(gGeoManager) cout << "have the manager"<<endl; | |
58 | else cout << "we don't "<<endl; | |
59 | TGeoVolume * volume = manager->GetTopVolume(); | |
60 | if(!volume) cout << "no volume"<<endl; | |
61 | TGeoNode * gEMCALNode = manager->GetTopVolume()->FindNode("XEN1_1"); | |
62 | ||
63 | TEveGeoTopNode* emcal_re = new TEveGeoTopNode(gGeoManager, gEMCALNode); | |
64 | emcal_re->SetVisLevel(1); | |
65 | ||
66 | for(Int_t i = 4; i < 11; i++) { | |
67 | emcal_re->FindChild(Form("SMOD_%d", i))->SetRnrState(kFALSE); | |
68 | } | |
69 | emcal_re->FindChild("SM10_1")->SetRnrState(kFALSE); | |
70 | emcal_re->FindChild("SM10_2")->SetRnrState(kFALSE); | |
71 | ||
72 | ||
73 | gEve->AddGlobalElement(emcal_re); | |
74 | ||
75 | return emcal_re; | |
76 | } | |
77 | ||
78 | ||
79 | // ----------------------------------------------------------------- | |
80 | TEveGeoShape* AliEveHltGeometry::geom_gentle_rphi() { | |
81 | // The resulting geometry is NOT added into the global scene! | |
82 | ||
83 | TFile f("$ALICE_ROOT/EVE/alice-data/gentle_rphi_geo.root"); | |
84 | TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle"); | |
85 | TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse); | |
86 | f.Close(); | |
87 | ||
88 | TEveElement* elPHOS = gsre->FindChild("PHOS"); | |
89 | elPHOS->SetRnrState(kTRUE); | |
90 | elPHOS->FindChild("PHOS_4")->SetRnrState(kFALSE); | |
91 | elPHOS->FindChild("PHOS_5")->SetRnrState(kFALSE); | |
92 | ||
93 | return gsre; | |
94 | } | |
95 | ||
96 | // ----------------------------------------------------------------- | |
97 | TEveGeoShape* AliEveHltGeometry::geom_gentle_rhoz() { | |
98 | // The resulting geometry is NOT added into the global scene! | |
99 | ||
100 | TFile f("$ALICE_ROOT/EVE/alice-data/gentle_rhoz_geo.root"); | |
101 | TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle"); | |
102 | TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse); | |
103 | f.Close(); | |
104 | ||
105 | return gsre; | |
106 | } | |
107 | ||
108 | // ----------------------------------------------------------------- | |
109 | TEveGeoShape* AliEveHltGeometry::geom_gentle_trd() { | |
110 | TFile f("$ALICE_ROOT/EVE/alice-data/gentle_geo_trd.root"); | |
111 | TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle TRD"); | |
112 | TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse); | |
113 | gEve->AddGlobalElement(gsre); | |
114 | f.Close(); | |
115 | ||
116 | Int_t sm = 0; | |
117 | ||
118 | // Fix visibility, color and transparency | |
119 | gsre->SetRnrSelf(kFALSE); | |
120 | for (TEveElement::List_i i = gsre->BeginChildren(); i != gsre->EndChildren(); ++i) { | |
121 | ||
122 | TEveGeoShape* lvl1 = (TEveGeoShape*) *i; | |
123 | lvl1->SetRnrSelf(kFALSE); | |
124 | for (TEveElement::List_i j = lvl1->BeginChildren(); j != lvl1->EndChildren(); ++j) { | |
125 | ||
126 | TEveGeoShape* lvl2 = (TEveGeoShape*) *j; | |
127 | ||
128 | if ( sm == 0 || sm == 1 || sm == 7 || sm == 8 || sm == 9 || sm == 10 || sm == 17 ) | |
129 | lvl2->SetRnrSelf(kTRUE); | |
130 | else | |
131 | lvl2->SetRnrSelf(kFALSE); | |
132 | ||
133 | lvl2->SetMainColor(3); | |
134 | lvl2->SetMainTransparency(80); | |
135 | ||
136 | ++sm; | |
137 | } | |
138 | ||
139 | } | |
140 | ||
141 | return gsre; | |
142 | } | |
143 | ||
144 | ///______________________________________________________________________ | |
145 | TEveGeoShape* AliEveHltGeometry::geom_gentle_muon(Bool_t updateScene) { | |
146 | ||
147 | TFile f("$ALICE_ROOT/EVE/alice-data/gentle_geo_muon.root"); | |
148 | TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle MUON"); | |
149 | TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse); | |
150 | gEve->AddGlobalElement(gsre); | |
151 | f.Close(); | |
152 | ||
153 | gsre->SetRnrSelf(kFALSE); | |
154 | ||
155 | DrawDeep(gsre); | |
156 | ||
157 | if ( updateScene ) { | |
158 | TGLViewer* v = gEve->GetDefaultGLViewer(); | |
159 | v->UpdateScene(); | |
160 | } | |
161 | ||
162 | return gsre; | |
163 | ||
164 | } | |
165 | ///______________________________________________________________________ | |
166 | void AliEveHltGeometry::DrawDeep(TEveGeoShape *gsre) { | |
167 | ||
168 | for (TEveElement::List_i i = gsre->BeginChildren(); i != gsre->EndChildren(); ++i) { | |
169 | TEveGeoShape* lvl = (TEveGeoShape*) *i; | |
170 | lvl->SetRnrSelf(kFALSE); | |
171 | if (!lvl->HasChildren()) { | |
172 | lvl->SetRnrSelf(kTRUE); | |
173 | lvl->SetMainColor(3); | |
174 | lvl->SetMainTransparency(50); | |
175 | } | |
176 | DrawDeep(lvl); | |
177 | } | |
178 | ||
179 | } |