]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenCocktailAfterBurner.cxx
Effective C++ + add RMS and MEAN to the analysis
[u/mrichter/AliRoot.git] / EVGEN / AliGenCocktailAfterBurner.cxx
index 3cd04970960f4876c864908a951cb846e08ca564..25948e2b423111e8331b72b5e8ce6adc4737a625 100644 (file)
 
 #include "AliGenCocktailAfterBurner.h"
 #include "AliGenCocktailEntry.h"
+#include "AliCollisionGeometry.h"
 #include "AliStack.h"
+#include "AliMC.h"
 
 
 ClassImp(AliGenCocktailAfterBurner)
 /*********************************************************************/ 
 /*********************************************************************/ 
 
-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);
 }
 
 /*********************************************************************/ 
@@ -85,6 +79,7 @@ AliGenCocktailAfterBurner::~AliGenCocktailAfterBurner()
        delete fInternalStacks;
     }
     if (fAfterBurnerEntries) delete fAfterBurnerEntries; //delete entries
+    delete[] fCollisionGeometries;
   }
 /*********************************************************************/ 
 /*********************************************************************/ 
@@ -132,6 +127,10 @@ void AliGenCocktailAfterBurner::Init()
        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;
@@ -178,7 +177,8 @@ void AliGenCocktailAfterBurner::Generate()
       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);
@@ -217,6 +217,11 @@ void AliGenCocktailAfterBurner::Generate()
               }
                 fCurrentGenerator->Generate();
                 entry->SetLast(partArray->GetEntriesFast());
+               
+// ANDREAS MORSCH ---------------------------------------------------(
+               if (fCurrentGenerator->ProvidesCollisionGeometry())  fCollisionGeometries[i] = fCurrentGenerator->CollisionGeometry();
+// ANDREAS MORSCH ---------------------------------------------------)
+               
            }
 /***********************************************/
       }
@@ -267,25 +272,35 @@ void AliGenCocktailAfterBurner::Generate()
 /*********************************************************************/
 /*********************************************************************/ 
 
-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 ---------------------------------------------------)
+
 /*********************************************************************/ 
 /*********************************************************************/ 
 
@@ -344,8 +359,12 @@ void AliGenCocktailAfterBurner::SetTracks(Int_t stackno)
       mech = AliGenCocktailAfterBurner::IntToMCProcess(p->GetUniqueID());
       weight = p->GetWeight();
 
-      gAlice->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 ---------------------------------------------------)
+
     }
 }
 /*********************************************************************/ 
@@ -374,7 +393,3 @@ TMCProcess AliGenCocktailAfterBurner::IntToMCProcess(Int_t no)
     return kPNoProcess;
 }
 
-void AliGenCocktailAfterBurner::Copy(AliGenCocktailAfterBurner &) const
-{
-    Fatal("Copy","Not implemented!\n");
-}