ROOT logo
#ifndef AliGenCocktailAfterBurner_H
#define AliGenCocktailAfterBurner_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

// Container class for AliGenerator through recursion.
// (Container is itself an AliGenerator)
// Author: piotr.skowronski@cern.ch 
//

#include <TMCProcess.h>

#include "AliGenCocktail.h"
#include "AliRunLoader.h"

class AliGenCocktailEntry;
class AliStack;
class AliCollisionGeometry;
class AliGenCocktailEventHeader;


class AliGenCocktailAfterBurner : public  AliGenCocktail
{
//container class for other generators
//extends AliGenCocktail functionality
//with possiblity of adding after-burners

 public:
    AliGenCocktailAfterBurner();
    virtual ~AliGenCocktailAfterBurner();
    
    virtual void  Init();
    virtual void  Generate();
    virtual void  SetTracks(Int_t stackno);
    //
    // Add a new generator to the list
    virtual void  AddAfterBurner
	(AliGenerator *Generator, const char* Name, Float_t RateExp );
    
    AliStack*     GetStack(Int_t n) const;
    AliStack*     GetActiveStack() const{return fActiveStack;}

    AliCollisionGeometry* GetCollisionGeometry(Int_t n) const;
 
    AliGenerator* GetCurrentGenerator() const;
    virtual void  SetActiveEventNumber(Int_t actev);
    Int_t         GetActiveEventNumber() const {return fActiveEvent;}
    virtual Int_t GetNumberOfEvents() const {return AliRunLoader::Instance()->GetNumberOfEventsPerRun() + fNBgEvents;}
    void          SetNBgEvents(Int_t nbg=0){fNBgEvents = nbg;}
    AliGenCocktailEventHeader* GetActiveEventHeader() const { return fHeaders[fActiveEvent]; }

    static TMCProcess IntToMCProcess(Int_t no);

 protected:
    Int_t fNAfterBurners;       // Number of afterburners  
    TList  *fAfterBurnerEntries;// List of afterburners
    Bool_t fGenerationDone;     // flag if generation is already done 
                                //   during first call of Generate method
                                //   if true just return event to gAlice
                                //   
    TObjArray *fInternalStacks; //! List of internal stacks

    AliCollisionGeometry**      fCollisionGeometries; //! List of Collision Geometries
    AliGenCocktailEventHeader** fHeaders;             //! List of Headers
    
    Int_t fCurrentEvent;        //  Number of current event/stack
    

    AliStack* fActiveStack;   //! pointer to the current stack
    Int_t fActiveEvent;       //HBT Processor needs more then one event to do correlations
                              //Due to complications in fortran, it first calls C routine
                              //that sets the active event to be read. All alihbtp_gettrack
                              //are addressed to this event
    
    AliGenerator *fCurrentGenerator;      // Current event generator 
    Int_t fNBgEvents;                     //Nuber of backgrouns events 
                                          //(events that are generated only temporarly)
                                          //needed by some afterburners that works better with higher statistics 
                                          //this generates such a artificial one
 private:
    AliGenCocktailAfterBurner(const AliGenCocktailAfterBurner& in);
    AliGenCocktailAfterBurner & operator=(const AliGenCocktailAfterBurner & rhs);

    ClassDef(AliGenCocktailAfterBurner,2) // Particle cocktail generator a la SHAKER
                                          //background events added
};

inline  AliGenerator*  
    AliGenCocktailAfterBurner::GetCurrentGenerator() const
{
  return fCurrentGenerator;
}


