doxy: TPC/stressTest/testSparse converted
[u/mrichter/AliRoot.git] / EVGEN / AliGenSlowNucleons.cxx
index 9688e62..aa319d3 100644 (file)
 #include <TH1F.h>
 #include <TF1.h>
 #include <TCanvas.h>
+#include <TParticle.h>
 
 #include "AliConst.h"
 #include "AliCollisionGeometry.h"
+#include "AliStack.h"
+#include "AliRun.h"
+#include "AliMC.h"
 #include "AliGenSlowNucleons.h"
 #include "AliSlowNucleonModel.h"
 
@@ -64,6 +68,7 @@ AliGenSlowNucleons::AliGenSlowNucleons()
      fBeamCrossingAngle(0.),
      fBeamDivergence(0.),
      fBeamDivEvent(0.),
+     fSmearMode(2),
      fSlowNucleonModel(0)
 {
 // Default constructor
@@ -95,6 +100,7 @@ AliGenSlowNucleons::AliGenSlowNucleons(Int_t npart)
      fBeamCrossingAngle(0.),
      fBeamDivergence(0.),
      fBeamDivEvent(0.),
+     fSmearMode(2),
      fSlowNucleonModel(new AliSlowNucleonModel())
 
 {
@@ -174,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);
@@ -214,6 +225,7 @@ void AliGenSlowNucleons::Generate()
        PushTrack(fTrackIt, -1, kf, p, origin, polar,
                 time, kPNoProcess, nt, 1.,-2);
        KeepTrack(nt);
+       SetProcessID(nt,kGrayProcess);
     }
 //
 //  Gray neutrons
@@ -226,6 +238,7 @@ void AliGenSlowNucleons::Generate()
        PushTrack(fTrackIt, -1, kf, p, origin, polar,
                 time, kPNoProcess, nt, 1.,-2);
        KeepTrack(nt);
+       SetProcessID(nt,kGrayProcess);
     }
 //
 //  Black protons
@@ -237,6 +250,7 @@ void AliGenSlowNucleons::Generate()
        PushTrack(fTrackIt, -1, kf, p, origin, polar,
                 time, kPNoProcess, nt, 1.,-1);
        KeepTrack(nt);
+       SetProcessID(nt,kBlackProcess);
     }
 //
 //  Black neutrons
@@ -248,6 +262,7 @@ void AliGenSlowNucleons::Generate()
        PushTrack(fTrackIt, -1, kf, p, origin, polar,
                 time, kPNoProcess, nt, 1.,-1);
        KeepTrack(nt);
+       SetProcessID(nt,kBlackProcess);
     }
 }
 
@@ -423,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);
+}