1 #include "TRDLoaderImp.h"
2 #include "TRDModuleImp.h"
4 //#include "AliTRDv1.h"
6 #include <Reve/ReveManager.h>
15 #include "AliRunLoader.h"
16 #include "AliLoader.h"
17 #include "AliTRDrawData.h"
18 #include "AliRawReaderRoot.h"
19 #include "AliRawReaderDate.h"
22 #include "AliTRDhit.h"
23 #include "AliTRDdigitsManager.h"
26 using namespace Alieve;
29 ClassImp(Alieve::TRDLoaderSim)
30 ClassImp(Alieve::TRDLoaderRaw)
31 ClassImp(Alieve::TRDLoaderSimEditor)
32 //ClassImp(Alieve::TRDLoaderRawEditor)
34 ///////////////////////////////////////////////////////////
35 ///////////// TRDLoaderSim /////////////////////
36 ///////////////////////////////////////////////////////////
39 //________________________________________________________
40 TRDLoaderSim::TRDLoaderSim(const Text_t* n, const Text_t* t) : TRDLoader(n, t)
45 //________________________________________________________
46 TRDLoaderSim::~TRDLoaderSim()
49 //________________________________________________________
50 Bool_t TRDLoaderSim::GoToEvent(int ev)
52 if(!fChildren.size()){
53 AliWarning("Please select first the chamber that you want to monitor from \"Chamber(s) selector\".");
56 if(!kLoadHits && !kLoadDigits && !kLoadClusters && !kLoadTracks){
57 AliWarning("Please select first the type of data that you want to monitor and then hit the \"Load\" button.");
64 AliError("RunLoader not initialized.");
67 fRunLoader->UnloadAll("TRD");
70 if(fRunLoader->GetEvent(ev)) return kFALSE;
73 fRunLoader->LoadHits("TRD", "READ");
74 t = fRunLoader->GetTreeH("TRD", kFALSE);
76 fTRD->SetTreeAddress();
77 if(!LoadHits(t)) return kFALSE;
80 fRunLoader->LoadDigits("TRD", "READ");
81 t = fRunLoader->GetTreeD("TRD", kFALSE);
83 fTRD->SetTreeAddress();
84 if(!LoadDigits(t)) return kFALSE;
87 fRunLoader->LoadRecPoints("TRD", "READ");
88 t = fRunLoader->GetTreeR("TRD", kFALSE);
90 if(!LoadClusters(t)) return kFALSE;
93 fRunLoader->LoadTracks("TRD", "READ");
94 t = fRunLoader->GetTreeT("TRD", kFALSE);
96 if(!LoadTracklets(t)) return kFALSE;
104 //________________________________________________________
105 Bool_t TRDLoaderSim::LoadHits(TTree *tH)
107 Info("LoadHits()", "Loading ...");
108 if(!fChildren.size()) return kTRUE;
110 TRDChamber *chmb = 0x0;
111 AliTRDhit *hit = 0x0;
113 for(int iTrack=0; iTrack<tH->GetEntries(); iTrack++){
115 if(!tH->GetEvent(iTrack)) continue;
116 hit = (AliTRDhit*)fTRD->FirstHit(-1);
118 d = hit->GetDetector();
119 chmb = GetChamber(d);
121 if(d != hit->GetDetector()){
122 d = hit->GetDetector();
123 chmb = GetChamber(d);
125 if(chmb) chmb->AddHit(hit);
126 hit = (AliTRDhit*)fTRD->NextHit();
132 //________________________________________________________
133 Bool_t TRDLoaderSim::Open(const char *filename, const char *dir)
135 //Info("Open()", "");
138 fFilename = filename;
142 fRunLoader = AliRunLoader::GetRunLoader();
143 if(!fRunLoader) fRunLoader = AliRunLoader::Open(filename,
144 AliConfig::GetDefaultEventFolderName(),"read");
146 AliError("Couldn't find run loader");
149 fRunLoader->SetDirName(fDir);
151 gAlice = fRunLoader->GetAliRun();
152 if(!gAlice) fRunLoader->LoadgAlice();
154 AliError("Couldn't find gAlice object");
157 fTRD = (AliTRDv1*)gAlice->GetDetector("TRD");
159 AliError("Couldn't find TRD");
168 ///////////////////////////////////////////////////////////
169 ///////////// TRDLoaderRaw /////////////////////
170 ///////////////////////////////////////////////////////////
173 //________________________________________________________
174 TRDLoaderRaw::TRDLoaderRaw(const Text_t* n, const Text_t* t) : TRDLoader(n, t)
176 fRawDateReader = 0x0;
177 fRawRootReader = 0x0;
183 //________________________________________________________
184 TRDLoaderRaw::~TRDLoaderRaw()
190 //________________________________________________________
191 Bool_t TRDLoaderRaw::Open(const char *filename, const char *dir)
193 // Info("Open()", Form("Open %s/%s", dir, filename));
194 fFilename = filename;
199 if(fRaw) delete fRaw;
200 fRaw = new AliTRDrawData();
203 if(fRawRootReader) delete fRawRootReader;
204 fRawRootReader = new AliRawReaderRoot(filename);
206 if(fRawDateReader) delete fRawDateReader;
207 fRawDateReader = new AliRawReaderDate(fDir+fFilename);
213 //________________________________________________________
214 void TRDLoaderRaw::SetDataType(TRDDataTypes type)
216 fDataRoot = (type == kRawRoot) ? kTRUE : kFALSE;
219 //________________________________________________________
220 Bool_t TRDLoaderRaw::GoToEvent(int ev)
222 if(!fChildren.size()){
223 AliWarning("Please select first the chamber that you want to monitor from \"Chamber(s) selector\".");
227 static const Exc_t eH("TRDLoader::GotoEvent ");
228 if(fRawRootReader == 0x0) throw(eH + "data file not opened.");
231 if(ev == fEventOld) return kTRUE;
234 fRawRootReader->RewindEvents();
237 } else checkEnd = kTRUE;
239 do NextEvent(); while(fEventOld != ev && !(checkEnd == kTRUE && fEventOld == 0));
242 //gReve->EnableRedraw();
246 //________________________________________________________
247 Bool_t TRDLoaderRaw::LoadEvent()
249 Info("LoadEvent()", "Loading ...");
251 static const Exc_t eH("TRDLoader::LoadEvent ");
252 if(fRawRootReader == 0x0) throw(eH + "data file not opened.");
255 fRawRootReader->Reset();
258 AliTRDdigitsManager *dm;
259 dm = fRaw->Raw2Digits(fRawRootReader);
261 for(int idet=0; idet<540; idet++){
262 if(!(chmb=GetChamber(idet))) continue;
263 chmb->LoadDigits(dm);
268 //________________________________________________________
269 void TRDLoaderRaw::NextEvent(Bool_t rewindOnEnd)
271 static const Exc_t eH("TRDLoader::NextEvent ");
272 if(fRawRootReader == 0x0) throw(eH + "data file not opened.");
275 if(fRawRootReader->NextEvent() == kTRUE) ++fEventOld;
277 if(fEventOld == -1) throw(eH + "no events available.");
279 Warning("NextEvent()", Form("Reached end of stream (event=%d), rewinding to first event.", fEventOld));
280 fRawRootReader->RewindEvents();
281 fRawRootReader->NextEvent();
283 } else throw(eH + "last event reached.");
289 ///////////////////////////////////////////////////////////
290 ///////////// TRDLoaderSimEditor /////////////////////
291 ///////////////////////////////////////////////////////////
293 //________________________________________________________
294 TRDLoaderSimEditor::TRDLoaderSimEditor(const TGWindow* p, Int_t width, Int_t height, UInt_t options, Pixel_t back) : TGedFrame(p, width, height, options | kVerticalFrame, back)
296 MakeTitle("TRDLoaderSim");
298 // "Data selector" group frame
299 TGGroupFrame *fGroupFrame = new TGGroupFrame(this,"Data selector");
300 fLoadHits = new TGCheckButton(fGroupFrame," Hits");
301 fLoadHits->Connect("Clicked()", "Alieve::TRDLoaderSimEditor", this, "Toggle(=0)");
302 fGroupFrame->AddFrame(fLoadHits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
304 fLoadDigits = new TGCheckButton(fGroupFrame," Digits");
305 fLoadDigits->Connect("Clicked()", "Alieve::TRDLoaderSimEditor", this, "Toggle(=1)");
306 fGroupFrame->AddFrame(fLoadDigits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
308 fLoadClusters = new TGCheckButton(fGroupFrame," Clusters");
309 fLoadClusters->Connect("Clicked()", "Alieve::TRDLoaderSimEditor", this, "Toggle(=2)");
310 fGroupFrame->AddFrame(fLoadClusters, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
312 fLoadTracks = new TGCheckButton(fGroupFrame," Tracklets ");
313 fLoadTracks->Connect("Clicked()", "Alieve::TRDLoaderSimEditor", this, "Toggle(=3)");
314 fGroupFrame->AddFrame(fLoadTracks, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
316 fGroupFrame->SetLayoutManager(new TGVerticalLayout(fGroupFrame));
317 // fGroupFrame->Resize(164,116);
318 AddFrame(fGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
321 //________________________________________________________
322 TRDLoaderSimEditor::~TRDLoaderSimEditor()
325 //_________________________________________________________
326 void TRDLoaderSimEditor::SetModel(TObject* obj)
328 fM = dynamic_cast<TRDLoaderSim*>(obj);
330 Bool_t kFile = kTRUE;
331 if(fM->fFilename.CompareTo("") == 0) kFile = kFALSE;
333 /* printf("\thits %s\n", fM->kLoadHits ? "true" : "false");
334 printf("\tdigits %s\n", fM->kLoadDigits ? "true" : "false");
335 printf("\tclusters %s\n", fM->kLoadClusters ? "true" : "false");
336 printf("\ttracklets %s\n", fM->kLoadTracks ? "true" : "false");*/
337 fLoadHits->SetEnabled(kFile);
338 if(kFile) fLoadHits->SetState(fM->kLoadHits ? kButtonDown : kButtonUp);
339 fLoadDigits->SetEnabled(kFile);
340 if(kFile) fLoadDigits->SetState(fM->kLoadDigits ? kButtonDown : kButtonUp);
341 fLoadClusters->SetEnabled(kFile);
342 if(kFile) fLoadClusters->SetState(fM->kLoadClusters ? kButtonDown : kButtonUp);
343 fLoadTracks->SetEnabled(kFile);
344 if(kFile) fLoadTracks->SetState(fM->kLoadTracks ? kButtonDown : kButtonUp);
347 //________________________________________________________
348 void TRDLoaderSimEditor::Toggle(Int_t id)
352 fM->kLoadHits = fLoadHits->IsDown() ? kTRUE : kFALSE;
355 fM->kLoadDigits = fLoadDigits->IsDown() ? kTRUE : kFALSE;
358 fM->kLoadClusters = fLoadClusters->IsDown() ? kTRUE : kFALSE;
361 fM->kLoadTracks = fLoadTracks->IsDown() ? kTRUE : kFALSE;
366 ///////////////////////////////////////////////////////////
367 ///////////// TRDLoaderRawEditor /////////////////////
368 ///////////////////////////////////////////////////////////
370 // //________________________________________________________
371 // TRDLoaderRawEditor::TRDLoaderRawEditor(const TGWindow* p, Int_t width, Int_t height, UInt_t options, Pixel_t back) : TGedFrame(p, width, height, options | kVerticalFrame, back)
373 // MakeTitle("TRDLoaderRaw");
376 // void TRDLoaderRawEditor::SetModel(TObject* obj)
378 // Info("SetModel()", "");
379 // fM = dynamic_cast<TRDLoaderRaw*>(obj);