]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HMPID/AliHMPIDReconHTA.cxx
Checks on the return value of AliExternalTrackParam::Rotate() added
[u/mrichter/AliRoot.git] / HMPID / AliHMPIDReconHTA.cxx
index 073e889de5f6956ac8908d512d807b78e4c9fa1f..6ba7dc1b751edcf12045265f4ab4fd892974016c 100644 (file)
@@ -37,7 +37,7 @@
 Int_t AliHMPIDReconHTA::fgDB[500][150]={{75000*0}};
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 AliHMPIDReconHTA::AliHMPIDReconHTA():
-  TTask("RichRec","RichPat"),
+  TNamed("RichRec","RichPat"),
   fMipX(-999),
   fMipY(-999),
   fMipQ(-999),
@@ -91,11 +91,11 @@ void AliHMPIDReconHTA::DeleteVars()const
 //..
 //Delete variables
 //..
-  if(fXClu) delete fXClu;
-  if(fYClu) delete fYClu;
-  if(fPhiPhot) delete fPhiPhot;
-  if(fThetaPhot) delete fThetaPhot;
-  if(fClCk) delete fClCk;
+  if(fXClu) delete [] fXClu;
+  if(fYClu) delete [] fYClu;
+  if(fPhiPhot) delete [] fPhiPhot;
+  if(fThetaPhot) delete [] fThetaPhot;
+  if(fClCk) delete [] fClCk;
 }
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 Bool_t AliHMPIDReconHTA::CkovHiddenTrk(AliESDtrack *pTrk,TClonesArray *pCluLst,Int_t index, Double_t nmean)
@@ -222,12 +222,14 @@ Bool_t AliHMPIDReconHTA::FindShape(Double_t &thTrkRec,Double_t &phiTrkRec,Double
 //              thetaCRec - estimate of ThetaCerenkov
 //              status    - TRUE if a good solution is found, FALSE if not
 
-  Double_t *phiphot = new Double_t[fNClu];  
-  Double_t *dist    = new Double_t[fNClu];  
-  Int_t    *indphi  = new    Int_t[fNClu];  
+  Double_t phiphot[1000];  
+  Double_t    dist[1000];  
+  Int_t     indphi[1000];  
 
   Bool_t status;
     
+  if(fNClu>1000) return kFALSE;  // too many clusters....
+  
 // Sort in phi angle...
   for(Int_t i=0;i<fNClu;i++) {
     if(!fClCk[i]) {
@@ -281,10 +283,6 @@ Bool_t AliHMPIDReconHTA::FindShape(Double_t &thTrkRec,Double_t &phiTrkRec,Double
     npeff++;
   }
   
-  delete [] phiphot;
-  delete [] dist;
-  delete [] indphi;
-
   if(npeff<3) {
     AliDebug(1,Form("FindShape failed: no enough photons = %i...",npeff));
     delete [] phiphotP;
@@ -527,7 +525,11 @@ void AliHMPIDReconHTA::FunMinPhot(Int_t &/* */,Double_t* /* */,Double_t &f,Doubl
       
     meanCkov1/=nClAcc;
     Double_t rms2 = (meanCkov3 - meanCkov*meanCkov*nClAcc)/nClAcc;
-    AliLog::Instance();
+    
+    // get a logger instance
+    // what for??
+    //AliLog::GetRootLogger();
+
     if(nClAcc!=nClAccStep1) pRecHTA->SetFitStatus(kTRUE); else pRecHTA->SetFitStatus(kFALSE);
     
     pRecHTA->SetCkovFit(meanCkov1);
@@ -701,6 +703,10 @@ Int_t AliHMPIDReconHTA::r2(Double_t *coef, Double_t &x1, Double_t &x2)
     x1=x2=-b/(2*a);
     return 1;
   }
+  if(a==0) {
+    x1 = -c/b;
+    return 1;
+  }
   // delta>0
   x1 = (-b+TMath::Sqrt(delta))/(2*a);
   x2 = (-b-TMath::Sqrt(delta))/(2*a);
@@ -853,10 +859,11 @@ Bool_t AliHMPIDReconHTA::UniformDistrib()
    Double_t chi2 = 0;
    for(Int_t i=0;i<nPhiBins;i++) {
      Double_t theo = (Double_t)npeff/(Double_t)nPhiBins;
+     if(theo==0) continue;
      chi2+= (iPhiBin[i] - theo)*(iPhiBin[i] - theo)/theo;
    }
    
-    delete iPhiBin;
+    delete [] iPhiBin;
     
     Double_t prob = TMath::Prob(chi2, nPhiBins-1);
     AliDebug(1,Form(" Probability for uniform distrib: %6f.3 %s",prob,(prob<0.05) ? "rejected" : "accepted"));