1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
19 //_________________________________________________________________________
20 // Unit used by UA1 algorithm
22 //*-- Author: Sarah Blyth (LBL/UCT)
24 // Revised Version for JETAN
25 // -- Magali Estienne (magali.estienne@subatech.in2p3.fr)
27 #include "AliJetUnitArray.h"
33 ClassImp(AliJetUnitArray)
35 AliJetUnitArray::AliJetUnitArray():
46 fUnitCutFlag(kPtSmaller),
47 fUnitCutFlag2(kPtSmaller),
48 fUnitSignalFlag(kBad),
49 fUnitDetectorFlag(kTpc),
56 fUnitTrackRef(new TRefArray),
57 fUnitCellRef(new TRefArray),
58 fUnitClusterRef(new TRefArray)
60 // Default constructor
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):
72 fUnitClusterID(clusId),
76 fUnitSignalFlag(kBad),
77 fUnitDetectorFlag(det),
84 fUnitTrackRef(new TRefArray),
85 fUnitCellRef(new TRefArray),
86 fUnitClusterRef(new TRefArray)
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
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):
102 fUnitClusterID(clusId),
105 fUnitCutFlag2(kPtSmaller),
106 fUnitSignalFlag(kBad),
107 fUnitDetectorFlag(det),
114 fUnitTrackRef(new TRefArray),
115 fUnitCellRef(new TRefArray),
116 fUnitClusterRef(new TRefArray)
121 AliJetUnitArray::AliJetUnitArray(const AliJetUnitArray& 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),
143 fUnitTrackRef(rUnit.fUnitTrackRef),
144 fUnitCellRef(rUnit.fUnitCellRef),
145 fUnitClusterRef(rUnit.fUnitClusterRef)
150 AliJetUnitArray& AliJetUnitArray::operator=(const AliJetUnitArray& rhs)
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;
173 fUnitTrackRef = rhs.fUnitTrackRef;
174 fUnitCellRef = rhs.fUnitCellRef;
175 fUnitClusterRef = rhs.fUnitClusterRef;
182 //------------------------------------------------------------------------
183 AliJetUnitArray::~AliJetUnitArray()
186 delete fUnitTrackRef;
188 delete fUnitClusterRef;
192 void AliJetUnitArray::ClearUnitTrackRef()
194 fUnitTrackRef->Clear();
197 void AliJetUnitArray::ClearUnitCellRef()
199 fUnitCellRef->Clear();
202 //------------------------------------------------------------------------
203 void AliJetUnitArray::SetUnitSignalFlagC(Bool_t init, AliJetFinderUnitSignalFlagType_t flag)
205 // Set signal flag of the charged particle
210 else fVc.push_back(flag);
213 //------------------------------------------------------------------------
214 void AliJetUnitArray::SetUnitSignalFlagN(Bool_t init, AliJetFinderUnitSignalFlagType_t flag)
216 // Set signal flag of the neutral cell
221 else fVn.push_back(flag);
225 //------------------------------------------------------------------------
226 Bool_t AliJetUnitArray::GetUnitSignalFlagC(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagc)
228 // Get signal flag of the charged particle
229 if(ind <= (Int_t)fVc.size())
231 flagc = (AliJetFinderUnitSignalFlagType_t)fVc[ind];
237 //------------------------------------------------------------------------
238 Bool_t AliJetUnitArray::GetUnitSignalFlagN(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagn)
240 // Get signal flag of the neutral cell
241 if(ind <= (Int_t)fVn.size())
243 flagn = (AliJetFinderUnitSignalFlagType_t)fVn[ind];
249 //------------------------------------------------------------------------
250 Float_t AliJetUnitArray::EtaToTheta(Float_t arg) const
252 // Eta to theta transformation
253 return 2.*atan(exp(-arg));
256 //------------------------------------------------------------------------
257 Bool_t AliJetUnitArray::operator>(AliJetUnitArray unit) const
259 // Greater than operator used by sort
260 if( fUnitEnergy > unit.GetUnitEnergy())
266 //------------------------------------------------------------------------
267 Bool_t AliJetUnitArray::operator<( AliJetUnitArray unit) const
269 // Less than operator used by sort
270 if( fUnitEnergy < unit.GetUnitEnergy())
276 //------------------------------------------------------------------------
277 Bool_t AliJetUnitArray::operator==( AliJetUnitArray unit) const
279 // equality operator used by sort
280 if( fUnitEnergy == unit.GetUnitEnergy())