ROOT logo
#include <TCanvas.h>
#include <TChain.h>
#include <TFormula.h>
#include <TH1.h>
#include <TH2.h>
#include <TH3.h>
#include <TProfile2D.h>
#include <THnSparse.h>
#include <TROOT.h>
#include <TTree.h>
#include <TArrayI.h>
#include <TClonesArray.h>
#include <TRandom3.h>
#include <TFile.h>
#include <TF1.h>
#include <TLorentzVector.h>
#include <TParameter.h>

#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisTask.h"
#include "AliCentrality.h"
#include "AliAnalysisTaskHJetEmbed.h"
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliVParticle.h"
#include "AliVTrack.h"
#include "AliInputEventHandler.h"
#include "AliMCEvent.h"
#include "AliStack.h"
#include "AliGenEventHeader.h"
#include "AliGenPythiaEventHeader.h"
#include "AliLog.h"
#include "AliRhoParameter.h"
#include "AliNamedString.h"

#include "AliEmcalJet.h"

#include <iostream>
using std::cout;
using std::cerr;
using std::endl;

ClassImp(AliAnalysisTaskHJetEmbed)

const Double_t pi = TMath::Pi();
//const Double_t areaCut[4] = {0.1, 0.23, 0.4, 0.63};

//________________________________________________________________________
AliAnalysisTaskHJetEmbed::AliAnalysisTaskHJetEmbed() : 
  AliAnalysisTaskSE(), 
  fVerbosity(0), fAnaType(1), fPeriod("lhc11h"), fCollisionSystem("PbPb"),
  fEvent(0), fTriggerType(-1), fCentrality(-1), fMaxVtxZ(10),
  fMCParticleArrName(""), fMCParticleArray(0x0), 
  fTrackArrName(""), fTrackArray(0x0), fTriggerTrkIndex(-1), 
  fMinTrkPt(0.15), fMaxTrkPt(1e4), fMinTrkEta(-0.9), fMaxTrkEta(0.9), fMinTrkPhi(0), fMaxTrkPhi(2*pi), 
  fTTtype(0), 
  fRadius(0.4), fJetArrName(""), fPLJetArrName(""), fDLJetArrName(""),
  fJetArray(0x0), fPLJetArray(0x0), fDLJetArray(0x0),
  fRhoName(""), fRho(0x0), fRhoValue(0), 
  fPtHardBinName(0x0), fPtHardBin(-1), fRandom(0x0),
  fRunQA(kTRUE), fRunHJet(kTRUE), fRunMatch(kTRUE),
  fRunPL(kFALSE), fRunDL(kTRUE),
  fOutputList(0x0), fhEventStat(0x0), fhPtHardBins(0x0)
{
  // Constructor

  // Define input and output slots here
  // Input slot #0 works with a TChain
  //DefineInput(0, TChain::Class());
  //DefineOutput(1, TList::Class());
  // Output slot #0 id reserved by the base class for AOD

  for(Int_t i=0; i<kNTrig; i++)
    {
      fhVtxZ[i]                  = 0x0;
      fhCentrality[i]            = 0x0;
      fhRhoVsCent[i]             = 0x0;

      fhDLJetPtVsCent[i]         = 0x0;
      fhPLJetPtVsCent[i]         = 0x0;

      fhPLTT[i]                  = 0x0;
      fhDLTT[i]                   = 0x0;
      fhPLHJet[i]                = 0x0;
      fhDLHJet[i]                = 0x0;
      fhTTPtQA[i]                = 0x0;
      fhTTPt[i]                  = 0x0;
      fhHJet[i]                  = 0x0;

      fhJetPtGeoMatch[i]         = 0x0;
      fhJetPtEnMatch[i]          = 0x0;
      fhJetPhiGeoMatch[i]        = 0x0;
      fhJetPhiEnMatch[i]         = 0x0;
    }
  for(Int_t i=0; i<kNTT; i++)
    {
      if(i==0)
	{ fMinTTPt[i] = 19; fMaxTTPt[i] = 25; }
      else
	{ fMinTTPt[i] = -1; fMaxTTPt[i] = -1; }
    }
}

//________________________________________________________________________
AliAnalysisTaskHJetEmbed::AliAnalysisTaskHJetEmbed(const char *name) : 
  AliAnalysisTaskSE(name), 
  fVerbosity(0), fAnaType(1), fPeriod("lhc11h"), fCollisionSystem("PbPb"),
  fEvent(0), fTriggerType(-1), fCentrality(-1), fMaxVtxZ(10),
  fMCParticleArrName(""), fMCParticleArray(0x0), 
  fTrackArrName(""), fTrackArray(0x0), fTriggerTrkIndex(-1), 
  fMinTrkPt(0.15), fMaxTrkPt(1e4), fMinTrkEta(-0.9), fMaxTrkEta(0.9), fMinTrkPhi(0), fMaxTrkPhi(2*pi), 
  fTTtype(0), 
  fRadius(0.4), fJetArrName(""), fPLJetArrName(""), fDLJetArrName(""),
  fJetArray(0x0), fPLJetArray(0x0), fDLJetArray(0x0),
  fRhoName(""), fRho(0x0), fRhoValue(0), 
  fPtHardBinName(0x0), fPtHardBin(-1), fRandom(0x0),
  fRunQA(kTRUE), fRunHJet(kTRUE), fRunMatch(kTRUE),
  fRunPL(kFALSE), fRunDL(kTRUE),
  fOutputList(0x0), fhEventStat(0x0), fhPtHardBins(0x0)
{
  // Constructor

  DefineInput(0, TChain::Class());
  DefineOutput(1, TList::Class());

  for(Int_t i=0; i<kNTrig; i++)
    {
      fhVtxZ[i]                  = 0x0;
      fhCentrality[i]            = 0x0;
      fhRhoVsCent[i]             = 0x0;

      fhDLJetPtVsCent[i]         = 0x0;
      fhPLJetPtVsCent[i]         = 0x0;

      fhPLTT[i]                  = 0x0;
      fhDLTT[i]                   = 0x0;
      fhPLHJet[i]                = 0x0;
      fhDLHJet[i]                = 0x0;
      fhTTPtQA[i]                = 0x0;
      fhTTPt[i]                  = 0x0;
      fhHJet[i]                  = 0x0;

      fhJetPtGeoMatch[i]         = 0x0;
      fhJetPtEnMatch[i]          = 0x0;
      fhJetPhiGeoMatch[i]        = 0x0;
      fhJetPhiEnMatch[i]         = 0x0;
    }
  for(Int_t i=0; i<kNTT; i++)
    {
      if(i==0)
	{ fMinTTPt[i] = 19; fMaxTTPt[i] = 25; }
      else
	{ fMinTTPt[i] = -1; fMaxTTPt[i] = -1; }
    }
}
//________________________________________________________________________
AliAnalysisTaskHJetEmbed::~AliAnalysisTaskHJetEmbed()
{
  //Destructor
  if(fRho)         delete fRho;
  if(fOutputList) { fOutputList->Delete(); delete fOutputList;}
}

