ROOT logo
#include "AliIntSpotEstimator.h"
#include "AliESDEvent.h"
#include "AliESDtrack.h"
#include "AliESDVertex.h"
#include "AliVertexerTracks.h"
#include "AliLog.h"
#include <TH1.h>
#include <TH1F.h>
#include <TNtuple.h>
#include <TObjArray.h>
#include <TCanvas.h>
#include <TPaveText.h>
#include <TStyle.h>


ClassImp(AliIntSpotEstimator)

//______________________________________________________________________________________
AliIntSpotEstimator::AliIntSpotEstimator(const char* name,Double_t outcut,Int_t ntrIP,
					 Int_t nPhiBins,Int_t nestb,
					 Double_t estmin,Double_t estmax,
					 Int_t ntrBins,Int_t ntMn,Int_t ntMx,
					 Int_t nPBins,Double_t pmn,Double_t pmx,Bool_t ntuple) 
: TNamed(name,""),
  fEvProc(0),fIPCenterStat(0),fMinTracksForIP(ntrIP>2?ntrIP:2),fOutlierCut(outcut),
  fIPCenIni(),
  fIPCenter(),
  fIPCen2(),
  fEstimIP(0),
  fEstimVtx(0),fEstimTrc(0),fHVtxXY(0),fNtuple(0),fVertexer(0),fTracks(0)
{
  InitEstimators(nPhiBins,nestb,estmin,estmax,ntrBins,ntMn,ntMx,nPBins,pmn,pmx,ntuple);
}

//______________________________________________________________________________________                                    
AliIntSpotEstimator::AliIntSpotEstimator(Bool_t initDef) 
  : TNamed("IPEstimator",""),
    fEvProc(0),fIPCenterStat(0),fMinTracksForIP(2),fOutlierCut(1e-4),
    fIPCenIni(),
    fIPCenter(),
    fIPCen2(),    
    fEstimIP(0),fEstimVtx(0),fEstimTrc(0),fHVtxXY(0),fNtuple(0),fVertexer(0),fTracks(0)
{
  if (initDef) InitEstimators();
  //
}

//______________________________________________________________________________________
AliIntSpotEstimator::~AliIntSpotEstimator()
{
  delete fEstimIP;
  delete fEstimVtx;
  delete fEstimTrc;
  delete fVertexer;
  delete fNtuple;
}

//______________________________________________________________________________________
Bool_t AliIntSpotEstimator::ProcessIPCenter(const AliESDVertex* vtx)
{
  // account the vertex in IP center estimation
  if (!vtx) return kFALSE;
  double xyz[3];
  vtx->GetXYZ(xyz);
  double r = xyz[0]*xyz[0] + xyz[1]*xyz[1];
  if (r>2.) return kFALSE;
  for (int i=3;i--;) {
    fIPCenter[i] += xyz[i];
    fIPCen2[i] += xyz[i]*xyz[i];
  }
  fIPCenterStat++;
  fHVtxXY->Fill(xyz[0],xyz[1]);
  return kTRUE;
  //
}

//______________________________________________________________________________________
Bool_t AliIntSpotEstimator::ProcessEvent(const AliESDEvent* esd, const AliESDVertex* vtx)
{
  // Note: this method will modify the indices of the provided vertex
  // Account the vertex in widths estimation
  // if vtx is provided its tracks will be used otherwise use the primary vertex of the event
  if (!IsValid()) {AliError("Not initialized yet"); return -999;}
  if (!fTracks)   fTracks   = new TObjArray(50);
  if (!fVertexer) fVertexer = new AliVertexerTracks();
  //
  fEvProc++;
  int nTracks;
  if (!vtx) vtx = (AliESDVertex*) esd->GetPrimaryVertex();
  if (!vtx || (nTracks=vtx->GetNIndices())<GetMinTracks()+1) return kFALSE;
  //
  UShort_t *trackID = (UShort_t*)vtx->GetIndices(); 
  for (int itr=0;itr<nTracks;itr++) fTracks->Add(esd->GetTrack(trackID[itr]));
  //
  fVertexer->SetFieldkG( esd->GetMagneticField() );
  return ProcessTracks();
  //
}

//______________________________________________________________________________________
Bool_t AliIntSpotEstimator::ProcessEvent(const TObjArray* tracks)
{
  // This method allows to process the vertex made of arbitrary tracks
  // Account the vertex in widths estimation with externally provided tracks 
  // The indices of the vertex must correspond to array of tracks
  //
  if (!IsValid()) {AliError("Not initialized yet"); return -999;}
  if (!fVertexer) fVertexer = new AliVertexerTracks();
  //
  fEvProc++;
  int nTracks = tracks->GetEntriesFast();
  if ( nTracks<GetMinTracks()+1 ) return kFALSE;
  for (int itr=0;itr<nTracks;itr++) fTracks->Add(tracks->At(itr));
  //
  return ProcessTracks();
}

