ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

//-----------------------------------------------------------------------------
/// \class AliMUONClusterFinderPeakCOG
/// 
/// Clusterizer class based on simple peak finder
///
/// Pre-clustering is handled by AliMUONPreClusterFinder
/// From a precluster a pixel array is built, and its local maxima are used
/// to get pads and compute pad center of gravity.
///
/// \author Laurent Aphecetche (for the "new" C++ structure) and 
/// Alexander Zinchenko, JINR Dubna, for the hardcore of it ;-)
//-----------------------------------------------------------------------------

#include "AliMUONClusterFinderPeakCOG.h"
#include "AliMUONCluster.h"
#include "AliMUONPad.h"

#include "AliMpPad.h"
#include "AliMpVSegmentation.h"
#include "AliMpEncodePair.h"

#include "AliLog.h"
#include "AliRunLoader.h"
//#include "AliCodeTimer.h"

#include <Riostream.h>
#include <TH2.h>
//#include <TCanvas.h>
#include <TMath.h>

using std::endl;
using std::cout;
/// \cond CLASSIMP
ClassImp(AliMUONClusterFinderPeakCOG)
/// \endcond
 
const Double_t AliMUONClusterFinderPeakCOG::fgkZeroSuppression = 6; // average zero suppression value
//const Double_t AliMUONClusterFinderMLEM::fgkDistancePrecision = 1e-6; // (cm) used to check overlaps and so on
const Double_t AliMUONClusterFinderPeakCOG::fgkDistancePrecision = 1e-3; // (cm) used to check overlaps and so on
const TVector2 AliMUONClusterFinderPeakCOG::fgkIncreaseSize(-AliMUONClusterFinderPeakCOG::fgkDistancePrecision,-AliMUONClusterFinderPeakCOG::fgkDistancePrecision);
const TVector2 AliMUONClusterFinderPeakCOG::fgkDecreaseSize(AliMUONClusterFinderPeakCOG::fgkDistancePrecision,AliMUONClusterFinderPeakCOG::fgkDistancePrecision);

// Status flags for pads
const Int_t AliMUONClusterFinderPeakCOG::fgkZero = 0x0; ///< pad "basic" state
const Int_t AliMUONClusterFinderPeakCOG::fgkMustKeep = 0x1; ///< do not kill (for pixels)
const Int_t AliMUONClusterFinderPeakCOG::fgkUseForFit = 0x10; ///< should be used for fit
const Int_t AliMUONClusterFinderPeakCOG::fgkOver = 0x100; ///< processing is over
const Int_t AliMUONClusterFinderPeakCOG::fgkModified = 0x1000; ///< modified pad charge 
const Int_t AliMUONClusterFinderPeakCOG::fgkCoupled = 0x10000; ///< coupled pad  

//_____________________________________________________________________________
AliMUONClusterFinderPeakCOG::AliMUONClusterFinderPeakCOG(Bool_t plot, AliMUONVClusterFinder* clusterFinder)
  : AliMUONVClusterFinder(),
fPreClusterFinder(clusterFinder),
fPreCluster(0x0),
fClusterList(),
fEventNumber(0),
fDetElemId(-1),
fClusterNumber(0),
fHistAnode(0x0),
fPixArray(new TObjArray(20)),
fDebug(0),
fPlot(plot),
fNClusters(0),
fNAddVirtualPads(0)
{
  /// Constructor
 
  fkSegmentation[1] = fkSegmentation[0] = 0x0; 

  if (fPlot) fDebug = 1;
}

//_____________________________________________________________________________
AliMUONClusterFinderPeakCOG::~AliMUONClusterFinderPeakCOG()
{
/// Destructor
  delete fPixArray; fPixArray = 0;
  delete fPreClusterFinder;
  AliInfo(Form("Total clusters %d AddVirtualPad needed %d",
               fNClusters,fNAddVirtualPads));
}

//_____________________________________________________________________________
Bool_t 
AliMUONClusterFinderPeakCOG::Prepare(Int_t detElemId, TObjArray* pads[2],
                                     const AliMpArea& area, 
                                     const AliMpVSegmentation* seg[2])
{
  /// Prepare for clustering
//  AliCodeTimerAuto("",0)
  
  for ( Int_t i = 0; i < 2; ++i )
  {
    fkSegmentation[i] = seg[i];
  }
  
  // Find out the DetElemId
  fDetElemId = detElemId;
  
  // find out current event number, and reset the cluster number
  AliRunLoader *runLoader = AliRunLoader::Instance();
  fEventNumber = runLoader ? runLoader->GetEventNumber() : 0;
  fClusterNumber = -1;
  fClusterList.Delete();
  
  AliDebug(3,Form("EVT %d DE %d",fEventNumber,fDetElemId));
  
  if ( fPreClusterFinder->NeedSegmentation() )
  {
    return fPreClusterFinder->Prepare(detElemId,pads,area,seg);
  }
  else
  {
    return fPreClusterFinder->Prepare(detElemId,pads,area);
  }
}

//_____________________________________________________________________________
AliMUONCluster* 
AliMUONClusterFinderPeakCOG::NextCluster()
{
  /// Return next cluster
//  AliCodeTimerAuto("",0)
  
  // if the list of clusters is not void, pick one from there
  TObject* o = fClusterList.At(++fClusterNumber);
  if ( o != 0x0 ) return static_cast<AliMUONCluster*>(o);
  
  //FIXME : at this point, must check whether we've used all the digits
  //from precluster : if not, let the preclustering know about those unused
  //digits, so it can reuse them
  
  // if the cluster list is exhausted, we need to go to the next
  // pre-cluster and treat it

  fClusterList.Delete(); // reset the list of clusters for this pre-cluster
  fClusterNumber = -1; 
    
  fPreCluster = fPreClusterFinder->NextCluster();
  
  if (!fPreCluster)
  {
    // we are done
    return 0x0;
  }
    
  WorkOnPreCluster();

  // WorkOnPreCluster may have used only part of the pads, so we check that
  // now, and let the unused pads be reused by the preclustering...
  
  Int_t mult = fPreCluster->Multiplicity();
  for ( Int_t i = 0; i < mult; ++i )
  {
    AliMUONPad* pad = fPreCluster->Pad(i);
    if ( !pad->IsUsed() )
    {
      fPreClusterFinder->UsePad(*pad);
    }
  }
  
  return NextCluster();
}

//_____________________________________________________________________________
Bool_t
AliMUONClusterFinderPeakCOG::WorkOnPreCluster()
{
  /// Starting from a precluster, builds a pixel array, and then
  /// extract clusters from this array
  
  //  AliCodeTimerAuto("",0)

  if (fDebug) {
    cout << " *** Event # " << fEventNumber 
	 << " det. elem.: " << fDetElemId << endl;
    for (Int_t j = 0; j < fPreCluster->Multiplicity(); ++j) {
      AliMUONPad* pad = fPreCluster->Pad(j);
      printf(" bbb %3d %1d %8.4f %8.4f %8.4f %8.4f %6.1f %3d %3d %2d %1d %1d \n",
	     j, pad->Cathode(), pad->Coord(0), pad->Coord(1), pad->DX()*2, pad->DY()*2,
             pad->Charge(), pad->Ix(), pad->Iy(), pad->Status(), pad->IsReal(), pad->IsSaturated());
    }
  }

  AliMUONCluster* cluster = CheckPrecluster(*fPreCluster);
  if (!cluster) return kFALSE;

  BuildPixArray(*cluster);
  
  if ( fPixArray->GetLast() < 0 )
  {
    AliDebug(1,"No pixel for the above cluster");
    delete cluster;
    return kFALSE;
  }
  
  Int_t nMax = 1, localMax[100], maxPos[100] = {0};
  Double_t maxVal[100];
  
  nMax = FindLocalMaxima(fPixArray, localMax, maxVal); // find local maxima

  if (nMax > 1) TMath::Sort(nMax, maxVal, maxPos, kTRUE); // in descending order
  
  for (Int_t i = 0; i < nMax; ++i) 
  {
    FindCluster(*cluster,localMax, maxPos[i]);
  }

  delete cluster;
  if (fPlot == 0) {
    delete fHistAnode;
    fHistAnode = 0x0;
  }
  return kTRUE;
}

//_____________________________________________________________________________
Bool_t 
AliMUONClusterFinderPeakCOG::Overlap(const AliMUONPad& pad, const AliMUONPad& pixel)
{
  /// Check if the pad and the pixel overlaps

  // make a fake pad from the pixel
  AliMUONPad tmp(pad.DetElemId(),pad.Cathode(),pad.Ix(),pad.Iy(),
                 pixel.Coord(0),pixel.Coord(1),
                 pixel.Size(0),pixel.Size(1),0);
  
  return AliMUONPad::AreOverlapping(pad,tmp,fgkDecreaseSize);
}

//_____________________________________________________________________________
AliMUONCluster* 
AliMUONClusterFinderPeakCOG::CheckPrecluster(const AliMUONCluster& origCluster)
{
  /// Check precluster in order to attempt to simplify it (mostly for
  /// two-cathode preclusters)
    
  //  AliCodeTimerAuto("",0)

  // Disregard small clusters (leftovers from splitting or noise)
  if ((origCluster.Multiplicity()==1 || origCluster.Multiplicity()==2) &&
      origCluster.Charge(0)+origCluster.Charge(1) < 1.525) // JC: adc -> fc
  { 
    return 0x0;
  }

  AliMUONCluster* cluster = new AliMUONCluster(origCluster);

  AliDebug(2,"Start of CheckPreCluster=");
  //StdoutToAliDebug(2,cluster->Print("full"));

  AliMUONCluster* rv(0x0);
  
  if (cluster->Multiplicity(0) && cluster->Multiplicity(1))
  { 
    rv = CheckPreclusterTwoCathodes(cluster);
  }
  else
  {
    rv = cluster;
  }
  return rv;
}

