#include "AliGenCocktailAfterBurner.h"
#include "AliGenCocktailEntry.h"
+#include "AliCollisionGeometry.h"
#include "AliStack.h"
#include "AliMC.h"
/*********************************************************************/
/*********************************************************************/
-AliGenCocktailAfterBurner::AliGenCocktailAfterBurner()
+ AliGenCocktailAfterBurner::AliGenCocktailAfterBurner():
+ fNAfterBurners(0),
+ fAfterBurnerEntries(new TList()),
+ fGenerationDone(kFALSE),
+ fInternalStacks(0),
+ fCollisionGeometries(0),
+ fCurrentEvent(0),
+ fActiveStack(0),
+ fActiveEvent(-1),
+ fCurrentGenerator(0),
+ fNBgEvents(0)
{
// Constructor
if (gDebug > 0)
- cout<<"AliGenCocktailAfterBurner::AliGenCocktailAfterBurner()"<<endl;
+ cout<<"AliGenCocktailAfterBurner::AliGenCocktailAfterBurner()"<<endl;
SetName("AliGenCocktailAfterBurner");
SetTitle("AliGenCocktailAfterBurner");
- fInternalStacks =0;
- fActiveStack = 0;
- fCurrentGenerator = 0;
- fCurrentEvent =0;
- fAfterBurnerEntries = new TList();
- fNAfterBurners = 0;
- fGenerationDone = kFALSE;
-
- fActiveEvent = -1;
- fNBgEvents = 0;
-}
-/*********************************************************************/
-AliGenCocktailAfterBurner::AliGenCocktailAfterBurner(const AliGenCocktailAfterBurner& cocktail):
- AliGenCocktail(cocktail)
-
-{
- //Copy constructor
- cocktail.Copy(*this);
}
/*********************************************************************/
delete fInternalStacks;
}
if (fAfterBurnerEntries) delete fAfterBurnerEntries; //delete entries
+ delete[] fCollisionGeometries;
}
/*********************************************************************/
/*********************************************************************/
fInternalStacks->Delete(); //clean after previous generation cycle
}
+// ANDREAS MORSCH ---------------------------------------------------(
+ if (fCollisionGeometries) delete[] fCollisionGeometries;
+// ANDREAS MORSCH ---------------------------------------------------)
+
this->AliGenCocktail::Init();
if (gDebug>0) cout<<"AliGenCocktailAfterBurner::Init"<<endl;
fCurrentEvent=0;
Int_t numberOfEvents = gAlice->GetEventsPerRun();
//Create stacks
- fInternalStacks = new TObjArray(numberOfEvents + fNBgEvents); //Create array of internal stacks
+ fInternalStacks = new TObjArray(numberOfEvents + fNBgEvents); //Create array of internal stacks
+ fCollisionGeometries = new AliCollisionGeometry*[numberOfEvents + fNBgEvents]; //Create array of collision geometries
for(i=0;i<numberOfEvents + fNBgEvents;i++)
{
stack = new AliStack(10000);
}
fCurrentGenerator->Generate();
entry->SetLast(partArray->GetEntriesFast());
+
+// ANDREAS MORSCH ---------------------------------------------------(
+ if (fCurrentGenerator->ProvidesCollisionGeometry()) fCollisionGeometries[i] = fCurrentGenerator->CollisionGeometry();
+// ANDREAS MORSCH ---------------------------------------------------)
+
}
/***********************************************/
}
/*********************************************************************/
/*********************************************************************/
-AliGenCocktailAfterBurner& AliGenCocktailAfterBurner::operator=(const AliGenCocktailAfterBurner& rhs)
+AliStack* AliGenCocktailAfterBurner::GetStack(Int_t n) const
{
-// Assignment operator
- rhs.Copy(*this);
- return (*this);
+//Returns the pointer to the N'th stack (event)
+ if( ( n<0 ) || ( n>=GetNumberOfEvents() ) )
+ {
+ Fatal("AliGenCocktailAfterBurner::GetStack","Asked for non existing stack (%d)",n);
+ return 0;
+ }
+ return ((AliStack*) fInternalStacks->At(n) );
}
-/*********************************************************************/
+
+/*********************************************************************/
/*********************************************************************/
-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)
if( ( n<0 ) || ( n>=GetNumberOfEvents() ) )
{
- Fatal("AliGenCocktailAfterBurner::GetStack","Asked for non existing stack (%d)",n);
+ Fatal("AliGenCocktailAfterBurner::GetCollisionGeometry","Asked for non existing stack (%d)",n);
return 0;
}
- return ((AliStack*) fInternalStacks->At(n) );
+ return fCollisionGeometries[n];
}
+
+// ANDREAS MORSCH ---------------------------------------------------)
+
/*********************************************************************/
/*********************************************************************/
mech = AliGenCocktailAfterBurner::IntToMCProcess(p->GetUniqueID());
weight = p->GetWeight();
- gAlice->GetMCApp()->PushTrack(done, parent, pdg, px, py, pz, e, vx, vy, vz, tof,
- polx, poly, polz, mech, ntr, weight);
+ 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 ---------------------------------------------------)
+
}
}
/*********************************************************************/
return kPNoProcess;
}
-void AliGenCocktailAfterBurner::Copy(TObject &) const
-{
- Fatal("Copy","Not implemented!\n");
-}