]> git.uio.no Git - u/mrichter/AliRoot.git/blob - JETAN/AliJetUnitArray.cxx
FASTJETAN library loaded.
[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 (IReS)
26
27 //#include <vector>
28
29 #include <TVector3.h>
30 #include <TLorentzVector.h>
31 #include <TClonesArray.h>
32
33 #include "AliJetUnitArray.h"
34
35 ClassImp(AliJetUnitArray)
36
37 AliJetUnitArray::AliJetUnitArray():
38   fUnitEnergy(0.0),
39   fUnitEta(0.0),
40   fUnitPhi(0.0),
41   fUnitDeta(0.),
42   fUnitDphi(0.),
43   fUnitID(0),
44   fUnitTrackID(0),
45   fUnitNum(0),
46   fUnitClusterID(0),
47   fUnitFlag(kOutJet),
48   fUnitCutFlag(kPtSmaller),
49   fUnitCutFlag2(kPtSmaller),
50   fUnitSignalFlag(kBad), 
51   fUnitDetectorFlag(kTpc),
52   fUnitPx(0.),
53   fUnitPy(0.),
54   fUnitPz(0.),
55   fUnitMass(0.),
56   fV(0),
57   fVc(0),
58   fVn(0),
59   fVet(0)
60 {
61   // Default constructor
62 }  
63
64 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):
65   fUnitEnergy(en),
66   fUnitEta(eta),
67   fUnitPhi(phi),
68   fUnitDeta(Deta),
69   fUnitDphi(Dphi),
70   fUnitID(absId),
71   fUnitTrackID(esdId),
72   fUnitNum(0),
73   fUnitClusterID(clusId),
74   fUnitFlag(inout),
75   fUnitCutFlag(cut),
76   fUnitCutFlag2(cut2),
77   fUnitSignalFlag(signal), 
78   fUnitDetectorFlag(det),
79   fUnitPx(0.),
80   fUnitPy(0.),
81   fUnitPz(0.),
82   fUnitMass(mass),
83   fV(0),
84   fVc(0),
85   fVn(0),
86   fVet(0)
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   fV(0),
113   fVc(0),
114   fVn(0),
115   fVet(0)
116 {
117   // Constructor 2
118 }
119  
120 //------------------------------------------------------------------------
121 AliJetUnitArray::~AliJetUnitArray()
122 {
123   // Destructor 
124 }
125
126 //------------------------------------------------------------------------
127 void AliJetUnitArray::SetUnitSignalFlagC(Bool_t init, AliJetFinderUnitSignalFlagType_t flag)
128 {
129   // Set signal flag of the charged particle
130   if(init){
131     if(!fVc.empty())
132       fVc.clear();
133   }
134   else fVc.push_back(flag);
135 }
136
137 //------------------------------------------------------------------------
138 void AliJetUnitArray::SetUnitSignalFlagN(Bool_t init, AliJetFinderUnitSignalFlagType_t flag)
139 {
140   // Set signal flag of the neutral cell
141   if(init){
142     if(!fVn.empty())
143       fVn.clear();
144   }
145   else fVn.push_back(flag);
146 }
147
148 //------------------------------------------------------------------------
149 void AliJetUnitArray::SetUnitEtN(Bool_t init, Float_t et)
150 {
151   // Set transverse energy of the neutral cell
152   if(init){
153     if(!fVet.empty())
154       fVet.clear();
155   }
156   else fVet.push_back(et);
157 }
158
159
160 //------------------------------------------------------------------------
161 void AliJetUnitArray::SetUnitPxPyPz(Bool_t init, vector<Float_t> v3)
162 {
163   // Set momentum components of the charged particle
164   if(init)
165     {
166       if(!fV.empty()){
167         fV.clear();
168       }
169     }
170   else{
171     fV.push_back(v3);
172   }
173 }
174
175 //------------------------------------------------------------------------
176 Bool_t AliJetUnitArray::GetUnitSignalFlagC(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagc)
177 {
178   // Get signal flag of the charged particle
179   if(ind <= (Int_t)fVc.size())
180     {
181       flagc = (AliJetFinderUnitSignalFlagType_t)fVc[ind];
182       return kTRUE;
183     }
184   else return kFALSE;
185 }
186
187 //------------------------------------------------------------------------
188 Bool_t AliJetUnitArray::GetUnitSignalFlagN(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagn)
189 {
190   // Get signal flag of the neutral cell
191   if(ind <= (Int_t)fVn.size())
192     {
193       flagn = (AliJetFinderUnitSignalFlagType_t)fVn[ind];
194       return kTRUE;
195     }
196   else return kFALSE;
197 }
198
199 //------------------------------------------------------------------------
200 Bool_t AliJetUnitArray::GetUnitEtN(Int_t ind, Float_t &et)
201 {
202   // Get transverse energy of the neutral cell
203   if(ind <= (Int_t)fVet.size())
204     {
205       et = (Float_t)fVet[ind];
206       return kTRUE;
207     }
208   else return kFALSE;
209 }
210
211 //------------------------------------------------------------------------
212 Bool_t AliJetUnitArray::GetUnitPxPyPz(Int_t ind, Float_t &px, Float_t &py, Float_t &pz)
213 {
214   // Get momentum components of the charged particle
215   if(ind <= (Int_t)fV.size())
216     {
217       px = (Float_t)fV[ind][0];
218       py = (Float_t)fV[ind][1];
219       pz = (Float_t)fV[ind][2];
220       return kTRUE;
221     }
222   else return kFALSE;
223 }
224
225 //------------------------------------------------------------------------
226 Bool_t AliJetUnitArray::GetUnitPxPyPzE(Int_t ind, Float_t &px, Float_t &py, Float_t &pz, Float_t &en)
227 {
228 // Get 4-momentum components of the charged particle
229   if(ind <= (Int_t)fV.size())
230     {
231       px = (Float_t)fV[ind][0];
232       py = (Float_t)fV[ind][1];
233       pz = (Float_t)fV[ind][2];
234       en = TMath::Sqrt(px*px+py*py+pz*pz);
235       return kTRUE;
236     }
237   else return kFALSE;
238 }
239
240 //------------------------------------------------------------------------
241 Float_t  AliJetUnitArray::EtaToTheta(Float_t arg) const
242 {
243   // Eta to theta transformation
244   return 2.*atan(exp(-arg));
245 }
246
247 //------------------------------------------------------------------------
248 Bool_t AliJetUnitArray::operator>(AliJetUnitArray unit) const
249 {
250   // Greater than operator used by sort
251   if( fUnitEnergy > unit.GetUnitEnergy())
252     return kTRUE;
253   else 
254     return kFALSE;
255 }
256
257 //------------------------------------------------------------------------
258 Bool_t AliJetUnitArray::operator<( AliJetUnitArray unit) const
259 {
260   // Less 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==( AliJetUnitArray unit) const
269 {
270   // equality operator used by sort
271   if( fUnitEnergy == unit.GetUnitEnergy())
272     return kTRUE;
273   else
274     return kFALSE;
275 }