]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveT0Module.cxx
Removing unnecessary and slightly misleading printout. Anyway we now in which event...
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveT0Module.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 **************************************************************************/
16718cdc 9
03916485 10//////////////////////////////////////////////////////////////////////////
11// //
12// The main AliEVE drawing module for the T0 detector //
13// //
14//////////////////////////////////////////////////////////////////////////
51346b82 15
d810d0de 16#include "AliEveT0Module.h"
707b281a 17
18#include <EveBase/AliEveEventManager.h>
19
03916485 20#include <AliT0digit.h>
03916485 21#include <AliRawReader.h>
03916485 22#include <AliRawReaderRoot.h>
707b281a 23#include <AliT0RawReader.h>
51346b82 24#include <AliCDBStorage.h>
03916485 25
a15e6d7d 26#include <TEveTrans.h>
27#include <TEveManager.h>
28#include <TTree.h>
707b281a 29#include <TArrayI.h>
30#include <TStyle.h>
31#include <TMath.h>
32#include <TRandom.h>
03916485 33
d810d0de 34
35ClassImp(AliEveT0Module)
03916485 36
57ffa5fb 37/******************************************************************************/
249bb876 38AliEveT0Module::AliEveT0Module(const Text_t* n, Int_t sigType,
39 AliT0digit *digits, AliT0RawReader *start,
40 Double_t zvertex) :
41 TEveQuadSet(n), fSigType(sigType),
42 fDigits(digits), fStart(start),
43 fZVertex(zvertex)
03916485 44{
45 //
46 // Default constructor
47 //
03916485 48}
49
6c841fa2 50void AliEveT0Module::PrintEventInfo()
51{
249bb876 52 printf("Z-vertex = %f\n", fZVertex);
6c841fa2 53}
54
57ffa5fb 55/******************************************************************************/
03916485 56
6c841fa2 57void AliEveT0Module::LoadRaw(AliRawReader* reader)
03916485 58{
a15e6d7d 59 // Load raw-data from file.
60
03916485 61 AliT0digit *digits = 0;
6c841fa2 62
63 // ??? How / when is this called during reco from raw?
03916485 64 reader->LoadEquipmentIdsMap("T0map.txt");
65 reader->RequireHeader(kTRUE);
6c841fa2 66
03916485 67 AliT0RawReader *start = new AliT0RawReader(reader);
68 Int_t allData[110][5];
249bb876 69
70 Float_t angle = 2 * TMath::Pi() / 12;
71 start->Next();
72 for (Int_t i=0; i<110; i++)
73 {
74 for (Int_t iHit=0; iHit<5; iHit++)
75 {
76 allData[i][iHit]= start->GetData(i,iHit);
77 }
78 }
79 Double_t zvertex = (allData[51][0] - allData[52][0])/2*25*2.99752/100;
80 //std::cout<<"zvertex= "<< zvertex <<endl;
6c841fa2 81
82 TEveRGBAPalette *rawPalette = new TEveRGBAPalette(0, 3000);
83 TEveRGBAPalette *vertexPalette = new TEveRGBAPalette(-100, 100);
84
85 TEveFrameBox *box = new TEveFrameBox();
86 {
87 Float_t frame[3*36];
88 Float_t *p = frame;
89 for (Int_t i = 0; i < 36; ++i, p += 3) {
90 p[0] = 8.0f * TMath::Cos(TMath::TwoPi()*i/36);
91 p[1] = 8.0f * TMath::Sin(TMath::TwoPi()*i/36);
92 p[2] = 0;
93 }
94 box->SetQuadByPoints(frame, 36);
95 }
96 box->SetFrameColor(kGray);
97
98
03916485 99 rawPalette->SetLimits(1, 3000); // Set proper raw time range.
249bb876 100 TEveQuadSet* rawA = new AliEveT0Module("T0_RAW_A", 2, digits, start, zvertex);
a15e6d7d 101 rawA->SetPalette(rawPalette);
102 rawA->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
6c841fa2 103 rawA->SetFrame(box);
249bb876 104 TEveQuadSet* rawC = new AliEveT0Module("T0_RAW_C", 3, digits, start, zvertex);
a15e6d7d 105 rawC->SetPalette(rawPalette);
6c841fa2 106 rawC->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
107 rawC->SetFrame(box);
108
249bb876 109 TEveQuadSet* vertexT0 = new AliEveT0Module("T0_Vertex", 5, digits, start, zvertex);
cff55d04 110 vertexT0->SetPalette(vertexPalette);
111 vertexT0->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
112
03916485 113 for (Int_t i=0; i<12; i++)
114 {
115 Float_t x = 6.5 * TMath::Sin(i * angle);
116 Float_t y = 6.5 * TMath::Cos(i * angle);
249bb876 117 rawA->AddHexagon(x, y, 0, 1.0);
a15e6d7d 118 rawA->QuadValue(start->GetData(i+37,0)-start->GetData(0,0));
249bb876 119 rawC->AddHexagon(x, y, 0, 1.0);
a15e6d7d 120 rawC->QuadValue(start->GetData(i+25,0)-start->GetData(0,0));
03916485 121 }
249bb876 122 vertexT0->AddHexagon(0, 0, 0, 1);
123 vertexT0->QuadValue(TMath::Nint(zvertex));
03916485 124
a15e6d7d 125 rawA->RefitPlex();
126 rawC->RefitPlex();
cff55d04 127 vertexT0->RefitPlex();
03916485 128
a15e6d7d 129 TEveTrans& taA = rawA->RefMainTrans();
130 taA.SetPos(0, 0, 373);
131 TEveTrans& tcC = rawC->RefMainTrans();
132 tcC.SetPos(0, 0, -69.7);
03916485 133
cff55d04 134 TEveTrans& tver = vertexT0->RefMainTrans();
135 tver.SetPos(0, 0, zvertex);
136
a15e6d7d 137 gEve->AddElement(rawA);
138 gEve->AddElement(rawC);
cff55d04 139 gEve->AddElement(vertexT0);
84aff7a4 140 gEve->Redraw3D();
03916485 141}
142
57ffa5fb 143/******************************************************************************/
a15e6d7d 144
d810d0de 145void AliEveT0Module::MakeModules(AliT0digit *digits)
03916485 146{
a15e6d7d 147 // Make modules for digits.
148
a15e6d7d 149 TArrayI adc(24);
150 TArrayI tdc(24);
51346b82 151
a15e6d7d 152 digits->GetQT1(adc);
153 digits->GetTimeCFD(tdc);
249bb876 154 // printf("%3d\n",besttimeright);
155 // for (Int_t i=0;i<24; i++) {
156 // printf("%3d %3d\n ",adc[i], tdc[i]);
157 // }
03916485 158
84aff7a4 159 TEveRGBAPalette* adcPalette = new TEveRGBAPalette(5, 1024);
03916485 160 adcPalette->SetLimits(1, 1024); // Set proper ADC range.
84aff7a4 161 TEveRGBAPalette* tdcPalette = new TEveRGBAPalette(0, 9999);
03916485 162 tdcPalette->SetLimits(1, 9999); // Set proper TDC range.
163
d810d0de 164 TEveQuadSet* qa = new AliEveT0Module("T0A_ADC", 0, digits); qa->SetPalette(adcPalette);
165 TEveQuadSet* qc = new AliEveT0Module("T0C_ADC", 0, digits); qc->SetPalette(adcPalette);
166 TEveQuadSet* qat = new AliEveT0Module("T0A_TDC", 1, digits); qat->SetPalette(tdcPalette);
167 TEveQuadSet* qct = new AliEveT0Module("T0C_TDC", 1, digits); qct->SetPalette(tdcPalette);
03916485 168
169 Float_t angle = 2 * TMath::Pi() / 12;
170
84aff7a4 171 qa->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
172 qc->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
173 qat->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
174 qct->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
03916485 175
03916485 176 for (Int_t i=0; i<12; i++) {
177 Float_t x = 6.5 * TMath::Sin(i * angle);
178 Float_t y = 6.5 * TMath::Cos(i * angle);
179
249bb876 180 qa->AddHexagon(x, y, 0, 1.0);
a15e6d7d 181 qa->QuadValue(adc[i+12]);
03916485 182 // qa->QuadId(new TNamed(Form("PMT with idx=%d", i), "PMT's aplitude in side A."));
183
249bb876 184 qat->AddHexagon(x, y, 0, 1.0);
a15e6d7d 185 qat->QuadValue(tdc[i+12]);
03916485 186 // qat->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's time in side A."));
51346b82 187
249bb876 188 qc->AddHexagon(x, y, 0, 1.0);
a15e6d7d 189 qc->QuadValue(adc[i]);
03916485 190 // qc->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's amplitude in side C."));
191
249bb876 192 qct->AddHexagon(x, y, 0, 1.0);
a15e6d7d 193 qct->QuadValue(tdc[i]);
03916485 194 // qct->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's time in side C."));
195 }
196
197 qa->RefitPlex();
198 qc->RefitPlex();
199 qat->RefitPlex();
200 qct->RefitPlex();
201
a15e6d7d 202 TEveTrans& ta = qa->RefMainTrans();
03916485 203 ta.SetPos(0, 0, 373);
a15e6d7d 204 TEveTrans& tc = qc->RefMainTrans();
03916485 205 tc.SetPos(0, 0, -69.7);
51346b82 206
a15e6d7d 207 TEveTrans& tat = qat->RefMainTrans();
03916485 208 tat.SetPos(0, 0, 373);
a15e6d7d 209 TEveTrans& tct = qct->RefMainTrans();
03916485 210 tct.SetPos(0, 0, -69.7);
51346b82 211
84aff7a4 212 gEve->AddElement(qa);
213 gEve->AddElement(qc);
214 gEve->AddElement(qat);
215 gEve->AddElement(qct);
03916485 216
84aff7a4 217 gEve->Redraw3D();
03916485 218}
219
57ffa5fb 220/******************************************************************************/
03916485 221
d810d0de 222void AliEveT0Module::DigitSelected(Int_t idx)
03916485 223{
84aff7a4 224 // Override control-click from TEveQuadSet
03916485 225
84aff7a4 226 DigitBase_t* qb = GetDigit(idx);
03916485 227 if (fSigType == 0) { //ADC
228 printf("adc====================\n");
229 Int_t besttimeright = fDigits->BestTimeA();
230 Int_t besttimeleft = fDigits->BestTimeC();
231 Int_t meantime = fDigits->MeanTime();
232 Int_t timediff = fDigits->TimeDiff();
233 Int_t summult = fDigits->SumMult();
234
249bb876 235 printf("besttimeA = %3d\n", besttimeright);
236 printf("besttimeC = %3d\n", besttimeleft);
237 printf("meantime = %3d\n", meantime);
238 printf("timediff = %3d\n", timediff);
239 printf("summult = %3d\n", summult);
03916485 240
241 printf(" idx=%d, amplitude=%d\n", idx, qb->fValue);
242
51346b82 243 }
03916485 244 if (fSigType == 1) {
245 printf("tdc====================\n");
51346b82 246
03916485 247 Int_t besttimeright = fDigits->BestTimeA();
248 Int_t besttimeleft = fDigits->BestTimeC();
249 Int_t meantime = fDigits->MeanTime();
250 Int_t timediff = fDigits->TimeDiff();
251 Int_t summult = fDigits->SumMult();
252
249bb876 253 printf("besttimeA = %3d\n",besttimeright);
254 printf("besttimeC = %3d\n",besttimeleft);
255 printf("meantime = %3d\n",meantime);
256 printf("timediff = %3d\n",timediff);
257 printf("summult = %3d\n",summult);
03916485 258
259 printf(" idx=%d, amplitude=%d\n", idx, qb->fValue);
260 }
261 if (fSigType == 2) {
262 printf("raw====================\n");
249bb876 263 printf("besttimeA = %3d\n",fStart->GetData(51,0)-fStart->GetData(0,0));
264 printf("besttimeC = %3d\n",fStart->GetData(52,0)-fStart->GetData(0,0));
265 printf("meantime = %3d\n",fStart->GetData(49,0)-fStart->GetData(0,0));
266 printf("amplitude = %3d\n",fStart->GetData(idx+1,0));
51346b82 267
03916485 268 printf(" idx=%d, time %d\n", idx, qb->fValue);
269 }
270 if (fSigType == 3) {
271 printf("raw====================\n");
249bb876 272 printf("besttimeA = %3d\n",fStart->GetData(51,0)-fStart->GetData(0,0));
273 printf("besttimeC = %3d\n",fStart->GetData(52,0)-fStart->GetData(0,0));
274 printf("meantime = %3d\n",fStart->GetData(49,0)-fStart->GetData(0,0));
275 printf("amplitude = %3d\n",fStart->GetData(idx+13,0));
51346b82 276
03916485 277 printf(" idx=%d, time %d\n", idx, qb->fValue);
278 }
6c841fa2 279 if (fSigType == 5) {
cff55d04 280
281 printf("vertex====================\n");
282 printf(" idx=%d, zvertex pozition %d\n", idx, qb->fValue);
283
284 }
03916485 285}