//_____________________________________________________________________________
AliMUONCluster*
AliMUONClusterFinderPeakCOG::CheckPreclusterTwoCathodes(AliMUONCluster* cluster)
{
  /// Check two-cathode cluster
  
  Int_t npad = cluster->Multiplicity();
  Int_t* flags = new Int_t[npad];
  for (Int_t j = 0; j < npad; ++j) flags[j] = 0;
  
  // Check pad overlaps
  for ( Int_t i = 0; i < npad; ++i) 
  {
    AliMUONPad* padi = cluster->Pad(i);
    if ( padi->Cathode() != 0 ) continue;
    for (Int_t j = i+1; j < npad; ++j) 
    {
      AliMUONPad* padj = cluster->Pad(j);
      if ( padj->Cathode() != 1 ) continue;
      if ( !AliMUONPad::AreOverlapping(*padi,*padj,fgkDecreaseSize) ) continue;
      flags[i] = flags[j] = 1; // mark overlapped pads
    } 
  } 
  
  // Check if all pads overlap
  Int_t nFlags=0;
  for (Int_t i = 0; i < npad; ++i) 
  {
    if (!flags[i]) ++nFlags;
  }
  
  if (nFlags > 0) 
  {
    // not all pads overlap.
    if (fDebug) cout << " nFlags: " << nFlags << endl;
    TObjArray toBeRemoved;
    for (Int_t i = 0; i < npad; ++i) 
    {
      AliMUONPad* pad = cluster->Pad(i);
      if (flags[i]) continue;
      Int_t cath = pad->Cathode();
      Int_t cath1 = TMath::Even(cath);
      // Check for edge effect (missing pads on the _other_ cathode)
      AliMpPad mpPad 
        = fkSegmentation[cath1]->PadByPosition(pad->Position().X(),pad->Position().Y(),kFALSE);
      if (!mpPad.IsValid()) continue;
      //if (nFlags == 1 && pad->Charge() < fgkZeroSuppression * 3) continue;
      if (nFlags == 1 && pad->Charge() < 3.05) continue; // JC: adc -> fc
      AliDebug(2,Form("Releasing the following pad : de,cath,ix,iy %d,%d,%d,%d charge %e",
                      fDetElemId,pad->Cathode(),pad->Ix(),pad->Iy(),pad->Charge()));
      toBeRemoved.AddLast(pad);
      fPreCluster->Pad(i)->Release();
    }
    Int_t nRemove = toBeRemoved.GetEntriesFast();
    for ( Int_t i = 0; i < nRemove; ++i )
    {
      cluster->RemovePad(static_cast<AliMUONPad*>(toBeRemoved.UncheckedAt(i)));
    }
  } 
  
  // Check correlations of cathode charges
  if ( !cluster->IsSaturated() && cluster->ChargeAsymmetry() > 1 )
  {
    // big difference
    Int_t cathode = cluster->MaxRawChargeCathode();
    Int_t imin(-1);
    Int_t imax(-1);
    Double_t cmax(0);
    Double_t cmin(1E9);
    
    // get min and max pad charges on the cathode opposite to the 
    // max pad (given by MaxRawChargeCathode())
    //
    Int_t mult = cluster->Multiplicity();
    for ( Int_t i = 0; i < mult; ++i )
    {
      AliMUONPad* pad = cluster->Pad(i);
      if ( pad->Cathode() != cathode || !pad->IsReal() )
      {
        // only consider pads in the opposite cathode, and
        // only consider real pads (i.e. exclude the virtual ones)
        continue;
      }
      if ( pad->Charge() < cmin )
      {
        cmin = pad->Charge();
        imin = i;
	if (imax < 0) {
	  imax = imin;
	  cmax = cmin;
	}
      }
      else if ( pad->Charge() > cmax )
      {
        cmax = pad->Charge();
        imax = i;
      }      
    }
    AliDebug(2,Form("Pad imin,imax %d,%d cmin,cmax %e,%e",
                    imin,imax,cmin,cmax));
    //
    // arrange pads according to their distance to the max, normalized
    // to the pad size
    Double_t* dist = new Double_t[mult];
    Double_t dxMin(1E9);
    Double_t dyMin(1E9);
    Double_t dmin(0);
    
    AliMUONPad* padmax = cluster->Pad(imax);
    
    for ( Int_t i = 0; i < mult; ++i )
    {
      dist[i] = 0.0;
      if ( i == imax) continue;
      AliMUONPad* pad = cluster->Pad(i);
      if ( pad->Cathode() != cathode || !pad->IsReal() ) continue;
      Double_t dx = (pad->X()-padmax->X())/padmax->DX()/2.0;
      Double_t dy = (pad->Y()-padmax->Y())/padmax->DY()/2.0;
      dist[i] = TMath::Sqrt(dx*dx+dy*dy);
      if ( i == imin )
      {
        dmin = dist[i] + 1E-3; // distance to the pad with minimum charge
        dxMin = dx;
        dyMin = dy;
      }      
    }
    
    TMath::Sort(mult,dist,flags,kFALSE); // in ascending order
    Double_t xmax(-1), distPrev(999);
    TObjArray toBeRemoved;
    
    for ( Int_t i = 0; i < mult; ++i )
    {
      Int_t indx = flags[i];
      AliMUONPad* pad = cluster->Pad(indx);
      if ( pad->Cathode() != cathode || !pad->IsReal() ) continue;
      if ( dist[indx] > dmin )
      {
        // farther than the minimum pad
        Double_t dx = (pad->X()-padmax->X())/padmax->DX()/2.0;
        Double_t dy = (pad->Y()-padmax->Y())/padmax->DY()/2.0;
        dx *= dxMin;
        dy *= dyMin;
        if (dx >= 0 && dy >= 0) continue;
        if (TMath::Abs(dx) > TMath::Abs(dy) && dx >= 0) continue;
        if (TMath::Abs(dy) > TMath::Abs(dx) && dy >= 0) continue;        
      }
      if (dist[indx] > distPrev + 1) break; // overstepping empty pads
      if ( pad->Charge() <= cmax || TMath::Abs(dist[indx]-xmax) < 1E-3 )
      {
        // release pad
        if (TMath::Abs(dist[indx]-xmax) < 1.e-3) 
        {
          cmax = TMath::Max(pad->Charge(),cmax);
        }
        else
        {
          cmax = pad->Charge();
        }
        xmax = dist[indx];
	distPrev = dist[indx];
        AliDebug(2,Form("Releasing the following pad : de,cath,ix,iy %d,%d,%d,%d charge %e",
                        fDetElemId,pad->Cathode(),pad->Ix(),pad->Iy(),
                        pad->Charge()));
  
        toBeRemoved.AddLast(pad);
        fPreCluster->Pad(indx)->Release();
      }
    }
    Int_t nRemove = toBeRemoved.GetEntriesFast();
    for ( Int_t i = 0; i < nRemove; ++i )
    {
      cluster->RemovePad(static_cast<AliMUONPad*>(toBeRemoved.UncheckedAt(i)));
    }    
    delete[] dist;
  } // if ( !cluster->IsSaturated() && 
  
  delete[] flags;
  
  AliDebug(2,"End of CheckPreClusterTwoCathodes=");
  //StdoutToAliDebug(2,cluster->Print("full"));

  return cluster;    
}

//_____________________________________________________________________________
void
AliMUONClusterFinderPeakCOG::CheckOverlaps()
{
  /// For debug only : check if some pixels overlap...
  
  Int_t nPix = fPixArray->GetLast()+1;
  Int_t dummy(0);
  
  for ( Int_t i = 0; i < nPix; ++i )
  {
    AliMUONPad* pixelI = Pixel(i);
    AliMUONPad pi(dummy,dummy,dummy,dummy,
                  pixelI->Coord(0),pixelI->Coord(1),
                  pixelI->Size(0),pixelI->Size(1),0.0);
    
    for ( Int_t j = i+1; j < nPix; ++j )
    {
      AliMUONPad* pixelJ = Pixel(j);
      AliMUONPad pj(dummy,dummy,dummy,dummy,
                    pixelJ->Coord(0),pixelJ->Coord(1),
                    pixelJ->Size(0),pixelJ->Size(1),0.0);  
      AliMpArea area;
      
      if ( AliMUONPad::AreOverlapping(pi,pj,fgkDecreaseSize,area) )
      {
        AliInfo(Form("The following 2 pixels (%d and %d) overlap !",i,j));
	/*
        StdoutToAliInfo(pixelI->Print();
                        cout << " Surface = " << pixelI->Size(0)*pixelI->Size(1)*4 << endl;
                        pixelJ->Print();
                        cout << " Surface = " << pixelJ->Size(0)*pixelJ->Size(1)*4 << endl;
                        cout << " Area surface = " << area.Dimensions().X()*area.Dimensions().Y()*4 << endl;
                        cout << "-------" << endl;
                        );
	*/        
      }
    }    
  }
}

//_____________________________________________________________________________
void AliMUONClusterFinderPeakCOG::BuildPixArray(AliMUONCluster& cluster)
{
  /// Build pixel array 
  
  Int_t npad = cluster.Multiplicity();
  if (npad<=0) 
  {
    AliWarning("Got no pad at all ?!");
  }
  
  fPixArray->Delete();
  BuildPixArrayOneCathode(cluster);
  
//  StdoutToAliDebug(2,cout << "End of BuildPixelArray:" << endl;
//                   fPixArray->Print(););
  //CheckOverlaps();//FIXME : this is for debug only. Remove it.
}

//_____________________________________________________________________________
void AliMUONClusterFinderPeakCOG::BuildPixArrayOneCathode(AliMUONCluster& cluster)
{
  /// Build the pixel array

//  AliDebug(2,Form("cluster.Multiplicity=%d",cluster.Multiplicity()));

  TVector2 dim = cluster.MinPadDimensions (-1, kFALSE);
  Double_t width[2] = {dim.X(), dim.Y()}, xy0[2] = { 0.0, 0.0 };
  Int_t found[2] = {0}, mult = cluster.Multiplicity();

  for ( Int_t i = 0; i < mult; ++i) {
    AliMUONPad* pad = cluster.Pad(i);
    for (Int_t j = 0; j < 2; ++j) {
      if (found[j] == 0 && TMath::Abs(pad->Size(j)-width[j]) < fgkDistancePrecision) { 
	xy0[j] = pad->Coord(j);
	found[j] = 1;
      }
    }
    if (found[0] && found[1]) break;
  }

  Double_t min[2], max[2];
  Int_t cath0 = 0, cath1 = 1;
  if (cluster.Multiplicity(0) == 0) cath0 = 1;
  else if (cluster.Multiplicity(1) == 0) cath1 = 0;

  Double_t leftDownX, leftDownY;
  cluster.Area(cath0).LeftDownCorner(leftDownX, leftDownY);
  Double_t rightUpX, rightUpY; 
  cluster.Area(cath0).RightUpCorner(rightUpX, rightUpY);
  min[0] = leftDownX;
  min[1] = leftDownY;
  max[0] = rightUpX;
  max[1] = rightUpY;
  if (cath1 != cath0) {
    cluster.Area(cath1).LeftDownCorner(leftDownX, leftDownY);
    cluster.Area(cath1).RightUpCorner(rightUpX, rightUpY);
    min[0] = TMath::Max (min[0], leftDownX);
    min[1] = TMath::Max (min[1], leftDownY);
    max[0] = TMath::Min (max[0], rightUpX);
    max[1] = TMath::Min (max[1], rightUpY);
  }

  // Adjust limits
  //width[0] /= 2; width[1] /= 2; // just for check
  Int_t nbins[2];
  for (Int_t i = 0; i < 2; ++i) {
    Double_t dist = (min[i] - xy0[i]) / width[i] / 2;
    if (TMath::Abs(dist) < 1.e-6) dist = -1.e-6;
    min[i] = xy0[i] + (TMath::Nint(dist-TMath::Sign(1.e-6,dist)) 
		       + TMath::Sign(0.5,dist)) * width[i] * 2;
    nbins[i] = TMath::Nint ((max[i] - min[i]) / width[i] / 2);
    if (nbins[i] == 0) ++nbins[i];
    max[i] = min[i] + nbins[i] * width[i] * 2;
    //cout << dist << " " << min[i] << " " << max[i] << " " << nbins[i] << endl;
  }

  // Book histogram
  TH2D *hist1 = new TH2D ("Grid", "", nbins[0], min[0], max[0], nbins[1], min[1], max[1]);
  TH2D *hist2 = new TH2D ("Entries", "", nbins[0], min[0], max[0], nbins[1], min[1], max[1]);
  TAxis *xaxis = hist1->GetXaxis();
  TAxis *yaxis = hist1->GetYaxis();

  // Fill histogram
  for ( Int_t i = 0; i < mult; ++i) {
    AliMUONPad* pad = cluster.Pad(i);
    Int_t ix0 = xaxis->FindBin(pad->X());
    Int_t iy0 = yaxis->FindBin(pad->Y());
    PadOverHist(0, ix0, iy0, pad, hist1, hist2);
  }

  // Store pixels
  for (Int_t i = 1; i <= nbins[0]; ++i) {
    Double_t x = xaxis->GetBinCenter(i);
    for (Int_t j = 1; j <= nbins[1]; ++j) {
      if (hist2->GetBinContent(hist2->GetBin(i,j)) < 0.01525) continue; // JC: adc -> fc
      if (cath0 != cath1) {
	// Two-sided cluster
	Double_t cont = hist2->GetBinContent(hist2->GetBin(i,j));
	if (cont < 999.) continue;
	if (cont-Int_t(cont/1000.)*1000. < 0.07625) continue; // JC: adc -> fc
      }
      //if (hist2->GetBinContent(hist2->GetBin(i,j)) < 1.1 && cluster.Multiplicity(0) && 
      //  cluster.Multiplicity(1)) continue;
      Double_t y = yaxis->GetBinCenter(j);
      Double_t charge = hist1->GetBinContent(hist1->GetBin(i,j));
      AliMUONPad* pixPtr = new AliMUONPad(x, y, width[0], width[1], charge);
      fPixArray->Add(pixPtr);
    }  
  }
  /*
  if (fPixArray->GetEntriesFast() == 1) {
    // Split pixel into 2
    AliMUONPad* pixPtr = static_cast<AliMUONPad*> (fPixArray->UncheckedAt(0));
    pixPtr->SetSize(0,width[0]/2.);
    pixPtr->Shift(0,-width[0]/4.);
    pixPtr = new AliMUONPad(pixPtr->X()+width[0], pixPtr->Y(), width[0]/2., width[1], pixPtr->Charge());
    fPixArray->Add(pixPtr);
  }
  */
  //fPixArray->Print();
  delete hist1;
  delete hist2;
}

