Line data Source code
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 : #include <TList.h>
16 :
17 : class AliGenCocktailEntry;
18 : class AliGenCocktailEventHeader;
19 : class TArrayF;
20 : class TFormula;
21 :
22 : class AliGenCocktail : public AliGenerator
23 : {
24 : public:
25 : AliGenCocktail();
26 :
27 : virtual ~AliGenCocktail();
28 : virtual void Init();
29 : virtual void FinishRun();
30 : virtual void Generate();
31 : virtual void SetVertexSmear(VertexSmear_t smear);
32 0 : virtual void SetRandomise(Bool_t flag) {fSRandom = flag;}
33 0 : virtual void UsePerEventRates() {fUsePerEventRate = kTRUE;}
34 0 : virtual void SetSeed(UInt_t seed) {fSeed = seed;}
35 : //
36 : // Add a new generator to the list
37 : virtual void AddGenerator
38 : (AliGenerator *Generator, const char* Name, Float_t RateExp, TFormula* formula = 0, Int_t ntimes = 1);
39 0 : 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 : virtual void AddHeader(AliGenEventHeader* header);
46 :
47 : protected:
48 : Int_t fNGenerators; // Number of generators booked
49 : Float_t fTotalRate; // Total rate of the generators booked
50 : Bool_t fSRandom; // 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 fSRandom == 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 : UInt_t fSeed; // !Seed
58 : //
59 : private:
60 : AliGenCocktail(const AliGenCocktail &cocktail);
61 : AliGenCocktail & operator=(const AliGenCocktail & rhs);
62 :
63 50 : ClassDef(AliGenCocktail, 2) // Particle cocktail generator a la SHAKER
64 : };
65 :
66 : #endif
67 :
68 :
69 :
70 :
71 :
|