]>
Commit | Line | Data |
---|---|---|
319f3084 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * | |
3 | * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * | |
4 | * full copyright notice. * | |
5 | **************************************************************************/ | |
6 | ||
2a6fc1f9 | 7 | class TEveProjectionManager; |
8 | class TEveGeoShape; | |
9 | class TEveUtil; | |
10 | ||
2a6fc1f9 | 11 | Bool_t gCenterProjectionsAtPrimaryVertex = kFALSE; |
12 | ||
de33999e | 13 | void alieve_online_init() |
319f3084 | 14 | { |
89b6d213 | 15 | |
16 | if (gSystem->Getenv("ALICE_ROOT") != 0) | |
17 | { | |
18 | gInterpreter->AddIncludePath(Form("%s/MUON", gSystem->Getenv("ALICE_ROOT"))); | |
19 | gInterpreter->AddIncludePath(Form("%s/MUON/mapping", gSystem->Getenv("ALICE_ROOT"))); | |
20 | } | |
21 | ||
a9e18d1c | 22 | TEveUtil::AssertMacro("VizDB_scan.C"); |
23 | ||
06f4984c | 24 | TEveBrowser *browser = gEve->GetBrowser(); |
2a6fc1f9 | 25 | browser->ShowCloseTab(kFALSE); |
26 | ||
3545fba9 | 27 | // Gentle-geom loading changes gGeoManager. |
28 | TEveGeoManagerHolder mgrRestore; | |
2a6fc1f9 | 29 | |
5f4e9982 | 30 | AliEveMultiView *multiView = new AliEveMultiView(kTRUE); |
3545fba9 | 31 | |
32 | TEveUtil::LoadMacro("geom_gentle.C"); | |
d2a137c1 | 33 | multiView->InitGeomGentle(geom_gentle(), |
9cd7053b | 34 | geom_gentle_rphi(), |
5f4e9982 | 35 | geom_gentle_rhoz(), |
9cd7053b | 36 | geom_gentle_rhoz()); |
3545fba9 | 37 | |
e2673345 | 38 | TEveUtil::LoadMacro("geom_gentle_trd.C"); |
39 | multiView->InitGeomGentleTrd(geom_gentle_trd()); | |
40 | ||
89b6d213 | 41 | TEveUtil::LoadMacro("geom_gentle_muon.C"); |
5f4e9982 | 42 | multiView->InitGeomGentleMuon(geom_gentle_muon(), kFALSE, kFALSE, kTRUE); |
2a6fc1f9 | 43 | |
c027b127 | 44 | //============================================================================ |
45 | // Standard macros to execute -- not all are enabled by default. | |
46 | //============================================================================ | |
47 | ||
48 | AliEveMacroExecutor *exec = AliEveEventManager::GetMaster()->GetExecutor(); | |
49 | ||
50 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX", "primary_vertex.C", "primary_vertex", "", kTRUE)); | |
51 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Ellipse", "primary_vertex.C", "primary_vertex_ellipse", "", kTRUE)); | |
52 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Box", "primary_vertex.C", "primary_vertex_box", "kFALSE, 3, 3, 3", kFALSE)); | |
53 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX", "primary_vertex.C", "primary_vertex_spd", "", kTRUE)); | |
54 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Ellipse", "primary_vertex.C", "primary_vertex_ellipse_spd", "", kTRUE)); | |
55 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Box", "primary_vertex.C", "primary_vertex_box_spd", "kFALSE, 3, 3, 3", kFALSE)); | |
56 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX", "primary_vertex.C", "primary_vertex_tpc", "", kFALSE)); | |
57 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Ellipse", "primary_vertex.C", "primary_vertex_ellipse_tpc", "", kFALSE)); | |
58 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Box", "primary_vertex.C", "primary_vertex_box_tpc", "kFALSE, 3, 3, 3", kFALSE)); | |
59 | ||
60 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus ITS", "its_clusters.C++", "its_clusters")); | |
61 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus TPC", "tpc_clusters.C++", "tpc_clusters")); | |
72d099dc | 62 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus TRD", "trd_clusters.C++", "trd_clusters")); |
c027b127 | 63 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus TOF", "tof_clusters.C++", "tof_clusters")); |
64 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus HMPID", "hmpid_clusters.C++", "hmpid_clusters")); | |
89b6d213 | 65 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus MUON", "muon_clusters.C++", "muon_clusters")); |
c027b127 | 66 | |
67 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus TOF", "emcal_digits.C++", "emcal_digits")); | |
68 | ||
69 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW ITS", "its_raw.C", "its_raw")); | |
70 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW TPC", "tpc_raw.C", "tpc_raw")); | |
71 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW TOF", "tof_raw.C", "tof_raw")); | |
72 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW VZERO", "vzero_raw.C", "vzero_raw")); | |
73 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW ACORDE", "acorde_raw.C", "acorde_raw")); | |
08bc045d | 74 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW MUON", "muon_raw.C++", "muon_raw")); |
74155242 | 75 | exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW FMD", "fmd_raw.C", "fmd_raw")); |
c027b127 | 76 | |
74155242 | 77 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Track", "esd_tracks.C", "esd_tracks", "", kFALSE)); |
78 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Track", "esd_tracks.C", "esd_tracks_MI", "", kFALSE)); | |
79 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Track", "esd_tracks.C", "esd_tracks_by_category", "", kTRUE)); | |
80 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Track MUON", "esd_muon_tracks.C++", "esd_muon_tracks", "kTRUE,kFALSE", kTRUE)); | |
81 | exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC FMD", "fmd_esd.C", "fmd_esd", "", kTRUE)); | |
c027b127 | 82 | |
83 | // ??? | |
74155242 | 84 | // exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC TRD", "trd_detectors.C++", "trd_detectors", "", kFALSE)); |
c027b127 | 85 | // trd_tracks disabled due to memory leaks |
86 | ||
87 | //---------------------------------------------------------------------------- | |
88 | ||
89 | slot = TEveWindow::CreateWindowInTab(browser->GetTabRight()); | |
90 | slot->StartEmbedding(); | |
91 | AliEveMacroExecutorWindow* exewin = new AliEveMacroExecutorWindow(exec); | |
92 | slot->StopEmbedding("DataSelection"); | |
93 | exewin->PopulateMacros(); | |
94 | ||
95 | //============================================================================ | |
96 | // Final GUI setup | |
97 | //============================================================================ | |
98 | ||
14a4b686 | 99 | browser->GetTabRight()->SetTab(1); |
de33999e | 100 | |
47aab29b | 101 | browser->StartEmbedding(TRootBrowser::kBottom); |
4d62585e | 102 | new AliEveEventManagerWindow(AliEveEventManager::GetMaster()); |
47aab29b | 103 | browser->StopEmbedding("EventCtrl"); |
104 | ||
06f4984c | 105 | browser->MoveResize(0, 0, gClient->GetDisplayWidth(), |
106 | gClient->GetDisplayHeight() - 32); | |
107 | ||
108 | gEve->GetViewers()->SwitchColorSet(); | |
109 | ||
110 | TString autoRun(gSystem->Getenv("ONLINERECO_AUTORUN")); | |
111 | if (autoRun == "1" || autoRun.CompareTo("true", TString::kIgnoreCase) == 0) | |
112 | { | |
113 | AliEveEventManager::GetMaster()->SetAutoLoad(kTRUE); | |
114 | } | |
115 | ||
1110f3fe | 116 | { |
117 | TGTab *tab = gEve->GetBrowser()->GetTab(2); | |
118 | ||
119 | TGHorizontalFrame *hf = (TGHorizontalFrame*) tab->GetParent(); | |
120 | TGVerticalFrame *vf = (TGVerticalFrame*) hf ->GetParent(); | |
121 | ||
122 | hf->Resize(hf->GetWidth(), hf->GetHeight() + 80); | |
123 | vf->Layout(); | |
124 | } | |
125 | ||
5f4e9982 | 126 | gEve->GetWindowManager()->HideAllEveDecorations(); |
127 | ||
3e6470df | 128 | gEve->FullRedraw3D(kTRUE); |
129 | ||
d2a137c1 | 130 | TGLViewer *glv = multiView->Get3DView()->GetGLViewer(); |
5f4e9982 | 131 | gEve->FullRedraw3D(kTRUE); |
132 | glv->CurrentCamera().RotateRad(-0.4, -1.8); | |
133 | ||
de33999e | 134 | } |
135 | ||
08bc045d | 136 | // multiView->Get3DView()->GetGLViewer()->CurrentCamera().RotateRad(-1, 1) |
9cd7053b | 137 | |
138 | Int_t g_pic_id = 0; | |
08bc045d | 139 | Int_t g_pic_max = 100; |
9cd7053b | 140 | TTimeStamp g_pic_prev(0, 0); |
44854372 | 141 | |
de33999e | 142 | void alieve_online_on_new_event() |
143 | { | |
de33999e | 144 | AliESDEvent* esd = AliEveEventManager::AssertESD(); |
74155242 | 145 | Double_t x[3] = { 0, 0, 0 }; |
de33999e | 146 | esd->GetPrimaryVertex()->GetXYZ(x); |
147 | ||
148 | TEveElement* top = gEve->GetCurrentEvent(); | |
149 | ||
d2a137c1 | 150 | AliEveMultiView *multiView = AliEveMultiView::Instance(); |
151 | ||
5f4e9982 | 152 | /* |
08bc045d | 153 | TGLViewer *glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("3D View")))->GetGLViewer(); |
154 | ||
155 | if(gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")) | |
156 | { | |
157 | if (esd->GetNumberOfMuonTracks() == 0 && !gEve->GetKeepEmptyCont()) | |
158 | { | |
159 | gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrChildren(kFALSE); | |
160 | ||
161 | if(gEve->GetEventScene()->FirstChild()->FindChild("MUON Clusters")) | |
162 | gEve->GetEventScene()->FirstChild()->FindChild("MUON Clusters")->SetRnrSelf(kFALSE); | |
163 | if(gEve->GetEventScene()->FirstChild()->FindChild("MUON Raw digits")) | |
164 | gEve->GetEventScene()->FirstChild()->FindChild("MUON Raw digits")->SetRnrChildren(kFALSE); | |
165 | ||
166 | gEve->FullRedraw3D(kTRUE); | |
167 | glv->CurrentCamera().RotateRad(-0.4, -1.8); | |
168 | } | |
169 | else | |
170 | { | |
171 | gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrChildren(kTRUE); | |
172 | ||
173 | if(gEve->GetEventScene()->FirstChild()->FindChild("MUON Clusters")) | |
174 | gEve->GetEventScene()->FirstChild()->FindChild("MUON Clusters")->SetRnrSelf(kTRUE); | |
175 | if(gEve->GetEventScene()->FirstChild()->FindChild("MUON Raw digits")) | |
176 | gEve->GetEventScene()->FirstChild()->FindChild("MUON Raw digits")->SetRnrChildren(kTRUE); | |
177 | ||
178 | gEve->FullRedraw3D(kTRUE); | |
179 | glv->CurrentCamera().RotateRad(-0.4, 1); | |
180 | } | |
181 | } | |
182 | ||
183 | glv->DoDraw(); | |
5f4e9982 | 184 | */ |
185 | TGLViewer *glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("3D View")))->GetGLViewer(); | |
6aafad45 | 186 | TGLViewer *glv1 = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RPhi View")))->GetGLViewer(); |
187 | TGLViewer *glv2 = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RhoZ View")))->GetGLViewer(); | |
188 | ||
189 | Double_t RPhiCameraFrustrumCenter = TMath::Sqrt(glv1->CurrentCamera().FrustumCenter().X()*glv1->CurrentCamera().FrustumCenter().X() + glv1->CurrentCamera().FrustumCenter().Y()*glv1->CurrentCamera().FrustumCenter().Y()); | |
190 | ||
191 | Double_t RhoZCameraFrustrumCenter = TMath::Sqrt(glv2->CurrentCamera().FrustumCenter().X()*glv2->CurrentCamera().FrustumCenter().X() + glv2->CurrentCamera().FrustumCenter().Y()*glv2->CurrentCamera().FrustumCenter().Y()); | |
192 | ||
193 | if(RPhiCameraFrustrumCenter > 500 || RhoZCameraFrustrumCenter > 500) | |
194 | { | |
195 | ||
196 | glv->ResetCurrentCamera(); | |
197 | glv->CurrentCamera().RotateRad(-0.3, -1.8); | |
198 | glv->CurrentCamera().Dolly(250, kFALSE, kFALSE); | |
199 | ||
200 | glv1->ResetCurrentCamera(); | |
201 | glv2->ResetCurrentCamera(); | |
202 | ||
203 | gEve->FullRedraw3D(); | |
204 | ||
205 | } | |
206 | ||
d2a137c1 | 207 | multiView->DestroyEventRPhi(); |
3545fba9 | 208 | if (gCenterProjectionsAtPrimaryVertex) |
d2a137c1 | 209 | multiView->SetCenterRPhi(x[0], x[1], x[2]); |
210 | multiView->ImportEventRPhi(top); | |
3545fba9 | 211 | |
d2a137c1 | 212 | multiView->DestroyEventRhoZ(); |
3545fba9 | 213 | if (gCenterProjectionsAtPrimaryVertex) |
d2a137c1 | 214 | multiView->SetCenterRhoZ(x[0], x[1], x[2]); |
215 | multiView->ImportEventRhoZ(top); | |
44854372 | 216 | |
5f4e9982 | 217 | if(multiView->IsMuonView()) multiView->ImportEventMuon(top); |
218 | ||
9cd7053b | 219 | // Register image to amore. |
44854372 | 220 | const TString pichost("aldaqacrs3"); |
9cd7053b | 221 | TTimeStamp now; |
222 | Double_t delta = now.AsDouble() - g_pic_prev.AsDouble(); | |
223 | ||
224 | printf("Pre image dump: host='%s', delta=%f.\n", | |
225 | gSystem->HostName(), delta); | |
226 | ||
44854372 | 227 | if (pichost == gSystem->HostName() && delta >= 30) |
228 | { | |
229 | TString id; id.Form("online-viz-%03d", g_pic_id); | |
230 | TString pic(id); pic += ".png"; | |
231 | ||
9cd7053b | 232 | printf("In image dump: file='%s'.\n", pic.Data()); |
233 | ||
44854372 | 234 | gEve->GetBrowser()->RaiseWindow(); |
235 | gEve->FullRedraw3D(); | |
236 | gSystem->ProcessEvents(); | |
44854372 | 237 | |
9cd7053b | 238 | Int_t status; |
239 | ||
240 | status = gSystem->Exec(TString::Format("xwd -id %u | convert - %s", | |
241 | gEve->GetBrowser()->GetId(), pic.Data())); | |
242 | ||
243 | printf("Post capture -- status=%d.\n", status); | |
244 | ||
245 | status = gSystem->Exec(TString::Format("SendImageToAmore %s %s %d", | |
246 | id.Data(), pic.Data(), | |
247 | AliEveEventManager::AssertRawReader()->GetRunNumber())); | |
248 | ||
249 | printf("Post AMORE reg -- status=%d, run=%d.\n", status, | |
250 | AliEveEventManager::AssertRawReader()->GetRunNumber()); | |
44854372 | 251 | |
252 | if (++g_pic_id >= g_pic_max) | |
253 | g_pic_id = 0; | |
9cd7053b | 254 | g_pic_prev.Set(); |
44854372 | 255 | } |
319f3084 | 256 | } |