]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenCocktailAfterBurner.h
Store all the particles in the stack, but track only the selected ones
[u/mrichter/AliRoot.git] / EVGEN / AliGenCocktailAfterBurner.h
1 #ifndef AliGenCocktailAfterBurner_H
2 #define AliGenCocktailAfterBurner_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 // Container class for AliGenerator through recursion.
9 // (Container is itself an AliGenerator)
10 // Author: piotr.skowronski@cern.ch 
11 //
12 #include "AliGenCocktail.h"
13 #include "AliRun.h"
14
15 class AliGenCocktailEntry;
16 class AliStack;
17
18 class AliGenCocktailAfterBurner : public  AliGenCocktail
19 {
20 //container class for other generators
21 //extends AliGenCocktail functionality
22 //with possiblity of adding after-burners
23
24  public:
25     AliGenCocktailAfterBurner();
26     AliGenCocktailAfterBurner(const AliGenCocktailAfterBurner& in);
27     virtual ~AliGenCocktailAfterBurner();
28     AliGenCocktailAfterBurner & operator=(const AliGenCocktailAfterBurner & rhs);
29     
30     virtual void  Init();
31     virtual void  Generate();
32     virtual void  SetTracks(Int_t stackno);
33     //
34     // Add a new generator to the list
35     virtual void  AddAfterBurner
36         (AliGenerator *Generator, char* Name, Float_t RateExp );
37     
38     AliStack*     GetStack(Int_t n) const;
39     AliStack*     GetActiveStack() const{return fActiveStack;}
40     
41     AliGenerator* GetCurrentGenerator() const;
42     virtual void  SetActiveEventNumber(Int_t actev);
43     Int_t         GetActiveEventNumber() const {return fActiveEvent;}
44     virtual Int_t GetNumberOfEvents() const {return gAlice->GetEventsPerRun() + fNBgEvents;}
45     void          SetNBgEvents(Int_t nbg=0){fNBgEvents = nbg;}
46
47     static TMCProcess IntToMCProcess(Int_t no);
48
49  protected:
50     Int_t fNAfterBurners;       // Number of afterburners  
51     TList  *fAfterBurnerEntries;// List of afterburners
52     Bool_t fGenerationDone;     // flag if generation is already done 
53                                 //   during first call of Generate method
54                                 //   if true just return event to gAlice
55                                 //   
56     TObjArray *fInternalStacks; //! List of internal stacks
57     Int_t fCurrentEvent;        //  Number of current event/stack
58     
59
60     AliStack* fActiveStack;   //! pointer to the current stack
61     Int_t fActiveEvent;       //HBT Processor needs more then one event to do correlations
62                               //Due to complications in fortran, it first calls C routine
63                               //that sets the active event to be read. All alihbtp_gettrack
64                               //are addressed to this event
65     
66     AliGenerator *fCurrentGenerator;      // Current event generator 
67     Int_t fNBgEvents;                     //Nuber of backgrouns events 
68                                           //(events that are generated only temporarly)
69                                           //needed by some afterburners that works better with higher statistics 
70                                           //this generates such a artificial one
71  private:   
72     ClassDef(AliGenCocktailAfterBurner,2) // Particle cocktail generator a la SHAKER
73                                           //background events added
74 };
75
76 inline  AliGenerator*  
77     AliGenCocktailAfterBurner::GetCurrentGenerator() const
78 {
79   return fCurrentGenerator;
80 }
81
82
83 #endif
84
85
86
87
88