//________________________________________________________________________
void AliAnalysisTaskHJetEmbed::UserCreateOutputObjects()
{
  // Create histograms

  const Int_t nJetPtBins = 40;
  const Float_t lowJetPtBin=-50, upJetPtBin=150;

  const Int_t nTrkPtBins = 100;
  const Float_t lowTrkPtBin=0, upTrkPtBin=100;


  // QA
  const Int_t dimJetqa = 3;
  const Int_t nBinsJetqa[dimJetqa]     = {nJetPtBins,  30, 11};
  const Double_t lowBinJetqa[dimJetqa] = {lowJetPtBin, 0,  0};
  const Double_t hiBinJetqa[dimJetqa]  = {upJetPtBin,  30, 11};

  // h+jet
  const Int_t dimTT = 3;
  const Int_t nBinsTT[dimTT]     = {nTrkPtBins,  30, 11};
  const Double_t lowBinTT[dimTT] = {lowTrkPtBin, 0,  0};
  const Double_t hiBinTT[dimTT]  = {upTrkPtBin,  30, 11};  

  const Int_t dimHJet = 6;
  const Int_t nBinsHJet[dimHJet]     = {nTrkPtBins,  nJetPtBins,  140,     8,   30, 11};
  const Double_t lowBinHJet[dimHJet] = {lowTrkPtBin, lowJetPtBin, pi-4.95, 0,   0,  0};
  const Double_t hiBinHJet[dimHJet]  = {upTrkPtBin,  upJetPtBin,  pi+2.05, 0.8, 30, 11};  

  // Match
  const Int_t dimMthPt = 6;
  const Int_t nBinsMthPt[dimMthPt]     = {nJetPtBins,  nJetPtBins,  20,    20, 30, 11};
  const Double_t lowBinMthPt[dimMthPt] = {lowJetPtBin, lowJetPtBin, -0.95, 0,  0,  0};
  const Double_t hiBinMthPt[dimMthPt]  = {upJetPtBin,  upJetPtBin,  1.05,  1,  30, 11};

  const Int_t dimMthPhi = 7;
  const Int_t nBinsMthPhi[dimMthPhi]     = {nTrkPtBins,  nJetPtBins/2,  70,      70,      10, 1,  11};
  const Double_t lowBinMthPhi[dimMthPhi] = {lowTrkPtBin, lowJetPtBin,   pi-4.95, pi-4.95, 0,  0,  0};
  const Double_t hiBinMthPhi[dimMthPhi]  = {upTrkPtBin,  upJetPtBin,    pi+2.05, pi+2.05, 1,  10, 11};

  OpenFile(1);
  fOutputList = new TList();
  fOutputList->SetOwner(1);

  fhEventStat = new TH1F("fhEventStat","Event statistics for jet analysis",9,0,9);
  fhEventStat->GetXaxis()->SetBinLabel(1,"All");
  fhEventStat->GetXaxis()->SetBinLabel(2,"PS");
  fhEventStat->GetXaxis()->SetBinLabel(3,"Vtx");
  fhEventStat->GetXaxis()->SetBinLabel(4,"Vtx+10cm");
  fhEventStat->GetXaxis()->SetBinLabel(5,"kMB");
  fhEventStat->GetXaxis()->SetBinLabel(6,"kCentral");
  fhEventStat->GetXaxis()->SetBinLabel(7,"kSemiCentral");
  fhEventStat->GetXaxis()->SetBinLabel(8,"kEMCEGA");
  fhEventStat->GetXaxis()->SetBinLabel(9,"kEMCEJE");
  fOutputList->Add(fhEventStat);

  fhPtHardBins = new TH1F("fhPtHardBins","Number of events in each pT hard bin",11,0,11);
  fOutputList->Add(fhPtHardBins);

  const char *triggerName[kNTrig] = {"kMB","kEGA","kEJE"};
  
  for(Int_t i=0; i<kNTrig; i++)
    {
      if( i!=0 ) continue;
 
      fhVtxZ[i] = new TH1F(Form("%s_fhVtxZ",triggerName[i]),Form("%s: z distribution of event vertexz;z(cm)",triggerName[i]),400,-20,20);
      fOutputList->Add(fhVtxZ[i]);

      fhCentrality[i] = new TH1F(Form("%s_fhCentrality",triggerName[i]),Form("%s: Event centrality;centrality",triggerName[i]),100,0,100);
      fOutputList->Add(fhCentrality[i]);

      fhRhoVsCent[i] = new TH2F(Form("%s_fhRhoVsCent",triggerName[i]),Form("%s: Rho vs centrality (R=%1.1f);centrality;Rho",triggerName[i],fRadius),100,0,100,300,0,300);
      fOutputList->Add(fhRhoVsCent[i]);

      if(fRunQA)
	{
	  fhPLJetPtVsCent[i] = new THnSparseF(Form("%s_fhPLJetPtVsCent",triggerName[i]),Form("PYTHIA: jet p_{T} vs centrality vs pT hard bin (particle-level,R=%1.1f);p_{T,jet}^{ch} (GeV/c);centrality;pT hard bin",fRadius),dimJetqa,nBinsJetqa,lowBinJetqa,hiBinJetqa);
	  fOutputList->Add(fhPLJetPtVsCent[i]);

	  fhDLJetPtVsCent[i] = new THnSparseF(Form("%s_fhDLJetPtVsCent",triggerName[i]),Form("PYTHIA: jet p_{T} vs centrality vs pT hard bin (detector-level,R=%1.1f);p_{T,jet}^{ch} (GeV/c);centrality;pT hard bin",fRadius),dimJetqa,nBinsJetqa,lowBinJetqa,hiBinJetqa);
	  fOutputList->Add(fhDLJetPtVsCent[i]);
	}

      if(fRunHJet)
	{
	  fhPLTT[i] = new THnSparseF(Form("%s_fhPLTT",triggerName[i]),Form("PYTHIA: TT p_{T} vs centrality vs pT hard bin (particle-level);p_{T,TT}^{ch} (GeV/c);centrality;pT hard bin"),dimTT,nBinsTT,lowBinTT,hiBinTT);
	  fOutputList->Add(fhPLTT[i]);

	  fhDLTT[i] = new THnSparseF(Form("%s_fhDLTT",triggerName[i]),Form("PYTHIA: TT p_{T} vs centrality vs pT hard bin (detector-level);p_{T,TT}^{ch} (GeV/c);centrality;pT hard bin"),dimTT,nBinsTT,lowBinTT,hiBinTT);
	  fOutputList->Add(fhDLTT[i]);

	  fhTTPt[i] = new THnSparseF(Form("%s_fhTTPt",triggerName[i]),Form("Embedded: TT p_{T} vs centrality vs pT hard bin;p_{T,TT}^{ch} (GeV/c);centrality;pT hard bin"),dimTT,nBinsTT,lowBinTT,hiBinTT);
	  fOutputList->Add(fhTTPt[i]);

	  fhPLHJet[i] = new THnSparseF(Form("%s_fhPLHJet",triggerName[i]),Form("PYTHIA: TT p_{T} vs jet p_{T} vs #Delta#varphi vs jet area vs centrality vs pT hard bin (particle-level, R=%1.1f);p_{T,TT}^{ch} (GeV/c);p_{T,jet}^{ch} (GeV/c);#Delta#varphi;Area;centrality;pT hard bin",fRadius),dimHJet,nBinsHJet,lowBinHJet,hiBinHJet);
	  fOutputList->Add(fhPLHJet[i]);

	  fhDLHJet[i] = new THnSparseF(Form("%s_fhDLHJet",triggerName[i]),Form("PYTHIA: TT p_{T} vs jet p_{T} vs #Delta#varphi vs jet area vs centrality vs pT hard bin (detector-level, R=%1.1f);p_{T,TT}^{ch} (GeV/c);p_{T,jet}^{ch} (GeV/c);#Delta#varphi;Area;centrality;pT hard bin",fRadius),dimHJet,nBinsHJet,lowBinHJet,hiBinHJet);
	  fOutputList->Add(fhDLHJet[i]);

	  fhHJet[i] = new THnSparseF(Form("%s_fhHJet",triggerName[i]),Form("Embedded: TT p_{T} vs jet p_{T} vs #Delta#varphi vs jet area vs centrality vs pT hard bin (R=%1.1f);p_{T,TT}^{ch} (GeV/c);p_{T,jet}^{ch} (GeV/c);#Delta#varphi;Area;centrality;pT hard bin",fRadius),dimHJet,nBinsHJet,lowBinHJet,hiBinHJet);
	  fOutputList->Add(fhHJet[i]);
	}

      if(fRunMatch)
	{
	  fhJetPtGeoMatch[i] = new THnSparseF(Form("%s_fhJetPtGeoMatch",triggerName[i]),Form("Embed: generated p_{T,jet} vs reconstructed p_{T,jet} vs jet p_{T} difference vs dR vs centrality vs pT hard bin (R=%1.1f);p_{T,jet}^{gen} (GeV/c);p_{T,jet}^{rec} (GeV/c);(p_{T,jet}^{rec}-p_{T,jet}^{gen})/p_{T,jet}^{gen};dR;centrality;pT hard bin",fRadius),dimMthPt,nBinsMthPt,lowBinMthPt,hiBinMthPt);
	  fOutputList->Add(fhJetPtGeoMatch[i]);

	  fhJetPtEnMatch[i] = new THnSparseF(Form("%s_fhJetPtEnMatch",triggerName[i]),Form("Embed: generated p_{T,jet} vs reconstructed p_{T,jet} vs jet p_{T} difference vs dR vs centrality vs pT hard bin (R=%1.1f);p_{T,jet}^{gen} (GeV/c);p_{T,jet}^{rec} (GeV/c);(p_{T,jet}^{rec}-p_{T,jet}^{gen})/p_{T,jet}^{gen};dR;centrality;pT hard bin",fRadius),dimMthPt,nBinsMthPt,lowBinMthPt,hiBinMthPt);
	  fOutputList->Add(fhJetPtEnMatch[i]);

	  fhJetPhiGeoMatch[i] = new THnSparseF(Form("%s_fhJetPhiGeoMatch",triggerName[i]),Form("Embed: p_{T,TT} vs p_{T,jet}^{det} vs #Delta#varphi_{TT} vs #Delta#varphi_{jet} vs dR vs centrality vs pT hard bin (R=%1.1f);p_{T,TT} (GeV/c);p_{T,jet}^{det} (GeV/c);#Delta#varphi_{TT};#Delta#varphi_{jet};dR;centrality;pThard bin",fRadius),dimMthPhi,nBinsMthPhi,lowBinMthPhi,hiBinMthPhi);
	  fOutputList->Add(fhJetPhiGeoMatch[i]);

	  fhJetPhiEnMatch[i] = new THnSparseF(Form("%s_fhJetPhiEnMatch",triggerName[i]),Form("Embed: p_{T,TT} vs p_{T,jet}^{det} vs #Delta#varphi_{TT} vs #Delta#varphi_{jet} vs dR vs centrality vs pT hard bin (R=%1.1f);p_{T,TT} (GeV/c);p_{T,jet}^{det} (GeV/c);#Delta#varphi_{TT};#Delta#varphi_{jet};dR;centrality;pThard bin",fRadius),dimMthPhi,nBinsMthPhi,lowBinMthPhi,hiBinMthPhi);
	  fOutputList->Add(fhJetPhiEnMatch[i]);
	}
    }

  //error calculation in THnSparse
  Int_t nObj = fOutputList->GetEntries();
  for(Int_t i=0; i<nObj; i++)
    {
      TObject *obj = (TObject*) fOutputList->At(i);
      if (obj->IsA()->InheritsFrom( "THnSparse" ))
      	{
      	  THnSparseF *hn = (THnSparseF*)obj;
      	  hn->Sumw2();
      	}
    }

  fRandom = new TRandom3();

  PrintConfig();
  PostData(1, fOutputList);
}

//________________________________________________________________________
void AliAnalysisTaskHJetEmbed::UserExec(Option_t *) 
{  
  // Main loop, called for each event.

  AliDebug(5,"Entering UserExec");
  fTriggerType = -1;
  fEvent = InputEvent();
  if (!fEvent) 
    {
      AliError("Input event not available");
      return;
    }
  AliDebug(5,"Got the input event");
  if(!fPtHardBinName)
    {
      // Get embedded pt hard bin number
      fPtHardBinName = static_cast<AliNamedString*>(fEvent->FindListObject("AODEmbeddingFile"));
      if(!fPtHardBinName)
  	{
  	  AliError("The object for pt hard bin information is not available!");
  	  return;
  	}
    }
  TString fileName = fPtHardBinName->GetString();
  fileName.Remove(0,50);
  fileName.Remove(fileName.Index("/"));
  fPtHardBin = fileName.Atoi();
  fhEventStat->Fill(0.5);
  UInt_t trigger = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();

  if(fPeriod.Contains("lhc11h",TString::kIgnoreCase))
    {
      if (trigger & AliVEvent::kAnyINT)      { fTriggerType=0; }
      else if (trigger & AliVEvent::kCentral)     { fTriggerType=0; }
      else if (trigger & AliVEvent::kSemiCentral) { fTriggerType=0; }
      else if (trigger & AliVEvent::kEMCEGA)      { fTriggerType=1; }
      else if (trigger & AliVEvent::kEMCEJE)      { fTriggerType=2; }
    }
  else if(fPeriod.Contains("lhc10h",TString::kIgnoreCase))
    {
      if (trigger & AliVEvent::kAnyINT)   { fTriggerType=0; }
    }
  else if(fPeriod.Contains("lhc12a15a",TString::kIgnoreCase))
    {
      fTriggerType=0;
    }
  
  if(fTriggerType==-1) return;
  fhEventStat->Fill(1.5);
 
  // Vertex cut 
  const AliVVertex* vtx = fEvent->GetPrimaryVertex();
  if (!vtx || vtx->GetNContributors()<1) return;
  fhEventStat->Fill(2.5);
  fhVtxZ[fTriggerType]->Fill(vtx->GetZ());
  if (TMath::Abs(vtx->GetZ())>fMaxVtxZ)  return;
  fhEventStat->Fill(3.5);
  
  if(fTriggerType==0)
    {
      if(trigger & AliVEvent::kCentral) fhEventStat->Fill(5.5);
      else if (trigger & AliVEvent::kCentral) fhEventStat->Fill(6.5);
      else fhEventStat->Fill(4.5);
    }
  if(fTriggerType==1) fhEventStat->Fill(7.5);
  if(fTriggerType==2) fhEventStat->Fill(8.5);
  
  // GetCentrality
  if(fCollisionSystem=="PbPb")
    {
      AliCentrality *centrality = fEvent->GetCentrality();
      if (centrality)
      	fCentrality = centrality->GetCentralityPercentile("V0M");
      else 
	fCentrality = 99;
    }
  else if(fCollisionSystem=="pp")
    {
      fCentrality = 0;
    }

  // Get track collection and run QA
  if (!fTrackArray) 
    {
      fTrackArray = dynamic_cast<TClonesArray*>(fEvent->FindListObject(fTrackArrName));
      if (!fTrackArray) 
	{
	  AliError(Form("Could not retrieve tracks %s!", fTrackArrName.Data())); 
	  return;
	}
      if (!fTrackArray->GetClass()->GetBaseClass("AliVParticle")) 
	{
	  AliError(Form("%s: Collection %s does not contain AliVParticle objects!", GetName(), fTrackArrName.Data())); 
	  fTrackArray = 0;
	  return;
	}
    }

  // Get MC particle array
  if (fRunPL && !fMCParticleArray) 
    {
      fMCParticleArray = dynamic_cast<TClonesArray*>(fEvent->FindListObject(fMCParticleArrName));
      if (!fMCParticleArray) 
	{
	  AliError(Form("Could not retrieve tracks %s!", fMCParticleArrName.Data())); 
	  return;
	}
    }

  // Get Rho value
  if(fCollisionSystem=="PbPb")
    {
      if(!fRho && !fRhoName.IsNull())
	{
	  fRho = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(fRhoName));
	  if(!fRho)
	    {
	      AliError(Form("Could not retrieve rho %s!",fRhoName.Data()));
	      return;
	    }
	}
      if(fRho) fRhoValue = fRho->GetVal();
    }
  else if(fCollisionSystem=="pp")
    {
      fRhoValue = 0;
    }

  // Get jet collection
  if (!fJetArray && !fJetArrName.IsNull())
    {
      fJetArray = dynamic_cast<TClonesArray*>(fEvent->FindListObject(fJetArrName));
      if (!fJetArray)
	{
	  AliError(Form("%s: Could not retrieve jets %s!", GetName(), fJetArrName.Data()));
	  return;
	}
      if (!fJetArray->GetClass()->GetBaseClass("AliEmcalJet")) 
	{
	  AliError(Form("%s: Collection %s does not contain AliEmcalJet objects!", GetName(), fJetArrName.Data())); 
	  fJetArray = 0;
	  return;
	}
    }
  // Get particle-level jet array
  if (fRunPL && !fPLJetArray && !fPLJetArrName.IsNull())
    {
      fPLJetArray = dynamic_cast<TClonesArray*>(fEvent->FindListObject(fPLJetArrName));
      if (!fPLJetArray)
	{
	  AliError(Form("%s: Could not retrieve jets %s!", GetName(), fPLJetArrName.Data()));
	  return;
	}
      if (!fPLJetArray->GetClass()->GetBaseClass("AliEmcalJet")) 
	{
	  AliError(Form("%s: Collection %s does not contain AliEmcalJet objects!", GetName(), fPLJetArrName.Data())); 
	  fPLJetArray = 0;
	  return;
	}
    }
 // Get detector-level jet array
  if (fRunDL && !fDLJetArray && !fDLJetArrName.IsNull())
    {
      fDLJetArray = dynamic_cast<TClonesArray*>(fEvent->FindListObject(fDLJetArrName));
      if (!fDLJetArray)
	{
	  AliError(Form("%s: Could not retrieve jets %s!", GetName(), fDLJetArrName.Data()));
	  return;
	}
      if (!fDLJetArray->GetClass()->GetBaseClass("AliEmcalJet")) 
	{
	  AliError(Form("%s: Collection %s does not contain AliEmcalJet objects!", GetName(), fDLJetArrName.Data())); 
	  fDLJetArray = 0;
	  return;
	}
    }

  fhCentrality[fTriggerType]->Fill(fCentrality);
  fhRhoVsCent[fTriggerType]->Fill(fCentrality,fRhoValue);
  fhPtHardBins->Fill(fPtHardBin);

  if(fRunQA) RunQA();
  if(fRunHJet) 
    {
      for(Int_t i=0; i<kNTT; i++)
	RunHJet(fMinTTPt[i],fMaxTTPt[i]);
    }

  PostData(1, fOutputList);
  return;
}


