]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/EveDet/AliEveT0Module.cxx
Replace AliEveEventManager token with Event where it was done by a runaway regexp...
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveT0Module.cxx
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          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 //////////////////////////////////////////////////////////////////////////
11 //                                                                      //
12 // The main AliEVE drawing module for the T0 detector                   //
13 //                                                                      //
14 //////////////////////////////////////////////////////////////////////////
15
16 #include "AliEveT0Module.h"
17
18 #include <EveBase/AliEveEventManager.h>
19
20 #include <AliT0digit.h>
21 #include <AliRawReader.h>
22 #include <AliRawReaderFile.h>
23 #include <AliRawReaderDate.h>
24 #include <AliRawReaderRoot.h>
25 #include <AliT0RawReader.h>
26 #include <AliCDBManager.h>
27 #include <AliCDBStorage.h>
28
29 #include <TArrayI.h>
30 #include <TStyle.h>
31 #include <TMath.h>
32 #include <TRandom.h>
33 #include <TEveManager.h>
34
35
36 ClassImp(AliEveT0Module)
37
38 /******************************************************************************/
39 AliEveT0Module::AliEveT0Module(const Text_t* n, Int_t sigType, AliT0digit *digits, AliT0RawReader *start)
40   : TEveQuadSet(n), fSigType(sigType), fDigits(digits), fStart(start)
41 {
42   //
43   // Default constructor
44   //
45
46 }
47
48 /******************************************************************************/
49 AliEveT0Module::~AliEveT0Module()
50 {
51
52 }
53
54 void AliEveT0Module::LoadRaw(TString fileName, Int_t ievt)
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];
62   TRandom r(0);
63   //  cout<<ievt<<endl;
64   TEveRGBAPalette* rawPalette  = new TEveRGBAPalette(0, 3000);
65   rawPalette->SetLimits(1, 3000); // Set proper raw time range.
66   TEveQuadSet* raw_a = new AliEveT0Module("T0_RAW_A", 2,digits, start); raw_a->SetPalette(rawPalette);
67   raw_a->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
68   TEveQuadSet* raw_c = new AliEveT0Module("T0_RAW_C", 3,digits, start); raw_c->SetPalette(rawPalette);
69   raw_c->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
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       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();
93
94   TEveTrans& ta_a = raw_a->RefHMTrans();
95   ta_a.SetPos(0, 0, 373);
96   TEveTrans& tc_c = raw_c->RefHMTrans();
97   tc_c.SetPos(0, 0, -69.7);
98
99   gEve->AddElement(raw_a);
100   gEve->AddElement(raw_c);
101   gEve->Redraw3D();
102 }
103
104 /******************************************************************************/
105 void AliEveT0Module::MakeModules(AliT0digit *digits)
106 {
107   TRandom r(0);
108   TArrayI ADC(24);
109   TArrayI TDC(24);
110
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
118   TEveRGBAPalette* adcPalette  = new TEveRGBAPalette(5, 1024);
119   adcPalette->SetLimits(1, 1024); // Set proper ADC range.
120   TEveRGBAPalette* tdcPalette  = new TEveRGBAPalette(0, 9999);
121   tdcPalette->SetLimits(1, 9999); // Set proper TDC range.
122
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);
127
128   Float_t angle  = 2 * TMath::Pi() / 12;
129
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);
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."));
148
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
163   TEveTrans& ta = qa->RefHMTrans();
164   ta.SetPos(0, 0, 373);
165   TEveTrans& tc = qc->RefHMTrans();
166   tc.SetPos(0, 0, -69.7);
167
168   TEveTrans& tat = qat->RefHMTrans();
169   tat.SetPos(0, 0, 373);
170   TEveTrans& tct = qct->RefHMTrans();
171   tct.SetPos(0, 0, -69.7);
172
173   gEve->AddElement(qa);
174   gEve->AddElement(qc);
175   gEve->AddElement(qat);
176   gEve->AddElement(qct);
177
178   gEve->Redraw3D();
179 }
180
181 /******************************************************************************/
182
183 void AliEveT0Module::DigitSelected(Int_t idx)
184 {
185   // Override control-click from TEveQuadSet
186
187   DigitBase_t* qb   = GetDigit(idx);
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
204   }
205   if (fSigType == 1) {
206     printf("tdc====================\n");
207
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));
228
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));
237
238     printf("  idx=%d, time %d\n",  idx, qb->fValue);
239   }
240
241 }