Compatibility with ROOT trunk
[u/mrichter/AliRoot.git] / JETAN / AliJetUnitArray.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16
17 /* $Id$ */
18
19 //_________________________________________________________________________
20 //  Unit used by UA1 algorithm
21 // --
22 //*-- Author: Sarah Blyth (LBL/UCT)
23 // --
24 // Revised Version for JETAN 
25 // -- Magali Estienne (magali.estienne@subatech.in2p3.fr)
26
27 #include "AliJetUnitArray.h"
28
29 class TVector3;
30 class TLorentzVector;
31 class TClonesArray;
32
33 ClassImp(AliJetUnitArray)
34
35 AliJetUnitArray::AliJetUnitArray():
36   fUnitEnergy(0.0),
37   fUnitEta(0.0),
38   fUnitPhi(0.0),
39   fUnitDeta(0.),
40   fUnitDphi(0.),
41   fUnitID(0),
42   fUnitTrackID(0),
43   fUnitNum(0),
44   fUnitClusterID(0),
45   fUnitFlag(kOutJet),
46   fUnitCutFlag(kPtSmaller),
47   fUnitCutFlag2(kPtSmaller),
48   fUnitSignalFlag(kBad), 
49   fUnitDetectorFlag(kTpc),
50   fUnitPx(0.),
51   fUnitPy(0.),
52   fUnitPz(0.),
53   fUnitMass(0.),
54   fVc(0),
55   fVn(0),
56   fUnitTrackRef(new TRefArray),
57   fUnitCellRef(new TRefArray),
58   fUnitClusterRef(new TRefArray)
59 {
60   // Default constructor
61 }  
62
63 AliJetUnitArray::AliJetUnitArray(Int_t absId, Int_t esdId, Float_t eta, Float_t phi, Float_t en, Float_t Deta, Float_t Dphi, AliJetFinderUnitDetectorFlagType_t det, AliJetFinderUnitFlagType_t inout, AliJetFinderUnitCutFlagType_t cut, AliJetFinderUnitCutFlagType_t cut2, AliJetFinderUnitSignalFlagType_t /*signal*/,Float_t mass, Int_t clusId):
64   fUnitEnergy(en),
65   fUnitEta(eta),
66   fUnitPhi(phi),
67   fUnitDeta(Deta),
68   fUnitDphi(Dphi),
69   fUnitID(absId),
70   fUnitTrackID(esdId),
71   fUnitNum(0),
72   fUnitClusterID(clusId),
73   fUnitFlag(inout),
74   fUnitCutFlag(cut),
75   fUnitCutFlag2(cut2),
76   fUnitSignalFlag(kBad), 
77   fUnitDetectorFlag(det),
78   fUnitPx(0.),
79   fUnitPy(0.),
80   fUnitPz(0.),
81   fUnitMass(mass),
82   fVc(0),
83   fVn(0),
84   fUnitTrackRef(new TRefArray),
85   fUnitCellRef(new TRefArray),
86   fUnitClusterRef(new TRefArray)
87 {
88   //abs ID (in a eta,phi grid, track ID in ESD, eta, phi, energy, px, py, pz, Deta, Dphi, detector flag, in/out jet, mass
89
90   // Constructor 2
91 }
92
93 AliJetUnitArray::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, Float_t Deta, Float_t Dphi, AliJetFinderUnitDetectorFlagType_t det, AliJetFinderUnitFlagType_t inout, AliJetFinderUnitCutFlagType_t cut, Float_t mass, Int_t clusId):
94   fUnitEnergy(en),
95   fUnitEta(eta),
96   fUnitPhi(phi),
97   fUnitDeta(Deta),
98   fUnitDphi(Dphi),
99   fUnitID(absId),
100   fUnitTrackID(esdId),
101   fUnitNum(0),
102   fUnitClusterID(clusId),
103   fUnitFlag(inout),
104   fUnitCutFlag(cut),
105   fUnitCutFlag2(kPtSmaller),
106   fUnitSignalFlag(kBad),
107   fUnitDetectorFlag(det),
108   fUnitPx(px),
109   fUnitPy(py),
110   fUnitPz(pz),
111   fUnitMass(mass),
112   fVc(0),
113   fVn(0),
114   fUnitTrackRef(new TRefArray),
115   fUnitCellRef(new TRefArray),
116   fUnitClusterRef(new TRefArray)
117 {
118   // Constructor 2
119 }
120  
121 AliJetUnitArray::AliJetUnitArray(const AliJetUnitArray& rUnit):
122   TObject(rUnit),
123   fUnitEnergy(rUnit.fUnitEnergy),
124   fUnitEta(rUnit.fUnitEta),
125   fUnitPhi(rUnit.fUnitPhi),
126   fUnitDeta(rUnit.fUnitDeta),
127   fUnitDphi(rUnit.fUnitDphi),
128   fUnitID(rUnit.fUnitID),
129   fUnitTrackID(rUnit.fUnitTrackID),
130   fUnitNum(rUnit.fUnitNum),
131   fUnitClusterID(rUnit.fUnitClusterID),
132   fUnitFlag(rUnit.fUnitFlag),
133   fUnitCutFlag(rUnit.fUnitCutFlag),
134   fUnitCutFlag2(rUnit.fUnitCutFlag2),
135   fUnitSignalFlag(rUnit.fUnitSignalFlag),
136   fUnitDetectorFlag(rUnit.fUnitDetectorFlag),
137   fUnitPx(rUnit.fUnitPx),
138   fUnitPy(rUnit.fUnitPy),
139   fUnitPz(rUnit.fUnitPz),
140   fUnitMass(rUnit.fUnitMass),
141   fVc(rUnit.fVc),
142   fVn(rUnit.fVn),
143   fUnitTrackRef(rUnit.fUnitTrackRef),
144   fUnitCellRef(rUnit.fUnitCellRef),
145   fUnitClusterRef(rUnit.fUnitClusterRef)
146 {
147   // Copy constructor
148 }
149
150 AliJetUnitArray& AliJetUnitArray::operator=(const AliJetUnitArray& rhs)
151 {
152   // Assignment
153     if (this != &rhs) {
154         fUnitEnergy = rhs.fUnitEnergy;
155         fUnitEta = rhs.fUnitEta;
156         fUnitPhi = rhs.fUnitPhi;
157         fUnitDeta = rhs.fUnitDeta;
158         fUnitDphi = rhs.fUnitDphi;
159         fUnitID = rhs.fUnitID;
160         fUnitTrackID = rhs.fUnitTrackID;
161         fUnitNum = rhs.fUnitNum;
162         fUnitClusterID = rhs.fUnitClusterID;
163         fUnitFlag = rhs.fUnitFlag;
164         fUnitCutFlag = rhs.fUnitCutFlag;
165         fUnitCutFlag2 = rhs.fUnitCutFlag2;
166         fUnitSignalFlag = rhs.fUnitSignalFlag;
167         fUnitDetectorFlag = rhs.fUnitDetectorFlag;
168         fUnitPx = rhs.fUnitPx;
169         fUnitPy = rhs.fUnitPy;
170         fUnitPz = rhs.fUnitPz;
171         fUnitMass = rhs.fUnitMass;
172         fVc = rhs.fVc;
173         fVn = rhs.fVn;
174         fUnitTrackRef = rhs.fUnitTrackRef;
175         fUnitCellRef = rhs.fUnitCellRef;
176         fUnitClusterRef = rhs.fUnitClusterRef;
177     }
178   return *this;
179
180 }
181
182
183 //------------------------------------------------------------------------
184 AliJetUnitArray::~AliJetUnitArray()
185 {
186   // Destructor 
187   delete fUnitTrackRef;
188   delete fUnitCellRef;
189   delete fUnitClusterRef;
190
191 }
192
193 void AliJetUnitArray::ClearUnitTrackRef()
194 {
195   fUnitTrackRef->Clear();
196 }
197
198 void AliJetUnitArray::ClearUnitCellRef()
199 {
200   fUnitCellRef->Clear();
201 }
202
203 //------------------------------------------------------------------------
204 void AliJetUnitArray::SetUnitSignalFlagC(Bool_t init, AliJetFinderUnitSignalFlagType_t flag)
205 {
206   // Set signal flag of the charged particle
207   if(init){
208     if(!fVc.empty())
209       fVc.clear();
210   }
211   else fVc.push_back(flag);
212 }
213
214 //------------------------------------------------------------------------
215 void AliJetUnitArray::SetUnitSignalFlagN(Bool_t init, AliJetFinderUnitSignalFlagType_t flag)
216 {
217   // Set signal flag of the neutral cell
218   if(init){
219     if(!fVn.empty())
220       fVn.clear();
221   }
222   else fVn.push_back(flag);
223 }
224
225
226 //------------------------------------------------------------------------
227 Bool_t AliJetUnitArray::GetUnitSignalFlagC(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagc)
228 {
229   // Get signal flag of the charged particle
230   if(ind <= (Int_t)fVc.size())
231     {
232       flagc = (AliJetFinderUnitSignalFlagType_t)fVc[ind];
233       return kTRUE;
234     }
235   else return kFALSE;
236 }
237
238 //------------------------------------------------------------------------
239 Bool_t AliJetUnitArray::GetUnitSignalFlagN(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagn)
240 {
241   // Get signal flag of the neutral cell
242   if(ind <= (Int_t)fVn.size())
243     {
244       flagn = (AliJetFinderUnitSignalFlagType_t)fVn[ind];
245       return kTRUE;
246     }
247   else return kFALSE;
248 }
249
250 //------------------------------------------------------------------------
251 Float_t  AliJetUnitArray::EtaToTheta(Float_t arg) const
252 {
253   // Eta to theta transformation
254   return 2.*atan(exp(-arg));
255 }
256
257 //------------------------------------------------------------------------
258 Bool_t AliJetUnitArray::operator>(const AliJetUnitArray* unit) const
259 {
260   // Greater than operator used by sort
261   if( fUnitEnergy > unit->GetUnitEnergy())
262     return kTRUE;
263   else 
264     return kFALSE;
265 }
266
267 //------------------------------------------------------------------------
268 Bool_t AliJetUnitArray::operator<(const AliJetUnitArray* unit) const
269 {
270   // Less than operator used by sort
271   if( fUnitEnergy < unit->GetUnitEnergy())
272     return kTRUE;
273   else
274     return kFALSE;
275 }
276
277 //------------------------------------------------------------------------
278 Bool_t AliJetUnitArray::operator==(const AliJetUnitArray* unit) const
279 {
280   // equality operator used by sort
281   if( fUnitEnergy == unit->GetUnitEnergy())
282     return kTRUE;
283   else
284     return kFALSE;
285 }