Introduction of the reference to Copyright and cvs Id
[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 ///////////////////////////////////////////////////////////
9 //                                                       //
10 //  Class to generate the particles for the MC           //
11 //  The base class is empty                              //
12 //                                                       //
13 ///////////////////////////////////////////////////////////
14
15 #include "TNamed.h"
16 #include "TF1.h"
17 #include "TArrayF.h"
18 #include "TTree.h"
19 #include "AliGenerator.h"
20 #include <TClass.h>
21
22 class AliGenCocktailEntry : public TObject
23 {
24  protected:
25     AliGenerator *fGenerator;
26     Int_t fNGenerated;
27     Int_t fFirst;
28     Int_t fLast;
29     Float_t fRate;
30     Float_t fKineBias;
31     Float_t fBias;
32     TString fName;
33  public:
34     AliGenCocktailEntry()
35         {
36             fGenerator =0;
37             fNGenerated=0;
38             fFirst=-1;
39             fLast=-1;
40             fRate=0;
41             fKineBias=1;
42             fBias=1;
43             fName="unknown";
44         }
45     
46     AliGenCocktailEntry
47         (AliGenerator* Generator, TString Name, Float_t RateExp)
48         {
49             fGenerator=Generator;
50             fNGenerated=0;
51             fFirst=-1;
52             fLast=-1;
53             fRate=RateExp;
54             fName=Name;
55 //          
56             fKineBias=1;
57             fBias=1;
58
59         }
60     ~AliGenCocktailEntry(){;}
61     AliGenerator* Generator() {return fGenerator;}
62     void SetGenerator(AliGenerator* generator){fGenerator=generator;}
63     void SetFirst(Int_t first){fFirst=first;}
64     void SetLast (Int_t last ){fLast =last;}
65     Int_t GetFirst(){return fFirst;}
66     Int_t GetLast (){return fLast;}
67     Float_t Rate(){return fRate;}
68     void  PrintInfo();
69  private:
70     ClassDef(AliGenCocktailEntry,1)
71 };
72
73
74 class AliGenCocktail : public AliGenerator
75 {
76  protected:
77     //
78     // Number of generators booked
79
80     Int_t fNGenerators;
81     //
82     // List of Generators
83     TList  *fEntries;
84     // Iterators
85     TObjLink *flnk1;
86     TObjLink *flnk2;
87  public:
88     AliGenCocktail();
89     virtual ~AliGenCocktail();
90     virtual void Init();
91     virtual void Generate();
92     //
93     // Add a new generator to the list
94     virtual void AddGenerator
95         (AliGenerator *Generator, TString Name, Float_t RateExp );
96     virtual TList* Entries() {return fEntries;}
97     // Iterators
98     AliGenCocktailEntry*  FirstGenerator();
99     AliGenCocktailEntry*  NextGenerator();
100     void FirstGeneratorPair(AliGenCocktailEntry*&, AliGenCocktailEntry*&);
101     void NextGeneratorPair (AliGenCocktailEntry*&, AliGenCocktailEntry*&);
102     ClassDef(AliGenCocktail,1)
103 //
104 };
105
106 #endif
107
108
109
110
111