-// $Id$\r
-\r
-//**************************************************************************\r
-//* This file is property of and copyright by the ALICE HLT Project *\r
-//* ALICE Experiment at CERN, All rights reserved. *\r
-//* *\r
-//* Primary Authors: Zhongbao Yin <zbyin@mail.ccnu.edu.cn>, *\r
-//* Kalliopi Kanaki <Kalliopi.Kanaki@ift.uib.no> *\r
-//* Svein Lindal <svein.lindal@gmail.com> *\r
-//* for The ALICE HLT Project. *\r
-//* *\r
-//* Permission to use, copy, modify and distribute this software and its *\r
-//* documentation strictly for non-commercial purposes is hereby granted *\r
-//* without fee, provided that the above copyright notice appears in all *\r
-//* copies and that both the copyright notice and this permission notice *\r
-//* appear in the supporting documentation. The authors make no claims *\r
-//* about the suitability of this software for any purpose. It is *\r
-//* provided "as is" without express or implied warranty. *\r
-//**************************************************************************\r
-\r
-/** @file AliAnalysisTaskHLTPHOS.cxx\r
- @author Zhongbao Yin, Kalliopi Kanaki, Svein Lindal\r
- @date\r
- @brief\r
-*/\r
-\r
-#include <iostream>\r
-\r
-#include "TChain.h"\r
-#include "TTree.h"\r
-#include "TH1F.h"\r
-#include "TH2F.h"\r
-#include "TCanvas.h"\r
-#include "TVector3.h"\r
-#include "TString.h"\r
-#include "TObjArray.h"\r
-#include "TFile.h"\r
-\r
-#include "AliESDEvent.h"\r
-#include "AliESDRun.h"\r
-#include "AliESDInputHandler.h"\r
-#include "AliESDCaloCluster.h"\r
-\r
-#include "AliAnalysisTask.h"\r
-#include "AliAnalysisManager.h"\r
-#include "AliAnalysisTaskHLTPHOS.h"\r
-\r
-\r
-ClassImp(AliAnalysisTaskHLTPHOS)\r
-\r
-\r
-//===========================================================================================\r
-\r
-AliAnalysisTaskHLTPHOS::AliAnalysisTaskHLTPHOS() : AliAnalysisTaskHLTCalo()\r
- ,fHistOnlTrk2PHOS(0)\r
- ,fHistOfflTrk2PHOS(0)\r
- ,fHistOfflTrk2PHOSTrig(0)\r
- ,fHistOfflTrk2PHOSNoTrig(0)\r
-{\r
- // Constructor\r
-\r
- // Define input and output slots here\r
- // Input slot #0 works with a TChain\r
- // DefineInput(0, TChain::Class());\r
- // Output slot #0 writes into a TH1 container\r
-\r
- // DefineOutput(1, TList::Class());\r
-}\r
-\r
-\r
-AliAnalysisTaskHLTPHOS::AliAnalysisTaskHLTPHOS(const char *name) : AliAnalysisTaskHLTCalo(name)\r
- ,fHistOnlTrk2PHOS(0)\r
- ,fHistOfflTrk2PHOS(0)\r
- ,fHistOfflTrk2PHOSTrig(0)\r
- ,fHistOfflTrk2PHOSNoTrig(0)\r
-{\r
- // Constructor\r
-\r
- // Define input and output slots here\r
- // Input slot #0 works with a TChain\r
- // DefineInput(0, TChain::Class());\r
- // Output slot #0 writes into a TH1 container\r
-\r
- // DefineOutput(1, TList::Class());\r
-}\r
-\r
-const Float_t AliAnalysisTaskHLTPHOS::fgkEtaMin = -0.12; \r
-const Float_t AliAnalysisTaskHLTPHOS::fgkEtaMax = 0.12; \r
-const Float_t AliAnalysisTaskHLTPHOS::fgkPhiMin[5] = {3.83972, 4.18879, 4.53786, 4.88692, 5.23599}; \r
-const Float_t AliAnalysisTaskHLTPHOS::fgkPhiMax[5] = {4.18879, 4.53786, 4.88692, 5.23599, 5.58505}; \r
-const Float_t AliAnalysisTaskHLTPHOS::fgkNormX[5] = {-0.642788, -0.34202, 0, 0.34202, 0.642788}; \r
-const Float_t AliAnalysisTaskHLTPHOS::fgkNormY[5] = {-0.766044, -0.939693, -1, -0.939693, -0.766044}; \r
-const Float_t AliAnalysisTaskHLTPHOS::fgkInitPosX[5] = {-295.682, -157.329, 0, 157.329, 295.682}; \r
-const Float_t AliAnalysisTaskHLTPHOS::fgkInitPosY[5] = {-352.38, -432.259, -460, -432.259, -352.38};\r
-\r
-//----------------------------------------------------------------------------------------------------\r
-\r
-void AliAnalysisTaskHLTPHOS::CreateSpecificStuff(TList * fOutputList){\r
-\r
-\r
-// --------------- define histograms ---------------------//\r
-\r
- fHistOfflTrk2PHOS = new TH2F("fHistOfflTrk2PHOS","track intersection point in #eta and #phi (offline)",100, -0.5, 0.5, 100, 240, 340); \r
- fHistOnlTrk2PHOS = new TH2F("fHistOnlTrk2PHOS", "track intersection point in #eta and #phi (HLT)", 100, -0.5, 0.5, 100, 240, 340);\r
- \r
- fHistOfflTrk2PHOSTrig = new TH2F("fHistOfflTrk2PHOSTrig", "track intersection point in #eta and #phi (offline triggered)", 100, -0.5, 0.5, 100, 240, 340); \r
- fHistOfflTrk2PHOSNoTrig = new TH2F("fHistOfflTrk2PHOSNoTrig","track intersection point in #eta and #phi (offline not triggered)",100, -0.5, 0.5, 100, 240, 340); \r
-\r
- // -------------- add histograms to the output TList -----------------//\r
- \r
- fOutputList->Add(fHistOnlTrk2PHOS);\r
- fOutputList->Add(fHistOfflTrk2PHOS); \r
- fOutputList->Add(fHistOfflTrk2PHOSTrig);\r
- fOutputList->Add(fHistOfflTrk2PHOSNoTrig);\r
-\r
-}\r
-\r
-\r
-void AliAnalysisTaskHLTPHOS::DoSpecificStuff(const AliESDEvent * evESD, const AliESDEvent * evHLTESD) {\r
- //Do PHOS specific tests\r
-\r
- Double_t b = evESD->GetMagneticField();\r
- \r
- //Double_t pos[] = { 0., 0., 0.};\r
- //AliVertex *vtx = new AliVertex(pos, 0., 0);\r
- \r
-// for(Int_t i = 0; i<fTrgClsArray->GetEntries(); i++){\r
-// if((evESD->GetFiredTriggerClasses()).Contains(((TObjString *)fTrgClsArray->At(i))->GetString())) fHistTrigger->Fill(i);\r
-// }\r
-// \r
-// if(evHLTESD->IsHLTTriggerFired()){\r
-// //fHistHLTTrigger->Fill(evESD->GetTriggerMask());\r
-// for(Int_t i = 0; i<fTrgClsArray->GetEntries(); i++){ \r
-// if((evESD->GetFiredTriggerClasses()).Contains(((TObjString *)fTrgClsArray->At(i))->GetString())) fHistHLTTrigger->Fill(i);\r
-// } \r
-// }\r
-\r
-\r
-\r
- if(evHLTESD->IsHLTTriggerFired()){\r
- for(Int_t i = 0; i < evHLTESD->GetNumberOfTracks(); i++){\r
- AliESDtrack * HLTesdTrk = evHLTESD->GetTrack(i);\r
- \r
- TVector3 v; \r
- if(IsInPHOS(2, HLTesdTrk, b, v)){ \r
- Float_t phi = v.Phi(); \r
- if(phi<0) phi += 2.*TMath::Pi(); \r
- fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
- }else if(IsInPHOS(3, HLTesdTrk, b, v)){ \r
- Float_t phi = v.Phi(); \r
- if(phi<0) phi += 2.*TMath::Pi(); \r
- fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
- }else if( IsInPHOS(4, HLTesdTrk, b, v) ){ \r
- Float_t phi = v.Phi(); \r
- if(phi<0) phi += 2.*TMath::Pi(); \r
- fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
- } \r
-\r
-/*\r
- if(IsInPHOS(2, HLTesdTrk, b) \r
- || IsInPHOS(3, HLTesdTrk, b)\r
- || IsInPHOS(4, HLTesdTrk, b) ) cout<<"Good Trigger"<<endl;\r
-*/ \r
- \r
-\r
- \r
- }\r
- }else{\r
-\r
- for(Int_t i = 0; i < evHLTESD->GetNumberOfTracks(); i++){ \r
- AliESDtrack * HLTesdTrk = evHLTESD->GetTrack(i); \r
- TVector3 v; \r
- if(IsInPHOS(2, HLTesdTrk, b, v)){ \r
- Float_t phi = v.Phi(); \r
- if(phi<0) phi += 2.*TMath::Pi(); \r
- fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
- }else if(IsInPHOS(3, HLTesdTrk, b, v)){ \r
- Float_t phi = v.Phi(); \r
- if(phi<0) phi += 2.*TMath::Pi(); \r
- fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
- }else if( IsInPHOS(4, HLTesdTrk, b, v) ){ \r
- Float_t phi = v.Phi(); \r
- if(phi<0) phi += 2.*TMath::Pi(); \r
- fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
- } \r
- }\r
- }\r
-\r
- if(evHLTESD->IsHLTTriggerFired()){\r
- \r
- for(Int_t i = 0; i < evESD->GetNumberOfTracks(); i++){ \r
- AliESDtrack * esdTrk = evESD->GetTrack(i); \r
-\r
- TVector3 v;\r
- if(IsInPHOS(2, esdTrk, b, v)){\r
- Float_t phi = v.Phi();\r
- if(phi<0) phi += 2.*TMath::Pi();\r
- fHistOfflTrk2PHOSTrig->Fill(v.Eta(), phi*TMath::RadToDeg());\r
- fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
- }else if(IsInPHOS(3, esdTrk, b, v)){\r
- Float_t phi = v.Phi(); \r
- if(phi<0) phi += 2.*TMath::Pi(); \r
- fHistOfflTrk2PHOSTrig->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
- fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
- }else if( IsInPHOS(4, esdTrk, b, v) ){\r
- Float_t phi = v.Phi(); \r
- if(phi<0) phi += 2.*TMath::Pi(); \r
- fHistOfflTrk2PHOSTrig->Fill(v.Eta(), phi*TMath::RadToDeg());\r
- fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
- }\r
- }\r
- } else {\r
- \r
- for(Int_t i = 0; i < evESD->GetNumberOfTracks(); i++){ \r
- AliESDtrack * esdTrk = evESD->GetTrack(i); \r
-\r
- TVector3 v; \r
- if(IsInPHOS(2, esdTrk, b, v)){ \r
- Float_t phi = v.Phi(); \r
- if(phi<0) phi += 2.*TMath::Pi(); \r
- fHistOfflTrk2PHOSNoTrig->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
- fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
- //cout<<"Event in PHOS 2: "<<fNevt<<endl;\r
- }else if(IsInPHOS(3, esdTrk, b, v)){ \r
- Float_t phi = v.Phi(); \r
- if(phi<0) phi += 2.*TMath::Pi(); \r
- fHistOfflTrk2PHOSNoTrig->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
- fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
- //cout<<"Event in PHOS 3: "<<fNevt<<endl;\r
- }else if( IsInPHOS(4, esdTrk, b, v) ){ \r
- Float_t phi = v.Phi(); \r
- if(phi<0) phi += 2.*TMath::Pi(); \r
- fHistOfflTrk2PHOSNoTrig->Fill(v.Eta(), phi*TMath::RadToDeg()); \r
- fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());\r
- //cout<<"Event in PHOS 4: "<<fNevt<<endl;\r
- } \r
- } \r
- }\r
-\r
-\r
- \r
- //cout << "here" << endl;\r
-\r
- //Int_t nc = evHLTESD->GetPHOSClusters(fClustersArray);\r
- //Int_t nc = evHLTESD->GetEMCALClusters(fClustersArray);\r
- \r
- //for(int i = 0; i < \r
- // cout << nc << " ";\r
- \r
- // for(int i = 0; i < evHLTESD->GetNumberOfCaloClusters(); i++) {\r
- // AliESDCaloCluster * c = evHLTESD->GetCaloCluster(i); \r
- // cout << c->IsPHOS() << "i ";\r
- // }\r
- \r
-\r
- \r
-\r
-}\r
-\r
-Int_t AliAnalysisTaskHLTPHOS::GetClusters(AliESDEvent * event, TRefArray * clusters) {\r
- return event->GetPHOSClusters(clusters);\r
-}\r
-\r
-Bool_t AliAnalysisTaskHLTPHOS::IsThisDetector(AliESDCaloCluster * cluster) {\r
- return cluster->IsPHOS();\r
-}\r
-\r
-\r
-Bool_t AliAnalysisTaskHLTPHOS::IsInPHOS(Int_t iMod, AliESDtrack * trk, Float_t b, TVector3& v){\r
-\r
-\r
- Double_t normVector[3] = {fgkNormX[iMod], fgkNormY[iMod], 0};\r
-\r
- Double_t point[3] = {fgkInitPosX[iMod], fgkInitPosY[iMod], 0};\r
- \r
- if(!trk->Intersect(point, normVector, b)) return kFALSE;\r
-\r
- TVector3 trackPos(point);\r
- \r
- v=trackPos;\r
-\r
- Double_t phi = 0;\r
- if(trackPos.Phi() < 0) phi = trackPos.Phi() + 2*TMath::Pi();\r
- else phi = trackPos.Phi();\r
-\r
- if(trackPos.Eta() >= fgkEtaMin && \r
- trackPos.Eta() <= fgkEtaMax &&\r
- phi >= fgkPhiMin[iMod] &&\r
- phi <= fgkPhiMax[iMod])\r
- {\r
- return kTRUE;\r
- }\r
- \r
- return kFALSE;\r
-}\r
+// $Id$
+
+//**************************************************************************
+//* This file is property of and copyright by the ALICE HLT Project *
+//* ALICE Experiment at CERN, All rights reserved. *
+//* *
+//* Primary Authors: Zhongbao Yin <zbyin@mail.ccnu.edu.cn>, *
+//* Kalliopi Kanaki <Kalliopi.Kanaki@ift.uib.no> *
+//* Svein Lindal <svein.lindal@gmail.com> *
+//* for The ALICE HLT Project. *
+//* *
+//* Permission to use, copy, modify and distribute this software and its *
+//* documentation strictly for non-commercial purposes is hereby granted *
+//* without fee, provided that the above copyright notice appears in all *
+//* copies and that both the copyright notice and this permission notice *
+//* appear in the supporting documentation. The authors make no claims *
+//* about the suitability of this software for any purpose. It is *
+//* provided "as is" without express or implied warranty. *
+//**************************************************************************
+
+/** @file AliAnalysisTaskHLTPHOS.cxx
+ @author Zhongbao Yin, Kalliopi Kanaki, Svein Lindal
+ @date
+ @brief
+*/
+
+#include <iostream>
+
+#include "TChain.h"
+#include "TTree.h"
+#include "TH1F.h"
+#include "TH2F.h"
+#include "TCanvas.h"
+#include "TVector3.h"
+#include "TString.h"
+#include "TObjArray.h"
+#include "TFile.h"
+
+#include "AliESDEvent.h"
+#include "AliESDRun.h"
+#include "AliESDInputHandler.h"
+#include "AliESDCaloCluster.h"
+
+#include "AliAnalysisTask.h"
+#include "AliAnalysisManager.h"
+#include "AliAnalysisTaskHLTPHOS.h"
+
+
+ClassImp(AliAnalysisTaskHLTPHOS)
+
+
+//===========================================================================================
+
+AliAnalysisTaskHLTPHOS::AliAnalysisTaskHLTPHOS() : AliAnalysisTaskHLTCalo()
+ ,fHistOnlTrk2PHOS(0)
+ ,fHistOfflTrk2PHOS(0)
+ ,fHistOfflTrk2PHOSTrig(0)
+ ,fHistOfflTrk2PHOSNoTrig(0)
+{
+ // Constructor
+
+ // Define input and output slots here
+ // Input slot #0 works with a TChain
+ // DefineInput(0, TChain::Class());
+ // Output slot #0 writes into a TH1 container
+
+ // DefineOutput(1, TList::Class());
+}
+
+
+AliAnalysisTaskHLTPHOS::AliAnalysisTaskHLTPHOS(const char *name) : AliAnalysisTaskHLTCalo(name)
+ ,fHistOnlTrk2PHOS(0)
+ ,fHistOfflTrk2PHOS(0)
+ ,fHistOfflTrk2PHOSTrig(0)
+ ,fHistOfflTrk2PHOSNoTrig(0)
+{
+ // Constructor
+
+ // Define input and output slots here
+ // Input slot #0 works with a TChain
+ // DefineInput(0, TChain::Class());
+ // Output slot #0 writes into a TH1 container
+
+ // DefineOutput(1, TList::Class());
+}
+
+const Float_t AliAnalysisTaskHLTPHOS::fgkEtaMin = -0.12;
+const Float_t AliAnalysisTaskHLTPHOS::fgkEtaMax = 0.12;
+const Float_t AliAnalysisTaskHLTPHOS::fgkPhiMin[5] = {3.83972, 4.18879, 4.53786, 4.88692, 5.23599};
+const Float_t AliAnalysisTaskHLTPHOS::fgkPhiMax[5] = {4.18879, 4.53786, 4.88692, 5.23599, 5.58505};
+const Float_t AliAnalysisTaskHLTPHOS::fgkNormX[5] = {-0.642788, -0.34202, 0, 0.34202, 0.642788};
+const Float_t AliAnalysisTaskHLTPHOS::fgkNormY[5] = {-0.766044, -0.939693, -1, -0.939693, -0.766044};
+const Float_t AliAnalysisTaskHLTPHOS::fgkInitPosX[5] = {-295.682, -157.329, 0, 157.329, 295.682};
+const Float_t AliAnalysisTaskHLTPHOS::fgkInitPosY[5] = {-352.38, -432.259, -460, -432.259, -352.38};
+
+//----------------------------------------------------------------------------------------------------
+
+void AliAnalysisTaskHLTPHOS::CreateSpecificStuff(TList * fOutputList){
+
+
+// --------------- define histograms ---------------------//
+
+ fHistOfflTrk2PHOS = new TH2F("fHistOfflTrk2PHOS","track intersection point in #eta and #phi (offline)",100, -0.5, 0.5, 100, 240, 340);
+ fHistOnlTrk2PHOS = new TH2F("fHistOnlTrk2PHOS", "track intersection point in #eta and #phi (HLT)", 100, -0.5, 0.5, 100, 240, 340);
+
+ fHistOfflTrk2PHOSTrig = new TH2F("fHistOfflTrk2PHOSTrig", "track intersection point in #eta and #phi (offline triggered)", 100, -0.5, 0.5, 100, 240, 340);
+ fHistOfflTrk2PHOSNoTrig = new TH2F("fHistOfflTrk2PHOSNoTrig","track intersection point in #eta and #phi (offline not triggered)",100, -0.5, 0.5, 100, 240, 340);
+
+ // -------------- add histograms to the output TList -----------------//
+
+ fOutputList->Add(fHistOnlTrk2PHOS);
+ fOutputList->Add(fHistOfflTrk2PHOS);
+ fOutputList->Add(fHistOfflTrk2PHOSTrig);
+ fOutputList->Add(fHistOfflTrk2PHOSNoTrig);
+
+}
+
+
+void AliAnalysisTaskHLTPHOS::DoSpecificStuff(const AliESDEvent * evESD, const AliESDEvent * evHLTESD) {
+ //Do PHOS specific tests
+
+ Double_t b = evESD->GetMagneticField();
+
+ //Double_t pos[] = { 0., 0., 0.};
+ //AliVertex *vtx = new AliVertex(pos, 0., 0);
+
+// for(Int_t i = 0; i<fTrgClsArray->GetEntries(); i++){
+// if((evESD->GetFiredTriggerClasses()).Contains(((TObjString *)fTrgClsArray->At(i))->GetString())) fHistTrigger->Fill(i);
+// }
+//
+// if(evHLTESD->IsHLTTriggerFired()){
+// //fHistHLTTrigger->Fill(evESD->GetTriggerMask());
+// for(Int_t i = 0; i<fTrgClsArray->GetEntries(); i++){
+// if((evESD->GetFiredTriggerClasses()).Contains(((TObjString *)fTrgClsArray->At(i))->GetString())) fHistHLTTrigger->Fill(i);
+// }
+// }
+
+
+
+ if(evHLTESD->IsHLTTriggerFired()){
+ for(Int_t i = 0; i < evHLTESD->GetNumberOfTracks(); i++){
+ AliESDtrack * HLTesdTrk = evHLTESD->GetTrack(i);
+
+ TVector3 v;
+ if(IsInPHOS(2, HLTesdTrk, b, v)){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ }else if(IsInPHOS(3, HLTesdTrk, b, v)){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ }else if( IsInPHOS(4, HLTesdTrk, b, v) ){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ }
+
+/*
+ if(IsInPHOS(2, HLTesdTrk, b)
+ || IsInPHOS(3, HLTesdTrk, b)
+ || IsInPHOS(4, HLTesdTrk, b) ) cout<<"Good Trigger"<<endl;
+*/
+
+
+
+ }
+ }else{
+
+ for(Int_t i = 0; i < evHLTESD->GetNumberOfTracks(); i++){
+ AliESDtrack * HLTesdTrk = evHLTESD->GetTrack(i);
+ TVector3 v;
+ if(IsInPHOS(2, HLTesdTrk, b, v)){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ }else if(IsInPHOS(3, HLTesdTrk, b, v)){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ }else if( IsInPHOS(4, HLTesdTrk, b, v) ){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOnlTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ }
+ }
+ }
+
+ if(evHLTESD->IsHLTTriggerFired()){
+
+ for(Int_t i = 0; i < evESD->GetNumberOfTracks(); i++){
+ AliESDtrack * esdTrk = evESD->GetTrack(i);
+
+ TVector3 v;
+ if(IsInPHOS(2, esdTrk, b, v)){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOfflTrk2PHOSTrig->Fill(v.Eta(), phi*TMath::RadToDeg());
+ fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ }else if(IsInPHOS(3, esdTrk, b, v)){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOfflTrk2PHOSTrig->Fill(v.Eta(), phi*TMath::RadToDeg());
+ fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ }else if( IsInPHOS(4, esdTrk, b, v) ){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOfflTrk2PHOSTrig->Fill(v.Eta(), phi*TMath::RadToDeg());
+ fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ }
+ }
+ } else {
+
+ for(Int_t i = 0; i < evESD->GetNumberOfTracks(); i++){
+ AliESDtrack * esdTrk = evESD->GetTrack(i);
+
+ TVector3 v;
+ if(IsInPHOS(2, esdTrk, b, v)){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOfflTrk2PHOSNoTrig->Fill(v.Eta(), phi*TMath::RadToDeg());
+ fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ //cout<<"Event in PHOS 2: "<<fNevt<<endl;
+ }else if(IsInPHOS(3, esdTrk, b, v)){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOfflTrk2PHOSNoTrig->Fill(v.Eta(), phi*TMath::RadToDeg());
+ fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ //cout<<"Event in PHOS 3: "<<fNevt<<endl;
+ }else if( IsInPHOS(4, esdTrk, b, v) ){
+ Float_t phi = v.Phi();
+ if(phi<0) phi += 2.*TMath::Pi();
+ fHistOfflTrk2PHOSNoTrig->Fill(v.Eta(), phi*TMath::RadToDeg());
+ fHistOfflTrk2PHOS->Fill(v.Eta(), phi*TMath::RadToDeg());
+ //cout<<"Event in PHOS 4: "<<fNevt<<endl;
+ }
+ }
+ }
+
+
+
+ //cout << "here" << endl;
+
+ //Int_t nc = evHLTESD->GetPHOSClusters(fClustersArray);
+ //Int_t nc = evHLTESD->GetEMCALClusters(fClustersArray);
+
+ //for(int i = 0; i <
+ // cout << nc << " ";
+
+ // for(int i = 0; i < evHLTESD->GetNumberOfCaloClusters(); i++) {
+ // AliESDCaloCluster * c = evHLTESD->GetCaloCluster(i);
+ // cout << c->IsPHOS() << "i ";
+ // }
+
+
+
+
+}
+
+Int_t AliAnalysisTaskHLTPHOS::GetClusters(AliESDEvent * event, TRefArray * clusters) {
+ return event->GetPHOSClusters(clusters);
+}
+
+Bool_t AliAnalysisTaskHLTPHOS::IsThisDetector(AliESDCaloCluster * cluster) {
+ return cluster->IsPHOS();
+}
+
+
+Bool_t AliAnalysisTaskHLTPHOS::IsInPHOS(Int_t iMod, AliESDtrack * trk, Float_t b, TVector3& v){
+
+
+ Double_t normVector[3] = {fgkNormX[iMod], fgkNormY[iMod], 0};
+
+ Double_t point[3] = {fgkInitPosX[iMod], fgkInitPosY[iMod], 0};
+
+ if(!trk->Intersect(point, normVector, b)) return kFALSE;
+
+ TVector3 trackPos(point);
+
+ v=trackPos;
+
+ Double_t phi = 0;
+ if(trackPos.Phi() < 0) phi = trackPos.Phi() + 2*TMath::Pi();
+ else phi = trackPos.Phi();
+
+ if(trackPos.Eta() >= fgkEtaMin &&
+ trackPos.Eta() <= fgkEtaMax &&
+ phi >= fgkPhiMin[iMod] &&
+ phi <= fgkPhiMax[iMod])
+ {
+ return kTRUE;
+ }
+
+ return kFALSE;
+}