]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveTRDLoaderImp.cxx
doxy: install THtml converter
[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"
b9df0156 12#include "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"
62f08695 25#include "AliTRDrawStream.h"
0d9ef37b 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();
a2125de9 117 if(!gAlice && fRunLoader->LoadgAlice()) return kFALSE;
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// AliTRDrawStream::AllowCorruptedData();
228// AliTRDrawStream::DisableStackNumberChecker();
229// AliTRDrawStream::DisableStackLinkNumberChecker();
0d9ef37b 230
62f08695 231 AliTRDrawStream *pinput = new AliTRDrawStream(fRawRootReader);
232 AliTRDrawStream &input = *pinput;
0d9ef37b 233
234 // AliInfo(Form("Stream version: %s", input.IsA()->GetName()));
235
fd31e9de 236 AliEveTRDChamber *chmb;
0d9ef37b 237 AliTRDdigitsManager *dm = new AliTRDdigitsManager();
238 dm->CreateArrays();
edf0c4a0 239
0d9ef37b 240 Int_t det = 0;
241 while ((det = input.NextChamber(dm)) >= 0){
242 if(!(chmb=GetChamber(det))) continue;
fd31e9de 243 chmb->LoadDigits(dm);
0d9ef37b 244
245 dm->RemoveDigits(det);
246 dm->RemoveDictionaries(det);
247 dm->ClearIndexes(det);
fd31e9de 248 }
edf0c4a0 249
a15e6d7d 250
0d9ef37b 251 delete pinput;
252 pinput = NULL;
fd31e9de 253
254
6983e87a 255 return kTRUE;
edf0c4a0 256}
257
258
259
260///////////////////////////////////////////////////////////
fd31e9de 261//////////// AliEveTRDLoaderSimEditor /////////////////////
edf0c4a0 262///////////////////////////////////////////////////////////
263
fd31e9de 264//______________________________________________________________________________
265AliEveTRDLoaderSimEditor::AliEveTRDLoaderSimEditor(const TGWindow* p, Int_t width, Int_t height,
266 UInt_t options, Pixel_t back) :
6983e87a 267 TGedFrame(p, width, height, options | kVerticalFrame, back)
268 ,fM(0x0)
269 ,fCheckedHits(0x0)
270 ,fCheckedDigits(0x0)
271 ,fCheckedClusters(0x0)
272 ,fCheckedTracklets(0x0)
edf0c4a0 273{
a15e6d7d 274 // Constructor.
275
fd31e9de 276 MakeTitle("AliEveTRDLoaderSim");
51346b82 277
fd31e9de 278 // "Data selector" group frame
279 TGGroupFrame *fGroupFrame = new TGGroupFrame(this,"Data selector");
6983e87a 280 fCheckedHits = new TGCheckButton(fGroupFrame," Hits");
281 fCheckedHits->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDHits));
282 fGroupFrame->AddFrame(fCheckedHits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
51346b82 283
6983e87a 284 fCheckedDigits = new TGCheckButton(fGroupFrame," Digits");
285 fCheckedDigits->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDDigits));
286 fGroupFrame->AddFrame(fCheckedDigits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
edf0c4a0 287
6983e87a 288 fCheckedClusters = new TGCheckButton(fGroupFrame," Clusters");
289 fCheckedClusters->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDClusters));
290 fGroupFrame->AddFrame(fCheckedClusters, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
edf0c4a0 291
6983e87a 292 fCheckedTracklets = new TGCheckButton(fGroupFrame," Tracklets ");
293 fCheckedTracklets->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDTracklets));
294 fGroupFrame->AddFrame(fCheckedTracklets, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
edf0c4a0 295
fd31e9de 296 fGroupFrame->SetLayoutManager(new TGVerticalLayout(fGroupFrame));
297 // fGroupFrame->Resize(164,116);
298 AddFrame(fGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
edf0c4a0 299}
300
fd31e9de 301//______________________________________________________________________________
d810d0de 302void AliEveTRDLoaderSimEditor::SetModel(TObject* obj)
edf0c4a0 303{
a15e6d7d 304 // Set model object.
305
90ae0503 306 if(!(fM = dynamic_cast<AliEveTRDLoaderSim*>(obj))) return;
fd31e9de 307
6983e87a 308 Bool_t kRL = (fM->IsDataLinked()) ? kTRUE : kFALSE;
309
310 fCheckedHits->SetEnabled(kRL);
311 if(kRL) fCheckedHits->SetState(fM->fDataType&AliEveTRDLoader::kTRDHits ? kButtonDown : kButtonUp);
312 fCheckedDigits->SetEnabled(kRL);
313 if(kRL) fCheckedDigits->SetState(fM->fDataType&AliEveTRDLoader::kTRDDigits ? kButtonDown : kButtonUp);
314 fCheckedClusters->SetEnabled(kRL);
315 if(kRL) fCheckedClusters->SetState(fM->fDataType&AliEveTRDLoader::kTRDClusters ? kButtonDown : kButtonUp);
316 fCheckedTracklets->SetEnabled(kRL);
317 if(kRL) fCheckedTracklets->SetState(fM->fDataType&AliEveTRDLoader::kTRDTracklets ? kButtonDown : kButtonUp);
edf0c4a0 318}
319
fd31e9de 320//______________________________________________________________________________
d810d0de 321void AliEveTRDLoaderSimEditor::Toggle(Int_t id)
edf0c4a0 322{
a15e6d7d 323 // Toggle given button id.
324
fd31e9de 325 switch(id){
6983e87a 326 case AliEveTRDLoader::kTRDHits:
327 fM->fDataType |= fCheckedHits->IsDown() ? AliEveTRDLoader::kTRDHits : 0;
328 break;
329 case AliEveTRDLoader::kTRDDigits:
330 fM->fDataType |= fCheckedDigits->IsDown() ? AliEveTRDLoader::kTRDDigits : 0;
331 break;
332 case AliEveTRDLoader::kTRDClusters:
333 fM->fDataType |= fCheckedClusters->IsDown() ? AliEveTRDLoader::kTRDClusters : 0;
334 break;
335 case AliEveTRDLoader::kTRDTracklets:
336 fM->fDataType |= fCheckedTracklets->IsDown() ? AliEveTRDLoader::kTRDTracklets : 0;
337 break;
fd31e9de 338 }
edf0c4a0 339}
142b49b2 340