ac1f7ae7f1f2ce855bd4f4f39b32821c5055fd79
[u/mrichter/AliRoot.git] / EVGEN / AliDecayerPolarized.h
1 #ifndef ALIDECAYERPOLARIZED_H
2 #define ALIDECAYERPOLARIZED_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 // Class to generate decay products for polarized heavy quarkonia
7
8 #include <TLorentzVector.h>
9 #include <TClonesArray.h>
10 #include <TF1.h>
11
12 #include "AliDecayer.h"
13
14
15 class AliDecayerPolarized : public AliDecayer
16 {
17  public:
18     typedef enum { kNoPol = 0, kColSop = 1, kHelicity = 2} Polar_t;
19     typedef enum { kElectron = 1, kMuon = 2} FinState_t;
20   AliDecayerPolarized();
21   AliDecayerPolarized(Double_t alpha, Polar_t systref, FinState_t decprod);
22   AliDecayerPolarized(const AliDecayerPolarized &decayer):AliDecayer(decayer)
23       {decayer.Copy(*this);}
24   virtual ~AliDecayerPolarized();
25   void SetPolDec(Double_t alpha=0) {fAlpha=alpha;}
26   void SetPolRefSys(Polar_t systref=kColSop) {fSystRef=systref;}
27   void SetDecProd(FinState_t decprod=kMuon) {fDecProd=decprod;}
28   virtual void  Init(){;}
29   virtual void  Decay(Int_t ipart, TLorentzVector *p);
30   virtual Int_t ImportParticles(TClonesArray *part);
31   // The following methods are dummy
32   virtual void    SetForceDecay(Int_t type);
33   virtual void    ForceDecay();
34   virtual Float_t GetPartialBranchingRatio(Int_t ipart);
35   virtual Float_t GetLifetime(Int_t kf);
36   virtual void    ReadDecayTable();
37  private:
38   void  Copy(TObject &decayer) const;
39   AliDecayerPolarized &operator=(const AliDecayerPolarized &decayer) 
40       {decayer.Copy(*this);return(*this);}
41     
42  protected:
43   Double_t fAlpha;       // Polarization parameter
44   Polar_t fSystRef;      // Reference system for polarization
45   FinState_t fDecProd;   // Choice of decay products
46   TF1 *fPol;             // ! Angular distribution for decay products
47   TParticle *fMother;    // ! Particle that has to be decayed
48   TParticle *fDaughter1; // ! Decay product no. 1
49   TParticle *fDaughter2; // ! Decay product no. 2
50   
51   ClassDef(AliDecayerPolarized,1) // Polarized 2-body quarkonium decay
52 };
53 #endif
54
55