ROOT logo
//
// Do subtraction for jet shapes using constituents arXiv:1403.3108
//
// Author: M.Verweij

#include <TClonesArray.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TH3F.h>
#include <THnSparse.h>
#include <TF1.h>
#include <TList.h>
#include <TLorentzVector.h>
#include <TProfile.h>
#include <TChain.h>
#include <TSystem.h>
#include <TFile.h>
#include <TKey.h>
#include <TTree.h>

#include "AliVCluster.h"
#include "AliVTrack.h"
#include "AliEmcalJet.h"
#include "AliRhoParameter.h"
#include "AliLog.h"
#include "AliEmcalParticle.h"
#include "AliMCEvent.h"
#include "AliAODEvent.h"
#include "AliGenPythiaEventHeader.h"
#include "AliAODMCHeader.h"
#include "AliAnalysisManager.h"
#include "AliJetContainer.h"
#include "AliParticleContainer.h"

#include "AliAnalysisTaskJetShapeConst.h"

ClassImp(AliAnalysisTaskJetShapeConst)

//________________________________________________________________________
AliAnalysisTaskJetShapeConst::AliAnalysisTaskJetShapeConst() : 
  AliAnalysisTaskEmcalJet("AliAnalysisTaskJetShapeConst", kTRUE),
  fContainerBase(0),
  fContainerSub(1),
  fContainerNoEmb(2),
  fMinFractionShared(0),
  fSingleTrackEmb(kFALSE),
  fCreateTree(kFALSE),
  fJetMassVarType(kMass),
  fUseSumw2(0),
  fTreeJetBkg(),
  fJet1Vec(new TLorentzVector()),
  fJet2Vec(new TLorentzVector()),
  fJetSubVec(new TLorentzVector()),
  fArea(0),
  fAreaPhi(0),
  fAreaEta(0),
  fRho(0),
  fRhoM(0),
  fNConst(0),
  fMatch(0),
  fh2MSubMatch(0x0),
  fh2MSubPtRawAll(0x0),
  fh3MSubPtRawDRMatch(0x0),
  fh3MSubPtTrueDR(0x0),
  fh3MTruePtTrueDR(0x0),
  fh3PtTrueDeltaMDR(0x0),
  fh3PtTrueDeltaMRelDR(0x0),
  fhnMassResponse(0x0)
{
  // Default constructor.

  fh2MSubMatch         = new TH2F*[fNcentBins];
  fh2MSubPtRawAll      = new TH2F*[fNcentBins];
  fh3MSubPtRawDRMatch  = new TH3F*[fNcentBins];
  fh3MSubPtTrueDR      = new TH3F*[fNcentBins];
  fh3MTruePtTrueDR     = new TH3F*[fNcentBins];
  fh3PtTrueDeltaMDR    = new TH3F*[fNcentBins];
  fh3PtTrueDeltaMRelDR = new TH3F*[fNcentBins];
  fhnMassResponse      = new THnSparse*[fNcentBins];

  for (Int_t i = 0; i < fNcentBins; i++) {
    fh2MSubMatch[i]         = 0;
    fh2MSubPtRawAll[i]      = 0;
    fh3MSubPtRawDRMatch[i]  = 0;
    fh3MSubPtTrueDR[i]      = 0;
    fh3MTruePtTrueDR[i]     = 0;
    fh3PtTrueDeltaMDR[i]    = 0;
    fh3PtTrueDeltaMRelDR[i] = 0;
    fhnMassResponse[i]      = 0;
  }

  SetMakeGeneralHistograms(kTRUE);
  if(fCreateTree) DefineOutput(2, TTree::Class());
}

//________________________________________________________________________
AliAnalysisTaskJetShapeConst::AliAnalysisTaskJetShapeConst(const char *name) : 
  AliAnalysisTaskEmcalJet(name, kTRUE),  
  fContainerBase(0),
  fContainerSub(1),
  fContainerNoEmb(2),
  fMinFractionShared(0),
  fSingleTrackEmb(kFALSE),
  fCreateTree(kFALSE),
  fJetMassVarType(kMass),
  fUseSumw2(0),
  fTreeJetBkg(0),
  fJet1Vec(new TLorentzVector()),
  fJet2Vec(new TLorentzVector()),
  fJetSubVec(new TLorentzVector()),
  fArea(0),
  fAreaPhi(0),
  fAreaEta(0),
  fRho(0),
  fRhoM(0),
  fNConst(0),
  fMatch(0),
  fh2MSubMatch(0x0),
  fh2MSubPtRawAll(0x0),
  fh3MSubPtRawDRMatch(0x0),
  fh3MSubPtTrueDR(0x0),
  fh3MTruePtTrueDR(0x0),
  fh3PtTrueDeltaMDR(0x0),
  fh3PtTrueDeltaMRelDR(0x0),
  fhnMassResponse(0x0)
{
  // Standard constructor.

  fh2MSubMatch         = new TH2F*[fNcentBins];
  fh2MSubPtRawAll      = new TH2F*[fNcentBins];
  fh3MSubPtRawDRMatch  = new TH3F*[fNcentBins];
  fh3MSubPtTrueDR      = new TH3F*[fNcentBins];
  fh3MTruePtTrueDR     = new TH3F*[fNcentBins];
  fh3PtTrueDeltaMDR    = new TH3F*[fNcentBins];
  fh3PtTrueDeltaMRelDR = new TH3F*[fNcentBins];
  fhnMassResponse      = new THnSparse*[fNcentBins];

  for (Int_t i = 0; i < fNcentBins; i++) {
    fh2MSubMatch[i]         = 0;
    fh2MSubPtRawAll[i]      = 0;
    fh3MSubPtRawDRMatch[i]  = 0;
    fh3MSubPtTrueDR[i]      = 0;
    fh3MTruePtTrueDR[i]     = 0;
    fh3PtTrueDeltaMDR[i]    = 0;
    fh3PtTrueDeltaMRelDR[i] = 0;
    fhnMassResponse[i]      = 0;
  }

  SetMakeGeneralHistograms(kTRUE);
  if(fCreateTree) DefineOutput(2, TTree::Class());
}

