PairCut stuff moved from AliHBTAnalysis to AliAnalysis
[u/mrichter/AliRoot.git] / ANALYSIS / AliVAODParticle.h
CommitLineData
afa8b37b 1#ifndef ALIVAODPARTICLE_H
2#define ALIVAODPARTICLE_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
8/////////////////////////////////////////////////////////////
9//
10// base class for AOD particles
11//
12/////////////////////////////////////////////////////////////
13
14#include <TObject.h>
15#include <TLorentzVector.h>
16#include <TVector3.h>
17
afa8b37b 18class AliTrackPoints;
19class AliClusterMap;
20
21class AliVAODParticle : public TObject {
22public:
23 AliVAODParticle(){}
24 virtual ~AliVAODParticle(){}
25 // kinematics
26 virtual TLorentzVector FourMomentum() const = 0;
27 virtual TVector3 Momentum() const {return FourMomentum().Vect();};
28 virtual Double_t Mass() const {return FourMomentum().M();};
29 virtual Double_t E() const {return FourMomentum().E();};
30 virtual Double_t P() const {return FourMomentum().P();};
31 virtual Double_t Pt() const {return FourMomentum().Pt();};
32 virtual Double_t Px() const {return FourMomentum().Px();};
33 virtual Double_t Py() const {return FourMomentum().Py();};
34 virtual Double_t Pz() const {return FourMomentum().Pz();};
35 virtual Double_t Phi() const {return FourMomentum().Phi();};
36 virtual Double_t Theta() const {return FourMomentum().Theta();};
37 virtual Double_t Eta() const {return FourMomentum().Eta();};
38 virtual Double_t Y() const {return FourMomentum().Rapidity();};
78d7c6d3 39
40 virtual void SetMomentum(Double_t/*px*/,Double_t/*py*/,Double_t/*pz*/,Double_t/*E*/) = 0;
41 virtual void SetProductionVertex(Double_t /*vx*/, Double_t /*vy*/, Double_t /*vz*/, Double_t /*t*/) = 0;
afa8b37b 42
43 // PID
44 virtual Double_t Charge() const = 0;
45 virtual Double_t GetProbability(Int_t pdg) const = 0;
78d7c6d3 46 virtual Double_t GetPidProb() const = 0;
afa8b37b 47 virtual Int_t GetMostProbable() const = 0;
48
49 virtual Int_t GetPdgCode() const = 0;//We need to assume some PID (f.e. energy calculation)
50 //sotimes one track can apear in analysis twise (e.g. ones as pion ones as kaon)
78d7c6d3 51 virtual Int_t GetNumberOfPids() const = 0; //returns number of non zero PID probabilities
52 virtual Int_t GetNthPid (Int_t idx) const = 0;//These two methods are made to be able to
53 virtual Float_t GetNthPidProb (Int_t idx) const = 0;//copy pid information i.e. in copy ctors
afa8b37b 54
55 // vertices
56 virtual TVector3 ProductionVertex() const = 0;
57 virtual Double_t Vx() const {return ProductionVertex().X();};
58 virtual Double_t Vy() const {return ProductionVertex().Y();};
59 virtual Double_t Vz() const {return ProductionVertex().Z();};
78d7c6d3 60 virtual Double_t T() const {return 0.0;};
61
afa8b37b 62 virtual AliVAODParticle* Mother() const {return NULL;};
63 virtual Bool_t HasDecayVertex() const {return kFALSE;};
64 virtual TVector3 DecayVertex() const {return TVector3();};
65 virtual Int_t NumberOfDaughters() const {return 0;};
78d7c6d3 66 virtual AliVAODParticle* Daughter(Int_t /*index*/) const {return NULL;};
afa8b37b 67
78d7c6d3 68 virtual Int_t GetUID() const { return 0;}//returns unique ID of this track
69 //(may happen than the same track is selected
70 //twise, f.g. as a pion and as a kaon than both have the same UID)
71
afa8b37b 72 // type information
73 virtual Bool_t IsSimulated() {return kFALSE;};
74 virtual Bool_t IsTrack() {return kFALSE;};
75 virtual Bool_t IsCluster() {return kFALSE;};
76
77 //HBT specific
78d7c6d3 78 virtual AliTrackPoints* GetTPCTrackPoints() const {return 0x0;}
79 virtual AliTrackPoints* GetITSTrackPoints() const {return 0x0;}
afa8b37b 80 virtual AliClusterMap* GetClusterMap() const {return 0x0;}
81 virtual void Print() const = 0;
82
83 static void SetDebug(Int_t dbg=1){fgDebug=dbg;}
84 static Int_t GetDebug(){return fgDebug;}
85
86private:
87 static Int_t fgDebug;//! debug level for all the analysis package
88
89 ClassDef(AliVAODParticle,1) // base class for AOD particles
90};
91
92#endif