00001 #ifndef musrMuonDecayChannel_h
00002 #define musrMuonDecayChannel_h 1
00003
00004
00005 #include "G4ios.hh"
00006 #include "globals.hh"
00007 #include "G4VDecayChannel.hh"
00008 #include "G4DynamicParticle.hh"
00009 #include "Randomize.hh"
00010 #include "G4ThreeVector.hh"
00011 #include "G4Transform3D.hh"
00012
00013 class musrMuonDecayChannel : public G4VDecayChannel
00014 {
00015
00016 public:
00017
00018 musrMuonDecayChannel(const G4String& theParentName,
00019 G4double theBR);
00020
00021 ~musrMuonDecayChannel();
00022
00023 static musrMuonDecayChannel* pointer;
00024 static musrMuonDecayChannel* GetInstance();
00025
00026
00027 void finalize();
00028
00029 public:
00030 virtual G4DecayProducts *DecayIt(G4double);
00031 HepRandomEngine* theEngine;
00032 G4ThreeVector polarization, emomdir;
00033
00034 G4double alpha,sinalpha, cosalpha, delta, sindelta, cosdelta;
00035 G4double costheta, sintheta, phi, sinphi, cosphi, theta;
00036
00037 inline G4double GetTheta(){return theta;};
00038 inline G4double GetPhi(){return phi;};
00039 inline G4ThreeVector GetPolarization(){return polarization;};
00040 inline void SetPolarization(G4ThreeVector polar){polarization=polar;};
00041
00042
00043
00044 G4DecayProducts *DecayItPolarized(G4double,G4ThreeVector polar);
00045
00046
00047 private:
00048
00049
00050 };
00051
00052 #endif