#endif





 AliGenCocktailAfterBurner.h:1
 AliGenCocktailAfterBurner.h:2
 AliGenCocktailAfterBurner.h:3
 AliGenCocktailAfterBurner.h:4
 AliGenCocktailAfterBurner.h:5
 AliGenCocktailAfterBurner.h:6
 AliGenCocktailAfterBurner.h:7
 AliGenCocktailAfterBurner.h:8
 AliGenCocktailAfterBurner.h:9
 AliGenCocktailAfterBurner.h:10
 AliGenCocktailAfterBurner.h:11
 AliGenCocktailAfterBurner.h:12
 AliGenCocktailAfterBurner.h:13
 AliGenCocktailAfterBurner.h:14
 AliGenCocktailAfterBurner.h:15
 AliGenCocktailAfterBurner.h:16
 AliGenCocktailAfterBurner.h:17
 AliGenCocktailAfterBurner.h:18
 AliGenCocktailAfterBurner.h:19
 AliGenCocktailAfterBurner.h:20
 AliGenCocktailAfterBurner.h:21
 AliGenCocktailAfterBurner.h:22
 AliGenCocktailAfterBurner.h:23
 AliGenCocktailAfterBurner.h:24
 AliGenCocktailAfterBurner.h:25
 AliGenCocktailAfterBurner.h:26
 AliGenCocktailAfterBurner.h:27
 AliGenCocktailAfterBurner.h:28
 AliGenCocktailAfterBurner.h:29
 AliGenCocktailAfterBurner.h:30
 AliGenCocktailAfterBurner.h:31
 AliGenCocktailAfterBurner.h:32
 AliGenCocktailAfterBurner.h:33
 AliGenCocktailAfterBurner.h:34
 AliGenCocktailAfterBurner.h:35
 AliGenCocktailAfterBurner.h:36
 AliGenCocktailAfterBurner.h:37
 AliGenCocktailAfterBurner.h:38
 AliGenCocktailAfterBurner.h:39
 AliGenCocktailAfterBurner.h:40
 AliGenCocktailAfterBurner.h:41
 AliGenCocktailAfterBurner.h:42
 AliGenCocktailAfterBurner.h:43
 AliGenCocktailAfterBurner.h:44
 AliGenCocktailAfterBurner.h:45
 AliGenCocktailAfterBurner.h:46
 AliGenCocktailAfterBurner.h:47
 AliGenCocktailAfterBurner.h:48
 AliGenCocktailAfterBurner.h:49
 AliGenCocktailAfterBurner.h:50
 AliGenCocktailAfterBurner.h:51
 AliGenCocktailAfterBurner.h:52
 AliGenCocktailAfterBurner.h:53
 AliGenCocktailAfterBurner.h:54
 AliGenCocktailAfterBurner.h:55
 AliGenCocktailAfterBurner.h:56
 AliGenCocktailAfterBurner.h:57
 AliGenCocktailAfterBurner.h:58
 AliGenCocktailAfterBurner.h:59
 AliGenCocktailAfterBurner.h:60
 AliGenCocktailAfterBurner.h:61
 AliGenCocktailAfterBurner.h:62
 AliGenCocktailAfterBurner.h:63
 AliGenCocktailAfterBurner.h:64
 AliGenCocktailAfterBurner.h:65
 AliGenCocktailAfterBurner.h:66
 AliGenCocktailAfterBurner.h:67
 AliGenCocktailAfterBurner.h:68
 AliGenCocktailAfterBurner.h:69
 AliGenCocktailAfterBurner.h:70
 AliGenCocktailAfterBurner.h:71
 AliGenCocktailAfterBurner.h:72
 AliGenCocktailAfterBurner.h:73
 AliGenCocktailAfterBurner.h:74
 AliGenCocktailAfterBurner.h:75
 AliGenCocktailAfterBurner.h:76
 AliGenCocktailAfterBurner.h:77
 AliGenCocktailAfterBurner.h:78
 AliGenCocktailAfterBurner.h:79
 AliGenCocktailAfterBurner.h:80
 AliGenCocktailAfterBurner.h:81
 AliGenCocktailAfterBurner.h:82
 AliGenCocktailAfterBurner.h:83
 AliGenCocktailAfterBurner.h:84
 AliGenCocktailAfterBurner.h:85
 AliGenCocktailAfterBurner.h:86
 AliGenCocktailAfterBurner.h:87
 AliGenCocktailAfterBurner.h:88
 AliGenCocktailAfterBurner.h:89
 AliGenCocktailAfterBurner.h:90
 AliGenCocktailAfterBurner.h:91
 AliGenCocktailAfterBurner.h:92
 AliGenCocktailAfterBurner.h:93
 AliGenCocktailAfterBurner.h:94
 AliGenCocktailAfterBurner.h:95
 AliGenCocktailAfterBurner.h:96
 AliGenCocktailAfterBurner.h:97
 AliGenCocktailAfterBurner.h:98
 AliGenCocktailAfterBurner.h:99
 AliGenCocktailAfterBurner.h:100
 AliGenCocktailAfterBurner.h:101
 AliGenCocktailAfterBurner.h:102