]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveTOFStrip.cxx
Merge changes from branches/dev/EVE. This branch was following development in ROOT...
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTOFStrip.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 "AliEveTOFStrip.h"
8616d353 11
84aff7a4 12#include <TEveManager.h>
8616d353 13
14#include <AliTOFdigit.h>
28a21457 15#include <AliTOFGeometry.h>
8616d353 16
17#include <TStyle.h>
d810d0de 18
fd31e9de 19Bool_t AliEveTOFStrip::fgStaticInitDone = kFALSE;
d810d0de 20TEveFrameBox* AliEveTOFStrip::fgTOFstripFrameBox = 0;
21TEveRGBAPalette* AliEveTOFStrip::fgTOFstripPalette = 0;
8616d353 22
23//_______________________________________________________
d810d0de 24ClassImp(AliEveTOFStrip)
8616d353 25
26/* ************************************************************************ */
27
d810d0de 28AliEveTOFStrip::AliEveTOFStrip(const Text_t* n, const Text_t* t) :
84aff7a4 29 TEveQuadSet(n, t),
28a21457 30 fTOFgeometry(new AliTOFGeometry()),
8616d353 31 fTOFarray(0),
a8256688 32 fThreshold (5), fMaxVal (80),
8616d353 33 fSector(-1), fPlate(-1), fStrip(-1),
fd31e9de 34 fDx(0), fDz(0),
35 fGeoManager(0)
8616d353 36{
37
ee9d8eca 38 //fGeoManager = (TGeoManager*)gEve->GetGeometry("$REVESYS/alice-data/alice_fullgeo.root");
8616d353 39 if (!fGeoManager) printf("ERROR: no TGeo\n");
40
41}
42/* ************************************************************************ */
43
d810d0de 44AliEveTOFStrip::AliEveTOFStrip(TGeoManager *localGeoManager,
fd31e9de 45 Int_t nSector, Int_t nPlate, Int_t nStrip) :
46 TEveQuadSet(Form("Strip%i", nStrip)),
28a21457 47 fTOFgeometry(new AliTOFGeometry()),
8616d353 48 fTOFarray(0),
a8256688 49 fThreshold (5), fMaxVal (80),
8616d353 50 fSector(nSector), fPlate(nPlate), fStrip(nStrip),
51 fDx(0), fDz(0),
52 fGeoManager(localGeoManager)
53{
51346b82 54
8616d353 55 //if (!fGeoManager) printf("ERROR: no TGeo\n");
56
57 InitModule();
58
59}
60/* ************************************************************************ */
61
d810d0de 62AliEveTOFStrip::AliEveTOFStrip(TGeoManager *localGeoManager,
fd31e9de 63 Int_t nSector, Int_t nPlate, Int_t nStrip,
64 TClonesArray *tofArray) :
65 TEveQuadSet(Form("Strip%i", nStrip)),
28a21457 66 fTOFgeometry(new AliTOFGeometry()),
8616d353 67 fTOFarray(tofArray),
a8256688 68 fThreshold (5), fMaxVal (80),
8616d353 69 fSector(nSector), fPlate(nPlate), fStrip(nStrip),
70 fDx(0), fDz(0),
71 fGeoManager(localGeoManager)
72{
73
74 InitModule();
75
76}
77/* ************************************************************************ */
78
d810d0de 79AliEveTOFStrip::~AliEveTOFStrip()
8616d353 80{
81
82 fGeoManager = 0x0;
83 delete fGeoManager;
84
85 fTOFarray = 0x0;
86 delete fTOFarray;
87
88}
89
90/* ************************************************************************ */
91/*
d810d0de 92void AliEveTOFStrip::SetDigitsInfo(AliEveTOFDigitsInfo* info)
8616d353 93{
94 if(fInfo) fInfo->DecRefCount();
95 fInfo = info;
96 if(fInfo) fInfo->IncRefCount();
97
98}
99*/
100/* ************************************************************************ */
d810d0de 101void AliEveTOFStrip::InitStatics()
8616d353 102{
103 if (fgStaticInitDone) return;
104
105 Float_t dx = 2.5*48;
106 Float_t dz = 3.5*2;
84aff7a4 107 fgTOFstripFrameBox = new TEveFrameBox();
8616d353 108
109 fgTOFstripFrameBox->SetAAQuadXZ(-dx*0.5, 0, -dz*0.5, dx, dz);
110 fgTOFstripFrameBox->SetFrameColor((Color_t) 32);//31);
111
84aff7a4 112 //fgTOFstripPalette = new TEveRGBAPalette(0, 2048); // TOT
113 fgTOFstripPalette = new TEveRGBAPalette(0, 8192); // TDC
a8256688 114 fgTOFstripPalette->SetOverflowAction(0);
8616d353 115
116 fgStaticInitDone = kTRUE;
117}
118
119/* ************************************************************************ */
d810d0de 120void AliEveTOFStrip::InitModule()
8616d353 121{
122
123 fDx = fTOFgeometry->XPad()*fTOFgeometry->NpadX();
124 fDz = fTOFgeometry->ZPad()*fTOFgeometry->NpadZ();
125
126 if (!fgStaticInitDone) InitStatics();
127
128 SetFrame(fgTOFstripFrameBox);
129 SetPalette(fgTOFstripPalette);
130 //fFrame = fgTOFstripFrameBox;
131 //fPalette = fgTOFstripPalette;
132
51346b82 133 LoadQuads();
8616d353 134 ComputeBBox();
135 SetTrans();
136
137}
138
139/* ************************************************************************ */
d810d0de 140void AliEveTOFStrip::LoadQuads()
8616d353 141{
142
143 //Int_t n_col = gStyle->GetNumberOfColors();
144
145 Int_t iPadX = -1;
146 Int_t iPadZ = -1;
147 Int_t tdc = -1;
148 Int_t tot = -1;
149 Float_t x = -1;
150 Float_t z = -1;
151
84aff7a4 152 Reset(kQT_RectangleXZFixedY, kFALSE, 32);
8616d353 153
154 AliTOFdigit *tofDigit;
155
156 //printf(" fTOFarray->GetEntries() = %4i \n",fTOFarray->GetEntries());
157
158 for (Int_t ii=0; ii<fTOFarray->GetEntries(); ii++) {
159
160 tofDigit = (AliTOFdigit*)fTOFarray->UncheckedAt(ii);
161
162 iPadX = tofDigit->GetPadx();
163 iPadZ = tofDigit->GetPadz();
164
165 tot = tofDigit->GetToT();
166 tdc = tofDigit->GetTdc();
167
168 //if (fSector==4 && fPlate==2 && fStrip==0) printf(" %2i %1i\n", iPadX, iPadZ);
169 //if (iPadX==23 || iPadX==24) printf(" %2i %1i %2i \n", fSector, fPlate, fStrip);
170
171 fTOFgeometry->DetToStripRF(iPadX, iPadZ, x, z);
172
173 AddQuad(x, z, 2.5, 3.5);
174 //AddQuad(-2.5*0.5, -3.5*0.5, 2.5, 3.5);
175
176 // In principle could have color based on number of neigbours. We
177 // can insert the time-of-flight value for each pad
178 //QuadValue((Int_t)tot);
179 QuadValue((Int_t)tdc);
a8256688 180 QuadId(tofDigit);
8616d353 181
182 //if (fSector==4 && fPlate==2 && fStrip==0) printf(" %1i %2i %f %f \n", iPadZ, iPadX, x, z);
183
184 }
185
186 RefitPlex();
51346b82 187
8616d353 188}
189
190/* ************************************************************ */
d810d0de 191void AliEveTOFStrip::SetTrans()
8616d353 192{
8616d353 193 //Int_t det[5] = {fSector, fPlate, fStrip, -1, -1};
194 Char_t path[100];
195 //fTOFgeometry->GetVolumePath(det,path);
196 fTOFgeometry->GetVolumePath(fSector, fPlate, fStrip, path);
197
198 fGeoManager->cd(path);
a15e6d7d 199 SetTransMatrix(*fGeoManager->GetCurrentMatrix());
8616d353 200}
a8256688 201
202/******************************************************************************/
203void AliEveTOFStrip::SetThreshold(Short_t t)
204{
205 fThreshold = TMath::Min(t, (Short_t)(fMaxVal - 1));
206 // ClearColorArray();
207}
208
209/******************************************************************************/
210
211void AliEveTOFStrip::SetMaxVal(Int_t mv)
212{
213 fMaxVal = TMath::Max(mv, (Int_t)(fThreshold + 1));
214 //ClearColorArray();
215}
216
217/******************************************************************************/
218
219void AliEveTOFStrip::DigitSelected(Int_t idx)
220{
221 // Override control-click from TEveQuadSet
222
223 DigitBase_t* qb = GetDigit(idx);
224 TObject* obj = qb->fId.GetObject();
225 AliTOFdigit* digs = dynamic_cast<AliTOFdigit*>(obj);
226 // printf("AliEveTOFStrip::QuadSelected "); Print();
227 /*
228 printf(" idx = %5i, value = %5d, obj = 0x%lx, digit = 0x%lx ",
229 idx, qb->fValue, (ULong_t)obj, (ULong_t)digs);
230 */
231 if (digs)
232 printf("\n Sector = %2i Plate = %1i Strip = %2i PadZ = %1i PadX = %2i ToT = %3i Tof = %5i\n",
233 fSector , fPlate, fStrip, digs->GetPadz(), digs->GetPadx(), digs->GetToT(), digs->GetTdc());
234 else printf("\n");
235
236}
237
238/******************************************************************************/