KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVFissionKinematics.cpp
1//Created by KVClassFactory on Mon May 2 14:00:47 2016
2//Author: John Frankland,,,
3
4#include "KVFissionKinematics.h"
5
6#include <KVPosition.h>
7
9
10
11
18
20 : KVBase(), fFission(2), fMother(fis), fDaughter(Z1, A1)
21{
22 // Initialize fission kinematics calculation
23 //
24 // 'fis' is the fissioning nucleus, we take into account its kinematics
25 // KVFissionKinematics(fis); // symmetric fission
26 // KVFissionKinematics(fis, Z1); // specify Z of one fission fragment, masses calculated from N/Z
27 // KVFissionKinematics(fis, Z1, A1); // specify Z & A of one fission fragment
28
29 if (!Z1) {
30 // set daughter to half of mother
31 fDaughter.SetZandA(fis.GetZ() / 2, fis.GetA() / 2);
32 }
33 else if (!A1) {
34 // mass of daughter not given. use N/Z ratio of mother.
35 fDaughter.SetN(Z1 * fMother.GetNsurZ());
36 }
37}
38
39
40
43
45{
46 // Generate a fission event
47
49
50 KVNucleus* ff1, *ff2;
51 (ff1 = fFission.AddParticle())->SetZandA(fDaughter.GetZ(), fDaughter.GetA());
52 (ff2 = fFission.AddParticle())->SetZandA(fMother.GetZ() - fDaughter.GetZ(), fMother.GetA() - fDaughter.GetA());
53
54 Double_t vrel = ff1->GetFissionVelocity(ff2);
55 Double_t mu = ff1->GetMass() * ff2->GetMass() / (ff1->GetMass() + ff2->GetMass());
56
57 KVPosition pp(0, 180, 0, 360);
58 TVector3 fis_axis = pp.GetRandomDirection("isotropic");
59 ff1->SetVelocity((mu * vrel / ff1->GetMass())*fis_axis);
60 ff2->SetVelocity((-mu * vrel / ff2->GetMass())*fis_axis);
61
62 if (fMother.GetVelocity().Mag2() > 0.) {
63 // boost to frame of fissioning nucleus
65 ff1->SetVelocity(ff1->GetFrame("lab")->GetVelocity());
66 ff2->SetVelocity(ff2->GetFrame("lab")->GetVelocity());
67 }
68
69 return &fFission;
70}
71
72
73
int Int_t
double Double_t
Base class for KaliVeda framework.
Definition KVBase.h:142
void Clear(Option_t *opt="")
Definition KVEvent.h:238
Simple calculation of two-body decay.
const KVSimEvent * Generate()
Generate a fission event.
KVSimEvent fFission
calculated fission event
KVNucleus fDaughter
one of the fission fragments
KVNucleus fMother
mother nucleus
Description of properties and kinematics of atomic nuclei.
Definition KVNucleus.h:126
Int_t GetA() const
Double_t GetFissionVelocity(KVNucleus *nuc=0, Int_t formula=kDefaultFormula)
Int_t GetZ() const
Return the number of proton / atomic number.
void SetVelocity(const TVector3 &)
Set velocity of particle (in cm/ns units)
KVParticle const * GetFrame(const Char_t *frame, Bool_t warn_and_return_null_if_unknown=kTRUE) const
Double_t GetMass() const
Definition KVParticle.h:574
TVector3 GetVelocity() const
returns velocity vector in cm/ns units
Base class used for handling geometry in a multidetector array.
Definition KVPosition.h:91
virtual TVector3 GetRandomDirection(Option_t *t="isotropic")
Container class for simulated nuclei, KVSimNucleus.
Definition KVSimEvent.h:22
Particle * AddParticle()
void SetFrame(const Char_t *frame, const KVFrameTransform &ft)
Double_t Mag2() const
ClassImp(TPyArg)