}
void AliGenCocktail::
-AddGenerator(AliGenerator *Generator, const char* Name, Float_t RateExp, TFormula* formula)
+AddGenerator(AliGenerator *Generator, const char* Name, Float_t RateExp, TFormula* formula, Int_t ntimes)
{
//
// Add a generator to the list
AliGenCocktailEntry *entry =
new AliGenCocktailEntry(Generator, Name, RateExp);
- if (formula) entry->SetFormula(formula);
+ if (formula) entry->SetFormula(formula);
+ entry->SetNTimes(ntimes);
fEntries->Add(entry);
fNGenerators++;
flnk1 = 0;
// Loop over generators and generate events
Int_t igen = 0;
while((entry = (AliGenCocktailEntry*)next())) {
- Int_t ntimes = 1;
+ Int_t ntimes = entry->NTimes();
if (fUsePerEventRate && (gRandom->Rndm() > entry->Rate())) continue;
igen++;
}
gen->SetVertex(fVertex.At(0), fVertex.At(1), fVertex.At(2), fTime);
- for (Int_t i = 0; i < ntimes; i++) gen->Generate();
+ gen->GenerateN(ntimes);
entry->SetLast(partArray->GetEntriesFast());
preventry = entry;
}
next.Reset();
-// Event Vertex
+ // Event Vertex
fHeader->SetPrimaryVertex(eventVertex);
fHeader->CalcNProduced();
- gAlice->SetGenEventHeader(fHeader);
+ if (fContainer) {
+ fHeader->SetName(fName);
+ fContainer->AddHeader(fHeader);
+ } else {
+ gAlice->SetGenEventHeader(fHeader);
+ }
}
void AliGenCocktail::SetVertexSmear(VertexSmear_t smear)