ROOT logo
//
// Jet mass structure analysis task.
//
// Author: M.Verweij

#include <TClonesArray.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TH3F.h>
#include <TProfile2D.h>
#include <THnSparse.h>
#include <TList.h>
#include <TLorentzVector.h>
#include <TProfile.h>
#include <TChain.h>
#include <TSystem.h>
#include <TFile.h>
#include <TKey.h>
#include <TMath.h>
#include <TRandom3.h>

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

#include "AliAODEvent.h"

#include "AliAnalysisTaskEmcalJetMassStructure.h"

ClassImp(AliAnalysisTaskEmcalJetMassStructure)

//________________________________________________________________________
AliAnalysisTaskEmcalJetMassStructure::AliAnalysisTaskEmcalJetMassStructure() : 
  AliAnalysisTaskEmcalJet("AliAnalysisTaskEmcalJetMassStructure", kTRUE),
  fContainerBase(0),
  fMinFractionShared(0),
  fJetMassType(kRaw),
  fRandom(0),
  fEfficiencyFixed(1.),
  fCorrType(kMeanPtR),
  fEJetByJetCorr(0),
  fh3PtDRMass(0),
  fh3PtDRRho(0),
  fh3PtDRMassCorr(0),
  fh3PtDRRhoCorr(0),
  fh2PtMass(0),
  fh2PtMassCorr(0),
  fhnMassResponse(0),
  fhnMassResponseCorr(0),
  fh3JetPtDRTrackPt(0)
{
  // Default constructor.

  fh3PtDRMass                       = new TH3F*[fNcentBins];
  fh3PtDRRho                        = new TH3F*[fNcentBins];
  fh3PtDRMassCorr                   = new TH3F*[fNcentBins];
  fh3PtDRRhoCorr                    = new TH3F*[fNcentBins];
  fh2PtMass                         = new TH2F*[fNcentBins];
  fh2PtMassCorr                     = new TH2F*[fNcentBins];
  fh3JetPtDRTrackPt                 = new TH3F*[fNcentBins];

  for (Int_t i = 0; i < fNcentBins; i++) {
    fh3PtDRMass[i]       = 0;
    fh3PtDRRho[i]        = 0;
    fh3PtDRMassCorr[i]   = 0;
    fh3PtDRRhoCorr[i]    = 0;
    fh2PtMass[i]         = 0;
    fh2PtMassCorr[i]     = 0;
    fh3JetPtDRTrackPt[i] = 0;
  }

  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
AliAnalysisTaskEmcalJetMassStructure::AliAnalysisTaskEmcalJetMassStructure(const char *name) : 
  AliAnalysisTaskEmcalJet(name, kTRUE),  
  fContainerBase(0),
  fMinFractionShared(0),
  fJetMassType(kRaw),
  fRandom(0),
  fEfficiencyFixed(1.),
  fCorrType(kMeanPtR),
  fEJetByJetCorr(0),
  fh3PtDRMass(0),
  fh3PtDRRho(0),
  fh3PtDRMassCorr(0),
  fh3PtDRRhoCorr(0),
  fh2PtMass(0),
  fh2PtMassCorr(0),
  fhnMassResponse(0),
  fhnMassResponseCorr(0),
  fh3JetPtDRTrackPt(0)
{
  // Standard constructor.

  fh3PtDRMass                       = new TH3F*[fNcentBins];
  fh3PtDRRho                        = new TH3F*[fNcentBins];
  fh3PtDRMassCorr                   = new TH3F*[fNcentBins];
  fh3PtDRRhoCorr                    = new TH3F*[fNcentBins];
  fh2PtMass                         = new TH2F*[fNcentBins];
  fh2PtMassCorr                     = new TH2F*[fNcentBins];
  fh3JetPtDRTrackPt                 = new TH3F*[fNcentBins];

  for (Int_t i = 0; i < fNcentBins; i++) {
    fh3PtDRMass[i]       = 0;
    fh3PtDRRho[i]        = 0; 
    fh3PtDRMassCorr[i]   = 0;
    fh3PtDRRhoCorr[i]    = 0;
    fh2PtMass[i]         = 0;
    fh2PtMassCorr[i]     = 0;
    fh3JetPtDRTrackPt[i] = 0;
  }
  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
AliAnalysisTaskEmcalJetMassStructure::~AliAnalysisTaskEmcalJetMassStructure()
{
  // Destructor.
  delete fRandom;
}

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

  AliAnalysisTaskEmcalJet::UserCreateOutputObjects();

  if(!fRandom) fRandom = new TRandom3(0);

  if(fCorrType==kMeanPtR && fEJetByJetCorr) fEJetByJetCorr->Init();

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

  const Int_t nBinsPt  = 200;
  const Double_t minPt = -50.;
  const Double_t maxPt = 150.;
  Double_t *binsPt = new Double_t[nBinsPt+1];
  for(Int_t i=0; i<=nBinsPt; i++) binsPt[i]=(Double_t)minPt + (maxPt-minPt)/nBinsPt*(Double_t)i ;

  const Int_t nBinsM  = 120;
  const Double_t minM = -20.;
  const Double_t maxM = 40.;
  Double_t *binsM = new Double_t[nBinsM+1];
  for(Int_t i=0; i<=nBinsM; i++) binsM[i]=(Double_t)minM + (maxM-minM)/nBinsM*(Double_t)i ;

  const Int_t nBinsR  = 80;
  const Double_t minR = -0.005;
  const Double_t maxR = 0.795;
  Double_t *binsR = new Double_t[nBinsR+1];
  for(Int_t i=0; i<=nBinsR; i++) binsR[i]=(Double_t)minR + (maxR-minR)/nBinsR*(Double_t)i ;

  //track pt
  Double_t binWidth1 = 0.1;
  Double_t binWidth2 = 1.;
  Double_t binWidth3 = 1.;
  const Float_t ptmin1 =  0.;
  const Float_t ptmax1 =  5.;
  const Float_t ptmin2 =  ptmax1;
  const Float_t ptmax2 =  10.;
  const Float_t ptmin3 =  ptmax2 ;
  const Float_t ptmax3 =  100.;
  const Int_t nbin11 = (int)((ptmax1-ptmin1)/binWidth1);
  const Int_t nbin12 = (int)((ptmax2-ptmin2)/binWidth2)+nbin11;
  const Int_t nbin13 = (int)((ptmax3-ptmin3)/binWidth3)+nbin12;
  Int_t nBinsPtTr=nbin13;
  //Create array with low edges of each bin
  Double_t *binsPtTr=new Double_t[nBinsPtTr+1];
  for(Int_t i=0; i<=nBinsPtTr; i++) {
    if(i<=nbin11) binsPtTr[i]=(Double_t)ptmin1 + (ptmax1-ptmin1)/nbin11*(Double_t)i ;
    if(i<=nbin12 && i>nbin11) binsPtTr[i]=(Double_t)ptmin2 + (ptmax2-ptmin2)/(nbin12-nbin11)*((Double_t)i-(Double_t)nbin11) ;
    if(i<=nbin13 && i>nbin12) binsPtTr[i]=(Double_t)ptmin3 + (ptmax3-ptmin3)/(nbin13-nbin12)*((Double_t)i-(Double_t)nbin12) ;
  }

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

  TString histName = "";
  TString histTitle = "";
  for (Int_t i = 0; i < fNcentBins; i++) {
    histName = TString::Format("fh3PtDRMass_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet};r;sum m",histName.Data());
    fh3PtDRMass[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsR,minR,maxR,101,-0.005,1.005);
    fOutput->Add(fh3PtDRMass[i]);

    histName = TString::Format("fh3PtDRRho_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet};r;sum #it{p}_{T}",histName.Data());
    fh3PtDRRho[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsR,minR,maxR,101,-0.005,1.005);
    fOutput->Add(fh3PtDRRho[i]);

    histName = TString::Format("fh3PtDRMassCorr_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet};r;sum m",histName.Data());
    fh3PtDRMassCorr[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsR,minR,maxR,101,-0.005,1.005);
    fOutput->Add(fh3PtDRMassCorr[i]);

    histName = TString::Format("fh3PtDRRhoCorr_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet};r;sum #it{p}_{T}",histName.Data());
    fh3PtDRRhoCorr[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsR,minR,maxR,101,-0.005,1.005);
    fOutput->Add(fh3PtDRRhoCorr[i]);

    histName = TString::Format("fh2PtMass_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet};#it{M}_{jet}",histName.Data());
    fh2PtMass[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
    fOutput->Add(fh2PtMass[i]);

    histName = TString::Format("fh2PtMassCorr_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet};#it{M}_{jet}",histName.Data());
    fh2PtMassCorr[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
    fOutput->Add(fh2PtMassCorr[i]);

    histName = TString::Format("fh3JetPtDRTrackPt_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet};r;#it{p}_{T,track}",histName.Data());
    fh3JetPtDRTrackPt[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,binsPt,nBinsR,binsR,nBinsPtTr,binsPtTr);
    fOutput->Add(fh3JetPtDRTrackPt[i]);
  }

  histName = "fhnMassResponse";
  histTitle = Form("%s;#it{M}_{det};#it{M}_{part};#it{p}_{T,det};#it{p}_{T,part}",histName.Data());
  fhnMassResponse = new THnSparseF(histName.Data(),histTitle.Data(),nBinsSparse0,nBins0,xmin0,xmax0);
  fOutput->Add(fhnMassResponse);

  histName = "fhnMassResponseCorr";
  histTitle = Form("%s;#it{M}_{det};#it{M}_{part};#it{p}_{T,det};#it{p}_{T,part}",histName.Data());
  fhnMassResponseCorr = new THnSparseF(histName.Data(),histTitle.Data(),nBinsSparse0,nBins0,xmin0,xmax0);
  fOutput->Add(fhnMassResponseCorr);

  TH1::AddDirectory(oldStatus);

  PostData(1, fOutput); // Post data for ALL output slots > 0 here.

  if(binsPt)                delete [] binsPt;
  if(binsPtTr)              delete [] binsPtTr;
  if(binsM)                 delete [] binsM;
  if(binsR)                 delete [] binsR;

}

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

  return kTRUE;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskEmcalJetMassStructure::FillHistograms()
{
  // study how jet mass builds up as function of radial distance to jet axis

  if(fCorrType==kMeanPtR && !fEJetByJetCorr) return kFALSE;

  AliEmcalJet* jet1 = NULL;
  AliJetContainer *jetCont = GetJetContainer(fContainerBase);
  if(jetCont) {
    jetCont->ResetCurrentID();
    while((jet1 = jetCont->GetNextAcceptJet())) {

      Double_t ptJet1 = jet1->Pt() - GetRhoVal(fContainerBase)*jet1->Area();
      Double_t mJet1 = GetJetMass(jet1);
      fh2PtMass[fCentBin]->Fill(ptJet1,mJet1);
      AliEmcalJet *jPart = jet1->ClosestJet(); 
      //fill detector response
      if(jPart) {
        Double_t var[4] = {mJet1,jPart->M(),ptJet1,jPart->Pt()};
        fhnMassResponse->Fill(var);
      }

      // if(jet1->GetTagStatus()<1 || !jet1->GetTaggedJet())
      // 	continue;
     
      //Sort array based on distance to jet axis
      static Int_t indexes[9999] = {-1};
      static Float_t dr[9999] = {0};
      if(!GetSortedArray(indexes,dr,jet1)) continue;

      for(Int_t i=jet1->GetNumberOfTracks()-1; i>-1; i--) {
        AliVParticle *vp = static_cast<AliVParticle*>(jet1->TrackAt(indexes[i], fTracks));
        if(!vp) continue;
        fh3JetPtDRTrackPt[fCentBin]->Fill(ptJet1,dr[indexes[i]],vp->Pt());
      }
 
      if(fCorrType==kAnnulus) {
        TLorentzVector sumVec;      sumVec.SetPtEtaPhiM(0.,0.,0.,0.);
        TLorentzVector corrVec;     corrVec.SetPtEtaPhiM(0.,0.,0.,0.);
        TLorentzVector curVec;
        for(Int_t i=jet1->GetNumberOfTracks()-1; i>-1; i--) {
          AliVParticle *vp = static_cast<AliVParticle*>(jet1->TrackAt(indexes[i], fTracks));
          if(!vp) continue;
          
          curVec.SetPtEtaPhiM(vp->Pt(),vp->Eta(),vp->Phi(),vp->M());
          sumVec+=curVec;
          corrVec+=curVec;
          //	Printf("%d  %f",i,dr[indexes[i]]);
          fh3PtDRMass[fCentBin]->Fill(ptJet1,dr[indexes[i]],sumVec.M()/mJet1);
          fh3PtDRRho[fCentBin]->Fill(ptJet1,dr[indexes[i]],sumVec.Pt()/ptJet1);
          
          fh3PtDRMassCorr[fCentBin]->Fill(ptJet1,dr[indexes[i]],corrVec.M()/mJet1);
          fh3PtDRRhoCorr[fCentBin]->Fill(ptJet1,dr[indexes[i]],corrVec.Pt()/ptJet1);
          
          Double_t eff = GetEfficiency(vp->Pt());
          Double_t rnd = fRandom->Uniform(1.);
          if(rnd>eff) {//put particle back at random position in annulus; using now zero width for annulus
            Double_t t = TMath::TwoPi()*gRandom->Uniform(1.);
            Double_t rr = dr[indexes[i]];
            rr = fRandom->Uniform(0.,jetCont->GetJetRadius());
            Double_t deta = rr*TMath::Cos(t);
            Double_t dphi = rr*TMath::Sin(t);
            curVec.SetPtEtaPhiM(vp->Pt(),deta+jet1->Eta(),dphi+jet1->Phi(),vp->M());
            corrVec+=curVec;
            
            fh3PtDRMassCorr[fCentBin]->Fill(ptJet1,dr[indexes[i]],corrVec.M()/mJet1);
            fh3PtDRRhoCorr[fCentBin]->Fill(ptJet1,dr[indexes[i]],corrVec.Pt()/ptJet1);
          }
        }//track loop

        fh2PtMassCorr[fCentBin]->Fill(corrVec.Pt(), corrVec.M());
        if(jPart) {
          Double_t varCorr[4] = {corrVec.M(),jPart->M(),corrVec.Pt(),jPart->Pt()};
          fhnMassResponseCorr->Fill(varCorr);
        }
      }//kAnnulus method
      else if(fCorrType==kMeanPtR) {
        //jet-by-jet correction based on templates
        AliEmcalJet *jetCorr = fEJetByJetCorr->Eval(jet1,jetCont->GetParticleContainer()->GetArray());
        if(jPart && jetCorr) {
          Double_t varCorr[4] = {jetCorr->M(),jPart->M(),jetCorr->Pt(),jPart->Pt()};
          fhnMassResponseCorr->Fill(varCorr);
        }
      }//kMeanPtR method
    }//jet loop
  }//jet container
  
  return kTRUE;
}

//________________________________________________________________________
Double_t AliAnalysisTaskEmcalJetMassStructure::GetEfficiency(Double_t pt) {
  pt = 1.*pt;
  Double_t eff = 1.;
  if(fEfficiencyFixed<1.) return fEfficiencyFixed;
  
  return eff;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskEmcalJetMassStructure::GetSortedArray(Int_t indexes[], Float_t dr[], AliEmcalJet *jet) const
{
  // sort array
  const Int_t n = (Int_t)jet->GetNumberOfTracks();//(Int_t)array.size();
  if (n < 1) return kFALSE;
  
  for (Int_t i = 0; i < n; i++) {
    AliVParticle *vp = static_cast<AliVParticle*>(jet->TrackAt(i, fTracks));
    if(!vp) continue;
    dr[i] = jet->DeltaR(vp);
  }
  TMath::Sort(n, dr, indexes);
  return kTRUE;
}


//________________________________________________________________________
Double_t AliAnalysisTaskEmcalJetMassStructure::GetJetMass(AliEmcalJet *jet) {
  //calc subtracted jet mass
  if(fJetMassType==kRaw)
    return jet->M();
  else if(fJetMassType==kDeriv)
    return jet->GetSecondOrderSubtracted();
  
  return 0;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskEmcalJetMassStructure::RetrieveEventObjects() {
  //
  // retrieve event objects
  //
  if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects())
    return kFALSE;

  return kTRUE;
}

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

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