1 #include "AliStorageAdministratorPanelListEvents.h"
13 AliStorageAdministratorPanelListEvents *AliStorageAdministratorPanelListEvents::fInstance=0;
15 ClassImp(AliStorageAdministratorPanelListEvents);
17 #define WINDOWS_WIDTH 400
18 #define WINDOWS_HEIGHT 500
36 ENTRY_MULTIPLICITY_MIN,
37 ENTRY_MULTIPLICITY_MAX
40 AliStorageAdministratorPanelListEvents::AliStorageAdministratorPanelListEvents() :
41 TGMainFrame(gClient->GetRoot(),10,10,kMainFrame | kVerticalFrame),
47 fMultiplicityMinEntry(0),
48 fMultiplicityMaxEntry(0),
51 fTemporaryCheckbox(0),
52 fPermanentCheckbox(0),
55 fServerSocket(SERVER_COMMUNICATION_REQ),
58 fEventManager = AliStorageEventManager::GetEventManagerInstance();
59 fEventManager->CreateSocket(fServerSocket);
62 SetLayoutBroken(kTRUE);
67 AliStorageAdministratorPanelListEvents::~AliStorageAdministratorPanelListEvents()
69 cout<<"ADMIN PANEL -- List events descructor called";
70 cout<<" --- OK"<<endl;
73 AliStorageAdministratorPanelListEvents* AliStorageAdministratorPanelListEvents::GetInstance()
75 if(!fInstance){fInstance = new AliStorageAdministratorPanelListEvents();}
80 void AliStorageAdministratorPanelListEvents::SelectedEvent()
82 Emit("SelectedEvent()");
85 void AliStorageAdministratorPanelListEvents::InitWindow()
88 TGGroupFrame *fRunGroupFrame = new TGGroupFrame(this,"Run");
89 fRunGroupFrame->SetLayoutBroken(kTRUE);
90 fRunMinEntry = new TGNumberEntry(fRunGroupFrame, (Double_t) 0,9,ENTRY_RUN_MIN,(TGNumberFormat::EStyle) 5);
91 fRunGroupFrame->AddFrame(fRunMinEntry, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
92 fRunMinEntry->MoveResize(38,22,80,22);
93 TGLabel *fRunMinLabel = new TGLabel(fRunGroupFrame,"Min:");
94 fRunMinLabel->SetTextJustify(36);
95 fRunMinLabel->SetMargins(0,0,0,0);
96 fRunMinLabel->SetWrapLength(-1);
97 fRunGroupFrame->AddFrame(fRunMinLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
98 fRunMinLabel->MoveResize(8,22,30,18);
100 TGLabel *fRunMaxLabel = new TGLabel(fRunGroupFrame,"Max:");
101 fRunMaxLabel->SetTextJustify(36);
102 fRunMaxLabel->SetMargins(0,0,0,0);
103 fRunMaxLabel->SetWrapLength(-1);
104 fRunGroupFrame->AddFrame(fRunMaxLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
105 fRunMaxLabel->MoveResize(120,22,30,24);
106 fRunMaxEntry = new TGNumberEntry(fRunGroupFrame, (Double_t) 0,8,ENTRY_RUN_MAX,(TGNumberFormat::EStyle) 5);
107 fRunGroupFrame->AddFrame(fRunMaxEntry, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
108 fRunMaxEntry->MoveResize(150,22,72,22);
110 fRunGroupFrame->SetLayoutManager(new TGVerticalLayout(fRunGroupFrame));
111 fRunGroupFrame->Resize(230,60);
112 AddFrame(fRunGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
113 fRunGroupFrame->MoveResize(8,8,230,60);
115 // "Event" group frame
116 TGGroupFrame *fEventGroupFrame = new TGGroupFrame(this,"Event");
117 fEventGroupFrame->SetLayoutBroken(kTRUE);
118 fEventMinEntry = new TGNumberEntry(fEventGroupFrame, (Double_t) 0,9,ENTRY_EVENT_MIN,(TGNumberFormat::EStyle) 5);
119 fEventGroupFrame->AddFrame(fEventMinEntry, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
120 fEventMinEntry->MoveResize(38,22,80,22);
121 TGLabel *fEventMinLabel = new TGLabel(fEventGroupFrame,"Min:");
122 fEventMinLabel->SetTextJustify(36);
123 fEventMinLabel->SetMargins(0,0,0,0);
124 fEventMinLabel->SetWrapLength(-1);
125 fEventGroupFrame->AddFrame(fEventMinLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
126 fEventMinLabel->MoveResize(8,22,30,18);
128 TGLabel *fEventMaxLabel = new TGLabel(fEventGroupFrame,"Max:");
129 fEventMaxLabel->SetTextJustify(36);
130 fEventMaxLabel->SetMargins(0,0,0,0);
131 fEventMaxLabel->SetWrapLength(-1);
132 fEventGroupFrame->AddFrame(fEventMaxLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
133 fEventMaxLabel->MoveResize(120,22,30,24);
134 fEventMaxEntry = new TGNumberEntry(fEventGroupFrame, (Double_t) 0,8,ENTRY_EVENT_MAX,(TGNumberFormat::EStyle) 5);
135 fEventGroupFrame->AddFrame(fEventMaxEntry, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
136 fEventMaxEntry->MoveResize(150,22,72,22);
137 fEventGroupFrame->SetLayoutManager(new TGVerticalLayout(fEventGroupFrame));
138 fEventGroupFrame->Resize(230,60);
139 AddFrame(fEventGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
140 fEventGroupFrame->MoveResize(8,68,230,60);
142 // "Multiplicity" group frame
143 TGGroupFrame *fMultiplicityGroupFrame = new TGGroupFrame(this,"Multiplicity");
144 fMultiplicityGroupFrame->SetLayoutBroken(kTRUE);
145 fMultiplicityMinEntry = new TGNumberEntry(fMultiplicityGroupFrame, (Double_t) 0,9,ENTRY_MULTIPLICITY_MIN,(TGNumberFormat::EStyle) 5);
146 fMultiplicityGroupFrame->AddFrame(fMultiplicityMinEntry, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
147 fMultiplicityMinEntry->MoveResize(38,22,80,22);
148 TGLabel *fMultiplicityMinLabel = new TGLabel(fMultiplicityGroupFrame,"Min:");
149 fMultiplicityMinLabel->SetTextJustify(36);
150 fMultiplicityMinLabel->SetMargins(0,0,0,0);
151 fMultiplicityMinLabel->SetWrapLength(-1);
152 fMultiplicityGroupFrame->AddFrame(fMultiplicityMinLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
153 fMultiplicityMinLabel->MoveResize(8,22,30,18);
154 TGLabel *fMultiplicityMaxLabel = new TGLabel(fMultiplicityGroupFrame,"Max:");
155 fMultiplicityMaxLabel->SetTextJustify(36);
156 fMultiplicityMaxLabel->SetMargins(0,0,0,0);
157 fMultiplicityMaxLabel->SetWrapLength(-1);
158 fMultiplicityGroupFrame->AddFrame(fMultiplicityMaxLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
159 fMultiplicityMaxLabel->MoveResize(120,22,30,24);
160 fMultiplicityMaxEntry = new TGNumberEntry(fMultiplicityGroupFrame, (Double_t) 0,8,ENTRY_MULTIPLICITY_MAX,(TGNumberFormat::EStyle) 5);
161 fMultiplicityGroupFrame->AddFrame(fMultiplicityMaxEntry, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
162 fMultiplicityMaxEntry->MoveResize(150,22,72,22);
164 fMultiplicityGroupFrame->SetLayoutManager(new TGVerticalLayout(fMultiplicityGroupFrame));
165 fMultiplicityGroupFrame->Resize(230,60);
166 AddFrame(fMultiplicityGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
167 fMultiplicityGroupFrame->MoveResize(8,128,230,60);
169 // "Beam" group frame
170 TGGroupFrame *fBeamGroupFrame = new TGGroupFrame(this,"Beam");
171 fBeamGroupFrame->SetLayoutBroken(kTRUE);
172 fPPcheckbox = new TGCheckButton(fBeamGroupFrame,"p-p",BUTTON_CHECK_PP);
173 fPPcheckbox->SetTextJustify(36);
174 fPPcheckbox->SetMargins(0,0,0,0);
175 fPPcheckbox->SetWrapLength(-1);
176 fBeamGroupFrame->AddFrame(fPPcheckbox, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
177 fPPcheckbox->MoveResize(8,22,40,19);
178 fPbPbcheckbox = new TGCheckButton(fBeamGroupFrame,"Pb-Pb",BUTTON_CHECK_PBPB);
179 fPbPbcheckbox->SetTextJustify(36);
180 fPbPbcheckbox->SetMargins(0,0,0,0);
181 fPbPbcheckbox->SetWrapLength(-1);
182 fBeamGroupFrame->AddFrame(fPbPbcheckbox, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
183 fPbPbcheckbox->MoveResize(60,22,55,19);
185 fBeamGroupFrame->SetLayoutManager(new TGVerticalLayout(fBeamGroupFrame));
186 fBeamGroupFrame->Resize(230,60);
187 AddFrame(fBeamGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
188 fBeamGroupFrame->MoveResize(8,188,230,60);
190 // "Storage" group frame
191 TGGroupFrame *fStorageGroupFrame = new TGGroupFrame(this,"Storage");
192 fStorageGroupFrame->SetLayoutBroken(kTRUE);
193 fPermanentCheckbox = new TGCheckButton(fStorageGroupFrame,"Permanent",BUTTON_CHECK_PERM);
194 fPermanentCheckbox->SetTextJustify(36);
195 fPermanentCheckbox->SetMargins(0,0,0,0);
196 fPermanentCheckbox->SetWrapLength(-1);
197 fStorageGroupFrame->AddFrame(fPermanentCheckbox, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
198 fPermanentCheckbox->MoveResize(8,22,80,19);
199 fTemporaryCheckbox = new TGCheckButton(fStorageGroupFrame,"Temporary",BUTTON_CHECK_TEMP);
200 fTemporaryCheckbox->SetTextJustify(36);
201 fTemporaryCheckbox->SetMargins(0,0,0,0);
202 fTemporaryCheckbox->SetWrapLength(-1);
203 fStorageGroupFrame->AddFrame(fTemporaryCheckbox, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
204 fTemporaryCheckbox->MoveResize(120,22,80,19);
206 fStorageGroupFrame->SetLayoutManager(new TGVerticalLayout(fStorageGroupFrame));
207 fStorageGroupFrame->Resize(230,60);
208 AddFrame(fStorageGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
209 fStorageGroupFrame->MoveResize(8,248,230,60);
212 fMarkButton = new TGTextButton(this,"Mark event",BUTTON_MARK_EVENT);
213 fMarkButton->SetTextJustify(36);
214 fMarkButton->SetMargins(0,0,0,0);
215 fMarkButton->SetWrapLength(-1);
216 fMarkButton->Resize(100,24);
217 AddFrame(fMarkButton, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
218 fMarkButton->MoveResize(8,310,100,24);
220 fLoadButton = new TGTextButton(this,"Load selected event",BUTTON_LOAD_EVENT);
221 fLoadButton->SetTextJustify(36);
222 fLoadButton->SetMargins(0,0,0,0);
223 fLoadButton->SetWrapLength(-1);
224 fLoadButton->Resize(130,24);
225 AddFrame(fLoadButton, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
226 fLoadButton->MoveResize(108,310,130,24);
228 fGetListButton = new TGTextButton(this,"List events",BUTTON_GET_LIST);
229 fGetListButton->SetTextJustify(36);
230 fGetListButton->SetMargins(0,0,0,0);
231 fGetListButton->SetWrapLength(-1);
232 fGetListButton->Resize(100,24);
233 AddFrame(fGetListButton, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
234 fGetListButton->MoveResize(8,334,100,24);
237 fListBox = new TGListBox(this);
238 fListBox->SetName("fListBox");
239 fListBox->AddEntry("Entry 1",0);
240 fListBox->Resize(230,436);
241 AddFrame(fListBox, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
242 fListBox->MoveResize(8,360,230,436);
244 SetMWMHints(kMWMDecorAll,
248 Resize(GetDefaultSize());
256 void AliStorageAdministratorPanelListEvents::onGetListButton()
258 //prepare and send request message
259 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
260 struct listRequestStruct list;
262 //get listing parameters from somwhere
263 list.runNumber[0]=fRunMinEntry->GetIntNumber();
264 list.runNumber[1]=fRunMaxEntry->GetIntNumber();
265 list.eventNumber[0]=fEventMinEntry->GetIntNumber();
266 list.eventNumber[1]=fEventMaxEntry->GetIntNumber();
267 if(fTemporaryCheckbox->GetState()==1)
275 if(fPermanentCheckbox->GetState()==1)
283 list.multiplicity[0]=fMultiplicityMinEntry->GetIntNumber();
284 list.multiplicity[1]=fMultiplicityMaxEntry->GetIntNumber();
285 if(fPPcheckbox->GetState()==1)
287 strcpy(list.system[0],"p-p");
291 strcpy(list.system[0],"");
293 if(fPbPbcheckbox->GetState()==1)
295 strcpy(list.system[1],"A-A");
299 strcpy(list.system[1],"");
302 requestMessage->messageType = REQUEST_LIST_EVENTS;
303 requestMessage->list = list;
305 fEventManager->Send(requestMessage,fServerSocket);
307 fListBox->RemoveAll();
308 fListBox->AddEntry(new TGString("Run Event System Mult Marked"),0);
310 vector<serverListStruct> receivedList = fEventManager->GetServerListVector(fServerSocket);
312 for(unsigned int i=0;i<receivedList.size();i++)
314 fListBox->InsertEntry(Form("%d %d %s %d %d ",
315 receivedList[i].runNumber,
316 receivedList[i].eventNumber,
317 receivedList[i].system,
318 receivedList[i].multiplicity,
319 receivedList[i].marked),i+1,i);
322 fEventsListVector = receivedList;
324 gClient->HandleInput();
325 gClient->NeedRedraw(fListBox, kTRUE);
326 gClient->HandleInput();
330 delete requestMessage;
334 void AliStorageAdministratorPanelListEvents::onMarkButton()
339 //get run and event number from selected row
340 int selectedEventNumber = fListBox->GetSelected()-1;
342 if(selectedEventNumber<0)return;
344 runNumber=fEventsListVector[selectedEventNumber].runNumber;
345 eventNumber=fEventsListVector[selectedEventNumber].eventNumber;
347 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
348 struct eventStruct mark;
349 mark.runNumber = runNumber;
350 mark.eventNumber = eventNumber;
351 requestMessage->messageType = REQUEST_MARK_EVENT;
352 requestMessage->event = mark;
354 fEventManager->Send(requestMessage,fServerSocket);
356 bool response = fEventManager->GetBool(fServerSocket);
360 fStatusLabel->SetText("Event marked");
361 cout<<"ADMIN PANEL -- Event marked succesfully"<<endl;
365 fStatusLabel->SetText("Couldn't mark this event");
366 cout<<"ADMIN PANEL -- Could not matk event"<<endl;
370 void AliStorageAdministratorPanelListEvents::onLoadButton()
372 int selectedEventNumber = fListBox->GetSelected()-1;
373 int runNumber=fEventsListVector[selectedEventNumber].runNumber;
374 int eventNumber=fEventsListVector[selectedEventNumber].eventNumber;
377 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
378 struct eventStruct eventToLoad;
379 eventToLoad.runNumber = runNumber;
380 eventToLoad.eventNumber = eventNumber;
381 requestMessage->messageType = REQUEST_GET_EVENT;
382 requestMessage->event = eventToLoad;
384 fEventManager->Send(requestMessage,fServerSocket);
385 AliESDEvent *resultEvent = fEventManager->GetEvent(fServerSocket);
389 cout<<"ADMIN -- received event"<<endl;
390 fCurrentEvent = resultEvent;
394 cout<<"ADMIN -- received no event"<<endl;
400 void AliStorageAdministratorPanelListEvents::onCloseButton(){onExit();}
401 void AliStorageAdministratorPanelListEvents::CloseWindow(){onExit();}
403 void AliStorageAdministratorPanelListEvents::onExit()
405 cout<<"Quiting list events";
406 if(fInstance){delete fInstance;fInstance=0;}
407 cout<<" -- OK"<<endl;
410 Bool_t AliStorageAdministratorPanelListEvents::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
412 switch (GET_MSG(msg))
415 switch (GET_SUBMSG(msg))
420 case BUTTON_CLOSE:onCloseButton();break;
421 case BUTTON_GET_LIST:onGetListButton();break;
422 case BUTTON_MARK_EVENT:onMarkButton();break;
423 case BUTTON_LOAD_EVENT:onLoadButton();break;
436 void AliStorageAdministratorPanelListEvents::SetOfflineMode(Bool_t ison)
440 fPPcheckbox->SetDisabledAndSelected(ison);
441 fPbPbcheckbox->SetDisabledAndSelected(ison);
442 fTemporaryCheckbox->SetDisabledAndSelected(ison);
443 fPermanentCheckbox->SetDisabledAndSelected(ison);
446 fPPcheckbox->SetEnabled(!ison);
447 fPbPbcheckbox->SetEnabled(!ison);
448 fTemporaryCheckbox->SetEnabled(!ison);
449 fPermanentCheckbox->SetEnabled(!ison);
450 fPPcheckbox->SetOn();
451 fPbPbcheckbox->SetOn();
452 fTemporaryCheckbox->SetOn();
453 fPermanentCheckbox->SetOn();
456 fRunMinEntry->SetState(!ison);
457 fRunMaxEntry->SetState(!ison);
458 fEventMinEntry->SetState(!ison);
459 fEventMaxEntry->SetState(!ison);
460 fMultiplicityMinEntry->SetState(!ison);
461 fMultiplicityMaxEntry->SetState(!ison);
463 // fCloseButton->SetEnabled(!ison);
464 fGetListButton->SetEnabled(!ison);
465 fMarkButton->SetEnabled(!ison);
466 fLoadButton->SetEnabled(!ison);