]>
Commit | Line | Data |
---|---|---|
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 | 30 | ClassImp(AliEveTRDLoaderSim) |
31 | ClassImp(AliEveTRDLoaderRaw) | |
32 | ClassImp(AliEveTRDLoaderSimEditor) | |
33 | //ClassImp(TRDLoaderRawEditor) | |
edf0c4a0 | 34 | |
35 | /////////////////////////////////////////////////////////// | |
fd31e9de | 36 | ///////////// AliEveTRDLoaderSim ///////////////////// |
edf0c4a0 | 37 | /////////////////////////////////////////////////////////// |
38 | ||
39 | ||
fd31e9de | 40 | //______________________________________________________________________________ |
41 | AliEveTRDLoaderSim::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 | 50 | Bool_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 | 105 | Bool_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 | //______________________________________________________________________________ |
136 | AliEveTRDLoaderRaw::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 | 147 | Bool_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 | //______________________________________________________________________________ |
174 | Bool_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 | 214 | Bool_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 | //______________________________________________________________________________ |
267 | AliEveTRDLoaderSimEditor::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 | 304 | void 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 | 323 | void 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 |