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