//add recpoint
(*fRecPoints)[fNumberOfECAClusters] = new AliEMCALRecPoint("") ;//fNumberOfECAClusters-1 is old cluster before unfolding
recPoint = dynamic_cast<AliEMCALRecPoint *>( fRecPoints->At(fNumberOfECAClusters) ) ;
- if(recPoint){//recPoint present -> good
- recPoint->SetNExMax(list->GetEntriesFast()) ;
- Int_t *digitsList = dynamic_cast<AliEMCALRecPoint *>(list->At(i))->GetDigitsList();
- Float_t *energyList = dynamic_cast<AliEMCALRecPoint *>(list->At(i))->GetEnergiesList();
+ AliEMCALRecPoint * rpUFOne = dynamic_cast<AliEMCALRecPoint *>(list->At(i)) ;
+
+ if( recPoint && rpUFOne ){//recPoint present -> good
+
+ recPoint->SetNExMax(list->GetEntriesFast()) ;
+
+ Int_t *digitsList = rpUFOne->GetDigitsList();
+ Float_t *energyList = rpUFOne->GetEnergiesList();
+ if(!digitsList || ! energyList)
+ {
+ AliDebug(-1,"No digits index or energy available");
+ delete (*fRecPoints)[fNumberOfECAClusters];
+ fRecPoints->RemoveAt(fNumberOfECAClusters);
+ continue;
+ }
+
AliDebug(5,Form("cluster %d, digit no %d, energy %f\n",i,digitsList[0],energyList[0]));
- for(iDigit = 0 ; iDigit < dynamic_cast<AliEMCALRecPoint *>(list->At(i))->GetMultiplicity(); iDigit ++) {
+ for(iDigit = 0 ; iDigit < rpUFOne->GetMultiplicity(); iDigit ++) {
digit = dynamic_cast<AliEMCALDigit*>( fDigitsArr->At( digitsList[iDigit] ) ) ;
- recPoint->AddDigit( *digit, energyList[iDigit], kFALSE ) ; //FIXME, need to study the shared case
+ if(digit) recPoint->AddDigit( *digit, energyList[iDigit], kFALSE ) ; //FIXME, need to study the shared case
}//digit loop
fNumberOfECAClusters++ ;
} else {//recPoint empty -> remove from list
//print energy of new unfolded clusters
AliDebug(5,Form(" nUnfoldedClusters %d, fNumberOfECAClusters %d",nUnfoldedClusters,fNumberOfECAClusters ));
for(Int_t inewclus=0; inewclus<nUnfoldedClusters;inewclus++){
- AliDebug(5,Form(" Unfolded cluster %d E %f",inewclus,dynamic_cast<AliEMCALRecPoint *>(fRecPoints->At(fNumberOfECAClusters-1-inewclus)) ->GetEnergy() ));
+ AliEMCALRecPoint * rp = dynamic_cast<AliEMCALRecPoint *>(fRecPoints->At(fNumberOfECAClusters-1-inewclus));
+ if(rp) AliDebug(5,Form(" Unfolded cluster %d E %f",inewclus, rp->GetEnergy() ));
}
//clear tables