79 G4double sint = std::sqrt((1.-cost)*(1.+cost));
89 parent_polarization.
setX(px);
90 parent_polarization.
setY(py);
91 parent_polarization.
setZ(pz);
96 if (decaytable !=
nullptr) {
106 return pParticleChangeForDecay;
122 G4double sint = std::sqrt((1.-cost)*(1.+cost));
132 parent_polarization.
setX(px);
133 parent_polarization.
setY(py);
134 parent_polarization.
setZ(pz);
139 GetLogicalVolume()->GetFieldManager();
140 if (fieldMgr ==
nullptr) {
145 if (fFieldPropagator) fieldMgr =
149 const G4Field* field =
nullptr;
152 if ( field !=
nullptr ) {
159 G4double fieldValue[6] ={ 0., 0., 0., 0., 0., 0.};
160 field -> GetFieldValue(point,fieldValue);
164 if (
B.mag2() > 0.) parent_polarization =
172 if ( decaytable !=
nullptr) {
182 return pParticleChangeForDecay;
195 G4double omega = -(q*s_omega)*(1.+a) * Bnorm;
197 G4double rotationangle = deltatime * omega;
207 G4double normspin = std::sqrt(Spin*Spin);
208 G4double normnewspin = std::sqrt(newSpin*newSpin);
217 G4cout <<
"Checked norms : " << normspin <<
" " << normnewspin <<
G4endl;
228 <<
": Decay of particles considering parent polarization \n"
229 <<
"kinematics of daughters are dertermined by DecayChannels \n";
G4double B(G4double temperature)
static constexpr double kilogauss
static constexpr double twopi
static constexpr double rad
static constexpr double s
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cout
G4VDecayChannel * GetDecayChannel(G4int index) const
G4DecayWithSpin(const G4String &processName="DecayWithSpin")
virtual void ProcessDescription(std::ostream &outFile) const override
virtual G4VParticleChange * AtRestDoIt(const G4Track &aTrack, const G4Step &aStep) override
G4ThreeVector Spin_Precession(const G4Step &aStep, G4ThreeVector B, G4double deltatime)
virtual G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep) override
virtual ~G4DecayWithSpin()
virtual G4VParticleChange * DecayIt(const G4Track &aTrack, const G4Step &aStep)
G4double fRemainderLifeTime
G4ParticleChangeForDecay fParticleChangeForDecay
G4ParticleDefinition * GetDefinition() const
const G4ThreeVector & GetPolarization() const
const G4Field * GetDetectorField() const
void ProposePolarization(G4double Px, G4double Py, G4double Pz)
virtual void Initialize(const G4Track &)
G4double GetPDGCharge() const
G4DecayTable * GetDecayTable() const
G4FieldManager * GetCurrentFieldManager()
const G4ThreeVector & GetPosition() const
G4Track * GetTrack() const
G4StepPoint * GetPostStepPoint() const
G4TrackStatus GetTrackStatus() const
G4VPhysicalVolume * GetVolume() const
G4double GetGlobalTime() const
G4ParticleDefinition * GetDefinition() const
const G4DynamicParticle * GetDynamicParticle() const
static G4TransportationManager * GetTransportationManager()
G4PropagatorInField * GetPropagatorInField() const
void SetPolarization(const G4ThreeVector &)
G4int GetVerboseLevel() const
void SetProcessSubType(G4int)
const G4String & GetProcessName() const