Streamable data members required for PROOF.
[u/mrichter/AliRoot.git] / CORRFW / AliCFPair.h
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16
17 /////////////////////////////////////////////////////
18 // Class to handle pairs of tracks of opposite charge
19 // Useful for resonance analysis
20 // Derives from AliVParticle => 
21 // usable in Correction Framework
22 /////////////////////////////////////////////////////
23 // author : renaud.vernet@cern.ch
24 /////////////////////////////////////////////////////
25
26
27 #ifndef ALICFPAIR_H
28 #define ALICFPAIR_H
29
30 #include "AliVParticle.h"
31
32 class AliESDtrack ;
33 class AliESDv0;
34 class AliESDEvent;
35
36 class AliCFPair : public AliVParticle {
37
38  public:
39   AliCFPair(AliESDtrack* t1, AliESDtrack* t2);
40   AliCFPair(AliESDv0* v0, AliESDEvent* esd);
41   AliCFPair(const AliCFPair& c);
42   AliCFPair& operator=(const AliCFPair& c);
43   virtual ~AliCFPair(){};
44
45   AliESDtrack* GetNeg() const {return fTrackNeg;}
46   AliESDtrack* GetPos() const {return fTrackPos;}
47   AliESDv0*    GetV0()  const {return fV0;}
48   virtual Bool_t       PxPyPz(Double_t p[3]) const ;
49   virtual Double32_t   P()  const ;
50   virtual Double32_t   Pt() const ;
51   virtual Double32_t   Px() const ;
52   virtual Double32_t   Py() const ;
53   virtual Double32_t   Pz() const ;
54   virtual Double32_t   E () const ;
55   virtual Double32_t   Xv() const ;
56   virtual Double32_t   Yv() const ;
57   virtual Double32_t   Zv() const ;
58   virtual Bool_t       XvYvZv(Double_t x[3]) const ;
59
60   virtual Double32_t OneOverPt() const {return 1/Pt();}
61   virtual Double32_t Phi()   const ;
62   virtual Double32_t Theta() const ;
63   virtual Double32_t M() const ;
64   virtual Double32_t Eta() const ;
65   virtual Double32_t Y() const ;
66   virtual Short_t    Charge() const {return 0;} // returns 0 because opposite charge tracks... maybe to extend to all kinds of pairs
67
68   // PID
69   virtual const Double_t *PID() const {return 0;} // return PID object (to be defined, still)
70
71
72  private:
73   Bool_t fIsV0;            // true if V0 passed to the constructor
74   AliESDtrack* fTrackNeg;  // pointer to the negative track
75   AliESDtrack* fTrackPos;  // pointer to the positive track
76   AliESDv0*    fV0;        // pointer to the V0 if V0 is passed to the constructor
77   
78   ClassDef(AliCFPair,0);
79 };
80
81 #endif