]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/Alieve/AliEveT0Module.cxx
Put all classes in Alieve/ sub-module out of the Alieve namespace and
[u/mrichter/AliRoot.git] / EVE / Alieve / 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 // The main AliEVE drawing module for the T0 detector                   //
12 //                                                                      //
13 //////////////////////////////////////////////////////////////////////////
14  
15 #include "AliEveEventManager.h"
16 #include "AliEveT0Module.h"
17 #include <TStyle.h>
18 #include <TMath.h>
19 #include <TRandom.h>
20 #include <TEveManager.h>
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>
29 #include <AliCDBStorage.h> 
30
31
32
33 ClassImp(AliEveT0Module)
34
35 /**************************************************************************/
36 AliEveT0Module::AliEveT0Module(const Text_t* n, Int_t sigType, AliT0digit *digits, AliT0RawReader *start)
37   : TEveQuadSet(n), fSigType(sigType), fDigits(digits), fStart(start)
38 {
39   //
40   // Default constructor
41   //
42  
43 }
44
45 /**************************************************************************/
46 AliEveT0Module::~AliEveT0Module()
47 {
48
49 }
50
51 void AliEveT0Module::LoadRaw(TString fileName, Int_t ievt)
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];
59   TRandom r(0); 
60   //  cout<<ievt<<endl;
61   TEveRGBAPalette* rawPalette  = new TEveRGBAPalette(0, 3000);
62   rawPalette->SetLimits(1, 3000); // Set proper raw time range.
63   TEveQuadSet* raw_a = new AliEveT0Module("T0_RAW_A", 2,digits, start); raw_a->SetPalette(rawPalette);
64   raw_a->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
65   TEveQuadSet* raw_c = new AliEveT0Module("T0_RAW_C", 3,digits, start); raw_c->SetPalette(rawPalette);
66   raw_c->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
67   Float_t angle  = 2 * TMath::Pi() / 12; 
68   start->Next();
69   for (Int_t i=0; i<110; i++)
70   {
71     for (Int_t iHit=0; iHit<5; iHit++) 
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();
90   
91   TEveTrans& ta_a = raw_a->RefHMTrans();
92   ta_a.SetPos(0, 0, 373);
93   TEveTrans& tc_c = raw_c->RefHMTrans();
94   tc_c.SetPos(0, 0, -69.7);
95
96   gEve->AddElement(raw_a);
97   gEve->AddElement(raw_c);
98   gEve->Redraw3D();
99 }
100
101 /**************************************************************************/
102 void AliEveT0Module::MakeModules(AliT0digit *digits)
103 {
104   TRandom r(0); 
105   TArrayI ADC(24);
106   TArrayI TDC(24);
107   
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
115   TEveRGBAPalette* adcPalette  = new TEveRGBAPalette(5, 1024);
116   adcPalette->SetLimits(1, 1024); // Set proper ADC range.
117   TEveRGBAPalette* tdcPalette  = new TEveRGBAPalette(0, 9999);
118   tdcPalette->SetLimits(1, 9999); // Set proper TDC range.
119
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);
124
125   Float_t angle  = 2 * TMath::Pi() / 12;
126
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);
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."));
145  
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
160   TEveTrans& ta = qa->RefHMTrans();
161   ta.SetPos(0, 0, 373);
162   TEveTrans& tc = qc->RefHMTrans();
163   tc.SetPos(0, 0, -69.7);
164  
165   TEveTrans& tat = qat->RefHMTrans();
166   tat.SetPos(0, 0, 373);
167   TEveTrans& tct = qct->RefHMTrans();
168   tct.SetPos(0, 0, -69.7);
169  
170   gEve->AddElement(qa);
171   gEve->AddElement(qc);
172   gEve->AddElement(qat);
173   gEve->AddElement(qct);
174
175   gEve->Redraw3D();
176 }
177
178 /**************************************************************************/
179
180 void AliEveT0Module::DigitSelected(Int_t idx)
181 {
182   // Override control-click from TEveQuadSet
183
184   DigitBase_t* qb   = GetDigit(idx);
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
201   } 
202   if (fSigType == 1) {
203     printf("tdc====================\n");
204  
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));
225   
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));
234    
235     printf("  idx=%d, time %d\n",  idx, qb->fValue);
236   }
237
238 }