reverting r45444 to disentangle modules and make porting possible
[u/mrichter/AliRoot.git] / HLT / JET / cone / AliHLTJETConeJetCandidate.cxx
CommitLineData
7c3c85cd 1//-*- Mode: C++ -*-
2// $Id: AliHLTJETConeJetCandidate.cxx $
3//**************************************************************************
4//* This file is property of and copyright by the ALICE HLT Project *
5//* ALICE Experiment at CERN, All rights reserved. *
6//* *
7//* Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de> *
8//* for The ALICE HLT Project. *
9//* *
10//* Permission to use, copy, modify and distribute this software and its *
11//* documentation strictly for non-commercial purposes is hereby granted *
12//* without fee, provided that the above copyright notice appears in all *
13//* copies and that both the copyright notice and this permission notice *
14//* appear in the supporting documentation. The authors make no claims *
15//* about the suitability of this software for any purpose. It is *
16//* provided "as is" without express or implied warranty. *
17//**************************************************************************
18
19/** @file AliHLTJETConeJetCandidate.cxx
20 @author Jochen Thaeder
21 @date
22 @brief Jet candidate of the cone finder
23*/
24
25// see header file for class documentation
26// or
27// refer to README to build package
28// or
29// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
30
31#if __GNUC__>= 3
32 using namespace std;
33#endif
34
35#include "AliHLTJETConeJetCandidate.h"
36#include "AliHLTJETConeEtaPhiCell.h"
37
38/** ROOT macro for the implementation of ROOT specific class methods */
39ClassImp(AliHLTJETConeJetCandidate)
40
41/*
42 * ---------------------------------------------------------------------------------
43 * Constructor / Destructor
44 * ---------------------------------------------------------------------------------
45 */
46
47//##################################################################################
48 AliHLTJETConeJetCandidate::AliHLTJETConeJetCandidate() :
80d83a65 49 fSeedCellIdx(0.),
50 fSeedEtaIdx(0.),
51 fSeedPhiIdx(0.),
7c3c85cd 52 fSeedEta(0.),
53 fSeedPhi(0.),
54 fSeedPt(0.),
55 fEta(0.),
56 fPhi(0.),
57 fPt(0.),
58 fNTracks(0),
59 fUseWholeCell(kTRUE),
60 fConeRadius2(0.) {
61 // see header file for class documentation
62 // or
63 // refer to README to build package
64 // or
65 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
66}
67
68
69//##################################################################################
70AliHLTJETConeJetCandidate::AliHLTJETConeJetCandidate( const Float_t* aEtaPhi,
71 const Int_t* aGridIdx,
72 Float_t coneRadius,
73 Bool_t useWholeCell ) :
74 fSeedCellIdx(aGridIdx[kIdxPrimary]),
75 fSeedEtaIdx(aGridIdx[kIdxEtaPrimary]),
76 fSeedPhiIdx(aGridIdx[kIdxPhiPrimary]),
77 fSeedEta(aEtaPhi[kIdxEta]),
78 fSeedPhi(aEtaPhi[kIdxPhi]),
79 fSeedPt(aEtaPhi[kIdxPt]),
80 fEta(0.0),
81 fPhi(0.0),
82 fPt(0.0),
83 fNTracks(0),
84 fUseWholeCell(useWholeCell),
85 fConeRadius2(coneRadius*coneRadius) {
86 // see header file for class documentation
87}
88
89//##################################################################################
90AliHLTJETConeJetCandidate::~AliHLTJETConeJetCandidate() {
91 // see header file for class documentation
92}
93
94/*
95 * ---------------------------------------------------------------------------------
96 * Process
97 * ---------------------------------------------------------------------------------
98 */
99
100//##################################################################################
101Int_t AliHLTJETConeJetCandidate::AddCell( AliHLTJETConeEtaPhiCell* cell ) {
102 // see header file for class documentation
103
104 // -- use whole cell
105 // -------------------
106 if ( fUseWholeCell ) {
107
108 fPt += cell->GetPt();
109 fPhi += cell->GetPhi();
110 fEta += cell->GetEta();
111 fNTracks += cell->GetNTracks();
112
113 HLTDebug("Cell : eta: %f - phi: %f - pt: %f - nTracks: %d .",
114 cell->GetEta(), cell->GetPhi(), cell->GetPt(), cell->GetNTracks() );
115
116 } // if ( fUseWholeCell ) {
117
118 // -- radius compared to every track
119 // -----------------------------------
120 else {
121
122 HLTDebug("Check NTracks %d.", cell->GetNTracks());
123
124 TObjArray* trackList = cell->GetTrackList();
125
126 // -- Loop over all tracks in cell
127 for ( Int_t iter = 0; iter < cell->GetNTracks(); iter++ ) {
128
129 // -- MC particles
130 if ( cell->GetTrackType() == kTrackMC ) {
131
132 TParticle* particle = reinterpret_cast<TParticle*> ((*trackList)[iter]);
133
134 // -- Check if in cone
135 if ( ! InCone( particle->Eta(), particle->Phi() ) )
136 continue;
137
138 fPt += particle->Pt();
139 fPhi += particle->Phi();
140 fEta += particle->Eta();
141 ++fNTracks;
142
143 HLTDebug("Particle : eta: %f - phi: %f - pt: %f .",
144 particle->Eta(), particle->Phi(), particle->Pt() );
145
146 }
147 else if ( cell->GetTrackType() == kTrackESD ) {
148
149 AliESDtrack* esdTrack = reinterpret_cast<AliESDtrack*> ((*trackList)[iter]);
150
151 // -- Check if in cone
152 if ( ! InCone( esdTrack->Eta(), esdTrack->Phi() ) )
153 continue;
154
155 fPt += esdTrack->Pt();
156 fPhi += esdTrack->Phi();
157 fEta += esdTrack->Eta();
158 ++fNTracks;
159
160 HLTDebug("ESDTrack : eta: %f - phi: %f - pt: %f .",
161 esdTrack->Eta(), esdTrack->Phi(), esdTrack->Pt() );
162 }
163 else {
164 HLTError("Not implemented yet...");
165 }
166
167 } // for ( Int_t iter = 0; iter > cell->GetNTracks(); iter++ ) {
168 }
169
170 return 0;
171}
172
173/*
174 * ---------------------------------------------------------------------------------
175 * Sort of JetCandidates
176 * ---------------------------------------------------------------------------------
177 */
178
179//##################################################################################
180Int_t AliHLTJETConeJetCandidate::Compare( const TObject* obj) const {
181 // see header file for class documentation
182
183 if (this == obj)
184 return 0;
185
186 if ( fSeedPt < (dynamic_cast<AliHLTJETConeJetCandidate*>
187 ( const_cast<TObject*>(obj)))->GetSeedPt() )
188 return 1;
189 else
190 return -1;
191}
192
193/*
194 * ---------------------------------------------------------------------------------
195 * Helper - private
196 * ---------------------------------------------------------------------------------
197 */
198
199//##################################################################################
200Float_t AliHLTJETConeJetCandidate::GetDistance2( const Float_t eta1, const Float_t phi1,
201 const Float_t eta2, const Float_t phi2) {
202 // see header file for class documentation
203
204 return ( (eta1-eta2)*(eta1-eta2) ) + ( (phi1-phi2)*(phi1-phi2) );
205}
206
207//##################################################################################
208Bool_t AliHLTJETConeJetCandidate::InCone( Float_t eta, Float_t phi ) {
209 // see header file for class documentation
210
211 if ( GetDistance2(fSeedEta,fSeedPhi,eta,phi) <= fConeRadius2 )
212 return kTRUE;
213 else
214 return kFALSE;
215}