Avoiding EbyE creation and deletion of hijing header.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 11 Sep 2010 12:16:56 +0000 (12:16 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 11 Sep 2010 12:16:56 +0000 (12:16 +0000)
Should solve  <http://savannah.cern.ch/bugs/?72466>

STEER/AliGenCocktailEventHeader.cxx
THijing/AliGenHijing.cxx
THijing/AliGenHijing.h

index 1f4b967..3d35f4c 100644 (file)
@@ -55,7 +55,7 @@ void AliGenCocktailEventHeader::AddHeader(AliGenEventHeader* header)
 {
 // Add a header to the list
     if (!fHeaders) fHeaders = new TList();
-    fHeaders->Add(header);
+    fHeaders->Add(header->Clone());
 }
 
 Int_t AliGenCocktailEventHeader::CalcNProduced()
index 26602e4..d6b87a1 100644 (file)
@@ -75,7 +75,7 @@ AliGenHijing::AliGenHijing()
      fRandomPz(kFALSE),
      fNoHeavyQuarks(kFALSE),
      fEventTime(0.),
-     fHeader(0)
+     fHeader(AliGenHijingEventHeader("Hijing"))
 {
   // Constructor
   fEnergyCMS = 5500.;
@@ -120,7 +120,7 @@ AliGenHijing::AliGenHijing(Int_t npart)
      fRandomPz(kFALSE),
      fNoHeavyQuarks(kFALSE),
      fEventTime(0.),
-     fHeader(0)
+     fHeader(AliGenHijingEventHeader("Hijing"))
 {
 // Default PbPb collisions at 5. 5 TeV
 //
@@ -131,6 +131,7 @@ AliGenHijing::AliGenHijing(Int_t npart)
 //
 // Set random number generator   
     AliHijingRndm::SetHijingRandom(GetRandom());
+    
 }
 
 AliGenHijing::~AliGenHijing()
@@ -557,24 +558,18 @@ Bool_t AliGenHijing::Stable(TParticle*  particle) const
 void AliGenHijing::MakeHeader()
 {
 // Builds the event header, to be called after each event
-    if (fHeader) delete fHeader;
-    fHeader = new AliGenHijingEventHeader("Hijing");
-
-    ((AliGenHijingEventHeader*) fHeader)->SetNProduced(fNprimaries);
-    ((AliGenHijingEventHeader*) fHeader)->SetImpactParameter(fHijing->GetHINT1(19));
-    ((AliGenHijingEventHeader*) fHeader)->SetTotalEnergy(fHijing->GetEATT());
-    ((AliGenHijingEventHeader*) fHeader)->SetHardScatters(fHijing->GetJATT());
-    ((AliGenHijingEventHeader*) fHeader)->SetParticipants(fHijing->GetNP(), fHijing->GetNT());
-    ((AliGenHijingEventHeader*) fHeader)->SetCollisions(fHijing->GetN0(),
-                                                      fHijing->GetN01(),
-                                                      fHijing->GetN10(),
-                                                      fHijing->GetN11());
-    ((AliGenHijingEventHeader*) fHeader)->SetSpectators(fProjectileSpecn, fProjectileSpecp,
-                                                      fTargetSpecn,fTargetSpecp);
-    ((AliGenHijingEventHeader*) fHeader)->SetReactionPlaneAngle(fHijing->GetHINT1(20));
-//    printf("Impact Parameter %13.3f \n", fHijing->GetHINT1(19));
-    
-
+    fHeader.SetNProduced(fNprimaries);
+    fHeader.SetImpactParameter(fHijing->GetHINT1(19));
+    fHeader.SetTotalEnergy(fHijing->GetEATT());
+    fHeader.SetHardScatters(fHijing->GetJATT());
+    fHeader.SetParticipants(fHijing->GetNP(), fHijing->GetNT());
+    fHeader.SetCollisions(fHijing->GetN0(),
+                         fHijing->GetN01(),
+                         fHijing->GetN10(),
+                         fHijing->GetN11());
+    fHeader.SetSpectators(fProjectileSpecn, fProjectileSpecp,
+                         fTargetSpecn,fTargetSpecp);
+    fHeader.SetReactionPlaneAngle(fHijing->GetHINT1(20));
 
 // 4-momentum vectors of the triggered jets.
 //
@@ -598,14 +593,14 @@ void AliGenHijing::MakeHeader()
                                              fHijing->GetHINT1(37),
                                              fHijing->GetHINT1(38),
                                              fHijing->GetHINT1(39));
-    ((AliGenHijingEventHeader*) fHeader)->SetJets(jet1, jet2, jet3, jet4);
+    fHeader.SetJets(jet1, jet2, jet3, jet4);
 // Bookkeeping for kinematic bias
-    ((AliGenHijingEventHeader*) fHeader)->SetTrials(fTrials);
+    fHeader.SetTrials(fTrials);
 // Event Vertex
-    fHeader->SetPrimaryVertex(fVertex);
-    fHeader->SetInteractionTime(fEventTime);
-    AddHeader(fHeader);
-    fCollisionGeometry = (AliGenHijingEventHeader*)  fHeader;
+    fHeader.SetPrimaryVertex(fVertex);
+    fHeader.SetInteractionTime(fEventTime);
+    AddHeader(&fHeader);
+    fCollisionGeometry = &fHeader;
 }
 
 
index 84aea7b..86295b3 100644 (file)
 // andreas.morsch@cern.ch
 
 #include "AliGenMC.h"
+#include "AliGenHijingEventHeader.h"
 #include <TString.h>
 
 class THijing;
 class TParticle;
 class TClonesArray;
 class TGraph;
-class AliGenHijingEventHeader;
+
 
 class AliGenHijing : public AliGenMC
 {
@@ -127,7 +128,7 @@ class AliGenHijing : public AliGenMC
     Bool_t      fRandomPz;       // Randomise sign of pz  event by event
     Bool_t      fNoHeavyQuarks;  // If true no heavy quarks are produced
     Float_t     fEventTime;      // The event time
-    AliGenHijingEventHeader*   fHeader; // MC Header
+    AliGenHijingEventHeader     fHeader; // MC Header
     
  private:
     AliGenHijing(const AliGenHijing &Hijing);