@@ -42,6 +42,7 @@ class TRestGeant4ParticleSource : public TRestGeant4Particle, public TRestMetada
4242 size_t fAngularDistributionFormulaNPoints = 500 ;
4343 TF1* fAngularDistributionFunction = nullptr ;
4444 TVector2 fAngularDistributionRange ;
45+ double fAngularDistributionIsotropicConeHalfAngle = 0 ;
4546
4647 TString fEnergyDistributionType = " Mono" ;
4748 TString fEnergyDistributionFilename ;
@@ -65,14 +66,7 @@ class TRestGeant4ParticleSource : public TRestGeant4Particle, public TRestMetada
6566 virtual void InitFromConfigFile () override ;
6667 static TRestGeant4ParticleSource* instantiate (std::string model = " " );
6768
68- inline TVector3 GetDirection () const {
69- if (fDirection .Mag () <= 0 ) {
70- std::cout << " TRestGeant4ParticleSource::GetDirection: "
71- << " Direction cannot be the zero vector" << std::endl;
72- exit (1 );
73- }
74- return fDirection ;
75- }
69+ TVector3 GetDirection () const ;
7670
7771 inline TString GetEnergyDistributionType () const { return fEnergyDistributionType ; }
7872 inline TVector2 GetEnergyDistributionRange () const { return fEnergyDistributionRange ; }
@@ -91,6 +85,9 @@ class TRestGeant4ParticleSource : public TRestGeant4Particle, public TRestMetada
9185 inline TString GetAngularDistributionFilename () const { return fAngularDistributionFilename ; }
9286 inline TString GetAngularDistributionNameInFile () const { return fAngularDistributionNameInFile ; }
9387 inline const TF1* GetAngularDistributionFunction () const { return fAngularDistributionFunction ; }
88+ inline double GetAngularDistributionIsotropicConeHalfAngle () const {
89+ return fAngularDistributionIsotropicConeHalfAngle ;
90+ }
9491
9592 inline const TF2* GetEnergyAndAngularDistributionFunction () const {
9693 return fEnergyAndAngularDistributionFunction ;
@@ -100,6 +97,16 @@ class TRestGeant4ParticleSource : public TRestGeant4Particle, public TRestMetada
10097
10198 inline std::vector<TRestGeant4Particle> GetParticles () const { return fParticles ; }
10299
100+ inline void SetAngularDistributionIsotropicConeHalfAngle (double angle) {
101+ if (angle < 0 || angle > TMath::Pi ()) {
102+ std::cerr << " TRestGeant4ParticleSource::SetAngularDistributionIsotropicConeHalfAngle: "
103+ " angle must be between 0 and Pi radians"
104+ << std::endl;
105+ exit (1 );
106+ }
107+ fAngularDistributionIsotropicConeHalfAngle = angle;
108+ }
109+
103110 inline void SetAngularDistributionType (const TString& type) {
104111 fAngularDistributionType = TRestGeant4PrimaryGeneratorTypes::AngularDistributionTypesToString (
105112 TRestGeant4PrimaryGeneratorTypes::StringToAngularDistributionTypes (type.Data ()));
@@ -201,6 +208,6 @@ class TRestGeant4ParticleSource : public TRestGeant4Particle, public TRestMetada
201208 // Destructor
202209 virtual ~TRestGeant4ParticleSource ();
203210
204- ClassDefOverride (TRestGeant4ParticleSource, 5 );
211+ ClassDefOverride (TRestGeant4ParticleSource, 6 );
205212};
206213#endif
0 commit comments