2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
4 /**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
7 * full copyright notice. *
8 **************************************************************************/
10 #include "AliEveTRDLoaderManager.h"
11 #include "AliEveTRDLoader.h"
12 #include "AliEveTRDLoaderImp.h"
14 #include <TEveManager.h>
18 #include <TGComboBox.h>
19 #include <TGListBox.h>
20 //#include <TGListTree.h>
21 //#include <TGString.h>
22 //#include <TGToolTip.h>
23 #include <TClonesArray.h>
27 ClassImp(AliEveTRDLoaderManager)
28 ClassImp(AliEveTRDLoaderManagerEditor)
30 ///////////////////////////////////////////////////////////
31 ///////// AliEveTRDLoaderManager //////////////
32 ///////////////////////////////////////////////////////////
34 //______________________________________________________________________________
35 AliEveTRDLoaderManager::AliEveTRDLoaderManager(const Text_t* n, const Text_t* t) :
41 //______________________________________________________________________________
42 void AliEveTRDLoaderManager::Add(Int_t type, const Text_t *name, const Text_t *title)
46 AliEveTRDLoader *trdl = 0x0;
48 case AliEveTRDLoader::kTRDHits:
49 case AliEveTRDLoader::kTRDDigits:
50 case AliEveTRDLoader::kTRDClusters:
51 case AliEveTRDLoader::kTRDTracklets:
52 AddElement(trdl = new AliEveTRDLoader(name, title));
54 case AliEveTRDLoader::kTRDRawRoot:
55 case AliEveTRDLoader::kTRDRawDate:
56 AddElement(trdl = new AliEveTRDLoaderRaw(name, title));
59 AddElement(trdl = new AliEveTRDLoaderSim(name, title));
62 trdl->SetDataType(type);
68 //______________________________________________________________________________
69 void AliEveTRDLoaderManager::Paint(Option_t *option)
73 List_i ichmb = fChildren.begin();
74 while(ichmb != fChildren.end()){
75 (dynamic_cast<AliEveTRDLoader*>(*ichmb))->Paint(option);
80 //______________________________________________________________________________
81 void AliEveTRDLoaderManager::Remove(Int_t entry)
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);
92 ///////////////////////////////////////////////////////////
93 ////////// AliEveTRDLoaderManagerEditor ///////////
94 ///////////////////////////////////////////////////////////
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)
105 MakeTitle("AliEveTRDLoaderManager");
107 // control frame - always there
108 TGHorizontalFrame *fHorizontalFrame539 = new TGHorizontalFrame(this, 300, 26, kHorizontalFrame);
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));
115 fSelector = new TGComboBox(fHorizontalFrame539,-1,kHorizontalFrame | kSunkenFrame | kDoubleBorder | kOwnBackground);
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);
123 fSelector->Resize(136,22);
124 fHorizontalFrame539->AddFrame(fSelector, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY,2,2,2,2));
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*)");
127 AddFrame(fHorizontalFrame539, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
134 //______________________________________________________________________________
135 void AliEveTRDLoaderManagerEditor::Add(Char_t *name)
137 // Slot to add something.
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));
145 fRemove = new TClonesArray("TGTextButton", 3);
150 TGHorizontalFrame *fHorizontalFrame = new TGHorizontalFrame(fGroupFrame, 264, 26, kHorizontalFrame);
152 TGLabel *fLabel717 = new TGLabel(fHorizontalFrame, name);
153 fLabel717->SetTextJustify(36);
154 fHorizontalFrame->AddFrame(fLabel717, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
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));
162 fRemoveButton->SetToolTipText(Form("Remove %s Loader", name));
163 fHorizontalFrame->AddFrame(fRemoveButton, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsCenterY,2,2,2,2));
165 fGroupFrame->AddFrame(fHorizontalFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
169 Resize(GetDefaultSize());
172 const char *title[] = {"MC loader", "Single file loader", "Raw data loader"};
173 // char *color[] = {"#ff0000", "#0000ff", "#59d454"};
174 int id = fSelector->GetSelected(), type;
176 case AliEveTRDLoader::kTRDHits:
177 case AliEveTRDLoader::kTRDDigits:
178 case AliEveTRDLoader::kTRDClusters:
179 case AliEveTRDLoader::kTRDTracklets:
182 case AliEveTRDLoader::kTRDRawRoot:
183 case AliEveTRDLoader::kTRDRawDate:
190 fM->Add(id, name, title[type]);
194 //______________________________________________________________________________
195 void AliEveTRDLoaderManagerEditor::Remove(Int_t entry)
197 // Slot to remove something.
199 TIterator *it = fGroupFrame->GetList()->MakeIterator();
201 while(/*TGFrame *f=(TGFrame*)*/it->Next()){
202 //printf("%s\n", f->IsA()->GetName());
204 //fGroupFrame->RemoveFrame(f);
212 Resize(GetDefaultSize());
218 //______________________________________________________________________________
219 void AliEveTRDLoaderManagerEditor::SetModel(TObject* obj)
223 fM = dynamic_cast<AliEveTRDLoaderManager*>(obj);