2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
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 //////////////////////////////////////////////////////////////////////////
11 // The main AliEVE drawing module for the T0 detector //
13 //////////////////////////////////////////////////////////////////////////
15 #include "AliEveT0Module.h"
17 #include <EveBase/AliEveEventManager.h>
19 #include <AliT0digit.h>
20 #include <AliRawReader.h>
21 #include <AliRawReaderFile.h>
22 #include <AliRawReaderDate.h>
23 #include <AliRawReaderRoot.h>
24 #include <AliT0RawReader.h>
25 #include <AliCDBManager.h>
26 #include <AliCDBStorage.h>
32 #include <TEveManager.h>
35 ClassImp(AliEveT0Module)
37 /******************************************************************************/
38 AliEveT0Module::AliEveT0Module(const Text_t* n, Int_t sigType, AliT0digit *digits, AliT0RawReader *start)
39 : TEveQuadSet(n), fSigType(sigType), fDigits(digits), fStart(start)
42 // Default constructor
47 /******************************************************************************/
48 AliEveT0Module::~AliEveT0Module()
53 void AliEveT0Module::LoadRaw(TString fileName, Int_t ievt)
55 AliT0digit *digits = 0;
56 AliRawReader *reader = new AliRawReaderRoot(fileName,ievt);
57 reader->LoadEquipmentIdsMap("T0map.txt");
58 reader->RequireHeader(kTRUE);
59 AliT0RawReader *start = new AliT0RawReader(reader);
60 Int_t allData[110][5];
63 TEveRGBAPalette* rawPalette = new TEveRGBAPalette(0, 3000);
64 rawPalette->SetLimits(1, 3000); // Set proper raw time range.
65 TEveQuadSet* raw_a = new AliEveT0Module("T0_RAW_A", 2,digits, start); raw_a->SetPalette(rawPalette);
66 raw_a->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
67 TEveQuadSet* raw_c = new AliEveT0Module("T0_RAW_C", 3,digits, start); raw_c->SetPalette(rawPalette);
68 raw_c->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
69 Float_t angle = 2 * TMath::Pi() / 12;
71 for (Int_t i=0; i<110; i++)
73 for (Int_t iHit=0; iHit<5; iHit++)
75 allData[i][iHit]= start->GetData(i,iHit);
76 if (allData[i][iHit] != 0) cout<<"event"<<ievt<<" i "<< i<<" "<<allData[i][iHit] - allData[0][0]<<endl;
79 for (Int_t i=0; i<12; i++)
81 Float_t x = 6.5 * TMath::Sin(i * angle);
82 Float_t y = 6.5 * TMath::Cos(i * angle);
83 raw_a->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
84 raw_a->QuadValue(start->GetData(i+37,0)-start->GetData(0,0));
85 raw_c->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
86 raw_c->QuadValue(start->GetData(i+25,0)-start->GetData(0,0));
93 TEveTrans& ta_a = raw_a->RefHMTrans();
94 ta_a.SetPos(0, 0, 373);
95 TEveTrans& tc_c = raw_c->RefHMTrans();
96 tc_c.SetPos(0, 0, -69.7);
98 gEve->AddElement(raw_a);
99 gEve->AddElement(raw_c);
103 /******************************************************************************/
104 void AliEveT0Module::MakeModules(AliT0digit *digits)
111 digits->GetTimeCFD(TDC);
112 // printf("%3d\n",besttimeright);
113 for (Int_t i=0;i<24; i++){
114 printf("%3d %3d\n ",ADC[i], TDC[i]);
117 TEveRGBAPalette* adcPalette = new TEveRGBAPalette(5, 1024);
118 adcPalette->SetLimits(1, 1024); // Set proper ADC range.
119 TEveRGBAPalette* tdcPalette = new TEveRGBAPalette(0, 9999);
120 tdcPalette->SetLimits(1, 9999); // Set proper TDC range.
122 TEveQuadSet* qa = new AliEveT0Module("T0A_ADC", 0, digits); qa->SetPalette(adcPalette);
123 TEveQuadSet* qc = new AliEveT0Module("T0C_ADC", 0, digits); qc->SetPalette(adcPalette);
124 TEveQuadSet* qat = new AliEveT0Module("T0A_TDC", 1, digits); qat->SetPalette(tdcPalette);
125 TEveQuadSet* qct = new AliEveT0Module("T0C_TDC", 1, digits); qct->SetPalette(tdcPalette);
127 Float_t angle = 2 * TMath::Pi() / 12;
129 qa->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
130 qc->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
131 qat->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
132 qct->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
136 for (Int_t i=0; i<12; i++) {
137 Float_t x = 6.5 * TMath::Sin(i * angle);
138 Float_t y = 6.5 * TMath::Cos(i * angle);
140 qa->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
141 qa->QuadValue(ADC[i+12]);
142 // qa->QuadId(new TNamed(Form("PMT with idx=%d", i), "PMT's aplitude in side A."));
144 qat->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
145 qat->QuadValue(TDC[i+12]);
146 // qat->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's time in side A."));
148 qc->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
149 qc->QuadValue(ADC[i]);
150 // qc->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's amplitude in side C."));
152 qct->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
153 qct->QuadValue(TDC[i]);
154 // qct->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's time in side C."));
162 TEveTrans& ta = qa->RefHMTrans();
163 ta.SetPos(0, 0, 373);
164 TEveTrans& tc = qc->RefHMTrans();
165 tc.SetPos(0, 0, -69.7);
167 TEveTrans& tat = qat->RefHMTrans();
168 tat.SetPos(0, 0, 373);
169 TEveTrans& tct = qct->RefHMTrans();
170 tct.SetPos(0, 0, -69.7);
172 gEve->AddElement(qa);
173 gEve->AddElement(qc);
174 gEve->AddElement(qat);
175 gEve->AddElement(qct);
180 /******************************************************************************/
182 void AliEveT0Module::DigitSelected(Int_t idx)
184 // Override control-click from TEveQuadSet
186 DigitBase_t* qb = GetDigit(idx);
187 if (fSigType == 0) { //ADC
188 printf("adc====================\n");
189 Int_t besttimeright = fDigits->BestTimeA();
190 Int_t besttimeleft = fDigits->BestTimeC();
191 Int_t meantime = fDigits->MeanTime();
192 Int_t timediff = fDigits->TimeDiff();
193 Int_t summult = fDigits->SumMult();
195 printf("besttimeA=%3d\n",besttimeright);
196 printf("besttimeC=%3d\n",besttimeleft);
197 printf("meantime=%3d\n",meantime);
198 printf("timediff=%3d\n",timediff);
199 printf("summult=%3d\n",summult);
201 printf(" idx=%d, amplitude=%d\n", idx, qb->fValue);
205 printf("tdc====================\n");
207 Int_t besttimeright = fDigits->BestTimeA();
208 Int_t besttimeleft = fDigits->BestTimeC();
209 Int_t meantime = fDigits->MeanTime();
210 Int_t timediff = fDigits->TimeDiff();
211 Int_t summult = fDigits->SumMult();
213 printf("besttimeA=%3d\n",besttimeright);
214 printf("besttimeC=%3d\n",besttimeleft);
215 printf("meantime=%3d\n",meantime);
216 printf("timediff=%3d\n",timediff);
217 printf("summult=%3d\n",summult);
219 printf(" idx=%d, amplitude=%d\n", idx, qb->fValue);
222 printf("raw====================\n");
223 printf("besttimeA=%3d\n",fStart->GetData(51,0)-fStart->GetData(0,0));
224 printf("besttimeC=%3d\n",fStart->GetData(52,0)-fStart->GetData(0,0));
225 printf("meantime=%3d\n",fStart->GetData(49,0)-fStart->GetData(0,0));
226 printf("amplitude= %3d\n",fStart->GetData(idx+1,0));
228 printf(" idx=%d, time %d\n", idx, qb->fValue);
231 printf("raw====================\n");
232 printf("besttimeA=%3d\n",fStart->GetData(51,0)-fStart->GetData(0,0));
233 printf("besttimeC=%3d\n",fStart->GetData(52,0)-fStart->GetData(0,0));
234 printf("meantime=%3d\n",fStart->GetData(49,0)-fStart->GetData(0,0));
235 printf("amplitude= %3d\n",fStart->GetData(idx+13,0));
237 printf(" idx=%d, time %d\n", idx, qb->fValue);