3 //__________________________________________________________
4 ///////////////////////////////////////////////////////////////////
6 // class AliJetEventParticles
8 // loizides@ikf.uni-frankfurt.de
10 ///////////////////////////////////////////////////////////////////
12 #include <Riostream.h>
13 #include <TClonesArray.h>
14 #include "AliJetParticle.h"
15 #include "AliJetEventParticles.h"
17 ClassImp(AliJetEventParticles)
19 AliJetEventParticles::AliJetEventParticles(Int_t size) :
21 fParticles(new TClonesArray("AliJetParticle",size)),
31 // Default Constructor
32 for (Int_t i = 0; i < 4; i++) fZquench[i] = 0.;
33 for (Int_t i = 0; i < 10; i++)
34 for (Int_t j = 0; j < 4; j++) {
35 fJets[j][i]=0; // Trigger jets
36 fUQJets[j][i]=0; // Unquenched trigger jets
40 AliJetEventParticles::AliJetEventParticles(const AliJetEventParticles& source) :
42 fNParticles(source.fNParticles),
43 fParticles(new TClonesArray("AliJetParticle",source.fNParticles)),
44 fVertexX(source.GetVertexX()),
45 fVertexY(source.GetVertexY()),
46 fVertexZ(source.GetVertexZ()),
47 fTrials(source.Trials()),
48 fNJets(source.NTriggerJets()),
49 fNUQJets(source.NUQTriggerJets()),
50 fXJet(source.GetXJet()),
51 fYJet(source.GetXJet())
54 for(Int_t i =0; i<fNParticles; i++)
56 const AliJetParticle *kjp=(const AliJetParticle *)source.fParticles->At(i);
57 new((*fParticles)[i]) AliJetParticle(*(kjp));
59 for (Int_t i = 0; i < 4; i++) fZquench[i] = 0.;
60 for (Int_t i = 0; i < 10; i++)
61 for (Int_t j = 0; j < 4; j++) {
62 fJets[j][i]=0; // Trigger jets
63 fUQJets[j][i]=0; // Unquenched trigger jets
65 source.GetZQuench(fZquench);
66 for (Int_t i = 0; i < NTriggerJets(); i++){
67 source.TriggerJet(i,fJets[0][i],fJets[1][i],fJets[2][i],fJets[3][i]);
69 for (Int_t i = 0; i < NUQTriggerJets(); i++){
70 source.UQJet(i,fUQJets[0][i],fUQJets[1][i],fUQJets[2][i],fUQJets[3][i]);
74 AliJetEventParticles::~AliJetEventParticles()
81 void AliJetEventParticles::Reset(Int_t size)
83 //deletes all particles from the event
84 if(fParticles) fParticles->Clear();
85 if(size>=0) fParticles->Expand(size);
96 for (Int_t i = 0; i < 4; i++) fZquench[i] = 0.;
97 for (Int_t i = 0; i < 10; i++)
98 for (Int_t j = 0; j < 4; j++) {
99 fJets[j][i]=0; // Trigger jets
100 fUQJets[j][i]=0; // Unquenched trigger jets
104 void AliJetEventParticles::AddParticle(AliJetParticle* part)
106 //Adds new particle to the event
107 fParticles->AddAt(part,fNParticles++);
110 void AliJetEventParticles::AddParticle(const AliJetParticle* part)
112 //Adds new particle to the event
113 new((*fParticles)[fNParticles++]) AliJetParticle(*part);
116 void AliJetEventParticles::AddParticle(const TParticle* part,Int_t idx, Int_t l)
118 //Adds new particle to the event
119 new((*fParticles)[fNParticles++]) AliJetParticle(part,idx,l);
122 void AliJetEventParticles::AddParticle(Float_t px, Float_t py, Float_t pz,
123 Float_t etot, Int_t idx, Int_t l)
125 //Adds new particle to the event
126 new((*fParticles)[fNParticles++]) AliJetParticle(px,py,pz,etot,idx,l);
129 void AliJetEventParticles::AddParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx, Int_t l,
130 Float_t pt, Float_t phi, Float_t eta)
132 //Adds new particle to the event
133 new((*fParticles)[fNParticles++]) AliJetParticle(px,py,pz,etot,idx,l,pt,phi,eta);
136 const AliJetParticle* AliJetEventParticles::GetParticleSafely(Int_t n)
138 //returns nth particle with range check
139 if( (n<0) || (fNParticles<=n) ) return 0;
140 return (const AliJetParticle*)fParticles->At(n);
143 void AliJetEventParticles::AddJet(Float_t px, Float_t py, Float_t pz, Float_t e)
149 fJets[0][fNJets] = px;
150 fJets[1][fNJets] = py;
151 fJets[2][fNJets] = pz;
152 fJets[3][fNJets] = e;
155 printf("\nWarning: More than 10 jets triggered !!\n");
159 void AliJetEventParticles::AddJet(Float_t p[4])
165 fJets[0][fNJets] = p[0];
166 fJets[1][fNJets] = p[1];
167 fJets[2][fNJets] = p[2];
168 fJets[3][fNJets] = p[3];
171 printf("\nWarning: More than 10 jets triggered !!\n");
175 void AliJetEventParticles::AddUQJet(Float_t px, Float_t py, Float_t pz, Float_t e)
181 fUQJets[0][fNUQJets] = px;
182 fUQJets[1][fNUQJets] = py;
183 fUQJets[2][fNUQJets] = pz;
184 fUQJets[3][fNUQJets] = e;
187 printf("\nWarning: More than 10 jets triggered !!\n");
191 void AliJetEventParticles::AddUQJet(Float_t p[4])
197 fUQJets[0][fNUQJets] = p[0];
198 fUQJets[1][fNUQJets] = p[1];
199 fUQJets[2][fNUQJets] = p[2];
200 fUQJets[3][fNUQJets] = p[3];
203 printf("\nWarning: More than 10 jets triggered !!\n");
207 void AliJetEventParticles::SetZQuench(Double_t z[4])
210 // Set quenching fraction
212 for (Int_t i = 0; i < 4; i++) fZquench[i] = z[i];
215 void AliJetEventParticles::GetZQuench(Double_t z[4]) const
218 // Get quenching fraction
220 for (Int_t i = 0; i < 4; i++) z[i] = fZquench[i];
223 void AliJetEventParticles::TriggerJet(Int_t i, Float_t p[4]) const
229 printf("\nWarning: TriggerJet, index out of Range!!\n");
238 void AliJetEventParticles::TriggerJet(Int_t i, Float_t &p1, Float_t &p2, Float_t &p3, Float_t &E) const
244 printf("\nWarning: TriggerJet, index out of Range!!\n");
253 void AliJetEventParticles::UQJet(Int_t i, Float_t p[4]) const
259 printf("\nWarning: Unquenched Jets, index out of Range!!\n");
261 p[0] = fUQJets[0][i];
262 p[1] = fUQJets[1][i];
263 p[2] = fUQJets[2][i];
264 p[3] = fUQJets[3][i];
268 void AliJetEventParticles::UQJet(Int_t i, Float_t &p1, Float_t &p2, Float_t &p3, Float_t &E) const
274 printf("\nWarning: Unquenched Jets, index out of Range!!\n");
283 void AliJetEventParticles::SetXYJet(Double_t x, Double_t y)
286 // Add jet production point
292 void AliJetEventParticles::Print(Option_t* /*t*/) const
294 cout << "--- AliJetEventParticles ---" << endl;
295 if(fHeader.Length()) cout << fHeader.Data() << endl;
296 cout << "Particles in Event: " << fNParticles << endl;
298 cout << "Unquenched Jets: " << fNUQJets << endl;
299 for(Int_t i = 0; i<fNUQJets; i++){
300 Float_t x=fUQJets[0][i];
301 Float_t y=fUQJets[1][i];
302 Float_t z=fUQJets[2][i];
303 Float_t e=fUQJets[3][i];
304 Float_t ptj=TMath::Sqrt(x*x+y*y);
305 Float_t thj=TMath::ATan2(ptj,z);
306 Float_t etaj=-TMath::Log(TMath::Tan(thj/2));
307 Float_t phj=TMath::Pi()+TMath::ATan2(-y,-x);
308 Float_t et=e*TMath::Sin(thj);
309 cout << i << " " << et << " " << etaj << " " << phj << endl;
313 cout << "Triggered Jets: " << fNJets << endl;
314 for(Int_t i = 0; i<fNJets; i++){
315 Float_t x=fJets[0][i];
316 Float_t y=fJets[1][i];
317 Float_t z=fJets[2][i];
318 Float_t e=fJets[3][i];
319 Float_t ptj=TMath::Sqrt(x*x+y*y);
320 Float_t thj=TMath::ATan2(ptj,z);
321 Float_t etaj=-TMath::Log(TMath::Tan(thj/2));
322 Float_t phj=TMath::Pi()+TMath::ATan2(-y,-x);
323 Float_t et=e*TMath::Sin(thj);
324 cout << i << " " << et << " " << etaj << " " << phj << endl;