]>
Commit | Line | Data |
---|---|---|
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 | 19 | Bool_t AliEveTOFStrip::fgStaticInitDone = kFALSE; |
d810d0de | 20 | TEveFrameBox* AliEveTOFStrip::fgTOFstripFrameBox = 0; |
21 | TEveRGBAPalette* AliEveTOFStrip::fgTOFstripPalette = 0; | |
8616d353 | 22 | |
23 | //_______________________________________________________ | |
d810d0de | 24 | ClassImp(AliEveTOFStrip) |
8616d353 | 25 | |
26 | /* ************************************************************************ */ | |
27 | ||
d810d0de | 28 | AliEveTOFStrip::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 | 44 | AliEveTOFStrip::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 | 62 | AliEveTOFStrip::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 | 79 | AliEveTOFStrip::~AliEveTOFStrip() |
8616d353 | 80 | { |
81 | ||
82 | fGeoManager = 0x0; | |
83 | delete fGeoManager; | |
84 | ||
85 | fTOFarray = 0x0; | |
86 | delete fTOFarray; | |
87 | ||
88 | } | |
89 | ||
90 | /* ************************************************************************ */ | |
91 | /* | |
d810d0de | 92 | void AliEveTOFStrip::SetDigitsInfo(AliEveTOFDigitsInfo* info) |
8616d353 | 93 | { |
94 | if(fInfo) fInfo->DecRefCount(); | |
95 | fInfo = info; | |
96 | if(fInfo) fInfo->IncRefCount(); | |
97 | ||
98 | } | |
99 | */ | |
100 | /* ************************************************************************ */ | |
d810d0de | 101 | void 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); | |
fbc350a3 | 110 | fgTOFstripFrameBox->SetFrameColor(32);//31); |
8616d353 | 111 | |
84aff7a4 | 112 | //fgTOFstripPalette = new TEveRGBAPalette(0, 2048); // TOT |
82dabae7 | 113 | //fgTOFstripPalette = new TEveRGBAPalette(0, 192); // TDC |
114 | fgTOFstripPalette = new TEveRGBAPalette(0, 100000); // TDC | |
115 | fgTOFstripPalette->SetOverflowAction(2); | |
116 | fgTOFstripPalette->SetUnderflowAction(2); | |
8616d353 | 117 | |
118 | fgStaticInitDone = kTRUE; | |
119 | } | |
120 | ||
121 | /* ************************************************************************ */ | |
d810d0de | 122 | void AliEveTOFStrip::InitModule() |
8616d353 | 123 | { |
124 | ||
125 | fDx = fTOFgeometry->XPad()*fTOFgeometry->NpadX(); | |
126 | fDz = fTOFgeometry->ZPad()*fTOFgeometry->NpadZ(); | |
127 | ||
128 | if (!fgStaticInitDone) InitStatics(); | |
129 | ||
130 | SetFrame(fgTOFstripFrameBox); | |
131 | SetPalette(fgTOFstripPalette); | |
132 | //fFrame = fgTOFstripFrameBox; | |
133 | //fPalette = fgTOFstripPalette; | |
134 | ||
51346b82 | 135 | LoadQuads(); |
8616d353 | 136 | ComputeBBox(); |
137 | SetTrans(); | |
138 | ||
139 | } | |
140 | ||
141 | /* ************************************************************************ */ | |
d810d0de | 142 | void AliEveTOFStrip::LoadQuads() |
8616d353 | 143 | { |
144 | ||
145 | //Int_t n_col = gStyle->GetNumberOfColors(); | |
146 | ||
147 | Int_t iPadX = -1; | |
148 | Int_t iPadZ = -1; | |
149 | Int_t tdc = -1; | |
150 | Int_t tot = -1; | |
151 | Float_t x = -1; | |
152 | Float_t z = -1; | |
153 | ||
84aff7a4 | 154 | Reset(kQT_RectangleXZFixedY, kFALSE, 32); |
8616d353 | 155 | |
156 | AliTOFdigit *tofDigit; | |
157 | ||
158 | //printf(" fTOFarray->GetEntries() = %4i \n",fTOFarray->GetEntries()); | |
159 | ||
160 | for (Int_t ii=0; ii<fTOFarray->GetEntries(); ii++) { | |
161 | ||
162 | tofDigit = (AliTOFdigit*)fTOFarray->UncheckedAt(ii); | |
163 | ||
164 | iPadX = tofDigit->GetPadx(); | |
165 | iPadZ = tofDigit->GetPadz(); | |
166 | ||
167 | tot = tofDigit->GetToT(); | |
168 | tdc = tofDigit->GetTdc(); | |
169 | ||
170 | //if (fSector==4 && fPlate==2 && fStrip==0) printf(" %2i %1i\n", iPadX, iPadZ); | |
171 | //if (iPadX==23 || iPadX==24) printf(" %2i %1i %2i \n", fSector, fPlate, fStrip); | |
172 | ||
173 | fTOFgeometry->DetToStripRF(iPadX, iPadZ, x, z); | |
174 | ||
175 | AddQuad(x, z, 2.5, 3.5); | |
176 | //AddQuad(-2.5*0.5, -3.5*0.5, 2.5, 3.5); | |
177 | ||
178 | // In principle could have color based on number of neigbours. We | |
179 | // can insert the time-of-flight value for each pad | |
180 | //QuadValue((Int_t)tot); | |
181 | QuadValue((Int_t)tdc); | |
a8256688 | 182 | QuadId(tofDigit); |
8616d353 | 183 | |
184 | //if (fSector==4 && fPlate==2 && fStrip==0) printf(" %1i %2i %f %f \n", iPadZ, iPadX, x, z); | |
185 | ||
186 | } | |
187 | ||
188 | RefitPlex(); | |
51346b82 | 189 | |
8616d353 | 190 | } |
191 | ||
192 | /* ************************************************************ */ | |
d810d0de | 193 | void AliEveTOFStrip::SetTrans() |
8616d353 | 194 | { |
8616d353 | 195 | //Int_t det[5] = {fSector, fPlate, fStrip, -1, -1}; |
196 | Char_t path[100]; | |
197 | //fTOFgeometry->GetVolumePath(det,path); | |
198 | fTOFgeometry->GetVolumePath(fSector, fPlate, fStrip, path); | |
199 | ||
200 | fGeoManager->cd(path); | |
a15e6d7d | 201 | SetTransMatrix(*fGeoManager->GetCurrentMatrix()); |
8616d353 | 202 | } |
a8256688 | 203 | |
204 | /******************************************************************************/ | |
205 | void AliEveTOFStrip::SetThreshold(Short_t t) | |
206 | { | |
207 | fThreshold = TMath::Min(t, (Short_t)(fMaxVal - 1)); | |
208 | // ClearColorArray(); | |
209 | } | |
210 | ||
211 | /******************************************************************************/ | |
212 | ||
213 | void AliEveTOFStrip::SetMaxVal(Int_t mv) | |
214 | { | |
215 | fMaxVal = TMath::Max(mv, (Int_t)(fThreshold + 1)); | |
216 | //ClearColorArray(); | |
217 | } | |
218 | ||
219 | /******************************************************************************/ | |
220 | ||
221 | void AliEveTOFStrip::DigitSelected(Int_t idx) | |
222 | { | |
223 | // Override control-click from TEveQuadSet | |
224 | ||
225 | DigitBase_t* qb = GetDigit(idx); | |
226 | TObject* obj = qb->fId.GetObject(); | |
227 | AliTOFdigit* digs = dynamic_cast<AliTOFdigit*>(obj); | |
228 | // printf("AliEveTOFStrip::QuadSelected "); Print(); | |
229 | /* | |
230 | printf(" idx = %5i, value = %5d, obj = 0x%lx, digit = 0x%lx ", | |
231 | idx, qb->fValue, (ULong_t)obj, (ULong_t)digs); | |
232 | */ | |
233 | if (digs) | |
234 | printf("\n Sector = %2i Plate = %1i Strip = %2i PadZ = %1i PadX = %2i ToT = %3i Tof = %5i\n", | |
235 | fSector , fPlate, fStrip, digs->GetPadz(), digs->GetPadx(), digs->GetToT(), digs->GetTdc()); | |
236 | else printf("\n"); | |
237 | ||
238 | } | |
239 | ||
240 | /******************************************************************************/ |