//________________________________________________________________________
AliAnalysisTaskJetShapeConst::~AliAnalysisTaskJetShapeConst()
{
  // Destructor.
}

//________________________________________________________________________
void AliAnalysisTaskJetShapeConst::UserCreateOutputObjects()
{
  // Create user output.

  AliAnalysisTaskEmcalJet::UserCreateOutputObjects();

  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);

  const Int_t nBinsPt  = 200;
  const Double_t minPt = -50.;
  const Double_t maxPt = 150.;

  Int_t nBinsM  = 100;
  Double_t minM = -20.;
  Double_t maxM = 80.;
  if(fJetMassVarType==kRatMPt) {
    nBinsM = 100;
    minM   = -0.2;
    maxM   = 0.8;
  }

  Int_t nBinsDM  = 100;
  Double_t minDM = -25.;
  Double_t maxDM = 25.;
  if(fJetMassVarType==kRatMPt) {
    nBinsDM = 100;
    minDM   = -0.5;
    maxDM   = 0.5;
  }

  const Int_t nBinsDRToLJ  = 20; //distance to leading jet in Pb-Pb only event
  const Double_t minDRToLJ = 0.;
  const Double_t maxDRToLJ = 1.;

  //Binning for THnSparse
  const Int_t nBinsSparse0 = 5;
  const Int_t nBins0[nBinsSparse0] = {nBinsM,nBinsM,nBinsPt,nBinsPt,nBinsDRToLJ};
  const Double_t xmin0[nBinsSparse0]  = { minM, minM, minPt, minPt, minDRToLJ};
  const Double_t xmax0[nBinsSparse0]  = { maxM, maxM, maxPt, maxPt, maxDRToLJ};

  TString histName = "";
  TString histTitle = "";
  TString varName = "#it{M}_{jet}";
  if(fJetMassVarType==kRatMPt) varName = "#it{M}_{jet}/#it{p}_{T,jet}";

  for (Int_t i = 0; i < fNcentBins; i++) {
    histName = Form("fh2MSubMatch_%d",i);
    histTitle = Form("fh2MSubMatch_%d;%s;match",i,varName.Data());
    fh2MSubMatch[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsM,minM,maxM,2,-0.5,1.5);
    fOutput->Add(fh2MSubMatch[i]);

    histName = Form("fh2MSubPtRawAll_%d",i);
    histTitle = Form("fh2MSubPtRawAll_%d;%s;#it{p}_{T}",i,varName.Data());
    fh2MSubPtRawAll[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsM,minM,maxM,nBinsPt,minPt,maxPt);
    fOutput->Add(fh2MSubPtRawAll[i]);

    histName = Form("fh3MSubPtRawDRMatch_%d",i);
    histTitle = Form("fh3MSubPtRawDRMatch_%d;%s;#it{p}_{T}",i,varName.Data());
    fh3MSubPtRawDRMatch[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsM,minM,maxM,nBinsPt,minPt,maxPt,nBinsDRToLJ,minDRToLJ,maxDRToLJ);
    fOutput->Add(fh3MSubPtRawDRMatch[i]);

    histName = Form("fh3MSubPtTrueDR_%d",i);
    histTitle = Form("fh3MSubPtTrueDR_%d;%s;#it{p}_{T}",i,varName.Data());
    fh3MSubPtTrueDR[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsM,minM,maxM,nBinsPt,minPt,maxPt,nBinsDRToLJ,minDRToLJ,maxDRToLJ);
    fOutput->Add(fh3MSubPtTrueDR[i]);

    histName = Form("fh3MTruePtTrueDR_%d",i);
    histTitle = Form("fh3MTruePtTrueDR_%d;%s;#it{p}_{T}",i,varName.Data());
    fh3MTruePtTrueDR[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsM,minM,maxM,nBinsPt,minPt,maxPt,nBinsDRToLJ,minDRToLJ,maxDRToLJ);
    fOutput->Add(fh3MTruePtTrueDR[i]);

    histName = Form("fh3PtTrueDeltaMDR_%d",i);
    histTitle = Form("fh3PtTrueDeltaMDR_%d;#it{p}_{T,true};#Delta %s",i,varName.Data());
    fh3PtTrueDeltaMDR[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsDM,minDM,maxDM,nBinsDRToLJ,minDRToLJ,maxDRToLJ);
    fOutput->Add(fh3PtTrueDeltaMDR[i]);

    histName = Form("fh3PtTrueDeltaMRelDR_%d",i);
    histTitle = Form("fh3PtTrueDeltaMRelDR_%d;#it{p}_{T,true};Rel #Delta %s",i,varName.Data());
    fh3PtTrueDeltaMRelDR[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,400,-1.,3.,nBinsDRToLJ,minDRToLJ,maxDRToLJ);
    fOutput->Add(fh3PtTrueDeltaMRelDR[i]);

    histName = Form("fhnMassResponse_%d",i);
    histTitle = Form("fhnMassResponse_%d;%s sub;%s true;#it{p}_{T,sub};#it{p}_{T,true};#Delta R_{LJ}",i,varName.Data(),varName.Data());
    fhnMassResponse[i] = new THnSparseF(histName.Data(),histTitle.Data(),nBinsSparse0,nBins0,xmin0,xmax0);
    fOutput->Add(fhnMassResponse[i]);
  }

  if(fUseSumw2) {
    // =========== Switch on Sumw2 for all histos ===========
    for (Int_t i=0; i<fOutput->GetEntries(); ++i) {
      TH1 *h1 = dynamic_cast<TH1*>(fOutput->At(i));
      if (h1){
	h1->Sumw2();
	continue;
      }
      THnSparse *hn = dynamic_cast<THnSparse*>(fOutput->At(i));
      if(hn)hn->Sumw2();
    }
  }

  TH1::AddDirectory(oldStatus);

  // Create a tree.
  if(fCreateTree) {
    fTreeJetBkg = new TTree("fTreeJetSubConst", "fTreeJetSubConst");
    fTreeJetBkg->Branch("fJet1Vec","TLorentzVector",&fJet1Vec);
    fTreeJetBkg->Branch("fJet2Vec","TLorentzVector",&fJet2Vec);
    fTreeJetBkg->Branch("fJetSubVec","TLorentzVector",&fJetSubVec);
    fTreeJetBkg->Branch("fArea",&fArea,"fArea/F");
    fTreeJetBkg->Branch("fAreaPhi",&fAreaPhi,"fAreaPhi/F");
    fTreeJetBkg->Branch("fAreaEta",&fAreaEta,"fAreaEta/F");
    fTreeJetBkg->Branch("fRho",&fRho,"fRho/F");
    fTreeJetBkg->Branch("fRhoM",&fRhoM,"fRhoM/F");
    fTreeJetBkg->Branch("fMatch",&fMatch,"fMatch/I");
  }
  
  PostData(1, fOutput); // Post data for ALL output slots > 0 here.
  if(fCreateTree) PostData(2, fTreeJetBkg);
}

