2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
4 /**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
7 * full copyright notice. *
8 **************************************************************************/
10 #include "AliEveTPCSectorViz.h"
12 #include <Alieve/AliEveTPCData.h>
13 #include <Alieve/AliEveTPCSectorData.h>
14 #include <AliTPCParam.h>
20 //______________________________________________________________________
23 // Base class for TPC raw-data visualization.
24 // See AliEveTPCSector2D and AliEveTPCSector3D for concrete implementations.
26 ClassImp(AliEveTPCSectorViz)
28 /**************************************************************************/
30 AliEveTPCSectorViz::AliEveTPCSectorViz(const Text_t* n, const Text_t* t) :
31 TEveElement(fFrameColor),
46 fFrameColor ((Color_t) 4),
54 AliEveTPCSectorViz::~AliEveTPCSectorViz()
56 if(fTPCData) fTPCData->DecRefCount();
57 delete [] fColorArray;
60 void AliEveTPCSectorViz::CopyVizParams(const AliEveTPCSectorViz& v)
62 fMinTime = v.fMinTime;
63 fMaxTime = v.fMaxTime;
64 fThreshold = v.fThreshold;
68 fRnrOut1 = v.fRnrOut1;
69 fRnrOut2 = v.fRnrOut2;
72 /**************************************************************************/
74 void AliEveTPCSectorViz::SetDataSource(AliEveTPCData* data)
76 if(data == fTPCData) return;
77 if(fTPCData) fTPCData->DecRefCount();
79 if(fTPCData) fTPCData->IncRefCount();
83 void AliEveTPCSectorViz::SetSectorID(Int_t id)
89 SetAutoTrans(kTRUE); // Force repositioning.
93 AliEveTPCSectorData* AliEveTPCSectorViz::GetSectorData() const
95 return fTPCData ? fTPCData->GetSectorData(fSectorID) : 0;
98 /**************************************************************************/
100 void AliEveTPCSectorViz::SetThreshold(Short_t t)
102 fThreshold = TMath::Min(t, (Short_t)(fMaxVal - 1));
107 void AliEveTPCSectorViz::SetMaxVal(Int_t mv)
109 fMaxVal = TMath::Max(mv, (Int_t)(fThreshold + 1));
114 /**************************************************************************/
116 void AliEveTPCSectorViz::SetAutoTrans(Bool_t trans)
120 fHMTrans.UnitTrans();
122 using namespace TMath;
123 Float_t c = Cos((fSectorID + 0.5)*20*Pi()/180 - PiOver2());
124 Float_t s = Sin((fSectorID + 0.5)*20*Pi()/180 - PiOver2());
125 Float_t z = AliEveTPCSectorData::GetZLength();
127 if(fSectorID >= 18) {
143 /**************************************************************************/
145 void AliEveTPCSectorViz::SetupColor(Int_t val, UChar_t* pixel) const
147 using namespace TMath;
148 Float_t div = Max(1, fMaxVal - fThreshold);
149 Int_t nCol = gStyle->GetNumberOfColors();
150 Int_t cBin = (Int_t) Nint(nCol*(val - fThreshold)/div);
152 TEveUtil::TEveUtil::ColorFromIdx(gStyle->GetColorPalette(Min(nCol - 1, cBin)), pixel);
155 void AliEveTPCSectorViz::ClearColorArray()
158 delete [] fColorArray;
163 void AliEveTPCSectorViz::SetupColorArray() const
168 fColorArray = new UChar_t [4 * (fMaxVal - fThreshold + 1)];
169 UChar_t* p = fColorArray;
170 for(Int_t v=fThreshold; v<=fMaxVal; ++v, p+=4)