Option kPyBeautyPbMNR added. (N. Carrer).
[u/mrichter/AliRoot.git] / EVGEN / AliGenPythia.cxx
index 8886114..fbe8ec5 100644 (file)
 
 /*
 $Log$
+Revision 1.55  2002/04/17 10:23:56  morsch
+Coding Rule violations corrected.
+
+Revision 1.54  2002/03/28 11:49:10  morsch
+Pass status code in SetTrack.
+
+Revision 1.53  2002/03/25 14:51:13  morsch
+New stack-fill and count options introduced (N. Carrer).
+
 Revision 1.51  2002/03/06 08:46:57  morsch
 - Loop until np-1
 - delete dyn. alloc. arrays (N. Carrer)
@@ -153,6 +162,17 @@ Revision 1.11  1999/09/29 09:24:14  fca
 Introduction of the Copyright and cvs Log
 */
 
+//
+// Generator using the TPythia interface (via AliPythia)
+// to generate pp collisions.
+// Using SetNuclei() also nuclear modifications to the structure functions
+// can be taken into account. This makes, of course, only sense for the
+// generation of the products of hard processes (heavy flavor, jets ...)
+//
+// andreas.morsch@cern.ch
+//
+
+
 #include "AliGenPythia.h"
 #include "AliGenPythiaEventHeader.h"
 #include "AliDecayerPythia.h"
@@ -215,6 +235,7 @@ AliGenPythia::AliGenPythia(Int_t npart)
 AliGenPythia::AliGenPythia(const AliGenPythia & Pythia)
 {
 // copy constructor
+    Pythia.Copy(*this);
 }
 
 AliGenPythia::~AliGenPythia()
@@ -275,6 +296,7 @@ void AliGenPythia::Init()
        fFlavorSelect    =  4;  
        break;
     case kPyBeauty:
+    case kPyBeautyPbMNR:
        fParentSelect[0]=  511;
        fParentSelect[1]=  521;
        fParentSelect[2]=  531;
@@ -488,6 +510,7 @@ void AliGenPythia::Generate()
                    if (!pSelected[i]) continue;
                    TParticle *  iparticle = (TParticle *) fParticles->At(i);
                    kf = CheckPDGCode(iparticle->GetPdgCode());
+                   Int_t ks = iparticle->GetStatusCode();  
                    p[0] = iparticle->Px();
                    p[1] = iparticle->Py();
                    p[2] = iparticle->Pz();
@@ -498,7 +521,7 @@ void AliGenPythia::Generate()
                    Int_t ipa     = iparticle->GetFirstMother()-1;
                    Int_t iparent = (ipa > -1) ? pParent[ipa] : -1;
                    SetTrack(fTrackIt*trackIt[i] ,
-                                    iparent, kf, p, origin, polar, tof, kPPrimary, nt, 1.);
+                                    iparent, kf, p, origin, polar, tof, kPPrimary, nt, 1., ks);
                    pParent[i] = nt;
                    KeepTrack(nt); 
                } //  SetTrack loop
@@ -543,6 +566,9 @@ void AliGenPythia::Generate()
 
 Int_t  AliGenPythia::GenerateMB()
 {
+//
+// Min Bias selection and other global selections
+//
     Int_t i, kf, nt, iparent;
     Int_t nc = 0;
     Float_t p[3];
@@ -587,7 +613,7 @@ Int_t  AliGenPythia::GenerateMB()
            origin[2] = fOrigin[2]+iparticle->Vz()/10.;
            Float_t tof=kconv*iparticle->T();
            SetTrack(fTrackIt*trackIt, iparent, kf, p, origin, polar,
-                        tof, kPPrimary, nt);
+                        tof, kPPrimary, nt, 1., ks);
            KeepTrack(nt);
            pParent[i] = nt;
        } // select particle
@@ -626,7 +652,7 @@ void AliGenPythia::SetNuclei(Int_t a1, Int_t a2)
 }
 
 
-void AliGenPythia::MakeHeader()
+void AliGenPythia::MakeHeader() const
 {
 // Builds the event header, to be called after each event
     AliGenEventHeader* header = new AliGenPythiaEventHeader("Pythia");
@@ -637,7 +663,7 @@ void AliGenPythia::MakeHeader()
 }
        
 
-Bool_t AliGenPythia::CheckTrigger(TParticle* jet1, TParticle* jet2)
+Bool_t AliGenPythia::CheckTrigger(TParticle* jet1, TParticle* jet2) const
 {
 // Check the kinematic trigger condition
 //