ROOT logo
//
// Jet mass analysis task for jets recoiling from high pT hadron
//
// Author: M.Verweij

#include <TClonesArray.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TH3F.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 "AliVCluster.h"
#include "AliVTrack.h"
#include "AliEmcalJet.h"
#include "AliRhoParameter.h"
#include "AliLog.h"
#include "AliEmcalParticle.h"
#include "AliAnalysisManager.h"
#include "AliJetContainer.h"
#include "AliParticleContainer.h"

#include "AliAODEvent.h"

#include "AliAnalysisTaskEmcalHJetMass.h"

ClassImp(AliAnalysisTaskEmcalHJetMass)

//________________________________________________________________________
AliAnalysisTaskEmcalHJetMass::AliAnalysisTaskEmcalHJetMass() : 
  AliAnalysisTaskEmcalJet("AliAnalysisTaskEmcalHJetMass", kTRUE),
  fContainerBase(0),
  fContainerUnsub(1),
  fMinFractionShared(0),
  fUseUnsubJet(0),
  fJetMassType(kRaw),
  fDPhiHJetMax(0.6),
  fh1PtHadron(0),
  fh3PtHPtJDPhi(0),
  fh3PtJet1VsMassVsHPtAllSel(0),
  fh3PtJet1VsMassVsHPtTagged(0),
  fh3PtJet1VsMassVsHPtTaggedMatch(0),
  fh3PtJet1VsRatVsHPtAllSel(0),
  fh3PtJet1VsRatVsHPtTagged(0),
  fh3PtJet1VsRatVsHPtTaggedMatch(0)
{
  // Default constructor.

  fh1PtHadron                       = new TH1F*[fNcentBins];
  fh3PtHPtJDPhi                     = new TH3F*[fNcentBins];
  fh3PtJet1VsMassVsHPtAllSel        = new TH3F*[fNcentBins];
  fh3PtJet1VsMassVsHPtTagged        = new TH3F*[fNcentBins];
  fh3PtJet1VsMassVsHPtTaggedMatch   = new TH3F*[fNcentBins];
  fh3PtJet1VsRatVsHPtAllSel         = new TH3F*[fNcentBins];
  fh3PtJet1VsRatVsHPtTagged         = new TH3F*[fNcentBins];
  fh3PtJet1VsRatVsHPtTaggedMatch    = new TH3F*[fNcentBins];

  for (Int_t i = 0; i < fNcentBins; i++) {
    fh1PtHadron[i]                       = 0;
    fh3PtHPtJDPhi[i]                     = 0;
    fh3PtJet1VsMassVsHPtAllSel[i]        = 0;
    fh3PtJet1VsMassVsHPtTagged[i]        = 0;
    fh3PtJet1VsMassVsHPtTaggedMatch[i]   = 0;
    fh3PtJet1VsRatVsHPtAllSel[i]         = 0;
    fh3PtJet1VsRatVsHPtTagged[i]         = 0;
    fh3PtJet1VsRatVsHPtTaggedMatch[i]    = 0;
  }

  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
AliAnalysisTaskEmcalHJetMass::AliAnalysisTaskEmcalHJetMass(const char *name) : 
  AliAnalysisTaskEmcalJet(name, kTRUE),  
  fContainerBase(0),
  fContainerUnsub(1),
  fMinFractionShared(0),
  fUseUnsubJet(0),
  fJetMassType(kRaw),
  fDPhiHJetMax(0.6),
  fh1PtHadron(0),
  fh3PtHPtJDPhi(0),
  fh3PtJet1VsMassVsHPtAllSel(0),
  fh3PtJet1VsMassVsHPtTagged(0),
  fh3PtJet1VsMassVsHPtTaggedMatch(0),
  fh3PtJet1VsRatVsHPtAllSel(0),
  fh3PtJet1VsRatVsHPtTagged(0),
  fh3PtJet1VsRatVsHPtTaggedMatch(0)
{
  // Standard constructor.

  fh1PtHadron                       = new TH1F*[fNcentBins];
  fh3PtHPtJDPhi                     = new TH3F*[fNcentBins];
  fh3PtJet1VsMassVsHPtAllSel        = new TH3F*[fNcentBins];
  fh3PtJet1VsMassVsHPtTagged        = new TH3F*[fNcentBins];
  fh3PtJet1VsMassVsHPtTaggedMatch   = new TH3F*[fNcentBins];
  fh3PtJet1VsRatVsHPtAllSel         = new TH3F*[fNcentBins];
  fh3PtJet1VsRatVsHPtTagged         = new TH3F*[fNcentBins];
  fh3PtJet1VsRatVsHPtTaggedMatch    = new TH3F*[fNcentBins];
 
  for (Int_t i = 0; i < fNcentBins; i++) {
    fh1PtHadron[i]                       = 0;
    fh3PtHPtJDPhi[i]                     = 0;
    fh3PtJet1VsMassVsHPtAllSel[i]        = 0;
    fh3PtJet1VsMassVsHPtTagged[i]        = 0;
    fh3PtJet1VsMassVsHPtTaggedMatch[i]   = 0;
    fh3PtJet1VsRatVsHPtAllSel[i]         = 0;
    fh3PtJet1VsRatVsHPtTagged[i]         = 0;
    fh3PtJet1VsRatVsHPtTaggedMatch[i]    = 0;
  }

  SetMakeGeneralHistograms(kTRUE);
}

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

//________________________________________________________________________
void AliAnalysisTaskEmcalHJetMass::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.;

  const Int_t nBinsM  = 100;
  const Double_t minM = -20.;
  const Double_t maxM = 80.;

  const Int_t nBinsR  = 100;
  const Double_t minR = -0.2;
  const Double_t maxR = 0.8;

  const Int_t nBinsPtH  = 100;
  const Double_t minPtH = 0.;
  const Double_t maxPtH = 100.;

  const Int_t nBinsPhi  = 18*4;
  const Double_t minPhi = -0.5*TMath::Pi();
  const Double_t maxPhi = 1.5*TMath::Pi();

  TString histName = "";
  TString histTitle = "";
  for (Int_t i = 0; i < fNcentBins; i++) {
    histName = TString::Format("fh1PtHadron_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,h}",histName.Data());
    fh1PtHadron[i] = new TH1F(histName.Data(),histTitle.Data(),200.,0.,200.);
    fOutput->Add(fh1PtHadron[i]);

    histName = TString::Format("fh3PtHPtJDPhi_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,h};#it{p}_{T,jet};#Delta#varphi_{h,jet}",histName.Data());
    fh3PtHPtJDPhi[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPtH,minPtH,maxPtH,nBinsPt,minPt,maxPt,nBinsPhi,minPhi,maxPhi);
    fOutput->Add(fh3PtHPtJDPhi[i]);

    histName = TString::Format("fh3PtJet1VsMassVsHPtAllSel_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1};#it{p}_{T,h}",histName.Data());
    fh3PtJet1VsMassVsHPtAllSel[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM,nBinsPtH,minPtH,maxPtH);
    fOutput->Add(fh3PtJet1VsMassVsHPtAllSel[i]);

    histName = TString::Format("fh3PtJet1VsMassVsHPtTagged_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1};#it{p}_{T,h}",histName.Data());
    fh3PtJet1VsMassVsHPtTagged[i] =  new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM,nBinsPtH,minPtH,maxPtH);
    fOutput->Add(fh3PtJet1VsMassVsHPtTagged[i]);

    histName = TString::Format("fh3PtJet1VsMassVsHPtTaggedMatch_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1};#it{p}_{T,h}",histName.Data());
    fh3PtJet1VsMassVsHPtTaggedMatch[i] =  new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM,nBinsPtH,minPtH,maxPtH);
    fOutput->Add(fh3PtJet1VsMassVsHPtTaggedMatch[i]);

    //
    histName = TString::Format("fh3PtJet1VsRatVsHPtAllSel_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}/#it{p}_{T,jet1};#it{p}_{T,h}",histName.Data());
    fh3PtJet1VsRatVsHPtAllSel[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsR,minR,maxR,nBinsPtH,minPtH,maxPtH);
    fOutput->Add(fh3PtJet1VsRatVsHPtAllSel[i]);

    histName = TString::Format("fh3PtJet1VsRatVsHPtTagged_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}/#it{p}_{T,jet1};#it{p}_{T,h}",histName.Data());
    fh3PtJet1VsRatVsHPtTagged[i] =  new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsR,minR,maxR,nBinsPtH,minPtH,maxPtH);
    fOutput->Add(fh3PtJet1VsRatVsHPtTagged[i]);

    histName = TString::Format("fh3PtJet1VsRatVsHPtTaggedMatch_%d",i);
    histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}/#it{p}_{T,jet1};#it{p}_{T,h}",histName.Data());
    fh3PtJet1VsRatVsHPtTaggedMatch[i] =  new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsR,minR,maxR,nBinsPtH,minPtH,maxPtH);
    fOutput->Add(fh3PtJet1VsRatVsHPtTaggedMatch[i]);
  }

  TH1::AddDirectory(oldStatus);

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

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

  AliVParticle *vp = NULL;
  AliParticleContainer *pCont = GetParticleContainer(0);
  AliJetContainer      *jCont = GetJetContainer(fContainerBase);
  if(pCont) {
    pCont->ResetCurrentID();
    while((vp = pCont->GetNextAcceptParticle())) {
      fh1PtHadron[fCentBin]->Fill(vp->Pt()); //all hadrons
      AliEmcalJet* jet = NULL;
      if(jCont) {
	jCont->ResetCurrentID();
	while((jet = jCont->GetNextAcceptJet())) {
	  Double_t dphi = GetDeltaPhi(vp,jet)-TMath::Pi();
	  fh3PtHPtJDPhi[fCentBin]->Fill(vp->Pt(),jet->Pt() - GetRhoVal(fContainerBase)*jet->Area(),dphi);
	  if(dphi>fDPhiHJetMax) continue;
	  FillHJetHistograms(vp->Pt(),jet);
	}
      }
    }
  }
  return kTRUE;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskEmcalHJetMass::FillHJetHistograms(Double_t pt, const AliEmcalJet *jet)
{
  // Fill hadron-jet histograms.
  Double_t ptJet = jet->Pt() - GetRhoVal(fContainerBase)*jet->Area();
  Double_t mJet = GetJetMass(jet);
  Double_t rat = -1.;
  if(ptJet<0. || ptJet>0.) rat = mJet/ptJet;

  fh3PtJet1VsMassVsHPtAllSel[fCentBin]->Fill(ptJet,mJet,pt);
  fh3PtJet1VsRatVsHPtAllSel[fCentBin]->Fill(ptJet,rat,pt);

  if(jet->GetTagStatus()<1 || !jet->GetTaggedJet())
    return kFALSE;
  fh3PtJet1VsMassVsHPtTagged[fCentBin]->Fill(ptJet,mJet,pt);
  fh3PtJet1VsRatVsHPtTagged[fCentBin]->Fill(ptJet,rat,pt);

  Double_t fraction = -1.;
  if(fUseUnsubJet) {
    AliEmcalJet *jetUS = NULL;
    AliJetContainer *jetContUS = GetJetContainer(fContainerUnsub);
    Int_t ifound = 0;
    Int_t ilab = -1;
    for(Int_t i = 0; i<jetContUS->GetNJets(); i++) {
      jetUS = jetContUS->GetJet(i);
      if(jetUS->GetLabel()==jet->GetLabel()) {
	ifound++;
	if(ifound==1) ilab = i;
      }
    }
    if(ifound>1) AliDebug(2,Form("Found %d partners",ifound));
    if(ifound==0) jetUS = 0x0;
    else          jetUS = jetContUS->GetJet(ilab);
    fraction = jetContUS->GetFractionSharedPt(jetUS);
  } else {
    AliJetContainer *jetCont = GetJetContainer(fContainerBase);
    fraction = jetCont->GetFractionSharedPt(jet);
  }
  
  if(fMinFractionShared>0. && fraction>fMinFractionShared) {
    fh3PtJet1VsMassVsHPtTaggedMatch[fCentBin]->Fill(ptJet,mJet,pt);
    fh3PtJet1VsRatVsHPtTaggedMatch[fCentBin]->Fill(ptJet,rat,pt);
  }
  return kTRUE;
}

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

