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)
13 #include "AliEMCALGeometry.h"
14 #include "AliEveEMCALSModuleData.h"
21 class AliEveEventManager;
23 ClassImp(AliEveEMCALSModuleData)
25 Float_t AliEveEMCALSModuleData::fgSModuleBigBox0 = 0.;
26 Float_t AliEveEMCALSModuleData::fgSModuleBigBox1 = 0.;
27 Float_t AliEveEMCALSModuleData::fgSModuleBigBox2 = 0.;
28 Float_t AliEveEMCALSModuleData::fgSModuleSmallBox0 = 0.;
29 Float_t AliEveEMCALSModuleData::fgSModuleSmallBox1 = 0.;
30 Float_t AliEveEMCALSModuleData::fgSModuleSmallBox2 = 0.;
31 Float_t AliEveEMCALSModuleData::fgSModuleCenter0 = 0.;
32 Float_t AliEveEMCALSModuleData::fgSModuleCenter1 = 0.;
33 Float_t AliEveEMCALSModuleData::fgSModuleCenter2 = 0.;
35 //______________________________________________________________________________
36 AliEveEMCALSModuleData::AliEveEMCALSModuleData(Int_t sm,AliEMCALGeometry* geom, TGeoNode* node, TGeoHMatrix* m) :
47 fPhiTileSize(0), fEtaTileSize(0),
62 //______________________________________________________________________________
63 AliEveEMCALSModuleData::AliEveEMCALSModuleData(const AliEveEMCALSModuleData &esmdata) :
69 fNsmfull(esmdata.fNsmfull),
70 fNsmhalf(esmdata.fNsmhalf),
71 fNDigits(esmdata.fNDigits),
72 fNClusters(esmdata.fNClusters),
73 fNHits(esmdata.fNHits),
74 fPhiTileSize(esmdata.fPhiTileSize), fEtaTileSize(esmdata.fEtaTileSize),
75 fHitArray(esmdata.fHitArray),
76 fDigitArray(esmdata.fDigitArray),
77 fClusterArray(esmdata.fClusterArray),
78 fMatrix(esmdata.fMatrix),
79 fHMatrix(esmdata.fHMatrix)
89 //______________________________________________________________________________
90 AliEveEMCALSModuleData::~AliEveEMCALSModuleData()
96 if(!fHitArray.empty()){
99 if(!fDigitArray.empty()){
102 if(!fClusterArray.empty()){
103 fClusterArray.clear();
108 //______________________________________________________________________________
109 void AliEveEMCALSModuleData::DropData()
112 // Release the SM data
119 if(!fHitArray.empty())
122 if(!fDigitArray.empty())
125 if(!fClusterArray.empty())
126 fClusterArray.clear();
132 // ______________________________________________________________________________
133 void AliEveEMCALSModuleData::Init(Int_t sm)
137 // Initialize parameters
144 fPhiTileSize = fGeom->GetPhiTileSize();
145 fEtaTileSize = fGeom->GetPhiTileSize();
147 TGeoBBox* bbbox = (TGeoBBox*) fNode->GetDaughter(0) ->GetVolume()->GetShape();
148 TGeoBBox* sbbox = (TGeoBBox*) fNode->GetDaughter(10)->GetVolume()->GetShape();
150 fMatrix = (TGeoMatrix*) fNode->GetDaughter(sm)->GetMatrix();
154 fgSModuleBigBox0 = bbbox->GetDX();
155 fgSModuleBigBox1 = bbbox->GetDY();
156 fgSModuleBigBox2 = bbbox->GetDZ();
160 fgSModuleSmallBox0 = sbbox->GetDX();
161 fgSModuleSmallBox1 = sbbox->GetDY();
162 fgSModuleSmallBox2 = sbbox->GetDZ();
167 // ______________________________________________________________________________
168 void AliEveEMCALSModuleData::RegisterDigit(Int_t AbsId, Int_t isupMod, Double_t iamp, Double_t ix, Double_t iy, Double_t iz)
171 // Add a digit to this SM
174 std::vector<Double_t> bufDig(6);
182 fDigitArray.push_back(bufDig);
188 // ______________________________________________________________________________
189 void AliEveEMCALSModuleData::RegisterHit(Int_t AbsId, Int_t isupMod, Double_t iamp, Double_t ix, Double_t iy, Double_t iz)
192 // Add a hit to this SM
195 std::vector<Float_t> bufHit(6);
203 fHitArray.push_back(bufHit);
209 // ______________________________________________________________________________
210 void AliEveEMCALSModuleData::RegisterCluster(Int_t isupMod, Double_t iamp, Double_t ix, Double_t iy, Double_t iz)
213 // Add a cluster to this SM
216 std::vector<Double_t> bufClu(5);
223 fClusterArray.push_back(bufClu);