ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


/////////////////////////////////////////////////////
// Class to handle pairs of tracks of opposite charge
// Useful for resonance analysis
// Derives from AliVParticle => 
// usable in Correction Framework
/////////////////////////////////////////////////////
// author : renaud.vernet@cern.ch
/////////////////////////////////////////////////////


#ifndef ALICFPAIR_H
#define ALICFPAIR_H

#include "AliVParticle.h"

class AliESDtrack ;
class AliESDv0;
class AliESDEvent;
class AliAODv0;

class AliCFPair : public AliVParticle {

 public:
  AliCFPair(AliVParticle* t1, AliVParticle* t2);
  AliCFPair(AliESDv0* v0, AliESDEvent* esd);
  AliCFPair(AliAODv0* v0);
  AliCFPair(const AliCFPair& c);
  AliCFPair& operator=(const AliCFPair& c);
  virtual ~AliCFPair(){};

  AliVParticle* GetNeg() const {return fTrackNeg;}
  AliVParticle* GetPos() const {return fTrackPos;}
  AliESDv0*    GetESDV0()  const {return fESDV0;}
  AliAODv0*    GetAODV0()  const {return fAODV0;}
  void         SetV0PDG(Int_t pdg) {fV0PDG=pdg;}
  virtual Bool_t       PxPyPz(Double_t p[3]) const ;
  virtual Double32_t   P()  const ;
  virtual Double32_t   Pt() const ;
  virtual Double32_t   Px() const ;
  virtual Double32_t   Py() const ;
  virtual Double32_t   Pz() const ;
  virtual Double32_t   E () const ;
  virtual Double32_t   Xv() const ;
  virtual Double32_t   Yv() const ;
  virtual Double32_t   Zv() const ;
  virtual Bool_t       XvYvZv(Double_t x[3]) const ;

  virtual Double32_t OneOverPt() const {return 1/Pt();}
  virtual Double32_t Phi()   const ;
  virtual Double32_t Theta() const ;
  virtual Double32_t M() const ;
  virtual Double32_t Eta() const ;
  virtual Double32_t Y() const ;
  virtual Short_t    Charge() const {return 0;} // returns 0 because opposite charge tracks... maybe to extend to all kinds of pairs
  virtual Int_t      GetLabel() const {return fLabel;}
  virtual void       SetLabel(Int_t label) {fLabel=label;}
  virtual void       SetMassHypothesis(Double_t massNeg, Double_t massPos) {fMassNeg=massNeg;fMassPos=massPos;}
  // PID
  virtual const Double_t *PID() const {return 0;} // return PID object (to be defined, still)
  virtual Int_t PdgCode() const {return 0;}

 private:
  Bool_t fIsV0;            // true if V0 passed to the constructor
  AliVParticle* fTrackNeg; // pointer to the negative track 
  AliVParticle* fTrackPos; // pointer to the positive track 
  AliESDv0*    fESDV0;     // pointer to the ESD V0 if AliESDv0 is passed to the constructor
  AliAODv0*    fAODV0;     // pointer to the AOD V0 if AliAODv0 is passed to the constructor
  Int_t        fLabel;     // associated MC label
  Int_t        fV0PDG;     // assumed V0 PDG
  Double_t     fMassNeg;
  Double_t     fMassPos;
  
  ClassDef(AliCFPair,0);
};

#endif
 AliCFPair.h:1
 AliCFPair.h:2
 AliCFPair.h:3
 AliCFPair.h:4
 AliCFPair.h:5
 AliCFPair.h:6
 AliCFPair.h:7
 AliCFPair.h:8
 AliCFPair.h:9
 AliCFPair.h:10
 AliCFPair.h:11
 AliCFPair.h:12
 AliCFPair.h:13
 AliCFPair.h:14
 AliCFPair.h:15
 AliCFPair.h:16
 AliCFPair.h:17
 AliCFPair.h:18
 AliCFPair.h:19
 AliCFPair.h:20
 AliCFPair.h:21
 AliCFPair.h:22
 AliCFPair.h:23
 AliCFPair.h:24
 AliCFPair.h:25
 AliCFPair.h:26
 AliCFPair.h:27
 AliCFPair.h:28
 AliCFPair.h:29
 AliCFPair.h:30
 AliCFPair.h:31
 AliCFPair.h:32
 AliCFPair.h:33
 AliCFPair.h:34
 AliCFPair.h:35
 AliCFPair.h:36
 AliCFPair.h:37
 AliCFPair.h:38
 AliCFPair.h:39
 AliCFPair.h:40
 AliCFPair.h:41
 AliCFPair.h:42
 AliCFPair.h:43
 AliCFPair.h:44
 AliCFPair.h:45
 AliCFPair.h:46
 AliCFPair.h:47
 AliCFPair.h:48
 AliCFPair.h:49
 AliCFPair.h:50
 AliCFPair.h:51
 AliCFPair.h:52
 AliCFPair.h:53
 AliCFPair.h:54
 AliCFPair.h:55
 AliCFPair.h:56
 AliCFPair.h:57
 AliCFPair.h:58
 AliCFPair.h:59
 AliCFPair.h:60
 AliCFPair.h:61
 AliCFPair.h:62
 AliCFPair.h:63
 AliCFPair.h:64
 AliCFPair.h:65
 AliCFPair.h:66
 AliCFPair.h:67
 AliCFPair.h:68
 AliCFPair.h:69
 AliCFPair.h:70
 AliCFPair.h:71
 AliCFPair.h:72
 AliCFPair.h:73
 AliCFPair.h:74
 AliCFPair.h:75
 AliCFPair.h:76
 AliCFPair.h:77
 AliCFPair.h:78
 AliCFPair.h:79
 AliCFPair.h:80
 AliCFPair.h:81
 AliCFPair.h:82
 AliCFPair.h:83
 AliCFPair.h:84
 AliCFPair.h:85
 AliCFPair.h:86
 AliCFPair.h:87
 AliCFPair.h:88
 AliCFPair.h:89
 AliCFPair.h:90
 AliCFPair.h:91
 AliCFPair.h:92