]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenCocktail.h
Possibility to compile with Root v5-11-04/06
[u/mrichter/AliRoot.git] / EVGEN / AliGenCocktail.h
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                               */
5
6 /* $Id$ */
7
8 // Container class for AliGenerator through recursion.
9 // (Container is itself an AliGenerator)
10 // Author: andreas.morsch@cern.ch 
11 //
12
13 #include "AliGenerator.h"
14 #include <TArrayF.h>
15
16 class AliGenCocktailEntry;
17 class AliGenCocktailEventHeader;
18 class TArrayF;
19
20
21 class AliGenCocktail : public AliGenerator
22 {
23  public:
24     AliGenCocktail();
25     AliGenCocktail(const AliGenCocktail &cocktail);
26      
27     virtual ~AliGenCocktail();
28     virtual void Init();
29     virtual void FinishRun();
30     virtual void Generate();
31     virtual void SetVertexSmear(VertexSmear_t smear);
32     virtual void SetRandomise(Bool_t flag) {fRandom = flag;}
33     virtual void UsePerEventRates() {fUsePerEventRate  = kTRUE;}
34             
35     //
36     // Add a new generator to the list
37     virtual void AddGenerator
38         (AliGenerator *Generator, const char* Name, Float_t RateExp );
39     virtual TList* Entries() {return fEntries;}
40     // Iterators
41     AliGenCocktailEntry*  FirstGenerator();
42     AliGenCocktailEntry*  NextGenerator();
43     void FirstGeneratorPair(AliGenCocktailEntry*&e1, AliGenCocktailEntry*&e2);
44     void NextGeneratorPair (AliGenCocktailEntry*&e1, AliGenCocktailEntry*&e2);
45     AliGenCocktail & operator=(const AliGenCocktail & rhs);
46     virtual void AddHeader(AliGenEventHeader* header);
47             
48  protected:
49     Int_t fNGenerators;                 // Number of generators booked
50     Bool_t fRandom;                     // Flag to select random generator from list
51     Bool_t fUsePerEventRate;            // Flag to generate the events according to the rate per event    
52     TArrayF  fProb;                     // Probability of an event (if fRandom == kTRUE)
53     TList  *fEntries;                   // List of Generators
54     TObjLink *flnk1;                    // ! Iterator for first generator
55     TObjLink *flnk2;                    // ! Iterator for second generator
56     AliGenCocktailEventHeader* fHeader; // !Header container  
57                            
58 //
59  private:
60     void Copy(TObject &arun) const;
61     ClassDef(AliGenCocktail,1) // Particle cocktail generator a la SHAKER
62 };
63
64 #endif
65
66
67
68
69