]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveListAnalyserEditor.h
Use TList::Delete, change some output
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveListAnalyserEditor.h
CommitLineData
004e0620 1// Author: Benjamin Hess 29/01/2010
00dc25ef 2
3/*************************************************************************
ce239ca6 4 * Copyright (C) 2009-2010, Alexandru Bercuci, Benjamin Hess. *
00dc25ef 5 * All rights reserved. *
6 *************************************************************************/
7
00dc25ef 8//////////////////////////////////////////////////////////////////////////
9// //
ce239ca6 10// AliEveListAnalyserEditor //
00dc25ef 11// //
ce239ca6 12// The AliEveListAnalyserEditor provides the graphical func- //
13// tionality for the AliEveListAnalyser. It creates the tabs //
00dc25ef 14// and canvases, when they are needed and, as well, frees allocated //
15// memory on destruction (or if new events are loaded and thus some //
16// tabs are closed). //
17// The function DrawHistos() accesses the temporary file created by the //
ce239ca6 18// AliEveListAnalyser and draws the desired data (the file will //
00dc25ef 19// be created within the call of ApplyMacros()). Have a look at this //
20// function to learn more about the structure of the file and how to //
21// access the data. //
ce239ca6 22// You can add objects to the list (of analysis objects) "by clicking"! //
23// To do this, click the "start" button in the "list" tab. Pressing it, //
24// connects the class to signals of objects in the viewer. //
25// You have to kinds of selection: //
26// //
27// Secondary selection: //
28// You can hold "CTRL"+"ALT" (depending on your system, "ALT" alone can //
29// also be fine) and click an single object (e.g. a single cluster of a //
30// TEvePointSet) in the viewer to add it to the list. If the object is //
31// already in the list, it will be removed from it! //
32// //
33// Primary selection: //
34// Just click the object you want to add in the viewer (or as well in //
35// the browser (left panel)). If the object is already in the list, it //
36// will be removed from it! //
37// //
38// For both cases: Note: //
39// If you have added all the desired objects, please press the "stop" //
40// button in the "list" tab to disconnect the class from the signals. //
41// If you want to remove an object, you HAVE to use the same procedure //
42// that you have used for adding it. e.g. you cannot(!) remove an //
43// object added by the secondary selection method by using the primary //
44// selection method! //
00dc25ef 45//////////////////////////////////////////////////////////////////////////
46
ce239ca6 47#ifndef AliEveListAnalyserEditor_H
48#define AliEveListAnalyserEditor_H
49
00dc25ef 50#ifndef ROOT_TGedFrame
51#include <TGedFrame.h>
52#endif
53
54#ifndef ROOT_TGFrame
55#include <TGFrame.h>
56#endif
57
00dc25ef 58class AliEveListAnalyser;
59class AliTRDReconstructor;
60class TCanvas;
61class TEveBrowser;
62class TEveGedEditor;
63class TEveManager;
64class TFile;
65class TGButtonGroup;
66class TGCheckButton;
67class TGFileInfo;
68class TGGroupFrame;
69class TGHorizontal3DLine;
70class TGHorizontalFrame;
71class TGLabel;
72class TGListBox;
73class TGRadioButton;
74class TGString;
75class TGTab;
76class TGTextButton;
77class TGTextEntry;
78class TGVerticalFrame;
79class TH1;
80class TMacroData;
81class TMap;
82class TMapIter;
83class TTree;
84
85class AliEveListAnalyserEditor: public TGedFrame
86{
87public:
88 AliEveListAnalyserEditor(const TGWindow* p = 0, Int_t width = 170, Int_t height = 30,
89 UInt_t options = kChildFrame, Pixel_t back = GetDefaultFrameBackground());
90 virtual ~AliEveListAnalyserEditor();
91 virtual void SetModel(TObject* obj);
92
93 void AddMacro(const Char_t* name, const Char_t* path = ".");
94 void ApplyMacros();
95 void BrowseMacros();
96 void CloseTabs();
ce239ca6 97 //void DoAddPrimSelectedObjects();
98 //void DoRemovePrimSelectedObjects();
3c3cfd5f 99 void DoResetObjectList();
100 void DoStartAddingObjects();
101 void DoStopAddingObjects();
00dc25ef 102 void DrawHistos();
103 Int_t GetNSelectedHistograms() const;
104 void HandleMacroPathSet();
105 void HandleNewEventLoaded();
106 void HandleTabChangedToIndex(Int_t);
107 void NewMacros();
108 void RemoveMacros();
109 void SaveMacroList(TMap* list);
00dc25ef 110 void UpdateDataFromMacroListSelection();
111 void UpdateHistoList();
112 void UpdateMacroList();
113 void UpdateMacroListSelection(Int_t ind);
114
115protected:
116 AliEveListAnalyser* fM; // Model object
117
ce239ca6 118 void InheritMacroList();
00dc25ef 119
120private:
121 AliEveListAnalyserEditor(const AliEveListAnalyserEditor&); // Not implemented
122 AliEveListAnalyserEditor& operator=(const AliEveListAnalyserEditor&); // Not implemented
123
3c3cfd5f 124 // Help functions
125 void SetDrawingToHistoCanvasTab();
126 void UpdateHistoCanvasTab();
127
00dc25ef 128 TCanvas* fHistoCanvas; // Canvas for the histograms
129 TGString* fHistoCanvasName; // Name of the histogram canvas
130
131 TMap* fInheritedMacroList; // Stores the from the analyse object list inherited macro list
132
133 Bool_t fInheritSettings; // Flag indicating, whether the macro list will be inherited from
134 // the previously loaded analyse object list within the next call of SetModel
135
3c3cfd5f 136 TGHorizontalFrame* fBrowseFrame; // Frame for features corresponding to searching macros
00dc25ef 137 TGVerticalFrame* fHistoFrame; // Top frame for the histogram stuff
138 TGVerticalFrame* fHistoSubFrame; // Frame for the histogram buttons themselves
3c3cfd5f 139 TGVerticalFrame* fMainFrame; // Top frame for macro functionality.
140 TGVerticalFrame* fObjectFrame; // Frame for features corresponding to adding objects to the list
141
ce239ca6 142 //TGTextButton* fbAddPrimObjects; // "Add selected object(s)" button
00dc25ef 143 TGTextButton* fbApplyMacros; // "Apply macros" button
3c3cfd5f 144 TGTextButton* fbBrowse; // "Browse" button
00dc25ef 145 TGTextButton* fbDrawHisto; // "Draw histogram" button
3c3cfd5f 146 TGTextButton* fbNew; // "New" button
ce239ca6 147 //TGTextButton* fbRemovePrimObjects; // "Remove selected object(s)" button
3c3cfd5f 148 TGTextButton* fbRemoveMacros; // "Remove macros" button
149 TGTextButton* fbReset; // "Reset" (list of added objects) button
150 TGTextButton* fbStart; // "Start" (adding objects to list) button
151 TGTextButton* fbStop; // "Stop" (adding objects to list) button
00dc25ef 152 TGTextEntry* fteField; // Text field to insert macro path manually
153 TGListBox* ftlMacroList; // To display the list of (process) macros
154 TGListBox* ftlMacroSelList; // To display the list of (selection) macros
155
156 TGFileInfo* fFileInfo; // Holds data about opening macros
157 Char_t** fFileTypes; // File types (for macros)
158
159 // Some labels
160 TGLabel* fLabel1;
161 TGLabel* fLabel2;
162 TGLabel* fLabel3;
163 TGLabel* fLabel4;
164
165 // Some lines
166 TGHorizontal3DLine *fLine1;
167 TGHorizontal3DLine *fLine2;
168 TGHorizontal3DLine *fLine3;
6e420565 169 TGHorizontal3DLine *fLine4;
00dc25ef 170
3c3cfd5f 171 TGCheckButton** fCheckButtons; // Check buttons for histograms
00dc25ef 172
173 ClassDef(AliEveListAnalyserEditor, 0); // Editor for AliEveListAnalyser.
174};
175
176
177//////////////////////////////////////////////////////////////////////////
178// //
179// AliEveGeneralMacroWizard //
180// //
181// Wizard for creating new macros. //
182// //
183//////////////////////////////////////////////////////////////////////////
184
185class TGTextEdit;
186class TGComboBox;
187class AliEveGeneralMacroWizard : public TGMainFrame
188{
189public:
190 AliEveGeneralMacroWizard(const TGWindow* p = 0);
191 void Create(Int_t type); //*SIGNAL*
192 void Create(Char_t *pname); //*SIGNAL*
193 void HandleCreate();
004e0620 194 void HandleSelectionChanged(Int_t sel);
00dc25ef 195
196private:
197 AliEveGeneralMacroWizard(const AliEveGeneralMacroWizard&);
198 AliEveGeneralMacroWizard& operator=(const AliEveGeneralMacroWizard&);
199
00dc25ef 200 TGTextButton *fbCancel; // "Cancel" button
3c3cfd5f 201 TGTextButton *fbCreate; // "Done" button
ce239ca6 202 TGComboBox *fCombo; // "Type"
203 TGTextEdit *fTextEdit; // "Comments"
3c3cfd5f 204 TGTextEntry *fTextIncludes; // "Includes"
ce239ca6 205 TGTextEntry *fTextName; // "Name"
004e0620 206 TGTextEntry *fTextObjectType; // "1st object type"
207 TGTextEntry *fTextObjectType2; // "2nd object type"
00dc25ef 208
209 ClassDef(AliEveGeneralMacroWizard, 0); // Helper class to create macro templates
210};
211
212#endif