]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveTRDModuleImp.cxx
remove some warnings
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTRDModuleImp.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 "AliEveTRDModuleImp.h"
11#include "AliEveTRDData.h"
a282bf09 12
a282bf09 13#include <TGListTree.h>
14
84aff7a4 15#include "TEveManager.h"
16#include "TEveTrack.h"
a282bf09 17
edf0c4a0 18#include "AliLog.h"
a282bf09 19#include "AliTRDgeometry.h"
20#include "AliTRDCommonParam.h"
21#include "AliTRDpadPlane.h"
a282bf09 22#include "AliTRDhit.h"
23#include "AliTRDcluster.h"
a282bf09 24#include "AliTRDmcmTracklet.h"
25
d810d0de 26ClassImp(AliEveTRDChamber)
27ClassImp(AliEveTRDNode)
a282bf09 28
fd31e9de 29//______________________________________________________________________________
d810d0de 30AliEveTRDNode::AliEveTRDNode(const char *typ, Int_t det) :
31 TEveElement(), AliEveTRDModule(typ, det)
a282bf09 32{
a15e6d7d 33 // Xonstructor.
a282bf09 34}
35
fd31e9de 36//______________________________________________________________________________
37void AliEveTRDNode::Paint(Option_t* option)
a282bf09 38{
a15e6d7d 39 // Paint object.
40
fd31e9de 41 List_i iter = fChildren.begin();
42 while(iter != fChildren.end()){
43 (dynamic_cast<AliEveTRDModule*>(*iter))->Paint(option);
44 iter++;
45 }
a282bf09 46}
47
fd31e9de 48//______________________________________________________________________________
49void AliEveTRDNode::Reset()
a282bf09 50{
a15e6d7d 51 // Reset.
52
fd31e9de 53 List_i iter = fChildren.begin();
54 while(iter != fChildren.end()){
55 (dynamic_cast<AliEveTRDModule*>(*iter))->Reset();
56 iter++;
57 }
a282bf09 58}
59
fd31e9de 60//______________________________________________________________________________
d810d0de 61void AliEveTRDNode::Collapse()
a282bf09 62{
a15e6d7d 63 // Collapse.
64
fd31e9de 65 TGListTree *list = gEve->GetListTree();
66 AliEveTRDNode *node = 0x0;
67 List_i iter = fChildren.begin();
68 while(iter != fChildren.end()){
69 if((node = dynamic_cast<AliEveTRDNode*>(*iter))) node->Collapse();
70 list->CloseItem(FindListTreeItem(list));
71 iter++;
72 }
a282bf09 73}
74
fd31e9de 75//______________________________________________________________________________
d810d0de 76void AliEveTRDNode::Expand()
a282bf09 77{
a15e6d7d 78 // Expand.
79
fd31e9de 80 TGListTree *list = gEve->GetListTree();
81 AliEveTRDNode *node = 0x0;
82 List_i iter = fChildren.begin();
83 while(iter != fChildren.end()){
84 if((node = dynamic_cast<AliEveTRDNode*>(*iter))) node->Expand();
85 list->OpenItem(FindListTreeItem(list));
86 iter++;
87 }
a282bf09 88}
89
fd31e9de 90//______________________________________________________________________________
d810d0de 91void AliEveTRDNode::EnableListElements()
a282bf09 92{
a15e6d7d 93 // Enable list elements.
94
fd31e9de 95 SetRnrSelf(kTRUE);
96 AliEveTRDNode *node = 0x0;
97 AliEveTRDChamber *chmb = 0x0;
98 List_i iter = fChildren.begin();
99 while(iter != fChildren.end()){
100 if((node = dynamic_cast<AliEveTRDNode*>(*iter))){
101 node->SetRnrSelf(kTRUE);
102 node->EnableListElements();
103 }
104 if((chmb = dynamic_cast<AliEveTRDChamber*>(*iter))) chmb->SetRnrSelf(kTRUE);
105 iter++;
106 }
107 gEve->Redraw3D();
a282bf09 108}
109
fd31e9de 110//______________________________________________________________________________
d810d0de 111void AliEveTRDNode::DisableListElements()
a282bf09 112{
a15e6d7d 113 // Disable list elements.
114
fd31e9de 115 SetRnrSelf(kFALSE);
116 AliEveTRDNode *node = 0x0;
117 AliEveTRDChamber *chmb = 0x0;
118 List_i iter = fChildren.begin();
119 while(iter != fChildren.end()){
120 if((node = dynamic_cast<AliEveTRDNode*>(*iter))){
121 node->SetRnrSelf(kFALSE);
122 node->DisableListElements();
123 }
124 if((chmb = dynamic_cast<AliEveTRDChamber*>(*iter))) chmb->SetRnrSelf(kFALSE);
125 iter++;
126 }
127 gEve->Redraw3D();
a282bf09 128}
129
fd31e9de 130//______________________________________________________________________________
d810d0de 131void AliEveTRDNode::UpdateLeaves()
a282bf09 132{
a15e6d7d 133 // Update leaves.
134
fd31e9de 135 AliEveTRDModule *module;
136 List_i iter = fChildren.begin();
137 while(iter != fChildren.end()){
138 module = dynamic_cast<AliEveTRDModule*>(*iter);
139 if(!module) continue;
140
141 module->fRnrHits = fRnrHits;
142 module->fRnrDigits = fRnrDigits;
143 module->fDigitsLog = fDigitsLog;
144 module->fDigitsBox = fDigitsBox;
145 module->fDigitsThreshold = fDigitsThreshold;
146 module->fDigitsNeedRecompute = fDigitsNeedRecompute;
147 module->fRnrRecPoints = fRnrRecPoints;
148 module->fRnrTracklets = fRnrTracklets;
149 iter++;
150 }
151
152 AliEveTRDNode *node = 0x0;
153 iter = fChildren.begin();
154 while(iter != fChildren.end()){
155 if((node = dynamic_cast<AliEveTRDNode*>(*iter))) node->UpdateLeaves();
156 iter++;
157 }
a282bf09 158}
159
160
fd31e9de 161//______________________________________________________________________________
d810d0de 162void AliEveTRDNode::UpdateNode()
a282bf09 163{
a15e6d7d 164 // Update node.
165
fd31e9de 166 // Info("UpdateNode()", Form("%s", GetName()));
167 AliEveTRDNode *node = 0x0;
168 List_i iter = fChildren.begin();
169 while(iter != fChildren.end()){
170 if((node = dynamic_cast<AliEveTRDNode*>(*iter))) node->UpdateNode();
171 iter++;
172 }
a282bf09 173
fd31e9de 174 Int_t score[11];
175 for(int i=0; i<11; i++) score[i] = 0;
176 AliEveTRDModule *module;
177 iter = fChildren.begin();
178 while(iter != fChildren.end()){
179 module = dynamic_cast<AliEveTRDModule*>(*iter);
180 if(!module) continue;
181 score[0] += (module->fLoadHits) ? 1 : 0;
182 score[1] += (module->fRnrHits) ? 1 : 0;
183
184 score[2] += (module->fLoadDigits) ? 1 : 0;
185 score[3] += (module->fRnrDigits) ? 1 : 0;
186 score[4] += (module->fDigitsLog) ? 1 : 0;
187 score[5] += (module->fDigitsBox) ? 1 : 0;
188 score[6] += (module->fDigitsNeedRecompute) ? 1 : 0;
189
190 score[7] += (module->fLoadRecPoints) ? 1 : 0;
191 score[8] += (module->fRnrRecPoints) ? 1 : 0;
192
193 score[9] += (module->fLoadTracklets) ? 1 : 0;
194 score[10] += (module->fRnrTracklets) ? 1 : 0;
195 iter++;
196 }
a282bf09 197
fd31e9de 198 Int_t size = fChildren.size();
199 fLoadHits = (score[0] > 0) ? kTRUE : kFALSE;
200 fRnrHits = (score[1] == size) ? kTRUE : kFALSE;
51346b82 201
fd31e9de 202 fLoadDigits = (score[2] > 0) ? kTRUE : kFALSE;
203 fRnrDigits = (score[3] == size) ? kTRUE : kFALSE;
204 fDigitsLog = (score[4] == size) ? kTRUE : kFALSE;
205 fDigitsBox = (score[5] == size) ? kTRUE : kFALSE;
206 fDigitsNeedRecompute = (score[6] == size) ? kTRUE : kFALSE;
51346b82 207
fd31e9de 208 fLoadRecPoints = (score[7] > 0) ? kTRUE : kFALSE;
209 fRnrRecPoints = (score[8] == size) ? kTRUE : kFALSE;
51346b82 210
fd31e9de 211 fLoadTracklets = (score[9] > 0) ? kTRUE : kFALSE;
212 fRnrTracklets = (score[10] == size) ? kTRUE : kFALSE;
a282bf09 213}
214
a282bf09 215
fd31e9de 216///////////////////////////////////////////////////////////
217//////////// AliEveTRDChamber ////////////////////
218///////////////////////////////////////////////////////////
a282bf09 219
fd31e9de 220//______________________________________________________________________________
221AliEveTRDChamber::AliEveTRDChamber(Int_t det) :
222 TEveElement(), AliEveTRDModule("Chmb", det),
223 fDigits(0), fHits(0), fRecPoints(0), fTracklets(0),
224 fRowMax(-1), fColMax(-1), fTimeMax(22), fSamplingFrequency(0),
225 fX0(0.), fPla(-1),
226 fPadPlane (0),
227 fGeo (0)
a282bf09 228{
229 //
fd31e9de 230 // Constructor
a282bf09 231 //
232
fd31e9de 233 AliTRDCommonParam* parCom = AliTRDCommonParam::Instance();
234 fSamplingFrequency = parCom->GetSamplingFrequency();
a282bf09 235}
236
fd31e9de 237//______________________________________________________________________________
238Int_t AliEveTRDChamber::GetSM() const
edf0c4a0 239{
a15e6d7d 240 // Get supermodule.
241
fd31e9de 242 if(!fGeo){
243 AliWarning("Fail. No TRD geometry defined.");
244 return -1;
245 }
246 return fGeo->GetSector(fDet);
edf0c4a0 247}
248
fd31e9de 249//______________________________________________________________________________
250Int_t AliEveTRDChamber::GetSTK() const
edf0c4a0 251{
a15e6d7d 252 // Get stack.
253
fd31e9de 254 if(!fGeo){
255 AliWarning("Fail. No TRD geometry defined.");
256 return -1;
257 }
258 return fGeo->GetChamber(fDet);
edf0c4a0 259}
260
fd31e9de 261//______________________________________________________________________________
d810d0de 262void AliEveTRDChamber::LoadClusters(TObjArray *clusters)
a282bf09 263{
264 //
265 // Draw clusters
266 //
51346b82 267
fd31e9de 268 if(!fGeo){
269 AliError(Form("Geometry not set for chamber %d. Please call first AliEveTRDChamber::SetGeometry().", fDet));
270 return;
271 }
272
273 if(!fRecPoints){
274 fRecPoints = new AliEveTRDClusters(this);
275 fRecPoints->SetMarkerSize(1.);
276 fRecPoints->SetMarkerStyle(24);
277 fRecPoints->SetMarkerColor(6);
278 fRecPoints->SetOwnIds(kTRUE);
279 } else fRecPoints->Reset();
280
281 Float_t q;
282 Double_t cloc[3], cglo[3];
283
284 AliTRDcluster *c=0x0;
285 for(int iclus=0; iclus<clusters->GetEntriesFast(); iclus++){
286 c = (AliTRDcluster*)clusters->UncheckedAt(iclus);
287 cloc[0] = c->GetX();
288 cloc[1] = c->GetY();
289 cloc[2] = c->GetZ();
290 q = c->GetQ();
291 fGeo->RotateBack(fDet,cloc,cglo);
292 fRecPoints->SetNextPoint(cglo[0], cglo[1], cglo[2]);
293 fRecPoints->SetPointId(c);
294 }
295 fLoadRecPoints = kTRUE;
a282bf09 296}
297
fd31e9de 298//______________________________________________________________________________
d810d0de 299void AliEveTRDChamber::LoadDigits(AliTRDdigitsManager *digits)
a282bf09 300{
301 //
302 // Draw digits
303 //
fd31e9de 304 if(!fGeo){
305 AliError(Form("Geometry not set for chamber %d. Please call first AliEveTRDChamber::SetGeometry().", fDet));
306 return;
307 }
308 // Info("LoadDigits()", Form("digits =0x%x", digits));
51346b82 309
fd31e9de 310 if(!fDigits) fDigits = new AliEveTRDDigits(this);
311 else fDigits->Reset();
51346b82 312
fd31e9de 313 fDigits->SetData(digits);
314 fLoadDigits = kTRUE;
a282bf09 315}
316
fd31e9de 317//______________________________________________________________________________
d810d0de 318void AliEveTRDChamber::AddHit(AliTRDhit *hit)
a282bf09 319{
320 //
321 // Draw hits
322 //
fd31e9de 323 // Info("AddHit()", Form("%s", GetName()));
324
325 if(!fHits){
326 fHits = new AliEveTRDHits(this);
327 fHits->SetMarkerSize(.1);
328 fHits->SetMarkerColor(2);
329 fHits->SetOwnIds(kTRUE);
330 }
331
332 fHits->SetNextPoint(hit->X(), hit->Y(), hit->Z());
333 fHits->SetPointId(hit);
334 fLoadHits = kTRUE;
a282bf09 335}
336
fd31e9de 337//______________________________________________________________________________
d810d0de 338void AliEveTRDChamber::LoadTracklets(TObjArray *tracks)
a282bf09 339{
340 //
341 // Draw tracks
342 //
fd31e9de 343 if(!fGeo){
344 Error("LoadTracklets()", Form("Geometry not set for chamber %d. Please call first AliEveTRDChamber::SetGeometry().", fDet));
345 return;
346 }
347 // Info("LoadTracklets()", Form("tracks = 0x%x", tracks));
348
349 if(!fTracklets){
350 fTracklets = new std::vector<TEveTrack*>;
351 } else fTracklets->clear();
352
353
354 AliTRDmcmTracklet *trk = 0x0;
355 Double_t cloc[3], cglo[3];
356 for(int itrk=0; itrk<tracks->GetEntries();itrk++){
357 trk = (AliTRDmcmTracklet*)tracks->At(itrk);
358 trk->MakeTrackletGraph(fGeo,.5);
359 fTracklets->push_back(new TEveTrack());
360 fTracklets->back()->SetLineColor(4);
361
362 cloc[0] = trk->GetTime0(); // x0
363 cloc[1] = trk->GetOffset(); // y0
364 cloc[2] = trk->GetRowz(); // z
365 fGeo->RotateBack(fDet,cloc,cglo);
366 fTracklets->back()->SetNextPoint(cglo[0], cglo[1], cglo[2]);
367
368 cloc[0] += 3.7; // x1
369 cloc[1] += TMath::Tan(trk->GetSlope()*TMath::Pi()/180.) * 3.7; // y1
370 fGeo->RotateBack(fDet,cloc,cglo);
371 fTracklets->back()->SetNextPoint(cglo[0], cglo[1], cglo[2]);
372 }
373 fLoadTracklets = kTRUE;
a282bf09 374}
375
376//____________________________________________________
fd31e9de 377void AliEveTRDChamber::Paint(Option_t* option)
a282bf09 378{
a15e6d7d 379 // Paint object.
380
fd31e9de 381 if(!fRnrSelf) return;
382 if(fDigits && fRnrDigits){
383 if(fDigitsNeedRecompute){
384 fDigits->ComputeRepresentation();
385 fDigitsNeedRecompute = kFALSE;
386 }
387 fDigits->Paint(option);
388 }
389 if(fRecPoints && fRnrRecPoints) fRecPoints->GetObject()->Paint(option);
390 if(fHits && fRnrHits) fHits->GetObject()->Paint(option);
391 if(fTracklets && fRnrTracklets){
392 for(std::vector<TEveTrack*>::iterator i=fTracklets->begin(); i != fTracklets->end(); ++i) (*i)->Paint(option);
393 }
a282bf09 394}
395
fd31e9de 396//______________________________________________________________________________
397void AliEveTRDChamber::Reset()
a282bf09 398{
a15e6d7d 399 // Reset.
400
fd31e9de 401 if(fHits){
402 fHits->Reset();
403 fLoadHits = kFALSE;
404 }
405 if(fDigits){
406 fDigits->Reset();
407 fLoadDigits = kFALSE;
408 }
409 if(fRecPoints){
410 fRecPoints->Reset();
411 fLoadRecPoints = kFALSE;
412 }
413 if(fTracklets){
414 fTracklets->clear();
415 fLoadTracklets = kFALSE;
416 }
a282bf09 417}
418
fd31e9de 419//______________________________________________________________________________
d810d0de 420void AliEveTRDChamber::SetGeometry(AliTRDgeometry *geo)
14217b5f 421{
a15e6d7d 422 // Set geometry.
423
fd31e9de 424 fGeo = geo;
51346b82 425
fd31e9de 426 fPla = fGeo->GetPlane(fDet);
427 fX0 = fGeo->GetTime0(fPla);
51346b82 428
fd31e9de 429 fPadPlane = fGeo->GetPadPlane(fPla,fGeo->GetChamber(fDet));
430 fRowMax = fPadPlane->GetNrows();
431 fColMax = fPadPlane->GetNcols();
14217b5f 432}
433