-
- for(j=0; j<(np2)-1; j++) {
- for(k=0; k<(np1)-1; k++) {
- dphi=TMath::Abs(phi1[k]-phi2[j]);
- if(dphi>180) dphi = 360-dphi;
- if(dphi<deltaPhiZ && TMath::Abs((z1[k]-(z2[j]-z1[k])/((r2[j]/r1[k])-1))-vzero[2])
- <deltaZ) hITSZv->Fill(z1[k]-(z2[j]-z1[k])/((r2[j]/r1[k])-1));
- }
- }
-
- //cout << "\nNumber of used pairs: \n";
-
- a = vzero[2]-deltaZ;
- b = vzero[2]+deltaZ;
- max=(Int_t) hITSZv->GetMaximum();
- binmax=hITSZv->GetMaximumBin();
- sigma=0;
- for(i=0;i<nbin;i++) vectorBinZ[i]=(Int_t)hITSZv->GetBinContent(i);
- for(i=0;i<10;i++) f1=f1+vectorBinZ[i]/10;
- for(i=nbin-10;i<nbin;i++) f2=f2+vectorBinZ[i]/10;
- averagebg=(f1+f2)/2;
- for(i=0;i<nbin;i++) {
- if(vectorBinZ[i]-averagebg>(max-averagebg)*0.4 &&
- vectorBinZ[i]-averagebg<(max-averagebg)*0.7) {
- sigma=hITSZv->GetBinCenter(binmax)-hITSZv->GetBinCenter(i);
- sigma=TMath::Abs(sigma);
- if(sigma==0) sigma=0.05;
- }
- }
-
-
- TF1 *fz = new TF1 ("fz","([0]*exp(-0.5*((x-[1])/[2])*((x-[1])/[2])))+[3]",a,b);
-
- fz->SetParameter(0,max);
- if(niter==0) {Double_t temp = hITSZv->GetBinCenter(binmax); vzero[2]=temp;}
- fz->SetParameter(1,vzero[2]);
- fz->SetParameter(2,sigma);
- fz->SetParameter(3,averagebg);
- fz->SetParLimits(2,0,999);
- fz->SetParLimits(3,0,999);
-
- hITSZv->Fit("fz","RQ0");
-
- snr[2] = fz->GetParameter(0)/fz->GetParameter(3);
- if(snr[2]<0.) {
- Error("FindVertexForCurrentEvent","\nNegative Signal to noise ratio for z!!!\n");
- Error("FindVertexForCurrentEvent","The algorithm cannot find the z vertex position.\n");
- // exit(123456789);