Heavy ion Analysis Libriares
Loading...
Searching...
No Matches
Decay.h
1/*
2 * Decay.h
3 *
4 * Created on: 21 gru 2023
5 * Author: Daniel Wielanek
6 * E-mail: daniel.wielanek@gmail.com
7 * Warsaw University of Technology, Faculty of Physics
8 */
9#ifndef HAL_FEATURES_PHYS_DECAY_H_
10#define HAL_FEATURES_PHYS_DECAY_H_
11
12#include <TObject.h>
13#include <vector>
14
15
16namespace Hal {
17 class McTrack;
18 class McEvent;
22 class DecayChannel : public TObject {
23 const Int_t fDaughters;
24 std::vector<Int_t> fPdgCodes;
25 std::vector<Double_t> fMass;
26 Double_t fMassThres = {-1};
27 Double_t fBranchRatio;
28
29 public:
36 DecayChannel(Int_t dau1 = 0, Int_t dau2 = 0, Double_t ratio = 0.0);
44 DecayChannel(Int_t dau1, Int_t dau2, Int_t dau3, Double_t ratio);
50 Int_t GetDaughterPdg(Int_t dau) const { return fPdgCodes[dau]; }
55 Int_t GetDaughtersNo() const { return fPdgCodes.size(); }
61 Double_t GetDaughterMass(Int_t dau) const { return fMass[dau]; }
66 Double_t GetBranchingRatio() const { return fBranchRatio; }
71 Double_t GetMassThreshold() const { return fMassThres; }
76 void SetBranchRatio(Double_t x) { fBranchRatio = x; }
77 virtual Bool_t Init();
78 virtual ~DecayChannel() {};
79 ClassDef(DecayChannel, 1)
80 };
84 class Decay : public TObject {
85 std::vector<DecayChannel> fDecayChannels;
86 Double_t fGamma = {0};
87 Bool_t fBreightWigher = {kFALSE};
88 Double_t fMotherPdg = {-1};
89 Double_t fMotherMass = {-1};
90
91 protected:
92 virtual Double_t GetDecayTime(McTrack& mother, Double_t mass) const;
93
94 virtual void Decay2Body(McTrack& mother, std::vector<McTrack*>& daughters, const DecayChannel& channel) const;
95 virtual void Decay3Body(McTrack& mother, std::vector<McTrack*>& daughters, const DecayChannel& channel) const;
96
97 public:
102 Decay(Int_t motherPdg = -1);
107 Int_t GetMotherPdg() const { return fMotherPdg; }
116 virtual Int_t DecayParticle(McTrack& mother, std::vector<McTrack*>& daughters, Bool_t addToEvent = kFALSE) const;
121 void EnableBreightWigner(Bool_t bw = kTRUE) { fBreightWigher = bw; }
126 void SetGamma(Double_t gamma) { fGamma = gamma; };
131 void AddDecayChannel(const DecayChannel& decay) { fDecayChannels.push_back(decay); };
136 virtual Bool_t Init();
137 virtual ~Decay() {};
138 ClassDef(Decay, 1)
139 };
140} // namespace Hal
141
142#endif /* HAL_FEATURES_PHYS_DECAY_H_ */
Int_t GetDaughtersNo() const
Definition Decay.h:55
void SetBranchRatio(Double_t x)
Definition Decay.h:76
Double_t GetBranchingRatio() const
Definition Decay.h:66
DecayChannel(Int_t dau1=0, Int_t dau2=0, Double_t ratio=0.0)
Definition Decay.cxx:27
Double_t GetDaughterMass(Int_t dau) const
Definition Decay.h:61
Int_t GetDaughterPdg(Int_t dau) const
Definition Decay.h:50
Double_t GetMassThreshold() const
Definition Decay.h:71
void EnableBreightWigner(Bool_t bw=kTRUE)
Definition Decay.h:121
void SetGamma(Double_t gamma)
Definition Decay.h:126
virtual Int_t DecayParticle(McTrack &mother, std::vector< McTrack * > &daughters, Bool_t addToEvent=kFALSE) const
Definition Decay.cxx:225
Int_t GetMotherPdg() const
Definition Decay.h:107
Decay(Int_t motherPdg=-1)
Definition Decay.cxx:69
void AddDecayChannel(const DecayChannel &decay)
Definition Decay.h:131
virtual Bool_t Init()
Definition Decay.cxx:260