Pass event vertex to header.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 25 Sep 2001 11:30:23 +0000 (11:30 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 25 Sep 2001 11:30:23 +0000 (11:30 +0000)
EVGEN/AliGenPythia.cxx
EVGEN/AliGenPythia.h

index 31d9caa..78fa83a 100644 (file)
 
 /*
 $Log$
+Revision 1.39  2001/07/27 17:09:36  morsch
+Use local SetTrack, KeepTrack and SetHighWaterMark methods
+to delegate either to local stack or to stack owned by AliRun.
+(Piotr Skowronski, A.M.)
+
 Revision 1.38  2001/07/13 10:58:54  morsch
 - Some coded moved to AliGenMC
 - Improved handling of secondary vertices.
@@ -150,6 +155,7 @@ AliGenPythia::AliGenPythia(Int_t npart)
     fFlavorSelect   = 0;
     // Produced particles  
     fParticles = new TClonesArray("TParticle",1000);
+    fEventVertex.Set(3);
 }
 
 AliGenPythia::AliGenPythia(const AliGenPythia & Pythia)
@@ -244,7 +250,6 @@ void AliGenPythia::Generate()
 {
 // Generate one event
     fDecayer->ForceDecay();
-
     Float_t polar[3]   =   {0,0,0};
     Float_t origin[3]  =   {0,0,0};
     Float_t origin0[3] =   {0,0,0};
@@ -292,9 +297,16 @@ void AliGenPythia::Generate()
        printf("\n **************************************************%d\n",np);
        Int_t nc = 0;
        if (np == 0 ) continue;
+// Get event vertex    
+       TParticle* iparticle;
+       iparticle = (TParticle *) fParticles->At(0);
+       fEventVertex[0] = iparticle->Vx()/10.;
+       fEventVertex[1] = iparticle->Vy()/10.;  
+       fEventVertex[2] = iparticle->Vz()/10.;
+//
        if (fProcess != kPyMb && fProcess != kPyJets && fProcess != kPyDirectGamma) {
            for (i = 0; i<np-1; i++) {
-               TParticle *  iparticle = (TParticle *) fParticles->At(i);
+               iparticle = (TParticle *) fParticles->At(i);
                Int_t ks = iparticle->GetStatusCode();
                kf = CheckPDGCode(iparticle->GetPdgCode());
 // No initial state partons
@@ -466,7 +478,7 @@ Int_t  AliGenPythia::GenerateMB()
            origin[2]=origin0[2]+iparticle->Vz()/10.;
            Float_t tof=kconv*iparticle->T();
            SetTrack(fTrackIt*trackIt, iparent, kf, p, origin, polar,
-                            tof, kPPrimary, nt);
+                    tof, kPPrimary, nt);
            KeepTrack(nt);
            pParent[i] = nt;
        } // select particle
@@ -510,8 +522,9 @@ void AliGenPythia::MakeHeader()
 {
 // Builds the event header, to be called after each event
     AliGenEventHeader* header = new AliGenPythiaEventHeader("Pythia");
-   ((AliGenPythiaEventHeader*) header)->SetProcessType(fPythia->GetMSTI(1));
-   gAlice->SetGenEventHeader(header);
+    ((AliGenPythiaEventHeader*) header)->SetProcessType(fPythia->GetMSTI(1));
+    header->SetPrimaryVertex(fEventVertex);
+    gAlice->SetGenEventHeader(header);
 }
        
          
index daf0e3d..957c3ee 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "AliGenMC.h"
 #include "AliPythia.h"
+#include "TArrayF.h"
 
 class AliPythia;
 class TParticle;
@@ -43,24 +44,26 @@ class AliGenPythia : public AliGenMC
     Int_t  GenerateMB();
     virtual void    MakeHeader();    
  protected:
-    TClonesArray* fParticles;  // Particle  List
+    TClonesArray* fParticles;     //Particle  List
+    
+    Process_t   fProcess;         //Process type
+    StrucFunc_t fStrucFunc;       //Structure Function
+    Float_t     fEnergyCMS;       //Centre of mass energy
+    Float_t     fKineBias;        //!Bias from kinematic selection
+    Int_t       fTrials;          //!Number of trials
+    Int_t       fFlavorSelect;    //Heavy Flavor Selection
+    Float_t     fXsection;        //Cross-section
+    AliPythia   *fPythia;         //!Pythia 
+    Float_t     fPtHardMin;       //lower pT-hard cut 
+    Float_t     fPtHardMax;       //higher pT-hard cut
+    Int_t       fNucA1;           //mass number nucleus side 1
+    Int_t       fNucA2;           //mass number nucleus side 2
+    Bool_t      fFullEvent;       //!Write Full event if true
+    AliDecayer  *fDecayer;        //!Pointer to the decayer instance
+    Int_t       fDebugEventFirst; //!First event to debug
+    Int_t       fDebugEventLast;  //!Last  event to debug
+    TArrayF     fEventVertex;     //!The current event vertex
     
-    Process_t   fProcess;       // Process type
-    StrucFunc_t fStrucFunc;     // Structure Function
-    Float_t     fEnergyCMS;     // Centre of mass energy
-    Float_t     fKineBias;      // Bias from kinematic selection
-    Int_t       fTrials;        // Number of trials
-    Int_t       fFlavorSelect;  // Heavy Flavor Selection
-    Float_t     fXsection;      // Cross-section
-    AliPythia   *fPythia;       //! Pythia 
-    Float_t     fPtHardMin;     // lower pT-hard cut 
-    Float_t     fPtHardMax;     // higher pT-hard cut
-    Int_t       fNucA1;         // mass number nucleus side 1
-    Int_t       fNucA2;         // mass number nucleus side 2
-    Bool_t      fFullEvent;     // Write Full event if true
-    AliDecayer  *fDecayer;      //! Pointer to the decayer instance
-    Int_t       fDebugEventFirst; // First event to debug
-    Int_t       fDebugEventLast;  // Last  event to debug
  private:
     // adjust the weight from kinematic cuts
     void   AdjustWeights();