ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

// 
// Container class for AliGenerator and AfterBurners 
// (which are AliGenerators as well) through recursion.
// The container is itself an AliGenerator a
// what is stored are not the pointers to the generators directly 
// but to objects of type
// AliGenCocktailAfterBurner entry.   
// The class provides also iterator functionality.  
// Author: andreas.morsch@cern.ch and piotr.skowronski@cern.ch
//
// 24.09.2001  Piotr Skowronski
//             debug -> gDebug,
//             fNEvents replaced with AliRunLoader::GetNumberOfEvents()
//


#include <Riostream.h>

#include <TList.h>
#include <TObjArray.h>
#include <TParticle.h>

#include "AliGenCocktailAfterBurner.h"
#include "AliGenCocktailEntry.h"
#include "AliGenCocktailEventHeader.h"
#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(0),
	fGenerationDone(kFALSE),
	fInternalStacks(0),
	fCollisionGeometries(0),
	fHeaders(0),
	fCurrentEvent(0),
	fActiveStack(0),
	fActiveEvent(-1),
	fCurrentGenerator(0),
	fNBgEvents(0)
{
// Constructor
    if (gDebug > 0) 
	cout<<"AliGenCocktailAfterBurner::AliGenCocktailAfterBurner()"<<endl;
    SetName("AliGenCocktailAfterBurner");
    SetTitle("AliGenCocktailAfterBurner");
}

/*********************************************************************/ 

AliGenCocktailAfterBurner::~AliGenCocktailAfterBurner()
  {
//destructor

    if (fInternalStacks) //delete stacks
     { 
       fInternalStacks->SetOwner();
       delete fInternalStacks;
    }
    if (fAfterBurnerEntries) delete fAfterBurnerEntries; //delete entries
    Int_t numberOfEvents = AliRunLoader::Instance()->GetNumberOfEventsPerRun();
    if (fCollisionGeometries) {
      for (Int_t i = 0; i < (numberOfEvents + fNBgEvents); i++)
	if (fCollisionGeometries[i]) delete fCollisionGeometries[i];
      delete[] fCollisionGeometries;
    }
    if (fHeaders) {
      for (Int_t i = 0; i < (numberOfEvents + fNBgEvents); i++)
	if (fHeaders[i]) delete fHeaders[i];
      delete[] fHeaders;
    }
  }
/*********************************************************************/ 
/*********************************************************************/ 

void AliGenCocktailAfterBurner::
AddAfterBurner(AliGenerator *AfterBurner, const char* Name, Float_t RateExp)
{
//
//  Forward parameters to the new AfterBurner
    
    if (gDebug>0)cout<<"AliGenCocktailAfterBurner::AddAfterBurner  Named "<<Name<<endl;

    if(TestBit(kPtRange) && !(AfterBurner->TestBit(kPtRange)) && !(AfterBurner->TestBit(kMomentumRange))) 
	AfterBurner->SetPtRange(fPtMin,fPtMax);
    if(TestBit(kMomentumRange) && !(AfterBurner->TestBit(kPtRange)) && !(AfterBurner->TestBit(kMomentumRange)))
	AfterBurner->SetMomentumRange(fPMin,fPMax);
    
    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++;
//
    
}
/*********************************************************************/ 
/*********************************************************************/ 

void AliGenCocktailAfterBurner::Init()
{
// Initialisation
  Int_t numberOfEvents = AliRunLoader::Instance()->GetNumberOfEventsPerRun();
    fGenerationDone = kFALSE;
    if (fInternalStacks) //delete stacks
     { 
       fInternalStacks->SetOwner();
       fInternalStacks->Delete(); //clean after previous generation cycle
     }

    if (fCollisionGeometries) {
      for (Int_t i = 0; i < (numberOfEvents + fNBgEvents); i++)
	if (fCollisionGeometries[i]) delete fCollisionGeometries[i];
      delete[] fCollisionGeometries;
    }
    if (fHeaders) {
      for (Int_t i = 0; i < (numberOfEvents + fNBgEvents); i++)
	if (fHeaders[i]) delete fHeaders[i];
      delete[] fHeaders;
    }

    this->AliGenCocktail::Init(); 
    
    if (gDebug>0) cout<<"AliGenCocktailAfterBurner::Init"<<endl;
    TIter next(fAfterBurnerEntries);
    AliGenCocktailEntry *entry;
    //
    // Loop over generators and initialize
    while((entry = (AliGenCocktailEntry*)next())) {
	entry->Generator()->Init();
    }  
}
/*********************************************************************/ 
/*********************************************************************/ 

