-//#include <string.h>\r
-//#include <TStyle.h>\r
-#include <list>\r
-#include <string>\r
-\r
-#include "TTree.h"\r
-#include "TCanvas.h"\r
-#include "AliAnalysisTask.h"\r
-#include "AliInputEventHandler.h"\r
-#include "AliESDtrack.h"\r
-#include "AliAODVertex.h"\r
-#include "AliAODCluster.h"\r
-\r
-#include <TROOT.h>\r
-#include <TRandom.h>\r
-#include <TSystem.h>\r
-#include <TInterpreter.h>\r
-#include <TChain.h>\r
-#include <TFile.h>\r
-#include <TKey.h>\r
-#include <TH1F.h>\r
-#include <TH2F.h>\r
-#include <TH3F.h>\r
-#include <TProfile.h>\r
-#include <TList.h>\r
-#include <TLorentzVector.h>\r
-#include <TClonesArray.h>\r
-#include <TRefArray.h>\r
-\r
-#include "TDatabasePDG.h"\r
-#include "AliAnalysisManager.h"\r
-#include "AliJetFinder.h"\r
-#include "AliJetHeader.h"\r
-#include "AliJetReader.h"\r
-#include "AliJetReaderHeader.h"\r
-#include "AliUA1JetHeaderV1.h"\r
-#include "AliSISConeJetHeader.h"\r
-#include "AliESDEvent.h"\r
-#include "AliAODEvent.h"\r
-#include "AliAODHandler.h"\r
-#include "AliAODInputHandler.h"\r
-#include "AliAODTrack.h"\r
-#include "AliAODMCParticle.h"\r
-#include "AliAODJet.h"\r
-#include "AliAODJetEventBackground.h"\r
-#include "AliMCParticle.h"\r
-#include "AliAODMCParticle.h"\r
-#include "AliMCEventHandler.h"\r
-#include "AliMCEvent.h"\r
-#include "AliStack.h"\r
-\r
-#include "AliAODHeader.h"\r
-#include "AliAODMCHeader.h"\r
-//#include "AliGenPythiaEventHeader.h"\r
-#include "AliJetKineReaderHeader.h"\r
-#include "AliGenCocktailEventHeader.h"\r
-#include "AliInputEventHandler.h"\r
-#include "AliGenEventHeader.h"\r
-#include "AliGenDPMjetEventHeader.h"\r
-\r
-#include "AliAnalysisTaskJetHadronCorrelation.h"\r
-#include "AliAnalysisTaskPhiCorrelations.h"\r
-//#include "AliAnalysisHelperJetTasks.h"\r
-#include "AliPWG4HighPtQAMC.h"\r
-\r
-using std::cout;\r
-using std::endl;\r
-\r
-ClassImp(AliAnalysisTaskJetHadronCorrelation)\r
-\r
- //________________________________________________________________________\r
- AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation():\r
- AliAnalysisTaskSE(),\r
- fUseAODInput(kFALSE),\r
- fJetBranch("jets"),\r
- fNonStdFile(""),\r
- fAODIn(0x0),\r
- fAODOut(0x0),\r
- fAODExtension(0x0),\r
- JFAlg("ANTIKT"), \r
- Radius(0.4),\r
- Filtermask(272),\r
- BackM(0),\r
- TrackPtcut(0.15),\r
- SkipCone(0),\r
- IsMC(kTRUE),\r
- JetEScale(1.),\r
- TrackEScale(1.),\r
- fxsec(0.),\r
- ftrial(1.),\r
- fHistList(0x0), // Output list\r
- fIfiles(0),\r
- fH1Events(0x0),\r
- fH1Xsec(0x0),\r
- fH1Trials(0x0),\r
- fH1Track_pt (0x0),\r
- fH1Track_phi (0x0),\r
- fH1Track_eta (0x0),\r
- fH1MCTrack_pt (0x0),\r
- fH1MCTrack_phi (0x0),\r
- fH1MCTrack_eta (0x0),\r
- fH1MCPrimTrack_pt (0x0),\r
- fH1MCPrimTrack_phi (0x0),\r
- fH1MCPrimTrack_eta (0x0),\r
- fH1Jet_pt (0x0),\r
- fH1Jet_phi (0x0),\r
- fH1Jet_eta (0x0),\r
- fH1leadJet_pt (0x0),\r
- fH1leadJet_pt_dijet (0x0),\r
- fH1subJet_pt_dijet (0x0),\r
- fH1JetMC_pt (0x0),\r
- fH1leadJetMC_pt (0x0),\r
- fH1leadJetMC_pt_dijet (0x0),\r
- fH1subJetMC_pt_dijet (0x0),\r
- fH2JetsJet_dphi (0x0),\r
- fH2JetsJet_deta (0x0),\r
- fH2JetsJet_Aj (0x0),\r
- fH2JetsJet_pt (0x0),\r
- fH2JetsJetMC_dphi (0x0),\r
- fH2JetsJetMC_deta (0x0),\r
- fH2JetsJetMC_Aj (0x0),\r
- fH2JetsJetMC_pt (0x0),\r
- fH2Mult_Mtrack (0x0),\r
- fH2Mult_Mlead (0x0),\r
- fH2Mult_Mjet (0x0),\r
- fH2Mult_Njet (0x0),\r
- fH2Mult_Aj (0x0),\r
- fH2Mlead_Aj (0x0),\r
- fH2Jet_pt_Mlead (0x0),\r
- fH2Jet_pt_Munder (0x0),\r
- fH2leadJetMCptResolution (0x0),\r
- fH2TrackMCptResolution (0x0),\r
- fH2TrackMCptEfficiency (0x0),\r
- fH2AjCorrelation_MCRec (0x0),\r
- fH2MleadCorrelation_MCRec(0x0)\r
-{\r
- for(int j=0;j<5;j++){\r
- fH1ndiJ_ediv [j]=0;\r
- fH1Aj [j]=0;\r
- fH1Mlead [j]=0;\r
- fH1leadJetMC_dphiResolution [j]=0;\r
- fH1subJetMC_dphiResolution [j]=0;\r
- fH1leadJetMC_Efficiency [j]=0;\r
- fH1subJetMC_Efficiency [j]=0;\r
- for(int k=0;k<5;k++){\r
- fH1JetHadron_dphi_ediv [j][k]=0;\r
- fH1JetHadron_dphi_tptweight_ediv [j][k]=0;\r
- fH1JetHadron_dphi_tJptweight_ediv[j][k]=0;\r
- fH1JetHadronMC_dphi_ediv [j][k]=0;\r
- fH1JetHadronMC_dphi_tptweight_ediv [j][k]=0;\r
- fH1JetHadronMC_dphi_tJptweight_ediv[j][k]=0;\r
- fH1JetHadronMCPrim_dphi_ediv [j][k]=0;\r
- fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]=0;\r
- fH1JetHadronMCPrim_dphi_tJptweight_ediv[j][k]=0;\r
- }\r
- }\r
- for(int j=0;j<3;j++){\r
- fH1ndiJ_2040Mlead [j]=0;\r
- fH1ndiJ_2040Aj [j]=0;\r
- for(int k=0;k<5;k++){\r
- fH1JetHadron_dphi_tptweight2040_Mleaddep[j][k]=0;\r
- fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]=0;\r
- fH1JetHadronMC_dphi_tptweight2040_Mleaddep[j][k]=0;\r
- fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]=0;\r
- fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[j][k]=0;\r
- fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]=0;\r
- }\r
- }\r
- // Default constructor\r
-}\r
-\r
-//________________________________________________________________________\r
-AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation(const char *name):\r
- AliAnalysisTaskSE(name),\r
- fUseAODInput(kFALSE),\r
- fJetBranch("jets"),\r
- fNonStdFile(""),\r
- fAODIn(0x0), \r
- fAODOut(0x0), \r
- fAODExtension(0x0),\r
- JFAlg("ANTIKT"), \r
- Radius(0.4),\r
- Filtermask(272),\r
- BackM(0),\r
- TrackPtcut(0.15),\r
- SkipCone(0),\r
- IsMC(kTRUE),\r
- JetEScale(1.),\r
- TrackEScale(1.),\r
- fxsec(0.),\r
- ftrial(1.),\r
- fHistList(0x0), // Output list\r
- fIfiles(0),\r
- fH1Events(0x0),\r
- fH1Xsec(0x0),\r
- fH1Trials(0x0),\r
- fH1Track_pt (0x0),\r
- fH1Track_phi (0x0),\r
- fH1Track_eta (0x0),\r
- fH1MCTrack_pt (0x0),\r
- fH1MCTrack_phi (0x0),\r
- fH1MCTrack_eta (0x0),\r
- fH1MCPrimTrack_pt (0x0),\r
- fH1MCPrimTrack_phi (0x0),\r
- fH1MCPrimTrack_eta (0x0),\r
- fH1Jet_pt (0x0),\r
- fH1Jet_phi (0x0),\r
- fH1Jet_eta (0x0),\r
- fH1leadJet_pt (0x0),\r
- fH1leadJet_pt_dijet (0x0),\r
- fH1subJet_pt_dijet (0x0),\r
- fH1JetMC_pt (0x0),\r
- fH1leadJetMC_pt (0x0),\r
- fH1leadJetMC_pt_dijet (0x0),\r
- fH1subJetMC_pt_dijet (0x0),\r
- fH2JetsJet_dphi (0x0),\r
- fH2JetsJet_deta (0x0),\r
- fH2JetsJet_Aj (0x0),\r
- fH2JetsJet_pt (0x0),\r
- fH2JetsJetMC_dphi (0x0),\r
- fH2JetsJetMC_deta (0x0),\r
- fH2JetsJetMC_Aj (0x0),\r
- fH2JetsJetMC_pt (0x0),\r
- fH2Mult_Mtrack (0x0),\r
- fH2Mult_Mlead (0x0),\r
- fH2Mult_Mjet (0x0),\r
- fH2Mult_Njet (0x0),\r
- fH2Mult_Aj (0x0),\r
- fH2Mlead_Aj (0x0),\r
- fH2Jet_pt_Mlead (0x0),\r
- fH2Jet_pt_Munder (0x0),\r
- fH2leadJetMCptResolution (0x0),\r
- fH2TrackMCptResolution (0x0),\r
- fH2TrackMCptEfficiency (0x0),\r
- fH2AjCorrelation_MCRec (0x0),\r
- fH2MleadCorrelation_MCRec(0x0)\r
-{\r
-\r
- for(int j=0;j<5;j++){\r
- fH1ndiJ_ediv [j]=0;\r
- fH1Aj [j]=0;\r
- fH1Mlead [j]=0;\r
- fH1leadJetMC_dphiResolution [j]=0;\r
- fH1subJetMC_dphiResolution [j]=0;\r
- fH1leadJetMC_Efficiency [j]=0;\r
- fH1subJetMC_Efficiency [j]=0;\r
- for(int k=0;k<5;k++){\r
- fH1JetHadron_dphi_ediv [j][k]=0;\r
- fH1JetHadron_dphi_tptweight_ediv [j][k]=0;\r
- fH1JetHadron_dphi_tJptweight_ediv[j][k]=0;\r
- fH1JetHadronMC_dphi_ediv [j][k]=0;\r
- fH1JetHadronMC_dphi_tptweight_ediv [j][k]=0;\r
- fH1JetHadronMC_dphi_tJptweight_ediv[j][k]=0;\r
- fH1JetHadronMCPrim_dphi_ediv [j][k]=0;\r
- fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]=0;\r
- fH1JetHadronMCPrim_dphi_tJptweight_ediv[j][k]=0;\r
- }\r
- }\r
- for(int j=0;j<3;j++){\r
- fH1ndiJ_2040Mlead [j]=0;\r
- fH1ndiJ_2040Aj [j]=0;\r
- for(int k=0;k<5;k++){\r
- fH1JetHadron_dphi_tptweight2040_Mleaddep[j][k]=0;\r
- fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]=0;\r
- fH1JetHadronMC_dphi_tptweight2040_Mleaddep[j][k]=0;\r
- fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]=0;\r
- fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[j][k]=0;\r
- fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]=0;\r
- }\r
- }\r
-\r
- // Default constructor\r
- // Constructor\r
- // Define input and output slots here\r
- // Input slot #0 works with a TChain\r
- DefineInput(0, TChain::Class());\r
- // Output slot #0 id reserved by the base class for AOD\r
- // Output slot #1 writes into a TH1 container\r
- DefineOutput(1, TList::Class());\r
-}\r
-\r
-//________________________________________________________________________\r
-void AliAnalysisTaskJetHadronCorrelation::UserCreateOutputObjects()\r
-{\r
- // Create histograms\r
- // Called once\r
-\r
- fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;\r
- //if (!fHistList){ fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;}\r
-\r
- Bool_t oldStatus = TH1::AddDirectoryStatus();\r
- TH1::AddDirectory(kFALSE);\r
- Float_t pi=TMath::Pi();\r
-\r
-\r
- char *histname;\r
-\r
- fH1Events = new TH1F ("Events" ,"Events" ,1,0,1);\r
- fH1Xsec = new TProfile("Xsec" ,"Xsec" ,1,0,1);\r
- fH1Trials = new TH1F ("Trials" ,"Trials" ,1,0,1);\r
-\r
- fH1Track_pt = new TH1F("Track_pt" ,"Track_pt" ,200,0,200);\r
- fH1Track_phi = new TH1F("Track_phi" ,"Track_phi" ,100,0,2*pi);\r
- fH1Track_eta = new TH1F("Track_eta" ,"Track_eta" ,100,-1.,1);\r
- fH1MCTrack_pt = new TH1F("MCTrack_pt" ,"MCTrack_pt" ,200,0,200);\r
- fH1MCTrack_phi = new TH1F("MCTrack_phi" ,"MCTrack_phi" ,100,0,2*pi);\r
- fH1MCTrack_eta = new TH1F("MCTrack_eta" ,"MCTrack_eta" ,100,-1.,1);\r
- fH1MCPrimTrack_pt = new TH1F("MCPrimTrack_pt" ,"MCPrimTrack_pt" ,200,0,200);\r
- fH1MCPrimTrack_phi = new TH1F("MCPrimTrack_phi" ,"MCPrimTrack_phi" ,100,0,2*pi);\r
- fH1MCPrimTrack_eta = new TH1F("MCPrimTrack_eta" ,"MCPrimTrack_eta" ,100,-1.,1);\r
- fH1Jet_pt = new TH1F("Jet_pt" ,"Jet_pt" ,200,0,200);\r
- fH1Jet_phi = new TH1F("Jet_phi" ,"Jet_pt" ,100,0,2*pi);\r
- fH1Jet_eta = new TH1F("Jet_eta" ,"Jet_pt" ,100,-1.,1);\r
- fH1leadJet_pt = new TH1F("leadJet_pt" ,"leadJet_pt" ,200,0,200);\r
- fH1leadJet_pt_dijet = new TH1F("leadJet_pt_dijet" ,"leadJet_pt_dijet" ,200,0,200);\r
- fH1subJet_pt_dijet = new TH1F("subJet_pt_dijet" ,"subJet_pt_dijet" ,200,0,200);\r
- fH1JetMC_pt = new TH1F("JetMC_pt" ,"JetMC_pt" ,200,0,200);\r
- fH1leadJetMC_pt = new TH1F("leadJetMC_pt" ,"leadJetMC_pt" ,200,0,200);\r
- fH1leadJetMC_pt_dijet = new TH1F("leadJetMC_pt_dijet","leadJetMC_pt_dijet",200,0,200);\r
- fH1subJetMC_pt_dijet = new TH1F("subJetMC_pt_dijet" ,"subJetMC_pt_dijet" ,200,0,200);\r
- fH2JetsJet_dphi = new TH2F("JetsJet_dphi" ,"JetsJet_dphi" ,200,0,200,100,-2*pi,2*pi);\r
- fH2JetsJet_deta = new TH2F("JetsJet_deta" ,"JetsJet_deta" ,200,0,200,100,-1.5,1.5);\r
- fH2JetsJet_Aj = new TH2F("JetsJet_Aj" ,"JetsJet_Aj" ,200,0,200,100,0,1.2);\r
- fH2JetsJet_pt = new TH2F("JetsJet_pt" ,"JetsJet_pt" ,200,0,200,200,0,200);\r
- fH2JetsJetMC_dphi = new TH2F("JetsJetMC_dphi" ,"JetsJetMC_dphi" ,200,0,200,100,-2*pi,2*pi);\r
- fH2JetsJetMC_deta = new TH2F("JetsJetMC_deta" ,"JetsJetMC_deta" ,200,0,200,100,-1.5,1.5);\r
- fH2JetsJetMC_Aj = new TH2F("JetsJetMC_Aj" ,"JetsJetMC_Aj" ,200,0,200,100,0,1.2);\r
- fH2JetsJetMC_pt = new TH2F("JetsJetMC_pt" ,"JetsJetMC_pt" ,200,0,200,200,0,200);\r
- fH2Mult_Mtrack = new TH2F("Mult_Mtrack" ,"Mult_Mtrack" ,50,0,250,50,0,250); \r
- fH2Mult_Mlead = new TH2F("Mult_Mlead" ,"Mult_Mlead" ,50,0,250,25,0,25); \r
- fH2Mult_Mjet = new TH2F("Mult_Mjet" ,"Mult_Mjet" ,50,0,250,50,0,100); \r
- fH2Mult_Njet = new TH2F("Mult_Njet" ,"Mult_Njet" ,50,0,250,50,0,50); \r
- fH2Mult_Aj = new TH2F("Mult_Aj" ,"Mult_Aj" ,50,0,250,25,0,1.2); \r
- fH2Mlead_Aj = new TH2F("Mlead_Aj" ,"Mlead_Aj" ,25,0,25,25,0,1.2); \r
- fH2Jet_pt_Mlead = new TH2F("Jet_pt_Mlead" ,"Jet_pt_Mlead" ,50,0,200,25,0,25); \r
- fH2Jet_pt_Munder = new TH2F("Jet_pt_Munder" ,"Jet_pt_Munder" ,50,0,200,25,0,5); \r
- fH2leadJetMCptResolution = new TH2F("leadJetMCptResolution" ,"leadJetMCptResolution" ,200,0,200,200,0,200); \r
- fH2TrackMCptResolution = new TH2F("TrackMCptResolution" ,"TrackMCptResolution" ,200,0,200,200,0,200); \r
- fH2TrackMCptEfficiency = new TH2F("TrackMCptEfficiency" ,"TrackMCptEfficiency" ,200,0,200,100,0,1.2); \r
- fH2AjCorrelation_MCRec = new TH2F("AjCorrelation_MCRec" ,"AjCorrelation_MCRec" ,60,0,1.2,60,0,1.2); \r
- fH2MleadCorrelation_MCRec = new TH2F("MleadCorrelation_MCRec","MleadCorrelation_MCRec",60,0,60,60,0,60); \r
-\r
- for(int j=0;j<5;j++){\r
- histname = Form("ndiJ_ediv%d",j);\r
- fH1ndiJ_ediv[j]= new TH1F(histname,histname,1,1,2);\r
- histname = Form("Aj%d",j); \r
- fH1Aj[j] = new TH1F(histname,histname,50,0,1.2); \r
- histname = Form("Mlead%d",j); \r
- fH1Mlead[j] = new TH1F(histname,histname,50,0,50); \r
- histname = Form("leadJetMC_dphiResolution%d",j);\r
- fH1leadJetMC_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);\r
- histname = Form("subJetMC_dphiResolution%d",j);\r
- fH1subJetMC_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);\r
- histname = Form("leadJetMC_Efficiency%d",j);\r
- fH1leadJetMC_Efficiency[j] = new TH1F(histname,histname,100,0,1.2);\r
- histname = Form("subJetMC_Efficiency%d",j);\r
- fH1subJetMC_Efficiency[j] = new TH1F(histname,histname,100,0,1.2);\r
- for(int k=0;k<5;k++){\r
- histname = Form("JetHadron_dphi_ediv%d%d",j,k);\r
- fH1JetHadron_dphi_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadron_dphi_tptweight_ediv%d%d",j,k);\r
- fH1JetHadron_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadron_dphi_tJptweight_ediv%d%d",j,k);\r
- fH1JetHadron_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadronMC_dphi_ediv%d%d",j,k);\r
- fH1JetHadronMC_dphi_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadronMC_dphi_tptweight_ediv%d%d",j,k);\r
- fH1JetHadronMC_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadronMC_dphi_tJptweight_ediv%d%d",j,k);\r
- fH1JetHadronMC_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadronMCPrim_dphi_ediv%d%d",j,k);\r
- fH1JetHadronMCPrim_dphi_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadronMCPrim_dphi_tptweight_ediv%d%d",j,k);\r
- fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadronMCPrim_dphi_tJptweight_ediv%d%d",j,k);\r
- fH1JetHadronMCPrim_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- }\r
- }\r
- for(int j=0;j<3;j++){\r
- histname = Form("ndiJ_2040Mlead%d",j);\r
- fH1ndiJ_2040Mlead[j]= new TH1F(histname,histname,1,1,2);\r
- histname = Form("ndiJ_2040Aj%d",j);\r
- fH1ndiJ_2040Aj[j]= new TH1F(histname,histname,1,1,2);\r
- for(int k=0;k<5;k++){\r
- histname = Form("JetHadron_dphi_tptweight2040_Mleaddep%d%d",j,k);\r
- fH1JetHadron_dphi_tptweight2040_Mleaddep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadron_dphi_tptweight2040_Ajdep%d%d",j,k);\r
- fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadronMC_dphi_tptweight2040_Mleaddep%d%d",j,k);\r
- fH1JetHadronMC_dphi_tptweight2040_Mleaddep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadronMC_dphi_tptweight2040_Ajdep%d%d",j,k);\r
- fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadronMCPrim_dphi_tptweight2040_Mleaddep%d%d",j,k);\r
- fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- histname = Form("JetHadronMCPrim_dphi_tptweight2040_Ajdep%d%d",j,k);\r
- fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);\r
- }\r
- }\r
-\r
-\r
- if(IsMC){\r
- fHistList->Add(fH1Events );\r
- fHistList->Add(fH1Xsec );\r
- fHistList->Add(fH1Trials );\r
- fHistList->Add(fH1Track_pt );\r
- fHistList->Add(fH1Track_phi );\r
- fHistList->Add(fH1Track_eta );\r
- fHistList->Add(fH1MCTrack_pt );\r
- fHistList->Add(fH1MCTrack_phi );\r
- fHistList->Add(fH1MCTrack_eta );\r
- fHistList->Add(fH1MCPrimTrack_pt );\r
- fHistList->Add(fH1MCPrimTrack_phi );\r
- fHistList->Add(fH1MCPrimTrack_eta );\r
- fHistList->Add(fH1Jet_pt );\r
- fHistList->Add(fH1Jet_phi );\r
- fHistList->Add(fH1Jet_eta );\r
- fHistList->Add(fH1leadJet_pt );\r
- fHistList->Add(fH1leadJet_pt_dijet );\r
- fHistList->Add(fH1subJet_pt_dijet );\r
- fHistList->Add(fH1JetMC_pt );\r
- fHistList->Add(fH1leadJetMC_pt );\r
- fHistList->Add(fH1leadJetMC_pt_dijet);\r
- fHistList->Add(fH1subJetMC_pt_dijet );\r
- fHistList->Add(fH2JetsJet_dphi );\r
- fHistList->Add(fH2JetsJet_deta );\r
- fHistList->Add(fH2JetsJet_Aj );\r
- fHistList->Add(fH2JetsJet_pt );\r
- fHistList->Add(fH2JetsJetMC_dphi );\r
- fHistList->Add(fH2JetsJetMC_deta );\r
- fHistList->Add(fH2JetsJetMC_Aj );\r
- fHistList->Add(fH2JetsJetMC_pt );\r
- fHistList->Add(fH2Mult_Mtrack );\r
- fHistList->Add(fH2Mult_Mlead ); \r
- fHistList->Add(fH2Mult_Mjet ); \r
- fHistList->Add(fH2Mult_Njet ); \r
- fHistList->Add(fH2Mult_Aj ); \r
- fHistList->Add(fH2Mlead_Aj ); \r
- fHistList->Add(fH2Jet_pt_Mlead ); \r
- fHistList->Add(fH2Jet_pt_Munder ); \r
- fHistList->Add(fH2leadJetMCptResolution );\r
- fHistList->Add(fH2TrackMCptResolution );\r
- fHistList->Add(fH2TrackMCptEfficiency );\r
- fHistList->Add(fH2AjCorrelation_MCRec );\r
- fHistList->Add(fH2MleadCorrelation_MCRec);\r
- for(int j=0;j<5;j++){\r
- fHistList->Add(fH1ndiJ_ediv [j]);\r
- fHistList->Add(fH1Aj [j]);\r
- fHistList->Add(fH1Mlead [j]);\r
- fHistList->Add(fH1leadJetMC_dphiResolution [j]);\r
- fHistList->Add(fH1subJetMC_dphiResolution [j]);\r
- fHistList->Add(fH1leadJetMC_Efficiency [j]);\r
- fHistList->Add(fH1subJetMC_Efficiency [j]);\r
- for(int k=0;k<5;k++){\r
- fHistList->Add(fH1JetHadron_dphi_ediv [j][k]);\r
- fHistList->Add(fH1JetHadron_dphi_tptweight_ediv [j][k]);\r
- fHistList->Add(fH1JetHadron_dphi_tJptweight_ediv [j][k]);\r
- fHistList->Add(fH1JetHadronMC_dphi_ediv [j][k]);\r
- fHistList->Add(fH1JetHadronMC_dphi_tptweight_ediv [j][k]);\r
- fHistList->Add(fH1JetHadronMC_dphi_tJptweight_ediv [j][k]);\r
- fHistList->Add(fH1JetHadronMCPrim_dphi_ediv [j][k]);\r
- fHistList->Add(fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]);\r
- fHistList->Add(fH1JetHadronMCPrim_dphi_tJptweight_ediv [j][k]);\r
- }\r
- }\r
- for(int j=0;j<3;j++){\r
- fHistList->Add(fH1ndiJ_2040Mlead [j]);\r
- fHistList->Add(fH1ndiJ_2040Aj [j]);\r
- for(int k=0;k<5;k++){\r
- fHistList->Add(fH1JetHadron_dphi_tptweight2040_Mleaddep [j][k]);\r
- fHistList->Add(fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]);\r
- fHistList->Add(fH1JetHadronMC_dphi_tptweight2040_Mleaddep [j][k]);\r
- fHistList->Add(fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]);\r
- fHistList->Add(fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep [j][k]);\r
- fHistList->Add(fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]);\r
- }\r
- }\r
- }\r
- else{\r
- fHistList->Add(fH1Events );\r
- fHistList->Add(fH1Track_pt );\r
- fHistList->Add(fH1Track_phi );\r
- fHistList->Add(fH1Track_eta );\r
- fHistList->Add(fH1Jet_pt );\r
- fHistList->Add(fH1Jet_phi );\r
- fHistList->Add(fH1Jet_eta );\r
- fHistList->Add(fH1leadJet_pt );\r
- fHistList->Add(fH1leadJet_pt_dijet );\r
- fHistList->Add(fH1subJet_pt_dijet );\r
- fHistList->Add(fH2JetsJet_dphi );\r
- fHistList->Add(fH2JetsJet_deta );\r
- fHistList->Add(fH2JetsJet_Aj );\r
- fHistList->Add(fH2JetsJet_pt );\r
- fHistList->Add(fH2Mult_Mtrack );\r
- fHistList->Add(fH2Mult_Mlead ); \r
- fHistList->Add(fH2Mult_Mjet ); \r
- fHistList->Add(fH2Mult_Njet ); \r
- fHistList->Add(fH2Mult_Aj ); \r
- fHistList->Add(fH2Mlead_Aj ); \r
- fHistList->Add(fH2Jet_pt_Mlead ); \r
- fHistList->Add(fH2Jet_pt_Munder ); \r
- for(int j=0;j<5;j++){\r
- fHistList->Add(fH1ndiJ_ediv [j]);\r
- fHistList->Add(fH1Aj [j]);\r
- fHistList->Add(fH1Mlead [j]);\r
- for(int k=0;k<5;k++){\r
- fHistList->Add(fH1JetHadron_dphi_ediv [j][k]);\r
- fHistList->Add(fH1JetHadron_dphi_tptweight_ediv [j][k]);\r
- fHistList->Add(fH1JetHadron_dphi_tJptweight_ediv [j][k]);\r
- }\r
- }\r
- for(int j=0;j<3;j++){\r
- fHistList->Add(fH1ndiJ_2040Mlead [j]);\r
- fHistList->Add(fH1ndiJ_2040Aj [j]);\r
- for(int k=0;k<5;k++){\r
- fHistList->Add(fH1JetHadron_dphi_tptweight2040_Mleaddep [j][k]);\r
- fHistList->Add(fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]);\r
- }\r
- }\r
- }\r
-\r
- // =========== Switch on Sumw2 for all histos ===========\r
- for (Int_t i=0; i<fHistList->GetEntries(); ++i) \r
- {\r
- TH1 *h1 = dynamic_cast<TH1*>(fHistList->At(i));\r
- if (h1)\r
- {\r
- h1->Sumw2();\r
- continue;\r
- }\r
- THnSparse *hn = dynamic_cast<THnSparse*>(fHistList->At(i));\r
- if(hn)hn->Sumw2();\r
- }\r
- TH1::AddDirectory(oldStatus);\r
-\r
- PostData(1,fHistList);\r
-}\r
-\r
-\r
-//---------------------------------------------------------------------- \r
-void AliAnalysisTaskJetHadronCorrelation::Init()\r
-{\r
- // Initialization \r
- if (fDebug) printf("AnalysisTaskJetHadronCorrelation::Init() \n");\r
-\r
-}\r
-\r
-Bool_t AliAnalysisTaskJetHadronCorrelation::Notify()\r
-{\r
-\r
-\r
- fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());\r
- fAODOut = AODEvent();\r
- if(fNonStdFile.Length()!=0){\r
- AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());\r
- fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);\r
- if(fAODExtension){\r
- if(fDebug>1)Printf("AODExtension found for %s ",fNonStdFile.Data());\r
- }\r
- }\r
-\r
- TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();\r
- fxsec=0;\r
- ftrial=1;\r
-\r
- if(tree){\r
- TFile *curfile = tree->GetCurrentFile();\r
- if(!curfile){\r
- Error("Notify","No current file");\r
- return kFALSE;\r
- }\r
- if(IsMC){\r
- AliPWG4HighPtQAMC::PythiaInfoFromFile(curfile->GetName(),fxsec,ftrial);\r
- fH1Xsec ->Fill(0.,fxsec);\r
- fH1Trials->Fill(0.,ftrial);\r
- }\r
-\r
- }\r
-\r
- printf("Reading File %s ",fInputHandler->GetTree()->GetCurrentFile()->GetName());\r
- return kTRUE;\r
-}\r
-void AliAnalysisTaskJetHadronCorrelation::FinishTaskOutput()\r
-{\r
-}\r
-\r
-\r
-\r
-//________________________________________________________________________\r
-void AliAnalysisTaskJetHadronCorrelation::UserExec(Option_t *) \r
-{\r
-\r
-\r
- // Main loop (called each event)\r
- // Execute analysis for current event\r
-\r
- AliAODEvent *fAOD;\r
- TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();\r
- if( handler && handler->InheritsFrom("AliAODInputHandler") ) {\r
- fAOD = ((AliAODInputHandler*)handler)->GetEvent();\r
- if(fUseAODInput) fAODIn = fAOD;\r
- if (fDebug > 1) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__);\r
- }\r
- else {\r
- handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();\r
- if( handler && handler->InheritsFrom("AliAODHandler") ) {\r
- fAOD = ((AliAODHandler*)handler)->GetAOD();\r
- fAODIn = fAOD;\r
- if (fDebug > 1) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__);\r
- }\r
- }\r
-\r
- if(!fAODIn && !fUseAODInput){ // case we have AOD in input & output and want jets from output\r
- TObject* outHandler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();\r
- if( outHandler && outHandler->InheritsFrom("AliAODHandler") ) {\r
- fAODIn = ((AliAODHandler*)outHandler)->GetAOD();\r
- if (fDebug > 1) Printf("%s:%d jets from output AOD", (char*)__FILE__,__LINE__);\r
- }\r
- }\r
- if (!fAODIn) {\r
- Printf("ERROR %s : fAODIn not available",(char*)__FILE__);\r
- return;\r
- }\r
-\r
- AliInputEventHandler* inputHandler = (AliInputEventHandler*)\r
- ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());\r
- if(!(inputHandler->IsEventSelected() & AliVEvent::kMB)){\r
- if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... ");\r
- return;\r
- }\r
- fH1Events->Fill(0);\r
-\r
- AliAODHeader* aliH = dynamic_cast <AliAODHeader*> (fAODIn->GetHeader());\r
- if(!aliH){\r
- Printf("ERROR: AliAODHeader not available");\r
- return;\r
- }\r
- double Mult = aliH->GetRefMultiplicity();\r
-\r
- // start jet analysis -------------------------Init.\r
- Float_t pi=TMath::Pi();\r
-\r
- Double_t Jet_pt [20][5000];\r
- Double_t Jet_phi [20][5000];\r
- Double_t Jet_eta [20][5000];\r
- Double_t Jet_area [20][5000];\r
- Double_t subJet_pt [20][5000];\r
- Double_t subJet_eta[20][5000];\r
- Double_t Track_n ;\r
- Double_t Track_pt [5000];\r
- Double_t Track_eta[5000];\r
- Double_t Track_phi[5000];\r
- Double_t MCTrack_n ;\r
- Double_t MCTrack_pt [5000];\r
- Double_t MCTrack_eta[5000];\r
- Double_t MCTrack_phi[5000];\r
-\r
- Track_n=0;MCTrack_n=0;\r
- for(int i=0;i<20;i++){\r
- for(int j=0;j<1000;j++){\r
- Jet_pt[i][j]=0.;\r
- Jet_phi[i][j]=999.;\r
- Jet_eta[i][j]=999.;\r
- Jet_area[i][j]=999.;\r
- subJet_pt[i][j]=0.;\r
- subJet_eta[i][j]=999.;\r
- Track_pt [j]=0.;\r
- Track_phi[j]=999.;\r
- Track_eta[j]=999.;\r
- MCTrack_pt [j]=0.;\r
- MCTrack_phi[j]=999.;\r
- MCTrack_eta[j]=999.;\r
- }\r
- }\r
-\r
- int nLJetAOD=999; double ptLJetAOD=0;double phiLJetAOD=999.;double etaLJetAOD=999.;double ptsLJetAOD=0;double phisLJetAOD=900.;double etasLJetAOD=900.;\r
- int nLJetMC2=999; double ptLJetMC2=0;double phiLJetMC2=999.;double etaLJetMC2=999.;double ptsLJetMC2=0;double phisLJetMC2=900.;double etasLJetMC2=900.;\r
- int nLJetMC =999; double ptLJetMC =0;double phiLJetMC =999.;double etaLJetMC =999.;double ptsLJetMC =0;double phisLJetMC =900.;double etasLJetMC =900.;\r
- bool findLJetAOD=false;\r
- bool findLJetMC2=false;\r
- bool findDiJet=false,findDiJetMC=false;\r
- int nLJet = 999;\r
- int Mjet_tot =0;\r
- int Njet_tot =0;\r
-\r
- double Aj=99.,AjMC=99.;\r
- double Mlead=99.,MleadMC=99.;\r
- int Munder=99.;\r
-\r
- ////--------------------------------------------------------------------Init.\r
-\r
- TString cAdd = "";\r
- TString Branchname_gen,Branchname_gen2,Branchname_rec;\r
- if((JFAlg=="ANTIKT")||(JFAlg=="KT")){\r
- cAdd += Form("%02d_",(int)((Radius+0.01)*10.));\r
- cAdd += Form("B%d",(int)BackM);\r
- cAdd += Form("_Filter%05d",Filtermask);\r
- cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));\r
- cAdd += Form("_Skip%02d",SkipCone);\r
- Branchname_gen = Form("clustersAODMC_%s%s",JFAlg.Data(),cAdd.Data());\r
- Branchname_gen2 = Form("clustersAODMC2_%s%s",JFAlg.Data(),cAdd.Data());\r
- Branchname_rec = Form("clustersAOD_%s%s",JFAlg.Data(),cAdd.Data());\r
- }\r
- else{\r
- cAdd += Form("%02d_",(int)((Radius+0.01)*10.));\r
- cAdd += Form("B%d",(int)BackM);\r
- cAdd += Form("_Filter%05d",Filtermask);\r
- cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));\r
- Branchname_gen = Form("jetsAODMC_%s%s",JFAlg.Data(),cAdd.Data());\r
- Branchname_gen2 = Form("jetsAODMC2_%s%s",JFAlg.Data(),cAdd.Data());\r
- Branchname_rec = Form("jetsAOD_%s%s",JFAlg.Data(),cAdd.Data());\r
- }\r
-\r
-\r
-\r
- //count number of tracks@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \r
- //Reconstructed Track\r
- TClonesArray* tracks = dynamic_cast <TClonesArray*> (fAODIn->GetTracks());\r
- if(!tracks){\r
- if (fDebug > 1) Printf("%s:%d could not get AODtracks", (char*)__FILE__,__LINE__);\r
- return;\r
- }\r
-\r
- Bool_t TrackEff[5000];\r
- for(int i=0;i<5000;i++){\r
- TrackEff[i]=false;\r
- }\r
- Int_t nt = fAODIn->GetNumberOfTracks();\r
- AliAODTrack* trackAOD=NULL;\r
- for(int ntrack =0;ntrack<nt;ntrack++){\r
- trackAOD = (AliAODTrack*) (tracks->At(ntrack));\r
- Bool_t bgoodT=false;\r
- if(Filtermask!=272){if(trackAOD->TestFilterMask(Filtermask))bgoodT=true;}\r
- else {if(trackAOD->IsHybridGlobalConstrainedGlobal())bgoodT=true;} //for hybrid Track cuts\r
- if(!bgoodT)continue;\r
- if(TMath::Abs(trackAOD->Eta())<0.9){\r
- Track_n++;\r
- fH1Track_pt ->Fill(trackAOD->Pt()*TrackEScale);\r
- fH1Track_phi->Fill(trackAOD->Phi());\r
- fH1Track_eta->Fill(trackAOD->Eta());\r
- //cout<<"Scale "<<TrackEScale<<" org pt "<<trackAOD->Pt()<< " scaled pt "<< trackAOD->Pt()*TrackEScale <<endl;\r
- if(IsMC){\r
- // track pt resplution-------------------\r
- Int_t MCID = TMath::Abs(trackAOD->GetLabel());\r
- TClonesArray* mctracks = dynamic_cast <TClonesArray*> (fAODIn->GetList()->FindObject(AliAODMCParticle::StdBranchName()));\r
- if(!mctracks){\r
- if (fDebug > 1) Printf("%s:%d could not get AODMCtracks", (char*)__FILE__,__LINE__);\r
- continue;\r
- }\r
- AliAODMCParticle *trackMCAOD = (AliAODMCParticle*) mctracks->At(MCID);\r
- fH2TrackMCptResolution->Fill(trackMCAOD->Pt(),trackAOD->Pt());\r
- TrackEff[MCID]=true;\r
- // --------------------------------------\r
- }\r
- }\r
- }\r
- if(IsMC){\r
- //MC Track\r
- TClonesArray* mctracks = dynamic_cast <TClonesArray*> (fAODIn->GetList()->FindObject(AliAODMCParticle::StdBranchName()));\r
- if(!mctracks){\r
- if (fDebug > 1) Printf("%s:%d could not get AODMCtracks", (char*)__FILE__,__LINE__);\r
- return;\r
- }\r
- Int_t ntmc = mctracks->GetEntriesFast();\r
- AliAODMCParticle* trackMCAOD;\r
- int lastprim=0;\r
- for(int ntrack =0;ntrack<ntmc;ntrack++){\r
- trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));\r
- if((trackMCAOD->IsPhysicalPrimary())==1)lastprim=ntrack;\r
- }\r
- for(int ntrack =0;ntrack<ntmc;ntrack++){\r
- trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));\r
- if((trackMCAOD->GetPdgCode()>10)&&((trackMCAOD->GetMother())>1)&&(ntrack>lastprim)&&(trackMCAOD->Charge())){// for Decay particles\r
- if(TMath::Abs(trackMCAOD->Eta())<0.9){\r
- fH1MCTrack_pt ->Fill(trackMCAOD->Pt());\r
- fH1MCTrack_phi->Fill(trackMCAOD->Phi());\r
- fH1MCTrack_eta->Fill(trackMCAOD->Eta());\r
- if(TrackEff[ntrack])fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),1);\r
- else fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),0);\r
- }\r
- }\r
- if((trackMCAOD->IsPhysicalPrimary())&&(trackMCAOD->Charge())){// for Physical particles\r
- if(TMath::Abs(trackMCAOD->Eta())<0.9){\r
- MCTrack_n++;\r
- fH1MCTrack_pt ->Fill(trackMCAOD->Pt());\r
- fH1MCTrack_phi->Fill(trackMCAOD->Phi());\r
- fH1MCTrack_eta->Fill(trackMCAOD->Eta());\r
- fH1MCPrimTrack_pt ->Fill(trackMCAOD->Pt());\r
- fH1MCPrimTrack_phi->Fill(trackMCAOD->Phi());\r
- fH1MCPrimTrack_eta->Fill(trackMCAOD->Eta());\r
- if(TrackEff[ntrack])fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),1);\r
- else fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),0);\r
- }\r
- }\r
- }\r
- }\r
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ count number of tracks\r
-\r
-\r
-\r
-\r
- for(int algorithm=0;algorithm<3;algorithm++){\r
-\r
- if(algorithm==0)fJetBranch = Branchname_rec.Data();\r
- if(algorithm==1)fJetBranch = Branchname_gen2.Data();\r
- if(algorithm==2)fJetBranch = Branchname_gen.Data();\r
-\r
- if((!IsMC&&(algorithm==1||algorithm==2)))continue;\r
-\r
- TClonesArray* jets = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data()));\r
- if(!jets){\r
- printf(" Tere are no Branch named %s \n",fJetBranch.Data());\r
- continue;\r
- }\r
- Int_t nj = jets->GetEntriesFast();\r
- if (fDebug) printf("There are %5d jets in the event \n", nj);\r
- AliAODJet* jetsAOD;\r
- //Find Leading Jet -------------------------------------------------------\r
- for(int njet =0;njet<nj;njet++){\r
- jetsAOD = (AliAODJet*) (jets->At(njet));\r
- Jet_pt [algorithm][njet] = jetsAOD->Pt()*JetEScale;\r
- Jet_phi [algorithm][njet] = jetsAOD->Phi(); \r
- Jet_eta [algorithm][njet] = jetsAOD->Eta();\r
- Jet_area [algorithm][njet] = jetsAOD->EffectiveAreaCharged();\r
-\r
-\r
- TRefArray *reftracks = jetsAOD->GetRefTracks();\r
- if(algorithm==0){if(Jet_pt[algorithm][njet]>1.)Mjet_tot += reftracks->GetEntriesFast();Njet_tot++;}\r
- double eta_cut_Jet=0.5;\r
- if((TMath::Abs(Jet_eta[algorithm][njet])<eta_cut_Jet)&&(Jet_pt[algorithm][njet]>10.)){\r
- if(algorithm==0){\r
- fH1Jet_pt ->Fill(Jet_pt [algorithm][njet]); \r
- fH1Jet_phi->Fill(Jet_phi[algorithm][njet]); \r
- fH1Jet_eta->Fill(Jet_eta[algorithm][njet]); \r
- if(Jet_pt[algorithm][njet]>ptLJetAOD){\r
- findLJetAOD=true;\r
- nLJetAOD=njet;ptLJetAOD=Jet_pt[algorithm][njet];phiLJetAOD=Jet_phi[algorithm][njet];etaLJetAOD=Jet_eta[algorithm][njet];\r
- }\r
- }\r
- if(algorithm==1){\r
- fH1JetMC_pt->Fill(Jet_pt[algorithm][njet]); \r
- if(Jet_pt[algorithm][njet]>ptLJetMC2){\r
- findLJetMC2=true;\r
- nLJetMC2=njet;ptLJetMC2=Jet_pt[algorithm][njet];phiLJetMC2=Jet_phi[algorithm][njet];etaLJetMC2=Jet_eta[algorithm][njet];\r
- }\r
- }\r
- if(algorithm==2){\r
- if(Jet_pt[algorithm][njet]>ptLJetMC){\r
- nLJetMC=njet;ptLJetMC=Jet_pt[algorithm][njet];phiLJetMC=Jet_phi[algorithm][njet];etaLJetMC=Jet_eta[algorithm][njet];\r
- }\r
- }\r
- }\r
- }//njet loop\r
- if(algorithm==0){nLJet=nLJetAOD;fH1leadJet_pt ->Fill(Jet_pt[algorithm][nLJet]);}\r
- if(algorithm==1){nLJet=nLJetMC2;fH1leadJetMC_pt->Fill(Jet_pt[algorithm][nLJet]);}\r
- if(algorithm==2){nLJet=nLJetMC;}\r
- if(findLJetAOD&&(algorithm==0)){\r
- jetsAOD = (AliAODJet*) (jets->At(nLJet));\r
- TRefArray *reftracks = jetsAOD->GetRefTracks();\r
- Mlead = reftracks->GetEntriesFast();\r
- }\r
- if(findLJetMC2&&(algorithm==1)){\r
- jetsAOD = (AliAODJet*) (jets->At(nLJetMC2));\r
- TRefArray *reftracks = jetsAOD->GetRefTracks();\r
- MleadMC = reftracks->GetEntriesFast();\r
- }\r
- //----------------------------------------------------------- Leading Jet\r
- if(nj<2)continue;\r
- //Find Sub leading Jet ==================================================\r
- for(int njet=0;njet<nj;njet++){\r
- if(njet==nLJet)continue;\r
- jetsAOD = (AliAODJet *)jets->At(njet);\r
- subJet_pt [algorithm][njet] = jetsAOD->Pt()*JetEScale;\r
- subJet_eta[algorithm][njet] = jetsAOD->Eta();\r
- double eta_cut_Jet=0.5;\r
- if((TMath::Abs(subJet_eta[algorithm][njet])<eta_cut_Jet) && (subJet_pt[algorithm][njet]>10.)){\r
- if(subJet_pt[algorithm][njet]>ptsLJetAOD&&algorithm==0){\r
- ptsLJetAOD=Jet_pt[algorithm][njet];phisLJetAOD=Jet_phi[algorithm][njet];etasLJetAOD=Jet_eta[algorithm][njet];\r
- }\r
- if(subJet_pt[algorithm][njet]>ptsLJetMC2 &&algorithm==1){\r
- ptsLJetMC2=Jet_pt[algorithm][njet];phisLJetMC2=Jet_phi[algorithm][njet];etasLJetMC2=Jet_eta[algorithm][njet];\r
- }\r
- if(subJet_pt[algorithm][njet]>ptsLJetMC &&algorithm==2){\r
- ptsLJetMC =Jet_pt[algorithm][njet];phisLJetMC =Jet_phi[algorithm][njet];etasLJetMC =Jet_eta[algorithm][njet];\r
- }\r
- }\r
- }\r
- //====================================================== Sub leading Jet \r
-\r
- double Leading_pt=0.;double Leading_phi=999.;double Leading_eta=999.;double sLeading_pt=0.;double sLeading_phi=999.;double sLeading_eta=999.;\r
- if(algorithm==0){Leading_pt=ptLJetAOD;Leading_phi=phiLJetAOD;Leading_eta=etaLJetAOD;sLeading_pt=ptsLJetAOD;sLeading_phi=phisLJetAOD;sLeading_eta=etasLJetAOD;}\r
- if(algorithm==1){Leading_pt=ptLJetMC2;Leading_phi=phiLJetMC2;Leading_eta=etaLJetMC2;sLeading_pt=ptsLJetMC2;sLeading_phi=phisLJetMC2;sLeading_eta=etasLJetMC2;}\r
- if(algorithm==2){Leading_pt=ptLJetMC ;Leading_phi=phiLJetMC ;Leading_eta=etaLJetMC ;sLeading_pt=ptsLJetMC ;sLeading_phi=phisLJetMC ;sLeading_eta=etasLJetMC ;}\r
-\r
- ////Di-Jet event trigger +++++++++++++++++++++++++++++++++++++++++++++++\r
- double DPhi = DeltaPhi(Leading_phi,sLeading_phi);\r
- double DEta = Leading_eta-sLeading_eta;\r
- if(algorithm==0){\r
- fH2JetsJet_dphi->Fill(Leading_pt,DPhi);\r
- fH2JetsJet_deta->Fill(Leading_pt,DEta);\r
- }\r
- if(algorithm==1){\r
- fH2JetsJetMC_dphi->Fill(Leading_pt,DPhi);\r
- fH2JetsJetMC_deta->Fill(Leading_pt,DEta);\r
- }\r
- if((TMath::Cos(DPhi)<-0.5)&&(Leading_pt>10.)&&(sLeading_pt>10.)){\r
- if(algorithm==0)Aj = (Leading_pt-sLeading_pt)/(Leading_pt+sLeading_pt);\r
- if(algorithm==1)AjMC = (Leading_pt-sLeading_pt)/(Leading_pt+sLeading_pt);\r
- if(algorithm==0){\r
- fH1subJet_pt_dijet ->Fill(sLeading_pt);\r
- fH1leadJet_pt_dijet->Fill(Leading_pt);\r
- fH2JetsJet_Aj ->Fill(Leading_pt,Aj);\r
- fH2JetsJet_pt ->Fill(Leading_pt,sLeading_pt);\r
- fH2Mult_Aj ->Fill(Mult,Aj); \r
- fH2Mlead_Aj ->Fill(Mlead,Aj);\r
- for(int eb=0;eb<5;eb++){\r
- if(TMath::Abs(Leading_pt -10.-20.*(eb))<10.){\r
- fH1Aj[eb] ->Fill(Aj);\r
- }\r
- }\r
- }\r
- if(algorithm==1){\r
- fH1leadJetMC_pt_dijet->Fill(Leading_pt);\r
- fH1subJetMC_pt_dijet ->Fill(sLeading_pt);\r
- fH2JetsJetMC_Aj ->Fill(Leading_pt,AjMC);\r
- fH2JetsJetMC_pt ->Fill(Leading_pt,sLeading_pt);\r
- findDiJetMC=true;\r
- }\r
- findDiJet=true;\r
-\r
- }\r
- ////+++++++++++++++++++++++++++++++++++++++++++++++ Di-Jet event trigger \r
-\r
- if(algorithm!=0)continue;// for only data & reconstructed Jets\r
-\r
-\r
- //Jet-Hadron Correlation###############################################\r
- if((findDiJet)&&(Leading_pt>10.)&&(sLeading_pt>10.)){\r
- double eta_cut_Jet=0.5;\r
- if(TMath::Abs(Leading_eta)<eta_cut_Jet){\r
- for(int eb=0;eb<5;eb++){\r
- if(TMath::Abs(Leading_pt -10.-20.*(eb))<10.){\r
- fH1ndiJ_ediv[eb]->Fill(1);\r
- if(eb==1){\r
- if((0<Mlead)&&Mlead<7) {fH1ndiJ_2040Mlead[0]->Fill(1);}\r
- else if((7<=Mlead)&&(Mlead<10)) {fH1ndiJ_2040Mlead[1]->Fill(1);}\r
- else {fH1ndiJ_2040Mlead[2]->Fill(1);}\r
- if((0<Aj)&&(Aj<0.19)) {fH1ndiJ_2040Aj [0]->Fill(1);}\r
- else if((0.19<=Aj)&&(Aj<0.38)) {fH1ndiJ_2040Aj [1]->Fill(1);}\r
- else {fH1ndiJ_2040Aj [2]->Fill(1);}\r
- }\r
- fH1Mlead[eb]->Fill(Mlead);\r
- for(int ntrack =0;ntrack<nt;ntrack++){\r
- trackAOD = (AliAODTrack*) (fAODIn->GetTrack(ntrack));\r
- Bool_t bgoodT=false;\r
- if(Filtermask!=272){if(trackAOD->TestFilterMask(Filtermask))bgoodT=true;}\r
- else{ if(trackAOD->IsHybridGlobalConstrainedGlobal())bgoodT=true;} //for hybrid Track cuts\r
- if(!bgoodT)continue;\r
- Track_pt [ntrack] = (trackAOD->Pt()*TrackEScale);\r
- Track_phi [ntrack] = trackAOD->Phi();\r
- Track_eta [ntrack] = trackAOD->Eta();\r
-\r
- //cout<<"Scale "<<TrackEScale<<" org pt "<<trackAOD->Pt()<< " scaled pt "<< trackAOD->Pt()*TrackEScale <<endl;\r
-\r
- double DelPhi = DeltaPhi(Leading_phi,Track_phi[ntrack]);\r
- if(TMath::Abs(Track_eta[ntrack])<0.9){\r
- if((TMath::Abs(DelPhi-pi/2.)<pi/8.)||((DelPhi+pi/2.)<pi/8.)||(TMath::Abs(DelPhi-3./2.*pi)<pi/8.))Munder++;\r
- for(int teb=0;teb<5;teb++){\r
- if(teb==0){if(!( Track_pt[ntrack]>0.15))continue;}\r
- if(teb==1){if(!((Track_pt[ntrack]<1.5)&&(Track_pt[ntrack]>0.15)))continue;}\r
- if(teb==2){if(!((Track_pt[ntrack]<3.0)&&(Track_pt[ntrack]>1.5)))continue;}\r
- if(teb==3){if(!((Track_pt[ntrack]<4.5)&&(Track_pt[ntrack]>3.0)))continue;}\r
- if(teb==4){if(!( Track_pt[ntrack]>4.5))continue;}\r
- fH1JetHadron_dphi_ediv [eb][teb]->Fill(DelPhi); \r
- fH1JetHadron_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]);\r
- fH1JetHadron_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]/Leading_pt);\r
- if(eb==1){\r
- if((0<Mlead)&&Mlead<7) {fH1JetHadron_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,Track_pt[ntrack]);}\r
- else if((7<=Mlead)&&(Mlead<10)){fH1JetHadron_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,Track_pt[ntrack]);}\r
- else {fH1JetHadron_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,Track_pt[ntrack]);}\r
- if((0<Aj)&&(Aj<0.19)) {fH1JetHadron_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,Track_pt[ntrack]);}\r
- else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadron_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,Track_pt[ntrack]);}\r
- else {fH1JetHadron_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,Track_pt[ntrack]);}\r
- }\r
- }\r
- }\r
- }//Track Loop\r
- if(IsMC){\r
- //MC Track\r
- TClonesArray* mctracks = dynamic_cast <TClonesArray*> (fAODIn->GetList()->FindObject(AliAODMCParticle::StdBranchName()));\r
- if(!mctracks){\r
- if (fDebug > 1) Printf("%s:%d could not get AODMCtracks", (char*)__FILE__,__LINE__);\r
- continue;\r
- }\r
- Int_t ntmc = mctracks->GetEntriesFast();\r
- AliAODMCParticle* trackMCAOD;\r
- int lastprim=0;\r
- for(int ntrack =0;ntrack<ntmc;ntrack++){\r
- trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));\r
- if((trackMCAOD->IsPhysicalPrimary())==1)lastprim=ntrack;\r
- }\r
- for(int ntrack =0;ntrack<ntmc;ntrack++){\r
- trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));\r
- if((trackMCAOD->GetPdgCode()>10)&&((trackMCAOD->GetMother())>1)&&(ntrack>lastprim)&&(trackMCAOD->Charge())){// for Decay particles\r
- MCTrack_pt [ntrack] = trackMCAOD->Pt();\r
- MCTrack_phi [ntrack] = trackMCAOD->Phi();\r
- MCTrack_eta [ntrack] = trackMCAOD->Eta();\r
- double DelPhi = DeltaPhi(Leading_phi,MCTrack_phi[ntrack]);\r
- if(TMath::Abs(MCTrack_eta[ntrack])<0.9){\r
- for(int teb=0;teb<5;teb++){\r
- if(teb==0){if(!( MCTrack_pt[ntrack]>0.15))continue;}\r
- if(teb==1){if(!((MCTrack_pt[ntrack]<1.5)&&(MCTrack_pt[ntrack]>0.15)))continue;}\r
- if(teb==2){if(!((MCTrack_pt[ntrack]<3.0)&&(MCTrack_pt[ntrack]>1.5)))continue;}\r
- if(teb==3){if(!((MCTrack_pt[ntrack]<4.5)&&(MCTrack_pt[ntrack]>3.0)))continue;}\r
- if(teb==4){if(!( MCTrack_pt[ntrack]>4.5))continue;}\r
- fH1JetHadronMC_dphi_ediv [eb][teb]->Fill(DelPhi); \r
- fH1JetHadronMC_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);\r
- fH1JetHadronMC_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]/Leading_pt);\r
- if(eb==1){\r
- if((0<Mlead)&&Mlead<7) {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else if((7<=Mlead)&&(Mlead<10)){fH1JetHadronMC_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- if((0<Aj)&&(Aj<0.19)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else {fH1JetHadronMC_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- }\r
- }\r
- }\r
- }\r
- if((trackMCAOD->IsPhysicalPrimary())&&(trackMCAOD->Charge())){// for Physical particles\r
- MCTrack_pt [ntrack] = trackMCAOD->Pt();\r
- MCTrack_phi [ntrack] = trackMCAOD->Phi();\r
- MCTrack_eta [ntrack] = trackMCAOD->Eta();\r
- double DelPhi = DeltaPhi(Leading_phi,MCTrack_phi[ntrack]);\r
- if(TMath::Abs(MCTrack_eta[ntrack])<0.9){\r
- for(int teb=0;teb<5;teb++){\r
- if(teb==0){if(!( MCTrack_pt[ntrack]>0.15))continue;}\r
- if(teb==1){if(!((MCTrack_pt[ntrack]<1.5)&&(MCTrack_pt[ntrack]>0.15)))continue;}\r
- if(teb==2){if(!((MCTrack_pt[ntrack]<3.0)&&(MCTrack_pt[ntrack]>1.5)))continue;}\r
- if(teb==3){if(!((MCTrack_pt[ntrack]<4.5)&&(MCTrack_pt[ntrack]>3.0)))continue;}\r
- if(teb==4){if(!( MCTrack_pt[ntrack]>4.5))continue;}\r
- fH1JetHadronMC_dphi_ediv [eb][teb]->Fill(DelPhi); \r
- fH1JetHadronMC_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);\r
- fH1JetHadronMC_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]/Leading_pt);\r
- fH1JetHadronMCPrim_dphi_ediv [eb][teb]->Fill(DelPhi); \r
- fH1JetHadronMCPrim_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);\r
- fH1JetHadronMCPrim_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]/Leading_pt);\r
- if(eb==1){\r
- if((0<Mlead)&&Mlead<7) {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else if((7<=Mlead)&&(Mlead<10)){fH1JetHadronMC_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- if((0<Aj)&&(Aj<0.19)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else {fH1JetHadronMC_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
-\r
- if((0<Mlead)&&Mlead<7) {fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else if((7<=Mlead)&&(Mlead<10)){fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else {fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- if((0<Aj)&&(Aj<0.19)) {fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- else {fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}\r
- }\r
- }\r
- }\r
- }\r
- }\r
- }\r
- }\r
- }// Momentum Loop Jet\r
- fH2Jet_pt_Munder ->Fill(Leading_pt,(double)Munder/(1.8*pi/2.)*Jet_area[0][nLJet]);\r
- fH2Jet_pt_Mlead ->Fill(Leading_pt,Mlead);\r
- }//eta cut\r
- }// Di-Jet\r
- //############################################### Jet-Hadron Correlation\r
- }// algorithm LOOP\r
- if(IsMC){\r
- for(int eb=0;eb<5;eb++){\r
- double DPhi,DEta;\r
- if(TMath::Abs(ptLJetAOD -10.-20.*(eb))<10.){\r
- DPhi = DeltaPhi(phiLJetMC,phiLJetAOD);\r
- DEta = etaLJetMC-etaLJetAOD;\r
- fH1leadJetMC_dphiResolution[eb]->Fill(DPhi);\r
- if(sqrt(pow(DPhi,2)+pow(DEta,2))<0.4)fH1leadJetMC_Efficiency[eb]->Fill(1);\r
- else fH1leadJetMC_Efficiency[eb]->Fill(0);\r
- DPhi = DeltaPhi(phisLJetMC,phisLJetAOD);\r
- DEta = etasLJetMC-etasLJetAOD;\r
- fH1subJetMC_dphiResolution[eb]->Fill(DPhi);\r
- if(sqrt(pow(DPhi,2)+pow(DEta,2))<0.4)fH1subJetMC_Efficiency[eb]->Fill(1);\r
- else fH1subJetMC_Efficiency[eb]->Fill(0);\r
- DPhi = DeltaPhi(phiLJetMC2,phiLJetAOD);\r
- DEta = etaLJetMC2-etaLJetAOD;\r
-\r
- if(sqrt(pow(DPhi,2)+pow(DEta,2))<0.4)fH2leadJetMCptResolution->Fill(ptLJetMC2,ptLJetAOD);\r
- if(findDiJetMC)fH2AjCorrelation_MCRec ->Fill(AjMC,Aj);\r
- if(findDiJetMC)fH2MleadCorrelation_MCRec->Fill(MleadMC,Mlead);\r
- }\r
- }\r
- fH2Mult_Mtrack->Fill(Mult,Track_n); \r
- fH2Mult_Mjet ->Fill(Mult,Mjet_tot);\r
- fH2Mult_Njet ->Fill(Mult,Njet_tot);\r
- if(findLJetAOD)fH2Mult_Mlead ->Fill(Mult,Mlead); \r
- }\r
- else{\r
- fH2Mult_Mtrack->Fill(Mult,Track_n); \r
- fH2Mult_Mjet ->Fill(Mult,Mjet_tot);\r
- fH2Mult_Njet ->Fill(Mult,Njet_tot);\r
- if(findLJetAOD)fH2Mult_Mlead ->Fill(Mult,Mlead); \r
- }\r
-\r
- PostData(1, fHistList);\r
- return;\r
-} \r
-\r
-//________________________________________________________________________\r
-void AliAnalysisTaskJetHadronCorrelation::Terminate(Option_t *){\r
- // Terminate analysis\r
- if (fDebug) printf("AnalysisTaskPt: Terminate() \n");\r
-}\r
-\r
-Double_t AliAnalysisTaskJetHadronCorrelation::DeltaPhi(Double_t phi1,Double_t phi2){\r
- Float_t pi=TMath::Pi();\r
- Double_t dphi = phi1-phi2;\r
- if (dphi<(-1./2*pi))dphi = dphi +2*pi;\r
- else if(dphi>( 3./2*pi))dphi = dphi -2*pi;\r
- return dphi;\r
-}\r
+//#include <string.h>
+//#include <TStyle.h>
+#include <list>
+#include <string>
+
+#include "TTree.h"
+#include "TCanvas.h"
+#include "AliAnalysisTask.h"
+#include "AliInputEventHandler.h"
+#include "AliESDtrack.h"
+#include "AliAODVertex.h"
+#include "AliAODCluster.h"
+
+#include <TROOT.h>
+#include <TRandom.h>
+#include <TSystem.h>
+#include <TInterpreter.h>
+#include <TChain.h>
+#include <TFile.h>
+#include <TKey.h>
+#include <TH1F.h>
+#include <TH2F.h>
+#include <TH3F.h>
+#include <TProfile.h>
+#include <TList.h>
+#include <TLorentzVector.h>
+#include <TClonesArray.h>
+#include <TRefArray.h>
+
+#include "TDatabasePDG.h"
+#include "AliAnalysisManager.h"
+#include "AliJetFinder.h"
+#include "AliJetHeader.h"
+#include "AliJetReader.h"
+#include "AliJetReaderHeader.h"
+#include "AliUA1JetHeaderV1.h"
+#include "AliSISConeJetHeader.h"
+#include "AliESDEvent.h"
+#include "AliAODEvent.h"
+#include "AliAODHandler.h"
+#include "AliAODInputHandler.h"
+#include "AliAODTrack.h"
+#include "AliAODMCParticle.h"
+#include "AliAODJet.h"
+#include "AliAODJetEventBackground.h"
+#include "AliMCParticle.h"
+#include "AliAODMCParticle.h"
+#include "AliMCEventHandler.h"
+#include "AliMCEvent.h"
+#include "AliStack.h"
+
+#include "AliAODHeader.h"
+#include "AliAODMCHeader.h"
+//#include "AliGenPythiaEventHeader.h"
+#include "AliJetKineReaderHeader.h"
+#include "AliGenCocktailEventHeader.h"
+#include "AliInputEventHandler.h"
+#include "AliGenEventHeader.h"
+#include "AliGenDPMjetEventHeader.h"
+
+#include "AliAnalysisTaskJetHadronCorrelation.h"
+#include "AliAnalysisTaskPhiCorrelations.h"
+//#include "AliAnalysisHelperJetTasks.h"
+#include "AliPWG4HighPtQAMC.h"
+
+using std::cout;
+using std::endl;
+
+ClassImp(AliAnalysisTaskJetHadronCorrelation)
+
+ //________________________________________________________________________
+ AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation():
+ AliAnalysisTaskSE(),
+ fUseAODInput(kFALSE),
+ fJetBranch("jets"),
+ fNonStdFile(""),
+ fAODIn(0x0),
+ fAODOut(0x0),
+ fAODExtension(0x0),
+ JFAlg("ANTIKT"),
+ Radius(0.4),
+ Filtermask(272),
+ BackM(0),
+ TrackPtcut(0.15),
+ SkipCone(0),
+ IsMC(kTRUE),
+ JetEScale(1.),
+ TrackEScale(1.),
+ fxsec(0.),
+ ftrial(1.),
+ fHistList(0x0), // Output list
+ fIfiles(0),
+ fH1Events(0x0),
+ fH1Xsec(0x0),
+ fH1Trials(0x0),
+ fH1Track_pt (0x0),
+ fH1Track_phi (0x0),
+ fH1Track_eta (0x0),
+ fH1MCTrack_pt (0x0),
+ fH1MCTrack_phi (0x0),
+ fH1MCTrack_eta (0x0),
+ fH1MCPrimTrack_pt (0x0),
+ fH1MCPrimTrack_phi (0x0),
+ fH1MCPrimTrack_eta (0x0),
+ fH1Jet_pt (0x0),
+ fH1Jet_phi (0x0),
+ fH1Jet_eta (0x0),
+ fH1leadJet_pt (0x0),
+ fH1leadJet_pt_dijet (0x0),
+ fH1subJet_pt_dijet (0x0),
+ fH1JetMC_pt (0x0),
+ fH1leadJetMC_pt (0x0),
+ fH1leadJetMC_pt_dijet (0x0),
+ fH1subJetMC_pt_dijet (0x0),
+ fH2JetsJet_dphi (0x0),
+ fH2JetsJet_deta (0x0),
+ fH2JetsJet_Aj (0x0),
+ fH2JetsJet_pt (0x0),
+ fH2JetsJetMC_dphi (0x0),
+ fH2JetsJetMC_deta (0x0),
+ fH2JetsJetMC_Aj (0x0),
+ fH2JetsJetMC_pt (0x0),
+ fH2Mult_Mtrack (0x0),
+ fH2Mult_Mlead (0x0),
+ fH2Mult_Mjet (0x0),
+ fH2Mult_Njet (0x0),
+ fH2Mult_Aj (0x0),
+ fH2Mlead_Aj (0x0),
+ fH2Jet_pt_Mlead (0x0),
+ fH2Jet_pt_Munder (0x0),
+ fH2leadJetMCptResolution (0x0),
+ fH2TrackMCptResolution (0x0),
+ fH2TrackMCptEfficiency (0x0),
+ fH2AjCorrelation_MCRec (0x0),
+ fH2MleadCorrelation_MCRec(0x0)
+{
+ for(int j=0;j<5;j++){
+ fH1ndiJ_ediv [j]=0;
+ fH1Aj [j]=0;
+ fH1Mlead [j]=0;
+ fH1leadJetMC_dphiResolution [j]=0;
+ fH1subJetMC_dphiResolution [j]=0;
+ fH1leadJetMC_Efficiency [j]=0;
+ fH1subJetMC_Efficiency [j]=0;
+ for(int k=0;k<5;k++){
+ fH1JetHadron_dphi_ediv [j][k]=0;
+ fH1JetHadron_dphi_tptweight_ediv [j][k]=0;
+ fH1JetHadron_dphi_tJptweight_ediv[j][k]=0;
+ fH1JetHadronMC_dphi_ediv [j][k]=0;
+ fH1JetHadronMC_dphi_tptweight_ediv [j][k]=0;
+ fH1JetHadronMC_dphi_tJptweight_ediv[j][k]=0;
+ fH1JetHadronMCPrim_dphi_ediv [j][k]=0;
+ fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]=0;
+ fH1JetHadronMCPrim_dphi_tJptweight_ediv[j][k]=0;
+ }
+ }
+ for(int j=0;j<3;j++){
+ fH1ndiJ_2040Mlead [j]=0;
+ fH1ndiJ_2040Aj [j]=0;
+ for(int k=0;k<5;k++){
+ fH1JetHadron_dphi_tptweight2040_Mleaddep[j][k]=0;
+ fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]=0;
+ fH1JetHadronMC_dphi_tptweight2040_Mleaddep[j][k]=0;
+ fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]=0;
+ fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[j][k]=0;
+ fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]=0;
+ }
+ }
+ // Default constructor
+}
+
+//________________________________________________________________________
+AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation(const char *name):
+ AliAnalysisTaskSE(name),
+ fUseAODInput(kFALSE),
+ fJetBranch("jets"),
+ fNonStdFile(""),
+ fAODIn(0x0),
+ fAODOut(0x0),
+ fAODExtension(0x0),
+ JFAlg("ANTIKT"),
+ Radius(0.4),
+ Filtermask(272),
+ BackM(0),
+ TrackPtcut(0.15),
+ SkipCone(0),
+ IsMC(kTRUE),
+ JetEScale(1.),
+ TrackEScale(1.),
+ fxsec(0.),
+ ftrial(1.),
+ fHistList(0x0), // Output list
+ fIfiles(0),
+ fH1Events(0x0),
+ fH1Xsec(0x0),
+ fH1Trials(0x0),
+ fH1Track_pt (0x0),
+ fH1Track_phi (0x0),
+ fH1Track_eta (0x0),
+ fH1MCTrack_pt (0x0),
+ fH1MCTrack_phi (0x0),
+ fH1MCTrack_eta (0x0),
+ fH1MCPrimTrack_pt (0x0),
+ fH1MCPrimTrack_phi (0x0),
+ fH1MCPrimTrack_eta (0x0),
+ fH1Jet_pt (0x0),
+ fH1Jet_phi (0x0),
+ fH1Jet_eta (0x0),
+ fH1leadJet_pt (0x0),
+ fH1leadJet_pt_dijet (0x0),
+ fH1subJet_pt_dijet (0x0),
+ fH1JetMC_pt (0x0),
+ fH1leadJetMC_pt (0x0),
+ fH1leadJetMC_pt_dijet (0x0),
+ fH1subJetMC_pt_dijet (0x0),
+ fH2JetsJet_dphi (0x0),
+ fH2JetsJet_deta (0x0),
+ fH2JetsJet_Aj (0x0),
+ fH2JetsJet_pt (0x0),
+ fH2JetsJetMC_dphi (0x0),
+ fH2JetsJetMC_deta (0x0),
+ fH2JetsJetMC_Aj (0x0),
+ fH2JetsJetMC_pt (0x0),
+ fH2Mult_Mtrack (0x0),
+ fH2Mult_Mlead (0x0),
+ fH2Mult_Mjet (0x0),
+ fH2Mult_Njet (0x0),
+ fH2Mult_Aj (0x0),
+ fH2Mlead_Aj (0x0),
+ fH2Jet_pt_Mlead (0x0),
+ fH2Jet_pt_Munder (0x0),
+ fH2leadJetMCptResolution (0x0),
+ fH2TrackMCptResolution (0x0),
+ fH2TrackMCptEfficiency (0x0),
+ fH2AjCorrelation_MCRec (0x0),
+ fH2MleadCorrelation_MCRec(0x0)
+{
+
+ for(int j=0;j<5;j++){
+ fH1ndiJ_ediv [j]=0;
+ fH1Aj [j]=0;
+ fH1Mlead [j]=0;
+ fH1leadJetMC_dphiResolution [j]=0;
+ fH1subJetMC_dphiResolution [j]=0;
+ fH1leadJetMC_Efficiency [j]=0;
+ fH1subJetMC_Efficiency [j]=0;
+ for(int k=0;k<5;k++){
+ fH1JetHadron_dphi_ediv [j][k]=0;
+ fH1JetHadron_dphi_tptweight_ediv [j][k]=0;
+ fH1JetHadron_dphi_tJptweight_ediv[j][k]=0;
+ fH1JetHadronMC_dphi_ediv [j][k]=0;
+ fH1JetHadronMC_dphi_tptweight_ediv [j][k]=0;
+ fH1JetHadronMC_dphi_tJptweight_ediv[j][k]=0;
+ fH1JetHadronMCPrim_dphi_ediv [j][k]=0;
+ fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]=0;
+ fH1JetHadronMCPrim_dphi_tJptweight_ediv[j][k]=0;
+ }
+ }
+ for(int j=0;j<3;j++){
+ fH1ndiJ_2040Mlead [j]=0;
+ fH1ndiJ_2040Aj [j]=0;
+ for(int k=0;k<5;k++){
+ fH1JetHadron_dphi_tptweight2040_Mleaddep[j][k]=0;
+ fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]=0;
+ fH1JetHadronMC_dphi_tptweight2040_Mleaddep[j][k]=0;
+ fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]=0;
+ fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[j][k]=0;
+ fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]=0;
+ }
+ }
+
+ // Default constructor
+ // Constructor
+ // Define input and output slots here
+ // Input slot #0 works with a TChain
+ DefineInput(0, TChain::Class());
+ // Output slot #0 id reserved by the base class for AOD
+ // Output slot #1 writes into a TH1 container
+ DefineOutput(1, TList::Class());
+}
+
+//________________________________________________________________________
+void AliAnalysisTaskJetHadronCorrelation::UserCreateOutputObjects()
+{
+ // Create histograms
+ // Called once
+
+ fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;
+ //if (!fHistList){ fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;}
+
+ Bool_t oldStatus = TH1::AddDirectoryStatus();
+ TH1::AddDirectory(kFALSE);
+ Float_t pi=TMath::Pi();
+
+
+ char *histname;
+
+ fH1Events = new TH1F ("Events" ,"Events" ,1,0,1);
+ fH1Xsec = new TProfile("Xsec" ,"Xsec" ,1,0,1);
+ fH1Trials = new TH1F ("Trials" ,"Trials" ,1,0,1);
+
+ fH1Track_pt = new TH1F("Track_pt" ,"Track_pt" ,200,0,200);
+ fH1Track_phi = new TH1F("Track_phi" ,"Track_phi" ,100,0,2*pi);
+ fH1Track_eta = new TH1F("Track_eta" ,"Track_eta" ,100,-1.,1);
+ fH1MCTrack_pt = new TH1F("MCTrack_pt" ,"MCTrack_pt" ,200,0,200);
+ fH1MCTrack_phi = new TH1F("MCTrack_phi" ,"MCTrack_phi" ,100,0,2*pi);
+ fH1MCTrack_eta = new TH1F("MCTrack_eta" ,"MCTrack_eta" ,100,-1.,1);
+ fH1MCPrimTrack_pt = new TH1F("MCPrimTrack_pt" ,"MCPrimTrack_pt" ,200,0,200);
+ fH1MCPrimTrack_phi = new TH1F("MCPrimTrack_phi" ,"MCPrimTrack_phi" ,100,0,2*pi);
+ fH1MCPrimTrack_eta = new TH1F("MCPrimTrack_eta" ,"MCPrimTrack_eta" ,100,-1.,1);
+ fH1Jet_pt = new TH1F("Jet_pt" ,"Jet_pt" ,200,0,200);
+ fH1Jet_phi = new TH1F("Jet_phi" ,"Jet_pt" ,100,0,2*pi);
+ fH1Jet_eta = new TH1F("Jet_eta" ,"Jet_pt" ,100,-1.,1);
+ fH1leadJet_pt = new TH1F("leadJet_pt" ,"leadJet_pt" ,200,0,200);
+ fH1leadJet_pt_dijet = new TH1F("leadJet_pt_dijet" ,"leadJet_pt_dijet" ,200,0,200);
+ fH1subJet_pt_dijet = new TH1F("subJet_pt_dijet" ,"subJet_pt_dijet" ,200,0,200);
+ fH1JetMC_pt = new TH1F("JetMC_pt" ,"JetMC_pt" ,200,0,200);
+ fH1leadJetMC_pt = new TH1F("leadJetMC_pt" ,"leadJetMC_pt" ,200,0,200);
+ fH1leadJetMC_pt_dijet = new TH1F("leadJetMC_pt_dijet","leadJetMC_pt_dijet",200,0,200);
+ fH1subJetMC_pt_dijet = new TH1F("subJetMC_pt_dijet" ,"subJetMC_pt_dijet" ,200,0,200);
+ fH2JetsJet_dphi = new TH2F("JetsJet_dphi" ,"JetsJet_dphi" ,200,0,200,100,-2*pi,2*pi);
+ fH2JetsJet_deta = new TH2F("JetsJet_deta" ,"JetsJet_deta" ,200,0,200,100,-1.5,1.5);
+ fH2JetsJet_Aj = new TH2F("JetsJet_Aj" ,"JetsJet_Aj" ,200,0,200,100,0,1.2);
+ fH2JetsJet_pt = new TH2F("JetsJet_pt" ,"JetsJet_pt" ,200,0,200,200,0,200);
+ fH2JetsJetMC_dphi = new TH2F("JetsJetMC_dphi" ,"JetsJetMC_dphi" ,200,0,200,100,-2*pi,2*pi);
+ fH2JetsJetMC_deta = new TH2F("JetsJetMC_deta" ,"JetsJetMC_deta" ,200,0,200,100,-1.5,1.5);
+ fH2JetsJetMC_Aj = new TH2F("JetsJetMC_Aj" ,"JetsJetMC_Aj" ,200,0,200,100,0,1.2);
+ fH2JetsJetMC_pt = new TH2F("JetsJetMC_pt" ,"JetsJetMC_pt" ,200,0,200,200,0,200);
+ fH2Mult_Mtrack = new TH2F("Mult_Mtrack" ,"Mult_Mtrack" ,50,0,250,50,0,250);
+ fH2Mult_Mlead = new TH2F("Mult_Mlead" ,"Mult_Mlead" ,50,0,250,25,0,25);
+ fH2Mult_Mjet = new TH2F("Mult_Mjet" ,"Mult_Mjet" ,50,0,250,50,0,100);
+ fH2Mult_Njet = new TH2F("Mult_Njet" ,"Mult_Njet" ,50,0,250,50,0,50);
+ fH2Mult_Aj = new TH2F("Mult_Aj" ,"Mult_Aj" ,50,0,250,25,0,1.2);
+ fH2Mlead_Aj = new TH2F("Mlead_Aj" ,"Mlead_Aj" ,25,0,25,25,0,1.2);
+ fH2Jet_pt_Mlead = new TH2F("Jet_pt_Mlead" ,"Jet_pt_Mlead" ,50,0,200,25,0,25);
+ fH2Jet_pt_Munder = new TH2F("Jet_pt_Munder" ,"Jet_pt_Munder" ,50,0,200,25,0,5);
+ fH2leadJetMCptResolution = new TH2F("leadJetMCptResolution" ,"leadJetMCptResolution" ,200,0,200,200,0,200);
+ fH2TrackMCptResolution = new TH2F("TrackMCptResolution" ,"TrackMCptResolution" ,200,0,200,200,0,200);
+ fH2TrackMCptEfficiency = new TH2F("TrackMCptEfficiency" ,"TrackMCptEfficiency" ,200,0,200,100,0,1.2);
+ fH2AjCorrelation_MCRec = new TH2F("AjCorrelation_MCRec" ,"AjCorrelation_MCRec" ,60,0,1.2,60,0,1.2);
+ fH2MleadCorrelation_MCRec = new TH2F("MleadCorrelation_MCRec","MleadCorrelation_MCRec",60,0,60,60,0,60);
+
+ for(int j=0;j<5;j++){
+ histname = Form("ndiJ_ediv%d",j);
+ fH1ndiJ_ediv[j]= new TH1F(histname,histname,1,1,2);
+ histname = Form("Aj%d",j);
+ fH1Aj[j] = new TH1F(histname,histname,50,0,1.2);
+ histname = Form("Mlead%d",j);
+ fH1Mlead[j] = new TH1F(histname,histname,50,0,50);
+ histname = Form("leadJetMC_dphiResolution%d",j);
+ fH1leadJetMC_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);
+ histname = Form("subJetMC_dphiResolution%d",j);
+ fH1subJetMC_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);
+ histname = Form("leadJetMC_Efficiency%d",j);
+ fH1leadJetMC_Efficiency[j] = new TH1F(histname,histname,100,0,1.2);
+ histname = Form("subJetMC_Efficiency%d",j);
+ fH1subJetMC_Efficiency[j] = new TH1F(histname,histname,100,0,1.2);
+ for(int k=0;k<5;k++){
+ histname = Form("JetHadron_dphi_ediv%d%d",j,k);
+ fH1JetHadron_dphi_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadron_dphi_tptweight_ediv%d%d",j,k);
+ fH1JetHadron_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadron_dphi_tJptweight_ediv%d%d",j,k);
+ fH1JetHadron_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadronMC_dphi_ediv%d%d",j,k);
+ fH1JetHadronMC_dphi_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadronMC_dphi_tptweight_ediv%d%d",j,k);
+ fH1JetHadronMC_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadronMC_dphi_tJptweight_ediv%d%d",j,k);
+ fH1JetHadronMC_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadronMCPrim_dphi_ediv%d%d",j,k);
+ fH1JetHadronMCPrim_dphi_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadronMCPrim_dphi_tptweight_ediv%d%d",j,k);
+ fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadronMCPrim_dphi_tJptweight_ediv%d%d",j,k);
+ fH1JetHadronMCPrim_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ }
+ }
+ for(int j=0;j<3;j++){
+ histname = Form("ndiJ_2040Mlead%d",j);
+ fH1ndiJ_2040Mlead[j]= new TH1F(histname,histname,1,1,2);
+ histname = Form("ndiJ_2040Aj%d",j);
+ fH1ndiJ_2040Aj[j]= new TH1F(histname,histname,1,1,2);
+ for(int k=0;k<5;k++){
+ histname = Form("JetHadron_dphi_tptweight2040_Mleaddep%d%d",j,k);
+ fH1JetHadron_dphi_tptweight2040_Mleaddep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadron_dphi_tptweight2040_Ajdep%d%d",j,k);
+ fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadronMC_dphi_tptweight2040_Mleaddep%d%d",j,k);
+ fH1JetHadronMC_dphi_tptweight2040_Mleaddep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadronMC_dphi_tptweight2040_Ajdep%d%d",j,k);
+ fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadronMCPrim_dphi_tptweight2040_Mleaddep%d%d",j,k);
+ fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ histname = Form("JetHadronMCPrim_dphi_tptweight2040_Ajdep%d%d",j,k);
+ fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
+ }
+ }
+
+
+ if(IsMC){
+ fHistList->Add(fH1Events );
+ fHistList->Add(fH1Xsec );
+ fHistList->Add(fH1Trials );
+ fHistList->Add(fH1Track_pt );
+ fHistList->Add(fH1Track_phi );
+ fHistList->Add(fH1Track_eta );
+ fHistList->Add(fH1MCTrack_pt );
+ fHistList->Add(fH1MCTrack_phi );
+ fHistList->Add(fH1MCTrack_eta );
+ fHistList->Add(fH1MCPrimTrack_pt );
+ fHistList->Add(fH1MCPrimTrack_phi );
+ fHistList->Add(fH1MCPrimTrack_eta );
+ fHistList->Add(fH1Jet_pt );
+ fHistList->Add(fH1Jet_phi );
+ fHistList->Add(fH1Jet_eta );
+ fHistList->Add(fH1leadJet_pt );
+ fHistList->Add(fH1leadJet_pt_dijet );
+ fHistList->Add(fH1subJet_pt_dijet );
+ fHistList->Add(fH1JetMC_pt );
+ fHistList->Add(fH1leadJetMC_pt );
+ fHistList->Add(fH1leadJetMC_pt_dijet);
+ fHistList->Add(fH1subJetMC_pt_dijet );
+ fHistList->Add(fH2JetsJet_dphi );
+ fHistList->Add(fH2JetsJet_deta );
+ fHistList->Add(fH2JetsJet_Aj );
+ fHistList->Add(fH2JetsJet_pt );
+ fHistList->Add(fH2JetsJetMC_dphi );
+ fHistList->Add(fH2JetsJetMC_deta );
+ fHistList->Add(fH2JetsJetMC_Aj );
+ fHistList->Add(fH2JetsJetMC_pt );
+ fHistList->Add(fH2Mult_Mtrack );
+ fHistList->Add(fH2Mult_Mlead );
+ fHistList->Add(fH2Mult_Mjet );
+ fHistList->Add(fH2Mult_Njet );
+ fHistList->Add(fH2Mult_Aj );
+ fHistList->Add(fH2Mlead_Aj );
+ fHistList->Add(fH2Jet_pt_Mlead );
+ fHistList->Add(fH2Jet_pt_Munder );
+ fHistList->Add(fH2leadJetMCptResolution );
+ fHistList->Add(fH2TrackMCptResolution );
+ fHistList->Add(fH2TrackMCptEfficiency );
+ fHistList->Add(fH2AjCorrelation_MCRec );
+ fHistList->Add(fH2MleadCorrelation_MCRec);
+ for(int j=0;j<5;j++){
+ fHistList->Add(fH1ndiJ_ediv [j]);
+ fHistList->Add(fH1Aj [j]);
+ fHistList->Add(fH1Mlead [j]);
+ fHistList->Add(fH1leadJetMC_dphiResolution [j]);
+ fHistList->Add(fH1subJetMC_dphiResolution [j]);
+ fHistList->Add(fH1leadJetMC_Efficiency [j]);
+ fHistList->Add(fH1subJetMC_Efficiency [j]);
+ for(int k=0;k<5;k++){
+ fHistList->Add(fH1JetHadron_dphi_ediv [j][k]);
+ fHistList->Add(fH1JetHadron_dphi_tptweight_ediv [j][k]);
+ fHistList->Add(fH1JetHadron_dphi_tJptweight_ediv [j][k]);
+ fHistList->Add(fH1JetHadronMC_dphi_ediv [j][k]);
+ fHistList->Add(fH1JetHadronMC_dphi_tptweight_ediv [j][k]);
+ fHistList->Add(fH1JetHadronMC_dphi_tJptweight_ediv [j][k]);
+ fHistList->Add(fH1JetHadronMCPrim_dphi_ediv [j][k]);
+ fHistList->Add(fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]);
+ fHistList->Add(fH1JetHadronMCPrim_dphi_tJptweight_ediv [j][k]);
+ }
+ }
+ for(int j=0;j<3;j++){
+ fHistList->Add(fH1ndiJ_2040Mlead [j]);
+ fHistList->Add(fH1ndiJ_2040Aj [j]);
+ for(int k=0;k<5;k++){
+ fHistList->Add(fH1JetHadron_dphi_tptweight2040_Mleaddep [j][k]);
+ fHistList->Add(fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]);
+ fHistList->Add(fH1JetHadronMC_dphi_tptweight2040_Mleaddep [j][k]);
+ fHistList->Add(fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]);
+ fHistList->Add(fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep [j][k]);
+ fHistList->Add(fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]);
+ }
+ }
+ }
+ else{
+ fHistList->Add(fH1Events );
+ fHistList->Add(fH1Track_pt );
+ fHistList->Add(fH1Track_phi );
+ fHistList->Add(fH1Track_eta );
+ fHistList->Add(fH1Jet_pt );
+ fHistList->Add(fH1Jet_phi );
+ fHistList->Add(fH1Jet_eta );
+ fHistList->Add(fH1leadJet_pt );
+ fHistList->Add(fH1leadJet_pt_dijet );
+ fHistList->Add(fH1subJet_pt_dijet );
+ fHistList->Add(fH2JetsJet_dphi );
+ fHistList->Add(fH2JetsJet_deta );
+ fHistList->Add(fH2JetsJet_Aj );
+ fHistList->Add(fH2JetsJet_pt );
+ fHistList->Add(fH2Mult_Mtrack );
+ fHistList->Add(fH2Mult_Mlead );
+ fHistList->Add(fH2Mult_Mjet );
+ fHistList->Add(fH2Mult_Njet );
+ fHistList->Add(fH2Mult_Aj );
+ fHistList->Add(fH2Mlead_Aj );
+ fHistList->Add(fH2Jet_pt_Mlead );
+ fHistList->Add(fH2Jet_pt_Munder );
+ for(int j=0;j<5;j++){
+ fHistList->Add(fH1ndiJ_ediv [j]);
+ fHistList->Add(fH1Aj [j]);
+ fHistList->Add(fH1Mlead [j]);
+ for(int k=0;k<5;k++){
+ fHistList->Add(fH1JetHadron_dphi_ediv [j][k]);
+ fHistList->Add(fH1JetHadron_dphi_tptweight_ediv [j][k]);
+ fHistList->Add(fH1JetHadron_dphi_tJptweight_ediv [j][k]);
+ }
+ }
+ for(int j=0;j<3;j++){
+ fHistList->Add(fH1ndiJ_2040Mlead [j]);
+ fHistList->Add(fH1ndiJ_2040Aj [j]);
+ for(int k=0;k<5;k++){
+ fHistList->Add(fH1JetHadron_dphi_tptweight2040_Mleaddep [j][k]);
+ fHistList->Add(fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]);
+ }
+ }
+ }
+
+ // =========== Switch on Sumw2 for all histos ===========
+ for (Int_t i=0; i<fHistList->GetEntries(); ++i)
+ {
+ TH1 *h1 = dynamic_cast<TH1*>(fHistList->At(i));
+ if (h1)
+ {
+ h1->Sumw2();
+ continue;
+ }
+ THnSparse *hn = dynamic_cast<THnSparse*>(fHistList->At(i));
+ if(hn)hn->Sumw2();
+ }
+ TH1::AddDirectory(oldStatus);
+
+ PostData(1,fHistList);
+}
+
+
+//----------------------------------------------------------------------
+void AliAnalysisTaskJetHadronCorrelation::Init()
+{
+ // Initialization
+ if (fDebug) printf("AnalysisTaskJetHadronCorrelation::Init() \n");
+
+}
+
+Bool_t AliAnalysisTaskJetHadronCorrelation::Notify()
+{
+
+
+ fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
+ fAODOut = AODEvent();
+ if(fNonStdFile.Length()!=0){
+ AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
+ fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
+ if(fAODExtension){
+ if(fDebug>1)Printf("AODExtension found for %s ",fNonStdFile.Data());
+ }
+ }
+
+ TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
+ fxsec=0;
+ ftrial=1;
+
+ if(tree){
+ TFile *curfile = tree->GetCurrentFile();
+ if(!curfile){
+ Error("Notify","No current file");
+ return kFALSE;
+ }
+ if(IsMC){
+ AliPWG4HighPtQAMC::PythiaInfoFromFile(curfile->GetName(),fxsec,ftrial);
+ fH1Xsec ->Fill(0.,fxsec);
+ fH1Trials->Fill(0.,ftrial);
+ }
+
+ }
+
+ printf("Reading File %s ",fInputHandler->GetTree()->GetCurrentFile()->GetName());
+ return kTRUE;
+}
+void AliAnalysisTaskJetHadronCorrelation::FinishTaskOutput()
+{
+}
+
+
+
+//________________________________________________________________________
+void AliAnalysisTaskJetHadronCorrelation::UserExec(Option_t *)
+{
+
+
+ // Main loop (called each event)
+ // Execute analysis for current event
+
+ AliAODEvent *fAOD;
+ TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
+ if( handler && handler->InheritsFrom("AliAODInputHandler") ) {
+ fAOD = ((AliAODInputHandler*)handler)->GetEvent();
+ if(fUseAODInput) fAODIn = fAOD;
+ if (fDebug > 1) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__);
+ }
+ else {
+ handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
+ if( handler && handler->InheritsFrom("AliAODHandler") ) {
+ fAOD = ((AliAODHandler*)handler)->GetAOD();
+ fAODIn = fAOD;
+ if (fDebug > 1) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__);
+ }
+ }
+
+ if(!fAODIn && !fUseAODInput){ // case we have AOD in input & output and want jets from output
+ TObject* outHandler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
+ if( outHandler && outHandler->InheritsFrom("AliAODHandler") ) {
+ fAODIn = ((AliAODHandler*)outHandler)->GetAOD();
+ if (fDebug > 1) Printf("%s:%d jets from output AOD", (char*)__FILE__,__LINE__);
+ }
+ }
+ if (!fAODIn) {
+ Printf("ERROR %s : fAODIn not available",(char*)__FILE__);
+ return;
+ }
+
+ AliInputEventHandler* inputHandler = (AliInputEventHandler*)
+ ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
+ if(!(inputHandler->IsEventSelected() & AliVEvent::kMB)){
+ if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... ");
+ return;
+ }
+ fH1Events->Fill(0);
+
+ AliAODHeader* aliH = dynamic_cast <AliAODHeader*> (fAODIn->GetHeader());
+ if(!aliH){
+ Printf("ERROR: AliAODHeader not available");
+ return;
+ }
+ double Mult = aliH->GetRefMultiplicity();
+
+ // start jet analysis -------------------------Init.
+ Float_t pi=TMath::Pi();
+
+ Double_t Jet_pt [20][5000];
+ Double_t Jet_phi [20][5000];
+ Double_t Jet_eta [20][5000];
+ Double_t Jet_area [20][5000];
+ Double_t subJet_pt [20][5000];
+ Double_t subJet_eta[20][5000];
+ Double_t Track_n ;
+ Double_t Track_pt [5000];
+ Double_t Track_eta[5000];
+ Double_t Track_phi[5000];
+ Double_t MCTrack_n ;
+ Double_t MCTrack_pt [5000];
+ Double_t MCTrack_eta[5000];
+ Double_t MCTrack_phi[5000];
+
+ Track_n=0;MCTrack_n=0;
+ for(int i=0;i<20;i++){
+ for(int j=0;j<1000;j++){
+ Jet_pt[i][j]=0.;
+ Jet_phi[i][j]=999.;
+ Jet_eta[i][j]=999.;
+ Jet_area[i][j]=999.;
+ subJet_pt[i][j]=0.;
+ subJet_eta[i][j]=999.;
+ Track_pt [j]=0.;
+ Track_phi[j]=999.;
+ Track_eta[j]=999.;
+ MCTrack_pt [j]=0.;
+ MCTrack_phi[j]=999.;
+ MCTrack_eta[j]=999.;
+ }
+ }
+
+ int nLJetAOD=999; double ptLJetAOD=0;double phiLJetAOD=999.;double etaLJetAOD=999.;double ptsLJetAOD=0;double phisLJetAOD=900.;double etasLJetAOD=900.;
+ int nLJetMC2=999; double ptLJetMC2=0;double phiLJetMC2=999.;double etaLJetMC2=999.;double ptsLJetMC2=0;double phisLJetMC2=900.;double etasLJetMC2=900.;
+ int nLJetMC =999; double ptLJetMC =0;double phiLJetMC =999.;double etaLJetMC =999.;double ptsLJetMC =0;double phisLJetMC =900.;double etasLJetMC =900.;
+ bool findLJetAOD=false;
+ bool findLJetMC2=false;
+ bool findDiJet=false,findDiJetMC=false;
+ int nLJet = 999;
+ int Mjet_tot =0;
+ int Njet_tot =0;
+
+ double Aj=99.,AjMC=99.;
+ double Mlead=99.,MleadMC=99.;
+ int Munder=99.;
+
+ ////--------------------------------------------------------------------Init.
+
+ TString cAdd = "";
+ TString Branchname_gen,Branchname_gen2,Branchname_rec;
+ if((JFAlg=="ANTIKT")||(JFAlg=="KT")){
+ cAdd += Form("%02d_",(int)((Radius+0.01)*10.));
+ cAdd += Form("B%d",(int)BackM);
+ cAdd += Form("_Filter%05d",Filtermask);
+ cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));
+ cAdd += Form("_Skip%02d",SkipCone);
+ Branchname_gen = Form("clustersAODMC_%s%s",JFAlg.Data(),cAdd.Data());
+ Branchname_gen2 = Form("clustersAODMC2_%s%s",JFAlg.Data(),cAdd.Data());
+ Branchname_rec = Form("clustersAOD_%s%s",JFAlg.Data(),cAdd.Data());
+ }
+ else{
+ cAdd += Form("%02d_",(int)((Radius+0.01)*10.));
+ cAdd += Form("B%d",(int)BackM);
+ cAdd += Form("_Filter%05d",Filtermask);
+ cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));
+ Branchname_gen = Form("jetsAODMC_%s%s",JFAlg.Data(),cAdd.Data());
+ Branchname_gen2 = Form("jetsAODMC2_%s%s",JFAlg.Data(),cAdd.Data());
+ Branchname_rec = Form("jetsAOD_%s%s",JFAlg.Data(),cAdd.Data());
+ }
+
+
+
+ //count number of tracks@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ //Reconstructed Track
+ TClonesArray* tracks = dynamic_cast <TClonesArray*> (fAODIn->GetTracks());
+ if(!tracks){
+ if (fDebug > 1) Printf("%s:%d could not get AODtracks", (char*)__FILE__,__LINE__);
+ return;
+ }
+
+ Bool_t TrackEff[5000];
+ for(int i=0;i<5000;i++){
+ TrackEff[i]=false;
+ }
+ Int_t nt = fAODIn->GetNumberOfTracks();
+ AliAODTrack* trackAOD=NULL;
+ for(int ntrack =0;ntrack<nt;ntrack++){
+ trackAOD = (AliAODTrack*) (tracks->At(ntrack));
+ Bool_t bgoodT=false;
+ if(Filtermask!=272){if(trackAOD->TestFilterMask(Filtermask))bgoodT=true;}
+ else {if(trackAOD->IsHybridGlobalConstrainedGlobal())bgoodT=true;} //for hybrid Track cuts
+ if(!bgoodT)continue;
+ if(TMath::Abs(trackAOD->Eta())<0.9){
+ Track_n++;
+ fH1Track_pt ->Fill(trackAOD->Pt()*TrackEScale);
+ fH1Track_phi->Fill(trackAOD->Phi());
+ fH1Track_eta->Fill(trackAOD->Eta());
+ //cout<<"Scale "<<TrackEScale<<" org pt "<<trackAOD->Pt()<< " scaled pt "<< trackAOD->Pt()*TrackEScale <<endl;
+ if(IsMC){
+ // track pt resplution-------------------
+ Int_t MCID = TMath::Abs(trackAOD->GetLabel());
+ TClonesArray* mctracks = dynamic_cast <TClonesArray*> (fAODIn->GetList()->FindObject(AliAODMCParticle::StdBranchName()));
+ if(!mctracks){
+ if (fDebug > 1) Printf("%s:%d could not get AODMCtracks", (char*)__FILE__,__LINE__);
+ continue;
+ }
+ AliAODMCParticle *trackMCAOD = (AliAODMCParticle*) mctracks->At(MCID);
+ fH2TrackMCptResolution->Fill(trackMCAOD->Pt(),trackAOD->Pt());
+ TrackEff[MCID]=true;
+ // --------------------------------------
+ }
+ }
+ }
+ if(IsMC){
+ //MC Track
+ TClonesArray* mctracks = dynamic_cast <TClonesArray*> (fAODIn->GetList()->FindObject(AliAODMCParticle::StdBranchName()));
+ if(!mctracks){
+ if (fDebug > 1) Printf("%s:%d could not get AODMCtracks", (char*)__FILE__,__LINE__);
+ return;
+ }
+ Int_t ntmc = mctracks->GetEntriesFast();
+ AliAODMCParticle* trackMCAOD;
+ int lastprim=0;
+ for(int ntrack =0;ntrack<ntmc;ntrack++){
+ trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));
+ if((trackMCAOD->IsPhysicalPrimary())==1)lastprim=ntrack;
+ }
+ for(int ntrack =0;ntrack<ntmc;ntrack++){
+ trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));
+ if((trackMCAOD->GetPdgCode()>10)&&((trackMCAOD->GetMother())>1)&&(ntrack>lastprim)&&(trackMCAOD->Charge())){// for Decay particles
+ if(TMath::Abs(trackMCAOD->Eta())<0.9){
+ fH1MCTrack_pt ->Fill(trackMCAOD->Pt());
+ fH1MCTrack_phi->Fill(trackMCAOD->Phi());
+ fH1MCTrack_eta->Fill(trackMCAOD->Eta());
+ if(TrackEff[ntrack])fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),1);
+ else fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),0);
+ }
+ }
+ if((trackMCAOD->IsPhysicalPrimary())&&(trackMCAOD->Charge())){// for Physical particles
+ if(TMath::Abs(trackMCAOD->Eta())<0.9){
+ MCTrack_n++;
+ fH1MCTrack_pt ->Fill(trackMCAOD->Pt());
+ fH1MCTrack_phi->Fill(trackMCAOD->Phi());
+ fH1MCTrack_eta->Fill(trackMCAOD->Eta());
+ fH1MCPrimTrack_pt ->Fill(trackMCAOD->Pt());
+ fH1MCPrimTrack_phi->Fill(trackMCAOD->Phi());
+ fH1MCPrimTrack_eta->Fill(trackMCAOD->Eta());
+ if(TrackEff[ntrack])fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),1);
+ else fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),0);
+ }
+ }
+ }
+ }
+ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ count number of tracks
+
+
+
+
+ for(int algorithm=0;algorithm<3;algorithm++){
+
+ if(algorithm==0)fJetBranch = Branchname_rec.Data();
+ if(algorithm==1)fJetBranch = Branchname_gen2.Data();
+ if(algorithm==2)fJetBranch = Branchname_gen.Data();
+
+ if((!IsMC&&(algorithm==1||algorithm==2)))continue;
+
+ TClonesArray* jets = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data()));
+ if(!jets){
+ printf(" Tere are no Branch named %s \n",fJetBranch.Data());
+ continue;
+ }
+ Int_t nj = jets->GetEntriesFast();
+ if (fDebug) printf("There are %5d jets in the event \n", nj);
+ AliAODJet* jetsAOD;
+ //Find Leading Jet -------------------------------------------------------
+ for(int njet =0;njet<nj;njet++){
+ jetsAOD = (AliAODJet*) (jets->At(njet));
+ Jet_pt [algorithm][njet] = jetsAOD->Pt()*JetEScale;
+ Jet_phi [algorithm][njet] = jetsAOD->Phi();
+ Jet_eta [algorithm][njet] = jetsAOD->Eta();
+ Jet_area [algorithm][njet] = jetsAOD->EffectiveAreaCharged();
+
+
+ TRefArray *reftracks = jetsAOD->GetRefTracks();
+ if(algorithm==0){if(Jet_pt[algorithm][njet]>1.)Mjet_tot += reftracks->GetEntriesFast();Njet_tot++;}
+ double eta_cut_Jet=0.5;
+ if((TMath::Abs(Jet_eta[algorithm][njet])<eta_cut_Jet)&&(Jet_pt[algorithm][njet]>10.)){
+ if(algorithm==0){
+ fH1Jet_pt ->Fill(Jet_pt [algorithm][njet]);
+ fH1Jet_phi->Fill(Jet_phi[algorithm][njet]);
+ fH1Jet_eta->Fill(Jet_eta[algorithm][njet]);
+ if(Jet_pt[algorithm][njet]>ptLJetAOD){
+ findLJetAOD=true;
+ nLJetAOD=njet;ptLJetAOD=Jet_pt[algorithm][njet];phiLJetAOD=Jet_phi[algorithm][njet];etaLJetAOD=Jet_eta[algorithm][njet];
+ }
+ }
+ if(algorithm==1){
+ fH1JetMC_pt->Fill(Jet_pt[algorithm][njet]);
+ if(Jet_pt[algorithm][njet]>ptLJetMC2){
+ findLJetMC2=true;
+ nLJetMC2=njet;ptLJetMC2=Jet_pt[algorithm][njet];phiLJetMC2=Jet_phi[algorithm][njet];etaLJetMC2=Jet_eta[algorithm][njet];
+ }
+ }
+ if(algorithm==2){
+ if(Jet_pt[algorithm][njet]>ptLJetMC){
+ nLJetMC=njet;ptLJetMC=Jet_pt[algorithm][njet];phiLJetMC=Jet_phi[algorithm][njet];etaLJetMC=Jet_eta[algorithm][njet];
+ }
+ }
+ }
+ }//njet loop
+ if(algorithm==0){nLJet=nLJetAOD;fH1leadJet_pt ->Fill(Jet_pt[algorithm][nLJet]);}
+ if(algorithm==1){nLJet=nLJetMC2;fH1leadJetMC_pt->Fill(Jet_pt[algorithm][nLJet]);}
+ if(algorithm==2){nLJet=nLJetMC;}
+ if(findLJetAOD&&(algorithm==0)){
+ jetsAOD = (AliAODJet*) (jets->At(nLJet));
+ TRefArray *reftracks = jetsAOD->GetRefTracks();
+ Mlead = reftracks->GetEntriesFast();
+ }
+ if(findLJetMC2&&(algorithm==1)){
+ jetsAOD = (AliAODJet*) (jets->At(nLJetMC2));
+ TRefArray *reftracks = jetsAOD->GetRefTracks();
+ MleadMC = reftracks->GetEntriesFast();
+ }
+ //----------------------------------------------------------- Leading Jet
+ if(nj<2)continue;
+ //Find Sub leading Jet ==================================================
+ for(int njet=0;njet<nj;njet++){
+ if(njet==nLJet)continue;
+ jetsAOD = (AliAODJet *)jets->At(njet);
+ subJet_pt [algorithm][njet] = jetsAOD->Pt()*JetEScale;
+ subJet_eta[algorithm][njet] = jetsAOD->Eta();
+ double eta_cut_Jet=0.5;
+ if((TMath::Abs(subJet_eta[algorithm][njet])<eta_cut_Jet) && (subJet_pt[algorithm][njet]>10.)){
+ if(subJet_pt[algorithm][njet]>ptsLJetAOD&&algorithm==0){
+ ptsLJetAOD=Jet_pt[algorithm][njet];phisLJetAOD=Jet_phi[algorithm][njet];etasLJetAOD=Jet_eta[algorithm][njet];
+ }
+ if(subJet_pt[algorithm][njet]>ptsLJetMC2 &&algorithm==1){
+ ptsLJetMC2=Jet_pt[algorithm][njet];phisLJetMC2=Jet_phi[algorithm][njet];etasLJetMC2=Jet_eta[algorithm][njet];
+ }
+ if(subJet_pt[algorithm][njet]>ptsLJetMC &&algorithm==2){
+ ptsLJetMC =Jet_pt[algorithm][njet];phisLJetMC =Jet_phi[algorithm][njet];etasLJetMC =Jet_eta[algorithm][njet];
+ }
+ }
+ }
+ //====================================================== Sub leading Jet
+
+ double Leading_pt=0.;double Leading_phi=999.;double Leading_eta=999.;double sLeading_pt=0.;double sLeading_phi=999.;double sLeading_eta=999.;
+ if(algorithm==0){Leading_pt=ptLJetAOD;Leading_phi=phiLJetAOD;Leading_eta=etaLJetAOD;sLeading_pt=ptsLJetAOD;sLeading_phi=phisLJetAOD;sLeading_eta=etasLJetAOD;}
+ if(algorithm==1){Leading_pt=ptLJetMC2;Leading_phi=phiLJetMC2;Leading_eta=etaLJetMC2;sLeading_pt=ptsLJetMC2;sLeading_phi=phisLJetMC2;sLeading_eta=etasLJetMC2;}
+ if(algorithm==2){Leading_pt=ptLJetMC ;Leading_phi=phiLJetMC ;Leading_eta=etaLJetMC ;sLeading_pt=ptsLJetMC ;sLeading_phi=phisLJetMC ;sLeading_eta=etasLJetMC ;}
+
+ ////Di-Jet event trigger +++++++++++++++++++++++++++++++++++++++++++++++
+ double DPhi = DeltaPhi(Leading_phi,sLeading_phi);
+ double DEta = Leading_eta-sLeading_eta;
+ if(algorithm==0){
+ fH2JetsJet_dphi->Fill(Leading_pt,DPhi);
+ fH2JetsJet_deta->Fill(Leading_pt,DEta);
+ }
+ if(algorithm==1){
+ fH2JetsJetMC_dphi->Fill(Leading_pt,DPhi);
+ fH2JetsJetMC_deta->Fill(Leading_pt,DEta);
+ }
+ if((TMath::Cos(DPhi)<-0.5)&&(Leading_pt>10.)&&(sLeading_pt>10.)){
+ if(algorithm==0)Aj = (Leading_pt-sLeading_pt)/(Leading_pt+sLeading_pt);
+ if(algorithm==1)AjMC = (Leading_pt-sLeading_pt)/(Leading_pt+sLeading_pt);
+ if(algorithm==0){
+ fH1subJet_pt_dijet ->Fill(sLeading_pt);
+ fH1leadJet_pt_dijet->Fill(Leading_pt);
+ fH2JetsJet_Aj ->Fill(Leading_pt,Aj);
+ fH2JetsJet_pt ->Fill(Leading_pt,sLeading_pt);
+ fH2Mult_Aj ->Fill(Mult,Aj);
+ fH2Mlead_Aj ->Fill(Mlead,Aj);
+ for(int eb=0;eb<5;eb++){
+ if(TMath::Abs(Leading_pt -10.-20.*(eb))<10.){
+ fH1Aj[eb] ->Fill(Aj);
+ }
+ }
+ }
+ if(algorithm==1){
+ fH1leadJetMC_pt_dijet->Fill(Leading_pt);
+ fH1subJetMC_pt_dijet ->Fill(sLeading_pt);
+ fH2JetsJetMC_Aj ->Fill(Leading_pt,AjMC);
+ fH2JetsJetMC_pt ->Fill(Leading_pt,sLeading_pt);
+ findDiJetMC=true;
+ }
+ findDiJet=true;
+
+ }
+ ////+++++++++++++++++++++++++++++++++++++++++++++++ Di-Jet event trigger
+
+ if(algorithm!=0)continue;// for only data & reconstructed Jets
+
+
+ //Jet-Hadron Correlation###############################################
+ if((findDiJet)&&(Leading_pt>10.)&&(sLeading_pt>10.)){
+ double eta_cut_Jet=0.5;
+ if(TMath::Abs(Leading_eta)<eta_cut_Jet){
+ for(int eb=0;eb<5;eb++){
+ if(TMath::Abs(Leading_pt -10.-20.*(eb))<10.){
+ fH1ndiJ_ediv[eb]->Fill(1);
+ if(eb==1){
+ if((0<Mlead)&&Mlead<7) {fH1ndiJ_2040Mlead[0]->Fill(1);}
+ else if((7<=Mlead)&&(Mlead<10)) {fH1ndiJ_2040Mlead[1]->Fill(1);}
+ else {fH1ndiJ_2040Mlead[2]->Fill(1);}
+ if((0<Aj)&&(Aj<0.19)) {fH1ndiJ_2040Aj [0]->Fill(1);}
+ else if((0.19<=Aj)&&(Aj<0.38)) {fH1ndiJ_2040Aj [1]->Fill(1);}
+ else {fH1ndiJ_2040Aj [2]->Fill(1);}
+ }
+ fH1Mlead[eb]->Fill(Mlead);
+ for(int ntrack =0;ntrack<nt;ntrack++){
+ trackAOD = (AliAODTrack*) (fAODIn->GetTrack(ntrack));
+ Bool_t bgoodT=false;
+ if(Filtermask!=272){if(trackAOD->TestFilterMask(Filtermask))bgoodT=true;}
+ else{ if(trackAOD->IsHybridGlobalConstrainedGlobal())bgoodT=true;} //for hybrid Track cuts
+ if(!bgoodT)continue;
+ Track_pt [ntrack] = (trackAOD->Pt()*TrackEScale);
+ Track_phi [ntrack] = trackAOD->Phi();
+ Track_eta [ntrack] = trackAOD->Eta();
+
+ //cout<<"Scale "<<TrackEScale<<" org pt "<<trackAOD->Pt()<< " scaled pt "<< trackAOD->Pt()*TrackEScale <<endl;
+
+ double DelPhi = DeltaPhi(Leading_phi,Track_phi[ntrack]);
+ if(TMath::Abs(Track_eta[ntrack])<0.9){
+ if((TMath::Abs(DelPhi-pi/2.)<pi/8.)||((DelPhi+pi/2.)<pi/8.)||(TMath::Abs(DelPhi-3./2.*pi)<pi/8.))Munder++;
+ for(int teb=0;teb<5;teb++){
+ if(teb==0){if(!( Track_pt[ntrack]>0.15))continue;}
+ if(teb==1){if(!((Track_pt[ntrack]<1.5)&&(Track_pt[ntrack]>0.15)))continue;}
+ if(teb==2){if(!((Track_pt[ntrack]<3.0)&&(Track_pt[ntrack]>1.5)))continue;}
+ if(teb==3){if(!((Track_pt[ntrack]<4.5)&&(Track_pt[ntrack]>3.0)))continue;}
+ if(teb==4){if(!( Track_pt[ntrack]>4.5))continue;}
+ fH1JetHadron_dphi_ediv [eb][teb]->Fill(DelPhi);
+ fH1JetHadron_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]);
+ fH1JetHadron_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]/Leading_pt);
+ if(eb==1){
+ if((0<Mlead)&&Mlead<7) {fH1JetHadron_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,Track_pt[ntrack]);}
+ else if((7<=Mlead)&&(Mlead<10)){fH1JetHadron_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,Track_pt[ntrack]);}
+ else {fH1JetHadron_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,Track_pt[ntrack]);}
+ if((0<Aj)&&(Aj<0.19)) {fH1JetHadron_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,Track_pt[ntrack]);}
+ else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadron_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,Track_pt[ntrack]);}
+ else {fH1JetHadron_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,Track_pt[ntrack]);}
+ }
+ }
+ }
+ }//Track Loop
+ if(IsMC){
+ //MC Track
+ TClonesArray* mctracks = dynamic_cast <TClonesArray*> (fAODIn->GetList()->FindObject(AliAODMCParticle::StdBranchName()));
+ if(!mctracks){
+ if (fDebug > 1) Printf("%s:%d could not get AODMCtracks", (char*)__FILE__,__LINE__);
+ continue;
+ }
+ Int_t ntmc = mctracks->GetEntriesFast();
+ AliAODMCParticle* trackMCAOD;
+ int lastprim=0;
+ for(int ntrack =0;ntrack<ntmc;ntrack++){
+ trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));
+ if((trackMCAOD->IsPhysicalPrimary())==1)lastprim=ntrack;
+ }
+ for(int ntrack =0;ntrack<ntmc;ntrack++){
+ trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));
+ if((trackMCAOD->GetPdgCode()>10)&&((trackMCAOD->GetMother())>1)&&(ntrack>lastprim)&&(trackMCAOD->Charge())){// for Decay particles
+ MCTrack_pt [ntrack] = trackMCAOD->Pt();
+ MCTrack_phi [ntrack] = trackMCAOD->Phi();
+ MCTrack_eta [ntrack] = trackMCAOD->Eta();
+ double DelPhi = DeltaPhi(Leading_phi,MCTrack_phi[ntrack]);
+ if(TMath::Abs(MCTrack_eta[ntrack])<0.9){
+ for(int teb=0;teb<5;teb++){
+ if(teb==0){if(!( MCTrack_pt[ntrack]>0.15))continue;}
+ if(teb==1){if(!((MCTrack_pt[ntrack]<1.5)&&(MCTrack_pt[ntrack]>0.15)))continue;}
+ if(teb==2){if(!((MCTrack_pt[ntrack]<3.0)&&(MCTrack_pt[ntrack]>1.5)))continue;}
+ if(teb==3){if(!((MCTrack_pt[ntrack]<4.5)&&(MCTrack_pt[ntrack]>3.0)))continue;}
+ if(teb==4){if(!( MCTrack_pt[ntrack]>4.5))continue;}
+ fH1JetHadronMC_dphi_ediv [eb][teb]->Fill(DelPhi);
+ fH1JetHadronMC_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);
+ fH1JetHadronMC_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]/Leading_pt);
+ if(eb==1){
+ if((0<Mlead)&&Mlead<7) {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else if((7<=Mlead)&&(Mlead<10)){fH1JetHadronMC_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ if((0<Aj)&&(Aj<0.19)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else {fH1JetHadronMC_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ }
+ }
+ }
+ }
+ if((trackMCAOD->IsPhysicalPrimary())&&(trackMCAOD->Charge())){// for Physical particles
+ MCTrack_pt [ntrack] = trackMCAOD->Pt();
+ MCTrack_phi [ntrack] = trackMCAOD->Phi();
+ MCTrack_eta [ntrack] = trackMCAOD->Eta();
+ double DelPhi = DeltaPhi(Leading_phi,MCTrack_phi[ntrack]);
+ if(TMath::Abs(MCTrack_eta[ntrack])<0.9){
+ for(int teb=0;teb<5;teb++){
+ if(teb==0){if(!( MCTrack_pt[ntrack]>0.15))continue;}
+ if(teb==1){if(!((MCTrack_pt[ntrack]<1.5)&&(MCTrack_pt[ntrack]>0.15)))continue;}
+ if(teb==2){if(!((MCTrack_pt[ntrack]<3.0)&&(MCTrack_pt[ntrack]>1.5)))continue;}
+ if(teb==3){if(!((MCTrack_pt[ntrack]<4.5)&&(MCTrack_pt[ntrack]>3.0)))continue;}
+ if(teb==4){if(!( MCTrack_pt[ntrack]>4.5))continue;}
+ fH1JetHadronMC_dphi_ediv [eb][teb]->Fill(DelPhi);
+ fH1JetHadronMC_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);
+ fH1JetHadronMC_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]/Leading_pt);
+ fH1JetHadronMCPrim_dphi_ediv [eb][teb]->Fill(DelPhi);
+ fH1JetHadronMCPrim_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);
+ fH1JetHadronMCPrim_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]/Leading_pt);
+ if(eb==1){
+ if((0<Mlead)&&Mlead<7) {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else if((7<=Mlead)&&(Mlead<10)){fH1JetHadronMC_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ if((0<Aj)&&(Aj<0.19)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else {fH1JetHadronMC_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+
+ if((0<Mlead)&&Mlead<7) {fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else if((7<=Mlead)&&(Mlead<10)){fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else {fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ if((0<Aj)&&(Aj<0.19)) {fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ else {fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }// Momentum Loop Jet
+ fH2Jet_pt_Munder ->Fill(Leading_pt,(double)Munder/(1.8*pi/2.)*Jet_area[0][nLJet]);
+ fH2Jet_pt_Mlead ->Fill(Leading_pt,Mlead);
+ }//eta cut
+ }// Di-Jet
+ //############################################### Jet-Hadron Correlation
+ }// algorithm LOOP
+ if(IsMC){
+ for(int eb=0;eb<5;eb++){
+ double DPhi,DEta;
+ if(TMath::Abs(ptLJetAOD -10.-20.*(eb))<10.){
+ DPhi = DeltaPhi(phiLJetMC,phiLJetAOD);
+ DEta = etaLJetMC-etaLJetAOD;
+ fH1leadJetMC_dphiResolution[eb]->Fill(DPhi);
+ if(sqrt(pow(DPhi,2)+pow(DEta,2))<0.4)fH1leadJetMC_Efficiency[eb]->Fill(1);
+ else fH1leadJetMC_Efficiency[eb]->Fill(0);
+ DPhi = DeltaPhi(phisLJetMC,phisLJetAOD);
+ DEta = etasLJetMC-etasLJetAOD;
+ fH1subJetMC_dphiResolution[eb]->Fill(DPhi);
+ if(sqrt(pow(DPhi,2)+pow(DEta,2))<0.4)fH1subJetMC_Efficiency[eb]->Fill(1);
+ else fH1subJetMC_Efficiency[eb]->Fill(0);
+ DPhi = DeltaPhi(phiLJetMC2,phiLJetAOD);
+ DEta = etaLJetMC2-etaLJetAOD;
+
+ if(sqrt(pow(DPhi,2)+pow(DEta,2))<0.4)fH2leadJetMCptResolution->Fill(ptLJetMC2,ptLJetAOD);
+ if(findDiJetMC)fH2AjCorrelation_MCRec ->Fill(AjMC,Aj);
+ if(findDiJetMC)fH2MleadCorrelation_MCRec->Fill(MleadMC,Mlead);
+ }
+ }
+ fH2Mult_Mtrack->Fill(Mult,Track_n);
+ fH2Mult_Mjet ->Fill(Mult,Mjet_tot);
+ fH2Mult_Njet ->Fill(Mult,Njet_tot);
+ if(findLJetAOD)fH2Mult_Mlead ->Fill(Mult,Mlead);
+ }
+ else{
+ fH2Mult_Mtrack->Fill(Mult,Track_n);
+ fH2Mult_Mjet ->Fill(Mult,Mjet_tot);
+ fH2Mult_Njet ->Fill(Mult,Njet_tot);
+ if(findLJetAOD)fH2Mult_Mlead ->Fill(Mult,Mlead);
+ }
+
+ PostData(1, fHistList);
+ return;
+}
+
+//________________________________________________________________________
+void AliAnalysisTaskJetHadronCorrelation::Terminate(Option_t *){
+ // Terminate analysis
+ if (fDebug) printf("AnalysisTaskPt: Terminate() \n");
+}
+
+Double_t AliAnalysisTaskJetHadronCorrelation::DeltaPhi(Double_t phi1,Double_t phi2){
+ Float_t pi=TMath::Pi();
+ Double_t dphi = phi1-phi2;
+ if (dphi<(-1./2*pi))dphi = dphi +2*pi;
+ else if(dphi>( 3./2*pi))dphi = dphi -2*pi;
+ return dphi;
+}