1 //*************************************************************************
3 // Store the data related to each Super Module (SM)
4 // Possible storage of hits, digits and clusters per SM
6 // Author: Magali Estienne (magali.estienne@cern.ch)
8 //*************************************************************************
10 #include <Riostream.h>
13 #include "AliEveEMCALSModuleData.h"
15 #include <AliEMCALGeometry.h>
19 #include <TClonesArray.h>
22 #include <TGeoMatrix.h>
24 #include <EveBase/AliEveEventManager.h>
26 ClassImp(AliEveEMCALSModuleData)
28 Float_t AliEveEMCALSModuleData::fSModuleBigBox0 = 0.;
29 Float_t AliEveEMCALSModuleData::fSModuleBigBox1 = 0.;
30 Float_t AliEveEMCALSModuleData::fSModuleBigBox2 = 0.;
31 Float_t AliEveEMCALSModuleData::fSModuleSmallBox0 = 0.;
32 Float_t AliEveEMCALSModuleData::fSModuleSmallBox1 = 0.;
33 Float_t AliEveEMCALSModuleData::fSModuleSmallBox2 = 0.;
34 Float_t AliEveEMCALSModuleData::fSModuleCenter0 = 0.;
35 Float_t AliEveEMCALSModuleData::fSModuleCenter1 = 0.;
36 Float_t AliEveEMCALSModuleData::fSModuleCenter2 = 0.;
38 //______________________________________________________________________________
39 AliEveEMCALSModuleData::AliEveEMCALSModuleData(Int_t sm,AliEMCALGeometry* geom, TGeoNode* node, TGeoHMatrix* m) :
64 //______________________________________________________________________________
65 AliEveEMCALSModuleData::AliEveEMCALSModuleData(const AliEveEMCALSModuleData &esmdata) :
71 fNsmfull(esmdata.fNsmfull),
72 fNsmhalf(esmdata.fNsmhalf),
73 fNDigits(esmdata.fNDigits),
74 fNClusters(esmdata.fNClusters),
75 fNHits(esmdata.fNHits),
76 fHitArray(esmdata.fHitArray),
77 fDigitArray(esmdata.fDigitArray),
78 fClusterArray(esmdata.fClusterArray),
79 fMatrix(esmdata.fMatrix),
80 fHMatrix(esmdata.fHMatrix)
90 //______________________________________________________________________________
91 AliEveEMCALSModuleData::~AliEveEMCALSModuleData()
97 if(!fHitArray.empty()){
100 if(!fDigitArray.empty()){
103 if(!fClusterArray.empty()){
104 fClusterArray.clear();
109 //______________________________________________________________________________
110 void AliEveEMCALSModuleData::DropData()
113 // Release the SM data
120 if(!fHitArray.empty())
123 if(!fDigitArray.empty())
126 if(!fClusterArray.empty())
127 fClusterArray.clear();
133 // ______________________________________________________________________________
134 void AliEveEMCALSModuleData::Init(Int_t sm)
138 // Initialize parameters
145 fPhiTileSize = fGeom->GetPhiTileSize();
146 fEtaTileSize = fGeom->GetPhiTileSize();
148 TGeoBBox* bbbox = (TGeoBBox*) fNode->GetDaughter(0) ->GetVolume()->GetShape();
150 TGeoBBox* sbbox = (TGeoBBox*) fNode->GetDaughter(10)->GetVolume()->GetShape();
153 fMatrix = (TGeoMatrix*) fNode->GetDaughter(sm)->GetMatrix();
157 fSModuleBigBox0 = bbbox->GetDX();
158 fSModuleBigBox1 = bbbox->GetDY();
159 fSModuleBigBox2 = bbbox->GetDZ();
163 fSModuleSmallBox0 = sbbox->GetDX();
164 fSModuleSmallBox1 = sbbox->GetDY();
165 fSModuleSmallBox2 = sbbox->GetDZ();
170 // ______________________________________________________________________________
171 void AliEveEMCALSModuleData::RegisterDigit(Int_t AbsId, Int_t isupMod, Double_t iamp, Double_t ix, Double_t iy, Double_t iz)
174 // Add a digit to this SM
177 vector<Double_t> bufDig(6);
185 fDigitArray.push_back(bufDig);
191 // ______________________________________________________________________________
192 void AliEveEMCALSModuleData::RegisterHit(Int_t AbsId, Int_t isupMod, Double_t iamp, Double_t ix, Double_t iy, Double_t iz)
195 // Add a hit to this SM
198 vector<Float_t> bufHit(6);
206 fHitArray.push_back(bufHit);
212 // ______________________________________________________________________________
213 void AliEveEMCALSModuleData::RegisterCluster(Int_t isupMod, Double_t iamp, Double_t ix, Double_t iy, Double_t iz)
216 // Add a cluster to this SM
219 vector<Double_t> bufClu(5);
226 fClusterArray.push_back(bufClu);