//________________________________________________________________________
void AliAnalysisTaskHJetEmbed::RunHJet(const Double_t minPt, const Double_t maxPt)
{
  TArrayI arr;
  Int_t counter = 0;
  Int_t indexPL = -1;

  if(fRunPL)
    {
      // Find trigger track on particle level
      const Int_t nParticles = fMCParticleArray->GetEntries();
      Double_t maxPLPt = -1;
      arr.Set(nParticles);
      counter = 0;
      for(Int_t iPart=0; iPart<nParticles; iPart++)
	{
	  AliVParticle *t = static_cast<AliVParticle*>(fMCParticleArray->At(iPart));
	  //if(!t || t->Charge()==0) continue;
	  //if(!AcceptTrack(t)) continue;
	  Double_t pt = t->Pt();
	  if(fTTtype==0) // single inclusive triggers
	    {
	      if (pt<maxPt && pt>=minPt)
		{
		  arr.AddAt(iPart,counter);
		  counter++;
		}
	    }
	  else if(fTTtype==1) // leading triggers
	    {
	      if(maxPLPt<pt)
		{
		  maxPLPt = pt;
		  indexPL = iPart;
		}
	    }
	}
      arr.Set(counter);
      if(fTTtype==0)
	{
	  if(counter==0) indexPL = -1;
	  else if(counter==1) indexPL = arr.At(0);
	  else
	    {
	      Double_t pro = fRandom->Uniform() * counter;
	      indexPL = arr.At(TMath::FloorNint(pro));
	    }
	}
      arr.Reset();
    }


  // Find trigger track on detector level and after embedding
  const Int_t Ntracks = fTrackArray->GetEntries();
  Double_t maxDLPt = 0;
  Int_t indexDL = -1;
  arr.Set(Ntracks);
  counter = 0;
  for (Int_t iTracks = 0; iTracks < Ntracks; ++iTracks) 
    {
      AliVParticle *t = static_cast<AliVParticle*>(fTrackArray->At(iTracks));
      if(!t || t->Charge()==0) continue;
      if(!AcceptTrack(t)) continue;
      if(t->GetLabel()!=0) 
	{
	  //cout<<iTracks<<"  "<<t->Pt()<<" "<<t->GetLabel()<<endl;
	  Double_t pt = t->Pt();
	  if(fTTtype==0) 
	    {
	      if (pt<maxPt && pt>=minPt)
		{
		  arr.AddAt(iTracks,counter);
		  counter++;
		}
	    }
	  else if(fTTtype==1)
	    {
	      if(maxDLPt<pt)
		{
		  maxDLPt = pt;
		  indexDL = iTracks;
		}
	    }
	}
    }
  arr.Set(counter);
  if(fTTtype==0)
    {
      if(counter==0) indexDL = -1;
      else if(counter==1) indexDL = arr.At(0);
      else
	{
	  Double_t pro = fRandom->Uniform() * counter;
	  indexDL = arr.At(TMath::FloorNint(pro));
	}
    }
  arr.Reset();

  AliDebug(2,Form("TT indices: PL=%d, DL=%d\n",indexPL,indexDL));

  // Run h+jet
  if(fRunPL)  FillHJetCor(fMCParticleArray, indexPL, fPLJetArray, fhPLTT[fTriggerType], fhPLHJet[fTriggerType], kFALSE);
  if(fRunDL)  FillHJetCor(fTrackArray,      indexDL, fDLJetArray, fhDLTT[fTriggerType], fhDLHJet[fTriggerType], kFALSE);
  FillHJetCor(fTrackArray,      indexDL, fJetArray,   fhTTPt[fTriggerType], fhHJet[fTriggerType],   kTRUE);  

  if(fRunMatch) RunMatch(fTrackArray, indexDL);
}

//________________________________________________________________________
void  AliAnalysisTaskHJetEmbed::FillHJetCor(const TClonesArray *tracks, const Int_t leadingIndex, const TClonesArray *jetArray, THnSparse *hTT, THnSparse *hn, Bool_t isBkg)
{
  if(leadingIndex<0) return;

  AliVParticle *tt = (AliVParticle*) tracks->At(leadingIndex);
  Double_t triggerPt = tt->Pt();
  Double_t fill1[] = {triggerPt, fCentrality, static_cast<Double_t>(fPtHardBin) };
  hTT->Fill(fill1);
  AliDebug(2,Form("Found a trigger with pt = %2.2f",triggerPt));

  Double_t triggerPhi = tt->Phi();
  if(triggerPhi<0) triggerPhi += 2*pi;
  Int_t nJets = jetArray->GetEntries();
  for(Int_t ij=0; ij<nJets; ij++)
    {
      AliEmcalJet* jet = dynamic_cast<AliEmcalJet*>(jetArray->At(ij));
      if(!jet) continue;
      if(!IsGoodJet(jet)) continue; // eta cut
      Double_t jetPhi = jet->Phi();
      Double_t jetPt  = jet->Pt();
      Double_t jetArea = jet->Area();
      Double_t dPhi = CalculateDPhi(triggerPhi,jetPhi);
      Double_t fill[] = {triggerPt,jetPt-jetArea*fRhoValue,dPhi,jetArea,fCentrality,static_cast<Double_t>(fPtHardBin)};
      if(!isBkg) fill[1] = jetPt; 
      AliDebug(10,"Fill the histograms");
      hn->Fill(fill);
    }
}

//________________________________________________________________________
void AliAnalysisTaskHJetEmbed::RunMatch(const TClonesArray *tracks, const Int_t leadingIndex)
{
  if(leadingIndex<0) return;

  if(!fDLJetArray || !fJetArray)
    {
      AliWarning("Jet array is not available.");
      return;
    }

  AliVParticle *tt = (AliVParticle*) tracks->At(leadingIndex);
  Double_t dR = 999, fraction = -1;
  Int_t nJets = fDLJetArray->GetEntries();
  for(Int_t ij=0; ij<nJets; ij++)
    {
      AliEmcalJet* jet = dynamic_cast<AliEmcalJet*>(fDLJetArray->At(ij));
      if(!jet) continue;
      if(!IsGoodJet(jet)) continue; // eta cut
      Double_t jetPt = jet->Pt();
      if(jetPt<10) continue;
      
      // energy matching
      Int_t mthJetIndexEn = FindEnergyMatchedJet(jet,fJetArray,dR,fraction);
      if(mthJetIndexEn>-1 && fraction>0.5)
	{
	  AliEmcalJet* jetMthEn = dynamic_cast<AliEmcalJet*>(fJetArray->At(mthJetIndexEn));
	  if(jetMthEn)
	    {
	      Double_t fill[] = {tt->Pt(),jetPt,CalculateDPhi(tt->Phi(),jet->Phi()),CalculateDPhi(jetMthEn->Phi(),jet->Phi()),dR,fCentrality,static_cast<Double_t>(fPtHardBin)};
	      fhJetPhiEnMatch[fTriggerType]->Fill(fill);
	    }
	}
    }
  
}

//________________________________________________________________________
Int_t AliAnalysisTaskHJetEmbed::FindGeoMatchedJet(const AliEmcalJet* jet, const TClonesArray *jetArray, Double_t &dR)
{
  dR = 999;
  if(!jetArray) return -1;
  
  Int_t index = -1;
  Int_t nJets = jetArray->GetEntries();
  Double_t dRMax = 1;
  for(Int_t ij=0; ij<nJets; ij++)
    {
      AliEmcalJet* jetTmp = dynamic_cast<AliEmcalJet*>(jetArray->At(ij)); 
      if(!jetTmp) continue;
      if(TMath::Abs(jetTmp->Eta())>1) continue; // Generous eta cut
      Double_t dPhi = GetDPhi(jet->Phi(),jetTmp->Phi());
      Double_t dEta = jet->Eta()-jetTmp->Eta();
      Double_t dRTmp = TMath::Sqrt(dPhi*dPhi+dEta*dEta);
      if(dRTmp<dRMax)
	{
	  dRMax = dRTmp;
	  index = ij;
	}
    }
  dR = dRMax;
  return index;
}

//________________________________________________________________________
Int_t AliAnalysisTaskHJetEmbed::FindEnergyMatchedJet(const AliEmcalJet* jet, const TClonesArray *jetArray, Double_t &dR, Double_t &fraction)
{
  dR = 999;
  fraction=-1;
  if(!jetArray || !jet) return -1;
  
  Int_t index = -1;
  Int_t nJets = jetArray->GetEntries();
  Double_t maxFrac = 0;
  Int_t nJetC = (Int_t)jet->GetNumberOfConstituents();
  Double_t jetPt = jet->Pt();
  for(Int_t ij=0; ij<nJets; ij++)
    {
      AliEmcalJet* jetTmp = dynamic_cast<AliEmcalJet*>(jetArray->At(ij)); 
      if(!jetTmp) continue;
      if(TMath::Abs(jetTmp->Eta())>1) continue; // Generous eta cut
      if(GetJetDistance(jet,jetTmp)>1) continue;

      Int_t nc = (Int_t)jetTmp->GetNumberOfConstituents();
      Double_t sumPt = 0;
      for(Int_t ic=0; ic<nc; ic++)
	{
	  for(Int_t ijc=0; ijc<nJetC; ijc++)
	    {
	      if(jetTmp->TrackAt(ic)==jet->TrackAt(ijc))
		{
		  AliVParticle *part = (AliVParticle*)jet->TrackAt(ijc,fTrackArray);
		  sumPt += part->Pt();
		}
	    }
	}
      Double_t frac = sumPt/jetPt;
      if(frac>maxFrac)
	{
	  maxFrac = frac;
	  index = ij;
	}
    }
  fraction = maxFrac;

  if(index>0)
    {
      AliEmcalJet* jetTmp = dynamic_cast<AliEmcalJet*>(jetArray->At(index)); 
      if(jetTmp)
	dR = GetJetDistance(jet,jetTmp);
    }
  return index;
}

