]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/EveDet/AliEveEMCALSModuleData.cxx
From Magali Estienne.
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveEMCALSModuleData.cxx
1 //*************************************************************************
2 // EMCAL event display
3 // Store the data related to each Super Module (SM)
4 // Possible storage of hits, digits and clusters per SM
5 //
6 //  Author: Magali Estienne (magali.estienne@cern.ch)
7 //  June 30 2008
8 //*************************************************************************
9
10 #include <Riostream.h>
11 #include <vector>
12
13 #include "AliEveEMCALSModuleData.h"
14
15 #include <AliEMCALGeometry.h>
16
17 #include <TVector2.h>
18 #include <TVectorT.h>
19 #include <TClonesArray.h>
20 #include <TGeoNode.h>
21 #include <TGeoBBox.h>
22 #include <TGeoMatrix.h>
23
24 #include <EveBase/AliEveEventManager.h>
25
26 ///////////////////////////////////////////////////////////////////////////////
27 ///
28 /// AliEveEMCALSModuleData: geometry and digits
29 ///
30 ///////////////////////////////////////////////////////////////////////////////
31
32
33 ClassImp(AliEveEMCALSModuleData)
34
35 Float_t AliEveEMCALSModuleData::fSModuleBigBox0 = 0.;
36 Float_t AliEveEMCALSModuleData::fSModuleBigBox1 = 0.;
37 Float_t AliEveEMCALSModuleData::fSModuleBigBox2 = 0.;
38 Float_t AliEveEMCALSModuleData::fSModuleSmallBox0 = 0.;
39 Float_t AliEveEMCALSModuleData::fSModuleSmallBox1 = 0.;
40 Float_t AliEveEMCALSModuleData::fSModuleSmallBox2 = 0.;
41 Float_t AliEveEMCALSModuleData::fSModuleCenter0 = 0.;
42 Float_t AliEveEMCALSModuleData::fSModuleCenter1 = 0.;
43 Float_t AliEveEMCALSModuleData::fSModuleCenter2 = 0.;
44
45 //______________________________________________________________________________
46 AliEveEMCALSModuleData::AliEveEMCALSModuleData(Int_t sm,AliEMCALGeometry* geom, TGeoNode* node, TGeoHMatrix* m) :
47   TObject(),
48   fGeom(geom),
49   fNode(node),
50   fSmId(sm),
51   fNsm(0),
52   fNsmfull(0),
53   fNsmhalf(0),
54   fNDigits(0),
55   fNClusters(0),
56   fNHits(0),
57   fHitArray(0),
58   fDigitArray(0),
59   fClusterArray(0),
60   fMatrix(0),
61   fHMatrix(m)
62 {
63   //
64   // constructor
65   //
66
67   Init(sm);
68
69 }
70
71 //______________________________________________________________________________
72   AliEveEMCALSModuleData::AliEveEMCALSModuleData(const AliEveEMCALSModuleData &esmdata) :
73   TObject(),
74   fGeom(esmdata.fGeom),
75   fNode(esmdata.fNode),
76   fSmId(esmdata.fSmId),
77   fNsm(esmdata.fNsm),
78   fNsmfull(esmdata.fNsmfull),
79   fNsmhalf(esmdata.fNsmhalf),
80   fNDigits(esmdata.fNDigits),
81   fNClusters(esmdata.fNClusters),
82   fNHits(esmdata.fNHits),
83   fHitArray(esmdata.fHitArray),
84   fDigitArray(esmdata.fDigitArray),
85   fClusterArray(esmdata.fClusterArray),
86   fMatrix(esmdata.fMatrix),
87   fHMatrix(esmdata.fHMatrix)
88 {
89   //
90   // constructor
91   //
92
93   Init(esmdata.fNsm);
94
95 }
96
97 //______________________________________________________________________________
98 AliEveEMCALSModuleData::~AliEveEMCALSModuleData()
99 {
100   //
101   // destructor
102   //
103
104   if(!fHitArray.empty()){
105     fHitArray.clear();
106   }
107   if(!fDigitArray.empty()){
108     fDigitArray.clear();
109   }
110   if(!fClusterArray.empty()){
111     fClusterArray.clear();
112   }
113
114 }
115
116 //______________________________________________________________________________
117 void AliEveEMCALSModuleData::DropData()
118 {
119   //
120   // release the sm data
121   //
122
123   fNDigits   = 0;
124   fNClusters = 0;
125   fNHits     = 0;
126
127   if(!fHitArray.empty())
128     fHitArray.clear();
129
130   if(!fDigitArray.empty())
131     fDigitArray.clear();
132
133   if(!fClusterArray.empty())
134     fClusterArray.clear();
135
136   return;
137
138 }
139
140 // ______________________________________________________________________________
141 void AliEveEMCALSModuleData::Init(Int_t sm)
142 {
143   fNsm = 12;
144   fNsmfull = 10;
145   fNsmhalf = 2;
146
147   fPhiTileSize = fGeom->GetPhiTileSize();
148   fEtaTileSize = fGeom->GetPhiTileSize();
149
150   TGeoBBox* bbbox = (TGeoBBox*) fNode->GetDaughter(0) ->GetVolume()->GetShape();
151   bbbox->Dump();
152   TGeoBBox* sbbox = (TGeoBBox*) fNode->GetDaughter(10)->GetVolume()->GetShape();
153   sbbox->Dump();
154
155   fMatrix = (TGeoMatrix*) fNode->GetDaughter(sm)->GetMatrix();
156
157   if(sm<fNsmfull)
158     {
159       fSModuleBigBox0 = bbbox->GetDX();
160       fSModuleBigBox1 = bbbox->GetDY();
161       fSModuleBigBox2 = bbbox->GetDZ();
162     }
163   else 
164     {
165       fSModuleSmallBox0 = sbbox->GetDX();
166       fSModuleSmallBox1 = sbbox->GetDY();
167       fSModuleSmallBox2 = sbbox->GetDZ();
168     }
169 }
170
171
172 // ______________________________________________________________________________
173 void AliEveEMCALSModuleData::RegisterDigit(Int_t AbsId, Int_t isupMod, Float_t iamp, Float_t ix, Float_t iy, Float_t iz)
174 {
175   //
176   // add a digit to this sm
177   //
178
179   vector<Float_t> bufDig(6);
180   bufDig[0] = AbsId;
181   bufDig[1] = isupMod;
182   bufDig[2] = iamp;
183   bufDig[3] = ix;
184   bufDig[4] = iy;
185   bufDig[5] = iz;
186
187   cout << "bufDig[0]: " <<  bufDig[0] << ", bufDig[1]: " <<  bufDig[1] << ", bufDig[2]: " <<  bufDig[2] <<
188     ", bufDig[3]: " <<  bufDig[3] << ", bufDig[4]: " <<  bufDig[4] << ", bufDig[5]: " <<  bufDig[5] << endl;
189
190   fDigitArray.push_back(bufDig);
191
192   fNDigits++;
193
194 }
195
196 // ______________________________________________________________________________
197 void AliEveEMCALSModuleData::RegisterHit(Int_t AbsId, Int_t isupMod, Float_t iamp, Float_t ix, Float_t iy, Float_t iz)
198 {
199   //
200   // add a hit to this sm
201   //
202
203   vector<Float_t> bufHit(6);
204   bufHit[0] = AbsId;
205   bufHit[1] = isupMod;
206   bufHit[2] = iamp;
207   bufHit[3] = ix;
208   bufHit[4] = iy;
209   bufHit[5] = iz;
210
211   fHitArray.push_back(bufHit);
212
213   fNHits++;
214
215 }
216
217 // ______________________________________________________________________________
218 void AliEveEMCALSModuleData::RegisterCluster(Int_t isupMod, Float_t iamp, Float_t ix, Float_t iy, Float_t iz)
219 {
220   //
221   // add a cluster to this sm
222   //
223
224   vector<Float_t> bufClu(5);
225   bufClu[0] = isupMod;
226   bufClu[1] = iamp;
227   bufClu[2] = ix;
228   bufClu[3] = iy;
229   bufClu[4] = iz;
230
231   fClusterArray.push_back(bufClu);
232
233   fNClusters++;
234
235 }