X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVGEN%2FAliGenCocktailAfterBurner.cxx;h=642ad5c8b1cb334e4de4ea5784b1b13fde4f16fd;hb=4afd944b8cbb791622263a17235826c9be043cb8;hp=0ea62ea6d711d2ab5af3169d0252e2d2606b34ec;hpb=6bcdf1d1c0ec8e749cf34d632a4a8facd385645f;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliGenCocktailAfterBurner.cxx b/EVGEN/AliGenCocktailAfterBurner.cxx index 0ea62ea6d71..642ad5c8b1c 100644 --- a/EVGEN/AliGenCocktailAfterBurner.cxx +++ b/EVGEN/AliGenCocktailAfterBurner.cxx @@ -43,15 +43,17 @@ #include "AliCollisionGeometry.h" #include "AliStack.h" #include "AliMC.h" +#include "AliRun.h" - +using std::cout; +using std::endl; ClassImp(AliGenCocktailAfterBurner) /*********************************************************************/ /*********************************************************************/ AliGenCocktailAfterBurner::AliGenCocktailAfterBurner(): fNAfterBurners(0), - fAfterBurnerEntries(new TList()), + fAfterBurnerEntries(0), fGenerationDone(kFALSE), fInternalStacks(0), fCollisionGeometries(0), @@ -104,24 +106,34 @@ AddAfterBurner(AliGenerator *AfterBurner, char* Name, Float_t RateExp) if (gDebug>0)cout<<"AliGenCocktailAfterBurner::AddAfterBurner Named "<TestBit(kPtRange)) && !(AfterBurner->TestBit(kMomentumRange))) AfterBurner->SetPtRange(fPtMin,fPtMax); - if(TestBit(kMomentumRange)) + if(TestBit(kMomentumRange) && !(AfterBurner->TestBit(kPtRange)) && !(AfterBurner->TestBit(kMomentumRange))) AfterBurner->SetMomentumRange(fPMin,fPMax); - AfterBurner->SetYRange(fYMin,fYMax); - AfterBurner->SetPhiRange(fPhiMin*180/TMath::Pi(),fPhiMax*180/TMath::Pi()); - AfterBurner->SetThetaRange(fThetaMin*180/TMath::Pi(),fThetaMax*180/TMath::Pi()); - AfterBurner->SetOrigin(fOrigin[0], fOrigin[1], fOrigin[2]); - AfterBurner->SetSigma(fOsigma[0], fOsigma[1], fOsigma[2]); - AfterBurner->SetVertexSmear(fVertexSmear); - AfterBurner->SetTrackingFlag(fTrackIt); - AfterBurner->SetVertexSource(kContainer); + if (TestBit(kYRange) && !(AfterBurner->TestBit(kYRange))) + AfterBurner->SetYRange(fYMin,fYMax); + if (TestBit(kPhiRange) && !(AfterBurner->TestBit(kPhiRange))) + AfterBurner->SetPhiRange(fPhiMin*180/TMath::Pi(),fPhiMax*180/TMath::Pi()); + if (TestBit(kThetaRange) && !(AfterBurner->TestBit(kThetaRange)) && !(AfterBurner->TestBit(kEtaRange))) + AfterBurner->SetThetaRange(fThetaMin*180/TMath::Pi(),fThetaMax*180/TMath::Pi()); + if (!(AfterBurner->TestBit(kVertexRange))) { + AfterBurner->SetOrigin(fOrigin[0], fOrigin[1], fOrigin[2]); + AfterBurner->SetSigma(fOsigma[0], fOsigma[1], fOsigma[2]); + AfterBurner->SetVertexSmear(fVertexSmear); + AfterBurner->SetVertexSource(kContainer); + AfterBurner->SetTimeOrigin(fTimeOrigin); + } + AfterBurner->SetTrackingFlag(fTrackIt); + //AfterBurner->SetContainer(this); + // // Add AfterBurner to list AliGenCocktailEntry *entry = new AliGenCocktailEntry(AfterBurner, Name, RateExp); + if (!fAfterBurnerEntries) fAfterBurnerEntries = new TList(); + fAfterBurnerEntries->Add(entry); fNAfterBurners++; // @@ -202,6 +214,8 @@ void AliGenCocktailAfterBurner::Generate() cout << "Number of events per run" << numberOfEvents << endl; TArrayF eventVertex; eventVertex.Set(3 * (numberOfEvents + fNBgEvents)); + TArrayF eventTime; + eventTime.Set(numberOfEvents + fNBgEvents); fCurrentEvent=0; //Create stacks fInternalStacks = new TObjArray(numberOfEvents + fNBgEvents); //Create array of internal stacks @@ -215,7 +229,9 @@ void AliGenCocktailAfterBurner::Generate() fInternalStacks->Add(stack); Vertex(); for (Int_t j = 0; j < 3; j++) eventVertex[3 * i + j] = fVertex[j]; + eventTime[i] = fTime; fHeaders[i] = new AliGenCocktailEventHeader(); + fCollisionGeometries[i] = 0; } /*********************************************************************/ TIter next(fEntries); @@ -250,11 +266,13 @@ void AliGenCocktailAfterBurner::Generate() // Set the vertex for the generator Int_t ioff = 3 * i; fCurrentGenerator->SetVertex(eventVertex.At(ioff), eventVertex.At(ioff + 1), eventVertex.At(ioff + 2)); + fCurrentGenerator->SetTime(eventTime.At(i)); fHeader = fHeaders[i]; - // Set the vertex for the cocktail + // Set the vertex and time for the cocktail TArrayF v(3); for (Int_t j=0; j<3; j++) v[j] = eventVertex.At(ioff + j); fHeader->SetPrimaryVertex(v); + fHeader->SetInteractionTime(eventTime.At(i)); // Generate event fCurrentGenerator->Generate(); //