//______________________________________________________________________________________
Bool_t AliIntSpotEstimator::ProcessTracks()
{
  // account the vertex made of provided tracks
  //
  int nTracks = fTracks->GetEntriesFast();
  UShort_t *trackID = new UShort_t[nTracks];
  for (int i=nTracks;i--;) trackID[i] = i;
  double xyzDCA[3],ddca[2],covdca[3];
  int nTracks1 = nTracks - 1;
  AliExternalTrackParam *selTrack,*movTrack=0;
  UShort_t selTrackID,movTrackID=0;
  //
  AliESDVertex* recNewVtx = fVertexer->VertexForSelectedTracks(fTracks,trackID,kTRUE,kFALSE,kFALSE);
  if (!recNewVtx || ((nTracks=recNewVtx->GetNIndices())<GetMinTracks())) {
    if (recNewVtx) delete recNewVtx;
    fTracks->Clear();
    delete[] trackID;
    return kFALSE;
  }
  if (nTracks>=fMinTracksForIP) ProcessIPCenter(recNewVtx);
  //
  double pmn = GetTrackMinP();
  double pmx = GetTrackMaxP();
  double fieldVal = fVertexer->GetFieldkG();
  for (int itr=0;itr<nTracks;itr++) {
    selTrack   = (AliExternalTrackParam*) (*fTracks)[itr]; // track to probe
    double pTrack = selTrack->GetP();
    if (!IsZero(fieldVal) && (pTrack<pmn || pTrack>pmx)) continue;
    selTrackID = trackID[itr];
    //
    if (itr<nTracks1) {
      movTrack   = (AliExternalTrackParam*) (*fTracks)[nTracks1];   // save the track
      movTrackID = trackID[nTracks1];
      (*fTracks)[itr] = movTrack;  
      trackID[itr] = movTrackID;
    }
    fTracks->RemoveAt(nTracks1);     // move the last track in the place of the probed one
    //
    // refit the vertex w/o the probed track
    recNewVtx = fVertexer->VertexForSelectedTracks(fTracks,trackID,kTRUE,kFALSE,kFALSE);
    if (recNewVtx) {
      double told = selTrack->GetX();  // store the original track position
      selTrack->PropagateToDCA(recNewVtx,fieldVal,1e4,ddca,covdca); // in principle, done in the vertexer
      selTrack->GetXYZ(xyzDCA);
      //
      double phiTrack = selTrack->Phi();
      double cs = TMath::Cos(phiTrack);
      double sn = TMath::Sin(phiTrack);
      double trDCA = (xyzDCA[0]-fIPCenIni[0])         *sn - (xyzDCA[1]-fIPCenIni[1])         *cs;  // track signed DCA to origin
      double vtDCA = (recNewVtx->GetX()-fIPCenIni[0])*sn - (recNewVtx->GetY()-fIPCenIni[1])*cs;  // vertex signed DCA to origin
      UpdateEstimators(vtDCA,trDCA, nTracks1, pTrack, phiTrack);
      selTrack->PropagateTo(told,fieldVal);    // restore the track
      if (fNtuple) {
	static float ntf[8];
	ntf[0] = float(nTracks1);
	ntf[1] = recNewVtx->GetX();
	ntf[2] = recNewVtx->GetY();
	ntf[3] = recNewVtx->GetZ();
	ntf[4] = xyzDCA[0];
	ntf[5] = xyzDCA[1];
	ntf[6] = phiTrack;
	ntf[7] = pTrack;
	fNtuple->Fill(ntf);
      }
    }
    delete recNewVtx;
    // restore the track indices
    (*fTracks)[itr] = selTrack; 
    trackID[itr] = selTrackID;
    if (itr<nTracks1) {
      (*fTracks)[nTracks1] = movTrack; 
      trackID[nTracks1] = movTrackID;
    }
  }
  //
  fTracks->Clear();
  delete[] trackID;
  return kTRUE;
  //
}

//______________________________________________________________________________________
void AliIntSpotEstimator::UpdateEstimators(double rvD, double rtD, double nTracks, double pTrack, double phiTrack)
{
  // update the estimator values
  double estIP  = rvD*rtD;
  double estVtx = rvD*(rvD - rtD);
  double estTrc = rtD*(rtD - rvD);
  //
  if (nTracks >= fMinTracksForIP) fEstimIP->Fill(phiTrack, estIP);
  fEstimVtx->Fill(nTracks, estVtx);
  if (pTrack<1e-6) pTrack = GetTrackMinP()+1e6;
  fEstimTrc->Fill(1./pTrack,estTrc);
  //
}
 
//______________________________________________________________________________________
void AliIntSpotEstimator::InitEstimators(Int_t nPhiBins,Int_t nestb,Double_t estmin,Double_t estmax,
					 Int_t ntrBins,Int_t ntMn,Int_t ntMx,
					 Int_t nPBins,Double_t pmn,Double_t pmx,Bool_t ntuple)
{
  Clear();
  // regularize binning/limits for DCA resolution
  nPBins = nPBins<1 ? 1: nPBins;
  pmn    = pmn>0.1  ? pmn : 0.1;
  pmx    = pmx>pmn  ? pmx : pmn+0.1;
  //
  // regularize binning/limits for vertex resolution
  ntMn = ntMn>2 ? ntMn : 2;
  ntMx = ntMx>ntMn ? ntMx : ntMn;
  ntrBins = ntrBins<1 ? 1:ntrBins;
  int step = (ntMx-ntMn)/ntrBins;
  if (step<1) step = 1;
  ntrBins = (ntMx-ntMn)/step;
  //
  // regularize binning for IP sigma vs angle
  nPhiBins = nPhiBins>1 ? nPhiBins : 1;
  //
  // regularize binning/limits for estimators
  nestb  = nestb>300 ? nestb:300;
  estmin = estmin<-2.e-2 ? estmin : -2.e-2;
  estmax = estmax> 4.e-2 ? estmax :  4.e-2;
  //
  TString nm;
  nm = GetName();  
  nm += "diamondEst";
  fEstimIP  = new TH2F(nm.Data(),nm.Data(),nPhiBins,0.,2.*TMath::Pi(),nestb,estmin,estmax);
  //  
  nm = GetName();  
  nm += "VResEst";  
  fEstimVtx = new TH2F(nm.Data(),nm.Data(),ntrBins,ntMn,ntMx,         nestb,estmin,estmax);
  // 
  nm = GetName();  
  nm += "dcaEst";   
  fEstimTrc = new TH2F(nm.Data(),nm.Data(),nPBins,1./pmx,1./pmn,      nestb,estmin,estmax);
  // 
  nm = GetName();  
  nm += "VtxXY";   
  fHVtxXY = new TH2F(nm.Data(),nm.Data(),200, -1,1, 200,-1,1);
  //
  if (ntuple) {
    nm = GetName();  
    nm += "ntuple";
    fNtuple = new TNtuple(nm.Data(),nm.Data(),"ntrack:xv:yv:zv:xt:yt:phi:p");
  }
  //
  fVertexer = new AliVertexerTracks(); // the field is set dynamically
  fVertexer->SetConstraintOff();
  fTracks = new TObjArray(50);
  //

}

//______________________________________________________________________________________                                                                                             
Double_t AliIntSpotEstimator::GetIPSigma(Int_t bin, Double_t *err) const
{                                                                                                                                                                                    
  // get estimate for the IP sigma
  if (!IsValid()) {AliError("Not initialized yet"); return -999;}
  double cxe,cye;
  double cx  = GetIPCenter(0,&cxe) - GetIPCenIni(0);
  double cy  = GetIPCenter(1,&cye) - GetIPCenIni(1);
  TH1* proj = fEstimIP->ProjectionY("ipProj",bin<1 ? 1:bin, bin<1 ? GetNPhiBins():bin,"e");
  double merr = 0;
  double est = CalcMean(proj, fOutlierCut, &merr) - (cx*cx + cy*cy)/2.;
  if (est>0) {
    est = TMath::Sqrt(est);
    if (err) {
      *err = 0;
      *err = merr*merr;
      *err += cx*cx*cxe*cxe + cy*cy*cye*cye;
      *err = TMath::Sqrt(*err)/est/2.;
    }
  }
  else {
    est = 0;
    if (err) *err = 0;
  }
  delete proj;
  return est;
}

