]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/AliAODConversionMother.h
c44da85856b2b2602fec088662228d6e9004672b
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliAODConversionMother.h
1 #ifndef ALIAODCONVERSIONMOTHER_H
2 #define ALIAODCONVERSIONMOTHER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 ////////////////////////////////////////////////
7 //--------------------------------------------- 
8 // Class reconstructing the mother particle of conversion gammas
9 //---------------------------------------------
10 ////////////////////////////////////////////////
11
12 //Author Daniel Lohner (Daniel.Lohner@cern.ch)
13
14 #include "TLorentzVector.h"
15 #include "AliAODConversionParticle.h"
16 #include "AliAODConversionPhoton.h"
17 #include "AliKFConversionMother.h"
18 #include "AliKFParticle.h"
19
20 class AliAODConversionMother : public AliAODConversionParticle{
21
22  public: 
23
24      //Default Constructor
25      AliAODConversionMother();
26
27      // Constructor for ESD to AOD Conversion
28      AliAODConversionMother(AliKFConversionMother *kf);
29
30      //Constructor Decay Mother Particle
31      AliAODConversionMother(AliAODConversionPhoton *y1,AliAODConversionPhoton *y2);
32          // Constructor Mother particle from one photon and one meson
33          AliAODConversionMother(AliAODConversionMother *meson, AliAODConversionPhoton *gamma);
34
35          
36      //Destructor
37      virtual ~AliAODConversionMother();
38
39      // MC
40
41      void SetMCLabel(Int_t i){fMCLabel=i;}
42      Int_t GetMCLabel(){return fMCLabel;}
43      TParticle *GetMCParticle(AliStack *fMCStack);
44      Bool_t IsTrueMeson(AliStack *fMCStack,Int_t pdgcode);
45
46      ///Set the Chi2 of reconstructed conversion gamma
47      void SetChi2(Float_t chi2) {fChi2 = chi2;}
48
49      //Get the Chi2 of particle
50      Float_t Chi2() const {return fChi2;}
51
52      ///Set track or MC labels
53      void SetLabel1(Int_t label){fLabel[0] = label;}
54      void SetLabel2(Int_t label){fLabel[1] = label;}
55      void SetLabel3(Int_t label){fLabel[2] = label;}
56      void SetLabels(Int_t label1, Int_t label2, Int_t label3 = 0){fLabel[0] = label1; fLabel[1] = label2; fLabel[2] = label3;}
57
58      Int_t GetLabel(Int_t i) const {return fLabel[i];}
59      Int_t GetLabel1() const {return fLabel[0];}
60      Int_t GetLabel2() const {return fLabel[1];}
61      Int_t GetLabel3() const {return fLabel[2];}
62                 
63      Double_t GetProductionRadius() const {return TMath::Sqrt(fProductionVtx[0]*fProductionVtx[0]+fProductionVtx[1]*fProductionVtx[1]);}
64      Double_t GetProductionX() const {return fProductionVtx[0];}
65      Double_t GetProductionY() const {return fProductionVtx[1];}
66      Double_t GetProductionZ() const {return fProductionVtx[2];}
67
68      Float_t GetDCABetweenPhotons() const {return fdcaBetweenPhotons;}
69      Float_t GetDCAZMotherPrimVtx() const {return fdcaZPrimVtx;}
70      Float_t GetDCARMotherPrimVtx() const {return fdcaRPrimVtx;}
71      UChar_t GetMesonQuality() const {return fQuality;}
72         
73      Double_t GetOpeningAngle() const { return fOpeningAngle;}
74
75      Double_t GetAlpha() const { return fAlpha;}
76
77      void SetWeight(Double_t weight) {fWeight=weight;}
78      Double_t GetWeight() const {return fWeight;}
79
80      Float_t CalculateDistanceBetweenPhotons(AliAODConversionPhoton* y1, AliAODConversionPhoton* y2 , Double_t prodPoint[3]);
81      void CalculateDistanceOfClossetApproachToPrimVtx(const AliVVertex* primVertex);
82      void DetermineMesonQuality(AliAODConversionPhoton* y1, AliAODConversionPhoton* y2);
83         
84 private:
85     Int_t fLabel[3]; // Labels of the decay photons
86     Int_t fMCLabel; // MC Label
87     Float_t fChi2; // Chi sq of reconstructed mother
88     Double_t fOpeningAngle;
89     Double_t fAlpha;
90     Double_t fWeight; // Weight for BG Calculation
91     Float_t fdcaBetweenPhotons; // dca between the two photons
92     Double_t fProductionVtx[3]; // Production vertex
93     Float_t fdcaZPrimVtx; // dca Z of meson to primary vertex
94     Float_t fdcaRPrimVtx; // dca R of meson to primary vertex
95     UChar_t fQuality; // Quality of the meson:
96                        // 0: garbage
97                        // 1: both photons quality 1
98                        // 2: 1 photon quality 1, 1 photon quality 2
99                        // 3: 1 photon quality 1, 1 photon quality 3
100                        // 4: both photons quality 2
101                        // 5: 1 photon quality 2, 1 photon quality 3
102                        // 6: both photons quality 3
103     
104     
105     ClassDef(AliAODConversionMother,4)
106 };
107
108 #endif