From c89fc3f156500ea33e87a4498a9813e72304cda5 Mon Sep 17 00:00:00 2001 From: morsch Date: Tue, 7 Mar 2006 13:52:01 +0000 Subject: [PATCH] Option for generation according to subevent rates added. --- EVGEN/AliGenCocktail.cxx | 24 ++++++++++++++---------- EVGEN/AliGenCocktail.h | 2 ++ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/EVGEN/AliGenCocktail.cxx b/EVGEN/AliGenCocktail.cxx index 084f332be7c..96fa73a36a9 100644 --- a/EVGEN/AliGenCocktail.cxx +++ b/EVGEN/AliGenCocktail.cxx @@ -41,12 +41,13 @@ AliGenCocktail::AliGenCocktail() // Constructor fName = "Cocktail"; fTitle= "Particle Generator using cocktail of generators"; - flnk1 = 0; - flnk2 = 0; - fNGenerators=0; - fEntries = 0; - fRandom = kFALSE; - fHeader = 0; + flnk1 = 0; + flnk2 = 0; + fNGenerators = 0; + fEntries = 0; + fHeader = 0; + fRandom = kFALSE; + fUsePerEventRate = kFALSE; } AliGenCocktail::AliGenCocktail(const AliGenCocktail & cocktail): @@ -167,6 +168,8 @@ AddGenerator(AliGenerator *Generator, const char* Name, Float_t RateExp) AliGenCocktailEntry *preventry = 0; AliGenerator* gen = 0; if (fHeader) delete fHeader; + + fHeader = new AliGenCocktailEventHeader("Cocktail Header"); TObjArray *partArray = gAlice->GetMCApp()->Particles(); @@ -184,8 +187,10 @@ AddGenerator(AliGenerator *Generator, const char* Name, Float_t RateExp) // // Loop over generators and generate events Int_t igen=0; - while((entry = (AliGenCocktailEntry*)next())) { + + if (fUsePerEventRate && (gRandom->Rndm() > entry->Rate())) continue; + igen++; if (igen ==1) { entry->SetFirst(0); @@ -210,7 +215,7 @@ AddGenerator(AliGenerator *Generator, const char* Name, Float_t RateExp) entry->SetLast(partArray->GetEntriesFast()); preventry = entry; } - } else { + } else if (fRandom) { // // Select a generator randomly // @@ -227,8 +232,7 @@ AddGenerator(AliGenerator *Generator, const char* Name, Float_t RateExp) entry->Generator()->SetVertex(fVertex.At(0), fVertex.At(1), fVertex.At(2)); entry->Generator()->Generate(); entry->SetLast(partArray->GetEntriesFast()); - } - + } next.Reset(); diff --git a/EVGEN/AliGenCocktail.h b/EVGEN/AliGenCocktail.h index 013d2716551..4015e778918 100644 --- a/EVGEN/AliGenCocktail.h +++ b/EVGEN/AliGenCocktail.h @@ -30,6 +30,7 @@ class AliGenCocktail : public AliGenerator 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 @@ -47,6 +48,7 @@ class AliGenCocktail : public AliGenerator 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 -- 2.43.0