]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveT0Module.cxx
TOF Raw data and clusters visualization
[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>
22#include <AliRawReaderFile.h>
23#include <AliRawReaderDate.h>
24#include <AliRawReaderRoot.h>
707b281a 25#include <AliT0RawReader.h>
03916485 26#include <AliCDBManager.h>
51346b82 27#include <AliCDBStorage.h>
03916485 28
707b281a 29#include <TArrayI.h>
30#include <TStyle.h>
31#include <TMath.h>
32#include <TRandom.h>
33#include <TEveManager.h>
03916485 34
d810d0de 35
36ClassImp(AliEveT0Module)
03916485 37
57ffa5fb 38/******************************************************************************/
d810d0de 39AliEveT0Module::AliEveT0Module(const Text_t* n, Int_t sigType, AliT0digit *digits, AliT0RawReader *start)
84aff7a4 40 : TEveQuadSet(n), fSigType(sigType), fDigits(digits), fStart(start)
03916485 41{
42 //
43 // Default constructor
44 //
51346b82 45
03916485 46}
47
57ffa5fb 48/******************************************************************************/
d810d0de 49AliEveT0Module::~AliEveT0Module()
03916485 50{
51
52}
53
d810d0de 54void AliEveT0Module::LoadRaw(TString fileName, Int_t ievt)
03916485 55{
56 AliT0digit *digits = 0;
57 AliRawReader *reader = new AliRawReaderRoot(fileName,ievt);
58 reader->LoadEquipmentIdsMap("T0map.txt");
59 reader->RequireHeader(kTRUE);
60 AliT0RawReader *start = new AliT0RawReader(reader);
61 Int_t allData[110][5];
51346b82 62 TRandom r(0);
03916485 63 // cout<<ievt<<endl;
84aff7a4 64 TEveRGBAPalette* rawPalette = new TEveRGBAPalette(0, 3000);
03916485 65 rawPalette->SetLimits(1, 3000); // Set proper raw time range.
d810d0de 66 TEveQuadSet* raw_a = new AliEveT0Module("T0_RAW_A", 2,digits, start); raw_a->SetPalette(rawPalette);
84aff7a4 67 raw_a->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
d810d0de 68 TEveQuadSet* raw_c = new AliEveT0Module("T0_RAW_C", 3,digits, start); raw_c->SetPalette(rawPalette);
84aff7a4 69 raw_c->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
51346b82 70 Float_t angle = 2 * TMath::Pi() / 12;
03916485 71 start->Next();
72 for (Int_t i=0; i<110; i++)
73 {
51346b82 74 for (Int_t iHit=0; iHit<5; iHit++)
03916485 75 {
76 allData[i][iHit]= start->GetData(i,iHit);
77 if (allData[i][iHit] != 0) cout<<"event"<<ievt<<" i "<< i<<" "<<allData[i][iHit] - allData[0][0]<<endl;
78 }
79 }
80 for (Int_t i=0; i<12; i++)
81 {
82 Float_t x = 6.5 * TMath::Sin(i * angle);
83 Float_t y = 6.5 * TMath::Cos(i * angle);
84 raw_a->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
85 raw_a->QuadValue(start->GetData(i+37,0)-start->GetData(0,0));
86 raw_c->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
87 raw_c->QuadValue(start->GetData(i+25,0)-start->GetData(0,0));
88 }
89
90
91 raw_a->RefitPlex();
92 raw_c->RefitPlex();
51346b82 93
84aff7a4 94 TEveTrans& ta_a = raw_a->RefHMTrans();
03916485 95 ta_a.SetPos(0, 0, 373);
84aff7a4 96 TEveTrans& tc_c = raw_c->RefHMTrans();
03916485 97 tc_c.SetPos(0, 0, -69.7);
98
84aff7a4 99 gEve->AddElement(raw_a);
100 gEve->AddElement(raw_c);
101 gEve->Redraw3D();
03916485 102}
103
57ffa5fb 104/******************************************************************************/
d810d0de 105void AliEveT0Module::MakeModules(AliT0digit *digits)
03916485 106{
51346b82 107 TRandom r(0);
03916485 108 TArrayI ADC(24);
109 TArrayI TDC(24);
51346b82 110
03916485 111 digits->GetQT1(ADC);
112 digits->GetTimeCFD(TDC);
113 // printf("%3d\n",besttimeright);
114 for (Int_t i=0;i<24; i++){
115 printf("%3d %3d\n ",ADC[i], TDC[i]);
116 }
117
84aff7a4 118 TEveRGBAPalette* adcPalette = new TEveRGBAPalette(5, 1024);
03916485 119 adcPalette->SetLimits(1, 1024); // Set proper ADC range.
84aff7a4 120 TEveRGBAPalette* tdcPalette = new TEveRGBAPalette(0, 9999);
03916485 121 tdcPalette->SetLimits(1, 9999); // Set proper TDC range.
122
d810d0de 123 TEveQuadSet* qa = new AliEveT0Module("T0A_ADC", 0, digits); qa->SetPalette(adcPalette);
124 TEveQuadSet* qc = new AliEveT0Module("T0C_ADC", 0, digits); qc->SetPalette(adcPalette);
125 TEveQuadSet* qat = new AliEveT0Module("T0A_TDC", 1, digits); qat->SetPalette(tdcPalette);
126 TEveQuadSet* qct = new AliEveT0Module("T0C_TDC", 1, digits); qct->SetPalette(tdcPalette);
03916485 127
128 Float_t angle = 2 * TMath::Pi() / 12;
129
84aff7a4 130 qa->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
131 qc->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
132 qat->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
133 qct->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
03916485 134
135
136
137 for (Int_t i=0; i<12; i++) {
138 Float_t x = 6.5 * TMath::Sin(i * angle);
139 Float_t y = 6.5 * TMath::Cos(i * angle);
140
141 qa->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
142 qa->QuadValue(ADC[i+12]);
143 // qa->QuadId(new TNamed(Form("PMT with idx=%d", i), "PMT's aplitude in side A."));
144
145 qat->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
146 qat->QuadValue(TDC[i+12]);
147 // qat->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's time in side A."));
51346b82 148
03916485 149 qc->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
150 qc->QuadValue(ADC[i]);
151 // qc->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's amplitude in side C."));
152
153 qct->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
154 qct->QuadValue(TDC[i]);
155 // qct->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's time in side C."));
156 }
157
158 qa->RefitPlex();
159 qc->RefitPlex();
160 qat->RefitPlex();
161 qct->RefitPlex();
162
84aff7a4 163 TEveTrans& ta = qa->RefHMTrans();
03916485 164 ta.SetPos(0, 0, 373);
84aff7a4 165 TEveTrans& tc = qc->RefHMTrans();
03916485 166 tc.SetPos(0, 0, -69.7);
51346b82 167
84aff7a4 168 TEveTrans& tat = qat->RefHMTrans();
03916485 169 tat.SetPos(0, 0, 373);
84aff7a4 170 TEveTrans& tct = qct->RefHMTrans();
03916485 171 tct.SetPos(0, 0, -69.7);
51346b82 172
84aff7a4 173 gEve->AddElement(qa);
174 gEve->AddElement(qc);
175 gEve->AddElement(qat);
176 gEve->AddElement(qct);
03916485 177
84aff7a4 178 gEve->Redraw3D();
03916485 179}
180
57ffa5fb 181/******************************************************************************/
03916485 182
d810d0de 183void AliEveT0Module::DigitSelected(Int_t idx)
03916485 184{
84aff7a4 185 // Override control-click from TEveQuadSet
03916485 186
84aff7a4 187 DigitBase_t* qb = GetDigit(idx);
03916485 188 if (fSigType == 0) { //ADC
189 printf("adc====================\n");
190 Int_t besttimeright = fDigits->BestTimeA();
191 Int_t besttimeleft = fDigits->BestTimeC();
192 Int_t meantime = fDigits->MeanTime();
193 Int_t timediff = fDigits->TimeDiff();
194 Int_t summult = fDigits->SumMult();
195
196 printf("besttimeA=%3d\n",besttimeright);
197 printf("besttimeC=%3d\n",besttimeleft);
198 printf("meantime=%3d\n",meantime);
199 printf("timediff=%3d\n",timediff);
200 printf("summult=%3d\n",summult);
201
202 printf(" idx=%d, amplitude=%d\n", idx, qb->fValue);
203
51346b82 204 }
03916485 205 if (fSigType == 1) {
206 printf("tdc====================\n");
51346b82 207
03916485 208 Int_t besttimeright = fDigits->BestTimeA();
209 Int_t besttimeleft = fDigits->BestTimeC();
210 Int_t meantime = fDigits->MeanTime();
211 Int_t timediff = fDigits->TimeDiff();
212 Int_t summult = fDigits->SumMult();
213
214 printf("besttimeA=%3d\n",besttimeright);
215 printf("besttimeC=%3d\n",besttimeleft);
216 printf("meantime=%3d\n",meantime);
217 printf("timediff=%3d\n",timediff);
218 printf("summult=%3d\n",summult);
219
220 printf(" idx=%d, amplitude=%d\n", idx, qb->fValue);
221 }
222 if (fSigType == 2) {
223 printf("raw====================\n");
224 printf("besttimeA=%3d\n",fStart->GetData(51,0)-fStart->GetData(0,0));
225 printf("besttimeC=%3d\n",fStart->GetData(52,0)-fStart->GetData(0,0));
226 printf("meantime=%3d\n",fStart->GetData(49,0)-fStart->GetData(0,0));
227 printf("amplitude= %3d\n",fStart->GetData(idx+1,0));
51346b82 228
03916485 229 printf(" idx=%d, time %d\n", idx, qb->fValue);
230 }
231 if (fSigType == 3) {
232 printf("raw====================\n");
233 printf("besttimeA=%3d\n",fStart->GetData(51,0)-fStart->GetData(0,0));
234 printf("besttimeC=%3d\n",fStart->GetData(52,0)-fStart->GetData(0,0));
235 printf("meantime=%3d\n",fStart->GetData(49,0)-fStart->GetData(0,0));
236 printf("amplitude= %3d\n",fStart->GetData(idx+13,0));
51346b82 237
03916485 238 printf(" idx=%d, time %d\n", idx, qb->fValue);
239 }
240
241}