]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveT0Module.cxx
From Alexey:
[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/******************************************************************************/
d810d0de 38AliEveT0Module::AliEveT0Module(const Text_t* n, Int_t sigType, AliT0digit *digits, AliT0RawReader *start)
84aff7a4 39 : TEveQuadSet(n), fSigType(sigType), fDigits(digits), fStart(start)
03916485 40{
41 //
42 // Default constructor
43 //
03916485 44}
45
57ffa5fb 46/******************************************************************************/
03916485 47
d810d0de 48void AliEveT0Module::LoadRaw(TString fileName, Int_t ievt)
03916485 49{
a15e6d7d 50 // Load raw-data from file.
51
03916485 52 AliT0digit *digits = 0;
53 AliRawReader *reader = new AliRawReaderRoot(fileName,ievt);
54 reader->LoadEquipmentIdsMap("T0map.txt");
55 reader->RequireHeader(kTRUE);
56 AliT0RawReader *start = new AliT0RawReader(reader);
57 Int_t allData[110][5];
51346b82 58 TRandom r(0);
03916485 59 // cout<<ievt<<endl;
84aff7a4 60 TEveRGBAPalette* rawPalette = new TEveRGBAPalette(0, 3000);
cff55d04 61 TEveRGBAPalette* vertexPalette = new TEveRGBAPalette(-100, 100);
62
03916485 63 rawPalette->SetLimits(1, 3000); // Set proper raw time range.
a15e6d7d 64 TEveQuadSet* rawA = new AliEveT0Module("T0_RAW_A", 2, digits, start);
65 rawA->SetPalette(rawPalette);
66 rawA->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
67 TEveQuadSet* rawC = new AliEveT0Module("T0_RAW_C", 3, digits, start);
68 rawC->SetPalette(rawPalette);
69 rawC->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
cff55d04 70
71 TEveQuadSet* vertexT0 = new AliEveT0Module("T0_Vertex", 5, digits, start);
72 vertexT0->SetPalette(vertexPalette);
73 vertexT0->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
74
51346b82 75 Float_t angle = 2 * TMath::Pi() / 12;
03916485 76 start->Next();
77 for (Int_t i=0; i<110; i++)
78 {
51346b82 79 for (Int_t iHit=0; iHit<5; iHit++)
03916485 80 {
81 allData[i][iHit]= start->GetData(i,iHit);
a15e6d7d 82 if (allData[i][iHit] != 0) {
83 using namespace std;
84 cout <<"event"<< ievt <<" i "<< i <<" "<< allData[i][iHit] - allData[0][0] <<endl;
85 }
03916485 86 }
87 }
cff55d04 88 Float_t zvertex= (allData[51][0] - allData[52][0])/2*25*2.99752/100;
89 using namespace std;
90 cout<<"zvertex= "<< zvertex <<endl;
03916485 91 for (Int_t i=0; i<12; i++)
92 {
93 Float_t x = 6.5 * TMath::Sin(i * angle);
94 Float_t y = 6.5 * TMath::Cos(i * angle);
a15e6d7d 95 rawA->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
96 rawA->QuadValue(start->GetData(i+37,0)-start->GetData(0,0));
97 rawC->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
98 rawC->QuadValue(start->GetData(i+25,0)-start->GetData(0,0));
03916485 99 }
cff55d04 100 vertexT0->AddHexagon(0.0, 0.0, 0.0, 1.0);
101 vertexT0->QuadValue(zvertex);
03916485 102
a15e6d7d 103 rawA->RefitPlex();
104 rawC->RefitPlex();
cff55d04 105 vertexT0->RefitPlex();
03916485 106
a15e6d7d 107 TEveTrans& taA = rawA->RefMainTrans();
108 taA.SetPos(0, 0, 373);
109 TEveTrans& tcC = rawC->RefMainTrans();
110 tcC.SetPos(0, 0, -69.7);
03916485 111
cff55d04 112 TEveTrans& tver = vertexT0->RefMainTrans();
113 tver.SetPos(0, 0, zvertex);
114
a15e6d7d 115 gEve->AddElement(rawA);
116 gEve->AddElement(rawC);
cff55d04 117 gEve->AddElement(vertexT0);
84aff7a4 118 gEve->Redraw3D();
03916485 119}
120
57ffa5fb 121/******************************************************************************/
a15e6d7d 122
d810d0de 123void AliEveT0Module::MakeModules(AliT0digit *digits)
03916485 124{
a15e6d7d 125 // Make modules for digits.
126
51346b82 127 TRandom r(0);
a15e6d7d 128 TArrayI adc(24);
129 TArrayI tdc(24);
51346b82 130
a15e6d7d 131 digits->GetQT1(adc);
132 digits->GetTimeCFD(tdc);
03916485 133 // printf("%3d\n",besttimeright);
134 for (Int_t i=0;i<24; i++){
a15e6d7d 135 printf("%3d %3d\n ",adc[i], tdc[i]);
03916485 136 }
137
84aff7a4 138 TEveRGBAPalette* adcPalette = new TEveRGBAPalette(5, 1024);
03916485 139 adcPalette->SetLimits(1, 1024); // Set proper ADC range.
84aff7a4 140 TEveRGBAPalette* tdcPalette = new TEveRGBAPalette(0, 9999);
03916485 141 tdcPalette->SetLimits(1, 9999); // Set proper TDC range.
142
d810d0de 143 TEveQuadSet* qa = new AliEveT0Module("T0A_ADC", 0, digits); qa->SetPalette(adcPalette);
144 TEveQuadSet* qc = new AliEveT0Module("T0C_ADC", 0, digits); qc->SetPalette(adcPalette);
145 TEveQuadSet* qat = new AliEveT0Module("T0A_TDC", 1, digits); qat->SetPalette(tdcPalette);
146 TEveQuadSet* qct = new AliEveT0Module("T0C_TDC", 1, digits); qct->SetPalette(tdcPalette);
03916485 147
148 Float_t angle = 2 * TMath::Pi() / 12;
149
84aff7a4 150 qa->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
151 qc->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
152 qat->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
153 qct->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
03916485 154
03916485 155 for (Int_t i=0; i<12; i++) {
156 Float_t x = 6.5 * TMath::Sin(i * angle);
157 Float_t y = 6.5 * TMath::Cos(i * angle);
158
159 qa->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
a15e6d7d 160 qa->QuadValue(adc[i+12]);
03916485 161 // qa->QuadId(new TNamed(Form("PMT with idx=%d", i), "PMT's aplitude in side A."));
162
163 qat->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
a15e6d7d 164 qat->QuadValue(tdc[i+12]);
03916485 165 // qat->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's time in side A."));
51346b82 166
03916485 167 qc->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
a15e6d7d 168 qc->QuadValue(adc[i]);
03916485 169 // qc->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's amplitude in side C."));
170
171 qct->AddHexagon(x, y, r.Uniform(-0.1, 0.1), 1.0);
a15e6d7d 172 qct->QuadValue(tdc[i]);
03916485 173 // qct->QuadId(new TNamed(Form("Quad with idx=%d", i), "PMT's time in side C."));
174 }
175
176 qa->RefitPlex();
177 qc->RefitPlex();
178 qat->RefitPlex();
179 qct->RefitPlex();
180
a15e6d7d 181 TEveTrans& ta = qa->RefMainTrans();
03916485 182 ta.SetPos(0, 0, 373);
a15e6d7d 183 TEveTrans& tc = qc->RefMainTrans();
03916485 184 tc.SetPos(0, 0, -69.7);
51346b82 185
a15e6d7d 186 TEveTrans& tat = qat->RefMainTrans();
03916485 187 tat.SetPos(0, 0, 373);
a15e6d7d 188 TEveTrans& tct = qct->RefMainTrans();
03916485 189 tct.SetPos(0, 0, -69.7);
51346b82 190
84aff7a4 191 gEve->AddElement(qa);
192 gEve->AddElement(qc);
193 gEve->AddElement(qat);
194 gEve->AddElement(qct);
03916485 195
84aff7a4 196 gEve->Redraw3D();
03916485 197}
198
57ffa5fb 199/******************************************************************************/
03916485 200
d810d0de 201void AliEveT0Module::DigitSelected(Int_t idx)
03916485 202{
84aff7a4 203 // Override control-click from TEveQuadSet
03916485 204
84aff7a4 205 DigitBase_t* qb = GetDigit(idx);
03916485 206 if (fSigType == 0) { //ADC
207 printf("adc====================\n");
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
51346b82 222 }
03916485 223 if (fSigType == 1) {
224 printf("tdc====================\n");
51346b82 225
03916485 226 Int_t besttimeright = fDigits->BestTimeA();
227 Int_t besttimeleft = fDigits->BestTimeC();
228 Int_t meantime = fDigits->MeanTime();
229 Int_t timediff = fDigits->TimeDiff();
230 Int_t summult = fDigits->SumMult();
231
232 printf("besttimeA=%3d\n",besttimeright);
233 printf("besttimeC=%3d\n",besttimeleft);
234 printf("meantime=%3d\n",meantime);
235 printf("timediff=%3d\n",timediff);
236 printf("summult=%3d\n",summult);
237
238 printf(" idx=%d, amplitude=%d\n", idx, qb->fValue);
239 }
240 if (fSigType == 2) {
241 printf("raw====================\n");
242 printf("besttimeA=%3d\n",fStart->GetData(51,0)-fStart->GetData(0,0));
243 printf("besttimeC=%3d\n",fStart->GetData(52,0)-fStart->GetData(0,0));
244 printf("meantime=%3d\n",fStart->GetData(49,0)-fStart->GetData(0,0));
245 printf("amplitude= %3d\n",fStart->GetData(idx+1,0));
51346b82 246
03916485 247 printf(" idx=%d, time %d\n", idx, qb->fValue);
248 }
249 if (fSigType == 3) {
250 printf("raw====================\n");
251 printf("besttimeA=%3d\n",fStart->GetData(51,0)-fStart->GetData(0,0));
252 printf("besttimeC=%3d\n",fStart->GetData(52,0)-fStart->GetData(0,0));
253 printf("meantime=%3d\n",fStart->GetData(49,0)-fStart->GetData(0,0));
254 printf("amplitude= %3d\n",fStart->GetData(idx+13,0));
51346b82 255
03916485 256 printf(" idx=%d, time %d\n", idx, qb->fValue);
257 }
cff55d04 258if (fSigType == 5) {
259
260 printf("vertex====================\n");
261 printf(" idx=%d, zvertex pozition %d\n", idx, qb->fValue);
262
263 }
264
03916485 265
266}