]>
Commit | Line | Data |
---|---|---|
d810d0de | 1 | // $Id$ |
2 | // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007 | |
3 | ||
4 | /************************************************************************** | |
5 | * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * | |
6 | * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * | |
51346b82 | 7 | * full copyright notice. * |
d810d0de | 8 | **************************************************************************/ |
fd31e9de | 9 | |
d810d0de | 10 | #include "AliEveTRDLoaderManager.h" |
11 | #include "AliEveTRDLoader.h" | |
12 | #include "AliEveTRDLoaderImp.h" | |
edf0c4a0 | 13 | |
84aff7a4 | 14 | #include <TEveManager.h> |
edf0c4a0 | 15 | |
16 | #include <TGLabel.h> | |
17 | #include <TGButton.h> | |
18 | #include <TGComboBox.h> | |
19 | #include <TGListBox.h> | |
a15e6d7d | 20 | //#include <TGListTree.h> |
21 | //#include <TGString.h> | |
22 | //#include <TGToolTip.h> | |
edf0c4a0 | 23 | #include <TClonesArray.h> |
24 | ||
25 | #include "AliLog.h" | |
d810d0de | 26 | |
d810d0de | 27 | ClassImp(AliEveTRDLoaderManager) |
28 | ClassImp(AliEveTRDLoaderManagerEditor) | |
edf0c4a0 | 29 | |
30 | /////////////////////////////////////////////////////////// | |
fd31e9de | 31 | ///////// AliEveTRDLoaderManager ////////////// |
edf0c4a0 | 32 | /////////////////////////////////////////////////////////// |
33 | ||
fd31e9de | 34 | //______________________________________________________________________________ |
35 | AliEveTRDLoaderManager::AliEveTRDLoaderManager(const Text_t* n, const Text_t* t) : | |
36 | TEveElementList(n, t) | |
edf0c4a0 | 37 | { |
a15e6d7d | 38 | // Constructor. |
edf0c4a0 | 39 | } |
40 | ||
fd31e9de | 41 | //______________________________________________________________________________ |
42 | void AliEveTRDLoaderManager::Add(Int_t type, const Text_t *name, const Text_t *title) | |
edf0c4a0 | 43 | { |
a15e6d7d | 44 | // Add something. |
45 | ||
fd31e9de | 46 | AliEveTRDLoader *trdl = 0x0; |
47 | switch(type){ | |
6983e87a | 48 | case AliEveTRDLoader::kTRDHits: |
49 | case AliEveTRDLoader::kTRDDigits: | |
50 | case AliEveTRDLoader::kTRDClusters: | |
51 | case AliEveTRDLoader::kTRDTracklets: | |
52 | AddElement(trdl = new AliEveTRDLoader(name, title)); | |
53 | break; | |
54 | case AliEveTRDLoader::kTRDRawRoot: | |
55 | case AliEveTRDLoader::kTRDRawDate: | |
56 | AddElement(trdl = new AliEveTRDLoaderRaw(name, title)); | |
57 | break; | |
58 | default: | |
59 | AddElement(trdl = new AliEveTRDLoaderSim(name, title)); | |
60 | break; | |
fd31e9de | 61 | } |
6983e87a | 62 | trdl->SetDataType(type); |
fd31e9de | 63 | |
64 | gEve->Redraw3D(); | |
edf0c4a0 | 65 | } |
66 | ||
67 | ||
fd31e9de | 68 | //______________________________________________________________________________ |
d810d0de | 69 | void AliEveTRDLoaderManager::Paint(Option_t *option) |
edf0c4a0 | 70 | { |
a15e6d7d | 71 | // Paint object. |
72 | ||
fd31e9de | 73 | List_i ichmb = fChildren.begin(); |
74 | while(ichmb != fChildren.end()){ | |
75 | (dynamic_cast<AliEveTRDLoader*>(*ichmb))->Paint(option); | |
76 | ichmb++; | |
77 | } | |
edf0c4a0 | 78 | } |
79 | ||
fd31e9de | 80 | //______________________________________________________________________________ |
81 | void AliEveTRDLoaderManager::Remove(Int_t entry) | |
edf0c4a0 | 82 | { |
a15e6d7d | 83 | // Remove something. |
84 | ||
fd31e9de | 85 | //printf("AliEveTRDLoaderManager::Remove(%d)\n", entry); |
86 | List_i it = fChildren.begin(); | |
87 | for(int i=0; i<entry; i++) it++; | |
88 | gEve->RemoveElement((*it), this); | |
89 | fChildren.erase(it); | |
edf0c4a0 | 90 | } |
91 | ||
92 | /////////////////////////////////////////////////////////// | |
fd31e9de | 93 | ////////// AliEveTRDLoaderManagerEditor /////////// |
edf0c4a0 | 94 | /////////////////////////////////////////////////////////// |
95 | ||
fd31e9de | 96 | //______________________________________________________________________________ |
97 | AliEveTRDLoaderManagerEditor:: | |
98 | AliEveTRDLoaderManagerEditor(const TGWindow* p, Int_t width, Int_t height, | |
99 | UInt_t options, Pixel_t back) : | |
100 | TGedFrame(p, width, height, options | kVerticalFrame, back), | |
101 | fM(0), fSelector(0), fAdd(0), fRemoveButton(0), fGroupFrame(0), fRemove(0) | |
edf0c4a0 | 102 | { |
a15e6d7d | 103 | // Constructor. |
104 | ||
fd31e9de | 105 | MakeTitle("AliEveTRDLoaderManager"); |
106 | ||
107 | // control frame - always there | |
108 | TGHorizontalFrame *fHorizontalFrame539 = new TGHorizontalFrame(this, 300, 26, kHorizontalFrame); | |
109 | ||
110 | TGLabel *fLabel546 = new TGLabel(fHorizontalFrame539,"Register Loader",TGLabel::GetDefaultGC()(),TGLabel::GetDefaultFontStruct(),kChildFrame); | |
111 | fLabel546->SetTextJustify(36); | |
112 | fHorizontalFrame539->AddFrame(fLabel546, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY,2,2,2,2)); | |
113 | ||
114 | // combo box | |
115 | fSelector = new TGComboBox(fHorizontalFrame539,-1,kHorizontalFrame | kSunkenFrame | kDoubleBorder | kOwnBackground); | |
6983e87a | 116 | fSelector->AddEntry("MC (gAlice) ", AliEveTRDLoader::kTRDHits | AliEveTRDLoader::kTRDDigits | AliEveTRDLoader::kTRDClusters); |
117 | fSelector->AddEntry("Hits ", AliEveTRDLoader::kTRDHits); | |
118 | fSelector->AddEntry("Digits ", AliEveTRDLoader::kTRDDigits); | |
119 | fSelector->AddEntry("Clusters ", AliEveTRDLoader::kTRDClusters); | |
120 | fSelector->AddEntry("Tracklets ", AliEveTRDLoader::kTRDTracklets); | |
121 | fSelector->AddEntry("Raw (ROOT) ", AliEveTRDLoader::kTRDRawRoot); | |
122 | fSelector->AddEntry("Raw (DATE) ", AliEveTRDLoader::kTRDRawDate); | |
fd31e9de | 123 | fSelector->Resize(136,22); |
124 | fHorizontalFrame539->AddFrame(fSelector, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY,2,2,2,2)); | |
8948756b | 125 | //fSelector->SetToolTipText("Select TRD data loader and add it to the list.\nThe loader can be removed by clicking the \"Remove\" button"); |
126 | fSelector->Connect("Selected(char*)", "AliEveTRDLoaderManagerEditor", this, "Add(char*)"); | |
fd31e9de | 127 | AddFrame(fHorizontalFrame539, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2)); |
128 | ||
129 | fGroupFrame = 0; | |
130 | fRemove = 0; | |
edf0c4a0 | 131 | } |
132 | ||
edf0c4a0 | 133 | |
fd31e9de | 134 | //______________________________________________________________________________ |
8948756b | 135 | void AliEveTRDLoaderManagerEditor::Add(Char_t *name) |
edf0c4a0 | 136 | { |
a15e6d7d | 137 | // Slot to add something. |
fd31e9de | 138 | if(!fGroupFrame){ |
139 | // "TRD Loaders" group frame | |
140 | fGroupFrame = new TGGroupFrame(this,"TRD Loaders",kVerticalFrame,TGGroupFrame::GetDefaultGC()(),TGGroupFrame::GetDefaultFontStruct()); | |
141 | fGroupFrame->SetLayoutManager(new TGVerticalLayout(fGroupFrame)); | |
142 | fGroupFrame->Resize(300,128); | |
143 | AddFrame(fGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX, 2,2,2,2)); | |
144 | ||
145 | fRemove = new TClonesArray("TGTextButton", 3); | |
146 | } | |
147 | ||
fd31e9de | 148 | |
149 | // horizontal frame | |
150 | TGHorizontalFrame *fHorizontalFrame = new TGHorizontalFrame(fGroupFrame, 264, 26, kHorizontalFrame); | |
151 | ||
8948756b | 152 | TGLabel *fLabel717 = new TGLabel(fHorizontalFrame, name); |
fd31e9de | 153 | fLabel717->SetTextJustify(36); |
154 | fHorizontalFrame->AddFrame(fLabel717, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
155 | ||
156 | ||
157 | Int_t nbutton = fM->fChildren.size(); | |
158 | fRemoveButton = new((*fRemove)[nbutton]) TGTextButton(fHorizontalFrame, "Remove", nbutton); | |
159 | fRemoveButton->SetTextJustify(36); | |
160 | fRemoveButton->Resize(53,22); | |
161 | fRemoveButton->Connect("Clicked()", "AliEveTRDLoaderManagerEditor", this, Form("Remove(=%d)", nbutton)); | |
8948756b | 162 | fRemoveButton->SetToolTipText(Form("Remove %s Loader", name)); |
fd31e9de | 163 | fHorizontalFrame->AddFrame(fRemoveButton, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsCenterY,2,2,2,2)); |
164 | ||
165 | fGroupFrame->AddFrame(fHorizontalFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
166 | ||
167 | ||
168 | MapSubwindows(); | |
169 | Resize(GetDefaultSize()); | |
170 | MapWindow(); | |
171 | ||
a6e0ebfe | 172 | const char *title[] = {"MC loader", "Single file loader", "Raw data loader"}; |
6983e87a | 173 | // char *color[] = {"#ff0000", "#0000ff", "#59d454"}; |
174 | int id = fSelector->GetSelected(), type; | |
175 | switch(id){ | |
176 | case AliEveTRDLoader::kTRDHits: | |
177 | case AliEveTRDLoader::kTRDDigits: | |
178 | case AliEveTRDLoader::kTRDClusters: | |
179 | case AliEveTRDLoader::kTRDTracklets: | |
180 | type = 1; | |
181 | break; | |
182 | case AliEveTRDLoader::kTRDRawRoot: | |
183 | case AliEveTRDLoader::kTRDRawDate: | |
184 | type = 2; | |
185 | break; | |
186 | default: | |
187 | type = 0; | |
188 | break; | |
189 | } | |
8948756b | 190 | fM->Add(id, name, title[type]); |
edf0c4a0 | 191 | } |
192 | ||
193 | ||
fd31e9de | 194 | //______________________________________________________________________________ |
d810d0de | 195 | void AliEveTRDLoaderManagerEditor::Remove(Int_t entry) |
edf0c4a0 | 196 | { |
a15e6d7d | 197 | // Slot to remove something. |
198 | ||
fd31e9de | 199 | TIterator *it = fGroupFrame->GetList()->MakeIterator(); |
200 | int ientry = 0; | |
201 | while(/*TGFrame *f=(TGFrame*)*/it->Next()){ | |
202 | //printf("%s\n", f->IsA()->GetName()); | |
203 | if(entry == ientry){ | |
204 | //fGroupFrame->RemoveFrame(f); | |
205 | break; | |
206 | } | |
207 | ientry++; | |
208 | } | |
209 | ||
210 | ||
211 | MapSubwindows(); | |
212 | Resize(GetDefaultSize()); | |
213 | MapWindow(); | |
214 | ||
215 | //fM->Remove(entry); | |
edf0c4a0 | 216 | } |
217 | ||
fd31e9de | 218 | //______________________________________________________________________________ |
d810d0de | 219 | void AliEveTRDLoaderManagerEditor::SetModel(TObject* obj) |
edf0c4a0 | 220 | { |
a15e6d7d | 221 | // Set model object. |
222 | ||
fd31e9de | 223 | fM = dynamic_cast<AliEveTRDLoaderManager*>(obj); |
edf0c4a0 | 224 | } |
225 |