]> git.uio.no Git - u/mrichter/AliRoot.git/blob - AliGeant4/AliGunParticle.h
added Configure(); corrected Construct()
[u/mrichter/AliRoot.git] / AliGeant4 / AliGunParticle.h
1 // $Id$
2 // Category: event
3 //
4 // Data type class that stores properties of a gun particle.
5 // Used in AliParticleGun.
6
7 #ifndef ALI_GUN_PARTICLE_H
8 #define ALI_GUN_PARTICLE_H
9
10 #include <G4ParticleMomentum.hh>
11 #include <G4ParticleDefinition.hh>
12 #include <G4ThreeVector.hh>
13 #include <globals.hh>
14
15 class AliGunParticle
16 {
17   public:
18     AliGunParticle();
19     AliGunParticle(G4ParticleDefinition* particleDef, G4ParticleMomentum momentum, 
20        G4ThreeVector position, G4double time, G4ThreeVector polarization );
21     AliGunParticle( G4ParticleDefinition* particleDef, G4ParticleMomentum momentumDir, 
22       G4double kinEnergy, G4ThreeVector position, G4double time, 
23       G4ThreeVector polarization );
24     AliGunParticle(const AliGunParticle& right);
25     ~AliGunParticle();     
26
27     // operators
28     AliGunParticle& operator=(const AliGunParticle& right);
29     G4int operator==(const AliGunParticle& right) const;
30     G4int operator!=(const AliGunParticle& right) const;
31
32     // methods
33     void Print() const;  
34
35     // set methods
36     void SetParticleDefinition(G4ParticleDefinition* particleDef);
37     void SetMomentum(G4ParticleMomentum  momentum);
38     void SetPosition(G4ThreeVector position);
39     void SetTime(G4double time);
40     void SetPolarization(G4ThreeVector polarization);
41     void SetMomentumDirection(G4ParticleMomentum  momentumDir);
42     void SetKineticEnergy(G4double kinEnergy);
43       
44     // get methods  
45     G4ParticleDefinition* GetParticleDefinition() const;
46     G4ParticleMomentum GetMomentum() const;
47     G4ThreeVector GetPosition() const;
48     G4double GetTime() const;
49     G4ThreeVector GetPolarization() const;
50     G4ParticleMomentum GetMomentumDirection() const;
51     G4double GetKineticEnergy() const;
52                          
53   private:
54     // data members
55     G4ParticleDefinition*  fParticleDefinition; //G4ParticleDefinition
56     G4ParticleMomentum     fParticleMomentum;   //G4ParticleMomentum
57     G4ThreeVector          fPosition;           //position
58     G4double               fTime;               //time
59     G4ThreeVector          fPolarization;       //polarization
60 };
61
62 // inline methods
63
64 inline void AliGunParticle::SetParticleDefinition(G4ParticleDefinition* particleDef)
65 { fParticleDefinition = particleDef; }
66
67 inline void AliGunParticle::SetMomentum(G4ParticleMomentum  momentum)
68 { fParticleMomentum = momentum; }
69
70 inline void AliGunParticle::SetPosition(G4ThreeVector position)
71 { fPosition = position; }
72
73 inline void AliGunParticle::SetTime(G4double time)
74 { fTime = time; }
75
76 inline void AliGunParticle::SetPolarization(G4ThreeVector polarization)
77 { fPolarization = polarization; }
78
79 inline void AliGunParticle::SetMomentumDirection(G4ParticleMomentum  momentumDir)
80 { fParticleMomentum = fParticleMomentum.mag()*momentumDir.unit(); }
81
82 inline G4ParticleDefinition* AliGunParticle::GetParticleDefinition() const
83 { return fParticleDefinition; }
84
85 inline G4ParticleMomentum AliGunParticle::GetMomentum() const
86 { return fParticleMomentum; }
87
88 inline G4ThreeVector AliGunParticle::GetPosition() const
89 { return fPosition; }
90
91 inline G4double AliGunParticle::GetTime() const
92 { return fTime; }
93
94 inline G4ThreeVector AliGunParticle::GetPolarization() const
95 { return fPolarization; }
96
97 inline G4ParticleMomentum AliGunParticle::GetMomentumDirection() const
98 { return fParticleMomentum.unit(); }
99
100 #endif //ALI_GUN_PARTICLE_H   
101    
102