void AliGenCocktailAfterBurner::Generate()
{
//
// Generate event
//  Firsts runs each generator for all events
//  than after burners ones for each event
//
//  It generates and processes all events during
//  first call only.
//  In next calls it just returns already generated 
//  and processed events to the gAlice

    if (gDebug>0)
      cout<<"#####################################"<<endl
          <<"#AliGenCocktailAfterBurner::Generate#"<<endl
          <<"#####################################"<<endl;
    // Initialize header
    //
    Int_t i; //iterator
    AliStack * stack;
    
    if (fGenerationDone)
    {//if generation is done (in first call) 
     //just copy particles from the stack to the gAlice
      SetTracks(++fCurrentEvent);
      fHeader = fHeaders[fCurrentEvent];
      gAlice->SetGenEventHeader(fHeader); 
      cout<<"Returning event " << fCurrentEvent<<endl;
      return;  
    }
    else
    { //Here we are in the first call of the method
	Int_t numberOfEvents = AliRunLoader::Instance()->GetNumberOfEventsPerRun();
	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
	fCollisionGeometries = new AliCollisionGeometry*[numberOfEvents + fNBgEvents]; //Create array of collision geometries
	fHeaders             = new AliGenCocktailEventHeader*[numberOfEvents + fNBgEvents]; //Create array of headers   

	for(i = 0; i < numberOfEvents + fNBgEvents; i++) 
       {	
	   stack = new AliStack(10000);
	   stack->Reset();
	   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);
      AliGenCocktailEntry *entry;
      AliGenCocktailEntry *e1;
      AliGenCocktailEntry *e2;
      const TObjArray *partArray;
  //
  // Loop over generators and generate events
      Int_t igen=0;
      while((entry = (AliGenCocktailEntry*)next())) 
      {
        igen++;
        cout<<"Generator "<<igen<<"  : "<<entry->GetName()<<endl;
/***********************************************/
//First generator for all evenets, than second for all events, etc...
        for(i = 0; i < numberOfEvents + fNBgEvents; i++) 
	{  
	    cout<<"                  EVENT "<<i << endl;
            stack = GetStack(i);
            partArray = stack->Particles();
            fCurrentGenerator = entry->Generator();
            fCurrentGenerator->SetStack(stack);
            if (igen ==1) 
	    {
                entry->SetFirst(0);
	    } 
            else 
	    {
                entry->SetFirst((partArray->GetEntriesFast())+1);
	    }
	    // 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 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();
	    //
	    entry->SetLast(partArray->GetEntriesFast());
	    
	    if (fCurrentGenerator->ProvidesCollisionGeometry())  
	      fCollisionGeometries[i] = 
		new AliCollisionGeometry(*(fCurrentGenerator->CollisionGeometry()));
	} // event loop
/***********************************************/
      } // generator loop
      next.Reset();
      while((entry = (AliGenCocktailEntry*)next())) 
        {
          entry->PrintInfo();
        }
      for ( entry=FirstGenerator();entry;entry=NextGenerator() ) 
        {
          entry->PrintInfo();
        }
      for (FirstGeneratorPair(e1,e2); (e1&&e2); NextGeneratorPair(e1,e2) )
        {
          printf("\n -----------------------------");
          e1->PrintInfo();
          e2->PrintInfo();
        }
	
	
      /***********************************************/
      /*******After Burners Processing****************/
      /***********************************************/
      TIter nextAfterBurner(fAfterBurnerEntries);
      AliGenCocktailEntry *afterBurnerEntry;
      Int_t iab =0; //number of current after burner / counter
      
      cout<<"\n\nRunning After Burners"<<endl;
      while((afterBurnerEntry = (AliGenCocktailEntry*)nextAfterBurner()))
        {
          cout<<"After Burner "<<iab++<<"  :"<<afterBurnerEntry->GetName()<<endl;
          fCurrentGenerator = afterBurnerEntry->Generator();
          fCurrentGenerator->Generate();
        }
      cout<<endl<<"Finished. Processed "<<iab<<" After Burners"<<endl;

      /***********************************************/
      /***********************************************/
      /***********************************************/       
        
      fGenerationDone=kTRUE; 
      SetTracks(0); //copy event 0 to gAlice stack
	
/*********************************************************************/
      // Pass the header to gAlice
      fHeader = fHeaders[0];
      gAlice->SetGenEventHeader(fHeader); 
    } //else generated
}
/*********************************************************************/
/*********************************************************************/ 

AliStack* AliGenCocktailAfterBurner::GetStack(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);
      return 0; 
    }
    return ((AliStack*) fInternalStacks->At(n) );
}

/*********************************************************************/ 
/*********************************************************************/ 

AliCollisionGeometry* AliGenCocktailAfterBurner::GetCollisionGeometry(Int_t n) const
{
//Returns the pointer to the N'th stack (event)
  if( ( n<0 ) || ( n>=GetNumberOfEvents() ) )
    {
      Fatal("AliGenCocktailAfterBurner::GetCollisionGeometry","Asked for non existing stack (%d)",n);
      return 0; 
    }
    return fCollisionGeometries[n];
}

