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