Moving required CMake version from 2.8.4 to 2.8.8
[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
13 #include <TMCProcess.h>
14
15 #include "AliGenCocktail.h"
16 #include "AliRunLoader.h"
17
18 class AliGenCocktailEntry;
19 class AliStack;
20 class AliCollisionGeometry;
21 class AliGenCocktailEventHeader;
22
23
24 class AliGenCocktailAfterBurner : public  AliGenCocktail
25 {
26 //container class for other generators
27 //extends AliGenCocktail functionality
28 //with possiblity of adding after-burners
29
30  public:
31     AliGenCocktailAfterBurner();
32     virtual ~AliGenCocktailAfterBurner();
33     
34     virtual void  Init();
35     virtual void  Generate();
36     virtual void  SetTracks(Int_t stackno);
37     //
38     // Add a new generator to the list
39     virtual void  AddAfterBurner
40         (AliGenerator *Generator, char* Name, Float_t RateExp );
41     
42     AliStack*     GetStack(Int_t n) const;
43     AliStack*     GetActiveStack() const{return fActiveStack;}
44
45     AliCollisionGeometry* GetCollisionGeometry(Int_t n) const;
46  
47     AliGenerator* GetCurrentGenerator() const;
48     virtual void  SetActiveEventNumber(Int_t actev);
49     Int_t         GetActiveEventNumber() const {return fActiveEvent;}
50     virtual Int_t GetNumberOfEvents() const {return AliRunLoader::Instance()->GetNumberOfEventsPerRun() + fNBgEvents;}
51     void          SetNBgEvents(Int_t nbg=0){fNBgEvents = nbg;}
52     AliGenCocktailEventHeader* GetActiveEventHeader() const { return fHeaders[fActiveEvent]; }
53
54     static TMCProcess IntToMCProcess(Int_t no);
55
56  protected:
57     Int_t fNAfterBurners;       // Number of afterburners  
58     TList  *fAfterBurnerEntries;// List of afterburners
59     Bool_t fGenerationDone;     // flag if generation is already done 
60                                 //   during first call of Generate method
61                                 //   if true just return event to gAlice
62                                 //   
63     TObjArray *fInternalStacks; //! List of internal stacks
64
65     AliCollisionGeometry**      fCollisionGeometries; //! List of Collision Geometries
66     AliGenCocktailEventHeader** fHeaders;             //! List of Headers
67     
68     Int_t fCurrentEvent;        //  Number of current event/stack
69     
70
71     AliStack* fActiveStack;   //! pointer to the current stack
72     Int_t fActiveEvent;       //HBT Processor needs more then one event to do correlations
73                               //Due to complications in fortran, it first calls C routine
74                               //that sets the active event to be read. All alihbtp_gettrack
75                               //are addressed to this event
76     
77     AliGenerator *fCurrentGenerator;      // Current event generator 
78     Int_t fNBgEvents;                     //Nuber of backgrouns events 
79                                           //(events that are generated only temporarly)
80                                           //needed by some afterburners that works better with higher statistics 
81                                           //this generates such a artificial one
82  private:
83     AliGenCocktailAfterBurner(const AliGenCocktailAfterBurner& in);
84     AliGenCocktailAfterBurner & operator=(const AliGenCocktailAfterBurner & rhs);
85
86     ClassDef(AliGenCocktailAfterBurner,2) // Particle cocktail generator a la SHAKER
87                                           //background events added
88 };
89
90 inline  AliGenerator*  
91     AliGenCocktailAfterBurner::GetCurrentGenerator() const
92 {
93   return fCurrentGenerator;
94 }
95
96
97 #endif
98
99
100
101
102