]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EMCAL/AliEMCALUnfolding.cxx
change order of bookkeeping events
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALUnfolding.cxx
index 184949778945460f896364838557561a6e41b50f..df27c8fb01cdd22e281ecb90b0a16b847c66acbd 100644 (file)
@@ -558,16 +558,28 @@ Bool_t AliEMCALUnfolding::UnfoldClusterV2(AliEMCALRecPoint * iniTower,
     //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
@@ -581,7 +593,8 @@ Bool_t AliEMCALUnfolding::UnfoldClusterV2(AliEMCALRecPoint * iniTower,
   //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