Added cleanup in Loader dtor and Getter Reset()
[u/mrichter/AliRoot.git] / THijing / AliGenHijing.cxx
index c0e6c15..1024241 100644 (file)
@@ -73,8 +73,7 @@ AliGenHijing::AliGenHijing(Int_t npart)
     fDnDb       =  0;
     fPtMinJet   = -2.5;        
     fRadiation  =  3;
-    fEventVertex.Set(3);
-//
+    //
     SetSimpleJets();
     SetNoGammas();
 //
@@ -86,7 +85,8 @@ AliGenHijing::AliGenHijing(Int_t npart)
 
 }
 
-AliGenHijing::AliGenHijing(const AliGenHijing & Hijing)
+AliGenHijing::AliGenHijing(const AliGenHijing & hijing):
+    AliGenMC(hijing)
 {
 // copy constructor
 }
@@ -111,7 +111,7 @@ void AliGenHijing::Init()
                      fAProjectile, fZProjectile, fATarget, fZTarget, 
                      fMinImpactParam, fMaxImpactParam));
 
-    fHijing=(THijing*) fgMCEvGen;
+    fHijing=(THijing*) fMCEvGen;
     fHijing->SetIHPR2(2,  fRadiation);
     fHijing->SetIHPR2(3,  fTrigger);
     fHijing->SetIHPR2(6,  fShadowing);
@@ -170,7 +170,7 @@ void AliGenHijing::Generate()
   Float_t polar[3]    =   {0,0,0};
   Float_t origin[3]   =   {0,0,0};
   Float_t origin0[3]  =   {0,0,0};
-  Float_t p[3], random[6];
+  Float_t p[3];
   Float_t tof;
 
 //  converts from mm/c to s
@@ -186,22 +186,10 @@ void AliGenHijing::Generate()
   fTrials = 0;
   for (j = 0;j < 3; j++) origin0[j] = fOrigin[j];
   if(fVertexSmear == kPerEvent) {
-      Float_t dv[3];
-      dv[2] = 1.e10;
-      while(TMath::Abs(dv[2]) > fCutVertexZ*fOsigma[2]) {
-         Rndm(random,6);
-         for (j=0; j < 3; j++) {
-             dv[j] = fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
-                 TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
-         }
-      }
-      for (j=0; j < 3; j++) origin0[j] += dv[j];
-  } else if (fVertexSmear == kPerTrack) {
-//         fHijing->SetMSTP(151,0);
-      for (j = 0; j < 3; j++) {
-//           fHijing->SetPARP(151+j, fOsigma[j]*10.);
-      }
-  }
+      Vertex();
+      for (j=0; j < 3; j++) origin0[j] = fVertex[j];
+  } 
+
   while(1)
   {
 //    Generate one event
@@ -234,9 +222,9 @@ void AliGenHijing::Generate()
 //      Get event vertex
 //
       TParticle *  iparticle = (TParticle *) fParticles->At(0);
-      fEventVertex[0] = origin0[0];
-      fEventVertex[1] = origin0[1];    
-      fEventVertex[2] = origin0[2];
+      fVertex[0] = origin0[0];
+      fVertex[1] = origin0[1]; 
+      fVertex[2] = origin0[2];
       
 //
 //      First select parent particles
@@ -328,7 +316,7 @@ void AliGenHijing::Generate()
                  imo = (mother->GetPdgCode() != 92) ? imo = newPos[imo] : -1;
              } // if has mother   
              Bool_t tFlag = (fTrackIt && !hasDaughter);
-             SetTrack(tFlag,imo,kf,p,origin,polar,
+             PushTrack(tFlag,imo,kf,p,origin,polar,
                       tof,kPNoProcess,nt, 1., ks);
              KeepTrack(nt);
              newPos[i] = nt;
@@ -530,8 +518,8 @@ void AliGenHijing::MakeHeader()
 // Bookkeeping for kinematic bias
     ((AliGenHijingEventHeader*) header)->SetTrials(fTrials);
 // Event Vertex
-    header->SetPrimaryVertex(fEventVertex);
-    gAlice->SetGenEventHeader(header);   
+    header->SetPrimaryVertex(fVertex);
+    if (gAlice) gAlice->SetGenEventHeader(header);   
     fCollisionGeometry = (AliGenHijingEventHeader*)  header;
 }
 
@@ -593,11 +581,14 @@ Bool_t AliGenHijing::CheckTrigger()
 }
 
 
-
+void AliGenHijing::Copy(TObject &) const
+{
+  Fatal("Copy","Not implemented!\n");
+}
 
 AliGenHijing& AliGenHijing::operator=(const  AliGenHijing& rhs)
 {
-// Assignment operator
-    return *this;
+    rhs.Copy(*this); 
+    return (*this);
 }