Updates needed for full jet reconstruction (charged + emcal) [Magali Estienne]
[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 <vector>
20
21 #include <TObject.h>
22 #include <TList.h>
23 #include <TVector3.h>
24 #include "AliJetFinderTypes.h"
25
26 class AliJetUnitArray : public TObject
27 {
28  public:
29   AliJetUnitArray();
30   AliJetUnitArray(Int_t absId, Int_t esdId, Float_t eta, Float_t phi, Float_t en, Float_t Deta, Float_t Dphi, 
31                   AliJetFinderUnitDetectorFlagType_t det, AliJetFinderUnitFlagType_t inout, AliJetFinderUnitCutFlagType_t cut, 
32                   AliJetFinderUnitCutFlagType_t cut2, AliJetFinderUnitSignalFlagType_t signal, Float_t mass, Int_t clusId);
33   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, 
34                   Float_t Deta, Float_t Dphi, AliJetFinderUnitDetectorFlagType_t det, AliJetFinderUnitFlagType_t inout, 
35                   AliJetFinderUnitCutFlagType_t cut, Float_t mass, Int_t clusId);
36   ~AliJetUnitArray();
37
38   // Setter
39   void SetUnitEnergy(Float_t energy)  {fUnitEnergy = energy;}
40   void SetUnitEta(Float_t eta)        {fUnitEta = eta;} 
41   void SetUnitPhi(Float_t phi)        {fUnitPhi = phi;}
42   void SetUnitPx(Float_t px)          {fUnitPx = px;}
43   void SetUnitPy(Float_t py)          {fUnitPy = py;}
44   void SetUnitPz(Float_t pz)          {fUnitPz = pz;}
45   void SetUnitDeta(Float_t deta)      {fUnitDeta = deta;} 
46   void SetUnitDphi(Float_t dphi)      {fUnitDphi = dphi;}
47   void SetUnitID(Int_t id)            {fUnitID = id;}
48   void SetUnitTrackID(Int_t esdid)    {fUnitTrackID = esdid;}
49   void SetUnitEntries(Int_t num)      {fUnitNum = num;}
50   void SetUnitClusterID(Int_t id)     {fUnitClusterID = id;}
51   void SetUnitFlag(AliJetFinderUnitFlagType_t flag)    
52   { 
53     fUnitFlag = flag; 
54   } 
55   void SetUnitCutFlag(AliJetFinderUnitCutFlagType_t cutFlag)    
56   { 
57     fUnitCutFlag = cutFlag; 
58   } 
59   void SetUnitCutFlag2(AliJetFinderUnitCutFlagType_t cutFlag)
60   {
61     fUnitCutFlag2 = cutFlag;
62   }
63   void SetUnitSignalFlag(AliJetFinderUnitSignalFlagType_t signalFlag)    
64   { 
65     fUnitSignalFlag = signalFlag; 
66   } 
67   void SetUnitDetectorFlag(AliJetFinderUnitDetectorFlagType_t detectorflag)    
68   { 
69     fUnitDetectorFlag = detectorflag; 
70   } 
71   void SetUnitPxPyPz(Bool_t init, vector<Float_t> v3);
72   void SetUnitEtN(Bool_t init, Float_t et); // Added for background studies
73   void SetUnitSignalFlagC(Bool_t init, AliJetFinderUnitSignalFlagType_t flag);
74   void SetUnitSignalFlagN(Bool_t init, AliJetFinderUnitSignalFlagType_t flag);
75   void SetUnitMass(Float_t mass) {fUnitMass = mass;}
76
77   // Getter
78   Float_t GetUnitEnergy() const            {return fUnitEnergy;}
79   Float_t GetUnitEta() const               {return fUnitEta;}
80   Float_t GetUnitPhi() const               {return fUnitPhi;} 
81   Float_t GetUnitPx() const                {return fUnitPx;}
82   Float_t GetUnitPy() const                {return fUnitPy;}
83   Float_t GetUnitPz() const                {return fUnitPz;}
84   Float_t GetUnitDeta() const              {return fUnitDeta;}
85   Float_t GetUnitDphi() const              {return fUnitDphi;}         
86   Int_t   GetUnitID() const                {return fUnitID;}
87   Int_t   GetUnitTrackID() const           {return fUnitTrackID;}
88   Int_t   GetUnitEntries() const           {return fUnitNum;}
89   Int_t   GetUnitClusterID() const         {return fUnitClusterID;}
90   Float_t GetUnitMass() const              {return fUnitMass;}
91   Bool_t  GetUnitPxPyPz(Int_t ind, Float_t &px, Float_t &py, Float_t &pz);
92   Bool_t  GetUnitPxPyPzE(Int_t ind, Float_t &px, Float_t &py, Float_t &pz, Float_t &en);
93   Bool_t  GetUnitEtN(Int_t ind, Float_t &et); // Added for background studies
94   Bool_t  GetUnitSignalFlagC(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagc);
95   Bool_t  GetUnitSignalFlagN(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagn);
96   Int_t   GetUnitVectorSize() {return fV.size();}
97   Int_t   GetUnitVectorSizeC() {return fVc.size();}
98   Int_t   GetUnitVectorSizeN() {return fVn.size();}
99
100   Float_t EtaToTheta(Float_t arg) const;
101
102   AliJetFinderUnitFlagType_t GetUnitFlag() const     
103   {
104           return fUnitFlag;
105   }
106   AliJetFinderUnitCutFlagType_t GetUnitCutFlag() const     
107   {
108           return fUnitCutFlag;
109   }
110   AliJetFinderUnitCutFlagType_t GetUnitCutFlag2() const
111   {
112           return fUnitCutFlag2;
113   }
114   AliJetFinderUnitSignalFlagType_t GetUnitSignalFlag() const     
115   {
116           return fUnitSignalFlag;
117   }
118   AliJetFinderUnitDetectorFlagType_t GetUnitDetectorFlag() const     
119   {
120           return fUnitDetectorFlag;
121   }
122
123  protected:
124   Bool_t operator>  ( AliJetUnitArray unit1) const;
125   Bool_t operator<  ( AliJetUnitArray unit1) const;
126   Bool_t operator== ( AliJetUnitArray unit1) const;
127
128   Float_t                            fUnitEnergy;       // Energy (Pt,et) of the unit 
129   Float_t                            fUnitEta;          // Eta of the unit
130   Float_t                            fUnitPhi;          // Phi of the unit
131   Float_t                            fUnitDeta;         // Delta Eta of the unit
132   Float_t                            fUnitDphi;         // Delta Phi of the unit
133   Int_t                              fUnitID;           // ID of the unit
134   Int_t                              fUnitTrackID;      // ID of a given charged track 
135   Int_t                              fUnitNum;          // Number of units
136   Int_t                              fUnitClusterID;    // ID for clusters
137   AliJetFinderUnitFlagType_t         fUnitFlag;         // Flag of the unit
138   AliJetFinderUnitCutFlagType_t      fUnitCutFlag;      // Cut flag of the unit in the tpc
139   AliJetFinderUnitCutFlagType_t      fUnitCutFlag2;     // Cut flag of the unit in the emcal
140   AliJetFinderUnitSignalFlagType_t   fUnitSignalFlag;   // Signal flag of the unit
141   AliJetFinderUnitDetectorFlagType_t fUnitDetectorFlag; // Detector flag of the unit
142   Float_t                            fUnitPx;           // Px of charged track
143   Float_t                            fUnitPy;           // Py of charged track
144   Float_t                            fUnitPz;           // Pz of charged track
145   Float_t                            fUnitMass;         // Mass of particle
146   vector< vector< Float_t > >                  fV;      //|| vector to store part information in each cell
147   vector< AliJetFinderUnitSignalFlagType_t >   fVc;     //|| added for background studies
148   vector< AliJetFinderUnitSignalFlagType_t >   fVn;     //|| added for background studies
149   vector< Float_t >                            fVet;    //|| added for background studies          
150
151   ClassDef(AliJetUnitArray,1)
152
153 };
154
155 #endif
156