X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVE%2FEveDet%2FAliEveTRDModuleImp.cxx;h=a5c2c3989d3ffe35db39acf100bd5af48ead76e9;hb=6983e87a4b1fca0d30e9a7fbb87f58518f914f8b;hp=df97c5bfd308adf93d3012450174137ae7732a19;hpb=cb4245bbbf0ab426f2add36f3749d182999eea84;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVE/EveDet/AliEveTRDModuleImp.cxx b/EVE/EveDet/AliEveTRDModuleImp.cxx index df97c5bfd30..a5c2c3989d3 100644 --- a/EVE/EveDet/AliEveTRDModuleImp.cxx +++ b/EVE/EveDet/AliEveTRDModuleImp.cxx @@ -6,442 +6,448 @@ * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * * full copyright notice. * **************************************************************************/ + #include "AliEveTRDModuleImp.h" #include "AliEveTRDData.h" -#include "TMath.h" -#include +#include "TGListTree.h" +#include "TClonesArray.h" +#include "TGeoManager.h" +#include "TGeoMatrix.h" #include "TEveManager.h" #include "TEveTrack.h" +#include "TEveGeoNode.h" +#include "TEveTrans.h" + #include "AliLog.h" -#include "AliRun.h" -#include "AliTRDv1.h" #include "AliTRDgeometry.h" #include "AliTRDCommonParam.h" #include "AliTRDpadPlane.h" -#include "AliTRDdigit.h" #include "AliTRDhit.h" #include "AliTRDcluster.h" -#include "AliTRDcalibDB.h" -#include "AliTRDdataArrayI.h" #include "AliTRDmcmTracklet.h" -using namespace std; - ClassImp(AliEveTRDChamber) ClassImp(AliEveTRDNode) -//________________________________________________________ +//______________________________________________________________________________ AliEveTRDNode::AliEveTRDNode(const char *typ, Int_t det) : TEveElement(), AliEveTRDModule(typ, det) { + // Xonstructor. } -//________________________________________________________ -void AliEveTRDNode::Paint(Option_t* option) +//______________________________________________________________________________ +void AliEveTRDNode::Paint(Option_t* option) { - List_i iter = fChildren.begin(); - while(iter != fChildren.end()){ - (dynamic_cast(*iter))->Paint(option); - iter++; - } + // Paint object. + + List_i iter = fChildren.begin(); + while(iter != fChildren.end()){ + (dynamic_cast(*iter))->Paint(option); + iter++; + } } -//________________________________________________________ -void AliEveTRDNode::Reset() +//______________________________________________________________________________ +void AliEveTRDNode::Reset() { - List_i iter = fChildren.begin(); - while(iter != fChildren.end()){ - (dynamic_cast(*iter))->Reset(); - iter++; - } + // Reset. + + List_i iter = fChildren.begin(); + while(iter != fChildren.end()){ + (dynamic_cast(*iter))->Reset(); + iter++; + } } -//________________________________________________________ +//______________________________________________________________________________ void AliEveTRDNode::Collapse() { - TGListTree *list = gEve->GetListTree(); - AliEveTRDNode *node = 0x0; - List_i iter = fChildren.begin(); - while(iter != fChildren.end()){ - if((node = dynamic_cast(*iter))) node->Collapse(); - list->CloseItem(FindListTreeItem(list)); - iter++; - } + // Collapse. + + TGListTree *list = gEve->GetListTree(); + AliEveTRDNode *node = 0x0; + List_i iter = fChildren.begin(); + while(iter != fChildren.end()){ + if((node = dynamic_cast(*iter))) node->Collapse(); + list->CloseItem(FindListTreeItem(list)); + iter++; + } } -//________________________________________________________ +//______________________________________________________________________________ void AliEveTRDNode::Expand() { - TGListTree *list = gEve->GetListTree(); - AliEveTRDNode *node = 0x0; - List_i iter = fChildren.begin(); - while(iter != fChildren.end()){ - if((node = dynamic_cast(*iter))) node->Expand(); - list->OpenItem(FindListTreeItem(list)); - iter++; - } + // Expand. + + TGListTree *list = gEve->GetListTree(); + AliEveTRDNode *node = 0x0; + List_i iter = fChildren.begin(); + while(iter != fChildren.end()){ + if((node = dynamic_cast(*iter))) node->Expand(); + list->OpenItem(FindListTreeItem(list)); + iter++; + } } -//________________________________________________________ +//______________________________________________________________________________ void AliEveTRDNode::EnableListElements() { - SetRnrSelf(kTRUE); - AliEveTRDNode *node = 0x0; - AliEveTRDChamber *chmb = 0x0; - List_i iter = fChildren.begin(); - while(iter != fChildren.end()){ - if((node = dynamic_cast(*iter))){ - node->SetRnrSelf(kTRUE); - node->EnableListElements(); - } - if((chmb = dynamic_cast(*iter))) chmb->SetRnrSelf(kTRUE); - iter++; - } - gEve->Redraw3D(); + // Enable list elements. + + SetRnrSelf(kTRUE); + AliEveTRDNode *node = 0x0; + AliEveTRDChamber *chmb = 0x0; + List_i iter = fChildren.begin(); + while(iter != fChildren.end()){ + if((node = dynamic_cast(*iter))){ + node->SetRnrSelf(kTRUE); + node->EnableListElements(); + } + if((chmb = dynamic_cast(*iter))) chmb->SetRnrSelf(kTRUE); + iter++; + } + gEve->Redraw3D(); } -//________________________________________________________ +//______________________________________________________________________________ void AliEveTRDNode::DisableListElements() { - SetRnrSelf(kFALSE); - AliEveTRDNode *node = 0x0; - AliEveTRDChamber *chmb = 0x0; - List_i iter = fChildren.begin(); - while(iter != fChildren.end()){ - if((node = dynamic_cast(*iter))){ - node->SetRnrSelf(kFALSE); - node->DisableListElements(); - } - if((chmb = dynamic_cast(*iter))) chmb->SetRnrSelf(kFALSE); - iter++; - } - gEve->Redraw3D(); + // Disable list elements. + + SetRnrSelf(kFALSE); + AliEveTRDNode *node = 0x0; + AliEveTRDChamber *chmb = 0x0; + List_i iter = fChildren.begin(); + while(iter != fChildren.end()){ + if((node = dynamic_cast(*iter))){ + node->SetRnrSelf(kFALSE); + node->DisableListElements(); + } + if((chmb = dynamic_cast(*iter))) chmb->SetRnrSelf(kFALSE); + iter++; + } + gEve->Redraw3D(); } -//________________________________________________________ +//______________________________________________________________________________ void AliEveTRDNode::UpdateLeaves() { - AliEveTRDModule *module; - List_i iter = fChildren.begin(); - while(iter != fChildren.end()){ - module = dynamic_cast(*iter); - if(!module) continue; - - module->fRnrHits = fRnrHits; - module->fRnrDigits = fRnrDigits; - module->fDigitsLog = fDigitsLog; - module->fDigitsBox = fDigitsBox; - module->fDigitsThreshold = fDigitsThreshold; - module->kDigitsNeedRecompute = kDigitsNeedRecompute; - module->fRnrRecPoints = fRnrRecPoints; - module->fRnrTracklets = fRnrTracklets; - iter++; - } - - AliEveTRDNode *node = 0x0; - iter = fChildren.begin(); - while(iter != fChildren.end()){ - if((node = dynamic_cast(*iter))) node->UpdateLeaves(); - iter++; - } + // Update leaves. + + AliEveTRDModule *module; + List_i iter = fChildren.begin(); + while(iter != fChildren.end()){ + module = dynamic_cast(*iter); + if(!module) continue; + + module->fRnrHits = fRnrHits; + module->fRnrDigits = fRnrDigits; + module->fDigitsLog = fDigitsLog; + module->fDigitsBox = fDigitsBox; + module->fDigitsThreshold = fDigitsThreshold; + module->fDigitsNeedRecompute = fDigitsNeedRecompute; + module->fRnrRecPoints = fRnrRecPoints; + module->fRnrTracklets = fRnrTracklets; + iter++; + } + + AliEveTRDNode *node = 0x0; + iter = fChildren.begin(); + while(iter != fChildren.end()){ + if((node = dynamic_cast(*iter))) node->UpdateLeaves(); + iter++; + } } -//________________________________________________________ +//______________________________________________________________________________ void AliEveTRDNode::UpdateNode() { -// Info("UpdateNode()", Form("%s", GetName())); - AliEveTRDNode *node = 0x0; - List_i iter = fChildren.begin(); - while(iter != fChildren.end()){ - if((node = dynamic_cast(*iter))) node->UpdateNode(); - iter++; - } - - Int_t score[11]; - for(int i=0; i<11; i++) score[i] = 0; - AliEveTRDModule *module; - iter = fChildren.begin(); - while(iter != fChildren.end()){ - module = dynamic_cast(*iter); - if(!module) continue; - score[0] += (module->fLoadHits) ? 1 : 0; - score[1] += (module->fRnrHits) ? 1 : 0; - - score[2] += (module->fLoadDigits) ? 1 : 0; - score[3] += (module->fRnrDigits) ? 1 : 0; - score[4] += (module->fDigitsLog) ? 1 : 0; - score[5] += (module->fDigitsBox) ? 1 : 0; - score[6] += (module->kDigitsNeedRecompute) ? 1 : 0; - - score[7] += (module->fLoadRecPoints) ? 1 : 0; - score[8] += (module->fRnrRecPoints) ? 1 : 0; - - score[9] += (module->fLoadTracklets) ? 1 : 0; - score[10] += (module->fRnrTracklets) ? 1 : 0; - iter++; - } - - Int_t size = fChildren.size(); - fLoadHits = (score[0] > 0) ? kTRUE : kFALSE; - fRnrHits = (score[1] == size) ? kTRUE : kFALSE; - - fLoadDigits = (score[2] > 0) ? kTRUE : kFALSE; - fRnrDigits = (score[3] == size) ? kTRUE : kFALSE; - fDigitsLog = (score[4] == size) ? kTRUE : kFALSE; - fDigitsBox = (score[5] == size) ? kTRUE : kFALSE; - kDigitsNeedRecompute = (score[6] == size) ? kTRUE : kFALSE; - - fLoadRecPoints = (score[7] > 0) ? kTRUE : kFALSE; - fRnrRecPoints = (score[8] == size) ? kTRUE : kFALSE; - - fLoadTracklets = (score[9] > 0) ? kTRUE : kFALSE; - fRnrTracklets = (score[10] == size) ? kTRUE : kFALSE; -} - + // Update node. + + // Info("UpdateNode()", Form("%s", GetName())); + AliEveTRDNode *node = 0x0; + List_i iter = fChildren.begin(); + while(iter != fChildren.end()){ + if((node = dynamic_cast(*iter))) node->UpdateNode(); + iter++; + } -/////////////////////////////////////////////////////////// -///////////// AliEveTRDChamber ///////////////////// -/////////////////////////////////////////////////////////// + Int_t score[11]; + for(int i=0; i<11; i++) score[i] = 0; + AliEveTRDModule *module; + iter = fChildren.begin(); + while(iter != fChildren.end()){ + module = dynamic_cast(*iter); + if(!module) continue; + score[0] += (module->fLoadHits) ? 1 : 0; + score[1] += (module->fRnrHits) ? 1 : 0; + + score[2] += (module->fLoadDigits) ? 1 : 0; + score[3] += (module->fRnrDigits) ? 1 : 0; + score[4] += (module->fDigitsLog) ? 1 : 0; + score[5] += (module->fDigitsBox) ? 1 : 0; + score[6] += (module->fDigitsNeedRecompute) ? 1 : 0; + + score[7] += (module->fLoadRecPoints) ? 1 : 0; + score[8] += (module->fRnrRecPoints) ? 1 : 0; + + score[9] += (module->fLoadTracklets) ? 1 : 0; + score[10] += (module->fRnrTracklets) ? 1 : 0; + iter++; + } -//________________________________________________________ -AliEveTRDChamber::AliEveTRDChamber(Int_t det) : - TEveElement(), AliEveTRDModule("Chmb", det), rowMax(-1), colMax(-1), timeMax(22), fX0(0.), fPla(-1) -{ - // - // Constructor - // + Int_t size = fChildren.size(); + fLoadHits = (score[0] > 0) ? kTRUE : kFALSE; + fRnrHits = (score[1] == size) ? kTRUE : kFALSE; - fDigits = 0x0; - fHits = 0x0; - fRecPoints = 0x0; - fTracklets = 0x0; + fLoadDigits = (score[2] > 0) ? kTRUE : kFALSE; + fRnrDigits = (score[3] == size) ? kTRUE : kFALSE; + fDigitsLog = (score[4] == size) ? kTRUE : kFALSE; + fDigitsBox = (score[5] == size) ? kTRUE : kFALSE; + fDigitsNeedRecompute = (score[6] == size) ? kTRUE : kFALSE; - AliTRDCommonParam* parCom = AliTRDCommonParam::Instance(); - samplingFrequency = parCom->GetSamplingFrequency(); + fLoadRecPoints = (score[7] > 0) ? kTRUE : kFALSE; + fRnrRecPoints = (score[8] == size) ? kTRUE : kFALSE; - fGeo = 0x0; - fPadPlane = 0x0; + fLoadTracklets = (score[9] > 0) ? kTRUE : kFALSE; + fRnrTracklets = (score[10] == size) ? kTRUE : kFALSE; } -//________________________________________________________ -AliEveTRDChamber::AliEveTRDChamber(const AliEveTRDChamber &mod): - TEveElement(), AliEveTRDModule("Chmb", mod.fDet) -{ - // - // Copy constructor - // - SetMainColor(mod.GetMainColor()); - if(mod.fDigits) {} - if(mod.fHits) {} - if(mod.fRecPoints){} -} +/////////////////////////////////////////////////////////// +//////////// AliEveTRDChamber //////////////////// +/////////////////////////////////////////////////////////// -//________________________________________________________ -AliEveTRDChamber& AliEveTRDChamber::operator=(const AliEveTRDChamber &mod) +//______________________________________________________________________________ +AliEveTRDChamber::AliEveTRDChamber(Int_t det) : + TEveElement() + ,AliEveTRDModule("Chmb", det) + ,fDigits(0x0) + ,fHits(0x0) + ,fRecPoints(0x0) + ,fTracklets(0x0) + ,fGeo(0x0) + ,fShape(0x0) + ,fNrows(-1) + ,fNcols(-1) + ,fNtime(22) { // - // Assignment operator + // Constructor // - - if (this != &mod) { - fDet = mod.fDet; - if(mod.fDigits) {} - if(mod.fHits) {} - if(mod.fRecPoints){} - } - return *this; -} - -//________________________________________________________ -Int_t AliEveTRDChamber::GetSM() const -{ - if(!fGeo){ - AliWarning("Fail. No TRD geometry defined."); - return -1; - } - return fGeo->GetSector(fDet); } -//________________________________________________________ -Int_t AliEveTRDChamber::GetSTK() const -{ - if(!fGeo){ - AliWarning("Fail. No TRD geometry defined."); - return -1; - } - return fGeo->GetChamber(fDet); -} -//________________________________________________________ +//______________________________________________________________________________ void AliEveTRDChamber::LoadClusters(TObjArray *clusters) { // // Draw clusters // - if(!fGeo){ - AliError(Form("Geometry not set for chamber %d. Please call first AliEveTRDChamber::SetGeometry().", fDet)); - return; - } - - if(!fRecPoints){ - fRecPoints = new AliEveTRDClusters(this); - fRecPoints->SetMarkerSize(1.); - fRecPoints->SetMarkerStyle(24); - fRecPoints->SetMarkerColor(6); - fRecPoints->SetOwnIds(kTRUE); - } else fRecPoints->Reset(); - - Float_t q; - Double_t cloc[3], cglo[3]; - - AliTRDcluster *c=0x0; - for(int iclus=0; iclusGetEntriesFast(); iclus++){ - c = (AliTRDcluster*)clusters->UncheckedAt(iclus); - cloc[0] = c->GetX(); - cloc[1] = c->GetY(); - cloc[2] = c->GetZ(); - q = c->GetQ(); - fGeo->RotateBack(fDet,cloc,cglo); - fRecPoints->SetNextPoint(cglo[0], cglo[1], cglo[2]); - fRecPoints->SetPointId(c); - } - fLoadRecPoints = kTRUE; + if(!fGeo){ + AliError(Form("Geometry not set for chamber %d. Please call first AliEveTRDChamber::SetGeometry().", fDet)); + return; + } + + if(!fRecPoints){ + AddElement(fRecPoints = new AliEveTRDClusters(this)); + fRecPoints->SetMarkerSize(.2); + fRecPoints->SetMarkerStyle(24); + fRecPoints->SetMarkerColor(kGreen); + fRecPoints->SetOwnIds(kTRUE); + } + fRecPoints->Reset(); + + Float_t q; + Float_t g[3]; //global coordinates + AliTRDcluster *c=0x0; + for(int iclus=0; iclusGetEntriesFast(); iclus++){ + c = (AliTRDcluster*)clusters->UncheckedAt(iclus); + c->GetGlobalXYZ(g); + q = c->GetQ(); + Int_t id = fRecPoints->SetNextPoint(g[0], g[1], g[2]); + fRecPoints->SetPointId(id, new AliTRDcluster(*c)); + } + fLoadRecPoints = kTRUE; } -//________________________________________________________ +//______________________________________________________________________________ void AliEveTRDChamber::LoadDigits(AliTRDdigitsManager *digits) { // // Draw digits // - if(!fGeo){ - AliError(Form("Geometry not set for chamber %d. Please call first AliEveTRDChamber::SetGeometry().", fDet)); - return; - } -// Info("LoadDigits()", Form("digits =0x%x", digits)); + if(!fGeo){ + AliError(Form("Geometry not set for chamber %d. Please call first AliEveTRDChamber::SetGeometry().", fDet)); + return; + } + // Info("LoadDigits()", Form("digits =0x%x", digits)); - if(!fDigits) fDigits = new AliEveTRDDigits(this); - else fDigits->Reset(); + if(!fDigits) AddElement(fDigits = new AliEveTRDDigits(this)); - fDigits->SetData(digits); - fLoadDigits = kTRUE; + fDigits->Reset(); + fDigits->SetData(digits); + fLoadDigits = kTRUE; } -//________________________________________________________ -void AliEveTRDChamber::AddHit(AliTRDhit *hit) +//______________________________________________________________________________ +void AliEveTRDChamber::LoadHits(TClonesArray *hits, Int_t &idx) { // // Draw hits // -// Info("AddHit()", Form("%s", GetName())); - - if(!fHits){ - fHits = new AliEveTRDHits(this); - fHits->SetMarkerSize(.1); - fHits->SetMarkerColor(2); - fHits->SetOwnIds(kTRUE); - } - - fHits->SetNextPoint(hit->X(), hit->Y(), hit->Z()); - fHits->SetPointId(hit); - fLoadHits = kTRUE; + //Info("AddHit()", Form("%s", GetName())); + + if(!fHits){ + AddElement(fHits = new AliEveTRDHits(this)); + fHits->SetMarkerSize(.1); + fHits->SetMarkerColor(2); + fHits->SetOwnIds(kTRUE); + } + fLoadHits = kTRUE; + Int_t nhits = hits->GetEntriesFast(); + + AliTRDhit *hit = 0x0; + while(idxUncheckedAt(idx); + if(hit->GetDetector() != fDet) return; + + Int_t id = fHits->SetNextPoint(hit->X(), hit->Y(), hit->Z()); + fHits->SetPointId(id, new AliTRDhit(*hit)); + idx++; + } + return; } -//________________________________________________________ +//______________________________________________________________________________ void AliEveTRDChamber::LoadTracklets(TObjArray *tracks) { // // Draw tracks // - if(!fGeo){ - Error("LoadTracklets()", Form("Geometry not set for chamber %d. Please call first AliEveTRDChamber::SetGeometry().", fDet)); - return; - } -// Info("LoadTracklets()", Form("tracks = 0x%x", tracks)); - - if(!fTracklets){ - fTracklets = new std::vector; - } else fTracklets->clear(); - - - AliTRDmcmTracklet *trk = 0x0; - Double_t cloc[3], cglo[3]; - for(int itrk=0; itrkGetEntries();itrk++){ - trk = (AliTRDmcmTracklet*)tracks->At(itrk); - trk->MakeTrackletGraph(fGeo,.5); - fTracklets->push_back(new TEveTrack()); - fTracklets->back()->SetLineColor(4); - - cloc[0] = trk->GetTime0(); // x0 - cloc[1] = trk->GetOffset(); // y0 - cloc[2] = trk->GetRowz(); // z - fGeo->RotateBack(fDet,cloc,cglo); - fTracklets->back()->SetNextPoint(cglo[0], cglo[1], cglo[2]); - - cloc[0] += 3.7; // x1 - cloc[1] += TMath::Tan(trk->GetSlope()*TMath::Pi()/180.) * 3.7; // y1 - fGeo->RotateBack(fDet,cloc,cglo); - fTracklets->back()->SetNextPoint(cglo[0], cglo[1], cglo[2]); - } - fLoadTracklets = kTRUE; + if(!fGeo){ + Error("LoadTracklets()", Form("Geometry not set for chamber %d. Please call first AliEveTRDChamber::SetGeometry().", fDet)); + return; + } + // Info("LoadTracklets()", Form("tracks = 0x%x", tracks)); + + if(!fTracklets){ + fTracklets = new std::vector; + } else fTracklets->clear(); + + + AliTRDmcmTracklet *trk = 0x0; + Double_t cloc[3], cglo[3]; + for(int itrk=0; itrkGetEntries();itrk++){ + trk = (AliTRDmcmTracklet*)tracks->At(itrk); + trk->MakeTrackletGraph(fGeo,.5); + fTracklets->push_back(new TEveTrack()); + fTracklets->back()->SetLineColor(4); + + cloc[0] = trk->GetTime0(); // x0 + cloc[1] = trk->GetOffset(); // y0 + cloc[2] = trk->GetRowz(); // z + fGeo->RotateBack(fDet,cloc,cglo); + fTracklets->back()->SetNextPoint(cglo[0], cglo[1], cglo[2]); + + cloc[0] += 3.7; // x1 + cloc[1] += TMath::Tan(trk->GetSlope()*TMath::Pi()/180.) * 3.7; // y1 + fGeo->RotateBack(fDet,cloc,cglo); + fTracklets->back()->SetNextPoint(cglo[0], cglo[1], cglo[2]); + } + fLoadTracklets = kTRUE; } //____________________________________________________ -void AliEveTRDChamber::Paint(Option_t* option) +void AliEveTRDChamber::Paint(Option_t* option) { -/* Info("Paint()", Form("%s", GetName()));*/ - if(!fRnrSelf) return; - if(fDigits && fRnrDigits){ - if(kDigitsNeedRecompute){ - fDigits->ComputeRepresentation(); - kDigitsNeedRecompute = kFALSE; - } - fDigits->Paint(option); - } - if(fRecPoints && fRnrRecPoints) fRecPoints->GetObject()->Paint(option); - if(fHits && fRnrHits) fHits->GetObject()->Paint(option); - if(fTracklets && fRnrTracklets){ - for(vector::iterator i=fTracklets->begin(); i != fTracklets->end(); ++i) (*i)->Paint(option); - } + // Paint object. + + //AliInfo(GetName()); + if(!fRnrSelf) return; + if(fDigits && fRnrDigits){ + if(fDigitsNeedRecompute){ + fDigits->ComputeRepresentation(); + fDigitsNeedRecompute = kFALSE; + } + fDigits->Paint(option); + } + + if(fRecPoints && fRnrRecPoints) fRecPoints->GetObject()->Paint(option); + + if(fHits && fRnrHits) fHits->GetObject()->Paint(option); + + if(fTracklets && fRnrTracklets){ + for(std::vector::iterator i=fTracklets->begin(); i != fTracklets->end(); ++i) (*i)->Paint(option); + } } -//________________________________________________________ -void AliEveTRDChamber::Reset() +//______________________________________________________________________________ +void AliEveTRDChamber::Reset() { - if(fHits){ - fHits->Reset(); - fLoadHits = kFALSE; - } - if(fDigits){ - fDigits->Reset(); - fLoadDigits = kFALSE; - } - if(fRecPoints){ - fRecPoints->Reset(); - fLoadRecPoints = kFALSE; - } - if(fTracklets){ - fTracklets->clear(); - fLoadTracklets = kFALSE; - } + // Reset. + + if(fHits){ + fHits->Reset(); + fLoadHits = kFALSE; + } + if(fDigits){ + fDigits->Reset(); + fLoadDigits = kFALSE; + fDigitsNeedRecompute = kTRUE; + } + if(fRecPoints){ + fRecPoints->Reset(); + fLoadRecPoints = kFALSE; + } + if(fTracklets){ + fTracklets->clear(); + fLoadTracklets = kFALSE; + } } -//________________________________________________________ +//______________________________________________________________________________ void AliEveTRDChamber::SetGeometry(AliTRDgeometry *geo) { - fGeo = geo; - - fPla = fGeo->GetPlane(fDet); - fX0 = fGeo->GetTime0(fPla); - - fPadPlane = fGeo->GetPadPlane(fPla,fGeo->GetChamber(fDet)); - rowMax = fPadPlane->GetNrows(); - colMax = fPadPlane->GetNcols(); + // Set geometry. + + fGeo = geo; + + Int_t ism = geo->GetSector(fDet); + Int_t istk = geo->GetChamber(fDet); + Int_t ipla = geo->GetPlane(fDet); + Int_t icha = istk*6+ipla; + + // define pad plane size in pads + AliTRDpadPlane *pp = fGeo->GetPadPlane(ipla, istk); + fNrows = pp->GetNrows(); + fNcols = pp->GetNcols(); + +// this version for setting the rendarable object is not working very nice +// Int_t shape_offset = TEveGeoShape::Class()->GetDataMemberOffset("fShape"); +// TEveGeoShape* eg_shape = new TEveGeoShape("geometry"); +// eg_shape->RefMainTrans().SetFrom(* gGeoManager->GetCurrentMatrix()); +// * (TGeoShape**) (((char*)eg_shape) + shape_offset) = gGeoManager->GetCurrentVolume()->GetShape(); +// +// eg_shape->StampColorSelection(); + + // define rendarable volumes + gGeoManager->cd(Form("/B077_1/BSEGMO%d_1/BTRD%d_1/UTR1_1/UTS1_1/UTI1_1/UT%02d_1", ism, ism, icha)); + fShape = new TEveGeoTopNode(gGeoManager, gGeoManager->GetCurrentNode()); + fShape->RefMainTrans().SetFrom(*gGeoManager->GetCurrentMatrix()); + fShape->DisableListElements(); + fShape->SetRnrSelf(kFALSE); +// try to set the properties but it is crashing !! +// TEveGeoNode *node = 0x0; +// if((node = (TEveGeoNode*)fShape->FindChild(Form("UA%02d_1", icha)))) node->SetRnrState(kTRUE); +// else AliWarning(Form("Can not retrieve geo node UA%02d_1", icha)); + + AddElement(fShape); }