ROOT logo
//
// Detector response jet mass analysis task.
//
// 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 "AliMCEvent.h"
#include "AliGenPythiaEventHeader.h"
#include "AliAODMCHeader.h"
#include "AliMCEvent.h"
#include "AliAnalysisManager.h"
#include "AliJetContainer.h"

#include "AliAODEvent.h"

#include "AliAnalysisTaskJetMassResponseDet.h"

ClassImp(AliAnalysisTaskJetMassResponseDet)

//________________________________________________________________________
AliAnalysisTaskJetMassResponseDet::AliAnalysisTaskJetMassResponseDet() : 
  AliAnalysisTaskEmcalJet("AliAnalysisTaskJetMassResponseDet", kTRUE),
  fContainerPart(0),
  fContainerDet(0),
  fJetMassType(kRaw),
  fh2PtVsMassJetPartAll(0),
  fh2PtVsMassJetPartMatch(0),
  fh2PtVsMassJetPartTagged(0),
  fh2PtVsMassJetPartTaggedMatch(0),
  fh2PtVsMassJetDetAll(0),
  fh2PtVsMassJetDetTagged(0),
  fh2EtaPhiMatchedDet(0),
  fh2EtaPhiMatchedPart(0),
  fhnMassResponse(0),
  fh1AreaPartAll(0),
  fh1AreaDetAll(0)
{
  // Default constructor.

  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
AliAnalysisTaskJetMassResponseDet::AliAnalysisTaskJetMassResponseDet(const char *name) : 
  AliAnalysisTaskEmcalJet(name, kTRUE),  
  fContainerPart(0),
  fContainerDet(0),
  fJetMassType(kRaw),
  fh2PtVsMassJetPartAll(0),
  fh2PtVsMassJetPartMatch(0),
  fh2PtVsMassJetPartTagged(0),
  fh2PtVsMassJetPartTaggedMatch(0),
  fh2PtVsMassJetDetAll(0),
  fh2PtVsMassJetDetTagged(0),
  fh2EtaPhiMatchedDet(0),
  fh2EtaPhiMatchedPart(0),
  fhnMassResponse(0),
  fh1AreaPartAll(0),
  fh1AreaDetAll(0)
{
  // Standard constructor.

  SetMakeGeneralHistograms(kTRUE);
}

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

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

  AliAnalysisTaskEmcalJet::UserCreateOutputObjects();

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

  const Int_t nBinsPt  = 200;
  const Double_t minPt = 0.;
  const Double_t maxPt = 200.;

  const Int_t nBinsM  = 100;
  const Double_t minM = 0.;
  const Double_t maxM = 50.;

  const Int_t nBinsConstEff  = 40;
  const Double_t minConstEff = 0.;
  const Double_t maxConstEff = 2.;

  // const Int_t nBinsConst = 26;
  // const Double_t minConst = -5.5;
  // const Double_t maxConst = 20.5;

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

  //Create histograms
  TString histName = "";
  TString histTitle = "";
  
  histName = "fh2PtVsMassJetPartAll";
  histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}",histName.Data());
  fh2PtVsMassJetPartAll = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
  fOutput->Add(fh2PtVsMassJetPartAll);

  histName = "fh2PtVsMassJetPartMatch";
  histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}",histName.Data());
  fh2PtVsMassJetPartMatch = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
  fOutput->Add(fh2PtVsMassJetPartMatch);

  histName = "fh2PtVsMassJetPartTagged";
  histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}",histName.Data());
  fh2PtVsMassJetPartTagged = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
  fOutput->Add(fh2PtVsMassJetPartTagged);

  histName = "fh2PtVsMassJetPartTaggedMatch";
  histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}",histName.Data());
  fh2PtVsMassJetPartTaggedMatch = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
  fOutput->Add(fh2PtVsMassJetPartTaggedMatch);

  histName = "fh2PtVsMassJetDetAll";
  histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}",histName.Data());
  fh2PtVsMassJetDetAll = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
  fOutput->Add(fh2PtVsMassJetDetAll);

  histName = "fh2PtVsMassJetDetTagged";
  histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}",histName.Data());
  fh2PtVsMassJetDetTagged = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
  fOutput->Add(fh2PtVsMassJetDetTagged);

  histName = "fh2EtaPhiMatchedDet";
  histTitle = TString::Format("%s;#eta;#varphi",histName.Data());
  fh2EtaPhiMatchedDet = new TH2F(histName.Data(),histTitle.Data(),100,-1.,1.,72,0.,TMath::TwoPi());
  fOutput->Add(fh2EtaPhiMatchedDet);

  histName = "fh2EtaPhiMatchedPart";
  histTitle = TString::Format("%s;#eta;#varphi",histName.Data());
  fh2EtaPhiMatchedPart = new TH2F(histName.Data(),histTitle.Data(),100,-1.,1.,72,0.,TMath::TwoPi());
  fOutput->Add(fh2EtaPhiMatchedPart);

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

  fh1AreaPartAll = new TH1D("fh1AreaPartAll","fh1AreaPartAll",100.,0.,1.);
  fOutput->Add(fh1AreaPartAll);

  fh1AreaDetAll = new TH1D("fh1AreaDetAll","fh1AreaDetAll",100.,0.,1.);
  fOutput->Add(fh1AreaDetAll);


  // =========== 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);

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