//______________________________________________________________________________________                                                                                             
Double_t AliIntSpotEstimator::GetVtxSigma(int ntr, double* err) const
{                                                                                                                                                                                    
  // get estimate for the IP sigma^2
  if (!IsValid()) {AliError("Not initialized yet"); return -999;}
  int bin = fEstimVtx->GetXaxis()->FindBin(ntr);
  if (bin<1 || bin>GetNTrackBins()) {
    AliError(Form("Requested vertex multiplicity %d out of defined %d-%d range",
		  ntr,GetMinTracks(),GetMaxTracks()));
    return -1;
  }
  TH1* proj = fEstimVtx->ProjectionY("vrProj",bin,bin,"e");
  double est = CalcMean(proj, fOutlierCut, err);
  delete proj;
  if (est>0) {
    est = TMath::Sqrt(est);
    if (err) *err /= 2*est;
  }
  else {
    est = 0;
    if (err) *err = 0;
  }
  return est;
  //
}

//______________________________________________________________________________________                                                                                             
Double_t AliIntSpotEstimator::GetDCASigma(double pt, double *err) const
{                                                                                                                                                                                    
  // get estimate for the IP sigma^2
  if (!IsValid()) {AliError("Not initialized yet"); return -999;}
  if (pt<1e-6) pt = GetTrackMinP()+1e6;
  pt = 1./pt;
  int bin = fEstimTrc->GetXaxis()->FindBin(pt);
  if (bin<1 || bin>GetNPBins()) {
    AliError(Form("Requested track P %.2f out of defined %.2f-%.2f range",1/pt,GetTrackMinP(),GetTrackMaxP()));
    return -1;
  }
  TH1* proj = fEstimTrc->ProjectionY("trProj",bin,bin,"e");
  double est = CalcMean(proj, fOutlierCut, err);
  delete proj;
   if (est>0) {
    est = TMath::Sqrt(est);
    if (err) *err /= 2*est;
  }
  else {
    est = 0;
    if (err) *err = 0;
  }
  return est;
  //
}

//______________________________________________________________________________________                                                                                             
Double_t AliIntSpotEstimator::CalcMean(TH1* histo, Double_t ctfact, Double_t *err)
{
  // calculate mean applying the cut on the outliers
  //
  double max = histo->GetMaximum();
  double cut = (ctfact>0&&ctfact<1.) ? max*ctfact : 0;//TMath::Max(1.0,max*ctfact) : 0;
  int nb = histo->GetNbinsX();
  double mean = 0.,cumul = 0, rms = 0;
  for (int i=1;i<=nb;i++) {
    double vl = histo->GetBinContent(i) - cut;
    if (vl<1e-10) continue;
    double x = histo->GetBinCenter(i);
    mean  += vl*x;
    rms   += vl*x*x;
    cumul += vl;
  }
  //
  mean = cumul>0 ? mean/cumul : 0;
  rms -= mean*mean*cumul;
  if (err) {
    *err = cumul > 1 ? rms/(cumul-1) : 0;
    if (*err>0) *err = TMath::Sqrt(*err/cumul);
  }
  //
  return mean;
}

//______________________________________________________________________________________
void AliIntSpotEstimator::Print(Option_t *) const                                                                                                                              
{   
  if (!IsValid()) {printf("Not initialized yet\n"); return;}
  //
  double cx,cy,cz,cxe,cye,cze;
  cx = GetIPCenter(0,&cxe);
  cy = GetIPCenter(1,&cye);
  cz = GetIPCenter(2,&cze);
  printf("Processed %d events\n",fEvProc);
  printf("Estimator for IP center: %+.4e+-%.3e | %+.4e+-%.3e | %+.4e+-%.3e\n",
	 cx,cxe,cy,cye,cz,cze);
  printf("Initial IP center was  : %+.4e %+.4e %+.4e\n",
	 GetIPCenIni(0),GetIPCenIni(1),GetIPCenIni(2));
  double sgIP = GetIPSigma(0,&cxe);
  printf("Estimator for IP sigma : %.4e+-%.3e\n",sgIP,cxe);
  //
  printf("Estimators for vertex resolution vs Ntracks:\n");
  
  for (int i=1;i<=GetNTrackBins();i++) {
    double sig = GetVtxSigma( (int)fEstimVtx->GetXaxis()->GetBinCenter(i), &cxe );
    if (IsZero(sig)) continue;
    int tmin = TMath::Nint(fEstimVtx->GetXaxis()->GetBinLowEdge(i));
    int tmax = tmin + int(fEstimVtx->GetXaxis()->GetBinWidth(i));
    printf("%3d-%3d : %.4e+-%.3e\n",tmin,tmax,sig,cxe);
  }
  //
  printf("Estimators for track DCA resolution vs P:\n");
  for (int i=1;i<=GetNPBins();i++) {
    double sig = GetDCASigma( 1./fEstimTrc->GetXaxis()->GetBinCenter(i), &cxe );
    if (IsZero(sig)) continue;
    double pmax = 1./fEstimTrc->GetXaxis()->GetBinLowEdge(i);
    double pmin = 1./(fEstimTrc->GetXaxis()->GetBinLowEdge(i)+fEstimTrc->GetXaxis()->GetBinWidth(i));
    printf("%.2f-%.2f : %.4e+-%.3e\n",pmin,pmax,sig, cxe);
  }
}

//______________________________________________________________________________________
void AliIntSpotEstimator::Clear(Option_t *)                                                                                   
{  
  // reset all
  fEvProc = 0;
  fIPCenterStat = 0;
  for (int i=3;i--;) fIPCenter[i] = fIPCenIni[i] = 0.;
  if (fEstimIP)  fEstimIP->Reset();
  if (fEstimVtx) fEstimVtx->Reset();
  if (fEstimTrc) fEstimTrc->Reset();
}

//_____________________________________________________________________
AliIntSpotEstimator &AliIntSpotEstimator::operator += (const AliIntSpotEstimator &src)
{
  fEvProc        += src.fEvProc;
  fIPCenterStat  += src.fIPCenterStat;
  for (int i=3;i--;) fIPCenter[i] += src.fIPCenter[i];
  if (fEstimIP  && src.fEstimIP ) fEstimIP->Add(src.fEstimIP);
  if (fEstimVtx && src.fEstimVtx) fEstimVtx->Add(src.fEstimVtx);
  if (fEstimTrc && src.fEstimTrc) fEstimTrc->Add(src.fEstimTrc);
  if (fHVtxXY   && src.fHVtxXY)   fHVtxXY->Add(src.fHVtxXY);
  //
  return *this;
}

