1 #ifndef ALIGENCOCKTAIL_H
2 #define ALIGENCOCKTAIL_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 // Container class for AliGenerator through recursion.
9 // (Container is itself an AliGenerator)
10 // Author: andreas.morsch@cern.ch
13 #include "AliGenerator.h"
16 class AliGenCocktailEntry;
17 class AliGenCocktailEventHeader;
21 class AliGenCocktail : public AliGenerator
25 AliGenCocktail(const AliGenCocktail &cocktail);
27 virtual ~AliGenCocktail();
29 virtual void FinishRun();
30 virtual void Generate();
31 virtual void SetVertexSmear(VertexSmear_t smear);
32 virtual void SetRandomise(Bool_t flag) {fRandom = flag;}
35 // Add a new generator to the list
36 virtual void AddGenerator
37 (AliGenerator *Generator, const char* Name, Float_t RateExp );
38 virtual TList* Entries() {return fEntries;}
40 AliGenCocktailEntry* FirstGenerator();
41 AliGenCocktailEntry* NextGenerator();
42 void FirstGeneratorPair(AliGenCocktailEntry*&e1, AliGenCocktailEntry*&e2);
43 void NextGeneratorPair (AliGenCocktailEntry*&e1, AliGenCocktailEntry*&e2);
44 AliGenCocktail & operator=(const AliGenCocktail & rhs);
45 virtual void AddHeader(AliGenEventHeader* header);
48 Int_t fNGenerators; // Number of generators booked
49 Bool_t fRandom; // Flag to select random generator from list
50 TArrayF fProb; // Probability of an event (if fRandom == kTRUE)
51 TList *fEntries; // List of Generators
52 TObjLink *flnk1; // ! Iterator for first generator
53 TObjLink *flnk2; // ! Iterator for second generator
54 AliGenCocktailEventHeader* fHeader; // !Header container
58 void Copy(TObject &arun) const;
59 ClassDef(AliGenCocktail,1) // Particle cocktail generator a la SHAKER