/*********************************************************************/ 
/*********************************************************************/ 

void AliGenCocktailAfterBurner::SetActiveEventNumber(Int_t actev)
{
//Set Active Events Number and Active Stack
//There is only one active event number
//Made fo convinience of work with AfterBurners (HBT processor)

    fActiveEvent = actev;
    fActiveStack = GetStack(actev);
}
/*********************************************************************/ 
/*********************************************************************/ 

void AliGenCocktailAfterBurner::SetTracks(Int_t stackno)
{
//Method which copies tracks from given stack to the
//gAlice's stack
    AliStack* instack = GetStack(stackno);
    Int_t done;
    Int_t parent; 
    Int_t pdg;
    Double_t px, py, pz, e, vx, vy, vz, tof, polx, poly, polz;
    TMCProcess mech;
    Int_t ntr;
    Float_t weight;
    TVector3 pol;
    Int_t is;
    
    TParticle * p;
    Int_t n = instack->GetNtrack();
    if (gDebug) 
    {
      cout<<"AliGenCocktailAfterBurner::SetTracks("<<stackno<<"). Number of particles is: "<<n<<"\n";
    }
    
    for(Int_t i = 0; i < n; i++)
    {
	
      p = instack->Particle(i);
      done = !p->TestBit(kDoneBit);
      parent = p->GetMother(0);
      pdg = p->GetPdgCode();
      px = p->Px();
      py = p->Py();
      pz = p->Pz();
      e  = p->Energy();
      vx = p->Vx();
      vy = p->Vy();
      vz = p->Vz();
      tof = p->T();
      p->GetPolarisation(pol);
      polx = pol.X();
      poly = pol.Y();
      polz = pol.Z();
      mech = AliGenCocktailAfterBurner::IntToMCProcess(p->GetUniqueID());
      weight = p->GetWeight();
      is = p->GetStatusCode();

      gAlice->GetMCApp()->PushTrack(done, parent, pdg, px, py, pz, e, vx, vy, vz, tof,polx, poly, polz, mech, ntr, weight, is);

      SetHighWaterMark(ntr) ; 

    }
}
/*********************************************************************/ 
/*********************************************************************/ 