//_____________________________________________________________________
TCanvas* AliIntSpotEstimator::CreateReport(const char* outname)
{
  // prepare canvas with report
  TCanvas *cnv = new TCanvas(GetName(), GetName(),5,5,700,1000);
  gStyle->SetOptStat(0);
  gStyle->SetTitleH(0.07);
  gStyle->SetTitleW(0.7);
  gStyle->SetTitleY(1);
  gStyle->SetTitleX(0.2);
  //
  const Int_t nc=200;
  char buff[nc];
  //
  cnv->Divide(2,2);
  cnv->cd(1);
  //
  TPaveText *pt = new TPaveText(0.05,0.05,0.95,0.95,"blNDC");
  snprintf(buff,nc,"%s | Outliers Cut : %.2e",GetName(),fOutlierCut);
  pt->AddText(buff);
  //
  snprintf(buff,nc,"Processed Events:\n%d",fEvProc);
  pt->AddText(buff);
  //
  snprintf(buff,nc,"Accepted  Events\n%d",fIPCenterStat);
  pt->AddText(buff);
  //
  double cx,cy,cz,cxe,cye,cze;
  cx = GetIPCenter(0,&cxe);
  cy = GetIPCenter(1,&cye);
  cz = GetIPCenter(2,&cze);
  //  
  snprintf(buff,nc,"Int.Spot (#mum)\n%+d#pm%d\n%+d#pm%d\n%+d#pm%d",
	  int(cx*1e4),int(cxe*1e4),int(cy*1e4),int(cye*1e4),int(cz*1e4),int(cze*1e4));
  pt->AddText(buff);
  //
  cx = GetIPSigma(0,&cxe);
  snprintf(buff,nc,"Int.Spot #sigma (#mum):\n%d#pm%d",int(cx*1e4),int(cxe*1e4));
  pt->AddText(buff);
  pt->Draw();
  gPad->Modified();
  //
  cnv->cd(2);
  gPad->SetLeftMargin(0.2);
  TH1* iph = fEstimIP->ProjectionX();
  iph->Reset();
  iph->SetTitle("Int.Spot size vs #phi");
  for (int i=1;i<=iph->GetNbinsX();i++) {
    cx = GetIPSigma(i,&cxe);
    iph->SetBinContent(i,cx*1e4);
    iph->SetBinError(i,cxe*1e4);
  }
  iph->GetXaxis()->SetTitle("#phi");
  iph->GetYaxis()->SetTitle("#sigma_{IP} [#mum]");
  iph->SetMarkerStyle(20);
  iph->Draw("p");
  gPad->Modified();
  iph->SetTitleOffset(2.5,"Y");
  //
  cnv->cd(3);
  gPad->SetLeftMargin(0.2);
  TH1* vrh = fEstimVtx->ProjectionX();
  vrh->Reset();
  vrh->SetTitle("Vertex resolution vs N tracks");
  for (int i=1;i<=vrh->GetNbinsX();i++) {
    cx = GetVtxSigma( TMath::Nint(vrh->GetBinCenter(i)), &cxe);
    vrh->SetBinContent(i,cx*1e4);
    vrh->SetBinError(i,cxe*1e4);
  }
  vrh->GetXaxis()->SetTitle("n tracks");
  vrh->GetYaxis()->SetTitle("#sigma_{VTX} [#mum]");
  vrh->SetMarkerStyle(20);
  vrh->Draw("p");
  gPad->Modified();
  vrh->SetTitleOffset(2.5,"Y");
  //
  cnv->cd(4);
  gPad->SetLeftMargin(0.2);
  TH1* trh = fEstimTrc->ProjectionX();
  trh->Reset();
  trh->SetTitle("Track DCA resolution vs 1/P");
  for (int i=1;i<=trh->GetNbinsX();i++) {
    cx = GetDCASigma(1./trh->GetBinCenter(i), &cxe);
    trh->SetBinContent(i,cx*1e4);
    trh->SetBinError(i,cxe*1e4);
  }
  trh->GetXaxis()->SetTitle("1/p [GeV]");
  trh->GetYaxis()->SetTitle("#sigma_{DCA} [#mum]");
  trh->SetMarkerStyle(20);
  trh->Draw("p");
  gPad->Modified();
  trh->SetTitleOffset(2.5,"Y");
  //
  cnv->cd();
  gPad->Modified();
  //
  if (outname) cnv->Print(outname);
  //
  return cnv;
}


//_____________________________________________________________________
Long64_t AliIntSpotEstimator::Merge(TCollection *coll)
{
  // Merge estimators: used to put together the results of parallel processing
  if(!coll) return 0;
  if (coll->IsEmpty()) return 1;
  TIterator* iter = coll->MakeIterator();
  TObject* obj;
  int count = 0;
  while ((obj = iter->Next())) {
    AliIntSpotEstimator* entry = dynamic_cast<AliIntSpotEstimator*>(obj);
    if (!entry) continue;
    (*this) += *entry;
    count++;
  }
  return count;
  //
}

