+ for (Int_t i = 0; i < fMaxTrack; i++)
+ fDETracksList[i] = 0;
+ for (Int_t i = 0; i < fMaxParent; i++) {
+ fParentsList[i] = -1;
+ fDEParentsList[i] = 0;
+ }
+
+ fGeomPtr = AliEMCALGeometry::GetInstance();
+ fLambda[0] = 0;
+ fLambda[1] = 0;
+}
+
+//____________________________________________________________________________
+AliEMCALRecPoint::AliEMCALRecPoint(const AliEMCALRecPoint & rp)
+ : AliCluster(rp), fGeomPtr(rp.fGeomPtr),
+ fAmp(rp.fAmp), fIndexInList(rp.fIndexInList),
+ fGlobPos(rp.fGlobPos),fLocPos(rp.fLocPos),
+ fMaxDigit(rp.fMaxDigit), fMulDigit(rp.fMulDigit),
+ fMaxTrack(rp.fMaxTrack), fMulTrack(rp.fMaxTrack),
+ fDigitsList(new Int_t[rp.fMaxDigit]), fTracksList(new Int_t[rp.fMaxTrack]),
+ fClusterType(rp.fClusterType), fCoreEnergy(rp.fCoreEnergy),
+ fDispersion(rp.fDispersion),
+ fEnergyList(new Float_t[rp.fMaxDigit]), fTimeList(new Float_t[rp.fMaxDigit]),
+ fAbsIdList(new Int_t[rp.fMaxDigit]), fTime(rp.fTime), fNExMax(rp.fNExMax),fCoreRadius(rp.fCoreRadius),
+ fDETracksList(new Float_t[rp.fMaxTrack]), fMulParent(rp.fMulParent),
+ fMaxParent(rp.fMaxParent), fParentsList(new Int_t[rp.fMaxParent]),
+ fDEParentsList(new Float_t[rp.fMaxParent]),
+ fSuperModuleNumber(rp.fSuperModuleNumber), fDigitIndMax(rp.fDigitIndMax),
+ fDistToBadTower(rp.fDistToBadTower), fSharedCluster(rp.fSharedCluster)
+{
+ //copy ctor
+ fLambda[0] = rp.fLambda[0];
+ fLambda[1] = rp.fLambda[1];
+
+ for(Int_t i = 0; i < rp.fMulDigit; i++) {
+ fEnergyList[i] = rp.fEnergyList[i];
+ fTimeList[i] = rp.fTimeList[i];
+ fAbsIdList[i] = rp.fAbsIdList[i];
+ }
+
+ for(Int_t i = 0; i < rp.fMulTrack; i++) fDETracksList[i] = rp.fDETracksList[i];
+
+ for(Int_t i = 0; i < rp.fMulParent; i++) {
+ fParentsList[i] = rp.fParentsList[i];
+ fDEParentsList[i] = rp.fDEParentsList[i];
+ }
+
+}
+//____________________________________________________________________________
+AliEMCALRecPoint::~AliEMCALRecPoint()
+{
+ // dtor
+ if ( fEnergyList )
+ delete[] fEnergyList ;
+ if ( fTimeList )
+ delete[] fTimeList ;
+ if ( fAbsIdList )
+ delete[] fAbsIdList ;
+ if ( fDETracksList)
+ delete[] fDETracksList;
+ if ( fParentsList)
+ delete[] fParentsList;
+ if ( fDEParentsList)
+ delete[] fDEParentsList;
+
+ delete [] fDigitsList ;
+ delete [] fTracksList ;
+}
+
+//____________________________________________________________________________
+AliEMCALRecPoint& AliEMCALRecPoint::operator= (const AliEMCALRecPoint &rp)
+{
+ // assignment operator
+
+ if(&rp == this) return *this;
+
+ fGeomPtr = rp.fGeomPtr;
+ fAmp = rp.fAmp;
+ fIndexInList = rp.fIndexInList;
+ fGlobPos = rp.fGlobPos;
+ fLocPos = rp.fLocPos;
+ fMaxDigit = rp.fMaxDigit;
+ fMulDigit = rp.fMulDigit;
+ fMaxTrack = rp.fMaxTrack;
+ fMulTrack = rp.fMaxTrack;
+ for(Int_t i = 0; i<fMaxDigit; i++) fDigitsList[i] = rp.fDigitsList[i];
+ for(Int_t i = 0; i<fMaxTrack; i++) fTracksList[i] = rp.fTracksList[i];
+ fClusterType = rp.fClusterType;
+ fCoreEnergy = rp.fCoreEnergy;
+ fDispersion = rp.fDispersion;
+ for(Int_t i = 0; i<fMaxDigit; i++) {
+ fEnergyList[i] = rp.fEnergyList[i];
+ fTimeList[i] = rp.fTimeList[i];
+ fAbsIdList[i] = rp.fAbsIdList[i];
+ }
+ fTime = rp.fTime;
+ fNExMax = rp.fNExMax;
+ fCoreRadius = rp.fCoreRadius;
+ for(Int_t i = 0; i < fMaxTrack; i++) fDETracksList[i] = rp.fDETracksList[i];
+ fMulParent = rp.fMulParent;
+ fMaxParent = rp.fMaxParent;
+ for(Int_t i = 0; i < fMaxParent; i++) {
+ fParentsList[i] = rp.fParentsList[i];
+ fDEParentsList[i] = rp.fDEParentsList[i];
+ }
+ fSuperModuleNumber = rp.fSuperModuleNumber;
+ fDigitIndMax = rp.fDigitIndMax;
+
+ fLambda[0] = rp.fLambda[0];
+ fLambda[1] = rp.fLambda[1];
+
+ fDistToBadTower = rp.fDistToBadTower;
+ fSharedCluster = rp.fSharedCluster;
+
+ return *this;
+
+}
+
+//____________________________________________________________________________
+void AliEMCALRecPoint::AddDigit(AliEMCALDigit & digit, Float_t energy, Bool_t shared)
+{
+ // Adds a digit to the RecPoint
+ // and accumulates the total amplitude and the multiplicity