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>
12 #include "AliEveEMCALSModuleData.h"
14 #include <AliEMCALGeometry.h>
18 #include <TClonesArray.h>
21 #include <TGeoMatrix.h>
23 #include <EveBase/AliEveEventManager.h>
25 ClassImp(AliEveEMCALSModuleData)
27 Float_t AliEveEMCALSModuleData::fSModuleBigBox0 = 0.;
28 Float_t AliEveEMCALSModuleData::fSModuleBigBox1 = 0.;
29 Float_t AliEveEMCALSModuleData::fSModuleBigBox2 = 0.;
30 Float_t AliEveEMCALSModuleData::fSModuleSmallBox0 = 0.;
31 Float_t AliEveEMCALSModuleData::fSModuleSmallBox1 = 0.;
32 Float_t AliEveEMCALSModuleData::fSModuleSmallBox2 = 0.;
33 Float_t AliEveEMCALSModuleData::fSModuleCenter0 = 0.;
34 Float_t AliEveEMCALSModuleData::fSModuleCenter1 = 0.;
35 Float_t AliEveEMCALSModuleData::fSModuleCenter2 = 0.;
37 //______________________________________________________________________________
38 AliEveEMCALSModuleData::AliEveEMCALSModuleData(Int_t sm,AliEMCALGeometry* geom, TGeoNode* node, TGeoHMatrix* m) :
49 fPhiTileSize(0), fEtaTileSize(0),
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 fPhiTileSize(esmdata.fPhiTileSize), fEtaTileSize(esmdata.fEtaTileSize),
77 fHitArray(esmdata.fHitArray),
78 fDigitArray(esmdata.fDigitArray),
79 fClusterArray(esmdata.fClusterArray),
80 fMatrix(esmdata.fMatrix),
81 fHMatrix(esmdata.fHMatrix)
91 //______________________________________________________________________________
92 AliEveEMCALSModuleData::~AliEveEMCALSModuleData()
98 if(!fHitArray.empty()){
101 if(!fDigitArray.empty()){
104 if(!fClusterArray.empty()){
105 fClusterArray.clear();
110 //______________________________________________________________________________
111 void AliEveEMCALSModuleData::DropData()
114 // Release the SM data
121 if(!fHitArray.empty())
124 if(!fDigitArray.empty())
127 if(!fClusterArray.empty())
128 fClusterArray.clear();
134 // ______________________________________________________________________________
135 void AliEveEMCALSModuleData::Init(Int_t sm)
139 // Initialize parameters
146 fPhiTileSize = fGeom->GetPhiTileSize();
147 fEtaTileSize = fGeom->GetPhiTileSize();
149 TGeoBBox* bbbox = (TGeoBBox*) fNode->GetDaughter(0) ->GetVolume()->GetShape();
151 TGeoBBox* sbbox = (TGeoBBox*) fNode->GetDaughter(10)->GetVolume()->GetShape();
154 fMatrix = (TGeoMatrix*) fNode->GetDaughter(sm)->GetMatrix();
158 fSModuleBigBox0 = bbbox->GetDX();
159 fSModuleBigBox1 = bbbox->GetDY();
160 fSModuleBigBox2 = bbbox->GetDZ();
164 fSModuleSmallBox0 = sbbox->GetDX();
165 fSModuleSmallBox1 = sbbox->GetDY();
166 fSModuleSmallBox2 = sbbox->GetDZ();
171 // ______________________________________________________________________________
172 void AliEveEMCALSModuleData::RegisterDigit(Int_t AbsId, Int_t isupMod, Double_t iamp, Double_t ix, Double_t iy, Double_t iz)
175 // Add a digit to this SM
178 std::vector<Double_t> bufDig(6);
186 fDigitArray.push_back(bufDig);
192 // ______________________________________________________________________________
193 void AliEveEMCALSModuleData::RegisterHit(Int_t AbsId, Int_t isupMod, Double_t iamp, Double_t ix, Double_t iy, Double_t iz)
196 // Add a hit to this SM
199 std::vector<Float_t> bufHit(6);
207 fHitArray.push_back(bufHit);
213 // ______________________________________________________________________________
214 void AliEveEMCALSModuleData::RegisterCluster(Int_t isupMod, Double_t iamp, Double_t ix, Double_t iy, Double_t iz)
217 // Add a cluster to this SM
220 std::vector<Double_t> bufClu(5);
227 fClusterArray.push_back(bufClu);