Memory leak due to creation of AliGenPythiaEventHeader objects corrected.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 May 2003 10:21:01 +0000 (10:21 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 May 2003 10:21:01 +0000 (10:21 +0000)
PYTHIA6/AliGenPythia.cxx
PYTHIA6/AliGenPythia.h

index 3ddb173b969b7a1a2bd8bbb0aea095ac753c564f..71e317a4bd13cf55bb5b0094bce94d42ac22b9fa 100644 (file)
@@ -47,6 +47,7 @@ AliGenPythia::AliGenPythia()
 // Default Constructor
   fParticles = 0;
   fPythia    = 0;
+  fHeader = 0;
   fDecayer   = new AliDecayerPythia();
   SetEventListRange();
   SetJetPhiRange();
@@ -83,6 +84,7 @@ AliGenPythia::AliGenPythia(Int_t npart)
     fFlavorSelect   = 0;
     // Produced particles  
     fParticles = new TClonesArray("TParticle",1000);
+    fHeader = 0;
     fEventVertex.Set(3);
     SetEventListRange();
     SetJetPhiRange();
@@ -276,6 +278,7 @@ void AliGenPythia::Init()
 void AliGenPythia::Generate()
 {
 // Generate one event
+    
     fDecayer->ForceDecay();
 
     Float_t polar[3]   =   {0,0,0};
@@ -615,16 +618,17 @@ void AliGenPythia::SetNuclei(Int_t a1, Int_t a2)
 void AliGenPythia::MakeHeader()
 {
 // Builds the event header, to be called after each event
-    AliGenEventHeader* header = new AliGenPythiaEventHeader("Pythia");
+    if (fHeader) delete fHeader;
+    fHeader = new AliGenPythiaEventHeader("Pythia");
 //
 // Event type  
-    ((AliGenPythiaEventHeader*) header)->SetProcessType(fPythia->GetMSTI(1));
+    ((AliGenPythiaEventHeader*) fHeader)->SetProcessType(fPythia->GetMSTI(1));
 //
 // Number of trials
-    ((AliGenPythiaEventHeader*) header)->SetTrials(fTrials);
+    ((AliGenPythiaEventHeader*) fHeader)->SetTrials(fTrials);
 //
 // Event Vertex 
-    header->SetPrimaryVertex(fEventVertex);
+    fHeader->SetPrimaryVertex(fEventVertex);
 //
 // Jets that have triggered
     if (fProcess == kPyJets)
@@ -634,11 +638,11 @@ void AliGenPythia::MakeHeader()
        GetJets(njet, ntrig, jets);
        
        for (Int_t i = 0; i < ntrig; i++) {
-           ((AliGenPythiaEventHeader*) header)->AddJet(jets[0][i], jets[1][i], jets[2][i], 
+           ((AliGenPythiaEventHeader*) fHeader)->AddJet(jets[0][i], jets[1][i], jets[2][i], 
                                                        jets[3][i]);
        }
     }
-    gAlice->SetGenEventHeader(header);
+    gAlice->SetGenEventHeader(fHeader);
 }
        
 
index 4489dd180fbfad165e873b35ca116fe0bfb81d9d..272cb03b17268f16b0e8ff5304f0f16504d80b1c 100644 (file)
@@ -20,6 +20,7 @@
 
 class AliPythia;
 class TParticle;
+class AliGenPythiaEventHeader;
 
 class AliGenPythia : public AliGenMC
 {
@@ -177,13 +178,15 @@ class AliGenPythia : public AliGenMC
     //
 
     CountMode_t fCountMode;         // Options for counting when the event will be finished.
+    AliGenPythiaEventHeader* fHeader; //! Event header
+     
     // fCountMode = kCountAll         --> All particles that end up in the
     //                                    stack are counted
     // fCountMode = kCountParents     --> Only selected parents are counted
     // fCountMode = kCountTrackabless --> Only particles flagged for tracking
     //                                     are counted
     //
-    ClassDef(AliGenPythia,4) // AliGenerator interface to Pythia
+    ClassDef(AliGenPythia,5) // AliGenerator interface to Pythia
 };
 #endif