AliGenCocktail passes its pointer to the entries and
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 Feb 2005 12:36:48 +0000 (12:36 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 Feb 2005 12:36:48 +0000 (12:36 +0000)
the generators in the list can call AliGenerator::AddHeader to put header in the list of
headers owned by AliGenCocktailEventHeader.
-------------------------------------------------------------------------

EVGEN/AliGenCocktail.cxx
EVGEN/AliGenCocktail.h
EVGEN/AliGenCocktailEventHeader.cxx [new file with mode: 0644]
EVGEN/AliGenCocktailEventHeader.h [new file with mode: 0644]

index fba33f8..8ede907 100644 (file)
@@ -31,7 +31,7 @@
 #include "AliCollisionGeometry.h"
 #include "AliRun.h"
 #include "AliMC.h"
-#include "AliGenEventHeader.h"
+#include "AliGenCocktailEventHeader.h"
 
 ClassImp(AliGenCocktail)
 
@@ -46,6 +46,7 @@ AliGenCocktail::AliGenCocktail()
     fNGenerators=0;
     fEntries = 0;
     fRandom  = kFALSE;
+    fHeader  = 0;
 }
 
 AliGenCocktail::AliGenCocktail(const AliGenCocktail & cocktail):
@@ -59,6 +60,7 @@ AliGenCocktail::~AliGenCocktail()
 {
 // Destructor
     delete fEntries;
+    delete fHeader;
 }
 
 void AliGenCocktail::
@@ -89,6 +91,8 @@ AddGenerator(AliGenerator *Generator, const char* Name, Float_t RateExp)
     Generator->SetVertexSmear(fVertexSmear);
     Generator->SetVertexSource(kContainer);
     Generator->SetTrackingFlag(fTrackIt);
+    Generator->SetContainer(this);
+    
         
 //
 //  Add generator to list   
@@ -156,6 +160,8 @@ AddGenerator(AliGenerator *Generator, const char* Name, Float_t RateExp)
     AliGenCocktailEntry *entry = 0;
     AliGenCocktailEntry *preventry = 0;
     AliGenerator* gen = 0;
+    if (fHeader) delete fHeader;
+    fHeader = new AliGenCocktailEventHeader("Cocktail Header");
 
     TObjArray *partArray = gAlice->GetMCApp()->Particles();
 
@@ -219,11 +225,10 @@ AddGenerator(AliGenerator *Generator, const char* Name, Float_t RateExp)
     
     
     next.Reset();
-// Header
-    AliGenEventHeader* header = new AliGenEventHeader("AliGenCocktail");
+
 // Event Vertex
-    header->SetPrimaryVertex(eventVertex);
-    gAlice->SetGenEventHeader(header); 
+    fHeader->SetPrimaryVertex(eventVertex);
+    gAlice->SetGenEventHeader(fHeader); 
 }
 
 void AliGenCocktail::SetVertexSmear(VertexSmear_t smear)
@@ -291,6 +296,12 @@ NextGeneratorPair(AliGenCocktailEntry*& e1, AliGenCocktailEntry*& e2)
     }
 }
 
+void AliGenCocktail::AddHeader(AliGenEventHeader* header)
+{
+// Add a header to the list 
+    if (fHeader) fHeader->AddHeader(header);
+}
+                             
 AliGenCocktail& AliGenCocktail::operator=(const  AliGenCocktail& rhs)
 {
 // Assignment operator
index c233ebc..013d271 100644 (file)
@@ -14,6 +14,7 @@
 #include <TArrayF.h>
 
 class AliGenCocktailEntry;
+class AliGenCocktailEventHeader;
 class TArrayF;
 
 
@@ -41,15 +42,17 @@ class AliGenCocktail : public AliGenerator
     void FirstGeneratorPair(AliGenCocktailEntry*&e1, AliGenCocktailEntry*&e2);
     void NextGeneratorPair (AliGenCocktailEntry*&e1, AliGenCocktailEntry*&e2);
     AliGenCocktail & operator=(const AliGenCocktail & rhs);
-
+    virtual void AddHeader(AliGenEventHeader* header);
+           
  protected:
-    Int_t fNGenerators;   // Number of generators booked
-    Bool_t fRandom;       // Flag to select random generator from list
-    TArrayF  fProb;       // Probability of an event (if fRandom == kTRUE)
-    TList  *fEntries;     // List of Generators
-    TObjLink *flnk1;      // ! Iterator for first generator
-    TObjLink *flnk2;      // ! Iterator for second generator
-    
+    Int_t fNGenerators;                 // Number of generators booked
+    Bool_t fRandom;                     // Flag to select random generator from list
+    TArrayF  fProb;                     // Probability of an event (if fRandom == kTRUE)
+    TList  *fEntries;                   // List of Generators
+    TObjLink *flnk1;                    // ! Iterator for first generator
+    TObjLink *flnk2;                    // ! Iterator for second generator
+    AliGenCocktailEventHeader* fHeader; // !Header container  
+                          
 //
  private:
     void Copy(TObject &arun) const;
diff --git a/EVGEN/AliGenCocktailEventHeader.cxx b/EVGEN/AliGenCocktailEventHeader.cxx
new file mode 100644 (file)
index 0000000..13c393d
--- /dev/null
@@ -0,0 +1,43 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/* $Id$ */
+
+#include "AliGenCocktailEventHeader.h"
+#include "AliGenEventHeader.h"
+#include <TList.h>
+
+ClassImp(AliGenCocktailEventHeader);
+
+
+
+AliGenCocktailEventHeader::AliGenCocktailEventHeader()
+{
+// Default Constructor
+    fHeaders = 0x0;
+}
+
+AliGenCocktailEventHeader::AliGenCocktailEventHeader(const char* name):AliGenEventHeader(name)
+{
+// Constructor
+    fHeaders = 0x0;
+}
+
+void AliGenCocktailEventHeader::AddHeader(AliGenEventHeader* header)
+{
+// Add a header to the list
+    if (!fHeaders) fHeaders = new TList();
+    fHeaders->Add(header);
+}
diff --git a/EVGEN/AliGenCocktailEventHeader.h b/EVGEN/AliGenCocktailEventHeader.h
new file mode 100644 (file)
index 0000000..8064bb5
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef ALIGENCOCKTAILEVENTHEADER_H
+#define ALIGENCOCKTAILEVENTHEADER_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+#include "AliGenEventHeader.h"
+
+
+class AliGenCocktailEventHeader : public AliGenEventHeader
+{
+ public:
+    AliGenCocktailEventHeader();
+    AliGenCocktailEventHeader(const char* name);
+    virtual ~AliGenCocktailEventHeader() {}
+    virtual void AddHeader(AliGenEventHeader* header);
+    virtual TList* GetHeaders() {return fHeaders;}
+    
+protected:
+    TList  *fHeaders;     // List of Headers
+    ClassDef(AliGenCocktailEventHeader,1)  // Event header for Cocktail event
+};
+
+#endif