X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVGEN%2FAliGenCocktail.h;h=4015e778918ec764760b170b1bb345fd5175fe62;hb=c50f9dc05854174683012ad3475017dd15480a47;hp=78486b77f60b2c0af6f1418d8a16c5b5f230edb4;hpb=3da306186bdfe9b8dedf54c4b9cdcf2bff5b132c;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliGenCocktail.h b/EVGEN/AliGenCocktail.h index 78486b77f60..4015e778918 100644 --- a/EVGEN/AliGenCocktail.h +++ b/EVGEN/AliGenCocktail.h @@ -5,102 +5,60 @@ /* $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 "TNamed.h" -#include "TF1.h" -#include "TArrayF.h" -#include "TTree.h" #include "AliGenerator.h" -#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) -}; +class AliGenCocktailEntry; +class AliGenCocktailEventHeader; +class TArrayF; class AliGenCocktail : public AliGenerator { - protected: - // - // Number of generators booked - - Int_t fNGenerators; - // - // List of Generators - TList *fEntries; - // Iterators - TObjLink *flnk1; - TObjLink *flnk2; public: AliGenCocktail(); + AliGenCocktail(const AliGenCocktail &cocktail); + virtual ~AliGenCocktail(); virtual void Init(); + virtual void FinishRun(); 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, TString Name, Float_t RateExp ); + (AliGenerator *Generator, const char* Name, Float_t RateExp ); 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); + 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 + 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; + ClassDef(AliGenCocktail,1) // Particle cocktail generator a la SHAKER }; #endif