//________________________________________________________________________
Double_t AliAnalysisTaskEmcalHJetMass::GetDeltaPhi(const AliVParticle *vp, const AliEmcalJet* jet) const {
  // Calculate azimuthal angle between particle and jet. range:[-0.5\pi,1.5\pi]
  return GetDeltaPhi(vp->Phi(),jet->Phi());
}

//________________________________________________________________________
Double_t AliAnalysisTaskEmcalHJetMass::GetDeltaPhi(Double_t phi1, Double_t phi2) const {
  // Calculate azimuthal angle between phi1 and phi2. range:[-0.5\pi,1.5\pi]
  Double_t dPhi = phi1-phi2;
  if(dPhi <-0.5*TMath::Pi())  dPhi += TMath::TwoPi();
  if(dPhi > 1.5*TMath::Pi())  dPhi -= TMath::TwoPi();
  return dPhi;
}


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

  return kTRUE;
}

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

 AliAnalysisTaskEmcalHJetMass.cxx:1
 AliAnalysisTaskEmcalHJetMass.cxx:2
 AliAnalysisTaskEmcalHJetMass.cxx:3
 AliAnalysisTaskEmcalHJetMass.cxx:4
 AliAnalysisTaskEmcalHJetMass.cxx:5
 AliAnalysisTaskEmcalHJetMass.cxx:6
 AliAnalysisTaskEmcalHJetMass.cxx:7
 AliAnalysisTaskEmcalHJetMass.cxx:8
 AliAnalysisTaskEmcalHJetMass.cxx:9
 AliAnalysisTaskEmcalHJetMass.cxx:10
 AliAnalysisTaskEmcalHJetMass.cxx:11
 AliAnalysisTaskEmcalHJetMass.cxx:12
 AliAnalysisTaskEmcalHJetMass.cxx:13
 AliAnalysisTaskEmcalHJetMass.cxx:14
 AliAnalysisTaskEmcalHJetMass.cxx:15
 AliAnalysisTaskEmcalHJetMass.cxx:16
 AliAnalysisTaskEmcalHJetMass.cxx:17
 AliAnalysisTaskEmcalHJetMass.cxx:18
 AliAnalysisTaskEmcalHJetMass.cxx:19
 AliAnalysisTaskEmcalHJetMass.cxx:20
 AliAnalysisTaskEmcalHJetMass.cxx:21
 AliAnalysisTaskEmcalHJetMass.cxx:22
 AliAnalysisTaskEmcalHJetMass.cxx:23
 AliAnalysisTaskEmcalHJetMass.cxx:24
 AliAnalysisTaskEmcalHJetMass.cxx:25
 AliAnalysisTaskEmcalHJetMass.cxx:26
 AliAnalysisTaskEmcalHJetMass.cxx:27
 AliAnalysisTaskEmcalHJetMass.cxx:28
 AliAnalysisTaskEmcalHJetMass.cxx:29
 AliAnalysisTaskEmcalHJetMass.cxx:30
 AliAnalysisTaskEmcalHJetMass.cxx:31
 AliAnalysisTaskEmcalHJetMass.cxx:32
 AliAnalysisTaskEmcalHJetMass.cxx:33
 AliAnalysisTaskEmcalHJetMass.cxx:34
 AliAnalysisTaskEmcalHJetMass.cxx:35
 AliAnalysisTaskEmcalHJetMass.cxx:36
 AliAnalysisTaskEmcalHJetMass.cxx:37
 AliAnalysisTaskEmcalHJetMass.cxx:38
 AliAnalysisTaskEmcalHJetMass.cxx:39
 AliAnalysisTaskEmcalHJetMass.cxx:40
 AliAnalysisTaskEmcalHJetMass.cxx:41
 AliAnalysisTaskEmcalHJetMass.cxx:42
 AliAnalysisTaskEmcalHJetMass.cxx:43
 AliAnalysisTaskEmcalHJetMass.cxx:44
 AliAnalysisTaskEmcalHJetMass.cxx:45
 AliAnalysisTaskEmcalHJetMass.cxx:46
 AliAnalysisTaskEmcalHJetMass.cxx:47
 AliAnalysisTaskEmcalHJetMass.cxx:48
 AliAnalysisTaskEmcalHJetMass.cxx:49
 AliAnalysisTaskEmcalHJetMass.cxx:50
 AliAnalysisTaskEmcalHJetMass.cxx:51
 AliAnalysisTaskEmcalHJetMass.cxx:52
 AliAnalysisTaskEmcalHJetMass.cxx:53
 AliAnalysisTaskEmcalHJetMass.cxx:54
 AliAnalysisTaskEmcalHJetMass.cxx:55
 AliAnalysisTaskEmcalHJetMass.cxx:56
 AliAnalysisTaskEmcalHJetMass.cxx:57
 AliAnalysisTaskEmcalHJetMass.cxx:58
 AliAnalysisTaskEmcalHJetMass.cxx:59
 AliAnalysisTaskEmcalHJetMass.cxx:60
 AliAnalysisTaskEmcalHJetMass.cxx:61
 AliAnalysisTaskEmcalHJetMass.cxx:62
 AliAnalysisTaskEmcalHJetMass.cxx:63
 AliAnalysisTaskEmcalHJetMass.cxx:64
 AliAnalysisTaskEmcalHJetMass.cxx:65
 AliAnalysisTaskEmcalHJetMass.cxx:66
 AliAnalysisTaskEmcalHJetMass.cxx:67
 AliAnalysisTaskEmcalHJetMass.cxx:68
 AliAnalysisTaskEmcalHJetMass.cxx:69
 AliAnalysisTaskEmcalHJetMass.cxx:70
 AliAnalysisTaskEmcalHJetMass.cxx:71
 AliAnalysisTaskEmcalHJetMass.cxx:72
 AliAnalysisTaskEmcalHJetMass.cxx:73
 AliAnalysisTaskEmcalHJetMass.cxx:74
 AliAnalysisTaskEmcalHJetMass.cxx:75
 AliAnalysisTaskEmcalHJetMass.cxx:76
 AliAnalysisTaskEmcalHJetMass.cxx:77
 AliAnalysisTaskEmcalHJetMass.cxx:78
 AliAnalysisTaskEmcalHJetMass.cxx:79
 AliAnalysisTaskEmcalHJetMass.cxx:80
 AliAnalysisTaskEmcalHJetMass.cxx:81
 AliAnalysisTaskEmcalHJetMass.cxx:82
 AliAnalysisTaskEmcalHJetMass.cxx:83
 AliAnalysisTaskEmcalHJetMass.cxx:84
 AliAnalysisTaskEmcalHJetMass.cxx:85
 AliAnalysisTaskEmcalHJetMass.cxx:86
 AliAnalysisTaskEmcalHJetMass.cxx:87
 AliAnalysisTaskEmcalHJetMass.cxx:88
 AliAnalysisTaskEmcalHJetMass.cxx:89
 AliAnalysisTaskEmcalHJetMass.cxx:90
 AliAnalysisTaskEmcalHJetMass.cxx:91
 AliAnalysisTaskEmcalHJetMass.cxx:92
 AliAnalysisTaskEmcalHJetMass.cxx:93
 AliAnalysisTaskEmcalHJetMass.cxx:94
 AliAnalysisTaskEmcalHJetMass.cxx:95
 AliAnalysisTaskEmcalHJetMass.cxx:96
 AliAnalysisTaskEmcalHJetMass.cxx:97
 AliAnalysisTaskEmcalHJetMass.cxx:98
 AliAnalysisTaskEmcalHJetMass.cxx:99
 AliAnalysisTaskEmcalHJetMass.cxx:100
 AliAnalysisTaskEmcalHJetMass.cxx:101
 AliAnalysisTaskEmcalHJetMass.cxx:102
 AliAnalysisTaskEmcalHJetMass.cxx:103
 AliAnalysisTaskEmcalHJetMass.cxx:104
 AliAnalysisTaskEmcalHJetMass.cxx:105
 AliAnalysisTaskEmcalHJetMass.cxx:106
 AliAnalysisTaskEmcalHJetMass.cxx:107
 AliAnalysisTaskEmcalHJetMass.cxx:108
 AliAnalysisTaskEmcalHJetMass.cxx:109
 AliAnalysisTaskEmcalHJetMass.cxx:110
 AliAnalysisTaskEmcalHJetMass.cxx:111
 AliAnalysisTaskEmcalHJetMass.cxx:112
 AliAnalysisTaskEmcalHJetMass.cxx:113
 AliAnalysisTaskEmcalHJetMass.cxx:114
 AliAnalysisTaskEmcalHJetMass.cxx:115
 AliAnalysisTaskEmcalHJetMass.cxx:116
 AliAnalysisTaskEmcalHJetMass.cxx:117
 AliAnalysisTaskEmcalHJetMass.cxx:118
 AliAnalysisTaskEmcalHJetMass.cxx:119
 AliAnalysisTaskEmcalHJetMass.cxx:120
 AliAnalysisTaskEmcalHJetMass.cxx:121
 AliAnalysisTaskEmcalHJetMass.cxx:122
 AliAnalysisTaskEmcalHJetMass.cxx:123
 AliAnalysisTaskEmcalHJetMass.cxx:124
 AliAnalysisTaskEmcalHJetMass.cxx:125
 AliAnalysisTaskEmcalHJetMass.cxx:126
 AliAnalysisTaskEmcalHJetMass.cxx:127
 AliAnalysisTaskEmcalHJetMass.cxx:128
 AliAnalysisTaskEmcalHJetMass.cxx:129
 AliAnalysisTaskEmcalHJetMass.cxx:130
 AliAnalysisTaskEmcalHJetMass.cxx:131
 AliAnalysisTaskEmcalHJetMass.cxx:132
 AliAnalysisTaskEmcalHJetMass.cxx:133
 AliAnalysisTaskEmcalHJetMass.cxx:134
 AliAnalysisTaskEmcalHJetMass.cxx:135
 AliAnalysisTaskEmcalHJetMass.cxx:136
 AliAnalysisTaskEmcalHJetMass.cxx:137
 AliAnalysisTaskEmcalHJetMass.cxx:138
 AliAnalysisTaskEmcalHJetMass.cxx:139
 AliAnalysisTaskEmcalHJetMass.cxx:140
 AliAnalysisTaskEmcalHJetMass.cxx:141
 AliAnalysisTaskEmcalHJetMass.cxx:142
 AliAnalysisTaskEmcalHJetMass.cxx:143
 AliAnalysisTaskEmcalHJetMass.cxx:144
 AliAnalysisTaskEmcalHJetMass.cxx:145
 AliAnalysisTaskEmcalHJetMass.cxx:146
 AliAnalysisTaskEmcalHJetMass.cxx:147
 AliAnalysisTaskEmcalHJetMass.cxx:148
 AliAnalysisTaskEmcalHJetMass.cxx:149
 AliAnalysisTaskEmcalHJetMass.cxx:150
 AliAnalysisTaskEmcalHJetMass.cxx:151
 AliAnalysisTaskEmcalHJetMass.cxx:152
 AliAnalysisTaskEmcalHJetMass.cxx:153
 AliAnalysisTaskEmcalHJetMass.cxx:154
 AliAnalysisTaskEmcalHJetMass.cxx:155
 AliAnalysisTaskEmcalHJetMass.cxx:156
 AliAnalysisTaskEmcalHJetMass.cxx:157
 AliAnalysisTaskEmcalHJetMass.cxx:158
 AliAnalysisTaskEmcalHJetMass.cxx:159
 AliAnalysisTaskEmcalHJetMass.cxx:160
 AliAnalysisTaskEmcalHJetMass.cxx:161
 AliAnalysisTaskEmcalHJetMass.cxx:162
 AliAnalysisTaskEmcalHJetMass.cxx:163
 AliAnalysisTaskEmcalHJetMass.cxx:164
 AliAnalysisTaskEmcalHJetMass.cxx:165
 AliAnalysisTaskEmcalHJetMass.cxx:166
 AliAnalysisTaskEmcalHJetMass.cxx:167
 AliAnalysisTaskEmcalHJetMass.cxx:168
 AliAnalysisTaskEmcalHJetMass.cxx:169
 AliAnalysisTaskEmcalHJetMass.cxx:170
 AliAnalysisTaskEmcalHJetMass.cxx:171
 AliAnalysisTaskEmcalHJetMass.cxx:172
 AliAnalysisTaskEmcalHJetMass.cxx:173
 AliAnalysisTaskEmcalHJetMass.cxx:174
 AliAnalysisTaskEmcalHJetMass.cxx:175
 AliAnalysisTaskEmcalHJetMass.cxx:176
 AliAnalysisTaskEmcalHJetMass.cxx:177
 AliAnalysisTaskEmcalHJetMass.cxx:178
 AliAnalysisTaskEmcalHJetMass.cxx:179
 AliAnalysisTaskEmcalHJetMass.cxx:180
 AliAnalysisTaskEmcalHJetMass.cxx:181
 AliAnalysisTaskEmcalHJetMass.cxx:182
 AliAnalysisTaskEmcalHJetMass.cxx:183
 AliAnalysisTaskEmcalHJetMass.cxx:184
 AliAnalysisTaskEmcalHJetMass.cxx:185
 AliAnalysisTaskEmcalHJetMass.cxx:186
 AliAnalysisTaskEmcalHJetMass.cxx:187
 AliAnalysisTaskEmcalHJetMass.cxx:188
 AliAnalysisTaskEmcalHJetMass.cxx:189
 AliAnalysisTaskEmcalHJetMass.cxx:190
 AliAnalysisTaskEmcalHJetMass.cxx:191
 AliAnalysisTaskEmcalHJetMass.cxx:192
 AliAnalysisTaskEmcalHJetMass.cxx:193
 AliAnalysisTaskEmcalHJetMass.cxx:194
 AliAnalysisTaskEmcalHJetMass.cxx:195
 AliAnalysisTaskEmcalHJetMass.cxx:196
 AliAnalysisTaskEmcalHJetMass.cxx:197
 AliAnalysisTaskEmcalHJetMass.cxx:198
 AliAnalysisTaskEmcalHJetMass.cxx:199
 AliAnalysisTaskEmcalHJetMass.cxx:200
 AliAnalysisTaskEmcalHJetMass.cxx:201
 AliAnalysisTaskEmcalHJetMass.cxx:202
 AliAnalysisTaskEmcalHJetMass.cxx:203
 AliAnalysisTaskEmcalHJetMass.cxx:204
 AliAnalysisTaskEmcalHJetMass.cxx:205
 AliAnalysisTaskEmcalHJetMass.cxx:206
 AliAnalysisTaskEmcalHJetMass.cxx:207
 AliAnalysisTaskEmcalHJetMass.cxx:208
 AliAnalysisTaskEmcalHJetMass.cxx:209
 AliAnalysisTaskEmcalHJetMass.cxx:210
 AliAnalysisTaskEmcalHJetMass.cxx:211
 AliAnalysisTaskEmcalHJetMass.cxx:212
 AliAnalysisTaskEmcalHJetMass.cxx:213
 AliAnalysisTaskEmcalHJetMass.cxx:214
 AliAnalysisTaskEmcalHJetMass.cxx:215
 AliAnalysisTaskEmcalHJetMass.cxx:216
 AliAnalysisTaskEmcalHJetMass.cxx:217
 AliAnalysisTaskEmcalHJetMass.cxx:218
 AliAnalysisTaskEmcalHJetMass.cxx:219
 AliAnalysisTaskEmcalHJetMass.cxx:220
 AliAnalysisTaskEmcalHJetMass.cxx:221
 AliAnalysisTaskEmcalHJetMass.cxx:222
 AliAnalysisTaskEmcalHJetMass.cxx:223
 AliAnalysisTaskEmcalHJetMass.cxx:224
 AliAnalysisTaskEmcalHJetMass.cxx:225
 AliAnalysisTaskEmcalHJetMass.cxx:226
 AliAnalysisTaskEmcalHJetMass.cxx:227
 AliAnalysisTaskEmcalHJetMass.cxx:228
 AliAnalysisTaskEmcalHJetMass.cxx:229
 AliAnalysisTaskEmcalHJetMass.cxx:230
 AliAnalysisTaskEmcalHJetMass.cxx:231
 AliAnalysisTaskEmcalHJetMass.cxx:232
 AliAnalysisTaskEmcalHJetMass.cxx:233
 AliAnalysisTaskEmcalHJetMass.cxx:234
 AliAnalysisTaskEmcalHJetMass.cxx:235
 AliAnalysisTaskEmcalHJetMass.cxx:236
 AliAnalysisTaskEmcalHJetMass.cxx:237
 AliAnalysisTaskEmcalHJetMass.cxx:238
 AliAnalysisTaskEmcalHJetMass.cxx:239
 AliAnalysisTaskEmcalHJetMass.cxx:240
 AliAnalysisTaskEmcalHJetMass.cxx:241
 AliAnalysisTaskEmcalHJetMass.cxx:242
 AliAnalysisTaskEmcalHJetMass.cxx:243
 AliAnalysisTaskEmcalHJetMass.cxx:244
 AliAnalysisTaskEmcalHJetMass.cxx:245
 AliAnalysisTaskEmcalHJetMass.cxx:246
 AliAnalysisTaskEmcalHJetMass.cxx:247
 AliAnalysisTaskEmcalHJetMass.cxx:248
 AliAnalysisTaskEmcalHJetMass.cxx:249
 AliAnalysisTaskEmcalHJetMass.cxx:250
 AliAnalysisTaskEmcalHJetMass.cxx:251
 AliAnalysisTaskEmcalHJetMass.cxx:252
 AliAnalysisTaskEmcalHJetMass.cxx:253
 AliAnalysisTaskEmcalHJetMass.cxx:254
 AliAnalysisTaskEmcalHJetMass.cxx:255
 AliAnalysisTaskEmcalHJetMass.cxx:256
 AliAnalysisTaskEmcalHJetMass.cxx:257
 AliAnalysisTaskEmcalHJetMass.cxx:258
 AliAnalysisTaskEmcalHJetMass.cxx:259
 AliAnalysisTaskEmcalHJetMass.cxx:260
 AliAnalysisTaskEmcalHJetMass.cxx:261
 AliAnalysisTaskEmcalHJetMass.cxx:262
 AliAnalysisTaskEmcalHJetMass.cxx:263
 AliAnalysisTaskEmcalHJetMass.cxx:264
 AliAnalysisTaskEmcalHJetMass.cxx:265
 AliAnalysisTaskEmcalHJetMass.cxx:266
 AliAnalysisTaskEmcalHJetMass.cxx:267
 AliAnalysisTaskEmcalHJetMass.cxx:268
 AliAnalysisTaskEmcalHJetMass.cxx:269
 AliAnalysisTaskEmcalHJetMass.cxx:270
 AliAnalysisTaskEmcalHJetMass.cxx:271
 AliAnalysisTaskEmcalHJetMass.cxx:272
 AliAnalysisTaskEmcalHJetMass.cxx:273
 AliAnalysisTaskEmcalHJetMass.cxx:274
 AliAnalysisTaskEmcalHJetMass.cxx:275
 AliAnalysisTaskEmcalHJetMass.cxx:276
 AliAnalysisTaskEmcalHJetMass.cxx:277
 AliAnalysisTaskEmcalHJetMass.cxx:278
 AliAnalysisTaskEmcalHJetMass.cxx:279
 AliAnalysisTaskEmcalHJetMass.cxx:280
 AliAnalysisTaskEmcalHJetMass.cxx:281
 AliAnalysisTaskEmcalHJetMass.cxx:282
 AliAnalysisTaskEmcalHJetMass.cxx:283
 AliAnalysisTaskEmcalHJetMass.cxx:284
 AliAnalysisTaskEmcalHJetMass.cxx:285
 AliAnalysisTaskEmcalHJetMass.cxx:286
 AliAnalysisTaskEmcalHJetMass.cxx:287
 AliAnalysisTaskEmcalHJetMass.cxx:288
 AliAnalysisTaskEmcalHJetMass.cxx:289
 AliAnalysisTaskEmcalHJetMass.cxx:290
 AliAnalysisTaskEmcalHJetMass.cxx:291
 AliAnalysisTaskEmcalHJetMass.cxx:292
 AliAnalysisTaskEmcalHJetMass.cxx:293
 AliAnalysisTaskEmcalHJetMass.cxx:294
 AliAnalysisTaskEmcalHJetMass.cxx:295
 AliAnalysisTaskEmcalHJetMass.cxx:296
 AliAnalysisTaskEmcalHJetMass.cxx:297
 AliAnalysisTaskEmcalHJetMass.cxx:298
 AliAnalysisTaskEmcalHJetMass.cxx:299
 AliAnalysisTaskEmcalHJetMass.cxx:300
 AliAnalysisTaskEmcalHJetMass.cxx:301
 AliAnalysisTaskEmcalHJetMass.cxx:302
 AliAnalysisTaskEmcalHJetMass.cxx:303
 AliAnalysisTaskEmcalHJetMass.cxx:304
 AliAnalysisTaskEmcalHJetMass.cxx:305
 AliAnalysisTaskEmcalHJetMass.cxx:306
 AliAnalysisTaskEmcalHJetMass.cxx:307
 AliAnalysisTaskEmcalHJetMass.cxx:308
 AliAnalysisTaskEmcalHJetMass.cxx:309
 AliAnalysisTaskEmcalHJetMass.cxx:310
 AliAnalysisTaskEmcalHJetMass.cxx:311
 AliAnalysisTaskEmcalHJetMass.cxx:312
 AliAnalysisTaskEmcalHJetMass.cxx:313
 AliAnalysisTaskEmcalHJetMass.cxx:314
 AliAnalysisTaskEmcalHJetMass.cxx:315
 AliAnalysisTaskEmcalHJetMass.cxx:316
 AliAnalysisTaskEmcalHJetMass.cxx:317
 AliAnalysisTaskEmcalHJetMass.cxx:318
 AliAnalysisTaskEmcalHJetMass.cxx:319
 AliAnalysisTaskEmcalHJetMass.cxx:320
 AliAnalysisTaskEmcalHJetMass.cxx:321
 AliAnalysisTaskEmcalHJetMass.cxx:322
 AliAnalysisTaskEmcalHJetMass.cxx:323