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