]>
Commit | Line | Data |
---|---|---|
5eb34a26 | 1 | #include "AliStorageAdministratorPanelListEvents.h" |
2 | ||
3 | #include <iostream> | |
4 | #include <sstream> | |
5 | #include <vector> | |
6 | ||
7 | #include <TG3DLine.h> | |
8 | #include <TGButton.h> | |
9 | #include <TGFrame.h> | |
10 | ||
5eb34a26 | 11 | using namespace std; |
5eb34a26 | 12 | |
13 | AliStorageAdministratorPanelListEvents *AliStorageAdministratorPanelListEvents::fInstance=0; | |
14 | ||
15 | ClassImp(AliStorageAdministratorPanelListEvents); | |
16 | ||
17 | #define WINDOWS_WIDTH 400 | |
18 | #define WINDOWS_HEIGHT 500 | |
19 | ||
20 | enum BUTTON{ | |
21 | BUTTON_CLOSE=1, | |
22 | BUTTON_GET_LIST, | |
23 | BUTTON_CHECK_PP, | |
24 | BUTTON_CHECK_PBPB, | |
25 | BUTTON_CHECK_TEMP, | |
26 | BUTTON_CHECK_PERM, | |
164d3d29 | 27 | BUTTON_MARK_EVENT, |
28 | BUTTON_LOAD_EVENT | |
5eb34a26 | 29 | }; |
30 | ||
31 | enum TEXTENTRY{ | |
32 | TEXTENTRY_RUN_MIN=1, | |
33 | TEXTENTRY_RUN_MAX, | |
34 | TEXTENTRY_EVENT_MIN, | |
35 | TEXTENTRY_EVENT_MAX, | |
36 | TEXTENTRY_MULTIPLICITY_MIN, | |
37 | TEXTENTRY_MULTIPLICITY_MAX | |
38 | }; | |
39 | ||
40 | AliStorageAdministratorPanelListEvents::AliStorageAdministratorPanelListEvents() : | |
41 | TGMainFrame(gClient->GetRoot(),400,400), | |
42 | fStatusLabel(0), | |
43 | fRunNumberMinEntry(0), | |
44 | fRunNumberMaxEntry(0), | |
45 | fEventNumberMinEntry(0), | |
46 | fEventNumberMaxEntry(0), | |
47 | fMultiplicityMinEntry(0), | |
48 | fMultiplicityMaxEntry(0), | |
49 | fProtonProtonCheckButton(0), | |
50 | fLeadLeadCheckButton(0), | |
51 | fTempCheckButton(0), | |
52 | fPermCheckButton(0), | |
53 | fEventsList(0), | |
54 | fEventsListVector(0), | |
164d3d29 | 55 | fServerSocket(SERVER_COMMUNICATION_REQ), |
5eb34a26 | 56 | fEventManager(0) |
57 | { | |
164d3d29 | 58 | fEventManager = AliStorageEventManager::GetEventManagerInstance(); |
59 | fEventManager->CreateSocket(fServerSocket); | |
5eb34a26 | 60 | InitWindow(); |
61 | } | |
62 | ||
63 | AliStorageAdministratorPanelListEvents::~AliStorageAdministratorPanelListEvents() | |
64 | { | |
65 | cout<<"ADMIN PANEL -- List events descructor called"; | |
5eb34a26 | 66 | cout<<" --- OK"<<endl; |
67 | } | |
68 | ||
69 | AliStorageAdministratorPanelListEvents* AliStorageAdministratorPanelListEvents::GetInstance() | |
70 | { | |
71 | if(!fInstance){fInstance = new AliStorageAdministratorPanelListEvents();} | |
72 | return fInstance; | |
73 | } | |
74 | ||
164d3d29 | 75 | |
76 | void AliStorageAdministratorPanelListEvents::SelectedEvent() | |
5eb34a26 | 77 | { |
164d3d29 | 78 | Emit("SelectedEvent()"); |
5eb34a26 | 79 | } |
80 | ||
81 | void AliStorageAdministratorPanelListEvents::InitWindow() | |
82 | { | |
83 | SetCleanup(kDeepCleanup); | |
84 | ||
85 | //min run number | |
86 | AddFrame(new TGLabel(this,"Minimum run number:"),new TGLayoutHints(kLHintsLeft)); | |
87 | ||
88 | fRunNumberMinEntry = new TGNumberEntry(this, | |
89 | 0, | |
90 | 6, | |
91 | TEXTENTRY_RUN_MIN, | |
92 | TGNumberFormat::kNESInteger, | |
93 | TGNumberFormat::kNEAPositive, | |
94 | TGNumberFormat::kNELNoLimits); | |
95 | AddFrame(fRunNumberMinEntry,new TGLayoutHints(kLHintsLeft)); | |
96 | ||
97 | //max run number | |
98 | AddFrame(new TGLabel(this,"Maximum run number:"),new TGLayoutHints(kLHintsLeft)); | |
99 | ||
100 | fRunNumberMaxEntry = new TGNumberEntry(this, | |
101 | 999999, | |
102 | 6, | |
103 | TEXTENTRY_RUN_MAX, | |
104 | TGNumberFormat::kNESInteger, | |
105 | TGNumberFormat::kNEAPositive, | |
106 | TGNumberFormat::kNELNoLimits); | |
107 | AddFrame(fRunNumberMaxEntry,new TGLayoutHints(kLHintsLeft)); | |
108 | ||
109 | //min event number | |
110 | AddFrame(new TGLabel(this,"Minimum event number:"),new TGLayoutHints(kLHintsLeft)); | |
111 | ||
112 | fEventNumberMinEntry = new TGNumberEntry(this, | |
113 | 0, | |
114 | 6, | |
115 | TEXTENTRY_EVENT_MIN, | |
116 | TGNumberFormat::kNESInteger, | |
117 | TGNumberFormat::kNEAPositive, | |
118 | TGNumberFormat::kNELNoLimits); | |
119 | AddFrame(fEventNumberMinEntry,new TGLayoutHints(kLHintsLeft)); | |
120 | ||
121 | //max event number | |
122 | AddFrame(new TGLabel(this,"Maximum event number:"),new TGLayoutHints(kLHintsLeft)); | |
123 | ||
124 | fEventNumberMaxEntry = new TGNumberEntry(this, | |
125 | 99999, | |
126 | 6, | |
127 | TEXTENTRY_EVENT_MAX, | |
128 | TGNumberFormat::kNESInteger, | |
129 | TGNumberFormat::kNEAPositive, | |
130 | TGNumberFormat::kNELNoLimits); | |
131 | AddFrame(fEventNumberMaxEntry,new TGLayoutHints(kLHintsLeft)); | |
132 | ||
133 | //min multiplicity | |
134 | AddFrame(new TGLabel(this,"Minimum multiplicity:"),new TGLayoutHints(kLHintsLeft)); | |
135 | ||
136 | fMultiplicityMinEntry = new TGNumberEntry(this, | |
137 | 0, | |
138 | 6, | |
139 | TEXTENTRY_MULTIPLICITY_MIN, | |
140 | TGNumberFormat::kNESInteger, | |
141 | TGNumberFormat::kNEAPositive, | |
142 | TGNumberFormat::kNELNoLimits); | |
143 | AddFrame(fMultiplicityMinEntry,new TGLayoutHints(kLHintsLeft)); | |
144 | ||
145 | //max multiplicity | |
146 | AddFrame(new TGLabel(this,"Maximum multiplicity:"),new TGLayoutHints(kLHintsLeft)); | |
147 | ||
148 | fMultiplicityMaxEntry = new TGNumberEntry(this, | |
149 | 9999, | |
150 | 6, | |
151 | TEXTENTRY_MULTIPLICITY_MAX, | |
152 | TGNumberFormat::kNESInteger, | |
153 | TGNumberFormat::kNEAPositive, | |
154 | TGNumberFormat::kNELNoLimits); | |
155 | AddFrame(fMultiplicityMaxEntry,new TGLayoutHints(kLHintsLeft)); | |
156 | ||
157 | //p-p check button | |
158 | AddFrame(new TGLabel(this,"System:"),new TGLayoutHints(kLHintsLeft)); | |
159 | fProtonProtonCheckButton = new TGCheckButton(this,"p-p",BUTTON_CHECK_PP); | |
160 | fProtonProtonCheckButton->SetOn(); | |
161 | AddFrame(fProtonProtonCheckButton,new TGLayoutHints(kLHintsLeft)); | |
162 | ||
163 | //Pb-Pb check button | |
164 | fLeadLeadCheckButton = new TGCheckButton(this,"Pb-Pb",BUTTON_CHECK_PBPB); | |
165 | fLeadLeadCheckButton->SetOn(); | |
166 | AddFrame(fLeadLeadCheckButton,new TGLayoutHints(kLHintsLeft)); | |
167 | ||
168 | //temp check button | |
169 | AddFrame(new TGLabel(this,"Storage type:"),new TGLayoutHints(kLHintsLeft)); | |
170 | fTempCheckButton = new TGCheckButton(this,"Temporary",BUTTON_CHECK_TEMP); | |
171 | fTempCheckButton->SetOn(); | |
172 | AddFrame(fTempCheckButton,new TGLayoutHints(kLHintsLeft)); | |
173 | ||
174 | //perm check button | |
175 | fPermCheckButton = new TGCheckButton(this,"Permanent",BUTTON_CHECK_PERM); | |
176 | fPermCheckButton->SetOn(); | |
177 | AddFrame(fPermCheckButton,new TGLayoutHints(kLHintsLeft)); | |
178 | ||
179 | // status label | |
180 | fStatusLabel = new TGLabel(this,""); | |
181 | AddFrame(fStatusLabel,new TGLayoutHints(kLHintsExpandX | kLHintsLeft)); | |
182 | ||
183 | //buttons | |
01ca7d6f | 184 | fCloseButton = new TGTextButton(this,"Close",BUTTON_CLOSE); |
185 | AddFrame(fCloseButton, | |
5eb34a26 | 186 | new TGLayoutHints(kLHintsLeft)); |
01ca7d6f | 187 | fGetListButton = new TGTextButton(this,"Get event's list",BUTTON_GET_LIST); |
188 | AddFrame(fGetListButton, | |
5eb34a26 | 189 | new TGLayoutHints(kLHintsRight)); |
01ca7d6f | 190 | fMarkButton = new TGTextButton(this,"Mark selected event",BUTTON_MARK_EVENT); |
191 | AddFrame(fMarkButton, | |
192 | new TGLayoutHints(kLHintsRight)); | |
193 | fLoadButton = new TGTextButton(this,"Load event",BUTTON_LOAD_EVENT); | |
194 | AddFrame(fLoadButton, | |
5eb34a26 | 195 | new TGLayoutHints(kLHintsRight)); |
164d3d29 | 196 | |
5eb34a26 | 197 | |
198 | //event's list | |
199 | fEventsList = new TGListBox(this,0); | |
200 | fEventsList->AddEntry(new TGString("Run Event System Mult Marked"),0); | |
201 | AddFrame(fEventsList,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY)); | |
202 | ||
203 | SetWindowName("List Events"); | |
204 | MapSubwindows(); | |
205 | Resize(WINDOWS_WIDTH,WINDOWS_HEIGHT); | |
206 | MapWindow(); | |
207 | } | |
208 | ||
209 | ||
210 | ||
211 | ||
212 | void AliStorageAdministratorPanelListEvents::onGetListButton() | |
213 | { | |
214 | //prepare and send request message | |
215 | struct serverRequestStruct *requestMessage = new struct serverRequestStruct; | |
216 | struct listRequestStruct list; | |
217 | ||
218 | //get listing parameters from somwhere | |
219 | list.runNumber[0]=fRunNumberMinEntry->GetIntNumber(); | |
220 | list.runNumber[1]=fRunNumberMaxEntry->GetIntNumber(); | |
221 | list.eventNumber[0]=fEventNumberMinEntry->GetIntNumber(); | |
222 | list.eventNumber[1]=fEventNumberMaxEntry->GetIntNumber(); | |
223 | if(fTempCheckButton->GetState()==1) | |
224 | { | |
225 | list.marked[0]=0; | |
226 | } | |
227 | else | |
228 | { | |
229 | list.marked[0]=-1; | |
230 | } | |
231 | if(fPermCheckButton->GetState()==1) | |
232 | { | |
233 | list.marked[1]=1; | |
234 | } | |
235 | else | |
236 | { | |
237 | list.marked[1]=-1; | |
238 | } | |
239 | list.multiplicity[0]=fMultiplicityMinEntry->GetIntNumber(); | |
240 | list.multiplicity[1]=fMultiplicityMaxEntry->GetIntNumber(); | |
241 | if(fProtonProtonCheckButton->GetState()==1) | |
242 | { | |
243 | strcpy(list.system[0],"p-p"); | |
244 | } | |
245 | else | |
246 | { | |
247 | strcpy(list.system[0],""); | |
248 | } | |
249 | if(fLeadLeadCheckButton->GetState()==1) | |
250 | { | |
251 | strcpy(list.system[1],"Pb-Pb"); | |
252 | } | |
253 | else | |
254 | { | |
255 | strcpy(list.system[1],""); | |
256 | } | |
257 | ||
258 | requestMessage->messageType = REQUEST_LIST_EVENTS; | |
259 | requestMessage->list = list; | |
260 | ||
261 | fEventManager->Send(requestMessage,fServerSocket); | |
262 | ||
263 | fEventsList->RemoveAll(); | |
264 | fEventsList->AddEntry(new TGString("Run Event System Mult Marked"),0); | |
265 | ||
266 | vector<serverListStruct> receivedList = fEventManager->GetServerListVector(fServerSocket); | |
267 | ||
5eb34a26 | 268 | for(unsigned int i=0;i<receivedList.size();i++) |
269 | { | |
270 | fEventsList->InsertEntry(Form("%d %d %s %d %d ", | |
271 | receivedList[i].runNumber, | |
272 | receivedList[i].eventNumber, | |
273 | receivedList[i].system, | |
274 | receivedList[i].multiplicity, | |
275 | receivedList[i].marked),i+1,i); | |
276 | ||
277 | cout<<receivedList[i].runNumber<<receivedList[i].eventNumber<<endl; | |
278 | ||
279 | } | |
280 | ||
281 | fEventsListVector = receivedList; | |
282 | ||
283 | gClient->HandleInput(); | |
284 | gClient->NeedRedraw(fEventsList, kTRUE); | |
285 | gClient->HandleInput(); | |
286 | MapSubwindows(); | |
287 | MapWindow(); | |
288 | Layout(); | |
a410aca4 | 289 | delete requestMessage; |
5eb34a26 | 290 | } |
291 | ||
292 | ||
293 | void AliStorageAdministratorPanelListEvents::onMarkButton() | |
294 | { | |
295 | int runNumber; | |
296 | int eventNumber; | |
297 | ||
298 | //get run and event number from selected row | |
299 | int selectedEventNumber = fEventsList->GetSelected()-1; | |
5eb34a26 | 300 | |
301 | if(selectedEventNumber<0)return; | |
302 | ||
303 | runNumber=fEventsListVector[selectedEventNumber].runNumber; | |
304 | eventNumber=fEventsListVector[selectedEventNumber].eventNumber; | |
305 | ||
306 | struct serverRequestStruct *requestMessage = new struct serverRequestStruct; | |
307 | struct eventStruct mark; | |
308 | mark.runNumber = runNumber; | |
309 | mark.eventNumber = eventNumber; | |
310 | requestMessage->messageType = REQUEST_MARK_EVENT; | |
311 | requestMessage->event = mark; | |
312 | ||
313 | fEventManager->Send(requestMessage,fServerSocket); | |
314 | ||
164d3d29 | 315 | bool response = fEventManager->GetBool(fServerSocket); |
316 | ||
317 | if(response) | |
5eb34a26 | 318 | { |
319 | fStatusLabel->SetText("Event marked"); | |
320 | cout<<"ADMIN PANEL -- Event marked succesfully"<<endl; | |
321 | } | |
322 | else | |
323 | { | |
324 | fStatusLabel->SetText("Couldn't mark this event"); | |
325 | cout<<"ADMIN PANEL -- Could not matk event"<<endl; | |
326 | } | |
327 | } | |
328 | ||
164d3d29 | 329 | void AliStorageAdministratorPanelListEvents::onLoadButton() |
330 | { | |
331 | int selectedEventNumber = fEventsList->GetSelected()-1; | |
332 | int runNumber=fEventsListVector[selectedEventNumber].runNumber; | |
333 | int eventNumber=fEventsListVector[selectedEventNumber].eventNumber; | |
334 | ||
335 | ||
336 | struct serverRequestStruct *requestMessage = new struct serverRequestStruct; | |
337 | struct eventStruct eventToLoad; | |
338 | eventToLoad.runNumber = runNumber; | |
339 | eventToLoad.eventNumber = eventNumber; | |
340 | requestMessage->messageType = REQUEST_GET_EVENT; | |
341 | requestMessage->event = eventToLoad; | |
342 | ||
343 | fEventManager->Send(requestMessage,fServerSocket); | |
344 | AliESDEvent *resultEvent = fEventManager->GetEvent(fServerSocket); | |
345 | ||
346 | if(resultEvent) | |
347 | { | |
348 | cout<<"ADMIN -- received event"<<endl; | |
349 | fCurrentEvent = resultEvent; | |
350 | } | |
351 | else | |
352 | { | |
353 | cout<<"ADMIN -- received no event"<<endl; | |
354 | } | |
355 | ||
356 | SelectedEvent(); | |
357 | } | |
358 | ||
5eb34a26 | 359 | void AliStorageAdministratorPanelListEvents::onCloseButton(){onExit();} |
360 | void AliStorageAdministratorPanelListEvents::CloseWindow(){onExit();} | |
361 | ||
362 | void AliStorageAdministratorPanelListEvents::onExit() | |
363 | { | |
364 | cout<<"Quiting list events"; | |
365 | if(fInstance){delete fInstance;fInstance=0;} | |
366 | cout<<" -- OK"<<endl; | |
367 | } | |
368 | ||
369 | Bool_t AliStorageAdministratorPanelListEvents::ProcessMessage(Long_t msg, Long_t parm1, Long_t) | |
370 | { | |
371 | switch (GET_MSG(msg)) | |
372 | { | |
373 | case kC_COMMAND: | |
374 | switch (GET_SUBMSG(msg)) | |
375 | { | |
376 | case kCM_BUTTON: | |
377 | switch(parm1) | |
378 | { | |
379 | case BUTTON_CLOSE:onCloseButton();break; | |
380 | case BUTTON_GET_LIST:onGetListButton();break; | |
381 | case BUTTON_MARK_EVENT:onMarkButton();break; | |
164d3d29 | 382 | case BUTTON_LOAD_EVENT:onLoadButton();break; |
5eb34a26 | 383 | default:break; |
384 | } | |
385 | break; | |
386 | default:break; | |
387 | } | |
388 | break; | |
389 | default:break; | |
390 | } | |
391 | ||
392 | return false; | |
393 | } | |
01ca7d6f | 394 | |
395 | void AliStorageAdministratorPanelListEvents::SetOfflineMode(Bool_t ison) | |
396 | { | |
397 | ||
398 | if (ison) { | |
399 | fProtonProtonCheckButton->SetDisabledAndSelected(ison); | |
400 | fLeadLeadCheckButton->SetDisabledAndSelected(ison); | |
401 | fTempCheckButton->SetDisabledAndSelected(ison); | |
402 | fPermCheckButton->SetDisabledAndSelected(ison); | |
403 | } | |
404 | else { | |
405 | fProtonProtonCheckButton->SetEnabled(!ison); | |
406 | fLeadLeadCheckButton->SetEnabled(!ison); | |
407 | fTempCheckButton->SetEnabled(!ison); | |
408 | fPermCheckButton->SetEnabled(!ison); | |
409 | fProtonProtonCheckButton->SetOn(); | |
410 | fLeadLeadCheckButton->SetOn(); | |
411 | fTempCheckButton->SetOn(); | |
412 | fPermCheckButton->SetOn(); | |
413 | } | |
414 | ||
415 | fRunNumberMinEntry->SetState(!ison); | |
416 | fRunNumberMaxEntry->SetState(!ison); | |
417 | fEventNumberMinEntry->SetState(!ison); | |
418 | fEventNumberMaxEntry->SetState(!ison); | |
419 | fMultiplicityMinEntry->SetState(!ison); | |
420 | fMultiplicityMaxEntry->SetState(!ison); | |
421 | ||
422 | fCloseButton->SetEnabled(!ison); | |
423 | fGetListButton->SetEnabled(!ison); | |
424 | fMarkButton->SetEnabled(!ison); | |
425 | fLoadButton->SetEnabled(!ison); | |
426 | } |