]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveTRDLoaderImp.cxx
fix digits vizualization
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTRDLoaderImp.cxx
CommitLineData
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 "AliEveTRDLoaderImp.h"
11#include "AliEveTRDModuleImp.h"
6983e87a 12#include "EveBase/AliEveEventManager.h"
edf0c4a0 13
84aff7a4 14#include <TEveManager.h>
edf0c4a0 15
a15e6d7d 16//#include "TFile.h"
edf0c4a0 17#include "TTree.h"
18
19#include <TGButton.h>
20
21#include "AliLog.h"
22#include "AliRun.h"
23#include "AliRunLoader.h"
a15e6d7d 24//#include "AliLoader.h"
edf0c4a0 25#include "AliTRDrawData.h"
0d9ef37b 26#include "AliTRDrawStreamTB.h"
27#include "AliTRDrawStreamBase.h"
28#include "AliTRDdigitsManager.h"
edf0c4a0 29#include "AliRawReaderRoot.h"
30#include "AliRawReaderDate.h"
31
d810d0de 32ClassImp(AliEveTRDLoaderSim)
33ClassImp(AliEveTRDLoaderRaw)
34ClassImp(AliEveTRDLoaderSimEditor)
35//ClassImp(TRDLoaderRawEditor)
edf0c4a0 36
37///////////////////////////////////////////////////////////
fd31e9de 38///////////// AliEveTRDLoaderSim /////////////////////
edf0c4a0 39///////////////////////////////////////////////////////////
40
41
fd31e9de 42//______________________________________________________________________________
43AliEveTRDLoaderSim::AliEveTRDLoaderSim(const Text_t* n, const Text_t* t) :
6983e87a 44 AliEveTRDLoader(n, t)
45 ,fRunLoader(0x0)
a15e6d7d 46{
47 // Constructor.
6983e87a 48 if(gAlice && (fRunLoader = AliEveEventManager::AssertRunLoader())) SetDataLinked();
a15e6d7d 49}
edf0c4a0 50
fd31e9de 51//______________________________________________________________________________
d810d0de 52Bool_t AliEveTRDLoaderSim::GoToEvent(int ev)
edf0c4a0 53{
a15e6d7d 54 // Go to given event.
55
fd31e9de 56 if(!fChildren.size()){
57 AliWarning("Please select first the chamber that you want to monitor from \"Chamber(s) selector\".");
58 return kFALSE;
59 }
6983e87a 60 if(!fDataType){
fd31e9de 61 AliWarning("Please select first the type of data that you want to monitor and then hit the \"Load\" button.");
62 return kFALSE;
63 }
64
65 fEvent = ev;
66
67 if(!fRunLoader){
68 AliError("RunLoader not initialized.");
69 return kFALSE;
70 }
71 fRunLoader->UnloadAll("TRD");
72 Unload();
73
74 if(fRunLoader->GetEvent(ev)) return kFALSE;
75 TTree *t = 0;
6983e87a 76 if(fDataType&kTRDHits){
fd31e9de 77 fRunLoader->LoadHits("TRD", "READ");
78 t = fRunLoader->GetTreeH("TRD", kFALSE);
79 if(!t) return kFALSE;
fd31e9de 80 if(!LoadHits(t)) return kFALSE;
81 }
6983e87a 82 if(fDataType&kTRDDigits){
fd31e9de 83 fRunLoader->LoadDigits("TRD", "READ");
84 t = fRunLoader->GetTreeD("TRD", kFALSE);
85 if(!t) return kFALSE;
fd31e9de 86 if(!LoadDigits(t)) return kFALSE;
87 }
6983e87a 88 if(fDataType&kTRDClusters){
fd31e9de 89 fRunLoader->LoadRecPoints("TRD", "READ");
90 t = fRunLoader->GetTreeR("TRD", kFALSE);
91 if(!t) return kFALSE;
92 if(!LoadClusters(t)) return kFALSE;
93 }
6983e87a 94 if(fDataType&kTRDTracklets){
fd31e9de 95 fRunLoader->LoadTracks("TRD", "READ");
96 t = fRunLoader->GetTreeT("TRD", kFALSE);
97 if(!t) return kFALSE;
98 if(!LoadTracklets(t)) return kFALSE;
99 }
100
101 gEve->Redraw3D();
102 return kTRUE;
edf0c4a0 103}
104
105
fd31e9de 106//______________________________________________________________________________
d810d0de 107Bool_t AliEveTRDLoaderSim::Open(const char *filename, const char *dir)
edf0c4a0 108{
a15e6d7d 109 // Open file in given dir.
51346b82 110
6983e87a 111 if(fRunLoader) return kTRUE;
112
fd31e9de 113 fRunLoader = AliRunLoader::GetRunLoader();
114 if(!fRunLoader) fRunLoader = AliRunLoader::Open(filename,
6983e87a 115 AliConfig::GetDefaultEventFolderName(),"read");
116 if(!fRunLoader) return kFALSE;
51346b82 117
fd31e9de 118 gAlice = fRunLoader->GetAliRun();
edf0c4a0 119 if(!gAlice) fRunLoader->LoadgAlice();
6983e87a 120 if(!gAlice) return kFALSE;
121
122 fFilename = filename;
123 fDir = dir;
124 fDir += "/";
125 fRunLoader->SetDirName(fDir);
fd31e9de 126
6983e87a 127 SetDataLinked();
fd31e9de 128 return kTRUE;
edf0c4a0 129}
130
51346b82 131
edf0c4a0 132///////////////////////////////////////////////////////////
fd31e9de 133///////////// AliEveTRDLoaderRaw /////////////////////
edf0c4a0 134///////////////////////////////////////////////////////////
135
136
fd31e9de 137//______________________________________________________________________________
138AliEveTRDLoaderRaw::AliEveTRDLoaderRaw(const Text_t* n, const Text_t* t) :
0d9ef37b 139 AliEveTRDLoader(n, t)
140 ,fRawDateReader (0x0)
141 ,fRawRootReader (0x0)
142 ,fRaw (0x0)
143 ,fEventCnt(-1)
a15e6d7d 144{
145 // Constructor.
146}
edf0c4a0 147
fd31e9de 148//______________________________________________________________________________
d810d0de 149Bool_t AliEveTRDLoaderRaw::Open(const char *filename, const char *dir)
edf0c4a0 150{
a15e6d7d 151 // Open file in gvenn dir.
152
fd31e9de 153 fFilename = filename;
154 fDir = dir;
155 fDir += "/";
edf0c4a0 156
fd31e9de 157 if(fRaw) delete fRaw;
158 fRaw = new AliTRDrawData();
51346b82 159
6983e87a 160 if(fDataType&kTRDRawRoot){
fd31e9de 161 if(fRawRootReader) delete fRawRootReader;
162 fRawRootReader = new AliRawReaderRoot(filename);
6983e87a 163 } else if(fDataType&kTRDRawDate){
fd31e9de 164 if(fRawDateReader) delete fRawDateReader;
165 fRawDateReader = new AliRawReaderDate(fDir+fFilename);
6983e87a 166 } else {
167 AliError("No data type was set.");
168 return kFALSE;
fd31e9de 169 }
6983e87a 170 SetDataLinked();
fd31e9de 171 return kTRUE;
edf0c4a0 172}
173
edf0c4a0 174
fd31e9de 175//______________________________________________________________________________
176Bool_t AliEveTRDLoaderRaw::GoToEvent(int ev)
edf0c4a0 177{
a15e6d7d 178 // Go to given event.
179
0d9ef37b 180 //AliInfo(Form("Event %d %d %d", ev, fEvent, fEventCnt));
181
182
fd31e9de 183 if(!fChildren.size()){
184 AliWarning("Please select first the chamber that you want to monitor from \"Chamber(s) selector\".");
185 return kFALSE;
186 }
187
a15e6d7d 188 static const TEveException kEH("AliEveTRDLoader::GotoEvent ");
189 if(fRawRootReader == 0x0) throw(kEH + "data file not opened.");
fd31e9de 190
0d9ef37b 191 fEvent = ev;
192 if(ev == fEventCnt) return kTRUE;
193 if(ev < fEventCnt) {
fd31e9de 194 fRawRootReader->RewindEvents();
0d9ef37b 195 fEventCnt = -1;
196 }
fd31e9de 197
0d9ef37b 198 Bool_t FOUND = kFALSE;
199 while(fRawRootReader->NextEvent()){
200 fEventCnt++;
201 if(fEventCnt == ev){
202 FOUND = kTRUE;
203 break;
204 }
205 }
206 if(!FOUND) return kFALSE;
207
fd31e9de 208 LoadEvent();
209 gEve->Redraw3D();
a15e6d7d 210
fd31e9de 211 return kTRUE;
edf0c4a0 212}
213
0d9ef37b 214
fd31e9de 215//______________________________________________________________________________
d810d0de 216Bool_t AliEveTRDLoaderRaw::LoadEvent()
edf0c4a0 217{
a15e6d7d 218 // Load event.
0d9ef37b 219 AliInfo("Loading ...");
51346b82 220
a15e6d7d 221 static const TEveException kEH("AliEveTRDLoader::LoadEvent ");
222 if(fRawRootReader == 0x0) throw(kEH + "data file not opened.");
edf0c4a0 223
224
fd31e9de 225 fRawRootReader->Reset();
edf0c4a0 226
0d9ef37b 227 AliTRDrawStreamBase::SetRawStreamVersion(AliTRDrawStreamBase::kTRDrealStream);
228 AliTRDrawStreamTB::AllowCorruptedData();
229 AliTRDrawStreamTB::DisableStackNumberChecker();
230 AliTRDrawStreamTB::DisableStackLinkNumberChecker();
231
232 AliTRDrawStreamBase *pinput = AliTRDrawStreamBase::GetRawStream(fRawRootReader);
233 AliTRDrawStreamBase &input = *pinput;
234
235 // AliInfo(Form("Stream version: %s", input.IsA()->GetName()));
236
fd31e9de 237 AliEveTRDChamber *chmb;
0d9ef37b 238 AliTRDdigitsManager *dm = new AliTRDdigitsManager();
239 dm->CreateArrays();
edf0c4a0 240
0d9ef37b 241 Int_t det = 0;
242 while ((det = input.NextChamber(dm)) >= 0){
243 if(!(chmb=GetChamber(det))) continue;
fd31e9de 244 chmb->LoadDigits(dm);
0d9ef37b 245
246 dm->RemoveDigits(det);
247 dm->RemoveDictionaries(det);
248 dm->ClearIndexes(det);
fd31e9de 249 }
edf0c4a0 250
0d9ef37b 251 delete dm;
252 dm = NULL;
a15e6d7d 253
0d9ef37b 254 delete pinput;
255 pinput = NULL;
fd31e9de 256
257
6983e87a 258 return kTRUE;
edf0c4a0 259}
260
261
262
263///////////////////////////////////////////////////////////
fd31e9de 264//////////// AliEveTRDLoaderSimEditor /////////////////////
edf0c4a0 265///////////////////////////////////////////////////////////
266
fd31e9de 267//______________________________________________________________________________
268AliEveTRDLoaderSimEditor::AliEveTRDLoaderSimEditor(const TGWindow* p, Int_t width, Int_t height,
269 UInt_t options, Pixel_t back) :
6983e87a 270 TGedFrame(p, width, height, options | kVerticalFrame, back)
271 ,fM(0x0)
272 ,fCheckedHits(0x0)
273 ,fCheckedDigits(0x0)
274 ,fCheckedClusters(0x0)
275 ,fCheckedTracklets(0x0)
edf0c4a0 276{
a15e6d7d 277 // Constructor.
278
fd31e9de 279 MakeTitle("AliEveTRDLoaderSim");
51346b82 280
fd31e9de 281 // "Data selector" group frame
282 TGGroupFrame *fGroupFrame = new TGGroupFrame(this,"Data selector");
6983e87a 283 fCheckedHits = new TGCheckButton(fGroupFrame," Hits");
284 fCheckedHits->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDHits));
285 fGroupFrame->AddFrame(fCheckedHits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
51346b82 286
6983e87a 287 fCheckedDigits = new TGCheckButton(fGroupFrame," Digits");
288 fCheckedDigits->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDDigits));
289 fGroupFrame->AddFrame(fCheckedDigits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
edf0c4a0 290
6983e87a 291 fCheckedClusters = new TGCheckButton(fGroupFrame," Clusters");
292 fCheckedClusters->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDClusters));
293 fGroupFrame->AddFrame(fCheckedClusters, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
edf0c4a0 294
6983e87a 295 fCheckedTracklets = new TGCheckButton(fGroupFrame," Tracklets ");
296 fCheckedTracklets->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDTracklets));
297 fGroupFrame->AddFrame(fCheckedTracklets, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
edf0c4a0 298
fd31e9de 299 fGroupFrame->SetLayoutManager(new TGVerticalLayout(fGroupFrame));
300 // fGroupFrame->Resize(164,116);
301 AddFrame(fGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
edf0c4a0 302}
303
fd31e9de 304//______________________________________________________________________________
d810d0de 305void AliEveTRDLoaderSimEditor::SetModel(TObject* obj)
edf0c4a0 306{
a15e6d7d 307 // Set model object.
308
fd31e9de 309 fM = dynamic_cast<AliEveTRDLoaderSim*>(obj);
310
6983e87a 311 Bool_t kRL = (fM->IsDataLinked()) ? kTRUE : kFALSE;
312
313 fCheckedHits->SetEnabled(kRL);
314 if(kRL) fCheckedHits->SetState(fM->fDataType&AliEveTRDLoader::kTRDHits ? kButtonDown : kButtonUp);
315 fCheckedDigits->SetEnabled(kRL);
316 if(kRL) fCheckedDigits->SetState(fM->fDataType&AliEveTRDLoader::kTRDDigits ? kButtonDown : kButtonUp);
317 fCheckedClusters->SetEnabled(kRL);
318 if(kRL) fCheckedClusters->SetState(fM->fDataType&AliEveTRDLoader::kTRDClusters ? kButtonDown : kButtonUp);
319 fCheckedTracklets->SetEnabled(kRL);
320 if(kRL) fCheckedTracklets->SetState(fM->fDataType&AliEveTRDLoader::kTRDTracklets ? kButtonDown : kButtonUp);
edf0c4a0 321}
322
fd31e9de 323//______________________________________________________________________________
d810d0de 324void AliEveTRDLoaderSimEditor::Toggle(Int_t id)
edf0c4a0 325{
a15e6d7d 326 // Toggle given button id.
327
fd31e9de 328 switch(id){
6983e87a 329 case AliEveTRDLoader::kTRDHits:
330 fM->fDataType |= fCheckedHits->IsDown() ? AliEveTRDLoader::kTRDHits : 0;
331 break;
332 case AliEveTRDLoader::kTRDDigits:
333 fM->fDataType |= fCheckedDigits->IsDown() ? AliEveTRDLoader::kTRDDigits : 0;
334 break;
335 case AliEveTRDLoader::kTRDClusters:
336 fM->fDataType |= fCheckedClusters->IsDown() ? AliEveTRDLoader::kTRDClusters : 0;
337 break;
338 case AliEveTRDLoader::kTRDTracklets:
339 fM->fDataType |= fCheckedTracklets->IsDown() ? AliEveTRDLoader::kTRDTracklets : 0;
340 break;
fd31e9de 341 }
edf0c4a0 342}