1 /**************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
3 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
4 * full copyright notice. *
5 **************************************************************************/
8 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
11 // Class to visualize the TOF digit information
12 // in TOF sector frame
14 // Author: A. De Caro (email: decaro@sa.infn.t)
19 #include <TGeoManager.h>
20 #include <TClonesArray.h>
22 #include <TEveManager.h>
23 #include <TEveRGBAPalette.h>
24 #include <TEveFrameBox.h>
26 #include <AliTOFdigit.h>
27 #include <AliTOFGeometry.h>
29 #include "AliEveTOFStrip.h"
31 Bool_t AliEveTOFStrip::fgStaticInitDone = kFALSE;
32 TEveFrameBox* AliEveTOFStrip::fgTOFstripFrameBox = 0;
33 TEveRGBAPalette* AliEveTOFStrip::fgTOFstripPalette = 0;
35 //_______________________________________________________
36 ClassImp(AliEveTOFStrip)
38 /* ************************************************************************ */
40 AliEveTOFStrip::AliEveTOFStrip(const Text_t* n, const Text_t* t) :
42 fTOFgeometry(new AliTOFGeometry()),
44 fThreshold (5), fMaxVal (80),
45 fSector(-1), fPlate(-1), fStrip(-1),
51 //fGeoManager = AliEveEventManager::AssertGeometry();
52 if (!fGeoManager) printf("ERROR: no TGeo\n");
55 /* ************************************************************************ */
57 AliEveTOFStrip::AliEveTOFStrip(TGeoManager *localGeoManager,
58 Int_t nSector, Int_t nPlate, Int_t nStrip) :
59 TEveQuadSet(Form("Strip%i", nStrip)),
60 fTOFgeometry(new AliTOFGeometry()),
62 fThreshold (5), fMaxVal (80),
63 fSector(nSector), fPlate(nPlate), fStrip(nStrip),
65 fGeoManager(localGeoManager)
69 //if (!fGeoManager) printf("ERROR: no TGeo\n");
74 /* ************************************************************************ */
76 AliEveTOFStrip::AliEveTOFStrip(TGeoManager *localGeoManager,
77 Int_t nSector, Int_t nPlate, Int_t nStrip,
78 TClonesArray *tofArray) :
79 TEveQuadSet(Form("Strip%i", nStrip)),
80 fTOFgeometry(new AliTOFGeometry()),
82 fThreshold (5), fMaxVal (80),
83 fSector(nSector), fPlate(nPlate), fStrip(nStrip),
85 fGeoManager(localGeoManager)
92 /* ************************************************************************ */
94 AliEveTOFStrip::~AliEveTOFStrip()
106 /* ************************************************************************ */
108 void AliEveTOFStrip::SetDigitsInfo(AliEveTOFDigitsInfo* info)
110 if(fInfo) fInfo->DecRefCount();
112 if(fInfo) fInfo->IncRefCount();
116 /* ************************************************************************ */
117 void AliEveTOFStrip::InitStatics()
120 // To initialize statistic variables
123 if (fgStaticInitDone) return;
127 fgTOFstripFrameBox = new TEveFrameBox();
129 fgTOFstripFrameBox->SetAAQuadXZ(-dx*0.5, 0, -dz*0.5, dx, dz);
130 fgTOFstripFrameBox->SetFrameColor(Color_t(32));
131 fgTOFstripFrameBox->IncRefCount();
133 //fgTOFstripPalette = new TEveRGBAPalette(0, 2048); // TOT
134 //fgTOFstripPalette = new TEveRGBAPalette(0, 192); // TDC
135 fgTOFstripPalette = new TEveRGBAPalette(0, 100000); // TDC
136 fgTOFstripPalette->SetOverflowAction(2);
137 fgTOFstripPalette->SetUnderflowAction(2);
138 fgTOFstripPalette->IncRefCount();
140 fgStaticInitDone = kTRUE;
143 /* ************************************************************************ */
144 void AliEveTOFStrip::InitModule()
147 // To initialize TOF strip frame variables
150 fDx = fTOFgeometry->XPad()*fTOFgeometry->NpadX();
151 fDz = fTOFgeometry->ZPad()*fTOFgeometry->NpadZ();
153 if (!fgStaticInitDone) InitStatics();
155 SetFrame(fgTOFstripFrameBox);
156 SetPalette(fgTOFstripPalette);
157 //fFrame = fgTOFstripFrameBox;
158 //fPalette = fgTOFstripPalette;
166 /* ************************************************************************ */
167 void AliEveTOFStrip::LoadQuads()
170 // Load TOF digit as illuminated pad
180 Reset(kQT_RectangleXZFixedY, kFALSE, 32);
182 AliTOFdigit *tofDigit;
184 //printf(" fTOFarray->GetEntries() = %4i \n",fTOFarray->GetEntries());
186 for (Int_t ii=0; ii<fTOFarray->GetEntries(); ii++) {
188 tofDigit = (AliTOFdigit*)fTOFarray->UncheckedAt(ii);
190 iPadX = tofDigit->GetPadx();
191 iPadZ = tofDigit->GetPadz();
193 tot = tofDigit->GetToT();
194 tdc = tofDigit->GetTdc();
196 //if (fSector==4 && fPlate==2 && fStrip==0) printf(" %2i %1i\n", iPadX, iPadZ);
197 //if (iPadX==23 || iPadX==24) printf(" %2i %1i %2i \n", fSector, fPlate, fStrip);
199 fTOFgeometry->DetToStripRF(iPadX, iPadZ, x, z);
201 AddQuad(x, z, 2.5, 3.5);
202 //AddQuad(-2.5*0.5, -3.5*0.5, 2.5, 3.5);
204 // In principle could have color based on number of neigbours. We
205 // can insert the time-of-flight value for each pad
206 //QuadValue((Int_t)tot);
207 QuadValue((Int_t)tdc);
210 //if (fSector==4 && fPlate==2 && fStrip==0) printf(" %1i %2i %f %f \n", iPadZ, iPadX, x, z);
218 /* ************************************************************ */
219 void AliEveTOFStrip::SetTrans()
222 // Set the translation matrix for TOF sector
225 //Int_t det[5] = {fSector, fPlate, fStrip, -1, -1};
227 //fTOFgeometry->GetVolumePath(det,path);
228 fTOFgeometry->GetVolumePath(fSector, fPlate, fStrip, path);
230 fGeoManager->cd(path);
231 SetTransMatrix(*fGeoManager->GetCurrentMatrix());
234 /******************************************************************************/
235 void AliEveTOFStrip::SetThreshold(Short_t t)
238 // Set visualization threshold
241 fThreshold = TMath::Min(t, (Short_t)(fMaxVal - 1));
242 // ClearColorArray();
245 /******************************************************************************/
247 void AliEveTOFStrip::SetMaxVal(Int_t mv)
250 // Set visualization max value
253 fMaxVal = TMath::Max(mv, (Int_t)(fThreshold + 1));
257 /******************************************************************************/
259 void AliEveTOFStrip::DigitSelected(Int_t idx)
262 // Printout infos for TOF digit number idx
265 // Override control-click from TEveQuadSet
267 TObject* obj = GetId(idx);
268 AliTOFdigit* digs = dynamic_cast<AliTOFdigit*>(obj);
269 // printf("AliEveTOFStrip::QuadSelected "); Print();
272 printf("\n Sector = %2i Plate = %1i Strip = %2i PadZ = %1i PadX = %2i ToT = %3i Tof = %5i\n",
273 fSector , fPlate, fStrip, digs->GetPadz(), digs->GetPadx(), digs->GetToT(), digs->GetTdc());
278 /******************************************************************************/