//_____________________________________________________________________________
void AliMUONClusterFinderPeakCOG::PadOverHist(Int_t idir, Int_t ix0, Int_t iy0, AliMUONPad *pad,
					      TH2D *hist1, TH2D *hist2)
{
  /// "Span" pad over histogram in the direction idir

  TAxis *axis = idir == 0 ? hist1->GetXaxis() : hist1->GetYaxis();
  Int_t nbins = axis->GetNbins(), cath = pad->Cathode();
  Double_t bin = axis->GetBinWidth(1), amask = TMath::Power(1000.,cath*1.);

  Int_t nbinPad = (Int_t)(pad->Size(idir)/bin*2+fgkDistancePrecision) + 1; // number of bins covered by pad

  for (Int_t i = 0; i < nbinPad; ++i) {
    Int_t ixy = idir == 0 ? ix0 + i : iy0 + i;
    if (ixy > nbins) break;
    Double_t lowEdge = axis->GetBinLowEdge(ixy);
    if (lowEdge + fgkDistancePrecision > pad->Coord(idir) + pad->Size(idir)) break;
    if (idir == 0) PadOverHist(1, ixy, iy0, pad, hist1, hist2); // span in the other direction
    else {
      // Fill histogram
      Double_t cont = pad->Charge();
      if (hist2->GetBinContent(hist2->GetBin(ix0, ixy)) > 0.01525) // JC: adc -> fc
	cont = TMath::Min (hist1->GetBinContent(hist1->GetBin(ix0, ixy)), cont) 
	  + TMath::Min (TMath::Max(hist1->GetBinContent(hist1->GetBin(ix0, ixy)),cont)*0.1, 1.525); // JC: adc -> fc
      hist1->SetBinContent(hist1->GetBin(ix0, ixy), cont);
      hist2->SetBinContent(hist2->GetBin(ix0, ixy), hist2->GetBinContent(hist2->GetBin(ix0, ixy))+amask);
    }
  }

  for (Int_t i = -1; i > -nbinPad; --i) {
    Int_t ixy = idir == 0 ? ix0 + i : iy0 + i;
    if (ixy < 1) break;
    Double_t upEdge = axis->GetBinUpEdge(ixy);
    if (upEdge - fgkDistancePrecision < pad->Coord(idir) - pad->Size(idir)) break;
    if (idir == 0) PadOverHist(1, ixy, iy0, pad, hist1, hist2); // span in the other direction
    else {
      // Fill histogram
      Double_t cont = pad->Charge();
      if (hist2->GetBinContent(hist2->GetBin(ix0, ixy)) > 0.01525) // JC: adc -> fc
	cont = TMath::Min (hist1->GetBinContent(hist1->GetBin(ix0, ixy)), cont)
	  + TMath::Min (TMath::Max(hist1->GetBinContent(hist1->GetBin(ix0, ixy)),cont)*0.1,1.525);  // JC: adc -> fc
      hist1->SetBinContent(hist1->GetBin(ix0, ixy), cont);
      hist2->SetBinContent( hist2->GetBin(ix0, ixy), hist2->GetBinContent(hist2->GetBin(ix0, ixy))+amask);
    }
  }
}

//_____________________________________________________________________________
Int_t AliMUONClusterFinderPeakCOG::FindLocalMaxima(TObjArray *pixArray, Int_t *localMax, Double_t *maxVal)
{
/// Find local maxima in pixel space 

  AliDebug(1,Form("nPix=%d",pixArray->GetLast()+1));

  //TH2D *hist = NULL;
  //delete ((TH2D*) gROOT->FindObject("anode"));
  //if (pixArray == fPixArray) hist = (TH2D*) gROOT->FindObject("anode");
  //else { hist = (TH2D*) gROOT->FindObject("anode1"); cout << hist << endl; }
  //if (hist) hist->Delete();
  delete fHistAnode;
 
  Double_t xylim[4] = {999, 999, 999, 999};

  Int_t nPix = pixArray->GetEntriesFast();
  
  if ( nPix <= 0 ) return 0;
  
  AliMUONPad *pixPtr = 0;
  for (Int_t ipix = 0; ipix < nPix; ++ipix) {
    pixPtr = (AliMUONPad*) pixArray->UncheckedAt(ipix);
    for (Int_t i = 0; i < 4; ++i) 
         xylim[i] = TMath::Min (xylim[i], (i%2 ? -1 : 1)*pixPtr->Coord(i/2));
  }
  for (Int_t i = 0; i < 4; ++i) xylim[i] -= pixPtr->Size(i/2); 

  Int_t nx = TMath::Nint ((-xylim[1]-xylim[0])/pixPtr->Size(0)/2);
  Int_t ny = TMath::Nint ((-xylim[3]-xylim[2])/pixPtr->Size(1)/2);
  if (pixArray == fPixArray) fHistAnode = new TH2D("anode","anode",nx,xylim[0],-xylim[1],ny,xylim[2],-xylim[3]);
  else fHistAnode = new TH2D("anode1","anode1",nx,xylim[0],-xylim[1],ny,xylim[2],-xylim[3]);
  for (Int_t ipix = 0; ipix < nPix; ++ipix) {
    pixPtr = (AliMUONPad*) pixArray->UncheckedAt(ipix);
    fHistAnode->Fill(pixPtr->Coord(0), pixPtr->Coord(1), pixPtr->Charge());
  }
//  if (fDraw && pixArray == fPixArray) fDraw->DrawHist("c2", hist);

  Int_t nMax = 0, indx, nxy = ny * nx;
  Int_t *isLocalMax = new Int_t[nxy];
  for (Int_t i = 0; i < nxy; ++i) isLocalMax[i] = 0; 

  for (Int_t i = 1; i <= ny; ++i) {
    indx = (i-1) * nx;
    for (Int_t j = 1; j <= nx; ++j) {
      if (fHistAnode->GetBinContent(fHistAnode->GetBin(j,i)) < 0.07625) continue; // JC: adc -> fc
      //if (isLocalMax[indx+j-1] < 0) continue;
      if (isLocalMax[indx+j-1] != 0) continue;
      FlagLocalMax(fHistAnode, i, j, isLocalMax);
    }
  }

  for (Int_t i = 1; i <= ny; ++i) {
    indx = (i-1) * nx;
    for (Int_t j = 1; j <= nx; ++j) {
      if (isLocalMax[indx+j-1] > 0) { 
	localMax[nMax] = indx + j - 1; 
	maxVal[nMax++] = fHistAnode->GetBinContent(fHistAnode->GetBin(j,i));
	if (nMax > 99) break;
      }
    }
    if (nMax > 99) {
      AliError(" Too many local maxima !!!");
      break;
    }
  }
  if (fDebug) cout << " Local max: " << nMax << endl;
  delete [] isLocalMax; 
  return nMax;
}

//_____________________________________________________________________________
void AliMUONClusterFinderPeakCOG::FlagLocalMax(TH2D *hist, Int_t i, Int_t j, Int_t *isLocalMax)
{
/// Flag pixels (whether or not local maxima)

  Int_t nx = hist->GetNbinsX();
  Int_t ny = hist->GetNbinsY();
  Int_t cont = TMath::Nint (hist->GetBinContent(hist->GetBin(j,i)));
  Int_t cont1 = 0, indx = (i-1)*nx+j-1, indx1 = 0, indx2 = 0;

  Int_t ie = i + 2, je = j + 2;
  for (Int_t i1 = i-1; i1 < ie; ++i1) {
    if (i1 < 1 || i1 > ny) continue;
    indx1 = (i1 - 1) * nx;
    for (Int_t j1 = j-1; j1 < je; ++j1) {
      if (j1 < 1 || j1 > nx) continue;
      if (i == i1 && j == j1) continue;
      indx2 = indx1 + j1 - 1;
      cont1 = TMath::Nint (hist->GetBinContent(hist->GetBin(j1,i1)));
      if (cont < cont1) { isLocalMax[indx] = -1; return; }
      else if (cont > cont1) isLocalMax[indx2] = -1;
      else { // the same charge
	isLocalMax[indx] = 1; 
	if (isLocalMax[indx2] == 0) {
	  FlagLocalMax(hist, i1, j1, isLocalMax);
	  if (isLocalMax[indx2] < 0) { isLocalMax[indx] = -1; return; }
	  else isLocalMax[indx2] = -1;
	}
      } 
    }
  }
  isLocalMax[indx] = 1; // local maximum
}

//_____________________________________________________________________________
void AliMUONClusterFinderPeakCOG::FindCluster(AliMUONCluster& cluster, 
                                              const Int_t *localMax, Int_t iMax)
{
/// Find pixel cluster around local maximum \a iMax and pick up pads
/// overlapping with it

  //TH2D *hist = (TH2D*) gROOT->FindObject("anode");
  /* Just for check
  TCanvas* c = new TCanvas("Anode","Anode",800,600);
  c->cd();
  hist->Draw("lego1Fb"); // debug
  c->Update();
  Int_t tmp;
  cin >> tmp;
  */
  Int_t nx = fHistAnode->GetNbinsX();
  //Int_t ny = hist->GetNbinsY();
  Int_t ic = localMax[iMax] / nx + 1;
  Int_t jc = localMax[iMax] % nx + 1;

  // Get min pad dimensions for the precluster
  Int_t nSides = 2;
  if (cluster.Multiplicity(0) == 0 || cluster.Multiplicity(1) == 0) nSides = 1;
  TVector2 dim0 = cluster.MinPadDimensions(0, -1, kFALSE);
  TVector2 dim1 = cluster.MinPadDimensions(1, -1, kFALSE);
  //Double_t width[2][2] = {{dim0.X(), dim0.Y()},{dim1.X(),dim1.Y()}};
  Int_t nonb[2] = {1, 0}; // coordinate index vs cathode
  if (nSides == 1 || dim0.X() < dim1.X() - fgkDistancePrecision) {
    nonb[0] = 0;
    nonb[1] = 1;
  }

  // Drop all pixels from the array - pick up only the ones from the cluster
  //fPixArray->Delete();

  Double_t wx = fHistAnode->GetXaxis()->GetBinWidth(1)/2; 
  Double_t wy = fHistAnode->GetYaxis()->GetBinWidth(1)/2;  
  Double_t yc = fHistAnode->GetYaxis()->GetBinCenter(ic);
  Double_t xc = fHistAnode->GetXaxis()->GetBinCenter(jc);
  Double_t cont = fHistAnode->GetBinContent(fHistAnode->GetBin(jc,ic));
  AliMUONPad pixel(xc, yc, wx, wy, cont);
  if (fDebug) pixel.Print("full"); 

  Int_t npad = cluster.Multiplicity();
  
  // Pick up pads which overlap with the maximum pixel and find pads with the max signal
  Double_t qMax[2] = {0}; 
  AliMUONPad *matrix[2][3] = {{0x0,0x0,0x0},{0x0,0x0,0x0}};
  for (Int_t j = 0; j < npad; ++j) 
  {
    AliMUONPad* pad = cluster.Pad(j);
    if ( Overlap(*pad,pixel) )
    {
      if (fDebug) { cout << j << " "; pad->Print("full"); }
      if (pad->Charge() > qMax[pad->Cathode()]) {
	qMax[pad->Cathode()] = pad->Charge();
	matrix[pad->Cathode()][1] = pad;
	if (nSides == 1) matrix[!pad->Cathode()][1] = pad;
      }
    }
  }
  //if (nSides == 2 && (matrix[0][1] == 0x0 || matrix[1][1] == 0x0)) return; // ???

  // Find neighbours of maxima to have 3 pads per direction (if possible)
  for (Int_t j = 0; j < npad; ++j) 
  {
    AliMUONPad* pad = cluster.Pad(j);
    Int_t cath = pad->Cathode();
    if (pad == matrix[cath][1]) continue;
    Int_t nLoops = 3 - nSides;

    for (Int_t k = 0; k < nLoops; ++k) {
      Int_t cath1 = cath;
      if (k) cath1 = !cath;

      // Check the coordinate corresponding to the cathode (bending or non-bending case)
      Double_t dist = pad->Coord(nonb[cath1]) - matrix[cath][1]->Coord(nonb[cath1]);
      Double_t dir = TMath::Sign (1., dist);
      dist = TMath::Abs(dist) - pad->Size(nonb[cath1]) - matrix[cath][1]->Size(nonb[cath1]);

      if (TMath::Abs(dist) < fgkDistancePrecision) {
	// Check the other coordinate
	dist = pad->Coord(!nonb[cath1]) - matrix[cath1][1]->Coord(!nonb[cath1]);
	if (TMath::Abs(dist) > 
	    TMath::Max(pad->Size(!nonb[cath1]), matrix[cath1][1]->Size(!nonb[cath1])) - fgkDistancePrecision) break;
	Int_t idir = TMath::Nint (dir);
	if (matrix[cath1][1+idir] == 0x0) matrix[cath1][1+idir] = pad;
	else if (pad->Charge() > matrix[cath1][1+idir]->Charge()) matrix[cath1][1+idir] = pad; // diff. segmentation
	//cout << pad->Coord(nonb[cath1]) << " " << pad->Coord(!nonb[cath1]) << " " << pad->Size(nonb[cath1]) << " " << pad->Size(!nonb[cath1]) << " " << pad->Charge() << endl ;
	break;
      }
    }
  }

  Double_t coord[2] = {0.}, qAver = 0.;
  for (Int_t i = 0; i < 2; ++i) {
    Double_t q = 0.;
    Double_t coordQ = 0.;
    Int_t cath = matrix[i][1]->Cathode();
    if (i && nSides == 1) cath = !cath;
    for (Int_t j = 0; j < 3; ++j) {
      if (matrix[i][j] == 0x0) continue;
      Double_t dq = matrix[i][j]->Charge();
      q += dq;
      coordQ += dq * matrix[i][j]->Coord(nonb[cath]);
      //coordQ += (matrix[i][j]->Charge() * matrix[i][j]->Coord(nonb[cath]));
    }
    coord[cath] = coordQ / q;
    qAver = TMath::Max (qAver, q);
  }

  //qAver = TMath::Sqrt(qAver);
  if ( qAver >= 2.135 ) // JC: adc -> fc
  {
    
    AliMUONCluster* cluster1 = new AliMUONCluster(cluster);
      
    cluster1->SetCharge(qAver,qAver);
    if (nonb[0] == 1) 
      cluster1->SetPosition(TVector2(coord[1],coord[0]),TVector2(0.,0.));
    else 
      cluster1->SetPosition(TVector2(coord[0],coord[1]),TVector2(0.,0.));

    cluster1->SetChi2(0.);
      
    // FIXME: we miss some information in this cluster, as compared to 
    // the original AddRawCluster code.
      
    AliDebug(2,Form("Adding RawCluster detElemId %4d mult %2d charge %5d (xl,yl)=(%9.6g,%9.6g)",
		    fDetElemId,cluster1->Multiplicity(),(Int_t)cluster1->Charge(),
		    cluster1->Position().X(),cluster1->Position().Y()));
        
    fClusterList.Add(cluster1);
  }
}

