Corrections.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 8 Sep 2010 08:18:48 +0000 (08:18 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 8 Sep 2010 08:18:48 +0000 (08:18 +0000)
LOPEZ Xavier <lopez@clermont.in2p3.fr>

EVGEN/AliGenFunction.cxx
EVGEN/AliGenTHnSparse.cxx
EVGEN/AliGenTHnSparse.h

index 52d87bb..23d2f2a 100644 (file)
@@ -61,6 +61,7 @@
 #include "AliESDtrack.h"
 #include "AliESDVertex.h"
 #include "AliGenFunction.h"
+#include "AliGenEventHeader.h"
 
 ClassImp(AliGenFunction)
 
@@ -160,7 +161,8 @@ void AliGenFunction::Generate()
     naccepted++;
   }
 
-
+  AliGenEventHeader* header = new AliGenEventHeader("THn");
+  gAlice->SetGenEventHeader(header);
   return;
 }
 //-----------------------------------------------------------------------------
index 9a25b20..5a5d53b 100644 (file)
 //-----------------------------------------------------------------------
 /*
   Example for generation :
        AliGenTHnSparse *gener = new AliGenTHnSparse();
        gener->SetNumberParticles(10);
-       gener->SetPart(13);
+       gener->SetPart(13,kTRUE); // for generating id 13 and -13
        gener->SetThnSparse("file_name","thn_name");
        gener->Init();
 */
 
 #include "AliGenTHnSparse.h"
 
+// NEW
+#include "AliRun.h"
+#include "AliGenEventHeader.h"
+//
+
 ClassImp(AliGenTHnSparse)
 
 //_______________________________________________________________________
@@ -44,7 +48,8 @@ AliGenTHnSparse::AliGenTHnSparse():
   AliGenerator(),
   fHn(0),
   fFile(0),
-  fIpart(0)
+  fIpart(0),
+  fBoth(kFALSE)
 {
     // Default constructor
     SetNumberParticles(1);
@@ -82,7 +87,8 @@ AliGenTHnSparse::~AliGenTHnSparse()
 //_______________________________________________________________________
 void AliGenTHnSparse::Generate()
 {
-  
+    Int_t naccepted =0;
+
     // Generate Npart of id Ipart
     
     Double_t rand[4]; //  z, ptot, r, theta
@@ -90,7 +96,7 @@ void AliGenTHnSparse::Generate()
     Float_t mom[3];
     Int_t pdg = fIpart;
   
-    for (Int_t ipart = 0; ipart < fNpart; ipart++) {
+    for (Int_t ipart = 0; ipart < fNpart && naccepted<fNpart; ipart++) {
 
        fHn->GetRandom(rand);
        z=rand[0];
@@ -117,12 +123,25 @@ void AliGenTHnSparse::Generate()
 
 // propagation
 
-       Float_t polarization[3]= {0,0,0};
+       Float_t polarization[3] = {0,0,0};
        Int_t nt;
+
+// Part and anti-part
+
+       if(fBoth){
+           Double_t sign = gRandom->Rndm();
+           if(sign < 0.5) pdg = -fIpart;
+           else pdg = fIpart;
+       }
+
        PushTrack(fTrackIt,-1,pdg,mom, pos, polarization,0,kPPrimary,nt);
+       naccepted++;
   }
 
+    AliGenEventHeader* header = new AliGenEventHeader("THn");
+    gAlice->SetGenEventHeader(header);
     return;
+
 }
 
 //_______________________________________________________________________
index e7e7c08..2581a9c 100644 (file)
@@ -21,7 +21,7 @@ public:
   virtual ~AliGenTHnSparse();
   virtual void Generate();
   virtual void Init();
-  virtual void SetPart(Int_t part) {fIpart=part;}
+  virtual void SetPart(Int_t part, Bool_t both) {fIpart=part; fBoth=both;}
   virtual void SetThnSparse(char *file_name, char *thn_name);
   
 private:
@@ -29,8 +29,9 @@ private:
   THnSparse *fHn; // Pointer to THnSparse object
   TFile *fFile;   // Pointer to input file
   Int_t fIpart;   // Particle type
-
-  ClassDef(AliGenTHnSparse,1)
+  Bool_t fBoth;   // Particle and anti-particle type
+      
+  ClassDef(AliGenTHnSparse,2)
 };
 
 #endif