]>
Commit | Line | Data |
---|---|---|
df9db588 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-2007, 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 | /* $Id$ */ | |
17 | ||
18 | //------------------------------------------------------------------------- | |
87102d3c | 19 | // AOD class for jets |
20 | // Author: Andreas Morsch, CERN | |
df9db588 | 21 | //------------------------------------------------------------------------- |
22 | ||
87102d3c | 23 | #include <TLorentzVector.h> |
df9db588 | 24 | #include "AliAODJet.h" |
25 | ||
26 | ClassImp(AliAODJet) | |
27 | ||
28 | ||
29 | //______________________________________________________________________________ | |
a1708071 | 30 | AliAODJet::AliAODJet() : |
ff7c57dd | 31 | AliVParticle(), |
2e7293a2 | 32 | fMomentum(0), |
33 | fRefTracks(new TRefArray()) | |
df9db588 | 34 | { |
35 | // constructor | |
a1708071 | 36 | fBackgEnergy[0] = 0.; |
37 | fBackgEnergy[1] = 0.; | |
38 | fEffectiveArea[0] = 0.; | |
39 | fEffectiveArea[1] = 0.; | |
df9db588 | 40 | } |
41 | ||
87102d3c | 42 | AliAODJet::AliAODJet(Double_t px, Double_t py, Double_t pz, Double_t e): |
ff7c57dd | 43 | AliVParticle(), |
2e7293a2 | 44 | fMomentum(0), |
45 | fRefTracks(new TRefArray()) | |
87102d3c | 46 | { |
47 | // constructor | |
87102d3c | 48 | fBackgEnergy[0] = 0.; |
49 | fBackgEnergy[1] = 0.; | |
50 | fEffectiveArea[0] = 0.; | |
51 | fEffectiveArea[1] = 0.; | |
9333290e | 52 | fMomentum = new TLorentzVector(px, py, pz, e); |
87102d3c | 53 | } |
54 | ||
a1708071 | 55 | AliAODJet::AliAODJet(TLorentzVector & p): |
ff7c57dd | 56 | AliVParticle(), |
2e7293a2 | 57 | fMomentum(0), |
58 | fRefTracks(new TRefArray()) | |
87102d3c | 59 | { |
60 | // constructor | |
87102d3c | 61 | fBackgEnergy[0] = 0.; |
62 | fBackgEnergy[1] = 0.; | |
63 | fEffectiveArea[0] = 0.; | |
64 | fEffectiveArea[1] = 0.; | |
9333290e | 65 | fMomentum = new TLorentzVector(p); |
87102d3c | 66 | } |
67 | ||
68 | ||
df9db588 | 69 | //______________________________________________________________________________ |
70 | AliAODJet::~AliAODJet() | |
71 | { | |
72 | // destructor | |
87102d3c | 73 | delete fMomentum; |
2e7293a2 | 74 | delete fRefTracks; |
df9db588 | 75 | } |
76 | ||
77 | //______________________________________________________________________________ | |
78 | AliAODJet::AliAODJet(const AliAODJet& jet) : | |
ff7c57dd | 79 | AliVParticle(jet), |
0cd61c1d | 80 | fMomentum(0), |
81 | fRefTracks(0) | |
df9db588 | 82 | { |
83 | // Copy constructor | |
2e7293a2 | 84 | fBackgEnergy[0] = jet.fBackgEnergy[0]; |
d3ad3ee1 | 85 | fBackgEnergy[1] = jet.fBackgEnergy[1]; |
2e7293a2 | 86 | fEffectiveArea[0] = jet.fEffectiveArea[0]; |
87 | fEffectiveArea[1] = jet.fEffectiveArea[1]; | |
9333290e | 88 | |
89 | fMomentum = new TLorentzVector(*jet.fMomentum); | |
90 | fRefTracks = new TRefArray(*jet.fRefTracks); | |
df9db588 | 91 | } |
92 | ||
93 | //______________________________________________________________________________ | |
94 | AliAODJet& AliAODJet::operator=(const AliAODJet& jet) | |
95 | { | |
96 | // Assignment operator | |
97 | if(this!=&jet) { | |
9333290e | 98 | |
99 | fBackgEnergy[0] = jet.fBackgEnergy[0]; | |
100 | fBackgEnergy[1] = jet.fBackgEnergy[1]; | |
101 | fEffectiveArea[0] = jet.fEffectiveArea[0]; | |
102 | fEffectiveArea[1] = jet.fEffectiveArea[1]; | |
103 | ||
104 | delete fMomentum; | |
105 | fMomentum = new TLorentzVector(*jet.fMomentum); | |
106 | delete fRefTracks; | |
107 | fRefTracks = new TRefArray(*jet.fRefTracks); | |
df9db588 | 108 | } |
109 | ||
110 | return *this; | |
111 | } | |
112 | ||
87102d3c | 113 | void AliAODJet::Print(Option_t* /*option*/) const |
114 | { | |
115 | // Print information of all data members | |
116 | printf("Jet 4-vector:\n"); | |
117 | printf(" E = %13.3f\n", E() ); | |
118 | printf(" Px = %13.3f\n", Px()); | |
119 | printf(" Py = %13.3f\n", Py()); | |
120 | printf(" Pz = %13.3f\n", Pz()); | |
121 | printf("Background Energy:\n"); | |
122 | printf("Charged: %13.3f\n", ChargedBgEnergy()); | |
123 | printf("Neutral: %13.3f\n", NeutralBgEnergy()); | |
124 | printf("Total: %13.3f\n", TotalBgEnergy()); | |
125 | printf("Effective Area: \n"); | |
126 | printf("Charged: %13.3f\n", EffectiveAreaCharged()); | |
127 | printf("Neutral: %13.3f\n", EffectiveAreaNeutral()); | |
128 | } | |
944efc80 | 129 | |
130 | void AliAODJet::SetPxPyPzE(Double_t px, Double_t py, Double_t pz, Double_t e){ | |
131 | // | |
132 | // Set the four Momentum from outside | |
133 | // MomentumVector()->SetPxPyPzE() cannot be used since pointer can be 0x0 | |
134 | // | |
135 | ||
136 | if(!fMomentum){ | |
137 | fMomentum = new TLorentzVector(px,py,pz,e); | |
138 | } | |
139 | else{ | |
140 | fMomentum->SetPxPyPzE(px,py,pz,e); | |
141 | } | |
142 | } | |
a19f293d | 143 | |
144 | Double_t AliAODJet::DeltaR(const AliVParticle* part){ | |
145 | ||
146 | // Helper function to calculate the distance between two jets | |
147 | // or a jet and particle | |
148 | ||
149 | Double_t dPhi = Phi() - part->Phi(); | |
150 | if(dPhi>TMath::Pi())dPhi = dPhi - 2.*TMath::Pi(); | |
151 | if(dPhi<(-1.*TMath::Pi()))dPhi = dPhi + 2.*TMath::Pi(); | |
152 | Double_t dEta = Eta() - part->Eta(); | |
153 | Double_t dR = TMath::Sqrt(dPhi*dPhi+dEta*dEta); | |
154 | return dR; | |
155 | } |