]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenCocktail.h
Removing the fake copy constructors and assignment operator, moving their declaration...
[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      
26     virtual ~AliGenCocktail();
27     virtual void Init();
28     virtual void FinishRun();
29     virtual void Generate();
30     virtual void SetVertexSmear(VertexSmear_t smear);
31     virtual void SetRandomise(Bool_t flag) {fRandom = flag;}
32     virtual void UsePerEventRates() {fUsePerEventRate  = kTRUE;}
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     virtual void AddHeader(AliGenEventHeader* header);
45             
46  protected:
47     Int_t fNGenerators;                 // Number of generators booked
48     Bool_t fRandom;                     // Flag to select random generator from list
49     Bool_t fUsePerEventRate;            // Flag to generate the events according to the rate per event    
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     AliGenCocktail(const AliGenCocktail &cocktail);
59     AliGenCocktail & operator=(const AliGenCocktail & rhs);
60
61     ClassDef(AliGenCocktail,1) // Particle cocktail generator a la SHAKER
62 };
63
64 #endif
65
66
67
68
69