ClassImp(AliGenCocktail)
AliGenCocktail::AliGenCocktail()
- :AliGenerator()
+ :AliGenerator(),
+ fNGenerators(0),
+ fRandom(kFALSE),
+ fUsePerEventRate(kFALSE),
+ fProb(0),
+ fEntries(0),
+ flnk1(0),
+ flnk2(0),
+ fHeader(0)
{
// Constructor
fName = "Cocktail";
fTitle= "Particle Generator using cocktail of generators";
- flnk1 = 0;
- flnk2 = 0;
- fNGenerators=0;
- fEntries = 0;
- fRandom = kFALSE;
- fHeader = 0;
-}
-
-AliGenCocktail::AliGenCocktail(const AliGenCocktail & cocktail):
- AliGenerator(cocktail)
-{
-// Copy constructor
- cocktail.Copy(*this);
}
AliGenCocktail::~AliGenCocktail()
Generator->SetPhiRange(fPhiMin*180/TMath::Pi(),fPhiMax*180/TMath::Pi());
if (!(Generator->TestBit(kThetaRange)))
Generator->SetThetaRange(fThetaMin*180/TMath::Pi(),fThetaMax*180/TMath::Pi());
- if (!(Generator->TestBit(kVertexRange)))
+ if (!(Generator->TestBit(kVertexRange))) {
Generator->SetOrigin(fOrigin[0], fOrigin[1], fOrigin[2]);
-
- Generator->SetSigma(fOsigma[0], fOsigma[1], fOsigma[2]);
- Generator->SetVertexSmear(fVertexSmear);
- Generator->SetVertexSource(kContainer);
+ Generator->SetSigma(fOsigma[0], fOsigma[1], fOsigma[2]);
+ Generator->SetVertexSmear(fVertexSmear);
+ Generator->SetVertexSource(kContainer);
+ }
Generator->SetTrackingFlag(fTrackIt);
Generator->SetContainer(this);
AliGenCocktailEntry *preventry = 0;
AliGenerator* gen = 0;
if (fHeader) delete fHeader;
+
+
fHeader = new AliGenCocktailEventHeader("Cocktail Header");
TObjArray *partArray = gAlice->GetMCApp()->Particles();
//
// 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);
entry->SetLast(partArray->GetEntriesFast());
preventry = entry;
}
- } else {
+ } else if (fRandom) {
//
// Select a generator randomly
//
entry->Generator()->SetVertex(fVertex.At(0), fVertex.At(1), fVertex.At(2));
entry->Generator()->Generate();
entry->SetLast(partArray->GetEntriesFast());
- }
-
+ }
next.Reset();
// Add a header to the list
if (fHeader) fHeader->AddHeader(header);
}
-
-AliGenCocktail& AliGenCocktail::operator=(const AliGenCocktail& rhs)
-{
-// Assignment operator
- rhs.Copy(*this);
- return (*this);
-}
-void AliGenCocktail::Copy(TObject &) const
-{
- Fatal("Copy","Not implemented!\n");
-}