Line data Source code
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, const char* Name, Float_t RateExp );
41 :
42 : AliStack* GetStack(Int_t n) const;
43 0 : 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 0 : Int_t GetActiveEventNumber() const {return fActiveEvent;}
50 0 : virtual Int_t GetNumberOfEvents() const {return AliRunLoader::Instance()->GetNumberOfEventsPerRun() + fNBgEvents;}
51 0 : void SetNBgEvents(Int_t nbg=0){fNBgEvents = nbg;}
52 0 : 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 6 : ClassDef(AliGenCocktailAfterBurner,2) // Particle cocktail generator a la SHAKER
87 : //background events added
88 : };
89 :
90 : inline AliGenerator*
91 : AliGenCocktailAfterBurner::GetCurrentGenerator() const
92 : {
93 0 : return fCurrentGenerator;
94 : }
95 :
96 :
97 : #endif
98 :
99 :
100 :
101 :
102 :
|