X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVGEN%2FAliGenCocktail.h;h=03e957fb86ebe54bae8acf962dd54b72ec0925c8;hb=75eff6de2d7200ef8cd1a53bb2f14934ae346818;hp=2b245039a69b7b256fbc02afd641a60d785a9bf5;hpb=886b6f7342e357a2c0ffa88df944a470082fa498;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliGenCocktail.h b/EVGEN/AliGenCocktail.h index 2b245039a69..03e957fb86e 100644 --- a/EVGEN/AliGenCocktail.h +++ b/EVGEN/AliGenCocktail.h @@ -5,103 +5,62 @@ /* $Id$ */ -/////////////////////////////////////////////////////////// -// // -// Class to generate the particles for the MC // -// The base class is empty // -// // -/////////////////////////////////////////////////////////// +// Container class for AliGenerator through recursion. +// (Container is itself an AliGenerator) +// Author: andreas.morsch@cern.ch +// #include "AliGenerator.h" - -#include -#include -#include #include -#include - -class AliGenCocktailEntry : public TObject -{ - protected: - AliGenerator *fGenerator; - Int_t fNGenerated; - Int_t fFirst; - Int_t fLast; - Float_t fRate; - Float_t fKineBias; - Float_t fBias; - TString fName; - public: - AliGenCocktailEntry() - { - fGenerator =0; - fNGenerated=0; - fFirst=-1; - fLast=-1; - fRate=0; - fKineBias=1; - fBias=1; - fName="unknown"; - } - - AliGenCocktailEntry - (AliGenerator* Generator, TString Name, Float_t RateExp) - { - fGenerator=Generator; - fNGenerated=0; - fFirst=-1; - fLast=-1; - fRate=RateExp; - fName=Name; -// - fKineBias=1; - fBias=1; - - } - ~AliGenCocktailEntry(){;} - AliGenerator* Generator() {return fGenerator;} - void SetGenerator(AliGenerator* generator){fGenerator=generator;} - void SetFirst(Int_t first){fFirst=first;} - void SetLast (Int_t last ){fLast =last;} - Int_t GetFirst(){return fFirst;} - Int_t GetLast (){return fLast;} - Float_t Rate(){return fRate;} - void PrintInfo(); - private: - ClassDef(AliGenCocktailEntry,1) -}; +#include +class AliGenCocktailEntry; +class AliGenCocktailEventHeader; +class TArrayF; +class TFormula; class AliGenCocktail : public AliGenerator { - protected: - // - // Number of generators booked - - Int_t fNGenerators; - // - // List of Generators - TList *fEntries; - // Iterators - TObjLink *flnk1; - TObjLink *flnk2; public: AliGenCocktail(); + virtual ~AliGenCocktail(); virtual void Init(); + virtual void FinishRun(); virtual void Generate(); + virtual void SetVertexSmear(VertexSmear_t smear); + virtual void SetRandomise(Bool_t flag) {fSRandom = flag;} + virtual void UsePerEventRates() {fUsePerEventRate = kTRUE;} + // // Add a new generator to the list virtual void AddGenerator - (AliGenerator *Generator, TString Name, Float_t RateExp ); + (AliGenerator *Generator, const char* Name, Float_t RateExp, TFormula* formula = 0, Int_t ntimes = 1); virtual TList* Entries() {return fEntries;} // Iterators AliGenCocktailEntry* FirstGenerator(); AliGenCocktailEntry* NextGenerator(); - void FirstGeneratorPair(AliGenCocktailEntry*&, AliGenCocktailEntry*&); - void NextGeneratorPair (AliGenCocktailEntry*&, AliGenCocktailEntry*&); - ClassDef(AliGenCocktail,1) + void FirstGeneratorPair(AliGenCocktailEntry*&e1, AliGenCocktailEntry*&e2); + void NextGeneratorPair (AliGenCocktailEntry*&e1, AliGenCocktailEntry*&e2); + virtual void AddHeader(AliGenEventHeader* header); + + protected: + Int_t fNGenerators; // Number of generators booked + Float_t fTotalRate; // Total rate of the generators booked + Bool_t fSRandom; // 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 fSRandom == kTRUE) + TList *fEntries; // List of Generators + TObjLink *flnk1; // ! Iterator for first generator + TObjLink *flnk2; // ! Iterator for second generator + AliGenCocktailEventHeader* fHeader; // !Header container + // + private: + AliGenCocktail(const AliGenCocktail &cocktail); + AliGenCocktail & operator=(const AliGenCocktail & rhs); + + ClassDef(AliGenCocktail, 2) // Particle cocktail generator a la SHAKER }; #endif