]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ZDC/AliGenZDC.cxx
Bug in ZEM2 TDC filling fixed
[u/mrichter/AliRoot.git] / ZDC / AliGenZDC.cxx
index bba504a5685b7d5670eefb09525ee7e4c4b7bf35..3b1c8d868121ab4854d3a0949c8332092a7934d8 100644 (file)
@@ -55,6 +55,11 @@ AliGenZDC::AliGenZDC()
   //
   // Default constructor
   //
+  for(Int_t i=0; i<201; i++){
+    fProbintp[i]=0.;
+    fProbintn[i]=0.;
+    fPp[i]=0.;
+  }
 }
 
 //_____________________________________________________________________________
@@ -77,12 +82,11 @@ AliGenZDC::AliGenZDC(Int_t npart)
   fName = "AliGenZDC";
   fTitle = "Generation of Test Particles for ZDCs";
   
-  Int_t i, j;
-  for(i=0; i<201; i++){
+  for(Int_t i=0; i<201; i++){
      fProbintp[i] = 0;
      fProbintn[i] = 0;
+     fPp[i] = 0;
   }
-  for(j=0; j<3; j++) fPp[i] = 0;
 }
 
 //_____________________________________________________________________________
@@ -97,7 +101,7 @@ void AliGenZDC::Init()
          "= %f, Crossing plane = %d\n\n", fFermiflag, fBeamDiv, fBeamCrossAngle,
         fBeamCrossPlane);
 
-  FermiTwoGaussian(207.);
+  FermiTwoGaussian(208.);
 }  
   
 //_____________________________________________________________________________
@@ -108,7 +112,7 @@ void AliGenZDC::Generate()
   //
   Int_t i;
 
-  Double_t mass, pLab[3], fP0, fP[3], fBoostP[3], ddp[3], dddp0, dddp[3]; 
+  Double_t mass, pLab[3], fP0, fP[3], fBoostP[3], ddp[3]={0.,0.,0.}, dddp0, dddp[3]; 
   Float_t  fPTrack[3], ptot = fPMin;
   Int_t nt;
   
@@ -143,7 +147,7 @@ void AliGenZDC::Generate()
   if(fFermiflag==1){
     if((fIpart==kProton) || (fIpart==kNeutron))
       ExtractFermi(fIpart, ddp);
-    mass=gAlice->PDGDB()->GetParticle(fIpart)->Mass();
+    mass=TDatabasePDG::Instance()->GetParticle(fIpart)->Mass();
     fP0 = TMath::Sqrt(fP[0]*fP[0]+fP[1]*fP[1]+fP[2]*fP[2]+mass*mass);
     for(i=0; i<=2; i++) dddp[i] = ddp[i];
     dddp0 = TMath::Sqrt(dddp[0]*dddp[0]+dddp[1]*dddp[1]+dddp[2]*dddp[2]+mass*mass);
@@ -219,26 +223,28 @@ void AliGenZDC::ExtractFermi(Int_t id, Double_t *ddp)
 // Compute Fermi momentum for spectator nucleons
 //
   
-  Int_t i;
+  Int_t index=0;
   Float_t xx = gRandom->Rndm();
   assert ( id==kProton || id==kNeutron );
   if(id==kProton){
-    for(i=1; i<=200; i++){
+    for(Int_t i=1; i<=200; i++){
        if((xx>=fProbintp[i-1]) && (xx<fProbintp[i])) break;
-       }
+       index = i;
+    }
   }
   else {
-    for(i=0; i<=200; i++){
+    for(Int_t i=1; i<=200; i++){
        if((xx>=fProbintn[i-1]) && (xx<fProbintn[i])) break;
-       }
-   }
-         Float_t pext = fPp[i]+0.001;
-        Float_t phi = k2PI*(gRandom->Rndm());
-        Float_t cost = (1.-2.*(gRandom->Rndm()));
-        Float_t tet = TMath::ACos(cost);
-        ddp[0] = pext*TMath::Sin(tet)*TMath::Cos(phi);
-        ddp[1] = pext*TMath::Sin(tet)*TMath::Sin(phi);
-        ddp[2] = pext*cost;
+       index = i;
+    }
+  }
+  Float_t pext = fPp[index]+0.001;
+  Float_t phi = k2PI*(gRandom->Rndm());
+  Float_t cost = (1.-2.*(gRandom->Rndm()));
+  Float_t tet = TMath::ACos(cost);
+  ddp[0] = pext*TMath::Sin(tet)*TMath::Cos(phi);
+  ddp[1] = pext*TMath::Sin(tet)*TMath::Sin(phi);
+  ddp[2] = pext*cost;
 
   if(fDebugOpt == 1){
     printf("\n\n               Extraction of Fermi momentum\n");