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 */
8 // Container class for AliGenerator through recursion.
9 // (Container is itself an AliGenerator)
10 // Author: piotr.skowronski@cern.ch
13 #include <TMCProcess.h>
15 #include "AliGenCocktail.h"
18 class AliGenCocktailEntry;
21 // ANDREAS MORSCH ------------------------------------- (
22 class AliCollisionGeometry;
23 // ANDREAS MORSCH ------------------------------------- )
25 class AliGenCocktailAfterBurner : public AliGenCocktail
27 //container class for other generators
28 //extends AliGenCocktail functionality
29 //with possiblity of adding after-burners
32 AliGenCocktailAfterBurner();
33 virtual ~AliGenCocktailAfterBurner();
36 virtual void Generate();
37 virtual void SetTracks(Int_t stackno);
39 // Add a new generator to the list
40 virtual void AddAfterBurner
41 (AliGenerator *Generator, char* Name, Float_t RateExp );
43 AliStack* GetStack(Int_t n) const;
44 AliStack* GetActiveStack() const{return fActiveStack;}
46 // ANDREAS MORSCH ------------------------------------- (
47 AliCollisionGeometry* GetCollisionGeometry(Int_t n) const;
48 // ANDREAS MORSCH ------------------------------------- )
50 AliGenerator* GetCurrentGenerator() const;
51 virtual void SetActiveEventNumber(Int_t actev);
52 Int_t GetActiveEventNumber() const {return fActiveEvent;}
53 virtual Int_t GetNumberOfEvents() const {return AliRunLoader::Instance()->GetNumberOfEventsPerRun() + fNBgEvents;}
54 void SetNBgEvents(Int_t nbg=0){fNBgEvents = nbg;}
56 static TMCProcess IntToMCProcess(Int_t no);
59 Int_t fNAfterBurners; // Number of afterburners
60 TList *fAfterBurnerEntries;// List of afterburners
61 Bool_t fGenerationDone; // flag if generation is already done
62 // during first call of Generate method
63 // if true just return event to gAlice
65 TObjArray *fInternalStacks; //! List of internal stacks
67 // ANDREAS MORSCH ------------------------------------- (
68 AliCollisionGeometry** fCollisionGeometries; //! List of Collision Geometries
69 // ANDREAS MORSCH ------------------------------------- )
71 Int_t fCurrentEvent; // Number of current event/stack
74 AliStack* fActiveStack; //! pointer to the current stack
75 Int_t fActiveEvent; //HBT Processor needs more then one event to do correlations
76 //Due to complications in fortran, it first calls C routine
77 //that sets the active event to be read. All alihbtp_gettrack
78 //are addressed to this event
80 AliGenerator *fCurrentGenerator; // Current event generator
81 Int_t fNBgEvents; //Nuber of backgrouns events
82 //(events that are generated only temporarly)
83 //needed by some afterburners that works better with higher statistics
84 //this generates such a artificial one
86 AliGenCocktailAfterBurner(const AliGenCocktailAfterBurner& in);
87 AliGenCocktailAfterBurner & operator=(const AliGenCocktailAfterBurner & rhs);
89 ClassDef(AliGenCocktailAfterBurner,2) // Particle cocktail generator a la SHAKER
90 //background events added
94 AliGenCocktailAfterBurner::GetCurrentGenerator() const
96 return fCurrentGenerator;