]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/QA/tasks/AliAnalysisTaskHLTPHOS.cxx
end-of-line normalization
[u/mrichter/AliRoot.git] / HLT / QA / tasks / AliAnalysisTaskHLTPHOS.cxx
index 7d272d3f30c6ee92795a4bc5b63ff0f818d3324e..2249786e76d156d9f01e5743b07c95cbee8ea259 100644 (file)
-// $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;
+}