//________________________________________________________________________
Double_t AliAnalysisTaskHJetEmbed::CalculateDPhi(const Double_t phi1, const Double_t phi2)
{
  Double_t dPhi = phi1-phi2;
  if(dPhi>2*pi)  dPhi -= 2*pi;
  if(dPhi<-2*pi) dPhi += 2*pi;
  if(dPhi<-0.5*pi) dPhi += 2*pi;
  if(dPhi>1.5*pi)  dPhi -= 2*pi;
  return dPhi;
}

//________________________________________________________________________
Double_t AliAnalysisTaskHJetEmbed::GetDPhi(const Double_t phi1, const Double_t phi2)
{
  Double_t dPhi = TMath::Abs(phi1-phi2);
  if(dPhi>2*pi) dPhi -= 2*pi;
  if(dPhi>pi)   dPhi = 2*pi - dPhi;
  return dPhi;
}

//________________________________________________________________________
Double_t AliAnalysisTaskHJetEmbed::GetJetDistance(const AliEmcalJet *jet1, const AliEmcalJet* jet2)
{
  Double_t dPhi = GetDPhi(jet1->Phi(),jet2->Phi());
  Double_t dEta = jet1->Eta()-jet2->Eta();
  return TMath::Sqrt(dPhi*dPhi+dEta*dEta);
}

//________________________________________________________________________
void AliAnalysisTaskHJetEmbed::RunQA()
{
  if(!fPLJetArray)
    {
      AliWarning(Form("Particle-level jet array is not available: %s\n",fPLJetArrName.Data()));
    }
  else
    {
      Int_t nPLJets = fPLJetArray->GetEntries();
      for(Int_t ij=0; ij<nPLJets; ij++)
	{
	  AliEmcalJet* jet = dynamic_cast<AliEmcalJet*>(fPLJetArray->At(ij));
	  if(!jet) continue;
	  if(!IsGoodJet(jet)) continue; // eta cut
	  Double_t jetPt = jet->Pt();
	  Double_t fill[] = {jetPt, fCentrality, static_cast<Double_t>(fPtHardBin)};
	  fhPLJetPtVsCent[fTriggerType]->Fill(fill);
	  AliDebug(5, Form("PL jet %d has (pt,eta,phi) = (%2.2f,%2.2f,%2.2f)",ij,jetPt,jet->Eta(),jet->Phi()));
	}
    }

  if(!fDLJetArray)
    {
      AliWarning(Form("Detector-level jet array is not available: %s\n",fDLJetArrName.Data()));
    }
  else
    {
      Int_t nDLJets = fDLJetArray->GetEntries();
      for(Int_t ij=0; ij<nDLJets; ij++)
	{
	  AliEmcalJet* jet = dynamic_cast<AliEmcalJet*>(fDLJetArray->At(ij));
	  if(!jet) continue;
	  if(!IsGoodJet(jet)) continue; // eta cut
	  Double_t jetPt = jet->Pt();
	  Double_t fill[] = {jetPt, fCentrality, static_cast<Double_t>(fPtHardBin)};
	  fhDLJetPtVsCent[fTriggerType]->Fill(fill);
	  AliDebug(5, Form("DL jet %d has pt = %2.2f",ij,jetPt));
	}
    }
}


