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