Adding rho's depenence on trigger track (M. Verweij)
[u/mrichter/AliRoot.git] / JETAN / AliJetUnitArray.h
1 #ifndef ALIJETUNITARRAY_H
2 #define ALIJETUNITARRAY_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  *  *  * See cxx source for full Copyright notice     */
6
7 /* $Id$ */
8
9 // Class description : Unit red as input by jet finder algorithm to store
10 //                     the physical characteristics of a particle
11 //
12 // Author: magali.estienne@subatech.in2p3.fr
13 //
14 // Unit used by jet finder algorithm
15 //
16 //
17
18 #include <Riostream.h> 
19 #include <TObject.h>
20 #include <TRefArray.h>
21 #include <TMath.h>
22 #include "AliESDtrack.h"
23 #include "AliAODTrack.h"
24 #include "AliVParticle.h"
25 #include "AliESDCaloCells.h"
26 #include "AliAODCaloCells.h"
27 #include "AliESDCaloCluster.h"
28 #include "AliAODCaloCluster.h"
29 #include "AliJetFinderTypes.h"
30
31 class TList;
32 class TVector3;
33
34 using std::vector;
35
36 class AliJetUnitArray : public TObject
37 {
38  public:
39   AliJetUnitArray();
40   AliJetUnitArray(Int_t absId, Int_t esdId, Float_t eta, Float_t phi, Float_t en, Float_t Deta, Float_t Dphi, 
41                   AliJetFinderUnitDetectorFlagType_t det, AliJetFinderUnitFlagType_t inout, AliJetFinderUnitCutFlagType_t cut, 
42                   AliJetFinderUnitCutFlagType_t cut2, AliJetFinderUnitSignalFlagType_t signal, Float_t mass, Int_t clusId);
43   AliJetUnitArray(Int_t absId, Int_t esdId, Float_t eta, Float_t phi, Float_t en, Float_t px, Float_t py, Float_t pz, 
44                   Float_t Deta, Float_t Dphi, AliJetFinderUnitDetectorFlagType_t det, AliJetFinderUnitFlagType_t inout, 
45                   AliJetFinderUnitCutFlagType_t cut, Float_t mass, Int_t clusId);
46   ~AliJetUnitArray();
47
48   // Setter
49   void SetUnitEnergy(Float_t energy)  {fUnitEnergy = energy;}
50   void SetUnitEta(Float_t eta)        {fUnitEta = eta;} 
51   void SetUnitPhi(Float_t phi)        {fUnitPhi = phi;}
52   void SetUnitPx(Float_t px)          {fUnitPx = px;}
53   void SetUnitPy(Float_t py)          {fUnitPy = py;}
54   void SetUnitPz(Float_t pz)          {fUnitPz = pz;}
55   void SetUnitDeta(Float_t deta)      {fUnitDeta = deta;} 
56   void SetUnitDphi(Float_t dphi)      {fUnitDphi = dphi;}
57   void SetUnitID(Int_t id)            {fUnitID = id;}
58   void SetUnitTrackID(Int_t esdid)    {fUnitTrackID = esdid;}
59   void SetUnitEntries(Int_t num)      {fUnitNum = num;}
60   void SetUnitClusterID(Int_t id)     {fUnitClusterID = id;}
61   void SetUnitFlag(AliJetFinderUnitFlagType_t flag)    
62   { 
63     fUnitFlag = flag; 
64   } 
65   void SetUnitCutFlag(AliJetFinderUnitCutFlagType_t cutFlag)    
66   { 
67     fUnitCutFlag = cutFlag; 
68   } 
69   void SetUnitCutFlag2(AliJetFinderUnitCutFlagType_t cutFlag)
70   {
71     fUnitCutFlag2 = cutFlag;
72   }
73   void SetUnitSignalFlag(AliJetFinderUnitSignalFlagType_t signalFlag)    
74   { 
75     fUnitSignalFlag = signalFlag; 
76   } 
77   void SetUnitDetectorFlag(AliJetFinderUnitDetectorFlagType_t detectorflag)    
78   { 
79     fUnitDetectorFlag = detectorflag; 
80   } 
81   void SetUnitSignalFlagC(Bool_t init, AliJetFinderUnitSignalFlagType_t flag);
82   void SetUnitSignalFlagN(Bool_t init, AliJetFinderUnitSignalFlagType_t flag);
83   void SetUnitMass(Float_t mass) {fUnitMass = mass;}
84   void SetUnitTrackRef(TRefArray* trackref)     {fUnitTrackRef = trackref;}
85   void SetUnitCellRef(TRefArray* cellref)       {fUnitCellRef = cellref;}
86   void SetUnitClusterRef(TRefArray* clusterref) {fUnitClusterRef = clusterref;}
87
88   // Getter
89   Float_t     GetUnitEnergy() const            {return fUnitEnergy;}
90   Float_t     GetUnitEta() const               {return fUnitEta;}
91   Float_t     GetUnitPhi() const               {return fUnitPhi;} 
92   Float_t     GetUnitPx() const                {return fUnitPx;}
93   Float_t     GetUnitPy() const                {return fUnitPy;}
94   Float_t     GetUnitPz() const                {return fUnitPz;}
95   Float_t     GetUnitDeta() const              {return fUnitDeta;}
96   Float_t     GetUnitDphi() const              {return fUnitDphi;}         
97   Int_t       GetUnitID() const                {return fUnitID;}
98   Int_t       GetUnitTrackID() const           {return fUnitTrackID;}
99   Int_t       GetUnitEntries() const           {return fUnitNum;}
100   Int_t       GetUnitClusterID() const         {return fUnitClusterID;}
101   Float_t     GetUnitMass() const              {return fUnitMass;}
102   Bool_t      GetUnitSignalFlagC(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagc);
103   Bool_t      GetUnitSignalFlagN(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagn);
104   TRefArray*  GetUnitTrackRef() const          {return fUnitTrackRef;}
105   TRefArray*  GetUnitCellRef() const           {return fUnitCellRef;}
106   TRefArray*  GetUnitClusterRef() const        {return fUnitClusterRef;}
107
108   Float_t     EtaToTheta(Float_t arg) const;
109   void        ClearUnitTrackRef();
110   void        ClearUnitCellRef();
111
112   AliJetFinderUnitFlagType_t GetUnitFlag() const     
113   {
114           return fUnitFlag;
115   }
116   AliJetFinderUnitCutFlagType_t GetUnitCutFlag() const     
117   {
118           return fUnitCutFlag;
119   }
120   AliJetFinderUnitCutFlagType_t GetUnitCutFlag2() const
121   {
122           return fUnitCutFlag2;
123   }
124   AliJetFinderUnitSignalFlagType_t GetUnitSignalFlag() const     
125   {
126           return fUnitSignalFlag;
127   }
128   AliJetFinderUnitDetectorFlagType_t GetUnitDetectorFlag() const     
129   {
130           return fUnitDetectorFlag;
131   }
132
133  protected:
134   AliJetUnitArray(const AliJetUnitArray& rUnit);
135   AliJetUnitArray& operator = (const AliJetUnitArray& rhs);
136   Bool_t operator>  (const AliJetUnitArray* unit1) const;
137   Bool_t operator<  (const AliJetUnitArray* unit1) const;
138   Bool_t operator== (const AliJetUnitArray* unit1) const;
139
140   Float_t                            fUnitEnergy;       // Energy (Pt,et) of the unit 
141   Float_t                            fUnitEta;          // Eta of the unit
142   Float_t                            fUnitPhi;          // Phi of the unit
143   Float_t                            fUnitDeta;         // Delta Eta of the unit
144   Float_t                            fUnitDphi;         // Delta Phi of the unit
145   Int_t                              fUnitID;           // ID of the unit
146   Int_t                              fUnitTrackID;      // ID of a given charged track 
147   Int_t                              fUnitNum;          // Number of units
148   Int_t                              fUnitClusterID;    // ID for clusters
149   AliJetFinderUnitFlagType_t         fUnitFlag;         // Flag of the unit
150   AliJetFinderUnitCutFlagType_t      fUnitCutFlag;      // Cut flag of the unit in the tpc
151   AliJetFinderUnitCutFlagType_t      fUnitCutFlag2;     // Cut flag of the unit in the emcal
152   AliJetFinderUnitSignalFlagType_t   fUnitSignalFlag;   // Signal flag of the unit
153   AliJetFinderUnitDetectorFlagType_t fUnitDetectorFlag; // Detector flag of the unit
154   Float_t                            fUnitPx;           // Px of charged track
155   Float_t                            fUnitPy;           // Py of charged track
156   Float_t                            fUnitPz;           // Pz of charged track
157   Float_t                            fUnitMass;         // Mass of particle
158   vector< AliJetFinderUnitSignalFlagType_t >   fVc;     //|| added for background studies
159   vector< AliJetFinderUnitSignalFlagType_t >   fVn;     //|| added for background studies
160   TRefArray*                         fUnitTrackRef;     //! pointer to array of references to esd tracks
161   TRefArray*                         fUnitCellRef;      //! pointer to array of references to esd cells
162   TRefArray*                         fUnitClusterRef;   //! pointer to array of references to esd clusters
163
164   ClassDef(AliJetUnitArray,2)
165
166 };
167
168 #endif
169