6 #include <TClonesArray.h>
8 #include "AliTkChargedJetFinder.h"
9 #include "AliTkHijingAna.h"
11 void AliTkHijingAna::setCenter(Float_t eta, Float_t phi) {
14 // new center makes particle list invalid
18 Float_t AliTkHijingAna::getCenterEta() const {
22 Float_t AliTkHijingAna::getCenterPhi() const {
26 Bool_t AliTkHijingAna::isParticleInRadius(TParticle *particle,Float_t radius) {
27 AliTkEtaPhiVector p(particle->Eta(),particle->Phi());
28 if (center.diff(p) < radius) {
35 Bool_t AliTkHijingAna::isParticleAccepted(TParticle *particle,Float_t pt,Bool_t neutral) {
37 //check if particle was final
39 status = (particle->GetStatusCode() % 100);
44 // if !neutral accept only charged particles, else accept everything
45 if(particle->Pt()<pt) return kFALSE;
47 TParticlePDG *partPDG = particle->GetPDG();
48 if (partPDG->Charge() == 0) {
56 Bool_t AliTkHijingAna::isParticleAcceptedALICE(TParticle *particle,Float_t /*pt*/,Bool_t /*neutral*/) {
57 // fake ALICE acceptance, only particles in |eta|<0.9
59 if (/*(isParticleAccepted(particle,pt,neutral)) &&*/ (TMath::Abs(particle->Eta()) < 0.9)) {
66 void AliTkHijingAna::clear() {
67 // clear TClonesArrays
82 void AliTkHijingAna::clearCone() {
92 void AliTkHijingAna::setParticles(TClonesArray *particles) {
93 // take particles and dont apply any further cuts
99 oParticles = new TClonesArray("TParticle",100000);
100 TIterator *iter = particles->MakeIterator();
103 while ((particle = (TParticle *) iter->Next()) != NULL) {
104 new ((*oParticles)[pos++]) TParticle(*particle);
110 void AliTkHijingAna::setParticles(TClonesArray *particles,Float_t pt,Bool_t neutral) {
111 // we are only interested in (charged) particles, to reduce computing time
112 // create a copy which contains only the charged particles
116 // new particle list makes old one invalid...
118 oParticles = new TClonesArray("TParticle",100000);
119 TIterator *iter = particles->MakeIterator();
122 while ((particle = (TParticle *) iter->Next()) != NULL) {
123 if (isParticleAccepted(particle,pt,neutral)) {
124 new ((*oParticles)[pos++]) TParticle(*particle);
130 TClonesArray *AliTkHijingAna::getParticlesInRadius(Float_t radius) {
131 return getParticlesInRadius(NULL,radius);
134 TClonesArray *AliTkHijingAna::getParticlesInRadius(TClonesArray *particles,
136 // this creates a TClonesArray with all charged particles in radius
137 // and ALICE acceptance
139 // uses the list of all charged particles (if created)
141 // used a previous list if radius < mRadius
143 if (updated && (mParticles != NULL) && (radius < mRadius)) {
144 particles = mParticles;
147 particles = oParticles;
155 TClonesArray *MyParticles = new TClonesArray("TParticle",100000);
158 TIterator *iter = particles->MakeIterator();
160 while ((particle = (TParticle *) iter->Next()) != NULL) {
161 if (/*isParticleAcceptedALICE(particle) &&*/
162 isParticleInRadius(particle,mRadius)) {
163 new ((*MyParticles)[pos++]) TParticle(*particle);
170 mParticles->Delete();
173 mParticles = MyParticles;
179 Int_t AliTkHijingAna::getNParticlesInRadius(Float_t ptCut) {
181 // must call getParticlesInRadius before!
184 // returns number of particles in cone with pt>ptCut
185 TIterator *iter = mParticles->MakeIterator();
188 while ((particle = (TParticle *) iter->Next()) != NULL) {
189 if (particle->Pt() > ptCut) {
197 Float_t AliTkHijingAna::getEtInRadius(Float_t ptCut) {
199 // must call getParticlesInRadius before!
202 // returns Et in cone using massless particles with pT>ptCut
203 TIterator *iter = mParticles->MakeIterator();
206 while((particle = (TParticle*) iter->Next()) != NULL) {
207 if (particle->Pt() > ptCut) {
208 Et += particle->Pt(); // assume massless particle...
215 Float_t AliTkHijingAna::getEtInRadius(TClonesArray *particles,Float_t radius) {
216 TIterator *iter = particles->MakeIterator();
219 while((particle = (TParticle*) iter->Next()) != NULL) {
220 if (/*isParticleAccepted(particle) &&*/
221 isParticleInRadius(particle,radius)) {
222 Et += particle->Pt(); // assume massless particle...
230 ClassImp(AliTkHijingAna)