Added new plots
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALJetFinderPlots.cxx
CommitLineData
f7d5860b 1
2/**************************************************************************
3 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * *
5 * Author: The ALICE Off-line Project. *
6 * Contributors are mentioned in the code where appropriate. *
7 * *
8 * Permission to use, copy, modify and distribute this software and its *
9 * documentation strictly for non-commercial purposes is hereby granted *
10 * without fee, provided that the above copyright notice appears in all *
11 * copies and that both the copyright notice and this permission notice *
12 * appear in the supporting documentation. The authors make no claims *
13 * about the suitability of this software for any purpose. It is *
14 * provided "as is" without express or implied warranty. *
15 **************************************************************************/
16
17
ee6b678f 18/* $Id$ */
f7d5860b 19
20//_________________________________________________________________________
21// Class for Filling JetFinder Plots
22//
23//*-- Author: Mark Horner (LBL/UCT)
24//
25//
26
27
28#include "TMath.h"
29#include "AliEMCALJetFinderPlots.h"
30
31ClassImp(AliEMCALJetFinderPlots)
32
33AliEMCALJetFinderPlots::AliEMCALJetFinderPlots()
34{
35 fInitialised = kFALSE;
36 fNominalEnergy = 0.0;
37 fConeRadius = 0.5;
38}
39
40void AliEMCALJetFinderPlots::InitPlots()
41{
42
43 hFragmFcn = new TH1F("hFragmFcn","Fragmentation Function",100,0,1);
44 hFragmFcn->Sumw2();
45 hPartonFragmFcn = new TH1F("hPartonFragmFcn","Parton Fragmentation Function",100,0,1);
46 hPartonFragmFcn->Sumw2();
47 hPartonJT = new TH1F("hPartonJT","Track Momentum Perpendicular to Parton Axis",100,0.,10.);
48 hPartonJT->Sumw2();
49 hPartonPL = new TH1F("hPartonPL","Track Momentum Parallel to Parton Axis ",100,0.,100.);
50 hPartonPL->Sumw2();
51 hJetJT = new TH1F("hJetJT","Track Momentum Perpendicular to Jet Axis",100,0.,10.);
52 hJetJT->Sumw2();
53 hJetPL = new TH1F("hJetPL","Track Momentum Parallel to Jet Axis ",100,0.,100.);
54 hJetPL->Sumw2();
55 hJetEt = new TH1F("hJetEt","E_{T}^{reco}",250,0.,250.);
56 hJetEt->Sumw2();
57 hJetEta = new TH1F("hJetEta","#eta_{jet}^{reco}",180,-0.9,0.9);
58 hJetEta->Sumw2();
59 hJetPhi = new TH1F("hJetPhi","#phi_{jet}^{reco}",62,0.,3.1);
60 hJetPhi->Sumw2();
61 hPartonEta = new TH1F("hPartonEta","#eta_{Parton}",180,-0.9,0.9);
62 hPartonEta->Sumw2();
63 hPartonPhi = new TH1F("hPartonPhi","#phi_{Parton}",62,0.,3.1);
64 hPartonPhi->Sumw2();
65 hEtaDiff = new TH1F("hEtaDiff","#eta_{jet}^{reco}-#eta_{jet}^{input}",100,-0.5,0.5);
66 hEtaDiff->Sumw2();
67 hPhiDiff = new TH1F("hPhiDiff","#phi_{jet}^{reco}-#phi_{jet}^{input}",100,-0.5,0.5);
68 hPhiDiff->Sumw2();
69 hNJets = new TH1F("hNJets","N Reconstructed jets",11,-0.5,10.5);
70 hNJets->Sumw2();
71 hEtaPhiSpread = new TH2F("hEtaPhiSpread","#eta - #phi Distribution of Reconstructed Jets",100,-0.5,0.5,100,-0.5,0.5);
72 hEtaPhiSpread->Sumw2();
73 hNJets->SetXTitle("N_{jets}^{reco}/event");
74 hNJets->SetYTitle("N_{events}");
75
76 //Jet properties
77 hJetEt->SetFillColor(16);
78 hJetEt->SetXTitle("E_{T}^{reco}");
79
80 hJetEta->SetFillColor(16);
81 hJetEta->SetXTitle("#eta_{jet}^{reco}");
82
83 hJetPhi->SetFillColor(16);
84 hJetPhi->SetXTitle("#phi_{jet}^{reco}");
85
86 hPartonEta->SetFillColor(16);
87 hPartonEta->SetXTitle("#eta_{parton}");
88
89 hPartonPhi->SetFillColor(16);
90 hPartonPhi->SetXTitle("#phi_{parton}");
91
92 hPartonPL->SetXTitle("p (GeV/c)");
93 hPartonJT->SetXTitle("p (GeV/c)");
94
95 hPartonFragmFcn->SetXTitle("Z = p_{T}^{Chg}/E_{T}^{parton}");
96
97 //Jet component properties
98
99 hJetPL->SetXTitle("p (GeV/c)");
100 hJetJT->SetXTitle("p (GeV/c)");
101 hFragmFcn->SetXTitle("Z = p_{T}^{Chg}/E_{T}^{reco}");
102 hPartonFragmFcn->SetXTitle("Z = p_{T}^{Chg}/E_{T}^{reco}");
103
104 hEtaDiff->SetXTitle("#eta_{jet}^{reco}-#eta_{jet}^{input}");
105 hPhiDiff->SetXTitle("#phi_{jet}^{reco}-#phi_{jet}^{input}");
106 hEtaPhiSpread->SetXTitle("#eta");
107 hEtaPhiSpread->SetYTitle("#phi");
108 fInitialised = kTRUE;
109
110}
111
112AliEMCALJetFinderPlots::~AliEMCALJetFinderPlots(){
113
114delete hFragmFcn;// = new TH1F("hFragmFcn","Fragmentation Function",100,0,1);
115delete hPartonJT;// = new TH1F("hPartonJT","Track Momentum Perpendicular to Parton Axis",100,0.,10.);
116delete hPartonPL;// = new TH1F("hPartonPL","Track Momentum Parallel to Parton Axis ",100,0.,100.);
117delete hJetJT;// = new TH1F("hJetJT","Track Momentum Perpendicular to Jet Axis",100,0.,10.);
118delete hJetPL;// = new TH1F("hJetPL","Track Momentum Parallel to Jet Axis ",100,0.,100.);
119delete hJetEt;// = new TH1F("hJetEt","E_{T}^{reco}",250,0.,250.);
120delete hJetEta;// = new TH1F("hJetEta","#eta_{jet}^{reco}",180,-0.9,0.9);
121delete hJetPhi;// = new TH1F("hJetPhi","#phi_{jet}^{reco}",62,0.,3.1);
122delete hPartonEta;// = new TH1F("hPartonEta","#eta_{Parton}",180,-0.9,0.9);
123delete hPartonPhi;// = new TH1F("hPartonPhi","#phi_{Parton}",62,0.,3.1);
124delete hEtaDiff;// = new TH1F("hEtaDiff","#eta_{jet}^{reco}-#eta_{jet}^{input}",100,-0.5,0.5);
125delete hPhiDiff;// = new TH1F("hPhiDiff","#phi_{jet}^{reco}-#phi_{jet}^{input}",100,-0.5,0.5);
126delete hNJets;// = new TH1F("hNJets","N Reconstructed jets",11,-0.5,10.5);
127delete hEtaPhiSpread;
128}
129
130void AliEMCALJetFinderPlots::FillFromOutput(AliEMCALJetFinderOutput* output)
131{
132if (!fInitialised) InitPlots();
133 fOutput = output;
134
135 Int_t nPartons = fOutput->GetNPartons();
136 hNJets->Fill(fOutput->GetNJets());
137 if (fOutput->GetNJets()!=1) return;
138 AliEMCALParton* parton;
139 AliEMCALJet* jet;
140 jet = fOutput->GetJet(0);
141
142 hJetEt->Fill(jet->Energy());
143 hJetEta->Fill(jet->Eta() );
144 hJetPhi->Fill(jet->Phi() );
145 if (nPartons ==0) return;
146 parton = fOutput->GetParton(0);
147 hPartonEta->Fill( parton->Eta() );
148 hPartonPhi->Fill( parton->Phi() );
149
150 //hJetEtDiff->Fill( jet->Energy() - parton->Energy() );
151 hEtaDiff->Fill( jet->Eta() - parton->Eta() );
152 hPhiDiff->Fill( jet->Phi() - parton->Phi() );
153 hEtaPhiSpread->Fill(jet->Eta()-parton->Eta(),jet->Phi() - parton->Phi());
154 /*
155 Float_t *pt,*phi,*eta;
156 Int_t *pdg;
157 pt = new Float_t[parton->GetNTracks()];
158 eta = new Float_t[parton->GetNTracks()];
159 phi = new Float_t[parton->GetNTracks()];
160 pdg = new Int_t[parton->GetNTracks()];*/
161
162
163
164 Float_t pt[2000];
165 Float_t eta[2000];
166 Float_t phi[2000];
167 Int_t pdg[2000];
168
169 parton->GetTrackList(pt,eta,phi,pdg);
170 for(Int_t iT=0; iT< parton->GetNTracks() ; iT++ )
171 {
172 if ( (eta[iT]-parton->Eta())*(eta[iT]-parton->Eta())+
173 (phi[iT]-parton->Phi())*(phi[iT]-parton->Phi()) >fConeRadius * fConeRadius ) continue;
174 Double_t tt = 2.0*atan(exp(-eta[iT])); // These names are short to make the equation manageable
175 Double_t rt = 2.0*atan(exp(-parton->Eta()));
176 Double_t ctt = cos(tt);
177 Double_t crt = cos(rt);
178 Double_t stt = sin(tt);
179 Double_t srt = sin(rt);
180 Double_t ctp = cos(phi[iT]);
181 Double_t crp = cos(parton->Phi());
182 Double_t stp = sin(phi[iT]);
183 Double_t srp = sin(parton->Phi());
184 Double_t alpha = acos(crp*ctp*srt*stt+srp*stp*srt*stt+crt*ctt);
185 Double_t correctp = pt[iT]/stt;
186 hPartonPL->Fill( correctp*cos(alpha));
187 if ( (parton->Eta()-eta[iT])*(parton->Eta()-eta[iT]) +
188 (parton->Phi()-phi[iT])*(parton->Phi()-phi[iT]) < 0.2*0.2 )
189 hPartonJT->Fill( correctp*sin(alpha));
190 if (fNominalEnergy == 0.0) {
191 hPartonFragmFcn->Fill( correctp*sin(tt)/parton->Energy() );
192 }else
193 {
194 hPartonFragmFcn->Fill(correctp*sin(tt)/fNominalEnergy);
195 }
196 }// loop over tracks
197
198/*
199 pt = new Float_t[jet->NTracks()];
200 eta = new Float_t[jet->NTracks()];
201 phi = new Float_t[jet->NTracks()];
202 pdg = new Int_t[jet->NTracks()];*/
203 jet->TrackList(pt,eta,phi,pdg);
204 for(Int_t iT=0; iT< jet->NTracks() ; iT++ )
205 {
206 Double_t tt = 2.0*atan(exp(-eta[iT])); // These names are short to make the equation manageable
207 Double_t rt = 2.0*atan(exp(-jet->Eta()));
208 Double_t ctt = cos(tt);
209 Double_t crt = cos(rt);
210 Double_t stt = sin(tt);
211 Double_t srt = sin(rt);
212 Double_t ctp = cos(phi[iT]);
213 Double_t crp = cos(jet->Phi());
214 Double_t stp = sin(phi[iT]);
215 Double_t srp = sin(jet->Phi());
216 Double_t alpha = acos(crp*ctp*srt*stt+srp*stp*srt*stt+crt*ctt);
217 Double_t correctp = pt[iT]/stt;
218 hJetPL->Fill( correctp*cos(alpha));
219 if ( (jet->Eta()-eta[iT])*(jet->Eta()-eta[iT]) +
220 (jet->Phi()-phi[iT])*(jet->Phi()-phi[iT]) < 0.2*0.2 )
221 hJetJT->Fill( correctp*sin(alpha));
222 if (fNominalEnergy==0.0){
223 hFragmFcn->Fill( correctp*sin(tt)/parton->Energy() );
224 } else
225 {
226 hFragmFcn->Fill( correctp*sin(tt)/fNominalEnergy );
227 }
228 }// loop over tracks
229
230}
231
232
233