]>
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" | |
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 | 32 | ClassImp(AliEveTRDLoaderSim) |
33 | ClassImp(AliEveTRDLoaderRaw) | |
34 | ClassImp(AliEveTRDLoaderSimEditor) | |
35 | //ClassImp(TRDLoaderRawEditor) | |
edf0c4a0 | 36 | |
37 | /////////////////////////////////////////////////////////// | |
fd31e9de | 38 | ///////////// AliEveTRDLoaderSim ///////////////////// |
edf0c4a0 | 39 | /////////////////////////////////////////////////////////// |
40 | ||
41 | ||
fd31e9de | 42 | //______________________________________________________________________________ |
43 | AliEveTRDLoaderSim::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 | 52 | Bool_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 | 107 | Bool_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 | ||
fd31e9de | 113 | fRunLoader = AliRunLoader::GetRunLoader(); |
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 | //______________________________________________________________________________ |
138 | AliEveTRDLoaderRaw::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 | 149 | Bool_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 | //______________________________________________________________________________ |
176 | Bool_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 | 216 | Bool_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 | //______________________________________________________________________________ |
269 | AliEveTRDLoaderSimEditor::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 | 306 | void 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 | 325 | void 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 |