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