]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MONITOR/alistoragemanager/AliStorageAdministratorPanelListEvents.cxx
temporary fix of broken compilation when DATE is insalled
[u/mrichter/AliRoot.git] / MONITOR / alistoragemanager / AliStorageAdministratorPanelListEvents.cxx
CommitLineData
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 11using namespace std;
5eb34a26 12
13AliStorageAdministratorPanelListEvents *AliStorageAdministratorPanelListEvents::fInstance=0;
14
15ClassImp(AliStorageAdministratorPanelListEvents);
16
17#define WINDOWS_WIDTH 400
18#define WINDOWS_HEIGHT 500
19
20enum 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
31enum 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
40AliStorageAdministratorPanelListEvents::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
63AliStorageAdministratorPanelListEvents::~AliStorageAdministratorPanelListEvents()
64{
65 cout<<"ADMIN PANEL -- List events descructor called";
5eb34a26 66 cout<<" --- OK"<<endl;
67}
68
69AliStorageAdministratorPanelListEvents* AliStorageAdministratorPanelListEvents::GetInstance()
70{
71 if(!fInstance){fInstance = new AliStorageAdministratorPanelListEvents();}
72 return fInstance;
73}
74
164d3d29 75
76void AliStorageAdministratorPanelListEvents::SelectedEvent()
5eb34a26 77{
164d3d29 78 Emit("SelectedEvent()");
5eb34a26 79}
80
81void 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
212void 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 {
efaef546 251 strcpy(list.system[1],"A-A");
5eb34a26 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);
efaef546 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);
5eb34a26 276 }
277
278 fEventsListVector = receivedList;
279
280 gClient->HandleInput();
281 gClient->NeedRedraw(fEventsList, kTRUE);
282 gClient->HandleInput();
283 MapSubwindows();
284 MapWindow();
285 Layout();
a410aca4 286 delete requestMessage;
5eb34a26 287}
288
289
290void AliStorageAdministratorPanelListEvents::onMarkButton()
291{
292 int runNumber;
293 int eventNumber;
294
295 //get run and event number from selected row
296 int selectedEventNumber = fEventsList->GetSelected()-1;
5eb34a26 297
298 if(selectedEventNumber<0)return;
299
300 runNumber=fEventsListVector[selectedEventNumber].runNumber;
301 eventNumber=fEventsListVector[selectedEventNumber].eventNumber;
302
303 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
304 struct eventStruct mark;
305 mark.runNumber = runNumber;
306 mark.eventNumber = eventNumber;
307 requestMessage->messageType = REQUEST_MARK_EVENT;
308 requestMessage->event = mark;
309
310 fEventManager->Send(requestMessage,fServerSocket);
311
164d3d29 312 bool response = fEventManager->GetBool(fServerSocket);
313
314 if(response)
5eb34a26 315 {
316 fStatusLabel->SetText("Event marked");
317 cout<<"ADMIN PANEL -- Event marked succesfully"<<endl;
318 }
319 else
320 {
321 fStatusLabel->SetText("Couldn't mark this event");
322 cout<<"ADMIN PANEL -- Could not matk event"<<endl;
323 }
324}
325
164d3d29 326void AliStorageAdministratorPanelListEvents::onLoadButton()
327{
328 int selectedEventNumber = fEventsList->GetSelected()-1;
329 int runNumber=fEventsListVector[selectedEventNumber].runNumber;
330 int eventNumber=fEventsListVector[selectedEventNumber].eventNumber;
331
332
333 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
334 struct eventStruct eventToLoad;
335 eventToLoad.runNumber = runNumber;
336 eventToLoad.eventNumber = eventNumber;
337 requestMessage->messageType = REQUEST_GET_EVENT;
338 requestMessage->event = eventToLoad;
339
340 fEventManager->Send(requestMessage,fServerSocket);
341 AliESDEvent *resultEvent = fEventManager->GetEvent(fServerSocket);
342
343 if(resultEvent)
344 {
345 cout<<"ADMIN -- received event"<<endl;
346 fCurrentEvent = resultEvent;
347 }
348 else
349 {
350 cout<<"ADMIN -- received no event"<<endl;
351 }
352
353 SelectedEvent();
354}
355
5eb34a26 356void AliStorageAdministratorPanelListEvents::onCloseButton(){onExit();}
357void AliStorageAdministratorPanelListEvents::CloseWindow(){onExit();}
358
359void AliStorageAdministratorPanelListEvents::onExit()
360{
361 cout<<"Quiting list events";
362 if(fInstance){delete fInstance;fInstance=0;}
363 cout<<" -- OK"<<endl;
364}
365
366Bool_t AliStorageAdministratorPanelListEvents::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
367{
368 switch (GET_MSG(msg))
369 {
370 case kC_COMMAND:
371 switch (GET_SUBMSG(msg))
372 {
373 case kCM_BUTTON:
374 switch(parm1)
375 {
376 case BUTTON_CLOSE:onCloseButton();break;
377 case BUTTON_GET_LIST:onGetListButton();break;
378 case BUTTON_MARK_EVENT:onMarkButton();break;
164d3d29 379 case BUTTON_LOAD_EVENT:onLoadButton();break;
5eb34a26 380 default:break;
381 }
382 break;
383 default:break;
384 }
385 break;
386 default:break;
387 }
388
389 return false;
390}
01ca7d6f 391
392void AliStorageAdministratorPanelListEvents::SetOfflineMode(Bool_t ison)
393{
394
395 if (ison) {
396 fProtonProtonCheckButton->SetDisabledAndSelected(ison);
397 fLeadLeadCheckButton->SetDisabledAndSelected(ison);
398 fTempCheckButton->SetDisabledAndSelected(ison);
399 fPermCheckButton->SetDisabledAndSelected(ison);
400 }
401 else {
402 fProtonProtonCheckButton->SetEnabled(!ison);
403 fLeadLeadCheckButton->SetEnabled(!ison);
404 fTempCheckButton->SetEnabled(!ison);
405 fPermCheckButton->SetEnabled(!ison);
406 fProtonProtonCheckButton->SetOn();
407 fLeadLeadCheckButton->SetOn();
408 fTempCheckButton->SetOn();
409 fPermCheckButton->SetOn();
410 }
411
412 fRunNumberMinEntry->SetState(!ison);
413 fRunNumberMaxEntry->SetState(!ison);
414 fEventNumberMinEntry->SetState(!ison);
415 fEventNumberMaxEntry->SetState(!ison);
416 fMultiplicityMinEntry->SetState(!ison);
417 fMultiplicityMaxEntry->SetState(!ison);
418
419 fCloseButton->SetEnabled(!ison);
420 fGetListButton->SetEnabled(!ison);
421 fMarkButton->SetEnabled(!ison);
422 fLoadButton->SetEnabled(!ison);
423}