//_____________________________________________________________________________
AliMUONClusterFinderPeakCOG&  
AliMUONClusterFinderPeakCOG::operator=(const AliMUONClusterFinderPeakCOG& rhs)
{
/// Protected assignement operator

  if (this == &rhs) return *this;

  AliFatal("Not implemented.");
    
  return *this;  
}    

//_____________________________________________________________________________
void AliMUONClusterFinderPeakCOG::PadsInXandY(AliMUONCluster& cluster,
                                           Int_t &nInX, Int_t &nInY) const
{
  /// Find number of pads in X and Y-directions (excluding virtual ones and
  /// overflows)

  //Int_t statusToTest = 1;
  Int_t statusToTest = fgkUseForFit;
  
  //if ( nInX < 0 ) statusToTest = 0;
  if ( nInX < 0 ) statusToTest = fgkZero;
       
  Bool_t mustMatch(kTRUE);

  Long_t cn = cluster.NofPads(statusToTest,mustMatch);
  
  nInX = AliMp::PairFirst(cn);
  nInY = AliMp::PairSecond(cn);
}

//_____________________________________________________________________________
void AliMUONClusterFinderPeakCOG::RemovePixel(Int_t i)
{
  /// Remove pixel at index i
  AliMUONPad* pixPtr = Pixel(i);
  fPixArray->RemoveAt(i); 
  delete pixPtr;
}

//_____________________________________________________________________________
AliMUONPad* 
AliMUONClusterFinderPeakCOG::Pixel(Int_t i) const
{
  /// Returns pixel at index i
  return static_cast<AliMUONPad*>(fPixArray->UncheckedAt(i));
}

