]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/QA/tasks/AliAnalysisTaskHLTPHOS.cxx
Fixing coding rule violations
[u/mrichter/AliRoot.git] / HLT / QA / tasks / AliAnalysisTaskHLTPHOS.cxx
CommitLineData
a63c69d8 1// $Id$\r
2\r
3//**************************************************************************\r
4//* This file is property of and copyright by the ALICE HLT Project *\r
5//* ALICE Experiment at CERN, All rights reserved. *\r
6//* *\r
7//* Primary Authors: Zhongbao Yin <zbyin@mail.ccnu.edu.cn>, *\r
8//* Kalliopi Kanaki <Kalliopi.Kanaki@ift.uib.no> *\r
fc0eba5b 9//* Svein Lindal <svein.lindal@gmail.com> *\r
a63c69d8 10//* for The ALICE HLT Project. *\r
11//* *\r
12//* Permission to use, copy, modify and distribute this software and its *\r
13//* documentation strictly for non-commercial purposes is hereby granted *\r
14//* without fee, provided that the above copyright notice appears in all *\r
15//* copies and that both the copyright notice and this permission notice *\r
16//* appear in the supporting documentation. The authors make no claims *\r
17//* about the suitability of this software for any purpose. It is *\r
18//* provided "as is" without express or implied warranty. *\r
19//**************************************************************************\r
20\r
21/** @file AliAnalysisTaskHLTPHOS.cxx\r
fc0eba5b 22 @author Zhongbao Yin, Kalliopi Kanaki, Svein Lindal\r
a63c69d8 23 @date\r
24 @brief\r
25*/\r
26\r
27#include <iostream>\r
28\r
29#include "TChain.h"\r
30#include "TTree.h"\r
31#include "TH1F.h"\r
32#include "TH2F.h"\r
33#include "TCanvas.h"\r
34#include "TVector3.h"\r
35#include "TString.h"\r
36#include "TObjArray.h"\r
37#include "TFile.h"\r
38\r
39#include "AliESDEvent.h"\r
40#include "AliESDRun.h"\r
41#include "AliESDInputHandler.h"\r
fc0eba5b 42#include "AliESDCaloCluster.h"\r
a63c69d8 43\r
44#include "AliAnalysisTask.h"\r
45#include "AliAnalysisManager.h"\r
46#include "AliAnalysisTaskHLTPHOS.h"\r
47\r
48\r
49ClassImp(AliAnalysisTaskHLTPHOS)\r
50\r
fc0eba5b 51\r
a63c69d8 52//===========================================================================================\r
53\r
c32fb395 54AliAnalysisTaskHLTPHOS::AliAnalysisTaskHLTPHOS() : AliAnalysisTaskHLTCalo()\r
55 ,fHistOnlTrk2PHOS(0)\r
56 ,fHistOfflTrk2PHOS(0)\r
57 ,fHistOfflTrk2PHOSTrig(0)\r
58 ,fHistOfflTrk2PHOSNoTrig(0)\r
59{\r
60 // Constructor\r
61\r
62 // Define input and output slots here\r
63 // Input slot #0 works with a TChain\r
64 // DefineInput(0, TChain::Class());\r
65 // Output slot #0 writes into a TH1 container\r
66\r
67 // DefineOutput(1, TList::Class());\r
68}\r
69\r
70\r
fc0eba5b 71AliAnalysisTaskHLTPHOS::AliAnalysisTaskHLTPHOS(const char *name) : AliAnalysisTaskHLTCalo(name)\r
72 ,fHistOnlTrk2PHOS(0)\r
73 ,fHistOfflTrk2PHOS(0)\r
74 ,fHistOfflTrk2PHOSTrig(0)\r
75 ,fHistOfflTrk2PHOSNoTrig(0)\r
a63c69d8 76{\r
77 // Constructor\r
78\r
79 // Define input and output slots here\r
80 // Input slot #0 works with a TChain\r
81 // DefineInput(0, TChain::Class());\r
82 // Output slot #0 writes into a TH1 container\r
83\r
fc0eba5b 84 // DefineOutput(1, TList::Class());\r
a63c69d8 85}\r
86\r
87const Float_t AliAnalysisTaskHLTPHOS::fgkEtaMin = -0.12; \r
88const Float_t AliAnalysisTaskHLTPHOS::fgkEtaMax = 0.12; \r
89const Float_t AliAnalysisTaskHLTPHOS::fgkPhiMin[5] = {3.83972, 4.18879, 4.53786, 4.88692, 5.23599}; \r
90const Float_t AliAnalysisTaskHLTPHOS::fgkPhiMax[5] = {4.18879, 4.53786, 4.88692, 5.23599, 5.58505}; \r
91const Float_t AliAnalysisTaskHLTPHOS::fgkNormX[5] = {-0.642788, -0.34202, 0, 0.34202, 0.642788}; \r
92const Float_t AliAnalysisTaskHLTPHOS::fgkNormY[5] = {-0.766044, -0.939693, -1, -0.939693, -0.766044}; \r
93const Float_t AliAnalysisTaskHLTPHOS::fgkInitPosX[5] = {-295.682, -157.329, 0, 157.329, 295.682}; \r
94const Float_t AliAnalysisTaskHLTPHOS::fgkInitPosY[5] = {-352.38, -432.259, -460, -432.259, -352.38};\r
95\r
96//----------------------------------------------------------------------------------------------------\r
97\r
fc0eba5b 98void AliAnalysisTaskHLTPHOS::CreateSpecificStuff(TList * fOutputList){\r
a63c69d8 99\r
a63c69d8 100\r
101// --------------- define histograms ---------------------//\r
102\r
103 fHistOfflTrk2PHOS = new TH2F("fHistOfflTrk2PHOS","track intersection point in #eta and #phi (offline)",100, -0.5, 0.5, 100, 240, 340); \r
104 fHistOnlTrk2PHOS = new TH2F("fHistOnlTrk2PHOS", "track intersection point in #eta and #phi (HLT)", 100, -0.5, 0.5, 100, 240, 340);\r
105 \r
106 fHistOfflTrk2PHOSTrig = new TH2F("fHistOfflTrk2PHOSTrig", "track intersection point in #eta and #phi (offline triggered)", 100, -0.5, 0.5, 100, 240, 340); \r
107 fHistOfflTrk2PHOSNoTrig = new TH2F("fHistOfflTrk2PHOSNoTrig","track intersection point in #eta and #phi (offline not triggered)",100, -0.5, 0.5, 100, 240, 340); \r
108\r
109 // -------------- add histograms to the output TList -----------------//\r
110 \r
111 fOutputList->Add(fHistOnlTrk2PHOS);\r
112 fOutputList->Add(fHistOfflTrk2PHOS); \r
113 fOutputList->Add(fHistOfflTrk2PHOSTrig);\r
114 fOutputList->Add(fHistOfflTrk2PHOSNoTrig);\r
115\r
116}\r
117\r
a63c69d8 118\r
e91b5832 119void AliAnalysisTaskHLTPHOS::DoSpecificStuff(const AliESDEvent * evESD, const AliESDEvent * evHLTESD) {\r
120 //Do PHOS specific tests\r
a63c69d8 121\r
122 Double_t b = evESD->GetMagneticField();\r
123 \r
fc0eba5b 124 //Double_t pos[] = { 0., 0., 0.};\r
125 //AliVertex *vtx = new AliVertex(pos, 0., 0);\r
a63c69d8 126 \r
127// for(Int_t i = 0; i<fTrgClsArray->GetEntries(); i++){\r
128// if((evESD->GetFiredTriggerClasses()).Contains(((TObjString *)fTrgClsArray->At(i))->GetString())) fHistTrigger->Fill(i);\r
129// }\r
130// \r
131// if(evHLTESD->IsHLTTriggerFired()){\r
132// //fHistHLTTrigger->Fill(evESD->GetTriggerMask());\r
133// for(Int_t i = 0; i<fTrgClsArray->GetEntries(); i++){ \r
134// if((evESD->GetFiredTriggerClasses()).Contains(((TObjString *)fTrgClsArray->At(i))->GetString())) fHistHLTTrigger->Fill(i);\r
135// } \r
136// }\r
137\r
fc0eba5b 138\r
139\r
a63c69d8 140 if(evHLTESD->IsHLTTriggerFired()){\r
fc0eba5b 141 for(Int_t i = 0; i < evHLTESD->GetNumberOfTracks(); i++){\r
a63c69d8 142 AliESDtrack * HLTesdTrk = evHLTESD->GetTrack(i);\r
143 \r
144 TVector3 v; \r
145 if(IsInPHOS(2, HLTesdTrk, b, v)){ \r
146 Float_t phi = v.Phi(); \r
147 if(phi<0) phi += 2.*TMath::Pi(); \r
148 fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
149 }else if(IsInPHOS(3, HLTesdTrk, b, v)){ \r
150 Float_t phi = v.Phi(); \r
151 if(phi<0) phi += 2.*TMath::Pi(); \r
152 fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
153 }else if( IsInPHOS(4, HLTesdTrk, b, v) ){ \r
154 Float_t phi = v.Phi(); \r
155 if(phi<0) phi += 2.*TMath::Pi(); \r
156 fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
157 } \r
158\r
159/*\r
160 if(IsInPHOS(2, HLTesdTrk, b) \r
161 || IsInPHOS(3, HLTesdTrk, b)\r
162 || IsInPHOS(4, HLTesdTrk, b) ) cout<<"Good Trigger"<<endl;\r
163*/ \r
fc0eba5b 164 \r
165\r
166 \r
a63c69d8 167 }\r
168 }else{\r
fc0eba5b 169\r
a63c69d8 170 for(Int_t i = 0; i < evHLTESD->GetNumberOfTracks(); i++){ \r
171 AliESDtrack * HLTesdTrk = evHLTESD->GetTrack(i); \r
a63c69d8 172 TVector3 v; \r
173 if(IsInPHOS(2, HLTesdTrk, b, v)){ \r
174 Float_t phi = v.Phi(); \r
175 if(phi<0) phi += 2.*TMath::Pi(); \r
176 fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
177 }else if(IsInPHOS(3, HLTesdTrk, b, v)){ \r
178 Float_t phi = v.Phi(); \r
179 if(phi<0) phi += 2.*TMath::Pi(); \r
180 fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
181 }else if( IsInPHOS(4, HLTesdTrk, b, v) ){ \r
182 Float_t phi = v.Phi(); \r
183 if(phi<0) phi += 2.*TMath::Pi(); \r
184 fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
185 } \r
fc0eba5b 186 }\r
a63c69d8 187 }\r
a63c69d8 188\r
fc0eba5b 189 if(evHLTESD->IsHLTTriggerFired()){\r
190 \r
a63c69d8 191 for(Int_t i = 0; i < evESD->GetNumberOfTracks(); i++){ \r
192 AliESDtrack * esdTrk = evESD->GetTrack(i); \r
193\r
194 TVector3 v;\r
195 if(IsInPHOS(2, esdTrk, b, v)){\r
196 Float_t phi = v.Phi();\r
197 if(phi<0) phi += 2.*TMath::Pi();\r
198 fHistOfflTrk2PHOSTrig->Fill(v.Eta(), phi*TMath::RadToDeg());\r
199 fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
a63c69d8 200 }else if(IsInPHOS(3, esdTrk, b, v)){\r
201 Float_t phi = v.Phi(); \r
202 if(phi<0) phi += 2.*TMath::Pi(); \r
203 fHistOfflTrk2PHOSTrig->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
204 fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
a63c69d8 205 }else if( IsInPHOS(4, esdTrk, b, v) ){\r
206 Float_t phi = v.Phi(); \r
207 if(phi<0) phi += 2.*TMath::Pi(); \r
208 fHistOfflTrk2PHOSTrig->Fill(v.Eta(), phi*TMath::RadToDeg());\r
209 fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
a63c69d8 210 }\r
211 }\r
212 } else {\r
fc0eba5b 213 \r
a63c69d8 214 for(Int_t i = 0; i < evESD->GetNumberOfTracks(); i++){ \r
215 AliESDtrack * esdTrk = evESD->GetTrack(i); \r
216\r
217 TVector3 v; \r
218 if(IsInPHOS(2, esdTrk, b, v)){ \r
219 Float_t phi = v.Phi(); \r
220 if(phi<0) phi += 2.*TMath::Pi(); \r
221 fHistOfflTrk2PHOSNoTrig->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
222 fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
223 //cout<<"Event in PHOS 2: "<<fNevt<<endl;\r
224 }else if(IsInPHOS(3, esdTrk, b, v)){ \r
225 Float_t phi = v.Phi(); \r
226 if(phi<0) phi += 2.*TMath::Pi(); \r
227 fHistOfflTrk2PHOSNoTrig->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
228 fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
229 //cout<<"Event in PHOS 3: "<<fNevt<<endl;\r
230 }else if( IsInPHOS(4, esdTrk, b, v) ){ \r
231 Float_t phi = v.Phi(); \r
232 if(phi<0) phi += 2.*TMath::Pi(); \r
233 fHistOfflTrk2PHOSNoTrig->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
234 fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
235 //cout<<"Event in PHOS 4: "<<fNevt<<endl;\r
236 } \r
237 } \r
238 }\r
239\r
a63c69d8 240\r
fc0eba5b 241 \r
242 //cout << "here" << endl;\r
243\r
244 //Int_t nc = evHLTESD->GetPHOSClusters(fClustersArray);\r
245 //Int_t nc = evHLTESD->GetEMCALClusters(fClustersArray);\r
246 \r
247 //for(int i = 0; i < \r
248 // cout << nc << " ";\r
249 \r
250 // for(int i = 0; i < evHLTESD->GetNumberOfCaloClusters(); i++) {\r
251 // AliESDCaloCluster * c = evHLTESD->GetCaloCluster(i); \r
252 // cout << c->IsPHOS() << "i ";\r
253 // }\r
254 \r
a63c69d8 255\r
fc0eba5b 256 \r
a63c69d8 257\r
fc0eba5b 258}\r
a63c69d8 259\r
fc0eba5b 260Int_t AliAnalysisTaskHLTPHOS::GetClusters(AliESDEvent * event, TRefArray * clusters) {\r
261 return event->GetPHOSClusters(clusters);\r
262}\r
a63c69d8 263\r
fc0eba5b 264Bool_t AliAnalysisTaskHLTPHOS::IsThisDetector(AliESDCaloCluster * cluster) {\r
265 return cluster->IsPHOS();\r
a63c69d8 266}\r
267\r
fc0eba5b 268\r
a63c69d8 269Bool_t AliAnalysisTaskHLTPHOS::IsInPHOS(Int_t iMod, AliESDtrack * trk, Float_t b, TVector3& v){\r
270\r
fc0eba5b 271\r
a63c69d8 272 Double_t normVector[3] = {fgkNormX[iMod], fgkNormY[iMod], 0};\r
273\r
274 Double_t point[3] = {fgkInitPosX[iMod], fgkInitPosY[iMod], 0};\r
275 \r
276 if(!trk->Intersect(point, normVector, b)) return kFALSE;\r
277\r
278 TVector3 trackPos(point);\r
279 \r
280 v=trackPos;\r
281\r
282 Double_t phi = 0;\r
283 if(trackPos.Phi() < 0) phi = trackPos.Phi() + 2*TMath::Pi();\r
284 else phi = trackPos.Phi();\r
285\r
286 if(trackPos.Eta() >= fgkEtaMin && \r
287 trackPos.Eta() <= fgkEtaMax &&\r
288 phi >= fgkPhiMin[iMod] &&\r
289 phi <= fgkPhiMax[iMod])\r
290 {\r
291 return kTRUE;\r
292 }\r
293 \r
294 return kFALSE;\r
295}\r