X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVGEN%2FAliGenCocktailAfterBurner.cxx;h=e0781705d48918650d44727eb07566f9505c8328;hb=7d4dc85f6cfcf5d614408a600105a567679255e9;hp=25948e2b423111e8331b72b5e8ce6adc4737a625;hpb=93a2041b6acdbf31d3a3eb48708a2a54a759543d;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliGenCocktailAfterBurner.cxx b/EVGEN/AliGenCocktailAfterBurner.cxx index 25948e2b423..e0781705d48 100644 --- a/EVGEN/AliGenCocktailAfterBurner.cxx +++ b/EVGEN/AliGenCocktailAfterBurner.cxx @@ -27,7 +27,7 @@ // // 24.09.2001 Piotr Skowronski // debug -> gDebug, -// fNEvents replaced with gAlice->GetEventsPerRun() +// fNEvents replaced with AliRunLoader::GetNumberOfEvents() // @@ -39,6 +39,7 @@ #include "AliGenCocktailAfterBurner.h" #include "AliGenCocktailEntry.h" +#include "AliGenCocktailEventHeader.h" #include "AliCollisionGeometry.h" #include "AliStack.h" #include "AliMC.h" @@ -54,6 +55,7 @@ ClassImp(AliGenCocktailAfterBurner) fGenerationDone(kFALSE), fInternalStacks(0), fCollisionGeometries(0), + fHeaders(0), fCurrentEvent(0), fActiveStack(0), fActiveEvent(-1), @@ -80,6 +82,7 @@ AliGenCocktailAfterBurner::~AliGenCocktailAfterBurner() } if (fAfterBurnerEntries) delete fAfterBurnerEntries; //delete entries delete[] fCollisionGeometries; + delete[] fHeaders; } /*********************************************************************/ /*********************************************************************/ @@ -104,6 +107,7 @@ AddAfterBurner(AliGenerator *AfterBurner, char* Name, Float_t RateExp) AfterBurner->SetSigma(fOsigma[0], fOsigma[1], fOsigma[2]); AfterBurner->SetVertexSmear(fVertexSmear); AfterBurner->SetTrackingFlag(fTrackIt); + AfterBurner->SetVertexSource(kContainer); // // Add AfterBurner to list @@ -127,9 +131,7 @@ void AliGenCocktailAfterBurner::Init() fInternalStacks->Delete(); //clean after previous generation cycle } -// ANDREAS MORSCH ---------------------------------------------------( if (fCollisionGeometries) delete[] fCollisionGeometries; -// ANDREAS MORSCH ---------------------------------------------------) this->AliGenCocktail::Init(); @@ -161,7 +163,8 @@ void AliGenCocktailAfterBurner::Generate() cout<<"#####################################"<SetGenEventHeader(fHeader); + cout<<"Returning event " << fCurrentEvent<GetEventsPerRun(); + Int_t numberOfEvents = AliRunLoader::Instance()->GetNumberOfEventsPerRun(); + cout << "Number of events per run" << numberOfEvents << endl; + TArrayF eventVertex; + eventVertex.Set(3 * (numberOfEvents + fNBgEvents)); + fCurrentEvent=0; //Create stacks - fInternalStacks = new TObjArray(numberOfEvents + fNBgEvents); //Create array of internal stacks - fCollisionGeometries = new AliCollisionGeometry*[numberOfEvents + fNBgEvents]; //Create array of collision geometries - for(i=0;iReset(); - fInternalStacks->Add(stack); + stack = new AliStack(10000); + stack->Reset(); + fInternalStacks->Add(stack); + Vertex(); + for (Int_t j = 0; j < 3; j++) eventVertex[3 * i + j] = fVertex[j]; + fHeaders[i] = new AliGenCocktailEventHeader(); } /*********************************************************************/ TIter next(fEntries); AliGenCocktailEntry *entry; AliGenCocktailEntry *e1; AliGenCocktailEntry *e2; - TObjArray *partArray; + const TObjArray *partArray; // // Loop over generators and generate events Int_t igen=0; @@ -200,31 +213,39 @@ void AliGenCocktailAfterBurner::Generate() cout<<"Generator "<GetName()<Particles(); fCurrentGenerator = entry->Generator(); fCurrentGenerator->SetStack(stack); if (igen ==1) - { + { entry->SetFirst(0); - } + } else - { + { entry->SetFirst((partArray->GetEntriesFast())+1); - } - fCurrentGenerator->Generate(); - entry->SetLast(partArray->GetEntriesFast()); - -// ANDREAS MORSCH ---------------------------------------------------( - if (fCurrentGenerator->ProvidesCollisionGeometry()) fCollisionGeometries[i] = fCurrentGenerator->CollisionGeometry(); -// ANDREAS MORSCH ---------------------------------------------------) - - } + } + // Set the vertex for the generator + Int_t ioff = 3 * i; + fCurrentGenerator->SetVertex(eventVertex.At(ioff), eventVertex.At(ioff + 1), eventVertex.At(ioff + 2)); + fHeader = fHeaders[i]; + // Set the vertex for the cocktail + TArrayF v(3); + for (Int_t j=0; j<3; j++) v[j] = eventVertex.At(ioff + j); + fHeader->SetPrimaryVertex(v); + // Generate event + fCurrentGenerator->Generate(); + // + entry->SetLast(partArray->GetEntriesFast()); + + if (fCurrentGenerator->ProvidesCollisionGeometry()) fCollisionGeometries[i] = fCurrentGenerator->CollisionGeometry(); + + } // event loop /***********************************************/ - } + } // generator loop next.Reset(); while((entry = (AliGenCocktailEntry*)next())) { @@ -266,8 +287,10 @@ void AliGenCocktailAfterBurner::Generate() SetTracks(0); //copy event 0 to gAlice stack /*********************************************************************/ - - }//else generated + // Pass the header to gAlice + fHeader = fHeaders[0]; + gAlice->SetGenEventHeader(fHeader); + } //else generated } /*********************************************************************/ /*********************************************************************/ @@ -275,7 +298,7 @@ void AliGenCocktailAfterBurner::Generate() AliStack* AliGenCocktailAfterBurner::GetStack(Int_t n) const { //Returns the pointer to the N'th stack (event) - if( ( n<0 ) || ( n>=GetNumberOfEvents() ) ) + if( ( n<0 ) || ( n >= (GetNumberOfEvents()) ) ) { Fatal("AliGenCocktailAfterBurner::GetStack","Asked for non existing stack (%d)",n); return 0; @@ -286,8 +309,6 @@ AliStack* AliGenCocktailAfterBurner::GetStack(Int_t n) const /*********************************************************************/ /*********************************************************************/ -// ANDREAS MORSCH ---------------------------------------------------( - AliCollisionGeometry* AliGenCocktailAfterBurner::GetCollisionGeometry(Int_t n) const { //Returns the pointer to the N'th stack (event) @@ -299,8 +320,6 @@ AliCollisionGeometry* AliGenCocktailAfterBurner::GetCollisionGeometry(Int_t n) c return fCollisionGeometries[n]; } -// ANDREAS MORSCH ---------------------------------------------------) - /*********************************************************************/ /*********************************************************************/ @@ -361,9 +380,7 @@ void AliGenCocktailAfterBurner::SetTracks(Int_t stackno) gAlice->GetMCApp()->PushTrack(done, parent, pdg, px, py, pz, e, vx, vy, vz, tof,polx, poly, polz, mech, ntr, weight); -// ANDREAS MORSCH ---------------------------------------------------( SetHighWaterMark(ntr) ; -// ANDREAS MORSCH ---------------------------------------------------) } }