//_____________________________________________________________________________
void 
AliMUONClusterFinderPeakCOG::Print(Option_t* what) const
{
  /// printout
  TString swhat(what);
  swhat.ToLower();
  if ( swhat.Contains("precluster") )
  {
    if ( fPreCluster) fPreCluster->Print();
  }
}


 AliMUONClusterFinderPeakCOG.cxx:1
 AliMUONClusterFinderPeakCOG.cxx:2
 AliMUONClusterFinderPeakCOG.cxx:3
 AliMUONClusterFinderPeakCOG.cxx:4
 AliMUONClusterFinderPeakCOG.cxx:5
 AliMUONClusterFinderPeakCOG.cxx:6
 AliMUONClusterFinderPeakCOG.cxx:7
 AliMUONClusterFinderPeakCOG.cxx:8
 AliMUONClusterFinderPeakCOG.cxx:9
 AliMUONClusterFinderPeakCOG.cxx:10
 AliMUONClusterFinderPeakCOG.cxx:11
 AliMUONClusterFinderPeakCOG.cxx:12
 AliMUONClusterFinderPeakCOG.cxx:13
 AliMUONClusterFinderPeakCOG.cxx:14
 AliMUONClusterFinderPeakCOG.cxx:15
 AliMUONClusterFinderPeakCOG.cxx:16
 AliMUONClusterFinderPeakCOG.cxx:17
 AliMUONClusterFinderPeakCOG.cxx:18
 AliMUONClusterFinderPeakCOG.cxx:19
 AliMUONClusterFinderPeakCOG.cxx:20
 AliMUONClusterFinderPeakCOG.cxx:21
 AliMUONClusterFinderPeakCOG.cxx:22
 AliMUONClusterFinderPeakCOG.cxx:23
 AliMUONClusterFinderPeakCOG.cxx:24
 AliMUONClusterFinderPeakCOG.cxx:25
 AliMUONClusterFinderPeakCOG.cxx:26
 AliMUONClusterFinderPeakCOG.cxx:27
 AliMUONClusterFinderPeakCOG.cxx:28
 AliMUONClusterFinderPeakCOG.cxx:29
 AliMUONClusterFinderPeakCOG.cxx:30
 AliMUONClusterFinderPeakCOG.cxx:31
 AliMUONClusterFinderPeakCOG.cxx:32
 AliMUONClusterFinderPeakCOG.cxx:33
 AliMUONClusterFinderPeakCOG.cxx:34
 AliMUONClusterFinderPeakCOG.cxx:35
 AliMUONClusterFinderPeakCOG.cxx:36
 AliMUONClusterFinderPeakCOG.cxx:37
 AliMUONClusterFinderPeakCOG.cxx:38
 AliMUONClusterFinderPeakCOG.cxx:39
 AliMUONClusterFinderPeakCOG.cxx:40
 AliMUONClusterFinderPeakCOG.cxx:41
 AliMUONClusterFinderPeakCOG.cxx:42
 AliMUONClusterFinderPeakCOG.cxx:43
 AliMUONClusterFinderPeakCOG.cxx:44
 AliMUONClusterFinderPeakCOG.cxx:45
 AliMUONClusterFinderPeakCOG.cxx:46
 AliMUONClusterFinderPeakCOG.cxx:47
 AliMUONClusterFinderPeakCOG.cxx:48
 AliMUONClusterFinderPeakCOG.cxx:49
 AliMUONClusterFinderPeakCOG.cxx:50
 AliMUONClusterFinderPeakCOG.cxx:51
 AliMUONClusterFinderPeakCOG.cxx:52
 AliMUONClusterFinderPeakCOG.cxx:53
 AliMUONClusterFinderPeakCOG.cxx:54
 AliMUONClusterFinderPeakCOG.cxx:55
 AliMUONClusterFinderPeakCOG.cxx:56
 AliMUONClusterFinderPeakCOG.cxx:57
 AliMUONClusterFinderPeakCOG.cxx:58
 AliMUONClusterFinderPeakCOG.cxx:59
 AliMUONClusterFinderPeakCOG.cxx:60
 AliMUONClusterFinderPeakCOG.cxx:61
 AliMUONClusterFinderPeakCOG.cxx:62
 AliMUONClusterFinderPeakCOG.cxx:63
 AliMUONClusterFinderPeakCOG.cxx:64
 AliMUONClusterFinderPeakCOG.cxx:65
 AliMUONClusterFinderPeakCOG.cxx:66
 AliMUONClusterFinderPeakCOG.cxx:67
 AliMUONClusterFinderPeakCOG.cxx:68
 AliMUONClusterFinderPeakCOG.cxx:69
 AliMUONClusterFinderPeakCOG.cxx:70
 AliMUONClusterFinderPeakCOG.cxx:71
 AliMUONClusterFinderPeakCOG.cxx:72
 AliMUONClusterFinderPeakCOG.cxx:73
 AliMUONClusterFinderPeakCOG.cxx:74
 AliMUONClusterFinderPeakCOG.cxx:75
 AliMUONClusterFinderPeakCOG.cxx:76
 AliMUONClusterFinderPeakCOG.cxx:77
 AliMUONClusterFinderPeakCOG.cxx:78
 AliMUONClusterFinderPeakCOG.cxx:79
 AliMUONClusterFinderPeakCOG.cxx:80
 AliMUONClusterFinderPeakCOG.cxx:81
 AliMUONClusterFinderPeakCOG.cxx:82
 AliMUONClusterFinderPeakCOG.cxx:83
 AliMUONClusterFinderPeakCOG.cxx:84
 AliMUONClusterFinderPeakCOG.cxx:85
 AliMUONClusterFinderPeakCOG.cxx:86
 AliMUONClusterFinderPeakCOG.cxx:87
 AliMUONClusterFinderPeakCOG.cxx:88
 AliMUONClusterFinderPeakCOG.cxx:89
 AliMUONClusterFinderPeakCOG.cxx:90
 AliMUONClusterFinderPeakCOG.cxx:91
 AliMUONClusterFinderPeakCOG.cxx:92
 AliMUONClusterFinderPeakCOG.cxx:93
 AliMUONClusterFinderPeakCOG.cxx:94
 AliMUONClusterFinderPeakCOG.cxx:95
 AliMUONClusterFinderPeakCOG.cxx:96
 AliMUONClusterFinderPeakCOG.cxx:97
 AliMUONClusterFinderPeakCOG.cxx:98
 AliMUONClusterFinderPeakCOG.cxx:99
 AliMUONClusterFinderPeakCOG.cxx:100
 AliMUONClusterFinderPeakCOG.cxx:101
 AliMUONClusterFinderPeakCOG.cxx:102
 AliMUONClusterFinderPeakCOG.cxx:103
 AliMUONClusterFinderPeakCOG.cxx:104
 AliMUONClusterFinderPeakCOG.cxx:105
 AliMUONClusterFinderPeakCOG.cxx:106
 AliMUONClusterFinderPeakCOG.cxx:107
 AliMUONClusterFinderPeakCOG.cxx:108
 AliMUONClusterFinderPeakCOG.cxx:109
 AliMUONClusterFinderPeakCOG.cxx:110
 AliMUONClusterFinderPeakCOG.cxx:111
 AliMUONClusterFinderPeakCOG.cxx:112
 AliMUONClusterFinderPeakCOG.cxx:113
 AliMUONClusterFinderPeakCOG.cxx:114
 AliMUONClusterFinderPeakCOG.cxx:115
 AliMUONClusterFinderPeakCOG.cxx:116
 AliMUONClusterFinderPeakCOG.cxx:117
 AliMUONClusterFinderPeakCOG.cxx:118
 AliMUONClusterFinderPeakCOG.cxx:119
 AliMUONClusterFinderPeakCOG.cxx:120
 AliMUONClusterFinderPeakCOG.cxx:121
 AliMUONClusterFinderPeakCOG.cxx:122
 AliMUONClusterFinderPeakCOG.cxx:123
 AliMUONClusterFinderPeakCOG.cxx:124
 AliMUONClusterFinderPeakCOG.cxx:125
 AliMUONClusterFinderPeakCOG.cxx:126
 AliMUONClusterFinderPeakCOG.cxx:127
 AliMUONClusterFinderPeakCOG.cxx:128
 AliMUONClusterFinderPeakCOG.cxx:129
 AliMUONClusterFinderPeakCOG.cxx:130
 AliMUONClusterFinderPeakCOG.cxx:131
 AliMUONClusterFinderPeakCOG.cxx:132
 AliMUONClusterFinderPeakCOG.cxx:133
 AliMUONClusterFinderPeakCOG.cxx:134
 AliMUONClusterFinderPeakCOG.cxx:135
 AliMUONClusterFinderPeakCOG.cxx:136
 AliMUONClusterFinderPeakCOG.cxx:137
 AliMUONClusterFinderPeakCOG.cxx:138
 AliMUONClusterFinderPeakCOG.cxx:139
 AliMUONClusterFinderPeakCOG.cxx:140
 AliMUONClusterFinderPeakCOG.cxx:141
 AliMUONClusterFinderPeakCOG.cxx:142
 AliMUONClusterFinderPeakCOG.cxx:143
 AliMUONClusterFinderPeakCOG.cxx:144
 AliMUONClusterFinderPeakCOG.cxx:145
 AliMUONClusterFinderPeakCOG.cxx:146
 AliMUONClusterFinderPeakCOG.cxx:147
 AliMUONClusterFinderPeakCOG.cxx:148
 AliMUONClusterFinderPeakCOG.cxx:149
 AliMUONClusterFinderPeakCOG.cxx:150
 AliMUONClusterFinderPeakCOG.cxx:151
 AliMUONClusterFinderPeakCOG.cxx:152
 AliMUONClusterFinderPeakCOG.cxx:153
 AliMUONClusterFinderPeakCOG.cxx:154
 AliMUONClusterFinderPeakCOG.cxx:155
 AliMUONClusterFinderPeakCOG.cxx:156
 AliMUONClusterFinderPeakCOG.cxx:157
 AliMUONClusterFinderPeakCOG.cxx:158
 AliMUONClusterFinderPeakCOG.cxx:159
 AliMUONClusterFinderPeakCOG.cxx:160
 AliMUONClusterFinderPeakCOG.cxx:161
 AliMUONClusterFinderPeakCOG.cxx:162
 AliMUONClusterFinderPeakCOG.cxx:163
 AliMUONClusterFinderPeakCOG.cxx:164
 AliMUONClusterFinderPeakCOG.cxx:165
 AliMUONClusterFinderPeakCOG.cxx:166
 AliMUONClusterFinderPeakCOG.cxx:167
 AliMUONClusterFinderPeakCOG.cxx:168
 AliMUONClusterFinderPeakCOG.cxx:169
 AliMUONClusterFinderPeakCOG.cxx:170
 AliMUONClusterFinderPeakCOG.cxx:171
 AliMUONClusterFinderPeakCOG.cxx:172
 AliMUONClusterFinderPeakCOG.cxx:173
 AliMUONClusterFinderPeakCOG.cxx:174
 AliMUONClusterFinderPeakCOG.cxx:175
 AliMUONClusterFinderPeakCOG.cxx:176
 AliMUONClusterFinderPeakCOG.cxx:177
 AliMUONClusterFinderPeakCOG.cxx:178
 AliMUONClusterFinderPeakCOG.cxx:179
 AliMUONClusterFinderPeakCOG.cxx:180
 AliMUONClusterFinderPeakCOG.cxx:181
 AliMUONClusterFinderPeakCOG.cxx:182
 AliMUONClusterFinderPeakCOG.cxx:183
 AliMUONClusterFinderPeakCOG.cxx:184
 AliMUONClusterFinderPeakCOG.cxx:185
 AliMUONClusterFinderPeakCOG.cxx:186
 AliMUONClusterFinderPeakCOG.cxx:187
 AliMUONClusterFinderPeakCOG.cxx:188
 AliMUONClusterFinderPeakCOG.cxx:189
 AliMUONClusterFinderPeakCOG.cxx:190
 AliMUONClusterFinderPeakCOG.cxx:191
 AliMUONClusterFinderPeakCOG.cxx:192
 AliMUONClusterFinderPeakCOG.cxx:193
 AliMUONClusterFinderPeakCOG.cxx:194
 AliMUONClusterFinderPeakCOG.cxx:195
 AliMUONClusterFinderPeakCOG.cxx:196
 AliMUONClusterFinderPeakCOG.cxx:197
 AliMUONClusterFinderPeakCOG.cxx:198
 AliMUONClusterFinderPeakCOG.cxx:199
 AliMUONClusterFinderPeakCOG.cxx:200
 AliMUONClusterFinderPeakCOG.cxx:201
 AliMUONClusterFinderPeakCOG.cxx:202
 AliMUONClusterFinderPeakCOG.cxx:203
 AliMUONClusterFinderPeakCOG.cxx:204
 AliMUONClusterFinderPeakCOG.cxx:205
 AliMUONClusterFinderPeakCOG.cxx:206
 AliMUONClusterFinderPeakCOG.cxx:207
 AliMUONClusterFinderPeakCOG.cxx:208
 AliMUONClusterFinderPeakCOG.cxx:209
 AliMUONClusterFinderPeakCOG.cxx:210
 AliMUONClusterFinderPeakCOG.cxx:211
 AliMUONClusterFinderPeakCOG.cxx:212
 AliMUONClusterFinderPeakCOG.cxx:213
 AliMUONClusterFinderPeakCOG.cxx:214
 AliMUONClusterFinderPeakCOG.cxx:215
 AliMUONClusterFinderPeakCOG.cxx:216
 AliMUONClusterFinderPeakCOG.cxx:217
 AliMUONClusterFinderPeakCOG.cxx:218
 AliMUONClusterFinderPeakCOG.cxx:219
 AliMUONClusterFinderPeakCOG.cxx:220
 AliMUONClusterFinderPeakCOG.cxx:221
 AliMUONClusterFinderPeakCOG.cxx:222
 AliMUONClusterFinderPeakCOG.cxx:223
 AliMUONClusterFinderPeakCOG.cxx:224
 AliMUONClusterFinderPeakCOG.cxx:225
 AliMUONClusterFinderPeakCOG.cxx:226
 AliMUONClusterFinderPeakCOG.cxx:227
 AliMUONClusterFinderPeakCOG.cxx:228
 AliMUONClusterFinderPeakCOG.cxx:229
 AliMUONClusterFinderPeakCOG.cxx:230
 AliMUONClusterFinderPeakCOG.cxx:231
 AliMUONClusterFinderPeakCOG.cxx:232
 AliMUONClusterFinderPeakCOG.cxx:233
 AliMUONClusterFinderPeakCOG.cxx:234
 AliMUONClusterFinderPeakCOG.cxx:235
 AliMUONClusterFinderPeakCOG.cxx:236
 AliMUONClusterFinderPeakCOG.cxx:237
 AliMUONClusterFinderPeakCOG.cxx:238
 AliMUONClusterFinderPeakCOG.cxx:239
 AliMUONClusterFinderPeakCOG.cxx:240
 AliMUONClusterFinderPeakCOG.cxx:241
 AliMUONClusterFinderPeakCOG.cxx:242
 AliMUONClusterFinderPeakCOG.cxx:243
 AliMUONClusterFinderPeakCOG.cxx:244
 AliMUONClusterFinderPeakCOG.cxx:245
 AliMUONClusterFinderPeakCOG.cxx:246
 AliMUONClusterFinderPeakCOG.cxx:247
 AliMUONClusterFinderPeakCOG.cxx:248
 AliMUONClusterFinderPeakCOG.cxx:249
 AliMUONClusterFinderPeakCOG.cxx:250
 AliMUONClusterFinderPeakCOG.cxx:251
 AliMUONClusterFinderPeakCOG.cxx:252
 AliMUONClusterFinderPeakCOG.cxx:253
 AliMUONClusterFinderPeakCOG.cxx:254
 AliMUONClusterFinderPeakCOG.cxx:255
 AliMUONClusterFinderPeakCOG.cxx:256
 AliMUONClusterFinderPeakCOG.cxx:257
 AliMUONClusterFinderPeakCOG.cxx:258
 AliMUONClusterFinderPeakCOG.cxx:259
 AliMUONClusterFinderPeakCOG.cxx:260
 AliMUONClusterFinderPeakCOG.cxx:261
 AliMUONClusterFinderPeakCOG.cxx:262
 AliMUONClusterFinderPeakCOG.cxx:263
 AliMUONClusterFinderPeakCOG.cxx:264
 AliMUONClusterFinderPeakCOG.cxx:265
 AliMUONClusterFinderPeakCOG.cxx:266
 AliMUONClusterFinderPeakCOG.cxx:267
 AliMUONClusterFinderPeakCOG.cxx:268
 AliMUONClusterFinderPeakCOG.cxx:269
 AliMUONClusterFinderPeakCOG.cxx:270
 AliMUONClusterFinderPeakCOG.cxx:271
 AliMUONClusterFinderPeakCOG.cxx:272
 AliMUONClusterFinderPeakCOG.cxx:273
 AliMUONClusterFinderPeakCOG.cxx:274
 AliMUONClusterFinderPeakCOG.cxx:275
 AliMUONClusterFinderPeakCOG.cxx:276
 AliMUONClusterFinderPeakCOG.cxx:277
 AliMUONClusterFinderPeakCOG.cxx:278
 AliMUONClusterFinderPeakCOG.cxx:279
 AliMUONClusterFinderPeakCOG.cxx:280
 AliMUONClusterFinderPeakCOG.cxx:281
 AliMUONClusterFinderPeakCOG.cxx:282
 AliMUONClusterFinderPeakCOG.cxx:283
 AliMUONClusterFinderPeakCOG.cxx:284
 AliMUONClusterFinderPeakCOG.cxx:285
 AliMUONClusterFinderPeakCOG.cxx:286
 AliMUONClusterFinderPeakCOG.cxx:287
 AliMUONClusterFinderPeakCOG.cxx:288
 AliMUONClusterFinderPeakCOG.cxx:289
 AliMUONClusterFinderPeakCOG.cxx:290
 AliMUONClusterFinderPeakCOG.cxx:291
 AliMUONClusterFinderPeakCOG.cxx:292
 AliMUONClusterFinderPeakCOG.cxx:293
 AliMUONClusterFinderPeakCOG.cxx:294
 AliMUONClusterFinderPeakCOG.cxx:295
 AliMUONClusterFinderPeakCOG.cxx:296
 AliMUONClusterFinderPeakCOG.cxx:297
 AliMUONClusterFinderPeakCOG.cxx:298
 AliMUONClusterFinderPeakCOG.cxx:299
 AliMUONClusterFinderPeakCOG.cxx:300
 AliMUONClusterFinderPeakCOG.cxx:301
 AliMUONClusterFinderPeakCOG.cxx:302
 AliMUONClusterFinderPeakCOG.cxx:303
 AliMUONClusterFinderPeakCOG.cxx:304
 AliMUONClusterFinderPeakCOG.cxx:305
 AliMUONClusterFinderPeakCOG.cxx:306
 AliMUONClusterFinderPeakCOG.cxx:307
 AliMUONClusterFinderPeakCOG.cxx:308
 AliMUONClusterFinderPeakCOG.cxx:309
 AliMUONClusterFinderPeakCOG.cxx:310
 AliMUONClusterFinderPeakCOG.cxx:311
 AliMUONClusterFinderPeakCOG.cxx:312
 AliMUONClusterFinderPeakCOG.cxx:313
 AliMUONClusterFinderPeakCOG.cxx:314
 AliMUONClusterFinderPeakCOG.cxx:315
 AliMUONClusterFinderPeakCOG.cxx:316
 AliMUONClusterFinderPeakCOG.cxx:317
 AliMUONClusterFinderPeakCOG.cxx:318
 AliMUONClusterFinderPeakCOG.cxx:319
 AliMUONClusterFinderPeakCOG.cxx:320
 AliMUONClusterFinderPeakCOG.cxx:321
 AliMUONClusterFinderPeakCOG.cxx:322
 AliMUONClusterFinderPeakCOG.cxx:323
 AliMUONClusterFinderPeakCOG.cxx:324
 AliMUONClusterFinderPeakCOG.cxx:325
 AliMUONClusterFinderPeakCOG.cxx:326
 AliMUONClusterFinderPeakCOG.cxx:327
 AliMUONClusterFinderPeakCOG.cxx:328
 AliMUONClusterFinderPeakCOG.cxx:329
 AliMUONClusterFinderPeakCOG.cxx:330
 AliMUONClusterFinderPeakCOG.cxx:331
 AliMUONClusterFinderPeakCOG.cxx:332
 AliMUONClusterFinderPeakCOG.cxx:333
 AliMUONClusterFinderPeakCOG.cxx:334
 AliMUONClusterFinderPeakCOG.cxx:335
 AliMUONClusterFinderPeakCOG.cxx:336
 AliMUONClusterFinderPeakCOG.cxx:337
 AliMUONClusterFinderPeakCOG.cxx:338
 AliMUONClusterFinderPeakCOG.cxx:339
 AliMUONClusterFinderPeakCOG.cxx:340
 AliMUONClusterFinderPeakCOG.cxx:341
 AliMUONClusterFinderPeakCOG.cxx:342
 AliMUONClusterFinderPeakCOG.cxx:343
 AliMUONClusterFinderPeakCOG.cxx:344
 AliMUONClusterFinderPeakCOG.cxx:345
 AliMUONClusterFinderPeakCOG.cxx:346
 AliMUONClusterFinderPeakCOG.cxx:347
 AliMUONClusterFinderPeakCOG.cxx:348
 AliMUONClusterFinderPeakCOG.cxx:349
 AliMUONClusterFinderPeakCOG.cxx:350
 AliMUONClusterFinderPeakCOG.cxx:351
 AliMUONClusterFinderPeakCOG.cxx:352
 AliMUONClusterFinderPeakCOG.cxx:353
 AliMUONClusterFinderPeakCOG.cxx:354
 AliMUONClusterFinderPeakCOG.cxx:355
 AliMUONClusterFinderPeakCOG.cxx:356
 AliMUONClusterFinderPeakCOG.cxx:357
 AliMUONClusterFinderPeakCOG.cxx:358
 AliMUONClusterFinderPeakCOG.cxx:359
 AliMUONClusterFinderPeakCOG.cxx:360
 AliMUONClusterFinderPeakCOG.cxx:361
 AliMUONClusterFinderPeakCOG.cxx:362
 AliMUONClusterFinderPeakCOG.cxx:363
 AliMUONClusterFinderPeakCOG.cxx:364
 AliMUONClusterFinderPeakCOG.cxx:365
 AliMUONClusterFinderPeakCOG.cxx:366
 AliMUONClusterFinderPeakCOG.cxx:367
 AliMUONClusterFinderPeakCOG.cxx:368
 AliMUONClusterFinderPeakCOG.cxx:369
 AliMUONClusterFinderPeakCOG.cxx:370
 AliMUONClusterFinderPeakCOG.cxx:371
 AliMUONClusterFinderPeakCOG.cxx:372
 AliMUONClusterFinderPeakCOG.cxx:373
 AliMUONClusterFinderPeakCOG.cxx:374
 AliMUONClusterFinderPeakCOG.cxx:375
 AliMUONClusterFinderPeakCOG.cxx:376
 AliMUONClusterFinderPeakCOG.cxx:377
 AliMUONClusterFinderPeakCOG.cxx:378
 AliMUONClusterFinderPeakCOG.cxx:379
 AliMUONClusterFinderPeakCOG.cxx:380
 AliMUONClusterFinderPeakCOG.cxx:381
 AliMUONClusterFinderPeakCOG.cxx:382
 AliMUONClusterFinderPeakCOG.cxx:383
 AliMUONClusterFinderPeakCOG.cxx:384
 AliMUONClusterFinderPeakCOG.cxx:385
 AliMUONClusterFinderPeakCOG.cxx:386
 AliMUONClusterFinderPeakCOG.cxx:387
 AliMUONClusterFinderPeakCOG.cxx:388
 AliMUONClusterFinderPeakCOG.cxx:389
 AliMUONClusterFinderPeakCOG.cxx:390
 AliMUONClusterFinderPeakCOG.cxx:391
 AliMUONClusterFinderPeakCOG.cxx:392
 AliMUONClusterFinderPeakCOG.cxx:393
 AliMUONClusterFinderPeakCOG.cxx:394
 AliMUONClusterFinderPeakCOG.cxx:395
 AliMUONClusterFinderPeakCOG.cxx:396
 AliMUONClusterFinderPeakCOG.cxx:397
 AliMUONClusterFinderPeakCOG.cxx:398
 AliMUONClusterFinderPeakCOG.cxx:399
 AliMUONClusterFinderPeakCOG.cxx:400
 AliMUONClusterFinderPeakCOG.cxx:401
 AliMUONClusterFinderPeakCOG.cxx:402
 AliMUONClusterFinderPeakCOG.cxx:403
 AliMUONClusterFinderPeakCOG.cxx:404
 AliMUONClusterFinderPeakCOG.cxx:405
 AliMUONClusterFinderPeakCOG.cxx:406
 AliMUONClusterFinderPeakCOG.cxx:407
 AliMUONClusterFinderPeakCOG.cxx:408
 AliMUONClusterFinderPeakCOG.cxx:409
 AliMUONClusterFinderPeakCOG.cxx:410
 AliMUONClusterFinderPeakCOG.cxx:411
 AliMUONClusterFinderPeakCOG.cxx:412
 AliMUONClusterFinderPeakCOG.cxx:413
 AliMUONClusterFinderPeakCOG.cxx:414
 AliMUONClusterFinderPeakCOG.cxx:415
 AliMUONClusterFinderPeakCOG.cxx:416
 AliMUONClusterFinderPeakCOG.cxx:417
 AliMUONClusterFinderPeakCOG.cxx:418
 AliMUONClusterFinderPeakCOG.cxx:419
 AliMUONClusterFinderPeakCOG.cxx:420
 AliMUONClusterFinderPeakCOG.cxx:421
 AliMUONClusterFinderPeakCOG.cxx:422
 AliMUONClusterFinderPeakCOG.cxx:423
 AliMUONClusterFinderPeakCOG.cxx:424
 AliMUONClusterFinderPeakCOG.cxx:425
 AliMUONClusterFinderPeakCOG.cxx:426
 AliMUONClusterFinderPeakCOG.cxx:427
 AliMUONClusterFinderPeakCOG.cxx:428
 AliMUONClusterFinderPeakCOG.cxx:429
 AliMUONClusterFinderPeakCOG.cxx:430
 AliMUONClusterFinderPeakCOG.cxx:431
 AliMUONClusterFinderPeakCOG.cxx:432
 AliMUONClusterFinderPeakCOG.cxx:433
 AliMUONClusterFinderPeakCOG.cxx:434
 AliMUONClusterFinderPeakCOG.cxx:435
 AliMUONClusterFinderPeakCOG.cxx:436
 AliMUONClusterFinderPeakCOG.cxx:437
 AliMUONClusterFinderPeakCOG.cxx:438
 AliMUONClusterFinderPeakCOG.cxx:439
 AliMUONClusterFinderPeakCOG.cxx:440
 AliMUONClusterFinderPeakCOG.cxx:441
 AliMUONClusterFinderPeakCOG.cxx:442
 AliMUONClusterFinderPeakCOG.cxx:443
 AliMUONClusterFinderPeakCOG.cxx:444
 AliMUONClusterFinderPeakCOG.cxx:445
 AliMUONClusterFinderPeakCOG.cxx:446
 AliMUONClusterFinderPeakCOG.cxx:447
 AliMUONClusterFinderPeakCOG.cxx:448
 AliMUONClusterFinderPeakCOG.cxx:449
 AliMUONClusterFinderPeakCOG.cxx:450
 AliMUONClusterFinderPeakCOG.cxx:451
 AliMUONClusterFinderPeakCOG.cxx:452
 AliMUONClusterFinderPeakCOG.cxx:453
 AliMUONClusterFinderPeakCOG.cxx:454
 AliMUONClusterFinderPeakCOG.cxx:455
 AliMUONClusterFinderPeakCOG.cxx:456
 AliMUONClusterFinderPeakCOG.cxx:457
 AliMUONClusterFinderPeakCOG.cxx:458
 AliMUONClusterFinderPeakCOG.cxx:459
 AliMUONClusterFinderPeakCOG.cxx:460
 AliMUONClusterFinderPeakCOG.cxx:461
 AliMUONClusterFinderPeakCOG.cxx:462
 AliMUONClusterFinderPeakCOG.cxx:463
 AliMUONClusterFinderPeakCOG.cxx:464
 AliMUONClusterFinderPeakCOG.cxx:465
 AliMUONClusterFinderPeakCOG.cxx:466
 AliMUONClusterFinderPeakCOG.cxx:467
 AliMUONClusterFinderPeakCOG.cxx:468
 AliMUONClusterFinderPeakCOG.cxx:469
 AliMUONClusterFinderPeakCOG.cxx:470
 AliMUONClusterFinderPeakCOG.cxx:471
 AliMUONClusterFinderPeakCOG.cxx:472
 AliMUONClusterFinderPeakCOG.cxx:473
 AliMUONClusterFinderPeakCOG.cxx:474
 AliMUONClusterFinderPeakCOG.cxx:475
 AliMUONClusterFinderPeakCOG.cxx:476
 AliMUONClusterFinderPeakCOG.cxx:477
 AliMUONClusterFinderPeakCOG.cxx:478
 AliMUONClusterFinderPeakCOG.cxx:479
 AliMUONClusterFinderPeakCOG.cxx:480
 AliMUONClusterFinderPeakCOG.cxx:481
 AliMUONClusterFinderPeakCOG.cxx:482
 AliMUONClusterFinderPeakCOG.cxx:483
 AliMUONClusterFinderPeakCOG.cxx:484
 AliMUONClusterFinderPeakCOG.cxx:485
 AliMUONClusterFinderPeakCOG.cxx:486
 AliMUONClusterFinderPeakCOG.cxx:487
 AliMUONClusterFinderPeakCOG.cxx:488
 AliMUONClusterFinderPeakCOG.cxx:489
 AliMUONClusterFinderPeakCOG.cxx:490
 AliMUONClusterFinderPeakCOG.cxx:491
 AliMUONClusterFinderPeakCOG.cxx:492
 AliMUONClusterFinderPeakCOG.cxx:493
 AliMUONClusterFinderPeakCOG.cxx:494
 AliMUONClusterFinderPeakCOG.cxx:495
 AliMUONClusterFinderPeakCOG.cxx:496
 AliMUONClusterFinderPeakCOG.cxx:497
 AliMUONClusterFinderPeakCOG.cxx:498
 AliMUONClusterFinderPeakCOG.cxx:499
 AliMUONClusterFinderPeakCOG.cxx:500
 AliMUONClusterFinderPeakCOG.cxx:501
 AliMUONClusterFinderPeakCOG.cxx:502
 AliMUONClusterFinderPeakCOG.cxx:503
 AliMUONClusterFinderPeakCOG.cxx:504
 AliMUONClusterFinderPeakCOG.cxx:505
 AliMUONClusterFinderPeakCOG.cxx:506
 AliMUONClusterFinderPeakCOG.cxx:507
 AliMUONClusterFinderPeakCOG.cxx:508
 AliMUONClusterFinderPeakCOG.cxx:509
 AliMUONClusterFinderPeakCOG.cxx:510
 AliMUONClusterFinderPeakCOG.cxx:511
 AliMUONClusterFinderPeakCOG.cxx:512
 AliMUONClusterFinderPeakCOG.cxx:513
 AliMUONClusterFinderPeakCOG.cxx:514
 AliMUONClusterFinderPeakCOG.cxx:515
 AliMUONClusterFinderPeakCOG.cxx:516
 AliMUONClusterFinderPeakCOG.cxx:517
 AliMUONClusterFinderPeakCOG.cxx:518
 AliMUONClusterFinderPeakCOG.cxx:519
 AliMUONClusterFinderPeakCOG.cxx:520
 AliMUONClusterFinderPeakCOG.cxx:521
 AliMUONClusterFinderPeakCOG.cxx:522
 AliMUONClusterFinderPeakCOG.cxx:523
 AliMUONClusterFinderPeakCOG.cxx:524
 AliMUONClusterFinderPeakCOG.cxx:525
 AliMUONClusterFinderPeakCOG.cxx:526
 AliMUONClusterFinderPeakCOG.cxx:527
 AliMUONClusterFinderPeakCOG.cxx:528
 AliMUONClusterFinderPeakCOG.cxx:529
 AliMUONClusterFinderPeakCOG.cxx:530
 AliMUONClusterFinderPeakCOG.cxx:531
 AliMUONClusterFinderPeakCOG.cxx:532
 AliMUONClusterFinderPeakCOG.cxx:533
 AliMUONClusterFinderPeakCOG.cxx:534
 AliMUONClusterFinderPeakCOG.cxx:535
 AliMUONClusterFinderPeakCOG.cxx:536
 AliMUONClusterFinderPeakCOG.cxx:537
 AliMUONClusterFinderPeakCOG.cxx:538
 AliMUONClusterFinderPeakCOG.cxx:539
 AliMUONClusterFinderPeakCOG.cxx:540
 AliMUONClusterFinderPeakCOG.cxx:541
 AliMUONClusterFinderPeakCOG.cxx:542
 AliMUONClusterFinderPeakCOG.cxx:543
 AliMUONClusterFinderPeakCOG.cxx:544
 AliMUONClusterFinderPeakCOG.cxx:545
 AliMUONClusterFinderPeakCOG.cxx:546
 AliMUONClusterFinderPeakCOG.cxx:547
 AliMUONClusterFinderPeakCOG.cxx:548
 AliMUONClusterFinderPeakCOG.cxx:549
 AliMUONClusterFinderPeakCOG.cxx:550
 AliMUONClusterFinderPeakCOG.cxx:551
 AliMUONClusterFinderPeakCOG.cxx:552
 AliMUONClusterFinderPeakCOG.cxx:553
 AliMUONClusterFinderPeakCOG.cxx:554
 AliMUONClusterFinderPeakCOG.cxx:555
 AliMUONClusterFinderPeakCOG.cxx:556
 AliMUONClusterFinderPeakCOG.cxx:557
 AliMUONClusterFinderPeakCOG.cxx:558
 AliMUONClusterFinderPeakCOG.cxx:559
 AliMUONClusterFinderPeakCOG.cxx:560
 AliMUONClusterFinderPeakCOG.cxx:561
 AliMUONClusterFinderPeakCOG.cxx:562
 AliMUONClusterFinderPeakCOG.cxx:563
 AliMUONClusterFinderPeakCOG.cxx:564
 AliMUONClusterFinderPeakCOG.cxx:565
 AliMUONClusterFinderPeakCOG.cxx:566
 AliMUONClusterFinderPeakCOG.cxx:567
 AliMUONClusterFinderPeakCOG.cxx:568
 AliMUONClusterFinderPeakCOG.cxx:569
 AliMUONClusterFinderPeakCOG.cxx:570
 AliMUONClusterFinderPeakCOG.cxx:571
 AliMUONClusterFinderPeakCOG.cxx:572
 AliMUONClusterFinderPeakCOG.cxx:573
 AliMUONClusterFinderPeakCOG.cxx:574
 AliMUONClusterFinderPeakCOG.cxx:575
 AliMUONClusterFinderPeakCOG.cxx:576
 AliMUONClusterFinderPeakCOG.cxx:577
 AliMUONClusterFinderPeakCOG.cxx:578
 AliMUONClusterFinderPeakCOG.cxx:579
 AliMUONClusterFinderPeakCOG.cxx:580
 AliMUONClusterFinderPeakCOG.cxx:581
 AliMUONClusterFinderPeakCOG.cxx:582
 AliMUONClusterFinderPeakCOG.cxx:583
 AliMUONClusterFinderPeakCOG.cxx:584
 AliMUONClusterFinderPeakCOG.cxx:585
 AliMUONClusterFinderPeakCOG.cxx:586
 AliMUONClusterFinderPeakCOG.cxx:587
 AliMUONClusterFinderPeakCOG.cxx:588
 AliMUONClusterFinderPeakCOG.cxx:589
 AliMUONClusterFinderPeakCOG.cxx:590
 AliMUONClusterFinderPeakCOG.cxx:591
 AliMUONClusterFinderPeakCOG.cxx:592
 AliMUONClusterFinderPeakCOG.cxx:593
 AliMUONClusterFinderPeakCOG.cxx:594
 AliMUONClusterFinderPeakCOG.cxx:595
 AliMUONClusterFinderPeakCOG.cxx:596
 AliMUONClusterFinderPeakCOG.cxx:597
 AliMUONClusterFinderPeakCOG.cxx:598
 AliMUONClusterFinderPeakCOG.cxx:599
 AliMUONClusterFinderPeakCOG.cxx:600
 AliMUONClusterFinderPeakCOG.cxx:601
 AliMUONClusterFinderPeakCOG.cxx:602
 AliMUONClusterFinderPeakCOG.cxx:603
 AliMUONClusterFinderPeakCOG.cxx:604
 AliMUONClusterFinderPeakCOG.cxx:605
 AliMUONClusterFinderPeakCOG.cxx:606
 AliMUONClusterFinderPeakCOG.cxx:607
 AliMUONClusterFinderPeakCOG.cxx:608
 AliMUONClusterFinderPeakCOG.cxx:609
 AliMUONClusterFinderPeakCOG.cxx:610
 AliMUONClusterFinderPeakCOG.cxx:611
 AliMUONClusterFinderPeakCOG.cxx:612
 AliMUONClusterFinderPeakCOG.cxx:613
 AliMUONClusterFinderPeakCOG.cxx:614
 AliMUONClusterFinderPeakCOG.cxx:615
 AliMUONClusterFinderPeakCOG.cxx:616
 AliMUONClusterFinderPeakCOG.cxx:617
 AliMUONClusterFinderPeakCOG.cxx:618
 AliMUONClusterFinderPeakCOG.cxx:619
 AliMUONClusterFinderPeakCOG.cxx:620
 AliMUONClusterFinderPeakCOG.cxx:621
 AliMUONClusterFinderPeakCOG.cxx:622
 AliMUONClusterFinderPeakCOG.cxx:623
 AliMUONClusterFinderPeakCOG.cxx:624
 AliMUONClusterFinderPeakCOG.cxx:625
 AliMUONClusterFinderPeakCOG.cxx:626
 AliMUONClusterFinderPeakCOG.cxx:627
 AliMUONClusterFinderPeakCOG.cxx:628
 AliMUONClusterFinderPeakCOG.cxx:629
 AliMUONClusterFinderPeakCOG.cxx:630
 AliMUONClusterFinderPeakCOG.cxx:631
 AliMUONClusterFinderPeakCOG.cxx:632
 AliMUONClusterFinderPeakCOG.cxx:633
 AliMUONClusterFinderPeakCOG.cxx:634
 AliMUONClusterFinderPeakCOG.cxx:635
 AliMUONClusterFinderPeakCOG.cxx:636
 AliMUONClusterFinderPeakCOG.cxx:637
 AliMUONClusterFinderPeakCOG.cxx:638
 AliMUONClusterFinderPeakCOG.cxx:639
 AliMUONClusterFinderPeakCOG.cxx:640
 AliMUONClusterFinderPeakCOG.cxx:641
 AliMUONClusterFinderPeakCOG.cxx:642
 AliMUONClusterFinderPeakCOG.cxx:643
 AliMUONClusterFinderPeakCOG.cxx:644
 AliMUONClusterFinderPeakCOG.cxx:645
 AliMUONClusterFinderPeakCOG.cxx:646
 AliMUONClusterFinderPeakCOG.cxx:647
 AliMUONClusterFinderPeakCOG.cxx:648
 AliMUONClusterFinderPeakCOG.cxx:649
 AliMUONClusterFinderPeakCOG.cxx:650
 AliMUONClusterFinderPeakCOG.cxx:651
 AliMUONClusterFinderPeakCOG.cxx:652
 AliMUONClusterFinderPeakCOG.cxx:653
 AliMUONClusterFinderPeakCOG.cxx:654
 AliMUONClusterFinderPeakCOG.cxx:655
 AliMUONClusterFinderPeakCOG.cxx:656
 AliMUONClusterFinderPeakCOG.cxx:657
 AliMUONClusterFinderPeakCOG.cxx:658
 AliMUONClusterFinderPeakCOG.cxx:659
 AliMUONClusterFinderPeakCOG.cxx:660
 AliMUONClusterFinderPeakCOG.cxx:661
 AliMUONClusterFinderPeakCOG.cxx:662
 AliMUONClusterFinderPeakCOG.cxx:663
 AliMUONClusterFinderPeakCOG.cxx:664
 AliMUONClusterFinderPeakCOG.cxx:665
 AliMUONClusterFinderPeakCOG.cxx:666
 AliMUONClusterFinderPeakCOG.cxx:667
 AliMUONClusterFinderPeakCOG.cxx:668
 AliMUONClusterFinderPeakCOG.cxx:669
 AliMUONClusterFinderPeakCOG.cxx:670
 AliMUONClusterFinderPeakCOG.cxx:671
 AliMUONClusterFinderPeakCOG.cxx:672
 AliMUONClusterFinderPeakCOG.cxx:673
 AliMUONClusterFinderPeakCOG.cxx:674
 AliMUONClusterFinderPeakCOG.cxx:675
 AliMUONClusterFinderPeakCOG.cxx:676
 AliMUONClusterFinderPeakCOG.cxx:677
 AliMUONClusterFinderPeakCOG.cxx:678
 AliMUONClusterFinderPeakCOG.cxx:679
 AliMUONClusterFinderPeakCOG.cxx:680
 AliMUONClusterFinderPeakCOG.cxx:681
 AliMUONClusterFinderPeakCOG.cxx:682
 AliMUONClusterFinderPeakCOG.cxx:683
 AliMUONClusterFinderPeakCOG.cxx:684
 AliMUONClusterFinderPeakCOG.cxx:685
 AliMUONClusterFinderPeakCOG.cxx:686
 AliMUONClusterFinderPeakCOG.cxx:687
 AliMUONClusterFinderPeakCOG.cxx:688
 AliMUONClusterFinderPeakCOG.cxx:689
 AliMUONClusterFinderPeakCOG.cxx:690
 AliMUONClusterFinderPeakCOG.cxx:691
 AliMUONClusterFinderPeakCOG.cxx:692
 AliMUONClusterFinderPeakCOG.cxx:693
 AliMUONClusterFinderPeakCOG.cxx:694
 AliMUONClusterFinderPeakCOG.cxx:695
 AliMUONClusterFinderPeakCOG.cxx:696
 AliMUONClusterFinderPeakCOG.cxx:697
 AliMUONClusterFinderPeakCOG.cxx:698
 AliMUONClusterFinderPeakCOG.cxx:699
 AliMUONClusterFinderPeakCOG.cxx:700
 AliMUONClusterFinderPeakCOG.cxx:701
 AliMUONClusterFinderPeakCOG.cxx:702
 AliMUONClusterFinderPeakCOG.cxx:703
 AliMUONClusterFinderPeakCOG.cxx:704
 AliMUONClusterFinderPeakCOG.cxx:705
 AliMUONClusterFinderPeakCOG.cxx:706
 AliMUONClusterFinderPeakCOG.cxx:707
 AliMUONClusterFinderPeakCOG.cxx:708
 AliMUONClusterFinderPeakCOG.cxx:709
 AliMUONClusterFinderPeakCOG.cxx:710
 AliMUONClusterFinderPeakCOG.cxx:711
 AliMUONClusterFinderPeakCOG.cxx:712
 AliMUONClusterFinderPeakCOG.cxx:713
 AliMUONClusterFinderPeakCOG.cxx:714
 AliMUONClusterFinderPeakCOG.cxx:715
 AliMUONClusterFinderPeakCOG.cxx:716
 AliMUONClusterFinderPeakCOG.cxx:717
 AliMUONClusterFinderPeakCOG.cxx:718
 AliMUONClusterFinderPeakCOG.cxx:719
 AliMUONClusterFinderPeakCOG.cxx:720
 AliMUONClusterFinderPeakCOG.cxx:721
 AliMUONClusterFinderPeakCOG.cxx:722
 AliMUONClusterFinderPeakCOG.cxx:723
 AliMUONClusterFinderPeakCOG.cxx:724
 AliMUONClusterFinderPeakCOG.cxx:725
 AliMUONClusterFinderPeakCOG.cxx:726
 AliMUONClusterFinderPeakCOG.cxx:727
 AliMUONClusterFinderPeakCOG.cxx:728
 AliMUONClusterFinderPeakCOG.cxx:729
 AliMUONClusterFinderPeakCOG.cxx:730
 AliMUONClusterFinderPeakCOG.cxx:731
 AliMUONClusterFinderPeakCOG.cxx:732
 AliMUONClusterFinderPeakCOG.cxx:733
 AliMUONClusterFinderPeakCOG.cxx:734
 AliMUONClusterFinderPeakCOG.cxx:735
 AliMUONClusterFinderPeakCOG.cxx:736
 AliMUONClusterFinderPeakCOG.cxx:737
 AliMUONClusterFinderPeakCOG.cxx:738
 AliMUONClusterFinderPeakCOG.cxx:739
 AliMUONClusterFinderPeakCOG.cxx:740
 AliMUONClusterFinderPeakCOG.cxx:741
 AliMUONClusterFinderPeakCOG.cxx:742
 AliMUONClusterFinderPeakCOG.cxx:743
 AliMUONClusterFinderPeakCOG.cxx:744
 AliMUONClusterFinderPeakCOG.cxx:745
 AliMUONClusterFinderPeakCOG.cxx:746
 AliMUONClusterFinderPeakCOG.cxx:747
 AliMUONClusterFinderPeakCOG.cxx:748
 AliMUONClusterFinderPeakCOG.cxx:749
 AliMUONClusterFinderPeakCOG.cxx:750
 AliMUONClusterFinderPeakCOG.cxx:751
 AliMUONClusterFinderPeakCOG.cxx:752
 AliMUONClusterFinderPeakCOG.cxx:753
 AliMUONClusterFinderPeakCOG.cxx:754
 AliMUONClusterFinderPeakCOG.cxx:755
 AliMUONClusterFinderPeakCOG.cxx:756
 AliMUONClusterFinderPeakCOG.cxx:757
 AliMUONClusterFinderPeakCOG.cxx:758
 AliMUONClusterFinderPeakCOG.cxx:759
 AliMUONClusterFinderPeakCOG.cxx:760
 AliMUONClusterFinderPeakCOG.cxx:761
 AliMUONClusterFinderPeakCOG.cxx:762
 AliMUONClusterFinderPeakCOG.cxx:763
 AliMUONClusterFinderPeakCOG.cxx:764
 AliMUONClusterFinderPeakCOG.cxx:765
 AliMUONClusterFinderPeakCOG.cxx:766
 AliMUONClusterFinderPeakCOG.cxx:767
 AliMUONClusterFinderPeakCOG.cxx:768
 AliMUONClusterFinderPeakCOG.cxx:769
 AliMUONClusterFinderPeakCOG.cxx:770
 AliMUONClusterFinderPeakCOG.cxx:771
 AliMUONClusterFinderPeakCOG.cxx:772
 AliMUONClusterFinderPeakCOG.cxx:773
 AliMUONClusterFinderPeakCOG.cxx:774
 AliMUONClusterFinderPeakCOG.cxx:775
 AliMUONClusterFinderPeakCOG.cxx:776
 AliMUONClusterFinderPeakCOG.cxx:777
 AliMUONClusterFinderPeakCOG.cxx:778
 AliMUONClusterFinderPeakCOG.cxx:779
 AliMUONClusterFinderPeakCOG.cxx:780
 AliMUONClusterFinderPeakCOG.cxx:781
 AliMUONClusterFinderPeakCOG.cxx:782
 AliMUONClusterFinderPeakCOG.cxx:783
 AliMUONClusterFinderPeakCOG.cxx:784
 AliMUONClusterFinderPeakCOG.cxx:785
 AliMUONClusterFinderPeakCOG.cxx:786
 AliMUONClusterFinderPeakCOG.cxx:787
 AliMUONClusterFinderPeakCOG.cxx:788
 AliMUONClusterFinderPeakCOG.cxx:789
 AliMUONClusterFinderPeakCOG.cxx:790
 AliMUONClusterFinderPeakCOG.cxx:791
 AliMUONClusterFinderPeakCOG.cxx:792
 AliMUONClusterFinderPeakCOG.cxx:793
 AliMUONClusterFinderPeakCOG.cxx:794
 AliMUONClusterFinderPeakCOG.cxx:795
 AliMUONClusterFinderPeakCOG.cxx:796
 AliMUONClusterFinderPeakCOG.cxx:797
 AliMUONClusterFinderPeakCOG.cxx:798
 AliMUONClusterFinderPeakCOG.cxx:799
 AliMUONClusterFinderPeakCOG.cxx:800
 AliMUONClusterFinderPeakCOG.cxx:801
 AliMUONClusterFinderPeakCOG.cxx:802
 AliMUONClusterFinderPeakCOG.cxx:803
 AliMUONClusterFinderPeakCOG.cxx:804
 AliMUONClusterFinderPeakCOG.cxx:805
 AliMUONClusterFinderPeakCOG.cxx:806
 AliMUONClusterFinderPeakCOG.cxx:807
 AliMUONClusterFinderPeakCOG.cxx:808
 AliMUONClusterFinderPeakCOG.cxx:809
 AliMUONClusterFinderPeakCOG.cxx:810
 AliMUONClusterFinderPeakCOG.cxx:811
 AliMUONClusterFinderPeakCOG.cxx:812
 AliMUONClusterFinderPeakCOG.cxx:813
 AliMUONClusterFinderPeakCOG.cxx:814
 AliMUONClusterFinderPeakCOG.cxx:815
 AliMUONClusterFinderPeakCOG.cxx:816
 AliMUONClusterFinderPeakCOG.cxx:817
 AliMUONClusterFinderPeakCOG.cxx:818
 AliMUONClusterFinderPeakCOG.cxx:819
 AliMUONClusterFinderPeakCOG.cxx:820
 AliMUONClusterFinderPeakCOG.cxx:821
 AliMUONClusterFinderPeakCOG.cxx:822
 AliMUONClusterFinderPeakCOG.cxx:823
 AliMUONClusterFinderPeakCOG.cxx:824
 AliMUONClusterFinderPeakCOG.cxx:825
 AliMUONClusterFinderPeakCOG.cxx:826
 AliMUONClusterFinderPeakCOG.cxx:827
 AliMUONClusterFinderPeakCOG.cxx:828
 AliMUONClusterFinderPeakCOG.cxx:829
 AliMUONClusterFinderPeakCOG.cxx:830
 AliMUONClusterFinderPeakCOG.cxx:831
 AliMUONClusterFinderPeakCOG.cxx:832
 AliMUONClusterFinderPeakCOG.cxx:833
 AliMUONClusterFinderPeakCOG.cxx:834
 AliMUONClusterFinderPeakCOG.cxx:835
 AliMUONClusterFinderPeakCOG.cxx:836
 AliMUONClusterFinderPeakCOG.cxx:837
 AliMUONClusterFinderPeakCOG.cxx:838
 AliMUONClusterFinderPeakCOG.cxx:839
 AliMUONClusterFinderPeakCOG.cxx:840
 AliMUONClusterFinderPeakCOG.cxx:841
 AliMUONClusterFinderPeakCOG.cxx:842
 AliMUONClusterFinderPeakCOG.cxx:843
 AliMUONClusterFinderPeakCOG.cxx:844
 AliMUONClusterFinderPeakCOG.cxx:845
 AliMUONClusterFinderPeakCOG.cxx:846
 AliMUONClusterFinderPeakCOG.cxx:847
 AliMUONClusterFinderPeakCOG.cxx:848
 AliMUONClusterFinderPeakCOG.cxx:849
 AliMUONClusterFinderPeakCOG.cxx:850
 AliMUONClusterFinderPeakCOG.cxx:851
 AliMUONClusterFinderPeakCOG.cxx:852
 AliMUONClusterFinderPeakCOG.cxx:853
 AliMUONClusterFinderPeakCOG.cxx:854
 AliMUONClusterFinderPeakCOG.cxx:855
 AliMUONClusterFinderPeakCOG.cxx:856
 AliMUONClusterFinderPeakCOG.cxx:857
 AliMUONClusterFinderPeakCOG.cxx:858
 AliMUONClusterFinderPeakCOG.cxx:859
 AliMUONClusterFinderPeakCOG.cxx:860
 AliMUONClusterFinderPeakCOG.cxx:861
 AliMUONClusterFinderPeakCOG.cxx:862
 AliMUONClusterFinderPeakCOG.cxx:863
 AliMUONClusterFinderPeakCOG.cxx:864
 AliMUONClusterFinderPeakCOG.cxx:865
 AliMUONClusterFinderPeakCOG.cxx:866
 AliMUONClusterFinderPeakCOG.cxx:867
 AliMUONClusterFinderPeakCOG.cxx:868
 AliMUONClusterFinderPeakCOG.cxx:869
 AliMUONClusterFinderPeakCOG.cxx:870
 AliMUONClusterFinderPeakCOG.cxx:871
 AliMUONClusterFinderPeakCOG.cxx:872
 AliMUONClusterFinderPeakCOG.cxx:873
 AliMUONClusterFinderPeakCOG.cxx:874
 AliMUONClusterFinderPeakCOG.cxx:875
 AliMUONClusterFinderPeakCOG.cxx:876
 AliMUONClusterFinderPeakCOG.cxx:877
 AliMUONClusterFinderPeakCOG.cxx:878
 AliMUONClusterFinderPeakCOG.cxx:879
 AliMUONClusterFinderPeakCOG.cxx:880
 AliMUONClusterFinderPeakCOG.cxx:881
 AliMUONClusterFinderPeakCOG.cxx:882
 AliMUONClusterFinderPeakCOG.cxx:883
 AliMUONClusterFinderPeakCOG.cxx:884
 AliMUONClusterFinderPeakCOG.cxx:885
 AliMUONClusterFinderPeakCOG.cxx:886
 AliMUONClusterFinderPeakCOG.cxx:887
 AliMUONClusterFinderPeakCOG.cxx:888
 AliMUONClusterFinderPeakCOG.cxx:889
 AliMUONClusterFinderPeakCOG.cxx:890
 AliMUONClusterFinderPeakCOG.cxx:891
 AliMUONClusterFinderPeakCOG.cxx:892
 AliMUONClusterFinderPeakCOG.cxx:893
 AliMUONClusterFinderPeakCOG.cxx:894
 AliMUONClusterFinderPeakCOG.cxx:895
 AliMUONClusterFinderPeakCOG.cxx:896
 AliMUONClusterFinderPeakCOG.cxx:897
 AliMUONClusterFinderPeakCOG.cxx:898
 AliMUONClusterFinderPeakCOG.cxx:899
 AliMUONClusterFinderPeakCOG.cxx:900
 AliMUONClusterFinderPeakCOG.cxx:901
 AliMUONClusterFinderPeakCOG.cxx:902
 AliMUONClusterFinderPeakCOG.cxx:903
 AliMUONClusterFinderPeakCOG.cxx:904
 AliMUONClusterFinderPeakCOG.cxx:905
 AliMUONClusterFinderPeakCOG.cxx:906
 AliMUONClusterFinderPeakCOG.cxx:907
 AliMUONClusterFinderPeakCOG.cxx:908
 AliMUONClusterFinderPeakCOG.cxx:909
 AliMUONClusterFinderPeakCOG.cxx:910
 AliMUONClusterFinderPeakCOG.cxx:911
 AliMUONClusterFinderPeakCOG.cxx:912
 AliMUONClusterFinderPeakCOG.cxx:913
 AliMUONClusterFinderPeakCOG.cxx:914
 AliMUONClusterFinderPeakCOG.cxx:915
 AliMUONClusterFinderPeakCOG.cxx:916
 AliMUONClusterFinderPeakCOG.cxx:917
 AliMUONClusterFinderPeakCOG.cxx:918
 AliMUONClusterFinderPeakCOG.cxx:919
 AliMUONClusterFinderPeakCOG.cxx:920
 AliMUONClusterFinderPeakCOG.cxx:921
 AliMUONClusterFinderPeakCOG.cxx:922
 AliMUONClusterFinderPeakCOG.cxx:923
 AliMUONClusterFinderPeakCOG.cxx:924
 AliMUONClusterFinderPeakCOG.cxx:925
 AliMUONClusterFinderPeakCOG.cxx:926
 AliMUONClusterFinderPeakCOG.cxx:927
 AliMUONClusterFinderPeakCOG.cxx:928
 AliMUONClusterFinderPeakCOG.cxx:929
 AliMUONClusterFinderPeakCOG.cxx:930
 AliMUONClusterFinderPeakCOG.cxx:931
 AliMUONClusterFinderPeakCOG.cxx:932
 AliMUONClusterFinderPeakCOG.cxx:933
 AliMUONClusterFinderPeakCOG.cxx:934
 AliMUONClusterFinderPeakCOG.cxx:935
 AliMUONClusterFinderPeakCOG.cxx:936
 AliMUONClusterFinderPeakCOG.cxx:937
 AliMUONClusterFinderPeakCOG.cxx:938
 AliMUONClusterFinderPeakCOG.cxx:939
 AliMUONClusterFinderPeakCOG.cxx:940
 AliMUONClusterFinderPeakCOG.cxx:941
 AliMUONClusterFinderPeakCOG.cxx:942
 AliMUONClusterFinderPeakCOG.cxx:943
 AliMUONClusterFinderPeakCOG.cxx:944
 AliMUONClusterFinderPeakCOG.cxx:945
 AliMUONClusterFinderPeakCOG.cxx:946
 AliMUONClusterFinderPeakCOG.cxx:947
 AliMUONClusterFinderPeakCOG.cxx:948
 AliMUONClusterFinderPeakCOG.cxx:949
 AliMUONClusterFinderPeakCOG.cxx:950
 AliMUONClusterFinderPeakCOG.cxx:951
 AliMUONClusterFinderPeakCOG.cxx:952
 AliMUONClusterFinderPeakCOG.cxx:953
 AliMUONClusterFinderPeakCOG.cxx:954
 AliMUONClusterFinderPeakCOG.cxx:955
 AliMUONClusterFinderPeakCOG.cxx:956
 AliMUONClusterFinderPeakCOG.cxx:957
 AliMUONClusterFinderPeakCOG.cxx:958
 AliMUONClusterFinderPeakCOG.cxx:959
 AliMUONClusterFinderPeakCOG.cxx:960
 AliMUONClusterFinderPeakCOG.cxx:961
 AliMUONClusterFinderPeakCOG.cxx:962
 AliMUONClusterFinderPeakCOG.cxx:963
 AliMUONClusterFinderPeakCOG.cxx:964
 AliMUONClusterFinderPeakCOG.cxx:965
 AliMUONClusterFinderPeakCOG.cxx:966
 AliMUONClusterFinderPeakCOG.cxx:967
 AliMUONClusterFinderPeakCOG.cxx:968
 AliMUONClusterFinderPeakCOG.cxx:969
 AliMUONClusterFinderPeakCOG.cxx:970
 AliMUONClusterFinderPeakCOG.cxx:971
 AliMUONClusterFinderPeakCOG.cxx:972
 AliMUONClusterFinderPeakCOG.cxx:973
 AliMUONClusterFinderPeakCOG.cxx:974
 AliMUONClusterFinderPeakCOG.cxx:975
 AliMUONClusterFinderPeakCOG.cxx:976
 AliMUONClusterFinderPeakCOG.cxx:977
 AliMUONClusterFinderPeakCOG.cxx:978
 AliMUONClusterFinderPeakCOG.cxx:979
 AliMUONClusterFinderPeakCOG.cxx:980
 AliMUONClusterFinderPeakCOG.cxx:981
 AliMUONClusterFinderPeakCOG.cxx:982
 AliMUONClusterFinderPeakCOG.cxx:983
 AliMUONClusterFinderPeakCOG.cxx:984
 AliMUONClusterFinderPeakCOG.cxx:985
 AliMUONClusterFinderPeakCOG.cxx:986
 AliMUONClusterFinderPeakCOG.cxx:987