1 #ifndef __RAT_DecayChain__
2 #define __RAT_DecayChain__
7 #include <CLHEP/Vector/LorentzVector.h>
9 #include <RAT/BetaFunction.hh>
18 static const double N_A = 6.022e+23;
25 CLHEP::HepLorentzVector vector;
35 void AddElement(
const std::string Name,
int iLocation = 1,
int iDecay = DecayBeta,
double tau = 1.,
double wt = 1.);
36 void RemoveElement(
int iBranch);
38 void SetElementName(
int iBranch,
const std::string Name);
39 void SetElementNumber(
int iBranch);
40 void SetElementBranch(
int iBranch,
int iLocation);
41 void SetElementWt(
int iBranch,
double wt = 1.);
42 void SetElementDecay(
int iBranch,
int iDecay);
43 void SetLifetime(
int iBranch,
double tau);
45 bool ReadInputFile(
const std::string dName);
47 const std::string GetElementName(
int iBranch);
48 int GetElementBranch(
int iBranch);
49 int GetElementDecay(
int iBranch);
50 double GetElementWt(
int iBranch);
51 double GetLifetime(
int iBranch);
52 inline void SetInMiddleChain(
bool inMiddle =
false) { fInMiddleChain = inMiddle; };
53 inline void SetAlphaDecayStart(
bool alphaStart =
false) { fAlphaDecayStart = alphaStart; };
54 inline void SetGammaDecayStart(
bool gammaStart =
false) { fGammaDecayStart = gammaStart; };
56 void GenerateDecayElement(
int iBranch);
57 void GenerateDecayElement(
const std::string iElement);
59 void GenerateFullChain(
const std::string iElement);
60 void GenerateFullChain(
int iBranch = 0);
62 void GenerateDecayChain(
const std::string iNameStart);
63 void GenerateDecayChain(
int iStart = 0);
65 const std::string GetParentName(
int iEvent);
66 const std::string GetDaughterName(
int iEvent);
67 int GetEventID(
int iEvent);
68 double GetEventEnergy(
int iEvent);
69 double GetEventTime(
int iEvent);
71 bool CheckParentMatch(
int iEvent);
73 void SetDecaySequence();
74 void SetElementProb(
int iBranch,
double prob);
75 void SetEventTime(
int iEvent,
double time);
76 double GetElementProb(
int iBranch);
78 int CheckChainLevel(
int iElement);
79 bool CheckInChain(
int iElement,
int jElement);
81 void SetParticleInfo(
int iTag,
int jTag,
int kTag);
83 ParticleInfo_t AddDaughterInfo(
int iTag);
84 ParticleInfo_t GetParticleInfo(
int iEvent);
86 double GetRandomNumber(
double rmin = 0.,
double rmax = 1.);
88 inline void SetVerbose(
bool iSet =
false) { isVerbose = iSet; };
89 inline void SetFileName(
const std::string Name) { inputFileName = Name; };
90 inline void SetChainName(
const std::string Name) { ChainName = Name; };
91 inline void SetEquilibrium(
bool iEq =
true) { isEquilibrium = iEq; };
92 inline void SelectParent(
const std::string iElement =
"ALL") { oneParent = iElement; };
93 inline void SetNGenerated(
int nP) { NumberOfParticles = nP; };
94 inline void IncludeDaughter(
bool iSelect =
true) { CreateDaughter = iSelect; };
96 inline bool GetEquilibrium() {
return isEquilibrium; };
98 inline int GetNElements() {
return NumberOfElements; };
99 inline int GetElementNumber() {
return ElementNumber; };
100 inline int GetNGenerated() {
return NumberOfParticles; };
102 inline const std::string GetFileName() {
return inputFileName; };
103 inline const std::string GetChainName() {
return ChainName; };
106 inline void SetParentName(
int iParent,
const std::string name) { ParentName[iParent] = name; };
107 inline void SetDaughterName(
int iDaughter,
const std::string name) { DaughterName[iDaughter] = name; };
113 bool fAlphaDecayStart;
114 bool fGammaDecayStart;
116 std::string ChainName;
118 int NumberOfElements;
120 std::map<size_t, std::string> ElementName;
121 std::map<size_t, int> ElementBranch;
122 std::map<size_t, int> ElementDecay;
123 std::map<size_t, double> ElementWeight;
124 std::map<size_t, double> ElementLife;
125 std::map<size_t, double> ElementProb;
128 std::map<size_t, BetaFunction *> Element;
132 std::string inputFileName;
133 std::string oneParent;
135 int NumberOfParticles;
136 std::map<size_t, std::string> ParentName;
137 std::map<size_t, std::string> DaughterName;
138 std::map<size_t, int> ParticleID;
139 std::map<size_t, double> ParticleEnergy;
140 std::map<size_t, double> ParticleTime;
142 std::map<size_t, ParticleInfo_t> theParticleInfo;
Definition: DecayChain.hh:20
Definition: CCCrossSecMessenger.hh:29
Definition: DecayChain.hh:23