]>
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 | **************************************************************************/ |
707b281a | 9 | |
d810d0de | 10 | #include "AliEveTRDLoader.h" |
11 | #include "AliEveTRDModuleImp.h" | |
a282bf09 | 12 | |
84aff7a4 | 13 | #include <TEveManager.h> |
14 | #include <TEveGValuators.h> | |
a282bf09 | 15 | |
edf0c4a0 | 16 | #include "TSystem.h" |
17 | #include "TFile.h" | |
18 | #include "TTree.h" | |
19 | #include "TString.h" | |
20 | #include "TObjString.h" | |
21 | #include "TObjArray.h" | |
22 | ||
a282bf09 | 23 | #include <TGLabel.h> |
24 | #include <TGButton.h> | |
25 | #include <TGTextEntry.h> | |
26 | #include <TGNumberEntry.h> | |
27 | #include <TGFileDialog.h> | |
28 | #include <TGListTree.h> | |
29 | #include <TGToolTip.h> | |
30 | ||
edf0c4a0 | 31 | #include "AliLog.h" |
a282bf09 | 32 | #include "AliCDBManager.h" |
33 | ||
34 | #include "AliTRDv1.h" | |
35 | #include "AliTRDhit.h" | |
36 | #include "AliTRDcluster.h" | |
37 | #include "AliTRDmcmTracklet.h" | |
38 | #include "AliTRDdigitsManager.h" | |
39 | #include "AliTRDgeometry.h" | |
40 | ||
edf0c4a0 | 41 | |
a282bf09 | 42 | #include <algorithm> |
d810d0de | 43 | |
a282bf09 | 44 | using namespace std; |
45 | class AliTRDdataArrayI; | |
46 | ||
d810d0de | 47 | ClassImp(AliEveTRDLoader) |
48 | ClassImp(AliEveTRDLoaderEditor) | |
a282bf09 | 49 | |
50 | /////////////////////////////////////////////////////////// | |
d810d0de | 51 | ///////////// AliEveTRDLoader ///////////////////// |
a282bf09 | 52 | /////////////////////////////////////////////////////////// |
53 | ||
54 | ||
55 | //________________________________________________________ | |
d810d0de | 56 | AliEveTRDLoader::AliEveTRDLoader(const Text_t* n, const Text_t* t) : TEveElementList(n, t), fSM(-1), fStack(-1), fLy(-1), fEvent(0) |
51346b82 | 57 | { |
a282bf09 | 58 | kLoadHits = kFALSE; |
59 | kLoadDigits = kFALSE; | |
60 | kLoadClusters = kFALSE; | |
61 | kLoadTracks = kFALSE; | |
14217b5f | 62 | fFilename = ""; |
63 | fDir = "."; | |
edf0c4a0 | 64 | fEvent = -1; |
65 | ||
51346b82 | 66 | fTRD = 0x0; |
14217b5f | 67 | fGeo = new AliTRDgeometry(); |
51346b82 | 68 | |
a282bf09 | 69 | AliCDBManager *fCDBManager=AliCDBManager::Instance(); |
70 | fCDBManager->SetDefaultStorage("local://$ALICE_ROOT"); | |
71 | fCDBManager->SetRun(0); | |
72 | } | |
73 | ||
74 | //________________________________________________________ | |
d810d0de | 75 | AliEveTRDLoader::~AliEveTRDLoader() |
a282bf09 | 76 | { |
77 | // if(fChambers) {fChambers->clear(); delete fChambers;} | |
78 | } | |
79 | ||
80 | //________________________________________________________ | |
81 | template<class T> | |
82 | class ID | |
83 | { | |
84 | public: | |
f5790a4c | 85 | ID( int value ) : id(value) {} |
a282bf09 | 86 | bool operator()(const T &t) const { |
d810d0de | 87 | return ((dynamic_cast<AliEveTRDModule*>(t))->GetID() == id); |
a282bf09 | 88 | } |
89 | private: | |
90 | const int id; | |
91 | }; | |
d810d0de | 92 | void AliEveTRDLoader::AddChambers(int sm, int stk, int ly) |
a282bf09 | 93 | { |
94 | Int_t ism_start = (sm == -1) ? 0 : sm; | |
95 | Int_t ism_stop = (sm == -1) ? 18 : sm+1; | |
96 | Int_t istk_start= (stk == -1)? 0 : stk; | |
97 | Int_t istk_stop = (stk == -1)? 5 : stk+1; | |
98 | Int_t ily_start = (ly == -1) ? 0 : ly; | |
99 | Int_t ily_stop = (ly == -1) ? 6 : ly+1; | |
100 | ||
e6ac3950 | 101 | List_i ichmb; |
a282bf09 | 102 | ichmb = fChildren.begin(); |
103 | while(ichmb != fChildren.end()){ | |
2caed564 | 104 | (*ichmb)->SetRnrSelf(kFALSE); |
a282bf09 | 105 | ichmb++; |
106 | } | |
107 | ||
d810d0de | 108 | AliEveTRDNode *SM=0x0, *STK=0x0; |
109 | AliEveTRDChamber *CHMB = 0x0; | |
a282bf09 | 110 | int det; |
111 | for(int ism=ism_start; ism<ism_stop; ism++){ | |
84aff7a4 | 112 | ichmb = find_if(fChildren.begin(), fChildren.end(), ID<TEveElement*>(ism)); |
a282bf09 | 113 | if(ichmb != fChildren.end()){ |
d810d0de | 114 | SM = (AliEveTRDNode*)(*ichmb); |
2caed564 | 115 | SM->SetRnrSelf(kTRUE); |
a282bf09 | 116 | }else{ |
d810d0de | 117 | gEve->AddElement(SM = new AliEveTRDNode("SM", ism), this); |
84aff7a4 | 118 | SM->FindListTreeItem(gEve->GetListTree())->SetTipText(Form("Supermodule %2d", ism)); |
a282bf09 | 119 | } |
120 | for(int istk=istk_start; istk<istk_stop; istk++){ | |
84aff7a4 | 121 | ichmb = find_if(SM->begin(), SM->end(), ID<TEveElement*>(istk)); |
a282bf09 | 122 | if(ichmb != SM->end()){ |
d810d0de | 123 | STK = (AliEveTRDNode*)(*ichmb); |
2caed564 | 124 | STK->SetRnrSelf(kTRUE); |
a282bf09 | 125 | }else{ |
d810d0de | 126 | gEve->AddElement(STK = new AliEveTRDNode("Stack", istk), SM); |
84aff7a4 | 127 | STK->FindListTreeItem(gEve->GetListTree())->SetTipText(Form("SM %2d Stack %1d", ism, istk)); |
a282bf09 | 128 | } |
129 | for(int ily=ily_start; ily<ily_stop; ily++){ | |
14217b5f | 130 | det = fGeo->GetDetector(ily, istk, ism); |
84aff7a4 | 131 | ichmb = find_if(STK->begin(), STK->end(), ID<TEveElement*>(det)); |
2caed564 | 132 | if(ichmb != STK->end()) (*ichmb)->SetRnrSelf(kTRUE); |
a282bf09 | 133 | else{ |
d810d0de | 134 | gEve->AddElement(CHMB = new AliEveTRDChamber(det), STK); |
14217b5f | 135 | CHMB->SetGeometry(fGeo); |
84aff7a4 | 136 | CHMB->FindListTreeItem(gEve->GetListTree())->SetTipText(Form("SM %2d Stack %1d Layer %1d", ism, istk, ily)); |
a282bf09 | 137 | } |
138 | } | |
139 | } | |
140 | } | |
84aff7a4 | 141 | gEve->Redraw3D(); |
a282bf09 | 142 | } |
143 | ||
144 | //________________________________________________________ | |
d810d0de | 145 | AliEveTRDChamber* AliEveTRDLoader::GetChamber(int d) |
a282bf09 | 146 | { |
e6ac3950 | 147 | List_i ism, istack, ichmb; |
51346b82 | 148 | |
84aff7a4 | 149 | ism = find_if(fChildren.begin(), fChildren.end(), ID<TEveElement*>(fGeo->GetSector(d))); |
a282bf09 | 150 | if(ism == fChildren.end()) return 0x0; |
d810d0de | 151 | istack = find_if(((AliEveTRDNode*)(*ism))->begin(), ((AliEveTRDNode*)(*ism))->end(), ID<TEveElement*>(fGeo->GetChamber(d))); |
152 | if(istack == ((AliEveTRDNode*)(*ism))->end()) return 0x0; | |
153 | ichmb = find_if(((AliEveTRDNode*)(*istack))->begin(), ((AliEveTRDNode*)(*istack))->end(), ID<TEveElement*>(d)); | |
154 | if(ichmb == ((AliEveTRDNode*)(*istack))->end()) return 0x0; | |
155 | return dynamic_cast<AliEveTRDChamber*>(*ichmb); | |
a282bf09 | 156 | } |
157 | ||
158 | //________________________________________________________ | |
d810d0de | 159 | Bool_t AliEveTRDLoader::GoToEvent(int ev) |
a282bf09 | 160 | { |
edf0c4a0 | 161 | if(!fChildren.size()){ |
162 | AliWarning("Please select first the chamber that you want to monitor from \"Chamber(s) selector\"."); | |
163 | return kFALSE; | |
164 | } | |
165 | ||
14217b5f | 166 | fEvent = ev; |
167 | ||
a282bf09 | 168 | Unload(); |
51346b82 | 169 | |
a282bf09 | 170 | TTree *t = 0x0; |
edf0c4a0 | 171 | TFile *f = new TFile(Form("%s/%s", fDir.Data(), fFilename.Data())); |
d810d0de | 172 | if(! f->cd(Form("AliEveEventManager%d", ev))){ |
edf0c4a0 | 173 | AliError(Form("Couldn't find event %d in file \"%s/%s\".", ev, fDir.Data(), fFilename.Data())); |
174 | f->Close(); delete f; | |
175 | return kFALSE; | |
a282bf09 | 176 | } |
51346b82 | 177 | |
a282bf09 | 178 | if(kLoadDigits){ |
edf0c4a0 | 179 | t = (TTree*)gDirectory->Get("TreeD"); |
a282bf09 | 180 | if(!t) return kFALSE; |
a282bf09 | 181 | if(!LoadDigits(t)) return kFALSE; |
edf0c4a0 | 182 | } else if(kLoadClusters){ |
183 | t = (TTree*)gDirectory->Get("TreeR"); | |
a282bf09 | 184 | if(!t) return kFALSE; |
185 | if(!LoadClusters(t)) return kFALSE; | |
edf0c4a0 | 186 | } else if(kLoadTracks){ |
187 | t = (TTree*)gDirectory->Get("TreeT"); | |
a282bf09 | 188 | if(!t) return kFALSE; |
189 | if(!LoadTracklets(t)) return kFALSE; | |
edf0c4a0 | 190 | } else AliWarning("Please select first the type of data that you want to monitor and then hit the \"Load\" button."); |
191 | ||
192 | f->Close(); delete f; | |
51346b82 | 193 | |
84aff7a4 | 194 | gEve->Redraw3D(); |
51346b82 | 195 | |
a282bf09 | 196 | return kTRUE; |
197 | } | |
198 | ||
199 | ||
200 | //________________________________________________________ | |
d810d0de | 201 | Bool_t AliEveTRDLoader::LoadClusters(TTree *tC) |
a282bf09 | 202 | { |
edf0c4a0 | 203 | AliInfo("Loading ..."); |
a282bf09 | 204 | if(!fChildren.size()) return kTRUE; |
205 | ||
206 | TObjArray *clusters = new TObjArray(); | |
edf0c4a0 | 207 | tC->SetBranchAddress("TRDcluster", &clusters); |
a282bf09 | 208 | |
51346b82 | 209 | AliEveTRDChamber *chmb = 0x0; |
a282bf09 | 210 | AliTRDcluster *c=0x0; |
211 | for(int idet=0; idet<540; idet++){ | |
edf0c4a0 | 212 | tC->GetEntry(idet); |
213 | if(!clusters->GetEntriesFast()) continue; | |
214 | c = (AliTRDcluster*)clusters->UncheckedAt(0); | |
215 | if(!c) continue; | |
a282bf09 | 216 | if((chmb = GetChamber(c->GetDetector()))) chmb->LoadClusters(clusters); |
217 | } | |
218 | return kTRUE; | |
219 | } | |
220 | ||
221 | ||
222 | //________________________________________________________ | |
d810d0de | 223 | Bool_t AliEveTRDLoader::LoadDigits(TTree *tD) |
a282bf09 | 224 | { |
edf0c4a0 | 225 | AliInfo("Loading ..."); |
51346b82 | 226 | |
a282bf09 | 227 | if(!fChildren.size()) return kTRUE; |
51346b82 | 228 | |
d810d0de | 229 | AliEveTRDChamber *chmb; |
a282bf09 | 230 | AliTRDdigitsManager dm; |
231 | dm.ReadDigits(tD); | |
232 | for(int idet=0; idet<540; idet++){ | |
233 | if(!(chmb=GetChamber(idet))) continue; | |
14217b5f | 234 | // digits = dm.GetDigits(idet); |
235 | // if(!digits) continue; | |
236 | // chmb->LoadDigits(digits); | |
237 | chmb->LoadDigits(&dm); | |
a282bf09 | 238 | } |
239 | return kTRUE; | |
240 | } | |
241 | ||
242 | ||
a282bf09 | 243 | //________________________________________________________ |
d810d0de | 244 | Bool_t AliEveTRDLoader::LoadTracklets(TTree *tT) |
a282bf09 | 245 | { |
edf0c4a0 | 246 | AliInfo("Loading ..."); |
a282bf09 | 247 | if(!fChildren.size()) return kTRUE; |
248 | ||
249 | TObjArray *tracks = new TObjArray(); | |
250 | tT->SetBranchAddress("TRDmcmTracklet",&tracks); | |
51346b82 | 251 | |
d810d0de | 252 | AliEveTRDChamber *chmb = 0x0; |
a282bf09 | 253 | AliTRDmcmTracklet *trk=0x0; |
254 | for(int idet=0; idet<540; idet++){ | |
255 | if(!tT->GetEntry(idet)) continue; | |
256 | if(tracks->GetEntriesFast()) trk = (AliTRDmcmTracklet*)tracks->UncheckedAt(0); | |
257 | if((chmb = GetChamber(trk->GetDetector()))) chmb->LoadTracklets(tracks); | |
258 | } | |
51346b82 | 259 | |
a282bf09 | 260 | return kTRUE; |
261 | } | |
51346b82 | 262 | |
edf0c4a0 | 263 | |
a282bf09 | 264 | //________________________________________________________ |
d810d0de | 265 | Bool_t AliEveTRDLoader::Open(const char *filename, const char *dir) |
a282bf09 | 266 | { |
14217b5f | 267 | fFilename = filename; |
268 | fDir = dir; | |
edf0c4a0 | 269 | Int_t count = 0; |
270 | count += kLoadDigits ? 1 : 0; | |
271 | count += kLoadClusters ? 1 : 0; | |
272 | count += kLoadTracks ? 1 : 0; | |
51346b82 | 273 | |
edf0c4a0 | 274 | TObjArray *so = fFilename.Tokenize("."); |
275 | ||
276 | if(((TObjString*)(*so)[0])->GetString().CompareTo("TRD") != 0){ | |
277 | if(!count){ | |
278 | AliWarning("Filename didn't fulfill naming conventions. No TRD data will be loaded."); | |
279 | return kFALSE; | |
280 | } else { | |
281 | Warning("Open()", "Filename didn't fulfill naming conventions."); | |
282 | return kTRUE; | |
283 | } | |
a282bf09 | 284 | } |
edf0c4a0 | 285 | if(((TObjString*)(*so)[1])->GetString().CompareTo("Digits") == 0){ |
286 | if(!kLoadDigits) AliWarning("Data type set to DIGITS according to file name. Previous settings with SetDataType() will be discarded."); | |
287 | kLoadDigits = kTRUE; | |
288 | } else if(((TObjString*)(*so)[1])->GetString().CompareTo("RecPoints") == 0){ | |
289 | if(!kLoadClusters) AliWarning("Data type set to CLUSTERS according to file name. Previous settings with SetDataType() will be discarded."); | |
290 | kLoadClusters = kTRUE; | |
291 | } else if(((TObjString*)(*so)[1])->GetString().CompareTo("Tracks") == 0){ | |
292 | if(!kLoadTracks) AliWarning("Data type set to TRACKLETS according to file name. Previous settings with SetDataType() will be discarded."); | |
293 | kLoadTracks = kTRUE; | |
294 | } else if(count){ | |
295 | AliWarning("Filename didn't fulfill naming conventions."); | |
296 | return kTRUE; | |
297 | } else { | |
298 | AliError("Filename didn't fulfill naming conventions. No data will be loaded."); | |
a282bf09 | 299 | return kFALSE; |
300 | } | |
51346b82 | 301 | |
a282bf09 | 302 | return kTRUE; |
303 | } | |
304 | ||
edf0c4a0 | 305 | |
306 | ||
307 | //________________________________________________________ | |
d810d0de | 308 | void AliEveTRDLoader::Paint(Option_t *option) |
edf0c4a0 | 309 | { |
310 | List_i ichmb = fChildren.begin(); | |
311 | while(ichmb != fChildren.end()){ | |
d810d0de | 312 | (dynamic_cast<AliEveTRDModule*>(*ichmb))->Paint(option); |
edf0c4a0 | 313 | ichmb++; |
314 | } | |
315 | } | |
316 | ||
317 | //________________________________________________________ | |
d810d0de | 318 | void AliEveTRDLoader::SetDataType(TRDDataTypes type) |
edf0c4a0 | 319 | { |
320 | kLoadHits = kFALSE; | |
321 | kLoadDigits = kFALSE; | |
322 | kLoadClusters = kFALSE; | |
323 | kLoadTracks = kFALSE; | |
324 | switch(type){ | |
325 | case kHits: kLoadHits = kTRUE; break; | |
326 | case kDigits: kLoadDigits = kTRUE; break; | |
327 | case kClusters: kLoadClusters = kTRUE; break; | |
328 | case kTracks: kLoadTracks = kTRUE; break; | |
329 | case kRawRoot: break; | |
330 | case kRawData: break; | |
331 | } | |
332 | } | |
333 | ||
a282bf09 | 334 | //________________________________________________________ |
d810d0de | 335 | void AliEveTRDLoader::Unload() |
a282bf09 | 336 | { |
e6ac3950 | 337 | List_i ichmb = fChildren.begin(); |
a282bf09 | 338 | while(ichmb != fChildren.end()){ |
d810d0de | 339 | (dynamic_cast<AliEveTRDModule*>(*ichmb))->Reset(); |
a282bf09 | 340 | ichmb++; |
341 | } | |
342 | } | |
343 | ||
344 | /////////////////////////////////////////////////////////// | |
d810d0de | 345 | ///////////// AliEveTRDLoaderEditor ///////////////////// |
a282bf09 | 346 | /////////////////////////////////////////////////////////// |
347 | ||
348 | //________________________________________________________ | |
d810d0de | 349 | AliEveTRDLoaderEditor::AliEveTRDLoaderEditor(const TGWindow* p, Int_t width, Int_t height, UInt_t options, Pixel_t back) : TGedFrame(p, width, height, options | kVerticalFrame, back) |
a282bf09 | 350 | { |
d810d0de | 351 | MakeTitle("AliEveTRDLoader"); |
51346b82 | 352 | |
a282bf09 | 353 | fFile = 0x0; |
14217b5f | 354 | TGTextButton *fOpenFile = 0x0; |
a282bf09 | 355 | Int_t labelW = 42; |
51346b82 | 356 | |
edf0c4a0 | 357 | TGHorizontalFrame* f = new TGHorizontalFrame(this); |
358 | TGHorizontalFrame* g = new TGHorizontalFrame(f, labelW, 0, kFixedWidth); | |
359 | TGLabel* l = new TGLabel(g, "File: "); | |
360 | g->AddFrame(l, new TGLayoutHints(kLHintsLeft, 0,0,4,0)); | |
361 | f->AddFrame(g); | |
362 | fFile = new TGTextEntry(f); | |
363 | fFile->SetToolTipText("Select TRD data file or galice.root"); | |
364 | fFile->SetWidth(140); | |
d810d0de | 365 | fFile->Connect("DoubleClicked()", "AliEveTRDLoaderEditor", this, "FileOpen()"); |
edf0c4a0 | 366 | f->AddFrame(fFile); |
51346b82 | 367 | |
edf0c4a0 | 368 | fOpenFile = new TGTextButton(f, "Browse"); |
369 | f->AddFrame(fOpenFile); | |
d810d0de | 370 | fOpenFile->Connect("Clicked()", "AliEveTRDLoaderEditor", this, "FileOpen()"); |
edf0c4a0 | 371 | AddFrame(f); |
a282bf09 | 372 | |
51346b82 | 373 | |
d810d0de | 374 | fEvent = new TEveGValuator(this, "AliEveEventManager:", 110, 0); |
a282bf09 | 375 | fEvent->SetShowSlider(kFALSE); |
376 | fEvent->SetLabelWidth(labelW); | |
377 | fEvent->SetNELength(6); | |
378 | fEvent->Build(); | |
379 | fEvent->SetLimits(-1, 1000); | |
edf0c4a0 | 380 | fEvent->SetToolTip("Set event number to be monitored"); |
381 | fEvent->Connect("ValueSet(Double_t)", | |
d810d0de | 382 | "AliEveTRDLoaderEditor", this, "SetEvent(Double_t)"); |
a282bf09 | 383 | AddFrame(fEvent); |
384 | ||
385 | ||
386 | // "Chamber(s) selector" group frame | |
387 | TGGroupFrame *fGroupFrame1974 = new TGGroupFrame(this,"Chamber(s) selector"); | |
14217b5f | 388 | TGVerticalFrame *fVerticalFrame1974 = new TGVerticalFrame(fGroupFrame1974, 150, 50,kVerticalFrame); |
51346b82 | 389 | |
84aff7a4 | 390 | fSMNumber = new TEveGValuator(fVerticalFrame1974, "SM:", 0, 0); |
14217b5f | 391 | fSMNumber->SetShowSlider(kFALSE); |
392 | fSMNumber->SetLabelWidth(labelW); | |
393 | fSMNumber->SetNELength(6); | |
394 | fSMNumber->Build(); | |
395 | fSMNumber->SetLimits(-1, 17); | |
396 | fSMNumber->SetToolTip("Supermodule id [-1 for all]"); | |
397 | fVerticalFrame1974->AddFrame(fSMNumber, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterX | kLHintsExpandY,2,2,2,2)); | |
398 | ||
84aff7a4 | 399 | fStackNumber = new TEveGValuator(fVerticalFrame1974, "Stack:", 0, 0); |
14217b5f | 400 | fStackNumber->SetShowSlider(kFALSE); |
401 | fStackNumber->SetLabelWidth(labelW); | |
402 | fStackNumber->SetNELength(6); | |
403 | fStackNumber->Build(); | |
404 | fStackNumber->SetLimits(-1, 4); | |
405 | fStackNumber->SetToolTip("Stack id [-1 for all in this SM]"); | |
406 | fVerticalFrame1974->AddFrame(fStackNumber, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterX | kLHintsExpandY,2,2,2,2)); | |
407 | ||
84aff7a4 | 408 | fPlaneNumber = new TEveGValuator(fVerticalFrame1974, "Plane:", 0, 0); |
14217b5f | 409 | fPlaneNumber->SetShowSlider(kFALSE); |
410 | fPlaneNumber->SetLabelWidth(labelW); | |
411 | fPlaneNumber->SetNELength(6); | |
412 | fPlaneNumber->Build(); | |
413 | fPlaneNumber->SetLimits(-1, 5); | |
414 | fPlaneNumber->SetToolTip("Plane id [-1 for all in this stack]"); | |
415 | ||
416 | fVerticalFrame1974->AddFrame(fPlaneNumber, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterX | kLHintsExpandY,2,2,2,2)); | |
51346b82 | 417 | |
14217b5f | 418 | fGroupFrame1974->AddFrame(fVerticalFrame1974, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandY | kLHintsCenterX,2,2,2,2)); |
a282bf09 | 419 | |
420 | TGTextButton *fTextButton2037 = new TGTextButton(fGroupFrame1974,"Select"); | |
421 | fTextButton2037->SetTextJustify(36); | |
14217b5f | 422 | fGroupFrame1974->AddFrame(fTextButton2037, new TGLayoutHints(kLHintsExpandY | kLHintsCenterX,2,2,2,2)); |
edf0c4a0 | 423 | fTextButton2037->SetToolTipText("Apply selection", 400); |
a282bf09 | 424 | fTextButton2037->Connect("Clicked()", |
d810d0de | 425 | "AliEveTRDLoaderEditor", this, "AddChambers()"); |
a282bf09 | 426 | |
427 | fGroupFrame1974->SetLayoutManager(new TGHorizontalLayout(fGroupFrame1974)); | |
a282bf09 | 428 | AddFrame(fGroupFrame1974, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); |
429 | ||
a282bf09 | 430 | |
431 | TGTextButton *fTextButton2004 = new TGTextButton(this,"Load"); | |
432 | fTextButton2004->SetTextJustify(36); | |
433 | fTextButton2004->Resize(164,22); | |
434 | AddFrame(fTextButton2004, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
edf0c4a0 | 435 | fTextButton2004->SetToolTipText("Load data according to selection", 400); |
d810d0de | 436 | fTextButton2004->Connect("Clicked()", "AliEveTRDLoaderEditor", this, "Load()"); |
a282bf09 | 437 | } |
438 | ||
439 | //________________________________________________________ | |
d810d0de | 440 | AliEveTRDLoaderEditor::~AliEveTRDLoaderEditor() |
a282bf09 | 441 | {} |
442 | ||
443 | //_________________________________________________________ | |
d810d0de | 444 | void AliEveTRDLoaderEditor::SetModel(TObject* obj) |
a282bf09 | 445 | { |
edf0c4a0 | 446 | |
d810d0de | 447 | fM = dynamic_cast<AliEveTRDLoader*>(obj); |
14217b5f | 448 | |
449 | fFile->SetText(gSystem->BaseName(fM->fFilename.Data())); | |
450 | ||
451 | Bool_t kFile = kTRUE; | |
452 | if(fM->fFilename.CompareTo("") == 0) kFile = kFALSE; | |
453 | ||
454 | fEvent->SetEnabled(kFile); | |
edf0c4a0 | 455 | fEvent->GetEntry()->SetIntNumber(fM->fEvent); |
51346b82 | 456 | |
14217b5f | 457 | fSMNumber->SetEnabled(kFile); |
edf0c4a0 | 458 | fSMNumber->GetEntry()->SetIntNumber(fM->fSM); |
459 | ||
460 | ||
14217b5f | 461 | fStackNumber->SetEnabled(kFile); |
edf0c4a0 | 462 | fStackNumber->GetEntry()->SetIntNumber(fM->fStack); |
463 | ||
464 | ||
14217b5f | 465 | fPlaneNumber->SetEnabled(kFile); |
edf0c4a0 | 466 | fPlaneNumber->GetEntry()->SetIntNumber(fM->fLy); |
a282bf09 | 467 | } |
468 | ||
469 | //________________________________________________________ | |
d810d0de | 470 | void AliEveTRDLoaderEditor::AddChambers() |
a282bf09 | 471 | { |
14217b5f | 472 | fM->fSM = (int)fSMNumber->GetEntry()->GetNumber(); |
473 | fM->fStack = (int)fStackNumber->GetEntry()->GetNumber(); | |
474 | fM->fLy = (int)fPlaneNumber->GetEntry()->GetNumber(); | |
475 | fM->AddChambers(fM->fSM, fM->fStack, fM->fLy); | |
a282bf09 | 476 | } |
477 | ||
478 | //________________________________________________________ | |
d810d0de | 479 | void AliEveTRDLoaderEditor::FileOpen() |
a282bf09 | 480 | { |
481 | TGFileInfo fi; | |
14217b5f | 482 | fi.fIniDir = StrDup(gSystem->DirName (fM->fFilename.Data())); |
483 | fi.fFilename = StrDup(gSystem->BaseName(fM->fFilename.Data())); | |
484 | // fi.fFileTypes = tpcfiletypes; | |
485 | ||
84aff7a4 | 486 | new TGFileDialog(fClient->GetRoot(), gEve->GetMainWindow(), kFDOpen, &fi); |
a282bf09 | 487 | if (!fi.fFilename) return; |
488 | ||
489 | fFile->SetToolTipText(gSystem->DirName (fi.fFilename)); | |
490 | fFile->SetText (gSystem->BaseName(fi.fFilename)); | |
491 | ||
14217b5f | 492 | fM->Open(gSystem->BaseName(fi.fFilename), gSystem->DirName (fi.fFilename)); |
edf0c4a0 | 493 | |
494 | this->SetModel(fM); | |
a282bf09 | 495 | } |
496 | ||
d810d0de | 497 | void AliEveTRDLoaderEditor::Load() |
a282bf09 | 498 | { |
edf0c4a0 | 499 | fM->GoToEvent(fM->fEvent); |
a282bf09 | 500 | } |