00001 #ifndef MUSRATRESTSPINROTATION_H 00002 #define MUSRATRESTSPINROTATION_H 1 00003 00004 #include "G4VRestProcess.hh" 00005 #include "G4DynamicParticle.hh" 00006 #include "G4MagneticField.hh" 00007 #include "G4ParticleTypes.hh" 00008 #include "globals.hh" 00009 #include "G4VParticleChange.hh" 00010 #include "G4ios.hh" 00011 #include "G4ForceCondition.hh" 00012 #include "G4ParticleChangeForTransport.hh" 00013 #include "musrParticleChangeForSR.hh" 00014 class musrAtRestSpinRotation : public G4VRestProcess 00015 { 00016 public: 00017 musrAtRestSpinRotation(const G4String& processName = "SpinRotationAtRest" ); 00018 musrAtRestSpinRotation(G4VRestProcess& ); 00019 00020 virtual ~musrAtRestSpinRotation(); 00021 00022 static musrAtRestSpinRotation* GetInstance(); 00023 private: 00024 static musrAtRestSpinRotation* pointer; 00025 00026 public: 00027 G4VParticleChange* AtRestDoIt(const G4Track& theTrack, const G4Step& theStep); 00028 00029 // G4Track 00030 void RotateSpin(const G4Step&, G4ThreeVector, G4double); 00031 00032 G4double point[4]; 00033 G4double B[3], rotation_angle; 00034 00035 G4double itime, ftime, deltatime; 00036 G4ThreeVector SpinDirection; 00037 00038 00039 G4ParticleChange thePParticleChange; 00040 G4VParticleChange theVParticleChange; 00041 G4ParticleChangeForTransport theTParticleChange; 00042 musrParticleChangeForSR theParticleChange; 00043 const G4Field *mfield; 00044 00045 inline G4double GetMeanLifeTime(const G4Track&, G4ForceCondition* condition) 00046 { 00047 *condition = Forced; 00048 return DBL_MAX; 00049 } 00050 G4ThreeVector polar; 00051 00052 00053 00054 }; 00055 #endif
1.4.6