1+ #ifndef EXODUSDECAYER_H
2+ #define EXODUSDECAYER_H
3+
4+ // Copyright CERN and copyright holders of ALICE O2. This software is
5+ // distributed under the terms of the GNU General Public License v3 (GPL
6+ // Version 3), copied verbatim in the file "COPYING".
7+ //
8+ // See http://alice-o2.web.cern.ch/license for full licensing information.
9+ //
10+ // In applying this license CERN does not waive the privileges and immunities
11+ // granted to it by virtue of its status as an Intergovernmental Organization
12+ // or submit itself to any jurisdiction.
13+
14+ // ---------------------------------------------------------------------------------------------------
15+ //
16+ // Generate electron-pair mass distributions for Dalitz decays according
17+ // to the Kroll-Wada parametrization: N. Kroll, W. Wada: Phys. Rev 98(1955)1355
18+ // and generate electron-pair mass distributions for resonances according
19+ // to the Gounaris-Sakurai parametrization: G.J. Gounaris, J.J. Sakurai: Phys.Rev.Lett. 21(1968)244
20+ //
21+ // For the electromagnetic form factor the parameterization from
22+ // Lepton-G is used: L.G. Landsberg et al.: Phys. Rep. 128(1985)301
23+ //
24+ // Ralf Averbeck ([email protected] ) 25+ // Irem Erdemir ([email protected] )26+ //
27+ // adapted for O2: Daniel Samitz ([email protected] )28+ //
29+ // ---------------------------------------------------------------------------------------------------
30+
31+ #include " TVirtualMCDecayer.h"
32+ #include < TLorentzVector.h>
33+ #include < TF1.h>
34+ #include < TH1.h>
35+ #include " TDatabasePDG.h"
36+
37+ // class TH1F;
38+ // class TClonesArray;
39+
40+ class ExodusDecayer : public TVirtualMCDecayer
41+ {
42+ public:
43+ ExodusDecayer ();
44+ virtual ~ExodusDecayer ();
45+ virtual void Init ();
46+ virtual void Decay (Int_t idpart,TLorentzVector* pparent);
47+ virtual Int_t ImportParticles (TClonesArray *particles) {return -1 ;}
48+ virtual void SetForceDecay (Int_t) {;}
49+ virtual void ForceDecay () {;}
50+ virtual Float_t GetPartialBranchingRatio (Int_t /* ipart*/ ) {return -1 ;}
51+ virtual Float_t GetLifetime (Int_t /* kf*/ ) {return -1 ;}
52+ virtual void ReadDecayTable () {;}
53+
54+ virtual TH1F* ElectronPairMassHistoPion () {return fEPMassPion ;}
55+ virtual TH1F* ElectronPairMassHistoEta () {return fEPMassEta ;}
56+ virtual TH1F* ElectronPairMassHistoEtaPrime () {return fEPMassEtaPrime ;}
57+ virtual TH1F* ElectronPairMassHistoEtaPrime_toOmega () {return fEPMassEtaPrime_toOmega ;}
58+ virtual TH1F* ElectronPairMassHistoRho () {return fEPMassRho ;}
59+ virtual TH1F* ElectronPairMassHistoOmega () {return fEPMassOmega ;}
60+ virtual TH1F* ElectronPairMassHistoOmegaDalitz () {return fEPMassOmegaDalitz ;}
61+ virtual TH1F* ElectronPairMassHistoPhi () {return fEPMassPhi ;}
62+ virtual TH1F* ElectronPairMassHistoPhiDalitz () {return fEPMassPhiDalitz ;}
63+ virtual TH1F* ElectronPairMassHistoPhiDalitz_toPi0 () {return fEPMassPhiDalitz_toPi0 ;}
64+ virtual TH1F* ElectronPairMassHistoJPsi () {return fEPMassJPsi ;}
65+
66+ virtual const TLorentzVector* Products_pion () const {return fProducts_pion ;}
67+ virtual const TLorentzVector* Products_eta () const {return fProducts_eta ;}
68+ virtual const TLorentzVector* Products_etaprime () const {return fProducts_etaprime ;}
69+ virtual const TLorentzVector* Products_etaprime_toOmega () const {return fProducts_etaprime_toOmega ;}
70+ virtual const TLorentzVector* Products_rho () const {return fProducts_rho ;}
71+ virtual const TLorentzVector* Products_omega () const {return fProducts_omega ;}
72+ virtual const TLorentzVector* Products_omega_dalitz () const {return fProducts_omega_dalitz ;}
73+ virtual const TLorentzVector* Products_phi () const {return fProducts_phi ;}
74+ virtual const TLorentzVector* Products_phi_dalitz () const {return fProducts_phi_dalitz ;}
75+ virtual const TLorentzVector* Products_phi_dalitz_toPi0 () const {return fProducts_phi_dalitz_toPi0 ;}
76+ virtual const TLorentzVector* Products_jpsi () const {return fProducts_jpsi ;}
77+
78+ protected:
79+ // Histograms for electron pair mass
80+ TH1F* fEPMassPion ;
81+ TH1F* fEPMassEta ;
82+ TH1F* fEPMassEtaPrime ;
83+ TH1F* fEPMassEtaPrime_toOmega ;
84+ TH1F* fEPMassRho ;
85+ TH1F* fEPMassOmega ;
86+ TH1F* fEPMassOmegaDalitz ;
87+ TH1F* fEPMassPhi ;
88+ TH1F* fEPMassPhiDalitz ;
89+ TH1F* fEPMassPhiDalitz_toPi0 ;
90+ TH1F* fEPMassJPsi ;
91+
92+ TF1* fPol ;
93+
94+ // Decay products
95+ TLorentzVector fProducts_pion [3 ];
96+ TLorentzVector fProducts_eta [3 ];
97+ TLorentzVector fProducts_etaprime [3 ];
98+ TLorentzVector fProducts_etaprime_toOmega [3 ];
99+ TLorentzVector fProducts_rho [2 ];
100+ TLorentzVector fProducts_omega [2 ];
101+ TLorentzVector fProducts_omega_dalitz [3 ];
102+ TLorentzVector fProducts_phi [2 ];
103+ TLorentzVector fProducts_phi_dalitz [3 ];
104+ TLorentzVector fProducts_phi_dalitz_toPi0 [3 ];
105+ TLorentzVector fProducts_jpsi [2 ];
106+
107+
108+ Bool_t fInit ;
109+
110+ private:
111+ Double_t GounarisSakurai (Float_t mass, Double_t vmass, Double_t vwidth, Double_t emass);
112+ Double_t RhoShapeFromNA60 (Float_t mass, Double_t vmass, Double_t vwidth, Double_t emass);
113+ Double_t Lorentz (Float_t mass, Double_t vmass, Double_t vwidth);
114+
115+ ClassDef (ExodusDecayer, 1 )
116+ };
117+ #endif
0 commit comments