//________________________________________________________________________
Bool_t AliAnalysisTaskJetShapeConst::Run()
{
  // Run analysis code here, if needed. It will be executed before FillHistograms().

  return kTRUE;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskJetShapeConst::FillHistograms()
{
  // Fill histograms.

  AliEmcalJet* jet1  = NULL; //AA jet
  AliEmcalJet *jet2  = NULL; //Embedded Pythia jet
  //  AliEmcalJet *jet1T = NULL; //tagged AA jet
  //  AliEmcalJet *jet2T = NULL; //tagged Pythia jet
  AliEmcalJet *jetS = NULL;  //subtracted jet
  AliJetContainer *jetCont = GetJetContainer(fContainerBase);
  AliJetContainer *jetContS = GetJetContainer(fContainerSub);

  //Get leading jet in Pb-Pb event without embedded objects
  AliJetContainer *jetContNoEmb = GetJetContainer(fContainerNoEmb);
  AliEmcalJet *jetL = NULL;
  if(jetContNoEmb) jetL = jetContNoEmb->GetLeadingJet("rho");

  AliDebug(11,Form("NJets  Incl: %d  Csub: %d",jetCont->GetNJets(),jetContS->GetNJets()));
  if(jetCont) {
    jetCont->ResetCurrentID();
    while((jet1 = jetCont->GetNextAcceptJet())) {
      jet2  = NULL;
      jetS  = NULL;
      
      //Get constituent subtacted version of jet
      Int_t ifound = 0;
      Int_t ilab = -1;
      for(Int_t i = 0; i<jetContS->GetNJets(); i++) {
	//if(ifound==1) continue;
	jetS = jetContS->GetJet(i);
	if(jetS->GetLabel()==jet1->GetLabel()) { // && jetS->Pt()>0.) {
	  ifound++;
	  if(ifound==1) ilab = i;
	}
      }
      if(ifound>1) AliDebug(2,Form("Found %d partners",ifound));
      if(ifound==0) jetS = 0x0;
      else jetS = jetContS->GetJet(ilab);

      Double_t mjetS = jetS->M();
      Double_t ptjet1 = jet1->Pt()-jetCont->GetRhoVal()*jet1->Area();
      Double_t var = mjetS;
      if(fJetMassVarType==kRatMPt) {
	if(ptjet1>0. || ptjet1<0.) var = mjetS/ptjet1;
	else var = -999.;
      }

      //Fill histograms for all AA jets
      fh2MSubPtRawAll[fCentBin]->Fill(var,ptjet1);

      Double_t fraction = 0.;
      fMatch = 0;
      fJet2Vec->SetPtEtaPhiM(0.,0.,0.,0.);
      if(fSingleTrackEmb) {
	AliVParticle *vp = GetEmbeddedConstituent(jet1);
	if(vp) {
	  fJet2Vec->SetPxPyPzE(vp->Px(),vp->Py(),vp->Pz(),vp->E());
	  fMatch = 1;
	}
      } else {
	jet2 = jet1->ClosestJet();
	fraction = jetCont->GetFractionSharedPt(jet1);
	fMatch = 1;
	if(fMinFractionShared>0.) {
	  if(fraction>fMinFractionShared) {
	    fJet2Vec->SetPxPyPzE(jet2->Px(),jet2->Py(),jet2->Pz(),jet2->E());
	    fMatch = 1;
	  } else
	    fMatch = 0;
	}
      }

      //      if(fMatch==1 && jet2->GetTagStatus()>0) jet2T = jet2->GetTaggedJet();

      //Fill histograms for matched jets
      fh2MSubMatch[fCentBin]->Fill(var,fMatch);
      if(fMatch==1) {
	Double_t drToLJ = -1.;
	if(jetL) drToLJ = jet1->DeltaR(jetL);
	fh3MSubPtRawDRMatch[fCentBin]->Fill(var,ptjet1,drToLJ);
	if(jet2) {
	  Double_t var2 = jet2->M();
	  if(fJetMassVarType==kRatMPt) {
	    if(jet2->Pt()>0. || jet2->Pt()<0.) var2 = jet2->M()/jet2->Pt();
	  }
	  fh3MSubPtTrueDR[fCentBin]->Fill(var,jet2->Pt(),drToLJ);
	  fh3MTruePtTrueDR[fCentBin]->Fill(var2,jet2->Pt(),drToLJ);
	  fh3PtTrueDeltaMDR[fCentBin]->Fill(jet2->Pt(),var-var2,drToLJ);
	  if(jet2->M()>0.) fh3PtTrueDeltaMRelDR[fCentBin]->Fill(jet2->Pt(),(var-var2)/var2,drToLJ);
	  Double_t varsp[5] = {var,var2,ptjet1,jet2->Pt(),drToLJ};
	  fhnMassResponse[fCentBin]->Fill(varsp);
	}
      }
      
      if(fCreateTree) {      
	fJet1Vec->SetPxPyPzE(jet1->Px(),jet1->Py(),jet1->Pz(),jet1->E());
	if(jetS && jetS->Pt()>0.) fJetSubVec->SetPtEtaPhiM(jetS->Pt(),jetS->Eta(),jetS->Phi(),jetS->M());
	else fJetSubVec->SetPtEtaPhiM(0.,0.,0.,0.);
	fArea = (Float_t)jet1->Area();
	fAreaPhi = (Float_t)jet1->AreaPhi();
	fAreaEta = (Float_t)jet1->AreaEta();
	fRho  = (Float_t)jetCont->GetRhoVal();
	fRhoM = (Float_t)jetCont->GetRhoMassVal();
	fNConst = (Int_t)jet1->GetNumberOfTracks();
	fTreeJetBkg->Fill();
      }
    } //jet1 loop
  }//jetCont


  return kTRUE;
}

//________________________________________________________________________
AliVParticle* AliAnalysisTaskJetShapeConst::GetEmbeddedConstituent(AliEmcalJet *jet) {

  AliJetContainer *jetCont = GetJetContainer(fContainerBase);
  AliVParticle *vp = 0x0;
  AliVParticle *vpe = 0x0; //embedded particle
  Int_t nc = 0;
  for(Int_t i=0; i<jet->GetNumberOfTracks(); i++) {
    vp = static_cast<AliVParticle*>(jet->TrackAt(i, jetCont->GetParticleContainer()->GetArray())); //check if fTracks is the correct track branch
    if (vp->TestBits(TObject::kBitMask) != (Int_t)(TObject::kBitMask) ) continue;
    if(!vpe) vpe = vp;
    else if(vp->Pt()>vpe->Pt()) vpe = vp;
    nc++;
  }
  AliDebug(11,Form("Found %d embedded particles",nc));
  return vpe;
}


//________________________________________________________________________
Bool_t AliAnalysisTaskJetShapeConst::RetrieveEventObjects() {
  //
  // retrieve event objects
  //

  if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects())
    return kFALSE;

  AliJetContainer *jetCont = GetJetContainer(fContainerBase);
  jetCont->LoadRhoMass(InputEvent());

  return kTRUE;
}

