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 <EveDet/AliEveTPCData.h>
13 #include <EveDet/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),
55 AliEveTPCSectorViz::~AliEveTPCSectorViz()
57 if(fTPCData) fTPCData->DecRefCount();
58 delete [] fColorArray;
61 void AliEveTPCSectorViz::CopyVizParams(const AliEveTPCSectorViz& v)
63 fMinTime = v.fMinTime;
64 fMaxTime = v.fMaxTime;
65 fThreshold = v.fThreshold;
69 fRnrOut1 = v.fRnrOut1;
70 fRnrOut2 = v.fRnrOut2;
73 /******************************************************************************/
75 void AliEveTPCSectorViz::SetDataSource(AliEveTPCData* data)
77 if(data == fTPCData) return;
78 if(fTPCData) fTPCData->DecRefCount();
80 if(fTPCData) fTPCData->IncRefCount();
84 void AliEveTPCSectorViz::SetSectorID(Int_t id)
90 SetAutoTrans(kTRUE); // Force repositioning.
94 AliEveTPCSectorData* AliEveTPCSectorViz::GetSectorData() const
96 return fTPCData ? fTPCData->GetSectorData(fSectorID) : 0;
99 /******************************************************************************/
101 void AliEveTPCSectorViz::SetThreshold(Short_t t)
103 fThreshold = TMath::Min(t, (Short_t)(fMaxVal - 1));
108 void AliEveTPCSectorViz::SetMaxVal(Int_t mv)
110 fMaxVal = TMath::Max(mv, (Int_t)(fThreshold + 1));
115 /******************************************************************************/
117 void AliEveTPCSectorViz::SetAutoTrans(Bool_t trans)
121 fHMTrans.UnitTrans();
123 using namespace TMath;
124 Float_t c = Cos((fSectorID + 0.5)*20*Pi()/180 - PiOver2());
125 Float_t s = Sin((fSectorID + 0.5)*20*Pi()/180 - PiOver2());
126 Float_t z = AliEveTPCSectorData::GetZLength();
128 if(fSectorID >= 18) {
144 /******************************************************************************/
146 void AliEveTPCSectorViz::SetupColor(Int_t val, UChar_t* pixel) const
148 using namespace TMath;
149 Float_t div = Max(1, fMaxVal - fThreshold);
150 Int_t nCol = gStyle->GetNumberOfColors();
151 Int_t cBin = (Int_t) Nint(nCol*(val - fThreshold)/div);
153 TEveUtil::TEveUtil::ColorFromIdx(gStyle->GetColorPalette(Min(nCol - 1, cBin)), pixel);
156 void AliEveTPCSectorViz::ClearColorArray()
159 delete [] fColorArray;
164 void AliEveTPCSectorViz::SetupColorArray() const
169 fColorArray = new UChar_t [4 * (fMaxVal - fThreshold + 1)];
170 UChar_t* p = fColorArray;
171 for(Int_t v=fThreshold; v<=fMaxVal; ++v, p+=4)