]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TDPMjet/AliGenDPMjet.cxx
Moving set/get energy in cms, projectile, target propertie to the very base AliGenera...
[u/mrichter/AliRoot.git] / TDPMjet / AliGenDPMjet.cxx
index 9f6af3accc965bc501eab87fb2c21a13e5131073..32624e68615d9b2c7996123fc376eda906eb275d 100644 (file)
@@ -28,6 +28,7 @@
 #include <TParticleClassPDG.h>
 #include <TPDGCode.h>
 #include <TLorentzVector.h>
+#include <TClonesArray.h>
 #include "AliRunLoader.h"
 #include "AliGenDPMjet.h"
 #include "AliGenDPMjetEventHeader.h"
@@ -43,7 +44,6 @@ ClassImp(AliGenDPMjet)
 AliGenDPMjet::AliGenDPMjet()
     :AliGenMC(), 
      fBeamEn(2750.),
-     fEnergyCMS(5500.),
      fMinImpactParam(0.),
      fMaxImpactParam(5.),
      fICentr(0),
@@ -54,7 +54,6 @@ AliGenDPMjet::AliGenDPMjet()
      fSpecn(0),
      fSpecp(0),
      fDPMjet(0),
-     fParticles(0),
      fNoGammas(0),
      fLHC(0),
      fPi0Decay(0),
@@ -62,6 +61,7 @@ AliGenDPMjet::AliGenDPMjet()
      fProcess(kDpmMb)
 {
 // Constructor
+    fEnergyCMS = 5500.;
     AliDpmJetRndm::SetDpmJetRandom(GetRandom());
 }
 
@@ -70,7 +70,6 @@ AliGenDPMjet::AliGenDPMjet()
 AliGenDPMjet::AliGenDPMjet(Int_t npart)
     :AliGenMC(npart),
      fBeamEn(2750.),
-     fEnergyCMS(5500.),
      fMinImpactParam(0.),
      fMaxImpactParam(5.),
      fICentr(0),
@@ -81,7 +80,6 @@ AliGenDPMjet::AliGenDPMjet(Int_t npart)
      fSpecn(0),
      fSpecp(0),
      fDPMjet(0),
-     fParticles(new TClonesArray("TParticle",10000)),
      fNoGammas(0),
      fLHC(0),
      fPi0Decay(0),
@@ -90,6 +88,7 @@ AliGenDPMjet::AliGenDPMjet(Int_t npart)
 {
 // Default PbPb collisions at 5. 5 TeV
 //
+    fEnergyCMS = 5500.;
     fName = "DPMJET";
     fTitle= "Particle Generator using DPMJET";
     SetTarget();
@@ -101,7 +100,6 @@ AliGenDPMjet::AliGenDPMjet(Int_t npart)
 AliGenDPMjet::AliGenDPMjet(const AliGenDPMjet &/*Dpmjet*/)
     :AliGenMC(),
      fBeamEn(2750.),
-     fEnergyCMS(5500.),
      fMinImpactParam(0.),
      fMaxImpactParam(5.),
      fICentr(0),
@@ -112,7 +110,6 @@ AliGenDPMjet::AliGenDPMjet(const AliGenDPMjet &/*Dpmjet*/)
      fSpecn(0),
      fSpecp(0),
      fDPMjet(0),
-     fParticles(0),
      fNoGammas(0),
      fLHC(0),
      fPi0Decay(0),
@@ -120,13 +117,13 @@ AliGenDPMjet::AliGenDPMjet(const AliGenDPMjet &/*Dpmjet*/)
      fProcess(kDpmMb)
 {
     // Dummy copy constructor
+    fEnergyCMS = 5500.;
 }
 
 //______________________________________________________________________________
 AliGenDPMjet::~AliGenDPMjet()
 {
 // Destructor
-    delete fParticles;
 }
 //______________________________________________________________________________
 void AliGenDPMjet::Init()
@@ -144,7 +141,7 @@ void AliGenDPMjet::Init()
     // fICentr<-99 -> fraction of x-sec. = XSFRAC                
     // fICentr=-1. -> evaporation/fzc suppressed                 
     // fICentr<-1. -> evaporation/fzc suppressed                 
-    if (fAProjectile == 1 && fZProjectile == 1) fDPMjet->SetfIdp(1);
+    if (fAProjectile == 1 && TMath::Abs(fZProjectile == 1)) fDPMjet->SetfIdp(1);
     
     fDPMjet->SetfFCentr(fICentr);  
     fDPMjet->SetbRange(fMinImpactParam, fMaxImpactParam); 
@@ -163,7 +160,6 @@ void AliGenDPMjet::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];
   Float_t tof;
 