//________________________________________________________________________
Bool_t AliAnalysisTaskJetMassResponseDet::Run()
{
  // Run analysis code here, if needed. It will be executed before FillHistograms().
  return kTRUE;
}

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

  AliJetContainer *cPart = GetJetContainer(fContainerPart);
  AliJetContainer *cDet = GetJetContainer(fContainerDet);
  AliEmcalJet* jPart = NULL;
  AliEmcalJet* jDet = NULL;

  //loop on particle level jets
  Int_t nAccPart = 0;
  if(cPart) {
    cPart->ResetCurrentID();
    while((jPart = cPart->GetNextAcceptJet())) {
      fh2PtVsMassJetPartAll->Fill(jPart->Pt(),jPart->M());
      fh1AreaPartAll->Fill(jPart->Area());
      nAccPart++;
      jDet = jPart->ClosestJet();
      if(jDet) fh2PtVsMassJetPartMatch->Fill(jPart->Pt(),jPart->M());
      if(jPart->GetTagStatus()<1 || !jPart->GetTaggedJet())
	continue;
      fh2PtVsMassJetPartTagged->Fill(jPart->Pt(),jPart->M());
      if(jDet) fh2PtVsMassJetPartTaggedMatch->Fill(jPart->Pt(),jPart->M());
    }
  }
  
  //loop on detector level jets
  Int_t nAccDet = 0;
  if(cDet) {
    cDet->ResetCurrentID();
    while((jDet = cDet->GetNextAcceptJet())) {
      Double_t mjet = GetJetMass(jDet);     
      fh2PtVsMassJetDetAll->Fill(jDet->Pt(),mjet);
      fh1AreaDetAll->Fill(jDet->Area());
      nAccDet++;
      if(jDet->GetTagStatus()>=1 && jDet->GetTaggedJet())
	 fh2PtVsMassJetDetTagged->Fill(jDet->Pt(),mjet);
       
       //fill detector response
       jPart = jDet->ClosestJet();
       if(jPart) {
	 fh2EtaPhiMatchedDet->Fill(jDet->Eta(),jDet->Phi());
	 fh2EtaPhiMatchedPart->Fill(jPart->Eta(),jPart->Phi());

	 Int_t nConstPart = jPart->GetNumberOfConstituents();
	 Int_t nConstDet = jDet->GetNumberOfConstituents();
	 Double_t eff = -1.;
	 if(nConstPart>0) eff = (Double_t)nConstDet/((Double_t)nConstPart);
	 Double_t var[5] = {GetJetMass(jDet),jPart->M(),jDet->Pt(),jPart->Pt(),eff};
	 fhnMassResponse->Fill(var);
       }
    }
  }

  return kTRUE;
}

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

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

  return kTRUE;
}

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

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