Warnings corrected.
[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   fUnitEnergy = rhs.fUnitEnergy;
154   fUnitEta = rhs.fUnitEta;
155   fUnitPhi = rhs.fUnitPhi;
156   fUnitDeta = rhs.fUnitDeta;
157   fUnitDphi = rhs.fUnitDphi;
158   fUnitID = rhs.fUnitID;
159   fUnitTrackID = rhs.fUnitTrackID;
160   fUnitNum = rhs.fUnitNum;
161   fUnitClusterID = rhs.fUnitClusterID;
162   fUnitFlag = rhs.fUnitFlag;
163   fUnitCutFlag = rhs.fUnitCutFlag;
164   fUnitCutFlag2 = rhs.fUnitCutFlag2;
165   fUnitSignalFlag = rhs.fUnitSignalFlag;
166   fUnitDetectorFlag = rhs.fUnitDetectorFlag;
167   fUnitPx = rhs.fUnitPx;
168   fUnitPy = rhs.fUnitPy;
169   fUnitPz = rhs.fUnitPz;
170   fUnitMass = rhs.fUnitMass;
171   fVc = rhs.fVc;
172   fVn = rhs.fVn;
173   fUnitTrackRef = rhs.fUnitTrackRef;
174   fUnitCellRef = rhs.fUnitCellRef;
175   fUnitClusterRef = rhs.fUnitClusterRef;
176
177   return *this;
178
179 }
180
181
182 //------------------------------------------------------------------------
183 AliJetUnitArray::~AliJetUnitArray()
184 {
185   // Destructor 
186   delete fUnitTrackRef;
187   delete fUnitCellRef;
188   delete fUnitClusterRef;
189
190 }
191
192 void AliJetUnitArray::ClearUnitTrackRef()
193 {
194   fUnitTrackRef->Clear();
195 }
196
197 void AliJetUnitArray::ClearUnitCellRef()
198 {
199   fUnitCellRef->Clear();
200 }
201
202 //------------------------------------------------------------------------
203 void AliJetUnitArray::SetUnitSignalFlagC(Bool_t init, AliJetFinderUnitSignalFlagType_t flag)
204 {
205   // Set signal flag of the charged particle
206   if(init){
207     if(!fVc.empty())
208       fVc.clear();
209   }
210   else fVc.push_back(flag);
211 }
212
213 //------------------------------------------------------------------------
214 void AliJetUnitArray::SetUnitSignalFlagN(Bool_t init, AliJetFinderUnitSignalFlagType_t flag)
215 {
216   // Set signal flag of the neutral cell
217   if(init){
218     if(!fVn.empty())
219       fVn.clear();
220   }
221   else fVn.push_back(flag);
222 }
223
224
225 //------------------------------------------------------------------------
226 Bool_t AliJetUnitArray::GetUnitSignalFlagC(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagc)
227 {
228   // Get signal flag of the charged particle
229   if(ind <= (Int_t)fVc.size())
230     {
231       flagc = (AliJetFinderUnitSignalFlagType_t)fVc[ind];
232       return kTRUE;
233     }
234   else return kFALSE;
235 }
236
237 //------------------------------------------------------------------------
238 Bool_t AliJetUnitArray::GetUnitSignalFlagN(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagn)
239 {
240   // Get signal flag of the neutral cell
241   if(ind <= (Int_t)fVn.size())
242     {
243       flagn = (AliJetFinderUnitSignalFlagType_t)fVn[ind];
244       return kTRUE;
245     }
246   else return kFALSE;
247 }
248
249 //------------------------------------------------------------------------
250 Float_t  AliJetUnitArray::EtaToTheta(Float_t arg) const
251 {
252   // Eta to theta transformation
253   return 2.*atan(exp(-arg));
254 }
255
256 //------------------------------------------------------------------------
257 Bool_t AliJetUnitArray::operator>(AliJetUnitArray unit) const
258 {
259   // Greater than operator used by sort
260   if( fUnitEnergy > unit.GetUnitEnergy())
261     return kTRUE;
262   else 
263     return kFALSE;
264 }
265
266 //------------------------------------------------------------------------
267 Bool_t AliJetUnitArray::operator<( AliJetUnitArray unit) const
268 {
269   // Less than operator used by sort
270   if( fUnitEnergy < unit.GetUnitEnergy())
271     return kTRUE;
272   else
273     return kFALSE;
274 }
275
276 //------------------------------------------------------------------------
277 Bool_t AliJetUnitArray::operator==( AliJetUnitArray unit) const
278 {
279   // equality operator used by sort
280   if( fUnitEnergy == unit.GetUnitEnergy())
281     return kTRUE;
282   else
283     return kFALSE;
284 }