//_____________________________________________________________________
Double_t AliIntSpotEstimator::GetIPCenter(Int_t id,Double_t *err) const
{
  // calculate IP center in axis id and error
  double cen = fIPCenterStat>0 ? fIPCenter[id]/fIPCenterStat:0;
  if (err) {
    *err = fIPCenterStat>1 ? (fIPCen2[id] - cen*cen*fIPCenterStat)/(fIPCenterStat-1) : 0;
    *err = *err > 0 ? TMath::Sqrt(*err/fIPCenterStat) : 0;
  }
  return cen;
}
 AliIntSpotEstimator.cxx:1
 AliIntSpotEstimator.cxx:2
 AliIntSpotEstimator.cxx:3
 AliIntSpotEstimator.cxx:4
 AliIntSpotEstimator.cxx:5
 AliIntSpotEstimator.cxx:6
 AliIntSpotEstimator.cxx:7
 AliIntSpotEstimator.cxx:8
 AliIntSpotEstimator.cxx:9
 AliIntSpotEstimator.cxx:10
 AliIntSpotEstimator.cxx:11
 AliIntSpotEstimator.cxx:12
 AliIntSpotEstimator.cxx:13
 AliIntSpotEstimator.cxx:14
 AliIntSpotEstimator.cxx:15
 AliIntSpotEstimator.cxx:16
 AliIntSpotEstimator.cxx:17
 AliIntSpotEstimator.cxx:18
 AliIntSpotEstimator.cxx:19
 AliIntSpotEstimator.cxx:20
 AliIntSpotEstimator.cxx:21
 AliIntSpotEstimator.cxx:22
 AliIntSpotEstimator.cxx:23
 AliIntSpotEstimator.cxx:24
 AliIntSpotEstimator.cxx:25
 AliIntSpotEstimator.cxx:26
 AliIntSpotEstimator.cxx:27
 AliIntSpotEstimator.cxx:28
 AliIntSpotEstimator.cxx:29
 AliIntSpotEstimator.cxx:30
 AliIntSpotEstimator.cxx:31
 AliIntSpotEstimator.cxx:32
 AliIntSpotEstimator.cxx:33
 AliIntSpotEstimator.cxx:34
 AliIntSpotEstimator.cxx:35
 AliIntSpotEstimator.cxx:36
 AliIntSpotEstimator.cxx:37
 AliIntSpotEstimator.cxx:38
 AliIntSpotEstimator.cxx:39
 AliIntSpotEstimator.cxx:40
 AliIntSpotEstimator.cxx:41
 AliIntSpotEstimator.cxx:42
 AliIntSpotEstimator.cxx:43
 AliIntSpotEstimator.cxx:44
 AliIntSpotEstimator.cxx:45
 AliIntSpotEstimator.cxx:46
 AliIntSpotEstimator.cxx:47
 AliIntSpotEstimator.cxx:48
 AliIntSpotEstimator.cxx:49
 AliIntSpotEstimator.cxx:50
 AliIntSpotEstimator.cxx:51
 AliIntSpotEstimator.cxx:52
 AliIntSpotEstimator.cxx:53
 AliIntSpotEstimator.cxx:54
 AliIntSpotEstimator.cxx:55
 AliIntSpotEstimator.cxx:56
 AliIntSpotEstimator.cxx:57
 AliIntSpotEstimator.cxx:58
 AliIntSpotEstimator.cxx:59
 AliIntSpotEstimator.cxx:60
 AliIntSpotEstimator.cxx:61
 AliIntSpotEstimator.cxx:62
 AliIntSpotEstimator.cxx:63
 AliIntSpotEstimator.cxx:64
 AliIntSpotEstimator.cxx:65
 AliIntSpotEstimator.cxx:66
 AliIntSpotEstimator.cxx:67
 AliIntSpotEstimator.cxx:68
 AliIntSpotEstimator.cxx:69
 AliIntSpotEstimator.cxx:70
 AliIntSpotEstimator.cxx:71
 AliIntSpotEstimator.cxx:72
 AliIntSpotEstimator.cxx:73
 AliIntSpotEstimator.cxx:74
 AliIntSpotEstimator.cxx:75
 AliIntSpotEstimator.cxx:76
 AliIntSpotEstimator.cxx:77
 AliIntSpotEstimator.cxx:78
 AliIntSpotEstimator.cxx:79
 AliIntSpotEstimator.cxx:80
 AliIntSpotEstimator.cxx:81
 AliIntSpotEstimator.cxx:82
 AliIntSpotEstimator.cxx:83
 AliIntSpotEstimator.cxx:84
 AliIntSpotEstimator.cxx:85
 AliIntSpotEstimator.cxx:86
 AliIntSpotEstimator.cxx:87
 AliIntSpotEstimator.cxx:88
 AliIntSpotEstimator.cxx:89
 AliIntSpotEstimator.cxx:90
 AliIntSpotEstimator.cxx:91
 AliIntSpotEstimator.cxx:92
 AliIntSpotEstimator.cxx:93
 AliIntSpotEstimator.cxx:94
 AliIntSpotEstimator.cxx:95
 AliIntSpotEstimator.cxx:96
 AliIntSpotEstimator.cxx:97
 AliIntSpotEstimator.cxx:98
 AliIntSpotEstimator.cxx:99
 AliIntSpotEstimator.cxx:100
 AliIntSpotEstimator.cxx:101
 AliIntSpotEstimator.cxx:102
 AliIntSpotEstimator.cxx:103
 AliIntSpotEstimator.cxx:104
 AliIntSpotEstimator.cxx:105
 AliIntSpotEstimator.cxx:106
 AliIntSpotEstimator.cxx:107
 AliIntSpotEstimator.cxx:108
 AliIntSpotEstimator.cxx:109
 AliIntSpotEstimator.cxx:110
 AliIntSpotEstimator.cxx:111
 AliIntSpotEstimator.cxx:112
 AliIntSpotEstimator.cxx:113
 AliIntSpotEstimator.cxx:114
 AliIntSpotEstimator.cxx:115
 AliIntSpotEstimator.cxx:116
 AliIntSpotEstimator.cxx:117
 AliIntSpotEstimator.cxx:118
 AliIntSpotEstimator.cxx:119
 AliIntSpotEstimator.cxx:120
 AliIntSpotEstimator.cxx:121
 AliIntSpotEstimator.cxx:122
 AliIntSpotEstimator.cxx:123
 AliIntSpotEstimator.cxx:124
 AliIntSpotEstimator.cxx:125
 AliIntSpotEstimator.cxx:126
 AliIntSpotEstimator.cxx:127
 AliIntSpotEstimator.cxx:128
 AliIntSpotEstimator.cxx:129
 AliIntSpotEstimator.cxx:130
 AliIntSpotEstimator.cxx:131
 AliIntSpotEstimator.cxx:132
 AliIntSpotEstimator.cxx:133
 AliIntSpotEstimator.cxx:134
 AliIntSpotEstimator.cxx:135
 AliIntSpotEstimator.cxx:136
 AliIntSpotEstimator.cxx:137
 AliIntSpotEstimator.cxx:138
 AliIntSpotEstimator.cxx:139
 AliIntSpotEstimator.cxx:140
 AliIntSpotEstimator.cxx:141
 AliIntSpotEstimator.cxx:142
 AliIntSpotEstimator.cxx:143
 AliIntSpotEstimator.cxx:144
 AliIntSpotEstimator.cxx:145
 AliIntSpotEstimator.cxx:146
 AliIntSpotEstimator.cxx:147
 AliIntSpotEstimator.cxx:148
 AliIntSpotEstimator.cxx:149
 AliIntSpotEstimator.cxx:150
 AliIntSpotEstimator.cxx:151
 AliIntSpotEstimator.cxx:152
 AliIntSpotEstimator.cxx:153
 AliIntSpotEstimator.cxx:154
 AliIntSpotEstimator.cxx:155
 AliIntSpotEstimator.cxx:156
 AliIntSpotEstimator.cxx:157
 AliIntSpotEstimator.cxx:158
 AliIntSpotEstimator.cxx:159
 AliIntSpotEstimator.cxx:160
 AliIntSpotEstimator.cxx:161
 AliIntSpotEstimator.cxx:162
 AliIntSpotEstimator.cxx:163
 AliIntSpotEstimator.cxx:164
 AliIntSpotEstimator.cxx:165
 AliIntSpotEstimator.cxx:166
 AliIntSpotEstimator.cxx:167
 AliIntSpotEstimator.cxx:168
 AliIntSpotEstimator.cxx:169
 AliIntSpotEstimator.cxx:170
 AliIntSpotEstimator.cxx:171
 AliIntSpotEstimator.cxx:172
 AliIntSpotEstimator.cxx:173
 AliIntSpotEstimator.cxx:174
 AliIntSpotEstimator.cxx:175
 AliIntSpotEstimator.cxx:176
 AliIntSpotEstimator.cxx:177
 AliIntSpotEstimator.cxx:178
 AliIntSpotEstimator.cxx:179
 AliIntSpotEstimator.cxx:180
 AliIntSpotEstimator.cxx:181
 AliIntSpotEstimator.cxx:182
 AliIntSpotEstimator.cxx:183
 AliIntSpotEstimator.cxx:184
 AliIntSpotEstimator.cxx:185
 AliIntSpotEstimator.cxx:186
 AliIntSpotEstimator.cxx:187
 AliIntSpotEstimator.cxx:188
 AliIntSpotEstimator.cxx:189
 AliIntSpotEstimator.cxx:190
 AliIntSpotEstimator.cxx:191
 AliIntSpotEstimator.cxx:192
 AliIntSpotEstimator.cxx:193
 AliIntSpotEstimator.cxx:194
 AliIntSpotEstimator.cxx:195
 AliIntSpotEstimator.cxx:196
 AliIntSpotEstimator.cxx:197
 AliIntSpotEstimator.cxx:198
 AliIntSpotEstimator.cxx:199
 AliIntSpotEstimator.cxx:200
 AliIntSpotEstimator.cxx:201
 AliIntSpotEstimator.cxx:202
 AliIntSpotEstimator.cxx:203
 AliIntSpotEstimator.cxx:204
 AliIntSpotEstimator.cxx:205
 AliIntSpotEstimator.cxx:206
 AliIntSpotEstimator.cxx:207
 AliIntSpotEstimator.cxx:208
 AliIntSpotEstimator.cxx:209
 AliIntSpotEstimator.cxx:210
 AliIntSpotEstimator.cxx:211
 AliIntSpotEstimator.cxx:212
 AliIntSpotEstimator.cxx:213
 AliIntSpotEstimator.cxx:214
 AliIntSpotEstimator.cxx:215
 AliIntSpotEstimator.cxx:216
 AliIntSpotEstimator.cxx:217
 AliIntSpotEstimator.cxx:218
 AliIntSpotEstimator.cxx:219
 AliIntSpotEstimator.cxx:220
 AliIntSpotEstimator.cxx:221
 AliIntSpotEstimator.cxx:222
 AliIntSpotEstimator.cxx:223
 AliIntSpotEstimator.cxx:224
 AliIntSpotEstimator.cxx:225
 AliIntSpotEstimator.cxx:226
 AliIntSpotEstimator.cxx:227
 AliIntSpotEstimator.cxx:228
 AliIntSpotEstimator.cxx:229
 AliIntSpotEstimator.cxx:230
 AliIntSpotEstimator.cxx:231
 AliIntSpotEstimator.cxx:232
 AliIntSpotEstimator.cxx:233
 AliIntSpotEstimator.cxx:234
 AliIntSpotEstimator.cxx:235
 AliIntSpotEstimator.cxx:236
 AliIntSpotEstimator.cxx:237
 AliIntSpotEstimator.cxx:238
 AliIntSpotEstimator.cxx:239
 AliIntSpotEstimator.cxx:240
 AliIntSpotEstimator.cxx:241
 AliIntSpotEstimator.cxx:242
 AliIntSpotEstimator.cxx:243
 AliIntSpotEstimator.cxx:244
 AliIntSpotEstimator.cxx:245
 AliIntSpotEstimator.cxx:246
 AliIntSpotEstimator.cxx:247
 AliIntSpotEstimator.cxx:248
 AliIntSpotEstimator.cxx:249
 AliIntSpotEstimator.cxx:250
 AliIntSpotEstimator.cxx:251
 AliIntSpotEstimator.cxx:252
 AliIntSpotEstimator.cxx:253
 AliIntSpotEstimator.cxx:254
 AliIntSpotEstimator.cxx:255
 AliIntSpotEstimator.cxx:256
 AliIntSpotEstimator.cxx:257
 AliIntSpotEstimator.cxx:258
 AliIntSpotEstimator.cxx:259
 AliIntSpotEstimator.cxx:260
 AliIntSpotEstimator.cxx:261
 AliIntSpotEstimator.cxx:262
 AliIntSpotEstimator.cxx:263
 AliIntSpotEstimator.cxx:264
 AliIntSpotEstimator.cxx:265
 AliIntSpotEstimator.cxx:266
 AliIntSpotEstimator.cxx:267
 AliIntSpotEstimator.cxx:268
 AliIntSpotEstimator.cxx:269
 AliIntSpotEstimator.cxx:270
 AliIntSpotEstimator.cxx:271
 AliIntSpotEstimator.cxx:272
 AliIntSpotEstimator.cxx:273
 AliIntSpotEstimator.cxx:274
 AliIntSpotEstimator.cxx:275
 AliIntSpotEstimator.cxx:276
 AliIntSpotEstimator.cxx:277
 AliIntSpotEstimator.cxx:278
 AliIntSpotEstimator.cxx:279
 AliIntSpotEstimator.cxx:280
 AliIntSpotEstimator.cxx:281
 AliIntSpotEstimator.cxx:282
 AliIntSpotEstimator.cxx:283
 AliIntSpotEstimator.cxx:284
 AliIntSpotEstimator.cxx:285
 AliIntSpotEstimator.cxx:286
 AliIntSpotEstimator.cxx:287
 AliIntSpotEstimator.cxx:288
 AliIntSpotEstimator.cxx:289
 AliIntSpotEstimator.cxx:290
 AliIntSpotEstimator.cxx:291
 AliIntSpotEstimator.cxx:292
 AliIntSpotEstimator.cxx:293
 AliIntSpotEstimator.cxx:294
 AliIntSpotEstimator.cxx:295
 AliIntSpotEstimator.cxx:296
 AliIntSpotEstimator.cxx:297
 AliIntSpotEstimator.cxx:298
 AliIntSpotEstimator.cxx:299
 AliIntSpotEstimator.cxx:300
 AliIntSpotEstimator.cxx:301
 AliIntSpotEstimator.cxx:302
 AliIntSpotEstimator.cxx:303
 AliIntSpotEstimator.cxx:304
 AliIntSpotEstimator.cxx:305
 AliIntSpotEstimator.cxx:306
 AliIntSpotEstimator.cxx:307
 AliIntSpotEstimator.cxx:308
 AliIntSpotEstimator.cxx:309
 AliIntSpotEstimator.cxx:310
 AliIntSpotEstimator.cxx:311
 AliIntSpotEstimator.cxx:312
 AliIntSpotEstimator.cxx:313
 AliIntSpotEstimator.cxx:314
 AliIntSpotEstimator.cxx:315
 AliIntSpotEstimator.cxx:316
 AliIntSpotEstimator.cxx:317
 AliIntSpotEstimator.cxx:318
 AliIntSpotEstimator.cxx:319
 AliIntSpotEstimator.cxx:320
 AliIntSpotEstimator.cxx:321
 AliIntSpotEstimator.cxx:322
 AliIntSpotEstimator.cxx:323
 AliIntSpotEstimator.cxx:324
 AliIntSpotEstimator.cxx:325
 AliIntSpotEstimator.cxx:326
 AliIntSpotEstimator.cxx:327
 AliIntSpotEstimator.cxx:328
 AliIntSpotEstimator.cxx:329
 AliIntSpotEstimator.cxx:330
 AliIntSpotEstimator.cxx:331
 AliIntSpotEstimator.cxx:332
 AliIntSpotEstimator.cxx:333
 AliIntSpotEstimator.cxx:334
 AliIntSpotEstimator.cxx:335
 AliIntSpotEstimator.cxx:336
 AliIntSpotEstimator.cxx:337
 AliIntSpotEstimator.cxx:338
 AliIntSpotEstimator.cxx:339
 AliIntSpotEstimator.cxx:340
 AliIntSpotEstimator.cxx:341
 AliIntSpotEstimator.cxx:342
 AliIntSpotEstimator.cxx:343
 AliIntSpotEstimator.cxx:344
 AliIntSpotEstimator.cxx:345
 AliIntSpotEstimator.cxx:346
 AliIntSpotEstimator.cxx:347
 AliIntSpotEstimator.cxx:348
 AliIntSpotEstimator.cxx:349
 AliIntSpotEstimator.cxx:350
 AliIntSpotEstimator.cxx:351
 AliIntSpotEstimator.cxx:352
 AliIntSpotEstimator.cxx:353
 AliIntSpotEstimator.cxx:354
 AliIntSpotEstimator.cxx:355
 AliIntSpotEstimator.cxx:356
 AliIntSpotEstimator.cxx:357
 AliIntSpotEstimator.cxx:358
 AliIntSpotEstimator.cxx:359
 AliIntSpotEstimator.cxx:360
 AliIntSpotEstimator.cxx:361
 AliIntSpotEstimator.cxx:362
 AliIntSpotEstimator.cxx:363
 AliIntSpotEstimator.cxx:364
 AliIntSpotEstimator.cxx:365
 AliIntSpotEstimator.cxx:366
 AliIntSpotEstimator.cxx:367
 AliIntSpotEstimator.cxx:368
 AliIntSpotEstimator.cxx:369
 AliIntSpotEstimator.cxx:370
 AliIntSpotEstimator.cxx:371
 AliIntSpotEstimator.cxx:372
 AliIntSpotEstimator.cxx:373
 AliIntSpotEstimator.cxx:374
 AliIntSpotEstimator.cxx:375
 AliIntSpotEstimator.cxx:376
 AliIntSpotEstimator.cxx:377
 AliIntSpotEstimator.cxx:378
 AliIntSpotEstimator.cxx:379
 AliIntSpotEstimator.cxx:380
 AliIntSpotEstimator.cxx:381
 AliIntSpotEstimator.cxx:382
 AliIntSpotEstimator.cxx:383
 AliIntSpotEstimator.cxx:384
 AliIntSpotEstimator.cxx:385
 AliIntSpotEstimator.cxx:386
 AliIntSpotEstimator.cxx:387
 AliIntSpotEstimator.cxx:388
 AliIntSpotEstimator.cxx:389
 AliIntSpotEstimator.cxx:390
 AliIntSpotEstimator.cxx:391
 AliIntSpotEstimator.cxx:392
 AliIntSpotEstimator.cxx:393
 AliIntSpotEstimator.cxx:394
 AliIntSpotEstimator.cxx:395
 AliIntSpotEstimator.cxx:396
 AliIntSpotEstimator.cxx:397
 AliIntSpotEstimator.cxx:398
 AliIntSpotEstimator.cxx:399
 AliIntSpotEstimator.cxx:400
 AliIntSpotEstimator.cxx:401
 AliIntSpotEstimator.cxx:402
 AliIntSpotEstimator.cxx:403
 AliIntSpotEstimator.cxx:404
 AliIntSpotEstimator.cxx:405
 AliIntSpotEstimator.cxx:406
 AliIntSpotEstimator.cxx:407
 AliIntSpotEstimator.cxx:408
 AliIntSpotEstimator.cxx:409
 AliIntSpotEstimator.cxx:410
 AliIntSpotEstimator.cxx:411
 AliIntSpotEstimator.cxx:412
 AliIntSpotEstimator.cxx:413
 AliIntSpotEstimator.cxx:414
 AliIntSpotEstimator.cxx:415
 AliIntSpotEstimator.cxx:416
 AliIntSpotEstimator.cxx:417
 AliIntSpotEstimator.cxx:418
 AliIntSpotEstimator.cxx:419
 AliIntSpotEstimator.cxx:420
 AliIntSpotEstimator.cxx:421
 AliIntSpotEstimator.cxx:422
 AliIntSpotEstimator.cxx:423
 AliIntSpotEstimator.cxx:424
 AliIntSpotEstimator.cxx:425
 AliIntSpotEstimator.cxx:426
 AliIntSpotEstimator.cxx:427
 AliIntSpotEstimator.cxx:428
 AliIntSpotEstimator.cxx:429
 AliIntSpotEstimator.cxx:430
 AliIntSpotEstimator.cxx:431
 AliIntSpotEstimator.cxx:432
 AliIntSpotEstimator.cxx:433
 AliIntSpotEstimator.cxx:434
 AliIntSpotEstimator.cxx:435
 AliIntSpotEstimator.cxx:436
 AliIntSpotEstimator.cxx:437
 AliIntSpotEstimator.cxx:438
 AliIntSpotEstimator.cxx:439
 AliIntSpotEstimator.cxx:440
 AliIntSpotEstimator.cxx:441
 AliIntSpotEstimator.cxx:442
 AliIntSpotEstimator.cxx:443
 AliIntSpotEstimator.cxx:444
 AliIntSpotEstimator.cxx:445
 AliIntSpotEstimator.cxx:446
 AliIntSpotEstimator.cxx:447
 AliIntSpotEstimator.cxx:448
 AliIntSpotEstimator.cxx:449
 AliIntSpotEstimator.cxx:450
 AliIntSpotEstimator.cxx:451
 AliIntSpotEstimator.cxx:452
 AliIntSpotEstimator.cxx:453
 AliIntSpotEstimator.cxx:454
 AliIntSpotEstimator.cxx:455
 AliIntSpotEstimator.cxx:456
 AliIntSpotEstimator.cxx:457
 AliIntSpotEstimator.cxx:458
 AliIntSpotEstimator.cxx:459
 AliIntSpotEstimator.cxx:460
 AliIntSpotEstimator.cxx:461
 AliIntSpotEstimator.cxx:462
 AliIntSpotEstimator.cxx:463
 AliIntSpotEstimator.cxx:464
 AliIntSpotEstimator.cxx:465
 AliIntSpotEstimator.cxx:466
 AliIntSpotEstimator.cxx:467
 AliIntSpotEstimator.cxx:468
 AliIntSpotEstimator.cxx:469
 AliIntSpotEstimator.cxx:470
 AliIntSpotEstimator.cxx:471
 AliIntSpotEstimator.cxx:472
 AliIntSpotEstimator.cxx:473
 AliIntSpotEstimator.cxx:474
 AliIntSpotEstimator.cxx:475
 AliIntSpotEstimator.cxx:476
 AliIntSpotEstimator.cxx:477
 AliIntSpotEstimator.cxx:478
 AliIntSpotEstimator.cxx:479
 AliIntSpotEstimator.cxx:480
 AliIntSpotEstimator.cxx:481
 AliIntSpotEstimator.cxx:482
 AliIntSpotEstimator.cxx:483
 AliIntSpotEstimator.cxx:484
 AliIntSpotEstimator.cxx:485
 AliIntSpotEstimator.cxx:486
 AliIntSpotEstimator.cxx:487
 AliIntSpotEstimator.cxx:488
 AliIntSpotEstimator.cxx:489
 AliIntSpotEstimator.cxx:490
 AliIntSpotEstimator.cxx:491
 AliIntSpotEstimator.cxx:492
 AliIntSpotEstimator.cxx:493
 AliIntSpotEstimator.cxx:494
 AliIntSpotEstimator.cxx:495
 AliIntSpotEstimator.cxx:496
 AliIntSpotEstimator.cxx:497
 AliIntSpotEstimator.cxx:498
 AliIntSpotEstimator.cxx:499
 AliIntSpotEstimator.cxx:500
 AliIntSpotEstimator.cxx:501
 AliIntSpotEstimator.cxx:502
 AliIntSpotEstimator.cxx:503
 AliIntSpotEstimator.cxx:504
 AliIntSpotEstimator.cxx:505
 AliIntSpotEstimator.cxx:506
 AliIntSpotEstimator.cxx:507
 AliIntSpotEstimator.cxx:508
 AliIntSpotEstimator.cxx:509
 AliIntSpotEstimator.cxx:510
 AliIntSpotEstimator.cxx:511
 AliIntSpotEstimator.cxx:512
 AliIntSpotEstimator.cxx:513
 AliIntSpotEstimator.cxx:514
 AliIntSpotEstimator.cxx:515
 AliIntSpotEstimator.cxx:516
 AliIntSpotEstimator.cxx:517
 AliIntSpotEstimator.cxx:518
 AliIntSpotEstimator.cxx:519
 AliIntSpotEstimator.cxx:520
 AliIntSpotEstimator.cxx:521
 AliIntSpotEstimator.cxx:522
 AliIntSpotEstimator.cxx:523
 AliIntSpotEstimator.cxx:524
 AliIntSpotEstimator.cxx:525
 AliIntSpotEstimator.cxx:526
 AliIntSpotEstimator.cxx:527
 AliIntSpotEstimator.cxx:528
 AliIntSpotEstimator.cxx:529
 AliIntSpotEstimator.cxx:530
 AliIntSpotEstimator.cxx:531
 AliIntSpotEstimator.cxx:532
 AliIntSpotEstimator.cxx:533
 AliIntSpotEstimator.cxx:534
 AliIntSpotEstimator.cxx:535
 AliIntSpotEstimator.cxx:536
 AliIntSpotEstimator.cxx:537
 AliIntSpotEstimator.cxx:538
 AliIntSpotEstimator.cxx:539
 AliIntSpotEstimator.cxx:540
 AliIntSpotEstimator.cxx:541
 AliIntSpotEstimator.cxx:542
 AliIntSpotEstimator.cxx:543
 AliIntSpotEstimator.cxx:544
 AliIntSpotEstimator.cxx:545
 AliIntSpotEstimator.cxx:546
 AliIntSpotEstimator.cxx:547
 AliIntSpotEstimator.cxx:548
 AliIntSpotEstimator.cxx:549
 AliIntSpotEstimator.cxx:550
 AliIntSpotEstimator.cxx:551
 AliIntSpotEstimator.cxx:552
 AliIntSpotEstimator.cxx:553
 AliIntSpotEstimator.cxx:554
 AliIntSpotEstimator.cxx:555
 AliIntSpotEstimator.cxx:556
 AliIntSpotEstimator.cxx:557
 AliIntSpotEstimator.cxx:558
 AliIntSpotEstimator.cxx:559
 AliIntSpotEstimator.cxx:560
 AliIntSpotEstimator.cxx:561
 AliIntSpotEstimator.cxx:562
 AliIntSpotEstimator.cxx:563
 AliIntSpotEstimator.cxx:564
 AliIntSpotEstimator.cxx:565
 AliIntSpotEstimator.cxx:566
 AliIntSpotEstimator.cxx:567
 AliIntSpotEstimator.cxx:568
 AliIntSpotEstimator.cxx:569
 AliIntSpotEstimator.cxx:570
 AliIntSpotEstimator.cxx:571
 AliIntSpotEstimator.cxx:572
 AliIntSpotEstimator.cxx:573
 AliIntSpotEstimator.cxx:574
 AliIntSpotEstimator.cxx:575