@@ -187,13 +183,13 @@ void AliGenDPMjet::Generate()
       fDPMjet->GenerateEvent();
       fTrials++;
 
-      fDPMjet->ImportParticles(fParticles,"All");      
+      fDPMjet->ImportParticles(&fParticles,"All");      
       if (fLHC) Boost();
 
       // Temporaneo
       fGenImpPar = fDPMjet->GetBImpac();
       
-      Int_t np = fParticles->GetEntriesFast();
+      Int_t np = fParticles.GetEntriesFast();
       printf("\n **************************************************%d\n",np);
       Int_t nc=0;
       if (np==0) continue;
@@ -206,16 +202,10 @@ void AliGenDPMjet::Generate()
          pSelected[i] = 0;
       }
       
-//      Get event vertex
-      
-      fVertex[0] = origin0[0];
-      fVertex[1] = origin0[1]; 
-      fVertex[2] = origin0[2];
-      
 //      First select parent particles
 
       for (i = 0; i<np; i++) {
-         TParticle *iparticle = (TParticle *) fParticles->At(i);
+         TParticle *iparticle = (TParticle *) fParticles.At(i);
 
 // Is this a parent particle ?
 
@@ -225,7 +215,7 @@ void AliGenDPMjet::Generate()
          Bool_t  hasSelectedDaughters =  kFALSE;
          
          kf = iparticle->GetPdgCode();
-         if (kf == 92) continue;
+         if (kf == 92 || kf == 99999) continue;
          ks = iparticle->GetStatusCode();
 // No initial state partons
           if (ks==21) continue;
@@ -247,7 +237,7 @@ void AliGenDPMjet::Generate()
 
 
       for (i=0; i<np; i++) {
-         TParticle *iparticle = (TParticle *) fParticles->At(i);
+         TParticle *iparticle = (TParticle *) fParticles.At(i);
 
 // Is this a final state particle ?
 
@@ -281,7 +271,7 @@ void AliGenDPMjet::Generate()
 // Write particles to stack
 
       for (i = 0; i<np; i++) {
-         TParticle *  iparticle = (TParticle *) fParticles->At(i);
+         TParticle *  iparticle = (TParticle *) fParticles.At(i);
          Bool_t  hasMother   = (iparticle->GetFirstMother()>=0);
          if (pSelected[i]) {
              
@@ -301,12 +291,11 @@ void AliGenDPMjet::Generate()
              TParticle* mother = 0;
              if (hasMother) {
                  imo = iparticle->GetFirstMother();
-                 mother = (TParticle *) fParticles->At(imo);
-                 imo = (mother->GetPdgCode() != 92) ? imo = newPos[imo] : -1;
+                 mother = (TParticle *) fParticles.At(imo);
+                 imo = (mother->GetPdgCode() != 92 && mother->GetPdgCode() != 99999) ? newPos[imo] : -1;
              } // if has mother   
 
              Bool_t tFlag = (fTrackIt && (ks == 1));
-             
              PushTrack(tFlag,imo,kf,p,origin,polar,tof,kPNoProcess,nt, 1., ks);
              KeepTrack(nt);
              newPos[i] = nt;
@@ -341,7 +330,7 @@ Bool_t AliGenDPMjet::DaughtersSelection(TParticle* iparticle)
        imin = iparticle->GetFirstDaughter();
        imax = iparticle->GetLastDaughter();       
        for (i = imin; i <= imax; i++){
-           TParticle *  jparticle = (TParticle *) fParticles->At(i);   
+           TParticle *  jparticle = (TParticle *) fParticles.At(i);    
            Int_t ip = jparticle->GetPdgCode();
            if (KinematicSelection(jparticle,0)&&SelectFlavor(ip)) {
                selected=kTRUE; break;
@@ -408,7 +397,7 @@ void AliGenDPMjet::MakeHeader()
 // Event Vertex
     header->SetPrimaryVertex(fVertex);
     gAlice->SetGenEventHeader(header);    
- AddHeader(header);
   AddHeader(header);
 }
 
 void AliGenDPMjet::AddHeader(AliGenEventHeader* header)
@@ -430,5 +419,12 @@ AliGenDPMjet& AliGenDPMjet::operator=(const  AliGenDPMjet& /*rhs*/)
 }
 
 
+void AliGenDPMjet::FinishRun()
+{
+    // Print run statistics
+    fDPMjet->Dt_Dtuout();
+}
+
+    
 
 //______________________________________________________________________________