X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONClusterSplitterMLEM.cxx;h=ee383022c16aa3c59a5011fd369ff3d4f1d55744;hb=257f0eee1768a2fce3261c00d1abba5bec687da0;hp=478d8ab0f3bef958a8ff7c15a2ecf85fc093faf3;hpb=8c14ac2e521c9e25a534b6872c4a5646ec61bc0b;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONClusterSplitterMLEM.cxx b/MUON/AliMUONClusterSplitterMLEM.cxx index 478d8ab0f3b..ee383022c16 100644 --- a/MUON/AliMUONClusterSplitterMLEM.cxx +++ b/MUON/AliMUONClusterSplitterMLEM.cxx @@ -48,6 +48,8 @@ #include #include +using std::endl; +using std::cout; /// \cond CLASSIMP ClassImp(AliMUONClusterSplitterMLEM) /// \endcond @@ -114,7 +116,7 @@ AliMUONClusterSplitterMLEM::AddBin(TH2 *mlem, Int_t nx = mlem->GetNbinsX(); Int_t ny = mlem->GetNbinsY(); - Double_t cont1, cont = mlem->GetCellContent(jc,ic); + Double_t cont1, cont = mlem->GetBinContent(mlem->GetBin(jc,ic)); AliMUONPad *pixPtr = 0; Int_t ie = TMath::Min(ic+1,ny), je = TMath::Min(jc+1,nx); @@ -122,7 +124,7 @@ AliMUONClusterSplitterMLEM::AddBin(TH2 *mlem, for (Int_t j = TMath::Max(jc-1,1); j <= je; ++j) { if (i != ic && j != jc) continue; if (used[(i-1)*nx+j-1]) continue; - cont1 = mlem->GetCellContent(j,i); + cont1 = mlem->GetBinContent(mlem->GetBin(j,i)); if (mode && cont1 > cont) continue; used[(i-1)*nx+j-1] = kTRUE; if (cont1 < fLowestPixelCharge) continue; @@ -233,7 +235,11 @@ AliMUONClusterSplitterMLEM::Fcn1(const AliMUONCluster& cluster, delta /= pad->Charge(); chi2 += delta; } // for (Int_t j=0; - if (iflag == 0) qAver = qTot / npads; + if (iflag == 0 && npads) qAver = qTot / npads; + if (!npads && iflag==0) + { + AliError(Form("Got npads=0. Please check")); + } f = chi2 / qAver; } @@ -419,10 +425,10 @@ AliMUONClusterSplitterMLEM::Fit(const AliMUONCluster& cluster, TMath::Sort(nfit0, qseed, maxSeed, kTRUE); // in decreasing order Double_t step[3]={0.01,0.002,0.02}, fmin, chi2o = 9999, chi2n; - Double_t *gin = 0, func0, func1, param[8], step0[8]; + Double_t *gin = 0, func0, func1, param[8]={0}, step0[8]={0}; Double_t param0[2][8]={{0},{0}}, deriv[2][8]={{0},{0}}; - Double_t shift[8], stepMax, derMax, parmin[8], parmax[8], func2[2], shift0; - Double_t delta[8], scMax, dder[8], estim, shiftSave = 0; + Double_t shift[8]={0}, stepMax, derMax, parmin[8]={0}, parmax[8]={0}, func2[2]={0}, shift0; + Double_t delta[8]={0}, scMax, dder[8], estim, shiftSave = 0; Int_t min, max, nCall = 0, nLoop, idMax = 0, iestMax = 0, nFail; Double_t rad, dist[3] = {0}; @@ -440,7 +446,7 @@ AliMUONClusterSplitterMLEM::Fit(const AliMUONCluster& cluster, param[j] = parOk[j]; } param[fNpar] = 0.6; - parmin[fNpar] = 0; + parmin[fNpar] = 1E-9; parmax[fNpar++] = 1; } @@ -821,7 +827,7 @@ AliMUONClusterSplitterMLEM::Split(const AliMUONCluster& cluster, { indx = (i-1)*nx + j - 1; if (used[indx]) continue; - cont = mlem->GetCellContent(j,i); + cont = mlem->GetBinContent(mlem->GetBin(j,i)); if (cont < fLowestPixelCharge) continue; pix = new TObjArray(20); used[indx] = 1; @@ -945,7 +951,7 @@ AliMUONClusterSplitterMLEM::Split(const AliMUONCluster& cluster, // Flag clusters for fit nForFit = 0; - while (minGroup[nForFit] >= 0 && nForFit < 3) + while (nForFit < 3 && minGroup[nForFit] >= 0) { if (fDebug) cout << clustNumb[minGroup[nForFit]] << " "; clustFit[nForFit] = clustNumb[minGroup[nForFit]];