#include "AliGenerator.h"
#include <TArrayF.h>
+#include <TList.h>
class AliGenCocktailEntry;
+class AliGenCocktailEventHeader;
class TArrayF;
-
+class TFormula;
class AliGenCocktail : public AliGenerator
{
public:
AliGenCocktail();
- AliGenCocktail(const AliGenCocktail &cocktail);
virtual ~AliGenCocktail();
virtual void Init();
virtual void Generate();
virtual void SetVertexSmear(VertexSmear_t smear);
virtual void SetRandomise(Bool_t flag) {fRandom = flag;}
+ virtual void UsePerEventRates() {fUsePerEventRate = kTRUE;}
//
// Add a new generator to the list
virtual void AddGenerator
- (AliGenerator *Generator, const char* Name, Float_t RateExp );
+ (AliGenerator *Generator, const char* Name, Float_t RateExp, TFormula* formula = 0);
virtual TList* Entries() {return fEntries;}
// Iterators
AliGenCocktailEntry* FirstGenerator();
AliGenCocktailEntry* NextGenerator();
void FirstGeneratorPair(AliGenCocktailEntry*&e1, AliGenCocktailEntry*&e2);
void NextGeneratorPair (AliGenCocktailEntry*&e1, AliGenCocktailEntry*&e2);
- AliGenCocktail & operator=(const AliGenCocktail & rhs);
-
+ virtual void AddHeader(AliGenEventHeader* header);
+
protected:
- Int_t fNGenerators; // Number of generators booked
- Bool_t fRandom; // Flag to select random generator from list
- TArrayF fProb; // Probability of an event (if fRandom == kTRUE)
- TList *fEntries; // List of Generators
- TObjLink *flnk1; // ! Iterator for first generator
- TObjLink *flnk2; // ! Iterator for second generator
-
+ Int_t fNGenerators; // Number of generators booked
+ Float_t fTotalRate; // Total rate of the generators booked
+ Bool_t fRandom; // Flag to select random generator from list
+ Bool_t fUsePerEventRate; // Flag to generate the events according to the rate per event
+ TArrayF fProb; // Probability of an event (if fRandom == kTRUE)
+ TList *fEntries; // List of Generators
+ TObjLink *flnk1; // ! Iterator for first generator
+ TObjLink *flnk2; // ! Iterator for second generator
+ AliGenCocktailEventHeader* fHeader; // !Header container
+
//
private:
- void Copy(TObject &arun) const;
+ AliGenCocktail(const AliGenCocktail &cocktail);
+ AliGenCocktail & operator=(const AliGenCocktail & rhs);
+
ClassDef(AliGenCocktail,1) // Particle cocktail generator a la SHAKER
};