]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenCocktailAfterBurner.cxx
Script to create a random bad channel map.
[u/mrichter/AliRoot.git] / EVGEN / AliGenCocktailAfterBurner.cxx
index e9e02cfa0977991cee462a5bc56f89c4d33e903d..197ad618981c6b3524b099f716fc2ba6965ec23d 100644 (file)
@@ -13,6 +13,8 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
+/* $Id$ */
+
 // 
 // Container class for AliGenerator and AfterBurners 
 // (which are AliGenerators as well) through recursion.
 //             debug -> gDebug,
 //             fNEvents replaced with gAlice->GetEventsPerRun()
 //
-#include "AliGenCocktailAfterBurner.h"
-#include "AliGenCocktailEntry.h"
 
-#include "AliStack.h"
-#include <TObjArray.h>
+
+#include <Riostream.h>
+
 #include <TList.h>
+#include <TObjArray.h>
 #include <TParticle.h>
-#include <Riostream.h>
+
+#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& in)
-{
- //cpy ctor
 }
 
 /*********************************************************************/ 
@@ -77,6 +79,7 @@ AliGenCocktailAfterBurner::~AliGenCocktailAfterBurner()
        delete fInternalStacks;
     }
     if (fAfterBurnerEntries) delete fAfterBurnerEntries; //delete entries
+    delete[] fCollisionGeometries;
   }
 /*********************************************************************/ 
 /*********************************************************************/ 
@@ -124,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;
@@ -170,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);
@@ -182,7 +190,7 @@ void AliGenCocktailAfterBurner::Generate()
       AliGenCocktailEntry *entry;
       AliGenCocktailEntry *e1;
       AliGenCocktailEntry *e2;
-      TObjArray *partArray;
+      const TObjArray *partArray;
   //
   // Loop over generators and generate events
       Int_t igen=0;
@@ -209,6 +217,11 @@ void AliGenCocktailAfterBurner::Generate()
               }
                 fCurrentGenerator->Generate();
                 entry->SetLast(partArray->GetEntriesFast());
+               
+// ANDREAS MORSCH ---------------------------------------------------(
+               if (fCurrentGenerator->ProvidesCollisionGeometry())  fCollisionGeometries[i] = fCurrentGenerator->CollisionGeometry();
+// ANDREAS MORSCH ---------------------------------------------------)
+               
            }
 /***********************************************/
       }
@@ -259,24 +272,35 @@ void AliGenCocktailAfterBurner::Generate()
 /*********************************************************************/
 /*********************************************************************/ 
 
-AliGenCocktailAfterBurner& AliGenCocktailAfterBurner::operator=(const  AliGenCocktailAfterBurner& rhs)
+AliStack* AliGenCocktailAfterBurner::GetStack(Int_t n) const
 {
-// Assignment operator
-    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 ---------------------------------------------------)
+
 /*********************************************************************/ 
 /*********************************************************************/ 
 
@@ -335,8 +359,12 @@ void AliGenCocktailAfterBurner::SetTracks(Int_t stackno)
       mech = AliGenCocktailAfterBurner::IntToMCProcess(p->GetUniqueID());
       weight = p->GetWeight();
 
-      gAlice->SetTrack(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 ---------------------------------------------------)
+
     }
 }
 /*********************************************************************/ 
@@ -364,3 +392,4 @@ TMCProcess AliGenCocktailAfterBurner::IntToMCProcess(Int_t no)
     } 
     return kPNoProcess;
 }
+