//_______________________________________________________________________
void AliAnalysisTaskJetShapeConst::Terminate(Option_t *) 
{
  // Called once at the end of the analysis.
}

 AliAnalysisTaskJetShapeConst.cxx:1
 AliAnalysisTaskJetShapeConst.cxx:2
 AliAnalysisTaskJetShapeConst.cxx:3
 AliAnalysisTaskJetShapeConst.cxx:4
 AliAnalysisTaskJetShapeConst.cxx:5
 AliAnalysisTaskJetShapeConst.cxx:6
 AliAnalysisTaskJetShapeConst.cxx:7
 AliAnalysisTaskJetShapeConst.cxx:8
 AliAnalysisTaskJetShapeConst.cxx:9
 AliAnalysisTaskJetShapeConst.cxx:10
 AliAnalysisTaskJetShapeConst.cxx:11
 AliAnalysisTaskJetShapeConst.cxx:12
 AliAnalysisTaskJetShapeConst.cxx:13
 AliAnalysisTaskJetShapeConst.cxx:14
 AliAnalysisTaskJetShapeConst.cxx:15
 AliAnalysisTaskJetShapeConst.cxx:16
 AliAnalysisTaskJetShapeConst.cxx:17
 AliAnalysisTaskJetShapeConst.cxx:18
 AliAnalysisTaskJetShapeConst.cxx:19
 AliAnalysisTaskJetShapeConst.cxx:20
 AliAnalysisTaskJetShapeConst.cxx:21
 AliAnalysisTaskJetShapeConst.cxx:22
 AliAnalysisTaskJetShapeConst.cxx:23
 AliAnalysisTaskJetShapeConst.cxx:24
 AliAnalysisTaskJetShapeConst.cxx:25
 AliAnalysisTaskJetShapeConst.cxx:26
 AliAnalysisTaskJetShapeConst.cxx:27
 AliAnalysisTaskJetShapeConst.cxx:28
 AliAnalysisTaskJetShapeConst.cxx:29
 AliAnalysisTaskJetShapeConst.cxx:30
 AliAnalysisTaskJetShapeConst.cxx:31
 AliAnalysisTaskJetShapeConst.cxx:32
 AliAnalysisTaskJetShapeConst.cxx:33
 AliAnalysisTaskJetShapeConst.cxx:34
 AliAnalysisTaskJetShapeConst.cxx:35
 AliAnalysisTaskJetShapeConst.cxx:36
 AliAnalysisTaskJetShapeConst.cxx:37
 AliAnalysisTaskJetShapeConst.cxx:38
 AliAnalysisTaskJetShapeConst.cxx:39
 AliAnalysisTaskJetShapeConst.cxx:40
 AliAnalysisTaskJetShapeConst.cxx:41
 AliAnalysisTaskJetShapeConst.cxx:42
 AliAnalysisTaskJetShapeConst.cxx:43
 AliAnalysisTaskJetShapeConst.cxx:44
 AliAnalysisTaskJetShapeConst.cxx:45
 AliAnalysisTaskJetShapeConst.cxx:46
 AliAnalysisTaskJetShapeConst.cxx:47
 AliAnalysisTaskJetShapeConst.cxx:48
 AliAnalysisTaskJetShapeConst.cxx:49
 AliAnalysisTaskJetShapeConst.cxx:50
 AliAnalysisTaskJetShapeConst.cxx:51
 AliAnalysisTaskJetShapeConst.cxx:52
 AliAnalysisTaskJetShapeConst.cxx:53
 AliAnalysisTaskJetShapeConst.cxx:54
 AliAnalysisTaskJetShapeConst.cxx:55
 AliAnalysisTaskJetShapeConst.cxx:56
 AliAnalysisTaskJetShapeConst.cxx:57
 AliAnalysisTaskJetShapeConst.cxx:58
 AliAnalysisTaskJetShapeConst.cxx:59
 AliAnalysisTaskJetShapeConst.cxx:60
 AliAnalysisTaskJetShapeConst.cxx:61
 AliAnalysisTaskJetShapeConst.cxx:62
 AliAnalysisTaskJetShapeConst.cxx:63
 AliAnalysisTaskJetShapeConst.cxx:64
 AliAnalysisTaskJetShapeConst.cxx:65
 AliAnalysisTaskJetShapeConst.cxx:66
 AliAnalysisTaskJetShapeConst.cxx:67
 AliAnalysisTaskJetShapeConst.cxx:68
 AliAnalysisTaskJetShapeConst.cxx:69
 AliAnalysisTaskJetShapeConst.cxx:70
 AliAnalysisTaskJetShapeConst.cxx:71
 AliAnalysisTaskJetShapeConst.cxx:72
 AliAnalysisTaskJetShapeConst.cxx:73
 AliAnalysisTaskJetShapeConst.cxx:74
 AliAnalysisTaskJetShapeConst.cxx:75
 AliAnalysisTaskJetShapeConst.cxx:76
 AliAnalysisTaskJetShapeConst.cxx:77
 AliAnalysisTaskJetShapeConst.cxx:78
 AliAnalysisTaskJetShapeConst.cxx:79
 AliAnalysisTaskJetShapeConst.cxx:80
 AliAnalysisTaskJetShapeConst.cxx:81
 AliAnalysisTaskJetShapeConst.cxx:82
 AliAnalysisTaskJetShapeConst.cxx:83
 AliAnalysisTaskJetShapeConst.cxx:84
 AliAnalysisTaskJetShapeConst.cxx:85
 AliAnalysisTaskJetShapeConst.cxx:86
 AliAnalysisTaskJetShapeConst.cxx:87
 AliAnalysisTaskJetShapeConst.cxx:88
 AliAnalysisTaskJetShapeConst.cxx:89
 AliAnalysisTaskJetShapeConst.cxx:90
 AliAnalysisTaskJetShapeConst.cxx:91
 AliAnalysisTaskJetShapeConst.cxx:92
 AliAnalysisTaskJetShapeConst.cxx:93
 AliAnalysisTaskJetShapeConst.cxx:94
 AliAnalysisTaskJetShapeConst.cxx:95
 AliAnalysisTaskJetShapeConst.cxx:96
 AliAnalysisTaskJetShapeConst.cxx:97
 AliAnalysisTaskJetShapeConst.cxx:98
 AliAnalysisTaskJetShapeConst.cxx:99
 AliAnalysisTaskJetShapeConst.cxx:100
 AliAnalysisTaskJetShapeConst.cxx:101
 AliAnalysisTaskJetShapeConst.cxx:102
 AliAnalysisTaskJetShapeConst.cxx:103
 AliAnalysisTaskJetShapeConst.cxx:104
 AliAnalysisTaskJetShapeConst.cxx:105
 AliAnalysisTaskJetShapeConst.cxx:106
 AliAnalysisTaskJetShapeConst.cxx:107
 AliAnalysisTaskJetShapeConst.cxx:108
 AliAnalysisTaskJetShapeConst.cxx:109
 AliAnalysisTaskJetShapeConst.cxx:110
 AliAnalysisTaskJetShapeConst.cxx:111
 AliAnalysisTaskJetShapeConst.cxx:112
 AliAnalysisTaskJetShapeConst.cxx:113
 AliAnalysisTaskJetShapeConst.cxx:114
 AliAnalysisTaskJetShapeConst.cxx:115
 AliAnalysisTaskJetShapeConst.cxx:116
 AliAnalysisTaskJetShapeConst.cxx:117
 AliAnalysisTaskJetShapeConst.cxx:118
 AliAnalysisTaskJetShapeConst.cxx:119
 AliAnalysisTaskJetShapeConst.cxx:120
 AliAnalysisTaskJetShapeConst.cxx:121
 AliAnalysisTaskJetShapeConst.cxx:122
 AliAnalysisTaskJetShapeConst.cxx:123
 AliAnalysisTaskJetShapeConst.cxx:124
 AliAnalysisTaskJetShapeConst.cxx:125
 AliAnalysisTaskJetShapeConst.cxx:126
 AliAnalysisTaskJetShapeConst.cxx:127
 AliAnalysisTaskJetShapeConst.cxx:128
 AliAnalysisTaskJetShapeConst.cxx:129
 AliAnalysisTaskJetShapeConst.cxx:130
 AliAnalysisTaskJetShapeConst.cxx:131
 AliAnalysisTaskJetShapeConst.cxx:132
 AliAnalysisTaskJetShapeConst.cxx:133
 AliAnalysisTaskJetShapeConst.cxx:134
 AliAnalysisTaskJetShapeConst.cxx:135
 AliAnalysisTaskJetShapeConst.cxx:136
 AliAnalysisTaskJetShapeConst.cxx:137
 AliAnalysisTaskJetShapeConst.cxx:138
 AliAnalysisTaskJetShapeConst.cxx:139
 AliAnalysisTaskJetShapeConst.cxx:140
 AliAnalysisTaskJetShapeConst.cxx:141
 AliAnalysisTaskJetShapeConst.cxx:142
 AliAnalysisTaskJetShapeConst.cxx:143
 AliAnalysisTaskJetShapeConst.cxx:144
 AliAnalysisTaskJetShapeConst.cxx:145
 AliAnalysisTaskJetShapeConst.cxx:146
 AliAnalysisTaskJetShapeConst.cxx:147
 AliAnalysisTaskJetShapeConst.cxx:148
 AliAnalysisTaskJetShapeConst.cxx:149
 AliAnalysisTaskJetShapeConst.cxx:150
 AliAnalysisTaskJetShapeConst.cxx:151
 AliAnalysisTaskJetShapeConst.cxx:152
 AliAnalysisTaskJetShapeConst.cxx:153
 AliAnalysisTaskJetShapeConst.cxx:154
 AliAnalysisTaskJetShapeConst.cxx:155
 AliAnalysisTaskJetShapeConst.cxx:156
 AliAnalysisTaskJetShapeConst.cxx:157
 AliAnalysisTaskJetShapeConst.cxx:158
 AliAnalysisTaskJetShapeConst.cxx:159
 AliAnalysisTaskJetShapeConst.cxx:160
 AliAnalysisTaskJetShapeConst.cxx:161
 AliAnalysisTaskJetShapeConst.cxx:162
 AliAnalysisTaskJetShapeConst.cxx:163
 AliAnalysisTaskJetShapeConst.cxx:164
 AliAnalysisTaskJetShapeConst.cxx:165
 AliAnalysisTaskJetShapeConst.cxx:166
 AliAnalysisTaskJetShapeConst.cxx:167
 AliAnalysisTaskJetShapeConst.cxx:168
 AliAnalysisTaskJetShapeConst.cxx:169
 AliAnalysisTaskJetShapeConst.cxx:170
 AliAnalysisTaskJetShapeConst.cxx:171
 AliAnalysisTaskJetShapeConst.cxx:172
 AliAnalysisTaskJetShapeConst.cxx:173
 AliAnalysisTaskJetShapeConst.cxx:174
 AliAnalysisTaskJetShapeConst.cxx:175
 AliAnalysisTaskJetShapeConst.cxx:176
 AliAnalysisTaskJetShapeConst.cxx:177
 AliAnalysisTaskJetShapeConst.cxx:178
 AliAnalysisTaskJetShapeConst.cxx:179
 AliAnalysisTaskJetShapeConst.cxx:180
 AliAnalysisTaskJetShapeConst.cxx:181
 AliAnalysisTaskJetShapeConst.cxx:182
 AliAnalysisTaskJetShapeConst.cxx:183
 AliAnalysisTaskJetShapeConst.cxx:184
 AliAnalysisTaskJetShapeConst.cxx:185
 AliAnalysisTaskJetShapeConst.cxx:186
 AliAnalysisTaskJetShapeConst.cxx:187
 AliAnalysisTaskJetShapeConst.cxx:188
 AliAnalysisTaskJetShapeConst.cxx:189
 AliAnalysisTaskJetShapeConst.cxx:190
 AliAnalysisTaskJetShapeConst.cxx:191
 AliAnalysisTaskJetShapeConst.cxx:192
 AliAnalysisTaskJetShapeConst.cxx:193
 AliAnalysisTaskJetShapeConst.cxx:194
 AliAnalysisTaskJetShapeConst.cxx:195
 AliAnalysisTaskJetShapeConst.cxx:196
 AliAnalysisTaskJetShapeConst.cxx:197
 AliAnalysisTaskJetShapeConst.cxx:198
 AliAnalysisTaskJetShapeConst.cxx:199
 AliAnalysisTaskJetShapeConst.cxx:200
 AliAnalysisTaskJetShapeConst.cxx:201
 AliAnalysisTaskJetShapeConst.cxx:202
 AliAnalysisTaskJetShapeConst.cxx:203
 AliAnalysisTaskJetShapeConst.cxx:204
 AliAnalysisTaskJetShapeConst.cxx:205
 AliAnalysisTaskJetShapeConst.cxx:206
 AliAnalysisTaskJetShapeConst.cxx:207
 AliAnalysisTaskJetShapeConst.cxx:208
 AliAnalysisTaskJetShapeConst.cxx:209
 AliAnalysisTaskJetShapeConst.cxx:210
 AliAnalysisTaskJetShapeConst.cxx:211
 AliAnalysisTaskJetShapeConst.cxx:212
 AliAnalysisTaskJetShapeConst.cxx:213
 AliAnalysisTaskJetShapeConst.cxx:214
 AliAnalysisTaskJetShapeConst.cxx:215
 AliAnalysisTaskJetShapeConst.cxx:216
 AliAnalysisTaskJetShapeConst.cxx:217
 AliAnalysisTaskJetShapeConst.cxx:218
 AliAnalysisTaskJetShapeConst.cxx:219
 AliAnalysisTaskJetShapeConst.cxx:220
 AliAnalysisTaskJetShapeConst.cxx:221
 AliAnalysisTaskJetShapeConst.cxx:222
 AliAnalysisTaskJetShapeConst.cxx:223
 AliAnalysisTaskJetShapeConst.cxx:224
 AliAnalysisTaskJetShapeConst.cxx:225
 AliAnalysisTaskJetShapeConst.cxx:226
 AliAnalysisTaskJetShapeConst.cxx:227
 AliAnalysisTaskJetShapeConst.cxx:228
 AliAnalysisTaskJetShapeConst.cxx:229
 AliAnalysisTaskJetShapeConst.cxx:230
 AliAnalysisTaskJetShapeConst.cxx:231
 AliAnalysisTaskJetShapeConst.cxx:232
 AliAnalysisTaskJetShapeConst.cxx:233
 AliAnalysisTaskJetShapeConst.cxx:234
 AliAnalysisTaskJetShapeConst.cxx:235
 AliAnalysisTaskJetShapeConst.cxx:236
 AliAnalysisTaskJetShapeConst.cxx:237
 AliAnalysisTaskJetShapeConst.cxx:238
 AliAnalysisTaskJetShapeConst.cxx:239
 AliAnalysisTaskJetShapeConst.cxx:240
 AliAnalysisTaskJetShapeConst.cxx:241
 AliAnalysisTaskJetShapeConst.cxx:242
 AliAnalysisTaskJetShapeConst.cxx:243
 AliAnalysisTaskJetShapeConst.cxx:244
 AliAnalysisTaskJetShapeConst.cxx:245
 AliAnalysisTaskJetShapeConst.cxx:246
 AliAnalysisTaskJetShapeConst.cxx:247
 AliAnalysisTaskJetShapeConst.cxx:248
 AliAnalysisTaskJetShapeConst.cxx:249
 AliAnalysisTaskJetShapeConst.cxx:250
 AliAnalysisTaskJetShapeConst.cxx:251
 AliAnalysisTaskJetShapeConst.cxx:252
 AliAnalysisTaskJetShapeConst.cxx:253
 AliAnalysisTaskJetShapeConst.cxx:254
 AliAnalysisTaskJetShapeConst.cxx:255
 AliAnalysisTaskJetShapeConst.cxx:256
 AliAnalysisTaskJetShapeConst.cxx:257
 AliAnalysisTaskJetShapeConst.cxx:258
 AliAnalysisTaskJetShapeConst.cxx:259
 AliAnalysisTaskJetShapeConst.cxx:260
 AliAnalysisTaskJetShapeConst.cxx:261
 AliAnalysisTaskJetShapeConst.cxx:262
 AliAnalysisTaskJetShapeConst.cxx:263
 AliAnalysisTaskJetShapeConst.cxx:264
 AliAnalysisTaskJetShapeConst.cxx:265
 AliAnalysisTaskJetShapeConst.cxx:266
 AliAnalysisTaskJetShapeConst.cxx:267
 AliAnalysisTaskJetShapeConst.cxx:268
 AliAnalysisTaskJetShapeConst.cxx:269
 AliAnalysisTaskJetShapeConst.cxx:270
 AliAnalysisTaskJetShapeConst.cxx:271
 AliAnalysisTaskJetShapeConst.cxx:272
 AliAnalysisTaskJetShapeConst.cxx:273
 AliAnalysisTaskJetShapeConst.cxx:274
 AliAnalysisTaskJetShapeConst.cxx:275
 AliAnalysisTaskJetShapeConst.cxx:276
 AliAnalysisTaskJetShapeConst.cxx:277
 AliAnalysisTaskJetShapeConst.cxx:278
 AliAnalysisTaskJetShapeConst.cxx:279
 AliAnalysisTaskJetShapeConst.cxx:280
 AliAnalysisTaskJetShapeConst.cxx:281
 AliAnalysisTaskJetShapeConst.cxx:282
 AliAnalysisTaskJetShapeConst.cxx:283
 AliAnalysisTaskJetShapeConst.cxx:284
 AliAnalysisTaskJetShapeConst.cxx:285
 AliAnalysisTaskJetShapeConst.cxx:286
 AliAnalysisTaskJetShapeConst.cxx:287
 AliAnalysisTaskJetShapeConst.cxx:288
 AliAnalysisTaskJetShapeConst.cxx:289
 AliAnalysisTaskJetShapeConst.cxx:290
 AliAnalysisTaskJetShapeConst.cxx:291
 AliAnalysisTaskJetShapeConst.cxx:292
 AliAnalysisTaskJetShapeConst.cxx:293
 AliAnalysisTaskJetShapeConst.cxx:294
 AliAnalysisTaskJetShapeConst.cxx:295
 AliAnalysisTaskJetShapeConst.cxx:296
 AliAnalysisTaskJetShapeConst.cxx:297
 AliAnalysisTaskJetShapeConst.cxx:298
 AliAnalysisTaskJetShapeConst.cxx:299
 AliAnalysisTaskJetShapeConst.cxx:300
 AliAnalysisTaskJetShapeConst.cxx:301
 AliAnalysisTaskJetShapeConst.cxx:302
 AliAnalysisTaskJetShapeConst.cxx:303
 AliAnalysisTaskJetShapeConst.cxx:304
 AliAnalysisTaskJetShapeConst.cxx:305
 AliAnalysisTaskJetShapeConst.cxx:306
 AliAnalysisTaskJetShapeConst.cxx:307
 AliAnalysisTaskJetShapeConst.cxx:308
 AliAnalysisTaskJetShapeConst.cxx:309
 AliAnalysisTaskJetShapeConst.cxx:310
 AliAnalysisTaskJetShapeConst.cxx:311
 AliAnalysisTaskJetShapeConst.cxx:312
 AliAnalysisTaskJetShapeConst.cxx:313
 AliAnalysisTaskJetShapeConst.cxx:314
 AliAnalysisTaskJetShapeConst.cxx:315
 AliAnalysisTaskJetShapeConst.cxx:316
 AliAnalysisTaskJetShapeConst.cxx:317
 AliAnalysisTaskJetShapeConst.cxx:318
 AliAnalysisTaskJetShapeConst.cxx:319
 AliAnalysisTaskJetShapeConst.cxx:320
 AliAnalysisTaskJetShapeConst.cxx:321
 AliAnalysisTaskJetShapeConst.cxx:322
 AliAnalysisTaskJetShapeConst.cxx:323
 AliAnalysisTaskJetShapeConst.cxx:324
 AliAnalysisTaskJetShapeConst.cxx:325
 AliAnalysisTaskJetShapeConst.cxx:326
 AliAnalysisTaskJetShapeConst.cxx:327
 AliAnalysisTaskJetShapeConst.cxx:328
 AliAnalysisTaskJetShapeConst.cxx:329
 AliAnalysisTaskJetShapeConst.cxx:330
 AliAnalysisTaskJetShapeConst.cxx:331
 AliAnalysisTaskJetShapeConst.cxx:332
 AliAnalysisTaskJetShapeConst.cxx:333
 AliAnalysisTaskJetShapeConst.cxx:334
 AliAnalysisTaskJetShapeConst.cxx:335
 AliAnalysisTaskJetShapeConst.cxx:336
 AliAnalysisTaskJetShapeConst.cxx:337
 AliAnalysisTaskJetShapeConst.cxx:338
 AliAnalysisTaskJetShapeConst.cxx:339
 AliAnalysisTaskJetShapeConst.cxx:340
 AliAnalysisTaskJetShapeConst.cxx:341
 AliAnalysisTaskJetShapeConst.cxx:342
 AliAnalysisTaskJetShapeConst.cxx:343
 AliAnalysisTaskJetShapeConst.cxx:344
 AliAnalysisTaskJetShapeConst.cxx:345
 AliAnalysisTaskJetShapeConst.cxx:346
 AliAnalysisTaskJetShapeConst.cxx:347
 AliAnalysisTaskJetShapeConst.cxx:348
 AliAnalysisTaskJetShapeConst.cxx:349
 AliAnalysisTaskJetShapeConst.cxx:350
 AliAnalysisTaskJetShapeConst.cxx:351
 AliAnalysisTaskJetShapeConst.cxx:352
 AliAnalysisTaskJetShapeConst.cxx:353
 AliAnalysisTaskJetShapeConst.cxx:354
 AliAnalysisTaskJetShapeConst.cxx:355
 AliAnalysisTaskJetShapeConst.cxx:356
 AliAnalysisTaskJetShapeConst.cxx:357
 AliAnalysisTaskJetShapeConst.cxx:358
 AliAnalysisTaskJetShapeConst.cxx:359
 AliAnalysisTaskJetShapeConst.cxx:360
 AliAnalysisTaskJetShapeConst.cxx:361
 AliAnalysisTaskJetShapeConst.cxx:362
 AliAnalysisTaskJetShapeConst.cxx:363
 AliAnalysisTaskJetShapeConst.cxx:364
 AliAnalysisTaskJetShapeConst.cxx:365
 AliAnalysisTaskJetShapeConst.cxx:366
 AliAnalysisTaskJetShapeConst.cxx:367
 AliAnalysisTaskJetShapeConst.cxx:368
 AliAnalysisTaskJetShapeConst.cxx:369
 AliAnalysisTaskJetShapeConst.cxx:370
 AliAnalysisTaskJetShapeConst.cxx:371
 AliAnalysisTaskJetShapeConst.cxx:372
 AliAnalysisTaskJetShapeConst.cxx:373
 AliAnalysisTaskJetShapeConst.cxx:374
 AliAnalysisTaskJetShapeConst.cxx:375
 AliAnalysisTaskJetShapeConst.cxx:376
 AliAnalysisTaskJetShapeConst.cxx:377
 AliAnalysisTaskJetShapeConst.cxx:378
 AliAnalysisTaskJetShapeConst.cxx:379
 AliAnalysisTaskJetShapeConst.cxx:380
 AliAnalysisTaskJetShapeConst.cxx:381
 AliAnalysisTaskJetShapeConst.cxx:382
 AliAnalysisTaskJetShapeConst.cxx:383
 AliAnalysisTaskJetShapeConst.cxx:384
 AliAnalysisTaskJetShapeConst.cxx:385
 AliAnalysisTaskJetShapeConst.cxx:386
 AliAnalysisTaskJetShapeConst.cxx:387
 AliAnalysisTaskJetShapeConst.cxx:388
 AliAnalysisTaskJetShapeConst.cxx:389
 AliAnalysisTaskJetShapeConst.cxx:390
 AliAnalysisTaskJetShapeConst.cxx:391
 AliAnalysisTaskJetShapeConst.cxx:392
 AliAnalysisTaskJetShapeConst.cxx:393
 AliAnalysisTaskJetShapeConst.cxx:394
 AliAnalysisTaskJetShapeConst.cxx:395
 AliAnalysisTaskJetShapeConst.cxx:396
 AliAnalysisTaskJetShapeConst.cxx:397
 AliAnalysisTaskJetShapeConst.cxx:398
 AliAnalysisTaskJetShapeConst.cxx:399
 AliAnalysisTaskJetShapeConst.cxx:400
 AliAnalysisTaskJetShapeConst.cxx:401
 AliAnalysisTaskJetShapeConst.cxx:402
 AliAnalysisTaskJetShapeConst.cxx:403
 AliAnalysisTaskJetShapeConst.cxx:404
 AliAnalysisTaskJetShapeConst.cxx:405
 AliAnalysisTaskJetShapeConst.cxx:406
 AliAnalysisTaskJetShapeConst.cxx:407
 AliAnalysisTaskJetShapeConst.cxx:408
 AliAnalysisTaskJetShapeConst.cxx:409
 AliAnalysisTaskJetShapeConst.cxx:410
 AliAnalysisTaskJetShapeConst.cxx:411
 AliAnalysisTaskJetShapeConst.cxx:412
 AliAnalysisTaskJetShapeConst.cxx:413
 AliAnalysisTaskJetShapeConst.cxx:414
 AliAnalysisTaskJetShapeConst.cxx:415
 AliAnalysisTaskJetShapeConst.cxx:416
 AliAnalysisTaskJetShapeConst.cxx:417
 AliAnalysisTaskJetShapeConst.cxx:418
 AliAnalysisTaskJetShapeConst.cxx:419
 AliAnalysisTaskJetShapeConst.cxx:420
 AliAnalysisTaskJetShapeConst.cxx:421
 AliAnalysisTaskJetShapeConst.cxx:422
 AliAnalysisTaskJetShapeConst.cxx:423
 AliAnalysisTaskJetShapeConst.cxx:424
 AliAnalysisTaskJetShapeConst.cxx:425
 AliAnalysisTaskJetShapeConst.cxx:426
 AliAnalysisTaskJetShapeConst.cxx:427
 AliAnalysisTaskJetShapeConst.cxx:428
 AliAnalysisTaskJetShapeConst.cxx:429
 AliAnalysisTaskJetShapeConst.cxx:430
 AliAnalysisTaskJetShapeConst.cxx:431
 AliAnalysisTaskJetShapeConst.cxx:432
 AliAnalysisTaskJetShapeConst.cxx:433
 AliAnalysisTaskJetShapeConst.cxx:434
 AliAnalysisTaskJetShapeConst.cxx:435
 AliAnalysisTaskJetShapeConst.cxx:436
 AliAnalysisTaskJetShapeConst.cxx:437
 AliAnalysisTaskJetShapeConst.cxx:438
 AliAnalysisTaskJetShapeConst.cxx:439
 AliAnalysisTaskJetShapeConst.cxx:440
 AliAnalysisTaskJetShapeConst.cxx:441
 AliAnalysisTaskJetShapeConst.cxx:442