PWGJE
[u/mrichter/AliRoot.git] / EVGEN / AliDecayerExodus.h
1 #ifndef ALIDECAYEREXODUS_H
2 #define ALIDECAYEREXODUS_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  *  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 //---------------------------------------------------------------------------------------------------
10 //                                 
11 // Generate electron-pair mass distributions for Dalitz decays according
12 // to the Kroll-Wada parametrization: N. Kroll, W. Wada: Phys. Rev 98(1955)1355
13 // and generate electron-pair mass distributions for resonances according
14 // to the Gounaris-Sakurai parametrization: G.J. Gounaris, J.J. Sakurai: Phys.Rev.Lett. 21(1968)244 
15 //
16 // For the electromagnetic form factor the parameterization from
17 // Lepton-G is used: L.G. Landsberg et al.: Phys. Rep. 128(1985)301
18 //
19 // Ralf Averbeck (R.Averbeck@gsi.de) 
20 // Irem Erdemir  (irem.erdemir@cern.ch)
21 //
22 //---------------------------------------------------------------------------------------------------
23
24
25
26 #include "AliDecayer.h"
27 #include <TLorentzVector.h>
28
29 class TH1F;
30 class TClonesArray;
31
32 class AliDecayerExodus : public AliDecayer
33 {
34  public:
35     AliDecayerExodus();
36     virtual void    Init();
37     virtual void    Decay(Int_t idpart,TLorentzVector* pparent);
38     virtual Int_t   ImportParticles(TClonesArray *particles);
39     virtual void    SetForceDecay(Int_t)                      {;}
40     virtual void    ForceDecay()                              {;}
41     virtual Float_t GetPartialBranchingRatio(Int_t /*ipart*/) {return -1;}
42     virtual Float_t GetLifetime(Int_t /*kf*/)                 {return -1;}
43     virtual void    ReadDecayTable()                          {;}
44     
45     virtual TH1F*   ElectronPairMassHistoPion()          {return  fEPMassPion;}
46     virtual TH1F*   ElectronPairMassHistoEta()           {return  fEPMassEta;}
47     virtual TH1F*   ElectronPairMassHistoEtaPrime()      {return  fEPMassEtaPrime;}
48     virtual TH1F*   ElectronPairMassHistoRho()           {return  fEPMassRho;}
49     virtual TH1F*   ElectronPairMassHistoOmega()         {return  fEPMassOmega;}
50     virtual TH1F*   ElectronPairMassHistoOmegaDalitz()   {return  fEPMassOmegaDalitz;}
51     virtual TH1F*   ElectronPairMassHistoPhi()           {return  fEPMassPhi;}
52     virtual TH1F*   ElectronPairMassHistoPhiDalitz()     {return  fEPMassPhiDalitz;}
53     virtual TH1F*   ElectronPairMassHistoJPsi()          {return  fEPMassJPsi;}
54
55     virtual void    Decay(TClonesArray* array);
56
57     virtual const   TLorentzVector* Products_pion()         const {return fProducts_pion;}
58     virtual const   TLorentzVector* Products_eta()          const {return fProducts_eta;}
59     virtual const   TLorentzVector* Products_etaprime()     const {return fProducts_etaprime;}
60     virtual const   TLorentzVector* Products_rho()          const {return fProducts_rho;}
61     virtual const   TLorentzVector* Products_omega()        const {return fProducts_omega;}
62     virtual const   TLorentzVector* Products_omega_dalitz() const {return fProducts_omega_dalitz;}
63     virtual const   TLorentzVector* Products_phi()          const {return fProducts_phi;}
64     virtual const   TLorentzVector* Products_phi_dalitz()   const {return fProducts_phi_dalitz;}
65     virtual const   TLorentzVector* Products_jpsi()         const {return fProducts_jpsi;}
66
67     virtual void    Copy(TObject&) const;
68
69  protected:
70     // Histograms for electron pair mass
71     TH1F*         fEPMassPion;          
72     TH1F*         fEPMassEta;       
73     TH1F*         fEPMassEtaPrime;
74     TH1F*         fEPMassRho;
75     TH1F*         fEPMassOmega;
76     TH1F*         fEPMassOmegaDalitz;
77     TH1F*         fEPMassPhi;
78     TH1F*         fEPMassPhiDalitz;
79     TH1F*         fEPMassJPsi;
80      
81     // Decay products
82     TLorentzVector  fProducts_pion[3];  
83     TLorentzVector  fProducts_eta[3];  
84     TLorentzVector  fProducts_etaprime[3];
85     TLorentzVector  fProducts_rho[2];
86     TLorentzVector  fProducts_omega[2];
87     TLorentzVector  fProducts_omega_dalitz[3];
88     TLorentzVector  fProducts_phi[2];
89     TLorentzVector  fProducts_phi_dalitz[3];
90     TLorentzVector  fProducts_jpsi[2];
91
92     Bool_t fInit;
93
94  private:
95     Double_t GounarisSakurai(Float_t mass, Double_t vmass, Double_t vwidth, Double_t emass);
96     Double_t Lorentz(Float_t mass, Double_t vmass, Double_t vwidth); 
97     virtual void    Rot(Double_t pin[3], Double_t pout[3],
98                         Double_t costheta, Double_t sintheta,
99                         Double_t cosphi, Double_t sinphi) const;
100     AliDecayerExodus(const AliDecayerExodus &decayer);
101     AliDecayerExodus & operator=(const AliDecayerExodus & rhs);
102
103
104     ClassDef(AliDecayerExodus, 1) // AliDecayer implementation using Exodus  
105 };
106 #endif
107
108
109
110
111
112
113