#include <TRandom.h>
#include <Riostream.h>
+using std::endl;
+using std::cout;
/// \cond CLASSIMP
ClassImp(AliMUONClusterSplitterMLEM)
/// \endcond
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);
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;
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;
}
Double_t xmax = mlem->GetXaxis()->GetXmax() + mlem->GetXaxis()->GetBinWidth(1);
Double_t ymin = mlem->GetYaxis()->GetXmin() - mlem->GetYaxis()->GetBinWidth(1);
Double_t ymax = mlem->GetYaxis()->GetXmax() + mlem->GetYaxis()->GetBinWidth(1);
- Double_t xPad = 0, yPad = 99999;
// Number of pads to use and number of virtual pads
Int_t npads = 0, nVirtual = 0, nfit0 = nfit;
if ( pad->IsReal() )
{
++npads;
- if (yPad > 9999)
- {
- xPad = pad->X();
- yPad = pad->Y();
- }
- else
- {
- if (pad->DY() < pad->DX() )
- {
- yPad = pad->Y();
- }
- else
- {
- xPad = pad->X();
- }
- }
}
}
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;
- Int_t min, max, nCall = 0, nLoop, idMax = 0, iestMax = 0, nFail;
+ 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, nFail;
Double_t rad, dist[3] = {0};
// Try to fit with one-track hypothesis, then 2-track. If chi2/dof is
param[j] = parOk[j];
}
param[fNpar] = 0.6;
- parmin[fNpar] = 0;
+ parmin[fNpar] = 1E-9;
parmax[fNpar++] = 1;
}
if (es > estim)
{
estim = es;
- iestMax = j;
}
// Too big step
{
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;
// 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]];
{
/// Merge the group of clusters with the one having the strongest coupling with them
- Int_t indx, indx1, npxclu, npxclu1, imax=0;
+ Int_t indx, indx1, npxclu, imax=0;
TObjArray *pix, *pix1;
Double_t couplMax;
} // for (Int_t icl1=0;
// Add to it
pix1 = clusters[imax];
- npxclu1 = pix1->GetEntriesFast();
- // Add pixels
+ // Add pixels
for (Int_t i = 0; i < npxclu; ++i)
{
pix1->Add(pix->UncheckedAt(i));