1) provide a static pointer to THerwig to be able to retriev AVWGT after running...
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 24 Jan 2011 13:19:48 +0000 (13:19 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 24 Jan 2011 13:19:48 +0000 (13:19 +0000)
2) store the event weight (also cross section) in AliGenHerwigEventHeader.
M. van Leeuwen

savannah 77127

STEER/AliGenHerwigEventHeader.cxx
STEER/AliGenHerwigEventHeader.h
THerwig/AliGenHerwig.cxx
THerwig/THerwig6.cxx
THerwig/THerwig6.h

index 6b1f5bb..8645054 100644 (file)
@@ -21,7 +21,8 @@ ClassImp(AliGenHerwigEventHeader)
 
 AliGenHerwigEventHeader::AliGenHerwigEventHeader():
     fProcessType(0),
-    fTrials(0)
+    fTrials(0),
+    fWeight(1.)
 {
 // Default Constructor
 }
@@ -29,7 +30,8 @@ AliGenHerwigEventHeader::AliGenHerwigEventHeader():
 AliGenHerwigEventHeader::AliGenHerwigEventHeader(const char* name):
     AliGenEventHeader(name),
     fProcessType(0),
-    fTrials(0)
+    fTrials(0),
+    fWeight(1.)
 {
 // Constructor
 }
index 64c25a5..61580c1 100644 (file)
@@ -19,10 +19,13 @@ class AliGenHerwigEventHeader : public AliGenEventHeader
     void     SetProcessType(Int_t type)  {fProcessType = type;}
     Int_t    Trials() {return fTrials;}
     void     SetTrials(Int_t trials) {fTrials = trials;}
+    Int_t    Weight() {return fWeight;}
+    void     SetWeight(Float_t weight) {fWeight = weight;}
 protected:
     Int_t    fProcessType;               // HERWIG process id for this event 
     Int_t    fTrials;                    // Number of trials to fulfill trigger condition
-    ClassDef(AliGenHerwigEventHeader, 1)  // Event header for Herwig event
+    Float_t  fWeight;                    // Event weight (= cross section in nb for unweighted events)
+    ClassDef(AliGenHerwigEventHeader, 2)  // Event header for Herwig event
 };
        
        
index 3e6048f..0331088 100644 (file)
@@ -129,7 +129,7 @@ void AliGenHerwig::SetEventListRange(Int_t eventFirst, Int_t eventLast)
 {
   fEv1Pr = eventFirst;
   fEv2Pr = eventLast;
-  if ( fEv2Pr == -1 ) fEv2Pr = fEv2Pr;
+  if ( fEv2Pr == -1 ) fEv2Pr = fEv1Pr;
 }
 
 void AliGenHerwig::Init()
@@ -520,6 +520,9 @@ void AliGenHerwig::MakeHeader()
 // Number of trials
     ((AliGenHerwigEventHeader*) fHeader)->SetTrials(fTrials);
 //
+// Event weight (cross section)
+    ((AliGenHerwigEventHeader*) fHeader)->SetWeight(fHerwig->GetEVWGT());
+//
 // Event Vertex 
     fHeader->SetPrimaryVertex(fVertex);
     
index fb5e77d..f376084 100644 (file)
@@ -54,6 +54,7 @@
 #include "TClonesArray.h"
 #include "TParticle.h"
 #include "TObjArray.h"
+#include "Riostream.h"
 
 
 ClassImp(THerwig6)
@@ -63,6 +64,7 @@ extern "C" {
   void   herwig6_close_fortran_file_(int* lun);
 }
 
+THerwig6 *THerwig6::fgInstance = 0;
 
 THerwig6::THerwig6() : TGenerator("Herwig6","Herwig6")
 {
@@ -75,6 +77,10 @@ THerwig6::THerwig6() : TGenerator("Herwig6","Herwig6")
   fParticles = new TClonesArray("TParticle",50);
 
   // initialize common-blocks
+  
+  if (fgInstance) 
+    cout << "WARNING: creating second instance of THerwig6" << endl;
+  fgInstance = this;
  }
 
 THerwig6::THerwig6(const THerwig6 & source): TGenerator(source)
@@ -85,8 +91,14 @@ THerwig6::THerwig6(const THerwig6 & source): TGenerator(source)
  THerwig6::~THerwig6()
  {
    // Destructor. The data members of TGenerator are delete by itself
+   fgInstance = 0;
  }
 
+//------------------------------------------------------------------------------
+THerwig6 *THerwig6::Instance()
+ {
+   return fgInstance ? fgInstance : new THerwig6;
+ }
 //______________________________________________________________________________
 void THerwig6::GenerateEvent()
 {
index 8ecddf4..af8b7bf 100644 (file)
@@ -86,6 +86,7 @@ public:
     return *this;
   }
   virtual ~THerwig6();
+  static THerwig6 *Instance();
 
   // acces to hep common block
   int         GetNEVHEP        () const;
@@ -224,6 +225,7 @@ public:
   void             Jimmin();
   void             Jmefin();
 protected:
+  static   THerwig6 *fgInstance;
   ClassDef(THerwig6,0)  //Interface to Herwig6.1 Event Generator
 };