]> git.uio.no Git - u/mrichter/AliRoot.git/blob - AliGeant4/AliPrimaryGeneratorAction.h
BuildDetectors() corrected
[u/mrichter/AliRoot.git] / AliGeant4 / AliPrimaryGeneratorAction.h
1 // $Id$
2 // Category: run
3 //
4 // Author: I. Hrivnacova
5 //
6 // Class AliPrimaryGeneratorAction
7 // -------------------------------
8 // Class that defines primary generator action. 
9 // Available primary generators (AliPrimaryGenerator):
10 //  kGun,               // gun (can be set interactively) 
11 //  kGeantino,          // geantino with random direction
12 //  kChargedGeantino,   // chargedgeantino with random direction
13 //  kAliGenerator       // AliGenerator from AliRoot
14
15 #ifndef ALI_PRIMARY_GENERATOR_ACTION_H
16 #define ALI_PRIMARY_GENERATOR_ACTION_H
17
18 #include "AliVerbose.h"
19 #include "AliPrimaryGenerator.h"
20 #include "AliPrimaryGeneratorMessenger.h"
21 #include "AliParticleGun.h"
22
23 #include <G4VUserPrimaryGeneratorAction.hh>
24 #include <globals.hh>
25
26 class AliParticleGun;
27 class G4ParticleGun;
28 class G4Event;
29
30 class AliPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction,
31                                   public AliVerbose
32 {
33   public:
34     AliPrimaryGeneratorAction();
35     virtual ~AliPrimaryGeneratorAction();
36
37     // methods
38     virtual void GeneratePrimaries(G4Event* event);
39     
40     // set methods
41     void SetGenerator(AliPrimaryGenerator generator);
42     void SetNofGunParticles(G4int nofParticles);
43
44     // get methods
45     AliPrimaryGenerator GetGenerator() const;
46     G4int GetNofGunParticles() const;
47     
48   private:
49     // methods
50     void ConstructGenerator();
51     void ConstructGeantinoGenerator(G4bool isCharged);
52     void ConstructAliGenerator();
53     void GenerateAliGeneratorPrimaries(G4Event* event);
54     
55     // data members
56     AliPrimaryGenerator  fGenerator;       //selected AliPrimaryGenerator
57     G4int                fNofGunParticles; //number of gun particles
58     AliParticleGun       fParticleGun;     //AliParticleGun
59     AliPrimaryGeneratorMessenger  fMessenger; //messenger
60 };
61
62 // inline methods
63
64 inline AliPrimaryGenerator AliPrimaryGeneratorAction::GetGenerator() const
65 { return fGenerator; }
66
67 inline G4int AliPrimaryGeneratorAction::GetNofGunParticles() const
68 { return fNofGunParticles; }
69
70 #endif //ALI_PRIMARY_GENERATOR_ACTION_H
71
72