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