//________________________________________________________________________
Bool_t AliAnalysisTaskHJetEmbed::AcceptTrack(const AliVParticle *track)
{
  if(track->Pt()<fMinTrkPt || track->Pt()>fMaxTrkPt) return kFALSE;
  if(track->Eta()<fMinTrkEta || track->Eta()>fMaxTrkEta) return kFALSE;
  if(track->Phi()<fMinTrkPhi || track->Phi()>fMaxTrkPhi) return kFALSE;
  return kTRUE;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskHJetEmbed::IsGoodJet(const AliEmcalJet* jet)
{
  Double_t etaCut = (0.9-fRadius>0.5)?0.5:0.9-fRadius;
  if(TMath::Abs(jet->Eta())>etaCut) return kFALSE;
  return kTRUE;
}

//
//________________________________________________________________________
//
void AliAnalysisTaskHJetEmbed::PrintConfig()
{
  const char *decision[2] = {"no","yes"};
  const char *TTtype[2] = {"Single inclusive","Leading"};
  printf("\n\n===== h-jet analysis configuration =====\n");
  printf("Input event type: %s - %s\n",fCollisionSystem.Data(),fPeriod.Data());
  printf("Track pt range: %2.2f < pt < %2.2f\n",fMinTrkPt, fMaxTrkPt);
  printf("Track eta range: %2.1f < eta < %2.1f\n",fMinTrkEta, fMaxTrkEta);
  printf("Track phi range: %2.0f < phi < %2.0f\n",fMinTrkPhi*TMath::RadToDeg(),fMaxTrkPhi*TMath::RadToDeg());
  printf("TT type: %s\n", TTtype[fTTtype]);
  for(Int_t i=0; i<kNTT; i++)
    printf("TT range %d:  %2.0f < pt < %2.0f\n", i+1, fMinTTPt[i], fMaxTTPt[i]);
  printf("Run QA: %s\n",decision[fRunQA]);
  printf("Run particle level: %s\n",decision[fRunPL]);
  printf("Run detector level: %s\n",decision[fRunDL]);
  printf("Run h+jet: %s\n",decision[fRunHJet]);
  printf("Run matching: %s\n",decision[fRunMatch]);
  printf("=======================================\n\n");
}

//________________________________________________________________________
Double_t AliAnalysisTaskHJetEmbed::GetZ(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz, const Double_t jetPx, const Double_t jetPy, const Double_t jetPz)
{
  return (trkPx*jetPx+trkPy*jetPy+trkPz*jetPz)/(jetPx*jetPx+jetPy*jetPy+jetPz*jetPz);
}

//________________________________________________________________________
void AliAnalysisTaskHJetEmbed::Terminate(Option_t *) 
{
  // Called once at the end of the query
}
 AliAnalysisTaskHJetEmbed.cxx:1
 AliAnalysisTaskHJetEmbed.cxx:2
 AliAnalysisTaskHJetEmbed.cxx:3
 AliAnalysisTaskHJetEmbed.cxx:4
 AliAnalysisTaskHJetEmbed.cxx:5
 AliAnalysisTaskHJetEmbed.cxx:6
 AliAnalysisTaskHJetEmbed.cxx:7
 AliAnalysisTaskHJetEmbed.cxx:8
 AliAnalysisTaskHJetEmbed.cxx:9
 AliAnalysisTaskHJetEmbed.cxx:10
 AliAnalysisTaskHJetEmbed.cxx:11
 AliAnalysisTaskHJetEmbed.cxx:12
 AliAnalysisTaskHJetEmbed.cxx:13
 AliAnalysisTaskHJetEmbed.cxx:14
 AliAnalysisTaskHJetEmbed.cxx:15
 AliAnalysisTaskHJetEmbed.cxx:16
 AliAnalysisTaskHJetEmbed.cxx:17
 AliAnalysisTaskHJetEmbed.cxx:18
 AliAnalysisTaskHJetEmbed.cxx:19
 AliAnalysisTaskHJetEmbed.cxx:20
 AliAnalysisTaskHJetEmbed.cxx:21
 AliAnalysisTaskHJetEmbed.cxx:22
 AliAnalysisTaskHJetEmbed.cxx:23
 AliAnalysisTaskHJetEmbed.cxx:24
 AliAnalysisTaskHJetEmbed.cxx:25
 AliAnalysisTaskHJetEmbed.cxx:26
 AliAnalysisTaskHJetEmbed.cxx:27
 AliAnalysisTaskHJetEmbed.cxx:28
 AliAnalysisTaskHJetEmbed.cxx:29
 AliAnalysisTaskHJetEmbed.cxx:30
 AliAnalysisTaskHJetEmbed.cxx:31
 AliAnalysisTaskHJetEmbed.cxx:32
 AliAnalysisTaskHJetEmbed.cxx:33
 AliAnalysisTaskHJetEmbed.cxx:34
 AliAnalysisTaskHJetEmbed.cxx:35
 AliAnalysisTaskHJetEmbed.cxx:36
 AliAnalysisTaskHJetEmbed.cxx:37
 AliAnalysisTaskHJetEmbed.cxx:38
 AliAnalysisTaskHJetEmbed.cxx:39
 AliAnalysisTaskHJetEmbed.cxx:40
 AliAnalysisTaskHJetEmbed.cxx:41
 AliAnalysisTaskHJetEmbed.cxx:42
 AliAnalysisTaskHJetEmbed.cxx:43
 AliAnalysisTaskHJetEmbed.cxx:44
 AliAnalysisTaskHJetEmbed.cxx:45
 AliAnalysisTaskHJetEmbed.cxx:46
 AliAnalysisTaskHJetEmbed.cxx:47
 AliAnalysisTaskHJetEmbed.cxx:48
 AliAnalysisTaskHJetEmbed.cxx:49
 AliAnalysisTaskHJetEmbed.cxx:50
 AliAnalysisTaskHJetEmbed.cxx:51
 AliAnalysisTaskHJetEmbed.cxx:52
 AliAnalysisTaskHJetEmbed.cxx:53
 AliAnalysisTaskHJetEmbed.cxx:54
 AliAnalysisTaskHJetEmbed.cxx:55
 AliAnalysisTaskHJetEmbed.cxx:56
 AliAnalysisTaskHJetEmbed.cxx:57
 AliAnalysisTaskHJetEmbed.cxx:58
 AliAnalysisTaskHJetEmbed.cxx:59
 AliAnalysisTaskHJetEmbed.cxx:60
 AliAnalysisTaskHJetEmbed.cxx:61
 AliAnalysisTaskHJetEmbed.cxx:62
 AliAnalysisTaskHJetEmbed.cxx:63
 AliAnalysisTaskHJetEmbed.cxx:64
 AliAnalysisTaskHJetEmbed.cxx:65
 AliAnalysisTaskHJetEmbed.cxx:66
 AliAnalysisTaskHJetEmbed.cxx:67
 AliAnalysisTaskHJetEmbed.cxx:68
 AliAnalysisTaskHJetEmbed.cxx:69
 AliAnalysisTaskHJetEmbed.cxx:70
 AliAnalysisTaskHJetEmbed.cxx:71
 AliAnalysisTaskHJetEmbed.cxx:72
 AliAnalysisTaskHJetEmbed.cxx:73
 AliAnalysisTaskHJetEmbed.cxx:74
 AliAnalysisTaskHJetEmbed.cxx:75
 AliAnalysisTaskHJetEmbed.cxx:76
 AliAnalysisTaskHJetEmbed.cxx:77
 AliAnalysisTaskHJetEmbed.cxx:78
 AliAnalysisTaskHJetEmbed.cxx:79
 AliAnalysisTaskHJetEmbed.cxx:80
 AliAnalysisTaskHJetEmbed.cxx:81
 AliAnalysisTaskHJetEmbed.cxx:82
 AliAnalysisTaskHJetEmbed.cxx:83
 AliAnalysisTaskHJetEmbed.cxx:84
 AliAnalysisTaskHJetEmbed.cxx:85
 AliAnalysisTaskHJetEmbed.cxx:86
 AliAnalysisTaskHJetEmbed.cxx:87
 AliAnalysisTaskHJetEmbed.cxx:88
 AliAnalysisTaskHJetEmbed.cxx:89
 AliAnalysisTaskHJetEmbed.cxx:90
 AliAnalysisTaskHJetEmbed.cxx:91
 AliAnalysisTaskHJetEmbed.cxx:92
 AliAnalysisTaskHJetEmbed.cxx:93
 AliAnalysisTaskHJetEmbed.cxx:94
 AliAnalysisTaskHJetEmbed.cxx:95
 AliAnalysisTaskHJetEmbed.cxx:96
 AliAnalysisTaskHJetEmbed.cxx:97
 AliAnalysisTaskHJetEmbed.cxx:98
 AliAnalysisTaskHJetEmbed.cxx:99
 AliAnalysisTaskHJetEmbed.cxx:100
 AliAnalysisTaskHJetEmbed.cxx:101
 AliAnalysisTaskHJetEmbed.cxx:102
 AliAnalysisTaskHJetEmbed.cxx:103
 AliAnalysisTaskHJetEmbed.cxx:104
 AliAnalysisTaskHJetEmbed.cxx:105
 AliAnalysisTaskHJetEmbed.cxx:106
 AliAnalysisTaskHJetEmbed.cxx:107
 AliAnalysisTaskHJetEmbed.cxx:108
 AliAnalysisTaskHJetEmbed.cxx:109
 AliAnalysisTaskHJetEmbed.cxx:110
 AliAnalysisTaskHJetEmbed.cxx:111
 AliAnalysisTaskHJetEmbed.cxx:112
 AliAnalysisTaskHJetEmbed.cxx:113
 AliAnalysisTaskHJetEmbed.cxx:114
 AliAnalysisTaskHJetEmbed.cxx:115
 AliAnalysisTaskHJetEmbed.cxx:116
 AliAnalysisTaskHJetEmbed.cxx:117
 AliAnalysisTaskHJetEmbed.cxx:118
 AliAnalysisTaskHJetEmbed.cxx:119
 AliAnalysisTaskHJetEmbed.cxx:120
 AliAnalysisTaskHJetEmbed.cxx:121
 AliAnalysisTaskHJetEmbed.cxx:122
 AliAnalysisTaskHJetEmbed.cxx:123
 AliAnalysisTaskHJetEmbed.cxx:124
 AliAnalysisTaskHJetEmbed.cxx:125
 AliAnalysisTaskHJetEmbed.cxx:126
 AliAnalysisTaskHJetEmbed.cxx:127
 AliAnalysisTaskHJetEmbed.cxx:128
 AliAnalysisTaskHJetEmbed.cxx:129
 AliAnalysisTaskHJetEmbed.cxx:130
 AliAnalysisTaskHJetEmbed.cxx:131
 AliAnalysisTaskHJetEmbed.cxx:132
 AliAnalysisTaskHJetEmbed.cxx:133
 AliAnalysisTaskHJetEmbed.cxx:134
 AliAnalysisTaskHJetEmbed.cxx:135
 AliAnalysisTaskHJetEmbed.cxx:136
 AliAnalysisTaskHJetEmbed.cxx:137
 AliAnalysisTaskHJetEmbed.cxx:138
 AliAnalysisTaskHJetEmbed.cxx:139
 AliAnalysisTaskHJetEmbed.cxx:140
 AliAnalysisTaskHJetEmbed.cxx:141
 AliAnalysisTaskHJetEmbed.cxx:142
 AliAnalysisTaskHJetEmbed.cxx:143
 AliAnalysisTaskHJetEmbed.cxx:144
 AliAnalysisTaskHJetEmbed.cxx:145
 AliAnalysisTaskHJetEmbed.cxx:146
 AliAnalysisTaskHJetEmbed.cxx:147
 AliAnalysisTaskHJetEmbed.cxx:148
 AliAnalysisTaskHJetEmbed.cxx:149
 AliAnalysisTaskHJetEmbed.cxx:150
 AliAnalysisTaskHJetEmbed.cxx:151
 AliAnalysisTaskHJetEmbed.cxx:152
 AliAnalysisTaskHJetEmbed.cxx:153
 AliAnalysisTaskHJetEmbed.cxx:154
 AliAnalysisTaskHJetEmbed.cxx:155
 AliAnalysisTaskHJetEmbed.cxx:156
 AliAnalysisTaskHJetEmbed.cxx:157
 AliAnalysisTaskHJetEmbed.cxx:158
 AliAnalysisTaskHJetEmbed.cxx:159
 AliAnalysisTaskHJetEmbed.cxx:160
 AliAnalysisTaskHJetEmbed.cxx:161
 AliAnalysisTaskHJetEmbed.cxx:162
 AliAnalysisTaskHJetEmbed.cxx:163
 AliAnalysisTaskHJetEmbed.cxx:164
 AliAnalysisTaskHJetEmbed.cxx:165
 AliAnalysisTaskHJetEmbed.cxx:166
 AliAnalysisTaskHJetEmbed.cxx:167
 AliAnalysisTaskHJetEmbed.cxx:168
 AliAnalysisTaskHJetEmbed.cxx:169
 AliAnalysisTaskHJetEmbed.cxx:170
 AliAnalysisTaskHJetEmbed.cxx:171
 AliAnalysisTaskHJetEmbed.cxx:172
 AliAnalysisTaskHJetEmbed.cxx:173
 AliAnalysisTaskHJetEmbed.cxx:174
 AliAnalysisTaskHJetEmbed.cxx:175
 AliAnalysisTaskHJetEmbed.cxx:176
 AliAnalysisTaskHJetEmbed.cxx:177
 AliAnalysisTaskHJetEmbed.cxx:178
 AliAnalysisTaskHJetEmbed.cxx:179
 AliAnalysisTaskHJetEmbed.cxx:180
 AliAnalysisTaskHJetEmbed.cxx:181
 AliAnalysisTaskHJetEmbed.cxx:182
 AliAnalysisTaskHJetEmbed.cxx:183
 AliAnalysisTaskHJetEmbed.cxx:184
 AliAnalysisTaskHJetEmbed.cxx:185
 AliAnalysisTaskHJetEmbed.cxx:186
 AliAnalysisTaskHJetEmbed.cxx:187
 AliAnalysisTaskHJetEmbed.cxx:188
 AliAnalysisTaskHJetEmbed.cxx:189
 AliAnalysisTaskHJetEmbed.cxx:190
 AliAnalysisTaskHJetEmbed.cxx:191
 AliAnalysisTaskHJetEmbed.cxx:192
 AliAnalysisTaskHJetEmbed.cxx:193
 AliAnalysisTaskHJetEmbed.cxx:194
 AliAnalysisTaskHJetEmbed.cxx:195
 AliAnalysisTaskHJetEmbed.cxx:196
 AliAnalysisTaskHJetEmbed.cxx:197
 AliAnalysisTaskHJetEmbed.cxx:198
 AliAnalysisTaskHJetEmbed.cxx:199
 AliAnalysisTaskHJetEmbed.cxx:200
 AliAnalysisTaskHJetEmbed.cxx:201
 AliAnalysisTaskHJetEmbed.cxx:202
 AliAnalysisTaskHJetEmbed.cxx:203
 AliAnalysisTaskHJetEmbed.cxx:204
 AliAnalysisTaskHJetEmbed.cxx:205
 AliAnalysisTaskHJetEmbed.cxx:206
 AliAnalysisTaskHJetEmbed.cxx:207
 AliAnalysisTaskHJetEmbed.cxx:208
 AliAnalysisTaskHJetEmbed.cxx:209
 AliAnalysisTaskHJetEmbed.cxx:210
 AliAnalysisTaskHJetEmbed.cxx:211
 AliAnalysisTaskHJetEmbed.cxx:212
 AliAnalysisTaskHJetEmbed.cxx:213
 AliAnalysisTaskHJetEmbed.cxx:214
 AliAnalysisTaskHJetEmbed.cxx:215
 AliAnalysisTaskHJetEmbed.cxx:216
 AliAnalysisTaskHJetEmbed.cxx:217
 AliAnalysisTaskHJetEmbed.cxx:218
 AliAnalysisTaskHJetEmbed.cxx:219
 AliAnalysisTaskHJetEmbed.cxx:220
 AliAnalysisTaskHJetEmbed.cxx:221
 AliAnalysisTaskHJetEmbed.cxx:222
 AliAnalysisTaskHJetEmbed.cxx:223
 AliAnalysisTaskHJetEmbed.cxx:224
 AliAnalysisTaskHJetEmbed.cxx:225
 AliAnalysisTaskHJetEmbed.cxx:226
 AliAnalysisTaskHJetEmbed.cxx:227
 AliAnalysisTaskHJetEmbed.cxx:228
 AliAnalysisTaskHJetEmbed.cxx:229
 AliAnalysisTaskHJetEmbed.cxx:230
 AliAnalysisTaskHJetEmbed.cxx:231
 AliAnalysisTaskHJetEmbed.cxx:232
 AliAnalysisTaskHJetEmbed.cxx:233
 AliAnalysisTaskHJetEmbed.cxx:234
 AliAnalysisTaskHJetEmbed.cxx:235
 AliAnalysisTaskHJetEmbed.cxx:236
 AliAnalysisTaskHJetEmbed.cxx:237
 AliAnalysisTaskHJetEmbed.cxx:238
 AliAnalysisTaskHJetEmbed.cxx:239
 AliAnalysisTaskHJetEmbed.cxx:240
 AliAnalysisTaskHJetEmbed.cxx:241
 AliAnalysisTaskHJetEmbed.cxx:242
 AliAnalysisTaskHJetEmbed.cxx:243
 AliAnalysisTaskHJetEmbed.cxx:244
 AliAnalysisTaskHJetEmbed.cxx:245
 AliAnalysisTaskHJetEmbed.cxx:246
 AliAnalysisTaskHJetEmbed.cxx:247
 AliAnalysisTaskHJetEmbed.cxx:248
 AliAnalysisTaskHJetEmbed.cxx:249
 AliAnalysisTaskHJetEmbed.cxx:250
 AliAnalysisTaskHJetEmbed.cxx:251
 AliAnalysisTaskHJetEmbed.cxx:252
 AliAnalysisTaskHJetEmbed.cxx:253
 AliAnalysisTaskHJetEmbed.cxx:254
 AliAnalysisTaskHJetEmbed.cxx:255
 AliAnalysisTaskHJetEmbed.cxx:256
 AliAnalysisTaskHJetEmbed.cxx:257
 AliAnalysisTaskHJetEmbed.cxx:258
 AliAnalysisTaskHJetEmbed.cxx:259
 AliAnalysisTaskHJetEmbed.cxx:260
 AliAnalysisTaskHJetEmbed.cxx:261
 AliAnalysisTaskHJetEmbed.cxx:262
 AliAnalysisTaskHJetEmbed.cxx:263
 AliAnalysisTaskHJetEmbed.cxx:264
 AliAnalysisTaskHJetEmbed.cxx:265
 AliAnalysisTaskHJetEmbed.cxx:266
 AliAnalysisTaskHJetEmbed.cxx:267
 AliAnalysisTaskHJetEmbed.cxx:268
 AliAnalysisTaskHJetEmbed.cxx:269
 AliAnalysisTaskHJetEmbed.cxx:270
 AliAnalysisTaskHJetEmbed.cxx:271
 AliAnalysisTaskHJetEmbed.cxx:272
 AliAnalysisTaskHJetEmbed.cxx:273
 AliAnalysisTaskHJetEmbed.cxx:274
 AliAnalysisTaskHJetEmbed.cxx:275
 AliAnalysisTaskHJetEmbed.cxx:276
 AliAnalysisTaskHJetEmbed.cxx:277
 AliAnalysisTaskHJetEmbed.cxx:278
 AliAnalysisTaskHJetEmbed.cxx:279
 AliAnalysisTaskHJetEmbed.cxx:280
 AliAnalysisTaskHJetEmbed.cxx:281
 AliAnalysisTaskHJetEmbed.cxx:282
 AliAnalysisTaskHJetEmbed.cxx:283
 AliAnalysisTaskHJetEmbed.cxx:284
 AliAnalysisTaskHJetEmbed.cxx:285
 AliAnalysisTaskHJetEmbed.cxx:286
 AliAnalysisTaskHJetEmbed.cxx:287
 AliAnalysisTaskHJetEmbed.cxx:288
 AliAnalysisTaskHJetEmbed.cxx:289
 AliAnalysisTaskHJetEmbed.cxx:290
 AliAnalysisTaskHJetEmbed.cxx:291
 AliAnalysisTaskHJetEmbed.cxx:292
 AliAnalysisTaskHJetEmbed.cxx:293
 AliAnalysisTaskHJetEmbed.cxx:294
 AliAnalysisTaskHJetEmbed.cxx:295
 AliAnalysisTaskHJetEmbed.cxx:296
 AliAnalysisTaskHJetEmbed.cxx:297
 AliAnalysisTaskHJetEmbed.cxx:298
 AliAnalysisTaskHJetEmbed.cxx:299
 AliAnalysisTaskHJetEmbed.cxx:300
 AliAnalysisTaskHJetEmbed.cxx:301
 AliAnalysisTaskHJetEmbed.cxx:302
 AliAnalysisTaskHJetEmbed.cxx:303
 AliAnalysisTaskHJetEmbed.cxx:304
 AliAnalysisTaskHJetEmbed.cxx:305
 AliAnalysisTaskHJetEmbed.cxx:306
 AliAnalysisTaskHJetEmbed.cxx:307
 AliAnalysisTaskHJetEmbed.cxx:308
 AliAnalysisTaskHJetEmbed.cxx:309
 AliAnalysisTaskHJetEmbed.cxx:310
 AliAnalysisTaskHJetEmbed.cxx:311
 AliAnalysisTaskHJetEmbed.cxx:312
 AliAnalysisTaskHJetEmbed.cxx:313
 AliAnalysisTaskHJetEmbed.cxx:314
 AliAnalysisTaskHJetEmbed.cxx:315
 AliAnalysisTaskHJetEmbed.cxx:316
 AliAnalysisTaskHJetEmbed.cxx:317
 AliAnalysisTaskHJetEmbed.cxx:318
 AliAnalysisTaskHJetEmbed.cxx:319
 AliAnalysisTaskHJetEmbed.cxx:320
 AliAnalysisTaskHJetEmbed.cxx:321
 AliAnalysisTaskHJetEmbed.cxx:322
 AliAnalysisTaskHJetEmbed.cxx:323
 AliAnalysisTaskHJetEmbed.cxx:324
 AliAnalysisTaskHJetEmbed.cxx:325
 AliAnalysisTaskHJetEmbed.cxx:326
 AliAnalysisTaskHJetEmbed.cxx:327
 AliAnalysisTaskHJetEmbed.cxx:328
 AliAnalysisTaskHJetEmbed.cxx:329
 AliAnalysisTaskHJetEmbed.cxx:330
 AliAnalysisTaskHJetEmbed.cxx:331
 AliAnalysisTaskHJetEmbed.cxx:332
 AliAnalysisTaskHJetEmbed.cxx:333
 AliAnalysisTaskHJetEmbed.cxx:334
 AliAnalysisTaskHJetEmbed.cxx:335
 AliAnalysisTaskHJetEmbed.cxx:336
 AliAnalysisTaskHJetEmbed.cxx:337
 AliAnalysisTaskHJetEmbed.cxx:338
 AliAnalysisTaskHJetEmbed.cxx:339
 AliAnalysisTaskHJetEmbed.cxx:340
 AliAnalysisTaskHJetEmbed.cxx:341
 AliAnalysisTaskHJetEmbed.cxx:342
 AliAnalysisTaskHJetEmbed.cxx:343
 AliAnalysisTaskHJetEmbed.cxx:344
 AliAnalysisTaskHJetEmbed.cxx:345
 AliAnalysisTaskHJetEmbed.cxx:346
 AliAnalysisTaskHJetEmbed.cxx:347
 AliAnalysisTaskHJetEmbed.cxx:348
 AliAnalysisTaskHJetEmbed.cxx:349
 AliAnalysisTaskHJetEmbed.cxx:350
 AliAnalysisTaskHJetEmbed.cxx:351
 AliAnalysisTaskHJetEmbed.cxx:352
 AliAnalysisTaskHJetEmbed.cxx:353
 AliAnalysisTaskHJetEmbed.cxx:354
 AliAnalysisTaskHJetEmbed.cxx:355
 AliAnalysisTaskHJetEmbed.cxx:356
 AliAnalysisTaskHJetEmbed.cxx:357
 AliAnalysisTaskHJetEmbed.cxx:358
 AliAnalysisTaskHJetEmbed.cxx:359
 AliAnalysisTaskHJetEmbed.cxx:360
 AliAnalysisTaskHJetEmbed.cxx:361
 AliAnalysisTaskHJetEmbed.cxx:362
 AliAnalysisTaskHJetEmbed.cxx:363
 AliAnalysisTaskHJetEmbed.cxx:364
 AliAnalysisTaskHJetEmbed.cxx:365
 AliAnalysisTaskHJetEmbed.cxx:366
 AliAnalysisTaskHJetEmbed.cxx:367
 AliAnalysisTaskHJetEmbed.cxx:368
 AliAnalysisTaskHJetEmbed.cxx:369
 AliAnalysisTaskHJetEmbed.cxx:370
 AliAnalysisTaskHJetEmbed.cxx:371
 AliAnalysisTaskHJetEmbed.cxx:372
 AliAnalysisTaskHJetEmbed.cxx:373
 AliAnalysisTaskHJetEmbed.cxx:374
 AliAnalysisTaskHJetEmbed.cxx:375
 AliAnalysisTaskHJetEmbed.cxx:376
 AliAnalysisTaskHJetEmbed.cxx:377
 AliAnalysisTaskHJetEmbed.cxx:378
 AliAnalysisTaskHJetEmbed.cxx:379
 AliAnalysisTaskHJetEmbed.cxx:380
 AliAnalysisTaskHJetEmbed.cxx:381
 AliAnalysisTaskHJetEmbed.cxx:382
 AliAnalysisTaskHJetEmbed.cxx:383
 AliAnalysisTaskHJetEmbed.cxx:384
 AliAnalysisTaskHJetEmbed.cxx:385
 AliAnalysisTaskHJetEmbed.cxx:386
 AliAnalysisTaskHJetEmbed.cxx:387
 AliAnalysisTaskHJetEmbed.cxx:388
 AliAnalysisTaskHJetEmbed.cxx:389
 AliAnalysisTaskHJetEmbed.cxx:390
 AliAnalysisTaskHJetEmbed.cxx:391
 AliAnalysisTaskHJetEmbed.cxx:392
 AliAnalysisTaskHJetEmbed.cxx:393
 AliAnalysisTaskHJetEmbed.cxx:394
 AliAnalysisTaskHJetEmbed.cxx:395
 AliAnalysisTaskHJetEmbed.cxx:396
 AliAnalysisTaskHJetEmbed.cxx:397
 AliAnalysisTaskHJetEmbed.cxx:398
 AliAnalysisTaskHJetEmbed.cxx:399
 AliAnalysisTaskHJetEmbed.cxx:400
 AliAnalysisTaskHJetEmbed.cxx:401
 AliAnalysisTaskHJetEmbed.cxx:402
 AliAnalysisTaskHJetEmbed.cxx:403
 AliAnalysisTaskHJetEmbed.cxx:404
 AliAnalysisTaskHJetEmbed.cxx:405
 AliAnalysisTaskHJetEmbed.cxx:406
 AliAnalysisTaskHJetEmbed.cxx:407
 AliAnalysisTaskHJetEmbed.cxx:408
 AliAnalysisTaskHJetEmbed.cxx:409
 AliAnalysisTaskHJetEmbed.cxx:410
 AliAnalysisTaskHJetEmbed.cxx:411
 AliAnalysisTaskHJetEmbed.cxx:412
 AliAnalysisTaskHJetEmbed.cxx:413
 AliAnalysisTaskHJetEmbed.cxx:414
 AliAnalysisTaskHJetEmbed.cxx:415
 AliAnalysisTaskHJetEmbed.cxx:416
 AliAnalysisTaskHJetEmbed.cxx:417
 AliAnalysisTaskHJetEmbed.cxx:418
 AliAnalysisTaskHJetEmbed.cxx:419
 AliAnalysisTaskHJetEmbed.cxx:420
 AliAnalysisTaskHJetEmbed.cxx:421
 AliAnalysisTaskHJetEmbed.cxx:422
 AliAnalysisTaskHJetEmbed.cxx:423
 AliAnalysisTaskHJetEmbed.cxx:424
 AliAnalysisTaskHJetEmbed.cxx:425
 AliAnalysisTaskHJetEmbed.cxx:426
 AliAnalysisTaskHJetEmbed.cxx:427
 AliAnalysisTaskHJetEmbed.cxx:428
 AliAnalysisTaskHJetEmbed.cxx:429
 AliAnalysisTaskHJetEmbed.cxx:430
 AliAnalysisTaskHJetEmbed.cxx:431
 AliAnalysisTaskHJetEmbed.cxx:432
 AliAnalysisTaskHJetEmbed.cxx:433
 AliAnalysisTaskHJetEmbed.cxx:434
 AliAnalysisTaskHJetEmbed.cxx:435
 AliAnalysisTaskHJetEmbed.cxx:436
 AliAnalysisTaskHJetEmbed.cxx:437
 AliAnalysisTaskHJetEmbed.cxx:438
 AliAnalysisTaskHJetEmbed.cxx:439
 AliAnalysisTaskHJetEmbed.cxx:440
 AliAnalysisTaskHJetEmbed.cxx:441
 AliAnalysisTaskHJetEmbed.cxx:442
 AliAnalysisTaskHJetEmbed.cxx:443
 AliAnalysisTaskHJetEmbed.cxx:444
 AliAnalysisTaskHJetEmbed.cxx:445
 AliAnalysisTaskHJetEmbed.cxx:446
 AliAnalysisTaskHJetEmbed.cxx:447
 AliAnalysisTaskHJetEmbed.cxx:448
 AliAnalysisTaskHJetEmbed.cxx:449
 AliAnalysisTaskHJetEmbed.cxx:450
 AliAnalysisTaskHJetEmbed.cxx:451
 AliAnalysisTaskHJetEmbed.cxx:452
 AliAnalysisTaskHJetEmbed.cxx:453
 AliAnalysisTaskHJetEmbed.cxx:454
 AliAnalysisTaskHJetEmbed.cxx:455
 AliAnalysisTaskHJetEmbed.cxx:456
 AliAnalysisTaskHJetEmbed.cxx:457
 AliAnalysisTaskHJetEmbed.cxx:458
 AliAnalysisTaskHJetEmbed.cxx:459
 AliAnalysisTaskHJetEmbed.cxx:460
 AliAnalysisTaskHJetEmbed.cxx:461
 AliAnalysisTaskHJetEmbed.cxx:462
 AliAnalysisTaskHJetEmbed.cxx:463
 AliAnalysisTaskHJetEmbed.cxx:464
 AliAnalysisTaskHJetEmbed.cxx:465
 AliAnalysisTaskHJetEmbed.cxx:466
 AliAnalysisTaskHJetEmbed.cxx:467
 AliAnalysisTaskHJetEmbed.cxx:468
 AliAnalysisTaskHJetEmbed.cxx:469
 AliAnalysisTaskHJetEmbed.cxx:470
 AliAnalysisTaskHJetEmbed.cxx:471
 AliAnalysisTaskHJetEmbed.cxx:472
 AliAnalysisTaskHJetEmbed.cxx:473
 AliAnalysisTaskHJetEmbed.cxx:474
 AliAnalysisTaskHJetEmbed.cxx:475
 AliAnalysisTaskHJetEmbed.cxx:476
 AliAnalysisTaskHJetEmbed.cxx:477
 AliAnalysisTaskHJetEmbed.cxx:478
 AliAnalysisTaskHJetEmbed.cxx:479
 AliAnalysisTaskHJetEmbed.cxx:480
 AliAnalysisTaskHJetEmbed.cxx:481
 AliAnalysisTaskHJetEmbed.cxx:482
 AliAnalysisTaskHJetEmbed.cxx:483
 AliAnalysisTaskHJetEmbed.cxx:484
 AliAnalysisTaskHJetEmbed.cxx:485
 AliAnalysisTaskHJetEmbed.cxx:486
 AliAnalysisTaskHJetEmbed.cxx:487
 AliAnalysisTaskHJetEmbed.cxx:488
 AliAnalysisTaskHJetEmbed.cxx:489
 AliAnalysisTaskHJetEmbed.cxx:490
 AliAnalysisTaskHJetEmbed.cxx:491
 AliAnalysisTaskHJetEmbed.cxx:492
 AliAnalysisTaskHJetEmbed.cxx:493
 AliAnalysisTaskHJetEmbed.cxx:494
 AliAnalysisTaskHJetEmbed.cxx:495
 AliAnalysisTaskHJetEmbed.cxx:496
 AliAnalysisTaskHJetEmbed.cxx:497
 AliAnalysisTaskHJetEmbed.cxx:498
 AliAnalysisTaskHJetEmbed.cxx:499
 AliAnalysisTaskHJetEmbed.cxx:500
 AliAnalysisTaskHJetEmbed.cxx:501
 AliAnalysisTaskHJetEmbed.cxx:502
 AliAnalysisTaskHJetEmbed.cxx:503
 AliAnalysisTaskHJetEmbed.cxx:504
 AliAnalysisTaskHJetEmbed.cxx:505
 AliAnalysisTaskHJetEmbed.cxx:506
 AliAnalysisTaskHJetEmbed.cxx:507
 AliAnalysisTaskHJetEmbed.cxx:508
 AliAnalysisTaskHJetEmbed.cxx:509
 AliAnalysisTaskHJetEmbed.cxx:510
 AliAnalysisTaskHJetEmbed.cxx:511
 AliAnalysisTaskHJetEmbed.cxx:512
 AliAnalysisTaskHJetEmbed.cxx:513
 AliAnalysisTaskHJetEmbed.cxx:514
 AliAnalysisTaskHJetEmbed.cxx:515
 AliAnalysisTaskHJetEmbed.cxx:516
 AliAnalysisTaskHJetEmbed.cxx:517
 AliAnalysisTaskHJetEmbed.cxx:518
 AliAnalysisTaskHJetEmbed.cxx:519
 AliAnalysisTaskHJetEmbed.cxx:520
 AliAnalysisTaskHJetEmbed.cxx:521
 AliAnalysisTaskHJetEmbed.cxx:522
 AliAnalysisTaskHJetEmbed.cxx:523
 AliAnalysisTaskHJetEmbed.cxx:524
 AliAnalysisTaskHJetEmbed.cxx:525
 AliAnalysisTaskHJetEmbed.cxx:526
 AliAnalysisTaskHJetEmbed.cxx:527
 AliAnalysisTaskHJetEmbed.cxx:528
 AliAnalysisTaskHJetEmbed.cxx:529
 AliAnalysisTaskHJetEmbed.cxx:530
 AliAnalysisTaskHJetEmbed.cxx:531
 AliAnalysisTaskHJetEmbed.cxx:532
 AliAnalysisTaskHJetEmbed.cxx:533
 AliAnalysisTaskHJetEmbed.cxx:534
 AliAnalysisTaskHJetEmbed.cxx:535
 AliAnalysisTaskHJetEmbed.cxx:536
 AliAnalysisTaskHJetEmbed.cxx:537
 AliAnalysisTaskHJetEmbed.cxx:538
 AliAnalysisTaskHJetEmbed.cxx:539
 AliAnalysisTaskHJetEmbed.cxx:540
 AliAnalysisTaskHJetEmbed.cxx:541
 AliAnalysisTaskHJetEmbed.cxx:542
 AliAnalysisTaskHJetEmbed.cxx:543
 AliAnalysisTaskHJetEmbed.cxx:544
 AliAnalysisTaskHJetEmbed.cxx:545
 AliAnalysisTaskHJetEmbed.cxx:546
 AliAnalysisTaskHJetEmbed.cxx:547
 AliAnalysisTaskHJetEmbed.cxx:548
 AliAnalysisTaskHJetEmbed.cxx:549
 AliAnalysisTaskHJetEmbed.cxx:550
 AliAnalysisTaskHJetEmbed.cxx:551
 AliAnalysisTaskHJetEmbed.cxx:552
 AliAnalysisTaskHJetEmbed.cxx:553
 AliAnalysisTaskHJetEmbed.cxx:554
 AliAnalysisTaskHJetEmbed.cxx:555
 AliAnalysisTaskHJetEmbed.cxx:556
 AliAnalysisTaskHJetEmbed.cxx:557
 AliAnalysisTaskHJetEmbed.cxx:558
 AliAnalysisTaskHJetEmbed.cxx:559
 AliAnalysisTaskHJetEmbed.cxx:560
 AliAnalysisTaskHJetEmbed.cxx:561
 AliAnalysisTaskHJetEmbed.cxx:562
 AliAnalysisTaskHJetEmbed.cxx:563
 AliAnalysisTaskHJetEmbed.cxx:564
 AliAnalysisTaskHJetEmbed.cxx:565
 AliAnalysisTaskHJetEmbed.cxx:566
 AliAnalysisTaskHJetEmbed.cxx:567
 AliAnalysisTaskHJetEmbed.cxx:568
 AliAnalysisTaskHJetEmbed.cxx:569
 AliAnalysisTaskHJetEmbed.cxx:570
 AliAnalysisTaskHJetEmbed.cxx:571
 AliAnalysisTaskHJetEmbed.cxx:572
 AliAnalysisTaskHJetEmbed.cxx:573
 AliAnalysisTaskHJetEmbed.cxx:574
 AliAnalysisTaskHJetEmbed.cxx:575
 AliAnalysisTaskHJetEmbed.cxx:576
 AliAnalysisTaskHJetEmbed.cxx:577
 AliAnalysisTaskHJetEmbed.cxx:578
 AliAnalysisTaskHJetEmbed.cxx:579
 AliAnalysisTaskHJetEmbed.cxx:580
 AliAnalysisTaskHJetEmbed.cxx:581
 AliAnalysisTaskHJetEmbed.cxx:582
 AliAnalysisTaskHJetEmbed.cxx:583
 AliAnalysisTaskHJetEmbed.cxx:584
 AliAnalysisTaskHJetEmbed.cxx:585
 AliAnalysisTaskHJetEmbed.cxx:586
 AliAnalysisTaskHJetEmbed.cxx:587
 AliAnalysisTaskHJetEmbed.cxx:588
 AliAnalysisTaskHJetEmbed.cxx:589
 AliAnalysisTaskHJetEmbed.cxx:590
 AliAnalysisTaskHJetEmbed.cxx:591
 AliAnalysisTaskHJetEmbed.cxx:592
 AliAnalysisTaskHJetEmbed.cxx:593
 AliAnalysisTaskHJetEmbed.cxx:594
 AliAnalysisTaskHJetEmbed.cxx:595
 AliAnalysisTaskHJetEmbed.cxx:596
 AliAnalysisTaskHJetEmbed.cxx:597
 AliAnalysisTaskHJetEmbed.cxx:598
 AliAnalysisTaskHJetEmbed.cxx:599
 AliAnalysisTaskHJetEmbed.cxx:600
 AliAnalysisTaskHJetEmbed.cxx:601
 AliAnalysisTaskHJetEmbed.cxx:602
 AliAnalysisTaskHJetEmbed.cxx:603
 AliAnalysisTaskHJetEmbed.cxx:604
 AliAnalysisTaskHJetEmbed.cxx:605
 AliAnalysisTaskHJetEmbed.cxx:606
 AliAnalysisTaskHJetEmbed.cxx:607
 AliAnalysisTaskHJetEmbed.cxx:608
 AliAnalysisTaskHJetEmbed.cxx:609
 AliAnalysisTaskHJetEmbed.cxx:610
 AliAnalysisTaskHJetEmbed.cxx:611
 AliAnalysisTaskHJetEmbed.cxx:612
 AliAnalysisTaskHJetEmbed.cxx:613
 AliAnalysisTaskHJetEmbed.cxx:614
 AliAnalysisTaskHJetEmbed.cxx:615
 AliAnalysisTaskHJetEmbed.cxx:616
 AliAnalysisTaskHJetEmbed.cxx:617
 AliAnalysisTaskHJetEmbed.cxx:618
 AliAnalysisTaskHJetEmbed.cxx:619
 AliAnalysisTaskHJetEmbed.cxx:620
 AliAnalysisTaskHJetEmbed.cxx:621
 AliAnalysisTaskHJetEmbed.cxx:622
 AliAnalysisTaskHJetEmbed.cxx:623
 AliAnalysisTaskHJetEmbed.cxx:624
 AliAnalysisTaskHJetEmbed.cxx:625
 AliAnalysisTaskHJetEmbed.cxx:626
 AliAnalysisTaskHJetEmbed.cxx:627
 AliAnalysisTaskHJetEmbed.cxx:628
 AliAnalysisTaskHJetEmbed.cxx:629
 AliAnalysisTaskHJetEmbed.cxx:630
 AliAnalysisTaskHJetEmbed.cxx:631
 AliAnalysisTaskHJetEmbed.cxx:632
 AliAnalysisTaskHJetEmbed.cxx:633
 AliAnalysisTaskHJetEmbed.cxx:634
 AliAnalysisTaskHJetEmbed.cxx:635
 AliAnalysisTaskHJetEmbed.cxx:636
 AliAnalysisTaskHJetEmbed.cxx:637
 AliAnalysisTaskHJetEmbed.cxx:638
 AliAnalysisTaskHJetEmbed.cxx:639
 AliAnalysisTaskHJetEmbed.cxx:640
 AliAnalysisTaskHJetEmbed.cxx:641
 AliAnalysisTaskHJetEmbed.cxx:642
 AliAnalysisTaskHJetEmbed.cxx:643
 AliAnalysisTaskHJetEmbed.cxx:644
 AliAnalysisTaskHJetEmbed.cxx:645
 AliAnalysisTaskHJetEmbed.cxx:646
 AliAnalysisTaskHJetEmbed.cxx:647
 AliAnalysisTaskHJetEmbed.cxx:648
 AliAnalysisTaskHJetEmbed.cxx:649
 AliAnalysisTaskHJetEmbed.cxx:650
 AliAnalysisTaskHJetEmbed.cxx:651
 AliAnalysisTaskHJetEmbed.cxx:652
 AliAnalysisTaskHJetEmbed.cxx:653
 AliAnalysisTaskHJetEmbed.cxx:654
 AliAnalysisTaskHJetEmbed.cxx:655
 AliAnalysisTaskHJetEmbed.cxx:656
 AliAnalysisTaskHJetEmbed.cxx:657
 AliAnalysisTaskHJetEmbed.cxx:658
 AliAnalysisTaskHJetEmbed.cxx:659
 AliAnalysisTaskHJetEmbed.cxx:660
 AliAnalysisTaskHJetEmbed.cxx:661
 AliAnalysisTaskHJetEmbed.cxx:662
 AliAnalysisTaskHJetEmbed.cxx:663
 AliAnalysisTaskHJetEmbed.cxx:664
 AliAnalysisTaskHJetEmbed.cxx:665
 AliAnalysisTaskHJetEmbed.cxx:666
 AliAnalysisTaskHJetEmbed.cxx:667
 AliAnalysisTaskHJetEmbed.cxx:668
 AliAnalysisTaskHJetEmbed.cxx:669
 AliAnalysisTaskHJetEmbed.cxx:670
 AliAnalysisTaskHJetEmbed.cxx:671
 AliAnalysisTaskHJetEmbed.cxx:672
 AliAnalysisTaskHJetEmbed.cxx:673
 AliAnalysisTaskHJetEmbed.cxx:674
 AliAnalysisTaskHJetEmbed.cxx:675
 AliAnalysisTaskHJetEmbed.cxx:676
 AliAnalysisTaskHJetEmbed.cxx:677
 AliAnalysisTaskHJetEmbed.cxx:678
 AliAnalysisTaskHJetEmbed.cxx:679
 AliAnalysisTaskHJetEmbed.cxx:680
 AliAnalysisTaskHJetEmbed.cxx:681
 AliAnalysisTaskHJetEmbed.cxx:682
 AliAnalysisTaskHJetEmbed.cxx:683
 AliAnalysisTaskHJetEmbed.cxx:684
 AliAnalysisTaskHJetEmbed.cxx:685
 AliAnalysisTaskHJetEmbed.cxx:686
 AliAnalysisTaskHJetEmbed.cxx:687
 AliAnalysisTaskHJetEmbed.cxx:688
 AliAnalysisTaskHJetEmbed.cxx:689
 AliAnalysisTaskHJetEmbed.cxx:690
 AliAnalysisTaskHJetEmbed.cxx:691
 AliAnalysisTaskHJetEmbed.cxx:692
 AliAnalysisTaskHJetEmbed.cxx:693
 AliAnalysisTaskHJetEmbed.cxx:694
 AliAnalysisTaskHJetEmbed.cxx:695
 AliAnalysisTaskHJetEmbed.cxx:696
 AliAnalysisTaskHJetEmbed.cxx:697
 AliAnalysisTaskHJetEmbed.cxx:698
 AliAnalysisTaskHJetEmbed.cxx:699
 AliAnalysisTaskHJetEmbed.cxx:700
 AliAnalysisTaskHJetEmbed.cxx:701
 AliAnalysisTaskHJetEmbed.cxx:702
 AliAnalysisTaskHJetEmbed.cxx:703
 AliAnalysisTaskHJetEmbed.cxx:704
 AliAnalysisTaskHJetEmbed.cxx:705
 AliAnalysisTaskHJetEmbed.cxx:706
 AliAnalysisTaskHJetEmbed.cxx:707
 AliAnalysisTaskHJetEmbed.cxx:708
 AliAnalysisTaskHJetEmbed.cxx:709
 AliAnalysisTaskHJetEmbed.cxx:710
 AliAnalysisTaskHJetEmbed.cxx:711
 AliAnalysisTaskHJetEmbed.cxx:712
 AliAnalysisTaskHJetEmbed.cxx:713
 AliAnalysisTaskHJetEmbed.cxx:714
 AliAnalysisTaskHJetEmbed.cxx:715
 AliAnalysisTaskHJetEmbed.cxx:716
 AliAnalysisTaskHJetEmbed.cxx:717
 AliAnalysisTaskHJetEmbed.cxx:718
 AliAnalysisTaskHJetEmbed.cxx:719
 AliAnalysisTaskHJetEmbed.cxx:720
 AliAnalysisTaskHJetEmbed.cxx:721
 AliAnalysisTaskHJetEmbed.cxx:722
 AliAnalysisTaskHJetEmbed.cxx:723
 AliAnalysisTaskHJetEmbed.cxx:724
 AliAnalysisTaskHJetEmbed.cxx:725
 AliAnalysisTaskHJetEmbed.cxx:726
 AliAnalysisTaskHJetEmbed.cxx:727
 AliAnalysisTaskHJetEmbed.cxx:728
 AliAnalysisTaskHJetEmbed.cxx:729
 AliAnalysisTaskHJetEmbed.cxx:730
 AliAnalysisTaskHJetEmbed.cxx:731
 AliAnalysisTaskHJetEmbed.cxx:732
 AliAnalysisTaskHJetEmbed.cxx:733
 AliAnalysisTaskHJetEmbed.cxx:734
 AliAnalysisTaskHJetEmbed.cxx:735
 AliAnalysisTaskHJetEmbed.cxx:736
 AliAnalysisTaskHJetEmbed.cxx:737
 AliAnalysisTaskHJetEmbed.cxx:738
 AliAnalysisTaskHJetEmbed.cxx:739
 AliAnalysisTaskHJetEmbed.cxx:740
 AliAnalysisTaskHJetEmbed.cxx:741
 AliAnalysisTaskHJetEmbed.cxx:742
 AliAnalysisTaskHJetEmbed.cxx:743
 AliAnalysisTaskHJetEmbed.cxx:744
 AliAnalysisTaskHJetEmbed.cxx:745
 AliAnalysisTaskHJetEmbed.cxx:746
 AliAnalysisTaskHJetEmbed.cxx:747
 AliAnalysisTaskHJetEmbed.cxx:748
 AliAnalysisTaskHJetEmbed.cxx:749
 AliAnalysisTaskHJetEmbed.cxx:750
 AliAnalysisTaskHJetEmbed.cxx:751
 AliAnalysisTaskHJetEmbed.cxx:752
 AliAnalysisTaskHJetEmbed.cxx:753
 AliAnalysisTaskHJetEmbed.cxx:754
 AliAnalysisTaskHJetEmbed.cxx:755
 AliAnalysisTaskHJetEmbed.cxx:756
 AliAnalysisTaskHJetEmbed.cxx:757
 AliAnalysisTaskHJetEmbed.cxx:758
 AliAnalysisTaskHJetEmbed.cxx:759
 AliAnalysisTaskHJetEmbed.cxx:760
 AliAnalysisTaskHJetEmbed.cxx:761
 AliAnalysisTaskHJetEmbed.cxx:762
 AliAnalysisTaskHJetEmbed.cxx:763
 AliAnalysisTaskHJetEmbed.cxx:764
 AliAnalysisTaskHJetEmbed.cxx:765
 AliAnalysisTaskHJetEmbed.cxx:766
 AliAnalysisTaskHJetEmbed.cxx:767
 AliAnalysisTaskHJetEmbed.cxx:768
 AliAnalysisTaskHJetEmbed.cxx:769
 AliAnalysisTaskHJetEmbed.cxx:770
 AliAnalysisTaskHJetEmbed.cxx:771
 AliAnalysisTaskHJetEmbed.cxx:772
 AliAnalysisTaskHJetEmbed.cxx:773
 AliAnalysisTaskHJetEmbed.cxx:774
 AliAnalysisTaskHJetEmbed.cxx:775
 AliAnalysisTaskHJetEmbed.cxx:776
 AliAnalysisTaskHJetEmbed.cxx:777
 AliAnalysisTaskHJetEmbed.cxx:778
 AliAnalysisTaskHJetEmbed.cxx:779
 AliAnalysisTaskHJetEmbed.cxx:780
 AliAnalysisTaskHJetEmbed.cxx:781
 AliAnalysisTaskHJetEmbed.cxx:782
 AliAnalysisTaskHJetEmbed.cxx:783
 AliAnalysisTaskHJetEmbed.cxx:784
 AliAnalysisTaskHJetEmbed.cxx:785
 AliAnalysisTaskHJetEmbed.cxx:786
 AliAnalysisTaskHJetEmbed.cxx:787
 AliAnalysisTaskHJetEmbed.cxx:788
 AliAnalysisTaskHJetEmbed.cxx:789
 AliAnalysisTaskHJetEmbed.cxx:790
 AliAnalysisTaskHJetEmbed.cxx:791
 AliAnalysisTaskHJetEmbed.cxx:792
 AliAnalysisTaskHJetEmbed.cxx:793
 AliAnalysisTaskHJetEmbed.cxx:794
 AliAnalysisTaskHJetEmbed.cxx:795
 AliAnalysisTaskHJetEmbed.cxx:796
 AliAnalysisTaskHJetEmbed.cxx:797
 AliAnalysisTaskHJetEmbed.cxx:798
 AliAnalysisTaskHJetEmbed.cxx:799
 AliAnalysisTaskHJetEmbed.cxx:800
 AliAnalysisTaskHJetEmbed.cxx:801
 AliAnalysisTaskHJetEmbed.cxx:802
 AliAnalysisTaskHJetEmbed.cxx:803
 AliAnalysisTaskHJetEmbed.cxx:804
 AliAnalysisTaskHJetEmbed.cxx:805
 AliAnalysisTaskHJetEmbed.cxx:806
 AliAnalysisTaskHJetEmbed.cxx:807
 AliAnalysisTaskHJetEmbed.cxx:808
 AliAnalysisTaskHJetEmbed.cxx:809
 AliAnalysisTaskHJetEmbed.cxx:810
 AliAnalysisTaskHJetEmbed.cxx:811
 AliAnalysisTaskHJetEmbed.cxx:812
 AliAnalysisTaskHJetEmbed.cxx:813
 AliAnalysisTaskHJetEmbed.cxx:814
 AliAnalysisTaskHJetEmbed.cxx:815
 AliAnalysisTaskHJetEmbed.cxx:816
 AliAnalysisTaskHJetEmbed.cxx:817
 AliAnalysisTaskHJetEmbed.cxx:818
 AliAnalysisTaskHJetEmbed.cxx:819
 AliAnalysisTaskHJetEmbed.cxx:820
 AliAnalysisTaskHJetEmbed.cxx:821
 AliAnalysisTaskHJetEmbed.cxx:822
 AliAnalysisTaskHJetEmbed.cxx:823
 AliAnalysisTaskHJetEmbed.cxx:824
 AliAnalysisTaskHJetEmbed.cxx:825
 AliAnalysisTaskHJetEmbed.cxx:826
 AliAnalysisTaskHJetEmbed.cxx:827
 AliAnalysisTaskHJetEmbed.cxx:828
 AliAnalysisTaskHJetEmbed.cxx:829
 AliAnalysisTaskHJetEmbed.cxx:830
 AliAnalysisTaskHJetEmbed.cxx:831
 AliAnalysisTaskHJetEmbed.cxx:832
 AliAnalysisTaskHJetEmbed.cxx:833
 AliAnalysisTaskHJetEmbed.cxx:834
 AliAnalysisTaskHJetEmbed.cxx:835
 AliAnalysisTaskHJetEmbed.cxx:836
 AliAnalysisTaskHJetEmbed.cxx:837
 AliAnalysisTaskHJetEmbed.cxx:838
 AliAnalysisTaskHJetEmbed.cxx:839
 AliAnalysisTaskHJetEmbed.cxx:840
 AliAnalysisTaskHJetEmbed.cxx:841
 AliAnalysisTaskHJetEmbed.cxx:842
 AliAnalysisTaskHJetEmbed.cxx:843
 AliAnalysisTaskHJetEmbed.cxx:844
 AliAnalysisTaskHJetEmbed.cxx:845
 AliAnalysisTaskHJetEmbed.cxx:846
 AliAnalysisTaskHJetEmbed.cxx:847
 AliAnalysisTaskHJetEmbed.cxx:848
 AliAnalysisTaskHJetEmbed.cxx:849
 AliAnalysisTaskHJetEmbed.cxx:850
 AliAnalysisTaskHJetEmbed.cxx:851
 AliAnalysisTaskHJetEmbed.cxx:852
 AliAnalysisTaskHJetEmbed.cxx:853
 AliAnalysisTaskHJetEmbed.cxx:854
 AliAnalysisTaskHJetEmbed.cxx:855
 AliAnalysisTaskHJetEmbed.cxx:856
 AliAnalysisTaskHJetEmbed.cxx:857
 AliAnalysisTaskHJetEmbed.cxx:858
 AliAnalysisTaskHJetEmbed.cxx:859
 AliAnalysisTaskHJetEmbed.cxx:860
 AliAnalysisTaskHJetEmbed.cxx:861
 AliAnalysisTaskHJetEmbed.cxx:862
 AliAnalysisTaskHJetEmbed.cxx:863
 AliAnalysisTaskHJetEmbed.cxx:864
 AliAnalysisTaskHJetEmbed.cxx:865
 AliAnalysisTaskHJetEmbed.cxx:866
 AliAnalysisTaskHJetEmbed.cxx:867
 AliAnalysisTaskHJetEmbed.cxx:868
 AliAnalysisTaskHJetEmbed.cxx:869
 AliAnalysisTaskHJetEmbed.cxx:870
 AliAnalysisTaskHJetEmbed.cxx:871