changes to avoid compiler warning
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowCommon / AliFlowTrackSimple.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
3 /* $Id$ */
4
5 #ifndef ALIFLOWTRACKSIMPLE_H
6 #define ALIFLOWTRACKSIMPLE_H
7
8 #include "TObject.h"
9 #include "TBits.h"
10 class TParticle;
11
12 // AliFlowTrackSimple:
13 // A simple track class to the the AliFlowEventSimple for flow analysis
14 // author: N. van der Kolk (kolk@nikhef.nl)
15 // mods: Mikolaj Krzewicki (mikolaj.krzewicki@cern.ch)
16
17 class AliFlowTrackSimple: public TObject {
18
19 public:
20   AliFlowTrackSimple();
21   AliFlowTrackSimple(TParticle* p);
22   AliFlowTrackSimple(const AliFlowTrackSimple& aTrack);
23   AliFlowTrackSimple& operator=(const AliFlowTrackSimple& aTrack);
24   virtual  ~AliFlowTrackSimple();
25   virtual AliFlowTrackSimple* Clone(const char* option="") const;
26   
27   Bool_t  IsFolder() const {return kTRUE;};
28   //  void Browse(TBrowser *b); 
29   virtual void Print(Option_t* option = "") const;
30
31   Double_t Eta() const; 
32   Double_t Pt()  const; 
33   Double_t Phi() const;
34   Double_t Weight() const; 
35   Int_t Charge() const;
36   Int_t PID() const {return 0;}
37   
38
39   Bool_t InRPSelection() const; 
40   Bool_t InPOISelection() const; 
41   Bool_t InSubevent(Int_t i) const;
42   Bool_t IsDead() const {return (fFlowBits.CountBits()==0);}
43       
44   void SetEta(Double_t eta);
45   void SetPt(Double_t pt); 
46   void SetPhi(Double_t phi);
47   void SetWeight(Double_t weight);
48   void SetCharge(Int_t charge);
49   void SetForRPSelection(Bool_t b=kTRUE); 
50   void SetForPOISelection(Bool_t b=kTRUE); 
51   void TagRP(Bool_t b=kTRUE) {SetForRPSelection(b);} 
52   void TagPOI(Bool_t b=kTRUE) {SetForPOISelection(b);} 
53   void SetForSubevent(Int_t i); 
54   void ResetFlowTags() {fFlowBits.ResetAllBits();}
55   void ResetSubEventTags() {fSubEventBits.ResetAllBits();}
56   
57   void ResolutionPt(Double_t resolution);
58
59   void AddV1( Double_t v1,
60               Double_t reactionPlaneAngle,
61               Double_t precision,
62               Int_t maxNumberOfIterations=100 );
63   void AddV2( Double_t v2,
64               Double_t reactionPlaneAngle,
65               Double_t precision,
66               Int_t maxNumberOfIterations=100 );
67   void AddV4( Double_t v4,
68               Double_t reactionPlaneAngle,
69               Double_t precision,
70               Int_t maxNumberOfIterations=100 );
71   void AddFlow( Double_t v1,
72                 Double_t v2,
73                 Double_t v4,
74                 Double_t reactionPlaneAngle,
75                 Double_t precision,
76                 Int_t maxNumberOfIterations=100 );
77     
78   const TBits* GetFlowBits() const {return &fFlowBits;}
79
80  private:
81   AliFlowTrackSimple(Double_t phi, Double_t eta, Double_t pt, Double_t weight, Int_t charge);
82   Double_t fEta;         // eta
83   Double_t fPt;          // pt
84   Double_t fPhi;         // phi
85   Double_t fTrackWeight; // weight
86   Int_t fCharge;         //charge
87   TBits    fFlowBits;    // bits to set if track is selected
88   TBits    fSubEventBits;// bits to set if track is selected for a subevent
89
90   ClassDef(AliFlowTrackSimple,1)                 // macro for rootcint
91
92 };
93
94 //Getters
95 inline Double_t AliFlowTrackSimple::Eta() const { 
96   return this->fEta; }
97 inline Double_t AliFlowTrackSimple::Pt() const {  
98   return this->fPt;}
99 inline Double_t AliFlowTrackSimple::Phi() const { 
100   return this->fPhi; }
101 inline Double_t AliFlowTrackSimple::Weight() const { 
102   return this->fTrackWeight; }
103 inline Int_t AliFlowTrackSimple::Charge() const { 
104   return this->fCharge; }
105 //TBits
106 inline Bool_t AliFlowTrackSimple::InRPSelection() const { 
107   return this->fFlowBits.TestBitNumber(0); }
108 inline Bool_t AliFlowTrackSimple::InPOISelection() const { 
109   return this->fFlowBits.TestBitNumber(1); }
110 inline Bool_t AliFlowTrackSimple::InSubevent(Int_t i) const { 
111   return this->fSubEventBits.TestBitNumber(i); }
112
113 //Setters
114 inline void AliFlowTrackSimple::SetEta(Double_t val) {
115   fEta = val; }
116 inline void AliFlowTrackSimple::SetPt(Double_t val) {
117   fPt = val; }
118 inline void AliFlowTrackSimple::SetPhi(Double_t val) {
119   fPhi = val; }
120 inline void AliFlowTrackSimple::SetWeight(Double_t val) {
121   fTrackWeight = val; }
122 inline void AliFlowTrackSimple::SetCharge(Int_t val) {
123   fCharge = val; }
124 //TBits
125 inline void AliFlowTrackSimple::SetForRPSelection(Bool_t val) {
126   fFlowBits.SetBitNumber(0,val); }
127 inline void AliFlowTrackSimple::SetForPOISelection(Bool_t val) {
128   fFlowBits.SetBitNumber(1,val); }
129 inline void AliFlowTrackSimple::SetForSubevent(Int_t i) {
130   fSubEventBits.SetBitNumber(i,kTRUE); }
131
132 #endif
133