]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ANALYSIS/Aliengui/AliTagAnalysisFrame.cxx
Virtual method declared constant.
[u/mrichter/AliRoot.git] / ANALYSIS / Aliengui / AliTagAnalysisFrame.cxx
CommitLineData
7afe0204 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/* $Id$ */
17
18//-----------------------------------------------------------------
19// AliTagAnalysisFrame class
20// The class that deals with the event tag tab of the GUI
21// Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
22//-----------------------------------------------------------------
23
24#include "TGTextEntry.h"
25#include "TGLabel.h"
26#include "TGMsgBox.h"
27#include "TGListBox.h"
28#include "TGComboBox.h"
29
30#include "TSystem.h"
31#include "TChain.h"
32#include "TGrid.h"
33#include "TGridResult.h"
34#include "TEventList.h"
35
36#include "AliRunTagCuts.h"
2ec6a1d3 37#include "AliLHCTagCuts.h"
38#include "AliDetectorTagCuts.h"
7afe0204 39#include "AliEventTagCuts.h"
40#include "AliTagAnalysis.h"
41
42#include "AliAnalysisGUI.h"
43#include "AliAlienBrowser.h"
44#include "AliTagFrame.h"
45#include "AliTagAnalysisFrame.h"
46
47ClassImp(AliTagAnalysisFrame)
48
49//___________________________________________________________________________
c60fec57 50AliTagAnalysisFrame::AliTagAnalysisFrame(const TGWindow *main, UInt_t w, UInt_t h, AliAnalysisGUI* aliAnalysisGUI):
a313abd0 51 TGMainFrame(main, w, h, kHorizontalFrame),
52 fkNumberOfTags(3),
53 fVFrame1(0), fVFrame2(0),
54 fGroup1(0), fGroup2(0), fGroup3(0),
c60fec57 55 fAliAnalysisGUI(aliAnalysisGUI),
a313abd0 56 fTagFrame(0), fAliEnBrowser(0),
57 fLocalLabel1(0), fLocalPath(0),
58 fLocalButton(0), fButtonInsert(0), fButtonRun(0),
59 fComboEventTagCut(0), fGridLabel1(0),
60 fGridPath(0), fGridButton(0), fButtonInsert2(0), fButtonRun2(0),
61 fComboEventTagCut2(0), fTagResult(0),
62 fAnalysisChain(0), fListBox(0),
63 fBrowser(NULL), fBrowserButton(NULL),
2ec6a1d3 64 fAliTagAnalysis(0), fAliRunCuts(0), fAliLHCCuts(0),
65 fAliDetectorCuts(0), fAliEventCuts(0), fEventTagCutsName(0) {
7afe0204 66 // Constructor.
67
68/*
69 // lazy initialization to fEventTagCutsName
70 const char *tmp[] ={ "Vx", "Vy", "Vz", "Participants", "Impact parameter", "Primary vertex",
71 "ZDC - neutron 1", "ZDC - proton 1", "ZDC - neutron 2", "ZDC - proton 2",
72 "ZDC EM", "TO VertexZ",
73 "Multiplicity", "Positive Multiplicity", "Negative Multiplicity",
74 "Neutral Multiplicity", "VO", "Cascades", "Kinks",
75 "Jet Energy", "Hard Photons Candidates", "Neutral Energy",
76 "Charged above 1 GeV", "Charged above 3 GeV", "Charged above 10 GeV",
77 "Muons above 1 GeV", "Muons above 3 GeV", "Muons above 10 GeV",
78 "Electron above 1 GeV", "Electron above 3 GeV", "Electron above 10 GeV",
79 "Electrons range", "Muons range", "Pions range", "Kaons range",
80 "Protons range", "Lambda range", "Photons range", "PiOs range",
81 "Neutrons range", "KaonOs range"
82 };
83 */
84
85 const char *tmp[] = {"MultiplicityRange","VOsRange", "NPionRange" };
86 fEventTagCutsName = tmp;
87
88 // fEventTagCutsName = new TList();
89
90 // fEventTagCutsName[0] = "NegMultiplicityRange";
91 // fEventTagCutsName[1] = "VOsRange";
92 // fEventTagCutsName[2] = "NPionRange";
93
94 fVFrame1 = new TGVerticalFrame(this, 200, 150);
95 this->AddFrame(fVFrame1, new TGLayoutHints(kLHintsLeft, 5,5,5,5));
96
97 // Local Group
98 fGroup1 = new TGGroupFrame(fVFrame1, "Local", kVerticalFrame);
99 fGroup1->SetTitlePos(TGGroupFrame::kLeft); // left aligned
100 fVFrame1->AddFrame(fGroup1, new TGLayoutHints(kLHintsTop, 5,5,5,5));
101
102 BuildLocalGroup(fGroup1);
103
104 // Grid Group
105 fGroup2 = new TGGroupFrame(fVFrame1, "Grid", kVerticalFrame);
106 fGroup2->SetTitlePos(TGGroupFrame::kLeft); // left aligned
107 fVFrame1->AddFrame(fGroup2, new TGLayoutHints(kLHintsBottom, 5,5,5,5));
108
109 BuildGridGroup(fGroup2);
110
111 // Vertical Frame 2
112
113 fVFrame2 = new TGVerticalFrame(this, 200, 200);
114 AddFrame(fVFrame2, new TGLayoutHints(kLHintsRight| kLHintsExpandX
115 | kLHintsExpandY, 5,5,5,5));
116
117 fGroup3 = new TGGroupFrame(fVFrame2, "Results",
118 kVerticalFrame | kFitWidth | kFitHeight);
119 fGroup3->SetTitlePos(TGGroupFrame::kLeft); // left aligned
120 fVFrame2->AddFrame(fGroup3,
121 new TGLayoutHints(kLHintsTop | kLHintsExpandX
122 | kLHintsExpandY, 5,5,5,5));
123
124 fListBox = new TGListBox(fGroup3);
125 fGroup3->AddFrame(fListBox,
126 new TGLayoutHints(kLHintsTop | kLHintsExpandX |
127 kLHintsExpandY, 5,5,5,5));
128
129 fAliTagAnalysis = new AliTagAnalysis();
130 fAliRunCuts = new AliRunTagCuts();
2ec6a1d3 131 fAliLHCCuts = new AliLHCTagCuts();
132 fAliDetectorCuts = new AliDetectorTagCuts();
7afe0204 133 fAliEventCuts = new AliEventTagCuts();
134
135 MapSubwindows();
136 Resize();
137 MapWindow();
138}
139
140//___________________________________________________________________________
141AliTagAnalysisFrame::~AliTagAnalysisFrame() {
142 // AliTagAnalysisFrame dctor.
143
144 delete fGroup1;
145 delete fLocalLabel1;
146 delete fLocalPath;
147 delete fLocalButton;
148 delete fGroup2;
149 delete fGridLabel1;
150 delete fGridPath;
151 delete fGridButton;
152
153 delete fAliTagAnalysis;
154 delete fAliRunCuts;
2ec6a1d3 155 delete fAliLHCCuts;
156 delete fAliDetectorCuts;
7afe0204 157 delete fAliEventCuts;
158 delete fTagResult;
159 delete fAnalysisChain;
160
161 delete fTagFrame;
162}
163
164//___________________________________________________________________________
165void AliTagAnalysisFrame::AddResult (const char* line) {
166 // Add a new line in the result group box.
167
168 // fGroup3->AddFrame(new TGLabel(fGroup3, new TGString(line)),
169 // new TGLayoutHints(kLHintsTop, 5,5,5,5));
170
171 fListBox->AddEntry(line, fListBox->GetNumberOfEntries());
172
173 MapSubwindows();
174 Resize();
175 MapWindow();
176}
177
178//___________________________________________________________________________
179void AliTagAnalysisFrame::BuildLocalGroup (TGCompositeFrame* frame) {
180 // The Local Group Frame
181 fLocalLabel1 = new TGLabel(frame, new TGString("Chain Local Tag Path"));
182 frame->AddFrame(fLocalLabel1, new TGLayoutHints(kLHintsTop, 5,5,5,5));
183
184 fLocalPath = new TGTextEntry(frame, new TGTextBuffer(40));
185 fLocalPath->SetEnabled(false);
186 frame->AddFrame(fLocalPath, new TGLayoutHints(kLHintsTop, 5,5,5,5));
187
188 fLocalButton = new TGTextButton(frame, "Browse...", 0);
189 frame->AddFrame(fLocalButton, new TGLayoutHints(kLHintsLeft, 5,5,5,5));
190
191 fLocalButton->Connect("Clicked()", "AliTagAnalysisFrame", this, "LocalBrowse()");
192
193 fComboEventTagCut = new TGComboBox(frame, "Select Tag Cuts...", 1);
194 frame->AddFrame(fComboEventTagCut,
195 new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 5,5,5,5));
196
197 for(int i=0; i!=fkNumberOfTags; i++)
198 fComboEventTagCut->AddEntry(fEventTagCutsName[i],i);
199
200 fComboEventTagCut->Resize(150, 20);
201
202 fButtonInsert = new TGTextButton(frame, "Insert Tag Cuts Range", 2);
203 frame->AddFrame(fButtonInsert,
204 new TGLayoutHints(kLHintsLeft | kLHintsTop, 5,5,5,5));
205
206 fButtonInsert->Connect("Clicked()", "AliTagAnalysisFrame", this,
207 "InsertTagCutsRangeLocal()");
208
209 fButtonRun = new TGTextButton(frame, " Run ", 3);
210 frame->AddFrame(fButtonRun,
211 new TGLayoutHints(kLHintsTop | kLHintsRight, 5,5,5,5));
212
213 fButtonRun->Connect("Clicked()", "AliTagAnalysisFrame", this, "RunLocal()");
214}
215
216//___________________________________________________________________________
217void AliTagAnalysisFrame::BuildGridGroup (TGCompositeFrame* frame) {
218 // The Grid Group Frame
219
220 fGridLabel1 = new TGLabel(frame, new TGString("Chain Grid Tag Path"));
221 frame->AddFrame(fGridLabel1, new TGLayoutHints(kLHintsTop, 5,5,5,5));
222
223 fGridPath = new TGTextEntry(frame, new TGTextBuffer(40));
224 fGridPath->SetEnabled(false);
225 // fGridPath->SetText("/alice/cern.ch/user/p/pchrista/PDC06/Tags/pp/1");
226 frame->AddFrame(fGridPath, new TGLayoutHints(kLHintsTop, 5,5,5,5));
227
228 fGridButton = new TGTextButton(frame, "Browse...", 0);
229 frame->AddFrame(fGridButton, new TGLayoutHints(kLHintsLeft, 5,5,5,5));
230
231 fGridButton->Connect("Clicked()", "AliTagAnalysisFrame", this, "GridBrowse()");
232
233 fComboEventTagCut2 = new TGComboBox(frame, "Select Tag Cuts...", 1);
234 frame->AddFrame(fComboEventTagCut2,
235 new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 5,5,5,5));
236
237 for(int i=0; i!=fkNumberOfTags; i++)
238 fComboEventTagCut2->AddEntry(fEventTagCutsName[i],i);
239
240 fComboEventTagCut2->Resize(150, 20);
241
242 fButtonInsert2 = new TGTextButton(frame, "Insert Tag Cuts Range", 2);
243 frame->AddFrame(fButtonInsert2,
244 new TGLayoutHints(kLHintsLeft, 5,5,5,5));
245
246 fButtonInsert2->Connect("Clicked()", "AliTagAnalysisFrame", this,
247 "InsertTagCutsRangeGrid()");
248
249 fButtonRun2 = new TGTextButton(frame," Run " , 2);
250 frame->AddFrame(fButtonRun2,
251 new TGLayoutHints(kLHintsRight, 5,5,5,5));
252
253 fButtonRun2->Connect("Clicked()", "AliTagAnalysisFrame", this, "RunGrid()");
254
255}
256
257//___________________________________________________________________________
258void AliTagAnalysisFrame::LocalBrowse() {
259 // Browse local directories.
260
261 fBrowser = new TGTransientFrame(gClient->GetRoot(), fAliAnalysisGUI, 450, 200);
262 fAliEnBrowser = new AliAlienBrowser(fBrowser, 300, 200, this,
263 "AliTagAnalysisFrame", kLocalBrowse);
264 fBrowser->AddFrame(fAliEnBrowser, new TGLayoutHints(kLHintsTop, 5,5,5,5));
265 fBrowserButton = new TGTextButton(fBrowser, " OK ", 0);
266 fBrowser->AddFrame(fBrowserButton, new TGLayoutHints(kLHintsRight, 5,5,5,5));
267 fBrowserButton->Connect("Clicked()", "AliTagAnalysisFrame", this, "OnOKButton()");
268
269 fAliEnBrowser->AddItem(0, "/");
270
271 fAliEnBrowser->GotoDir(gSystem->pwd());
272
273 fBrowser->MapSubwindows();
274 fBrowser->Resize();
275 fBrowser->MapWindow();
276}
277
278//___________________________________________________________________________
279void AliTagAnalysisFrame::GridBrowse() {
280 // Opens a browser for grid directories.
281
282 if (!fAliAnalysisGUI->IsConnected()){
283 new TGMsgBox(gClient->GetRoot(), this, "Connect",
284 "Please connect to AliEn", 0, kMBOk);
285 return;
286 }
287
288 fBrowser = new TGTransientFrame(gClient->GetRoot(), fAliAnalysisGUI, 450, 200);
289
290 fAliEnBrowser = new AliAlienBrowser(fBrowser, 300, 200, this,
291 "AliTagAnalysisFrame", kGridBrowse);
292 fBrowser->AddFrame(fAliEnBrowser, new TGLayoutHints(kLHintsTop, 5,5,5,5));
293
294 fBrowserButton = new TGTextButton(fBrowser, " OK ", 0);
295 fBrowser->AddFrame(fBrowserButton, new TGLayoutHints(kLHintsRight, 5,5,5,5));
296
297 fBrowserButton->Connect("Clicked()", "AliTagAnalysisFrame", this, "OnOKButton()");
298
299 fAliEnBrowser->AddItem(0, "/");
300
301 fAliEnBrowser->GotoDir(gGrid->GetHomeDirectory());
302
303 fBrowser->MapSubwindows();
304 fBrowser->Resize();
305 fBrowser->MapWindow();
306}
307
308//___________________________________________________________________________
309void AliTagAnalysisFrame::InsertTagCutsRangeLocal() {
310 // slot
311 InsertTagCutsRange(fComboEventTagCut->GetSelected());
312}
313
314
315//___________________________________________________________________________
316void AliTagAnalysisFrame::InsertTagCutsRangeGrid() {
317 // slot
318 InsertTagCutsRange(fComboEventTagCut2->GetSelected());
319}
320
321//___________________________________________________________________________
322void AliTagAnalysisFrame::InsertTagCutsRange(Int_t id) {
323 // insert the event tag range
324
325 // if nth is selected
326 if(id == -1)
327 return;
328
329
330 switch(id){
331 case 0: // SetMultiplicity Range
332
333 fTagFrame = new AliTagFrame(gClient->GetRoot(), this, 400, 200, kHorizontalFrame, fComboEventTagCut->GetTextEntry()->GetText(), fComboEventTagCut->GetSelected(), kRangeMinMax);
334
335 Int_t min = fTagFrame->GetRangeMin();
336 Int_t max = fTagFrame->GetRangeMax();
337
338 fAliEventCuts->SetMultiplicityRange(min, max);
339
340 TString res = TString("Multiplicity Range Min: ");
341 res += min;
342 res += " Max: ";
343 res += max;
344
345 AddResult(res.Data());
346
347 break;
348 }
349}
350
351//___________________________________________________________________________
352void AliTagAnalysisFrame::RunLocal() {
353 // Run local query
354#ifdef GUIDEBUG
355 printf("*******************************\n");
356 printf("*** Querying the tags ***\n");
357 printf("*******************************\n");
358#endif
359
360 //local tags
361 fAliTagAnalysis->ChainLocalTags(fLocalPath->GetText());
362
363#ifdef GUIDEBUG
364 printf("*******************************\n");
365 printf("*** Getting the Chain ***\n");
366 printf("*******************************\n");
367#endif
368
369 fAnalysisChain = new TChain("esdTree");
2ec6a1d3 370 fAnalysisChain = fAliTagAnalysis->QueryTags(fAliRunCuts,fAliLHCCuts,fAliDetectorCuts,fAliEventCuts);
7afe0204 371
372 TString res = TString("Number of Accepted Events: ");
373 res += fAnalysisChain->GetEventList()->GetN();
374
375 AddResult(res.Data());
376}
377
378//___________________________________________________________________________
379void AliTagAnalysisFrame::RunGrid() {
380 // Run Grid query
381
382
383 // fGroup3->SetCleanup(kDeepCleanup);
384
385 if (!fAliAnalysisGUI->IsConnected()){
386 new TGMsgBox(gClient->GetRoot(), this, "Connect",
387 "Please connect to AliEn", 0, kMBOk);
388 return;
389 }
390
391
392#ifdef GUIDEBUG
393 printf("*******************************\n");
394 printf("*** Querying the tags ***\n");
395 printf("*******************************\n");
396#endif
397
398
399 // TGridResult* TagResult = gGrid->Query("/alice/cern.ch/user/p/pchrista/PDC06/Tags/pp/1","*tag.root","","");
400 fTagResult = gGrid->Query(fGridPath->GetText(), "*tag.root", "", "");
401
402 // fAliTagAnalysis->ChainLocalTags("../tags");
403
404 fAliTagAnalysis->ChainGridTags(fTagResult);
405
406 //////////////////////////////////////////////////////////////////
407 //Get the chain
408#ifdef GUIDEBUG
409 printf("*******************************\n");
410 printf("*** Getting the Chain ***\n");
411 printf("*******************************\n");
412#endif
413
414 fAnalysisChain = new TChain("esdTree");
2ec6a1d3 415 fAnalysisChain = fAliTagAnalysis->QueryTags(fAliRunCuts,fAliLHCCuts,fAliDetectorCuts,fAliEventCuts);
7afe0204 416
417 TString res = TString("Number of Accepted Events: ");
418 res += fAnalysisChain->GetEventList()->GetN();
419
420 AddResult(res.Data());
421}
422
423//___________________________________________________________________________
424void AliTagAnalysisFrame::ProcessSelector(const char* selectorfile) {
425 // Process selector
426
427#ifdef GUIDEBUG
428 printf("*******************************\n");
429 printf("*** Run Analysis Selector %s\n",selectorfile);
430 printf("*******************************\n");
431
432#endif
433
434 fAnalysisChain->Process(selectorfile);
435}
436
437
438//___________________________________________________________________________
439void AliTagAnalysisFrame::OnDoubleClick(TGListTreeItem* item, Int_t btn) {
440 // Slot for double clicking.
441
442 fAliEnBrowser->OnDoubleClick(item, btn);
443
444 //"/alice/cern.ch/user/p/pchrista/PDC06/Tags/pp/1");
445
446}
447
448//___________________________________________________________________________
449void AliTagAnalysisFrame::OnOKButton() {
450 // Slot for OK button in the Transient Frame.
451
452 if(fAliEnBrowser->GetBrowseType() == kLocalBrowse)
453 fLocalPath->SetText(fAliEnBrowser->GetPath());
454 else if(fAliEnBrowser->GetBrowseType() == kGridBrowse)
455 fGridPath->SetText(fAliEnBrowser->GetPath());
456
457 TTimer::SingleShot(150, "AliTagAnalysisFrame", fBrowser, "CloseWindow()");
458}