]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenCocktail.h
Replacing array of objects by array of pointers
[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             
34     //
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;}
39     // Iterators
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);
46             
47  protected:
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  
55                            
56 //
57  private:
58     void Copy(TObject &arun) const;
59     ClassDef(AliGenCocktail,1) // Particle cocktail generator a la SHAKER
60 };
61
62 #endif
63
64
65
66
67