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 6b1f5bbcd99cbd7252ca4c0a3bea3a806a2045c0..8645054e351c22aba9ade7cadeb2251109f73414 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 64c25a54b7130fcd025a26d883707adf7c95b379..61580c1ab54fdaf22b14b7dad24147b41914a06b 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 3e6048f033451509401a985ecf9ae21cce2a767d..033108893e4a065fbd122ceeac1bda876d43198c 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 fb5e77d6052151c373372c0e7ef94cfee0a8cf04..f3760849d4396d23d22be3a24aa1107db111fcb4 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 8ecddf432645600482a98fd57d734b14f259290a..af8b7bf6ab17116e24de7959469038ff464e66b1 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
 };