Improved version, kinetree included
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowV0.h
1 //////////////////////////////////////////////////////////////////////
2 //
3 // $Id$
4 //
5 // Author: Emanuele Simili
6 //
7 //////////////////////////////////////////////////////////////////////
8 //
9 // Description: an array of V0s is part of AliFlowEvent, 
10 //  this class allow flow study neutral secundary vertices (V0s)
11 //  as they are reconstructer by AliRoot at the ESD level .
12 //
13 //////////////////////////////////////////////////////////////////////
14
15 #ifndef ALIFLOWV0_H
16 #define ALIFLOWV0_H
17
18 #include <string.h>
19 #include <stdio.h>
20 #include <stdlib.h>
21 #include <iostream>
22 #include <TROOT.h>
23 #include "TMath.h"
24 #include "TNamed.h"
25
26 #include "AliFlowTrack.h"
27
28 class AliFlowV0 : public TNamed {
29
30 public:
31
32                 AliFlowV0();
33                 AliFlowV0(const Char_t* name);
34   virtual       ~AliFlowV0();
35
36  // Gets
37   const Char_t* Pid()          const ;
38   Float_t       P()            const ;   
39   Float_t       Y()            const ;
40   Float_t       Phi()          const { return fPhi; }  
41   Float_t       Eta()          const { return fEta; }  
42   Float_t       Pt()           const { return fPt; }   
43   Short_t       Charge()       const { return 0 ; }
44   Float_t       Dca()          const { return fDca ; }
45   Float_t       Chi2()         const { return fChi2; }
46   Float_t       Mass()         const { return fMass ; }
47   AliFlowTrack* DaughterP()    const { return fDaughterP ; } 
48   AliFlowTrack* DaughterN()    const { return fDaughterN ; } 
49   Float_t       V0Lenght()     const { return TMath::Sqrt(fCrossPoint[0]*fCrossPoint[0] + fCrossPoint[1]*fCrossPoint[1] + fCrossPoint[2]*fCrossPoint[2]) ; }
50   Float_t       Sigma()        const { return fSigma ; }
51   Float_t       CrossPointX()  const { return fCrossPoint[0] ; }
52   Float_t       CrossPointY()  const { return fCrossPoint[1] ; } 
53   Float_t       CrossPointZ()  const { return fCrossPoint[2] ; }
54   Float_t       DaughtersDca() const { return fCrossDCA ; }
55   Int_t         Label()        const { return fLabel ; }
56   Float_t       GetCosPointingAngle()       const { return fPointAngle ; }
57   Int_t         MostLikelihoodPID()         const { return fMostLikelihoodPID; } 
58   void          CrossPoint(Float_t Pxyz[3]) const { for(Int_t ii=0;ii<3;ii++) { Pxyz[ii] = fCrossPoint[ii] ; } }
59
60  // Sets
61   void SetPid(const Char_t* pid);
62   void SetPhi(Float_t phi)              { fPhi = phi; }   
63   void SetEta(Float_t eta)              { fEta = eta; }   
64   void SetPt(Float_t pt)                { fPt = pt; }     
65   void SetChi2(Float_t chi2)            { fChi2 = chi2; }   
66   void SetVmass(Float_t mass)           { fMass = mass ; }
67   void SetDca(Float_t dca)              { fDca = dca; }
68   void SetSigma(Float_t sigma)          { fSigma = sigma ; }      
69   void SetLabel(Int_t label)            { fLabel = label ; }
70   void SetDaughtersDca(Float_t dca)     { fCrossDCA = dca ; }
71   void SetCosPointingAngle(Float_t cos) { fPointAngle = cos ; }
72   void SetMostLikelihoodPID(Int_t pdgCode)                { fMostLikelihoodPID = pdgCode ; }
73   void SetCrossPoint(Float_t pox,Float_t poy,Float_t poz) { fCrossPoint[0] = pox ; fCrossPoint[1] = poy ; fCrossPoint[2] = poz ; }
74   void SetDaughters(AliFlowTrack* pos, AliFlowTrack* neg) { fDaughterP = pos ; fDaughterN = neg ; }
75
76
77 private:
78
79  // to make the code checker happy
80   AliFlowV0(const AliFlowV0 &flowV0) ;            // Copy Constructor (dummy)
81   AliFlowV0 &operator=(const AliFlowV0 &flowV0) ; // Assignment Operator (dummy)
82
83  // Data Members
84   Float_t       fPhi;                           // reconstructed azimuthal angle of the v0
85   Float_t       fPt;                            // reconstructed transverse momentum of the v0 
86   Float_t       fEta;                           // reconstructed pseudorapidity of the v0
87   Float_t       fChi2;                          // chi2 of the reconstructed v0
88   Float_t       fMass;                          // reconstructed v0 mass 
89   Float_t       fDca;                           // distance of closest approach of the reconstructed v0 to the main vertex
90   Float_t       fCrossPoint[3] ;                // crossing point coordinates of the two daughter tracks
91   Float_t       fCrossDCA ;                     // DCA between the 2 daughter tracks at the crossing point 
92   Float_t       fSigma ;                        // sigma of the DCA of the 2 daughter tracks at the crossing point 
93   Int_t         fLabel ;                        // Label of the V0 (link: KineTree-ESD) 
94   Int_t         fMostLikelihoodPID;             // most probable P.Id. hypotesis
95   Float_t       fPointAngle;                    // cosine of the pointing angle
96   AliFlowTrack* fDaughterP ;                    // daughter tracks (pointers to the TracksCollection())
97   AliFlowTrack* fDaughterN ;                    // daughter tracks (pointers to the TracksCollection())
98   
99   ClassDef(AliFlowV0,2) ;                       // macro for rootcint
100 };
101
102 #endif
103 //////////////////////////////////////////////////////////////////////