]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenSlowNucleons.cxx
Merge branch master into TRDdev
[u/mrichter/AliRoot.git] / EVGEN / AliGenSlowNucleons.cxx
index 9567e56f0d0f47d681797df48f520e3d28d2deff..aa319d3f4cf5178e057bf66cd2dc7b73c6bb81a7 100644 (file)
@@ -35,6 +35,8 @@
 #include "AliConst.h"
 #include "AliCollisionGeometry.h"
 #include "AliStack.h"
+#include "AliRun.h"
+#include "AliMC.h"
 #include "AliGenSlowNucleons.h"
 #include "AliSlowNucleonModel.h"
 
@@ -66,6 +68,7 @@ AliGenSlowNucleons::AliGenSlowNucleons()
      fBeamCrossingAngle(0.),
      fBeamDivergence(0.),
      fBeamDivEvent(0.),
+     fSmearMode(2),
      fSlowNucleonModel(0)
 {
 // Default constructor
@@ -97,6 +100,7 @@ AliGenSlowNucleons::AliGenSlowNucleons(Int_t npart)
      fBeamCrossingAngle(0.),
      fBeamDivergence(0.),
      fBeamDivEvent(0.),
+     fSmearMode(2),
      fSlowNucleonModel(new AliSlowNucleonModel())
 
 {
@@ -176,8 +180,13 @@ void AliGenSlowNucleons::Generate()
        //      Int_t  nnw  = fCollisionGeometry->NNw();
        //      Int_t  nwnw = fCollisionGeometry->NwNw();
        
-       //fSlowNucleonModel->GetNumberOfSlowNucleons(fCollisionGeometry, fNgp, fNgn, fNbp, fNbn);
-       fSlowNucleonModel->GetNumberOfSlowNucleons2(fCollisionGeometry, fNgp, fNgn, fNbp, fNbn);
+       // (1) Sikler' model 
+       if(fSmearMode==0) fSlowNucleonModel->GetNumberOfSlowNucleons(fCollisionGeometry, fNgp, fNgn, fNbp, fNbn);
+       // (2) Model inspired on exp. data at lower energy (Gallio-Oppedisano)
+       // --- smearing the Ncoll fron generator used as input 
+       else if(fSmearMode==1) fSlowNucleonModel->GetNumberOfSlowNucleons2(fCollisionGeometry, fNgp, fNgn, fNbp, fNbn);
+       // --- smearing directly Nslow 
+       else if(fSmearMode==2) fSlowNucleonModel->GetNumberOfSlowNucleons2s(fCollisionGeometry, fNgp, fNgn, fNbp, fNbn);
        if (fDebug) {
            //printf("Collision Geometry %f %d %d %d %d\n", b, nn, nwn, nnw, nwnw);
            printf("Slow nucleons: %d grayp  %d grayn  %d blackp  %d blackn \n", fNgp, fNgn, fNbp, fNbn);
@@ -216,7 +225,7 @@ void AliGenSlowNucleons::Generate()
        PushTrack(fTrackIt, -1, kf, p, origin, polar,
                 time, kPNoProcess, nt, 1.,-2);
        KeepTrack(nt);
-       GetStack()->Particle(nt)->SetUniqueID(kGrayProcess);
+       SetProcessID(nt,kGrayProcess);
     }
 //
 //  Gray neutrons
@@ -229,7 +238,7 @@ void AliGenSlowNucleons::Generate()
        PushTrack(fTrackIt, -1, kf, p, origin, polar,
                 time, kPNoProcess, nt, 1.,-2);
        KeepTrack(nt);
-       GetStack()->Particle(nt)->SetUniqueID(kGrayProcess);
+       SetProcessID(nt,kGrayProcess);
     }
 //
 //  Black protons
@@ -241,7 +250,7 @@ void AliGenSlowNucleons::Generate()
        PushTrack(fTrackIt, -1, kf, p, origin, polar,
                 time, kPNoProcess, nt, 1.,-1);
        KeepTrack(nt);
-       GetStack()->Particle(nt)->SetUniqueID(kBlackProcess);
+       SetProcessID(nt,kBlackProcess);
     }
 //
 //  Black neutrons
@@ -253,7 +262,7 @@ void AliGenSlowNucleons::Generate()
        PushTrack(fTrackIt, -1, kf, p, origin, polar,
                 time, kPNoProcess, nt, 1.,-1);
        KeepTrack(nt);
-       GetStack()->Particle(nt)->SetUniqueID(kBlackProcess);
+       SetProcessID(nt,kBlackProcess);
     }
 }
 
@@ -429,3 +438,13 @@ void  AliGenSlowNucleons::AddAngle(Double_t theta1, Double_t phi1,
   angleSum[1] = fisum;
 }  
 
+//_____________________________________________________________________________
+void AliGenSlowNucleons::SetProcessID(Int_t nt, UInt_t process)
+{
+  // Tag the particle as
+  // gray or black
+  if (fStack)
+    fStack->Particle(nt)->SetUniqueID(process);
+  else 
+    gAlice->GetMCApp()->Particle(nt)->SetUniqueID(process);
+}