TMCProcess AliGenCocktailAfterBurner::IntToMCProcess(Int_t no)
{
 //Mothod used to convert uniqueID (integer) to TMCProcess type
    const TMCProcess kMCprocesses[kMaxMCProcess] = 
    {
     kPNoProcess, kPMultipleScattering, kPEnergyLoss, kPMagneticFieldL, 
     kPDecay, kPPair, kPCompton, kPPhotoelectric, kPBrem, kPDeltaRay,
     kPAnnihilation, kPHadronic, kPNoProcess, kPEvaporation, kPNuclearFission,
     kPNuclearAbsorption, kPPbarAnnihilation, kPNCapture, kPHElastic, 
     kPHInhelastic, kPMuonNuclear, kPTOFlimit,kPPhotoFission, kPNoProcess, 
     kPRayleigh, kPNoProcess, kPNoProcess, kPNoProcess, kPNull, kPStop
    };
    
    for (Int_t i = 0;i<kMaxMCProcess;i++)
    {
      if (kMCprocesses[i] == no)
        {
          return kMCprocesses[i];
        }
    } 
    return kPNoProcess;
}

 AliGenCocktailAfterBurner.cxx:1
 AliGenCocktailAfterBurner.cxx:2
 AliGenCocktailAfterBurner.cxx:3
 AliGenCocktailAfterBurner.cxx:4
 AliGenCocktailAfterBurner.cxx:5
 AliGenCocktailAfterBurner.cxx:6
 AliGenCocktailAfterBurner.cxx:7
 AliGenCocktailAfterBurner.cxx:8
 AliGenCocktailAfterBurner.cxx:9
 AliGenCocktailAfterBurner.cxx:10
 AliGenCocktailAfterBurner.cxx:11
 AliGenCocktailAfterBurner.cxx:12
 AliGenCocktailAfterBurner.cxx:13
 AliGenCocktailAfterBurner.cxx:14
 AliGenCocktailAfterBurner.cxx:15
 AliGenCocktailAfterBurner.cxx:16
 AliGenCocktailAfterBurner.cxx:17
 AliGenCocktailAfterBurner.cxx:18
 AliGenCocktailAfterBurner.cxx:19
 AliGenCocktailAfterBurner.cxx:20
 AliGenCocktailAfterBurner.cxx:21
 AliGenCocktailAfterBurner.cxx:22
 AliGenCocktailAfterBurner.cxx:23
 AliGenCocktailAfterBurner.cxx:24
 AliGenCocktailAfterBurner.cxx:25
 AliGenCocktailAfterBurner.cxx:26
 AliGenCocktailAfterBurner.cxx:27
 AliGenCocktailAfterBurner.cxx:28
 AliGenCocktailAfterBurner.cxx:29
 AliGenCocktailAfterBurner.cxx:30
 AliGenCocktailAfterBurner.cxx:31
 AliGenCocktailAfterBurner.cxx:32
 AliGenCocktailAfterBurner.cxx:33
 AliGenCocktailAfterBurner.cxx:34
 AliGenCocktailAfterBurner.cxx:35
 AliGenCocktailAfterBurner.cxx:36
 AliGenCocktailAfterBurner.cxx:37
 AliGenCocktailAfterBurner.cxx:38
 AliGenCocktailAfterBurner.cxx:39
 AliGenCocktailAfterBurner.cxx:40
 AliGenCocktailAfterBurner.cxx:41
 AliGenCocktailAfterBurner.cxx:42
 AliGenCocktailAfterBurner.cxx:43
 AliGenCocktailAfterBurner.cxx:44
 AliGenCocktailAfterBurner.cxx:45
 AliGenCocktailAfterBurner.cxx:46
 AliGenCocktailAfterBurner.cxx:47
 AliGenCocktailAfterBurner.cxx:48
 AliGenCocktailAfterBurner.cxx:49
 AliGenCocktailAfterBurner.cxx:50
 AliGenCocktailAfterBurner.cxx:51
 AliGenCocktailAfterBurner.cxx:52
 AliGenCocktailAfterBurner.cxx:53
 AliGenCocktailAfterBurner.cxx:54
 AliGenCocktailAfterBurner.cxx:55
 AliGenCocktailAfterBurner.cxx:56
 AliGenCocktailAfterBurner.cxx:57
 AliGenCocktailAfterBurner.cxx:58
 AliGenCocktailAfterBurner.cxx:59
 AliGenCocktailAfterBurner.cxx:60
 AliGenCocktailAfterBurner.cxx:61
 AliGenCocktailAfterBurner.cxx:62
 AliGenCocktailAfterBurner.cxx:63
 AliGenCocktailAfterBurner.cxx:64
 AliGenCocktailAfterBurner.cxx:65
 AliGenCocktailAfterBurner.cxx:66
 AliGenCocktailAfterBurner.cxx:67
 AliGenCocktailAfterBurner.cxx:68
 AliGenCocktailAfterBurner.cxx:69
 AliGenCocktailAfterBurner.cxx:70
 AliGenCocktailAfterBurner.cxx:71
 AliGenCocktailAfterBurner.cxx:72
 AliGenCocktailAfterBurner.cxx:73
 AliGenCocktailAfterBurner.cxx:74
 AliGenCocktailAfterBurner.cxx:75
 AliGenCocktailAfterBurner.cxx:76
 AliGenCocktailAfterBurner.cxx:77
 AliGenCocktailAfterBurner.cxx:78
 AliGenCocktailAfterBurner.cxx:79
 AliGenCocktailAfterBurner.cxx:80
 AliGenCocktailAfterBurner.cxx:81
 AliGenCocktailAfterBurner.cxx:82
 AliGenCocktailAfterBurner.cxx:83
 AliGenCocktailAfterBurner.cxx:84
 AliGenCocktailAfterBurner.cxx:85
 AliGenCocktailAfterBurner.cxx:86
 AliGenCocktailAfterBurner.cxx:87
 AliGenCocktailAfterBurner.cxx:88
 AliGenCocktailAfterBurner.cxx:89
 AliGenCocktailAfterBurner.cxx:90
 AliGenCocktailAfterBurner.cxx:91
 AliGenCocktailAfterBurner.cxx:92
 AliGenCocktailAfterBurner.cxx:93
 AliGenCocktailAfterBurner.cxx:94
 AliGenCocktailAfterBurner.cxx:95
 AliGenCocktailAfterBurner.cxx:96
 AliGenCocktailAfterBurner.cxx:97
 AliGenCocktailAfterBurner.cxx:98
 AliGenCocktailAfterBurner.cxx:99
 AliGenCocktailAfterBurner.cxx:100
 AliGenCocktailAfterBurner.cxx:101
 AliGenCocktailAfterBurner.cxx:102
 AliGenCocktailAfterBurner.cxx:103
 AliGenCocktailAfterBurner.cxx:104
 AliGenCocktailAfterBurner.cxx:105
 AliGenCocktailAfterBurner.cxx:106
 AliGenCocktailAfterBurner.cxx:107
 AliGenCocktailAfterBurner.cxx:108
 AliGenCocktailAfterBurner.cxx:109
 AliGenCocktailAfterBurner.cxx:110
 AliGenCocktailAfterBurner.cxx:111
 AliGenCocktailAfterBurner.cxx:112
 AliGenCocktailAfterBurner.cxx:113
 AliGenCocktailAfterBurner.cxx:114
 AliGenCocktailAfterBurner.cxx:115
 AliGenCocktailAfterBurner.cxx:116
 AliGenCocktailAfterBurner.cxx:117
 AliGenCocktailAfterBurner.cxx:118
 AliGenCocktailAfterBurner.cxx:119
 AliGenCocktailAfterBurner.cxx:120
 AliGenCocktailAfterBurner.cxx:121
 AliGenCocktailAfterBurner.cxx:122
 AliGenCocktailAfterBurner.cxx:123
 AliGenCocktailAfterBurner.cxx:124
 AliGenCocktailAfterBurner.cxx:125
 AliGenCocktailAfterBurner.cxx:126
 AliGenCocktailAfterBurner.cxx:127
 AliGenCocktailAfterBurner.cxx:128
 AliGenCocktailAfterBurner.cxx:129
 AliGenCocktailAfterBurner.cxx:130
 AliGenCocktailAfterBurner.cxx:131
 AliGenCocktailAfterBurner.cxx:132
 AliGenCocktailAfterBurner.cxx:133
 AliGenCocktailAfterBurner.cxx:134
 AliGenCocktailAfterBurner.cxx:135
 AliGenCocktailAfterBurner.cxx:136
 AliGenCocktailAfterBurner.cxx:137
 AliGenCocktailAfterBurner.cxx:138
 AliGenCocktailAfterBurner.cxx:139
 AliGenCocktailAfterBurner.cxx:140
 AliGenCocktailAfterBurner.cxx:141
 AliGenCocktailAfterBurner.cxx:142
 AliGenCocktailAfterBurner.cxx:143
 AliGenCocktailAfterBurner.cxx:144
 AliGenCocktailAfterBurner.cxx:145
 AliGenCocktailAfterBurner.cxx:146
 AliGenCocktailAfterBurner.cxx:147
 AliGenCocktailAfterBurner.cxx:148
 AliGenCocktailAfterBurner.cxx:149
 AliGenCocktailAfterBurner.cxx:150
 AliGenCocktailAfterBurner.cxx:151
 AliGenCocktailAfterBurner.cxx:152
 AliGenCocktailAfterBurner.cxx:153
 AliGenCocktailAfterBurner.cxx:154
 AliGenCocktailAfterBurner.cxx:155
 AliGenCocktailAfterBurner.cxx:156
 AliGenCocktailAfterBurner.cxx:157
 AliGenCocktailAfterBurner.cxx:158
 AliGenCocktailAfterBurner.cxx:159
 AliGenCocktailAfterBurner.cxx:160
 AliGenCocktailAfterBurner.cxx:161
 AliGenCocktailAfterBurner.cxx:162
 AliGenCocktailAfterBurner.cxx:163
 AliGenCocktailAfterBurner.cxx:164
 AliGenCocktailAfterBurner.cxx:165
 AliGenCocktailAfterBurner.cxx:166
 AliGenCocktailAfterBurner.cxx:167
 AliGenCocktailAfterBurner.cxx:168
 AliGenCocktailAfterBurner.cxx:169
 AliGenCocktailAfterBurner.cxx:170
 AliGenCocktailAfterBurner.cxx:171
 AliGenCocktailAfterBurner.cxx:172
 AliGenCocktailAfterBurner.cxx:173
 AliGenCocktailAfterBurner.cxx:174
 AliGenCocktailAfterBurner.cxx:175
 AliGenCocktailAfterBurner.cxx:176
 AliGenCocktailAfterBurner.cxx:177
 AliGenCocktailAfterBurner.cxx:178
 AliGenCocktailAfterBurner.cxx:179
 AliGenCocktailAfterBurner.cxx:180
 AliGenCocktailAfterBurner.cxx:181
 AliGenCocktailAfterBurner.cxx:182
 AliGenCocktailAfterBurner.cxx:183
 AliGenCocktailAfterBurner.cxx:184
 AliGenCocktailAfterBurner.cxx:185
 AliGenCocktailAfterBurner.cxx:186
 AliGenCocktailAfterBurner.cxx:187
 AliGenCocktailAfterBurner.cxx:188
 AliGenCocktailAfterBurner.cxx:189
 AliGenCocktailAfterBurner.cxx:190
 AliGenCocktailAfterBurner.cxx:191
 AliGenCocktailAfterBurner.cxx:192
 AliGenCocktailAfterBurner.cxx:193
 AliGenCocktailAfterBurner.cxx:194
 AliGenCocktailAfterBurner.cxx:195
 AliGenCocktailAfterBurner.cxx:196
 AliGenCocktailAfterBurner.cxx:197
 AliGenCocktailAfterBurner.cxx:198
 AliGenCocktailAfterBurner.cxx:199
 AliGenCocktailAfterBurner.cxx:200
 AliGenCocktailAfterBurner.cxx:201
 AliGenCocktailAfterBurner.cxx:202
 AliGenCocktailAfterBurner.cxx:203
 AliGenCocktailAfterBurner.cxx:204
 AliGenCocktailAfterBurner.cxx:205
 AliGenCocktailAfterBurner.cxx:206
 AliGenCocktailAfterBurner.cxx:207
 AliGenCocktailAfterBurner.cxx:208
 AliGenCocktailAfterBurner.cxx:209
 AliGenCocktailAfterBurner.cxx:210
 AliGenCocktailAfterBurner.cxx:211
 AliGenCocktailAfterBurner.cxx:212
 AliGenCocktailAfterBurner.cxx:213
 AliGenCocktailAfterBurner.cxx:214
 AliGenCocktailAfterBurner.cxx:215
 AliGenCocktailAfterBurner.cxx:216
 AliGenCocktailAfterBurner.cxx:217
 AliGenCocktailAfterBurner.cxx:218
 AliGenCocktailAfterBurner.cxx:219
 AliGenCocktailAfterBurner.cxx:220
 AliGenCocktailAfterBurner.cxx:221
 AliGenCocktailAfterBurner.cxx:222
 AliGenCocktailAfterBurner.cxx:223
 AliGenCocktailAfterBurner.cxx:224
 AliGenCocktailAfterBurner.cxx:225
 AliGenCocktailAfterBurner.cxx:226
 AliGenCocktailAfterBurner.cxx:227
 AliGenCocktailAfterBurner.cxx:228
 AliGenCocktailAfterBurner.cxx:229
 AliGenCocktailAfterBurner.cxx:230
 AliGenCocktailAfterBurner.cxx:231
 AliGenCocktailAfterBurner.cxx:232
 AliGenCocktailAfterBurner.cxx:233
 AliGenCocktailAfterBurner.cxx:234
 AliGenCocktailAfterBurner.cxx:235
 AliGenCocktailAfterBurner.cxx:236
 AliGenCocktailAfterBurner.cxx:237
 AliGenCocktailAfterBurner.cxx:238
 AliGenCocktailAfterBurner.cxx:239
 AliGenCocktailAfterBurner.cxx:240
 AliGenCocktailAfterBurner.cxx:241
 AliGenCocktailAfterBurner.cxx:242
 AliGenCocktailAfterBurner.cxx:243
 AliGenCocktailAfterBurner.cxx:244
 AliGenCocktailAfterBurner.cxx:245
 AliGenCocktailAfterBurner.cxx:246
 AliGenCocktailAfterBurner.cxx:247
 AliGenCocktailAfterBurner.cxx:248
 AliGenCocktailAfterBurner.cxx:249
 AliGenCocktailAfterBurner.cxx:250
 AliGenCocktailAfterBurner.cxx:251
 AliGenCocktailAfterBurner.cxx:252
 AliGenCocktailAfterBurner.cxx:253
 AliGenCocktailAfterBurner.cxx:254
 AliGenCocktailAfterBurner.cxx:255
 AliGenCocktailAfterBurner.cxx:256
 AliGenCocktailAfterBurner.cxx:257
 AliGenCocktailAfterBurner.cxx:258
 AliGenCocktailAfterBurner.cxx:259
 AliGenCocktailAfterBurner.cxx:260
 AliGenCocktailAfterBurner.cxx:261
 AliGenCocktailAfterBurner.cxx:262
 AliGenCocktailAfterBurner.cxx:263
 AliGenCocktailAfterBurner.cxx:264
 AliGenCocktailAfterBurner.cxx:265
 AliGenCocktailAfterBurner.cxx:266
 AliGenCocktailAfterBurner.cxx:267
 AliGenCocktailAfterBurner.cxx:268
 AliGenCocktailAfterBurner.cxx:269
 AliGenCocktailAfterBurner.cxx:270
 AliGenCocktailAfterBurner.cxx:271
 AliGenCocktailAfterBurner.cxx:272
 AliGenCocktailAfterBurner.cxx:273
 AliGenCocktailAfterBurner.cxx:274
 AliGenCocktailAfterBurner.cxx:275
 AliGenCocktailAfterBurner.cxx:276
 AliGenCocktailAfterBurner.cxx:277
 AliGenCocktailAfterBurner.cxx:278
 AliGenCocktailAfterBurner.cxx:279
 AliGenCocktailAfterBurner.cxx:280
 AliGenCocktailAfterBurner.cxx:281
 AliGenCocktailAfterBurner.cxx:282
 AliGenCocktailAfterBurner.cxx:283
 AliGenCocktailAfterBurner.cxx:284
 AliGenCocktailAfterBurner.cxx:285
 AliGenCocktailAfterBurner.cxx:286
 AliGenCocktailAfterBurner.cxx:287
 AliGenCocktailAfterBurner.cxx:288
 AliGenCocktailAfterBurner.cxx:289
 AliGenCocktailAfterBurner.cxx:290
 AliGenCocktailAfterBurner.cxx:291
 AliGenCocktailAfterBurner.cxx:292
 AliGenCocktailAfterBurner.cxx:293
 AliGenCocktailAfterBurner.cxx:294
 AliGenCocktailAfterBurner.cxx:295
 AliGenCocktailAfterBurner.cxx:296
 AliGenCocktailAfterBurner.cxx:297
 AliGenCocktailAfterBurner.cxx:298
 AliGenCocktailAfterBurner.cxx:299
 AliGenCocktailAfterBurner.cxx:300
 AliGenCocktailAfterBurner.cxx:301
 AliGenCocktailAfterBurner.cxx:302
 AliGenCocktailAfterBurner.cxx:303
 AliGenCocktailAfterBurner.cxx:304
 AliGenCocktailAfterBurner.cxx:305
 AliGenCocktailAfterBurner.cxx:306
 AliGenCocktailAfterBurner.cxx:307
 AliGenCocktailAfterBurner.cxx:308
 AliGenCocktailAfterBurner.cxx:309
 AliGenCocktailAfterBurner.cxx:310
 AliGenCocktailAfterBurner.cxx:311
 AliGenCocktailAfterBurner.cxx:312
 AliGenCocktailAfterBurner.cxx:313
 AliGenCocktailAfterBurner.cxx:314
 AliGenCocktailAfterBurner.cxx:315
 AliGenCocktailAfterBurner.cxx:316
 AliGenCocktailAfterBurner.cxx:317
 AliGenCocktailAfterBurner.cxx:318
 AliGenCocktailAfterBurner.cxx:319
 AliGenCocktailAfterBurner.cxx:320
 AliGenCocktailAfterBurner.cxx:321
 AliGenCocktailAfterBurner.cxx:322
 AliGenCocktailAfterBurner.cxx:323
 AliGenCocktailAfterBurner.cxx:324
 AliGenCocktailAfterBurner.cxx:325
 AliGenCocktailAfterBurner.cxx:326
 AliGenCocktailAfterBurner.cxx:327
 AliGenCocktailAfterBurner.cxx:328
 AliGenCocktailAfterBurner.cxx:329
 AliGenCocktailAfterBurner.cxx:330
 AliGenCocktailAfterBurner.cxx:331
 AliGenCocktailAfterBurner.cxx:332
 AliGenCocktailAfterBurner.cxx:333
 AliGenCocktailAfterBurner.cxx:334
 AliGenCocktailAfterBurner.cxx:335
 AliGenCocktailAfterBurner.cxx:336
 AliGenCocktailAfterBurner.cxx:337
 AliGenCocktailAfterBurner.cxx:338
 AliGenCocktailAfterBurner.cxx:339
 AliGenCocktailAfterBurner.cxx:340
 AliGenCocktailAfterBurner.cxx:341
 AliGenCocktailAfterBurner.cxx:342
 AliGenCocktailAfterBurner.cxx:343
 AliGenCocktailAfterBurner.cxx:344
 AliGenCocktailAfterBurner.cxx:345
 AliGenCocktailAfterBurner.cxx:346
 AliGenCocktailAfterBurner.cxx:347
 AliGenCocktailAfterBurner.cxx:348
 AliGenCocktailAfterBurner.cxx:349
 AliGenCocktailAfterBurner.cxx:350
 AliGenCocktailAfterBurner.cxx:351
 AliGenCocktailAfterBurner.cxx:352
 AliGenCocktailAfterBurner.cxx:353
 AliGenCocktailAfterBurner.cxx:354
 AliGenCocktailAfterBurner.cxx:355
 AliGenCocktailAfterBurner.cxx:356
 AliGenCocktailAfterBurner.cxx:357
 AliGenCocktailAfterBurner.cxx:358
 AliGenCocktailAfterBurner.cxx:359
 AliGenCocktailAfterBurner.cxx:360
 AliGenCocktailAfterBurner.cxx:361
 AliGenCocktailAfterBurner.cxx:362
 AliGenCocktailAfterBurner.cxx:363
 AliGenCocktailAfterBurner.cxx:364
 AliGenCocktailAfterBurner.cxx:365
 AliGenCocktailAfterBurner.cxx:366
 AliGenCocktailAfterBurner.cxx:367
 AliGenCocktailAfterBurner.cxx:368
 AliGenCocktailAfterBurner.cxx:369
 AliGenCocktailAfterBurner.cxx:370
 AliGenCocktailAfterBurner.cxx:371
 AliGenCocktailAfterBurner.cxx:372
 AliGenCocktailAfterBurner.cxx:373
 AliGenCocktailAfterBurner.cxx:374
 AliGenCocktailAfterBurner.cxx:375
 AliGenCocktailAfterBurner.cxx:376
 AliGenCocktailAfterBurner.cxx:377
 AliGenCocktailAfterBurner.cxx:378
 AliGenCocktailAfterBurner.cxx:379
 AliGenCocktailAfterBurner.cxx:380
 AliGenCocktailAfterBurner.cxx:381
 AliGenCocktailAfterBurner.cxx:382
 AliGenCocktailAfterBurner.cxx:383
 AliGenCocktailAfterBurner.cxx:384
 AliGenCocktailAfterBurner.cxx:385
 AliGenCocktailAfterBurner.cxx:386
 AliGenCocktailAfterBurner.cxx:387
 AliGenCocktailAfterBurner.cxx:388
 AliGenCocktailAfterBurner.cxx:389
 AliGenCocktailAfterBurner.cxx:390
 AliGenCocktailAfterBurner.cxx:391
 AliGenCocktailAfterBurner.cxx:392
 AliGenCocktailAfterBurner.cxx:393
 AliGenCocktailAfterBurner.cxx:394
 AliGenCocktailAfterBurner.cxx:395
 AliGenCocktailAfterBurner.cxx:396
 AliGenCocktailAfterBurner.cxx:397
 AliGenCocktailAfterBurner.cxx:398
 AliGenCocktailAfterBurner.cxx:399
 AliGenCocktailAfterBurner.cxx:400
 AliGenCocktailAfterBurner.cxx:401
 AliGenCocktailAfterBurner.cxx:402
 AliGenCocktailAfterBurner.cxx:403
 AliGenCocktailAfterBurner.cxx:404
 AliGenCocktailAfterBurner.cxx:405
 AliGenCocktailAfterBurner.cxx:406
 AliGenCocktailAfterBurner.cxx:407
 AliGenCocktailAfterBurner.cxx:408
 AliGenCocktailAfterBurner.cxx:409
 AliGenCocktailAfterBurner.cxx:410
 AliGenCocktailAfterBurner.cxx:411
 AliGenCocktailAfterBurner.cxx:412
 AliGenCocktailAfterBurner.cxx:413
 AliGenCocktailAfterBurner.cxx:414
 AliGenCocktailAfterBurner.cxx:415
 AliGenCocktailAfterBurner.cxx:416
 AliGenCocktailAfterBurner.cxx:417
 AliGenCocktailAfterBurner.cxx:418
 AliGenCocktailAfterBurner.cxx:419
 AliGenCocktailAfterBurner.cxx:420
 AliGenCocktailAfterBurner.cxx:421
 AliGenCocktailAfterBurner.cxx:422
 AliGenCocktailAfterBurner.cxx:423
 AliGenCocktailAfterBurner.cxx:424
 AliGenCocktailAfterBurner.cxx:425
 AliGenCocktailAfterBurner.cxx:426
 AliGenCocktailAfterBurner.cxx:427
 AliGenCocktailAfterBurner.cxx:428
 AliGenCocktailAfterBurner.cxx:429
 AliGenCocktailAfterBurner.cxx:430
 AliGenCocktailAfterBurner.cxx:431
 AliGenCocktailAfterBurner.cxx:432
 AliGenCocktailAfterBurner.cxx:433
 AliGenCocktailAfterBurner.cxx:434
 AliGenCocktailAfterBurner.cxx:435
 AliGenCocktailAfterBurner.cxx:436
 AliGenCocktailAfterBurner.cxx:437
 AliGenCocktailAfterBurner.cxx:438
 AliGenCocktailAfterBurner.cxx:439
 AliGenCocktailAfterBurner.cxx:440
 AliGenCocktailAfterBurner.cxx:441
 AliGenCocktailAfterBurner.cxx:442
 AliGenCocktailAfterBurner.cxx:443
 AliGenCocktailAfterBurner.cxx:444
 AliGenCocktailAfterBurner.cxx:445
 AliGenCocktailAfterBurner.cxx:446
 AliGenCocktailAfterBurner.cxx:447
 AliGenCocktailAfterBurner.cxx:448
 AliGenCocktailAfterBurner.cxx:449
 AliGenCocktailAfterBurner.cxx:450
 AliGenCocktailAfterBurner.cxx:451
 AliGenCocktailAfterBurner.cxx:452