File indexing completed on 2025-02-23 09:21:58
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 #ifndef MOLECULAR_ELLIPTICAL_CHROMOSOME_HH
0031 #define MOLECULAR_ELLIPTICAL_CHROMOSOME_HH
0032
0033 #include "VirtualChromosome.hh"
0034
0035 #include "G4RotationMatrix.hh"
0036 #include "G4ThreeVector.hh"
0037 #include "globals.hh"
0038
0039
0040
0041 class EllipticalChromosome : public VirtualChromosome
0042 {
0043 public:
0044 EllipticalChromosome(const G4String&, const G4ThreeVector&, const G4double&, const G4double&,
0045 const G4double&);
0046
0047 EllipticalChromosome(const G4String&, const G4ThreeVector&, const G4double&, const G4double&,
0048 const G4double&, const G4RotationMatrix&);
0049
0050 ~EllipticalChromosome() override;
0051
0052 G4bool PointInChromosome(G4ThreeVector const& position) override;
0053
0054 G4ThreeVector RandomPointInChromosome() override;
0055
0056 G4String GetShape() override { return fShape; };
0057 static const G4String fShape;
0058
0059 void Print() override
0060 {
0061 G4cout << "type: " << fShape << G4endl;
0062 G4cout << "semi-x: " << fSemiX << G4endl;
0063 G4cout << "semi-y: " << fSemiY << G4endl;
0064 G4cout << "semi-z: " << fSemiZ << G4endl;
0065 G4cout << "center: " << fCenter << G4endl;
0066 G4cout << "rotation: " << fRotation.getPhi() << " " << fRotation.getTheta() << " "
0067 << fRotation.getPhi() << G4endl;
0068 }
0069
0070 void SetRotation(const G4RotationMatrix& rot)
0071 {
0072 fRotation = rot;
0073 fInverseRotation = fRotation.inverse();
0074 };
0075
0076 G4RotationMatrix GetRotation() const { return fRotation; };
0077
0078 G4ThreeVector GetPosition() const { return fCenter; };
0079
0080 G4double GetSemiX() const { return fSemiX; };
0081
0082 G4double GetSemiY() const { return fSemiY; };
0083
0084 G4double GetSemiZ() const { return fSemiZ; };
0085
0086 private:
0087 G4ThreeVector fCenter;
0088 G4double fSemiX, fSemiY, fSemiZ;
0089 G4RotationMatrix fRotation, fInverseRotation;
0090 };
0091
0092
0093
0094 #endif