+//______________________________________________________________________
+void AliITSVertexerZ::ConfigIterations(Int_t noiter,Float_t *ptr){
+ // configure the iterative procedure to gain efficiency for
+ // pp events with very low multiplicity
+ Float_t defaults[5]={0.05,0.1,0.2,0.3,0.5};
+ fMaxIter=noiter;
+ if(noiter>5){
+ Error("ConfigIterations","Maximum number of iterations is 5\n");
+ fMaxIter=5;
+ }
+ for(Int_t j=0;j<5;j++)fPhiDiffIter[j]=defaults[j];
+ if(ptr)for(Int_t j=0;j<fMaxIter;j++)fPhiDiffIter[j]=ptr[j];
+}
+
+//______________________________________________________________________
+Int_t AliITSVertexerZ::GetPeakRegion(TH1F*h, Int_t &binmin, Int_t &binmax) const {
+ // Finds a region around a peak in the Z histogram
+ // Case of 2 peaks is treated
+ Int_t imax=h->GetNbinsX();
+ Float_t maxval=0;
+ Int_t bi1=h->GetMaximumBin();
+ Int_t bi2=0;
+ for(Int_t i=imax;i>=1;i--){
+ if(h->GetBinContent(i)>maxval){
+ maxval=h->GetBinContent(i);
+ bi2=i;
+ }
+ }
+ Int_t npeaks=0;
+
+ if(bi1==bi2){
+ binmin=bi1-3;
+ binmax=bi1+3;
+ npeaks=1;
+ }else{
+ TH1F *copy = new TH1F(*h);
+ copy->SetBinContent(bi1,0.);
+ copy->SetBinContent(bi2,0.);
+ Int_t l1=TMath::Max(bi1-3,1);
+ Int_t l2=TMath::Min(bi1+3,h->GetNbinsX());
+ Float_t cont1=copy->Integral(l1,l2);
+ Int_t ll1=TMath::Max(bi2-3,1);
+ Int_t ll2=TMath::Min(bi2+3,h->GetNbinsX());
+ Float_t cont2=copy->Integral(ll1,ll2);
+ if(cont1>cont2){
+ binmin=l1;
+ binmax=l2;
+ npeaks=1;
+ }
+ if(cont2>cont1){
+ binmin=ll1;
+ binmax=ll2;
+ npeaks=1;
+ }
+ if(cont1==cont2){
+ binmin=l1;
+ binmax=ll2;
+ if(bi2-bi1==1) npeaks=1;
+ else npeaks=2;
+ }
+ delete copy;
+ }
+ return npeaks;
+}