ROOT logo
//
// Jet QG tagging analysis task.
//
// Author: D. Caffarri, L. Cunqueiro 

#include <TClonesArray.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TH3F.h>
#include <THnSparse.h>
#include <TTree.h>
#include <TList.h>
#include <TLorentzVector.h>
#include <TProfile.h>
#include <TChain.h>
#include <TSystem.h>
#include <TFile.h>
#include <TKey.h>
#include "TMatrixD.h"
#include "TMatrixDSym.h"
#include "TMatrixDSymEigen.h"
#include "TVector3.h"
#include "TVector2.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 "AliParticleContainer.h"
#include "AliPythiaInfo.h"


#include "AliAODEvent.h"

#include "AliAnalysisTaskEmcalQGTagging.h"

using std::cout;
using std::endl;

ClassImp(AliAnalysisTaskEmcalQGTagging)

//________________________________________________________________________
AliAnalysisTaskEmcalQGTagging::AliAnalysisTaskEmcalQGTagging() : 
  AliAnalysisTaskEmcalJet("AliAnalysisTaskEmcalQGTagging", kTRUE),
  fContainer(0),
  fMinFractionShared(0),
  fJetShapeType(kData),
  fJetShapeSub(kNoSub),
  fShapesVar(0),
  fPtThreshold(-9999.),
  fRMatching(0.3),
  fh2ResponseUW(0x0),
  fh2ResponseW(0x0), 
  fPhiJetCorr6(0x0), 
  fPhiJetCorr7(0x0),
  fEtaJetCorr6(0x0),
  fEtaJetCorr7(0x0),
  fPtJetCorr(0x0),
  fPtJet(0x0),
  fTreeObservableTagging(0)

{
  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
AliAnalysisTaskEmcalQGTagging::AliAnalysisTaskEmcalQGTagging(const char *name) : 
  AliAnalysisTaskEmcalJet(name, kTRUE),
  fContainer(0),
  fMinFractionShared(0),
  fJetShapeType(kData),
  fJetShapeSub(kNoSub),
  fShapesVar(0),
  fPtThreshold(-9999.),
  fRMatching(0.3),
  fh2ResponseUW(0x0),
  fh2ResponseW(0x0),
  fPhiJetCorr6(0x0), 
  fPhiJetCorr7(0x0),
  fEtaJetCorr6(0x0),
  fEtaJetCorr7(0x0),
  fPtJetCorr(0x0),
  fPtJet(0x0),
  fTreeObservableTagging(0)
  
{
  // Standard constructor.
  
  SetMakeGeneralHistograms(kTRUE);

  DefineOutput(1, TTree::Class());

}

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

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

  AliAnalysisTaskEmcalJet::UserCreateOutputObjects();

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

  fTreeObservableTagging = new TTree("fTreeJetShape", "fTreeJetShape");
  Int_t nVar = 18; 
  fShapesVar = new Float_t [nVar]; 
  TString *fShapesVarNames = new TString [nVar];

  fShapesVarNames[0] = "partonCode"; 
  fShapesVarNames[1] = "ptJet"; 
  fShapesVarNames[2] = "ptDJet"; 
  fShapesVarNames[3] = "mJet";
  fShapesVarNames[4] = "nbOfConst";
  fShapesVarNames[5] = "angularity";
  fShapesVarNames[6] = "circularity";
  fShapesVarNames[7] = "lesub";
  fShapesVarNames[8] = "sigma2";

  fShapesVarNames[9] = "ptJetMatch"; 
  fShapesVarNames[10] = "ptDJetMatch"; 
  fShapesVarNames[11] = "mJetMatch";
  fShapesVarNames[12] = "nbOfConstMatch";
  fShapesVarNames[13] = "angularityMatch";
  fShapesVarNames[14] = "circularityMatch";
  fShapesVarNames[15] = "lesubMatch";
  fShapesVarNames[16] = "sigma2Match";
  fShapesVarNames[17]="weightPythia";

  for(Int_t ivar=0; ivar < nVar; ivar++){
    cout<<"looping over variables"<<endl;
    fTreeObservableTagging->Branch(fShapesVarNames[ivar].Data(), &fShapesVar[ivar], Form("%s/F", fShapesVarNames[ivar].Data()));

    //if( ivar == 4 )  fTreeObservableTagging->Branch(fShapesVarNames[ivar].Data(), &fShapesVar[ivar], Form("%s/I", fShapesVarNames[ivar].Data()));

  }

  fh2ResponseUW= new TH2F("fh2ResponseUW", "fh2ResponseUW", 100, 0, 200,  100, 0, 200); 
  fOutput->Add(fh2ResponseUW);
   fh2ResponseW= new TH2F("fh2ResponseW", "fh2ResponseW", 100, 0, 200,  100, 0, 200); 
   fOutput->Add(fh2ResponseW);
  fPhiJetCorr6= new TH2F("fPhiJetCorr6", "fPhiJetCorr6", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
  fOutput->Add(fPhiJetCorr6);
  fEtaJetCorr6= new TH2F("fEtaJetCorr6", "fEtaJetCorr6", 50, -1.5, 1.5, 50, -1.5, 1.5);
  fOutput->Add(fEtaJetCorr6);
  
  fPhiJetCorr7= new TH2F("fPhiJetCorr7", "fPhiJetCorr7", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
  fOutput->Add(fPhiJetCorr7);
  fEtaJetCorr7= new TH2F("fEtaJetCorr7", "fEtaJetCorr7", 50, -1.5, 1.5, 50, -1.5, 1.5);
  fOutput->Add(fEtaJetCorr7);
  
  fPtJetCorr= new TH2F("fPtJetCorr", "fPtJetCorr", 100, 0, 200,  100, 0, 200);
  fOutput->Add(fPtJetCorr);
  fPtJet= new TH1F("fPtJet", "fPtJet", 100, 0, 200);
  fOutput->Add(fPtJet); 


  fOutput->Add(fTreeObservableTagging);
  TH1::AddDirectory(oldStatus);
  PostData(1, fOutput); // Post data for ALL output slots > 0 here.

}

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

  return kTRUE;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskEmcalQGTagging::FillHistograms()
{
  // Fill histograms.
  //cout<<"base container"<<endl;
  AliEmcalJet* jet1 = NULL;
  AliJetContainer *jetCont = GetJetContainer(0);
  Float_t kWeight=1;
  if(fCent>10) return 0;
  if(jetCont) {
    jetCont->ResetCurrentID();
    while((jet1 = jetCont->GetNextAcceptJet())) {
      if (!jet1) continue;
      AliEmcalJet* jet2 = 0x0;
      fPtJet->Fill(jet1->Pt());

      if (!(fJetShapeType == kData)) {
	AliPythiaInfo *partonsInfo = 0x0;
	if((fJetShapeType == kTrueDet) || (fJetShapeType == kDetEmb)){
	  AliJetContainer *jetContTrue = GetJetContainer(1);
	  jet2 = jet1->ClosestJet();
	  if (!jet2) {
	    Printf("jet2 not exists, returning");
	    continue;
	  }
          fh2ResponseUW->Fill(jet1->Pt(),jet2->Pt());	  


	  Double_t fraction = jetCont->GetFractionSharedPt(jet1);
          cout<<"hey a jet"<<fraction<<" "<<jet1->Pt()<<" "<<jet2->Pt()<<" "<<fCent<<endl;
          
	  if(fraction<fMinFractionShared) continue;
	  partonsInfo = (AliPythiaInfo*) jetContTrue->GetPythiaInfo();     
	  if(!partonsInfo) return 0;
          
	}
	else {
	  partonsInfo = (AliPythiaInfo*) jetCont->GetPythiaInfo(); 
	  jet2=jet1;
          if(!partonsInfo) return 0;
	}
	
	Double_t jp1=(jet2->Phi())-(partonsInfo->GetPartonPhi6()); 
	Double_t detap1=(jet2->Eta())-(partonsInfo->GetPartonEta6());
     	kWeight=partonsInfo->GetPythiaEventWeight();
        fh2ResponseW->Fill(jet1->Pt(),jet2->Pt(),kWeight);
	if (jp1< -1*TMath::Pi()) jp1 = (-2*TMath::Pi())-jp1;
	else if (jp1 > TMath::Pi()) jp1 = (2*TMath::Pi())-jp1;
	Float_t dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
	fEtaJetCorr6->Fill(jet2->Eta(), partonsInfo->GetPartonEta6());
	fPhiJetCorr6->Fill(jet2->Phi(), partonsInfo->GetPartonPhi6());
	if(dRp1 < fRMatching) {
	  fShapesVar[0] = partonsInfo->GetPartonFlag6();
	  fPtJetCorr ->Fill(partonsInfo->GetPartonPt6(), jet2->Pt());
	}
	else {
	  jp1=(jet2->Phi())-(partonsInfo->GetPartonPhi7());
	  detap1=(jet2->Eta())-(partonsInfo->GetPartonEta7());
	  if (jp1< -1*TMath::Pi()) jp1= (-2*TMath::Pi())-jp1;
	  else if (jp1 > TMath::Pi()) jp1 = (2*TMath::Pi())-jp1;
	  dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
	  fEtaJetCorr7->Fill(jet2->Eta(), partonsInfo->GetPartonEta7());
	  fPhiJetCorr7->Fill(jet2->Phi(), partonsInfo->GetPartonPhi7());
	  if(dRp1 < fRMatching) {
	    fShapesVar[0] = partonsInfo->GetPartonFlag7();
	    fPtJetCorr ->Fill(partonsInfo->GetPartonPt7(), jet2->Pt());
	  }
	  else continue;
	}
      }
      else
	fShapesVar[0] = 0.;
     
      Double_t ptSubtracted = 0; 

      if (((fJetShapeType == kData) || (fJetShapeType == kDetEmb)) && (fJetShapeSub == kConstSub))
	  ptSubtracted = jet1->Pt(); 
      else ptSubtracted  = jet1->Pt() - GetRhoVal(0)*jet1->Area();
	  
      if ((fJetShapeType == kData || fJetShapeType== kDetEmb)) 
	if ( ptSubtracted < fPtThreshold) continue;	
      
      fShapesVar[1] = ptSubtracted;
      fShapesVar[2] = GetJetpTD(jet1,0);
      fShapesVar[3] = GetJetMass(jet1,0);
      fShapesVar[4] = 1.*GetJetNumberOfConstituents(jet1,0);
      fShapesVar[5] = GetJetAngularity(jet1,0);
      fShapesVar[6] = GetJetCircularity(jet1,0);
      fShapesVar[7] = GetJetLeSub(jet1,0);
      fShapesVar[8] = GetSigma2(jet1,0);
      
      Float_t ptMatch=0., ptDMatch=0., massMatch=0., constMatch=0.,angulMatch=0.,circMatch=0., lesubMatch=0., sigma2Match=0.;
      Int_t kMatched = 0;
      if (fJetShapeType == kTrueDet || fJetShapeType == kDetEmb) {
	kMatched = 1;
	ptMatch=jet2->Pt();
	ptDMatch=GetJetpTD(jet2, kMatched); 
	massMatch=GetJetMass(jet2,kMatched);
	constMatch=1.*GetJetNumberOfConstituents(jet2,kMatched);
	angulMatch=GetJetAngularity(jet2, kMatched);
	circMatch=GetJetCircularity(jet2, kMatched);
	lesubMatch=GetJetLeSub(jet2, kMatched);
	sigma2Match = GetSigma2(jet2, kMatched);
        
      }

      if (fJetShapeType == kTrue || fJetShapeType == kData) {
	kMatched = 0;
	ptMatch=0.;
	ptDMatch=0.; 
	massMatch=0.;
	constMatch=0.;
	angulMatch=0.;
	circMatch=0.;
	lesubMatch=0.;
	sigma2Match =0.;
      
      }
      
      fShapesVar[9] = ptMatch;
      fShapesVar[10] = ptDMatch;
      fShapesVar[11] = massMatch;
      fShapesVar[12] = constMatch;
      fShapesVar[13] = angulMatch;
      fShapesVar[14] = circMatch;
      fShapesVar[15] = lesubMatch;
      fShapesVar[16] = sigma2Match;
      fShapesVar[17] = kWeight;
      fTreeObservableTagging->Fill();
       
    }
    
  } 
  
  return kTRUE;
}

//________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::GetJetMass(AliEmcalJet *jet,Int_t jetContNb=0) {
  //calc subtracted jet mass
  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
    return jet->GetSecondOrderSubtracted();
  else 
    return jet->M();
}

//________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::Angularity(AliEmcalJet *jet, Int_t jetContNb = 0){

  AliJetContainer *jetCont = GetJetContainer(jetContNb);
  if (!jet->GetNumberOfTracks())
      return 0; 
    Double_t den=0.;
    Double_t num = 0.;
    AliVParticle *vp1 = 0x0;
    for(UInt_t i = 0; i < jet->GetNumberOfTracks(); i++) {
      vp1 = static_cast<AliVParticle*>(jet->TrackAt(i, jetCont->GetParticleContainer()->GetArray()));  
      Double_t dphi = vp1->Phi()-jet->Phi();
      if(dphi<-1.*TMath::Pi()) dphi+=TMath::TwoPi();
      if(dphi>TMath::Pi()) dphi-=TMath::TwoPi();
      Double_t dr2 = (vp1->Eta()-jet->Eta())*(vp1->Eta()-jet->Eta()) + dphi*dphi;
      Double_t dr = TMath::Sqrt(dr2);
      num=num+vp1->Pt()*dr;
      den=den+vp1->Pt();
    }
    return num/den;
} 

//________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::GetJetAngularity(AliEmcalJet *jet, Int_t jetContNb = 0) {

  if((fJetShapeSub==kDerivSub) && (jetContNb==0))
    return jet->GetSecondOrderSubtractedAngularity();
  else
    return Angularity(jet, jetContNb);
 
}


//________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::PTD(AliEmcalJet *jet, Int_t jetContNb = 0){

  AliJetContainer *jetCont = GetJetContainer(jetContNb);
  if (!jet->GetNumberOfTracks())
      return 0; 
    Double_t den=0.;
    Double_t num = 0.;
    AliVParticle *vp1 = 0x0;
    for(UInt_t i = 0; i < jet->GetNumberOfTracks(); i++) {
      vp1 = static_cast<AliVParticle*>(jet->TrackAt(i, jetCont->GetParticleContainer()->GetArray()));  
      num=num+vp1->Pt()*vp1->Pt();
      den=den+vp1->Pt();
    }
    return TMath::Sqrt(num)/den;
} 

//________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::GetJetpTD(AliEmcalJet *jet, Int_t jetContNb = 0) {
  //calc subtracted jet mass
  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
    return jet->GetSecondOrderSubtractedpTD();
  else
    return PTD(jet, jetContNb);
 
}

//_____________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::Circularity(AliEmcalJet *jet, Int_t jetContNb = 0){

  AliJetContainer *jetCont = GetJetContainer(jetContNb);
  if (!jet->GetNumberOfTracks())
    return 0; 
  Double_t mxx    = 0.;
  Double_t myy    = 0.;
  Double_t mxy    = 0.;
  int  nc     = 0;
  Double_t sump2  = 0.;
  Double_t pxjet=jet->Px();
  Double_t pyjet=jet->Py();
  Double_t pzjet=jet->Pz();
  
  
  //2 general normalized vectors perpendicular to the jet
  TVector3  ppJ1(pxjet, pyjet, pzjet);
  TVector3  ppJ3(- pxjet* pzjet, - pyjet * pzjet, pxjet * pxjet + pyjet * pyjet);
  ppJ3.SetMag(1.);
  TVector3  ppJ2(-pyjet, pxjet, 0);
  ppJ2.SetMag(1.);
  AliVParticle *vp1 = 0x0;
  for(UInt_t i = 0; i < jet->GetNumberOfTracks(); i++) {
    vp1 = static_cast<AliVParticle*>(jet->TrackAt(i, jetCont->GetParticleContainer()->GetArray()));  
    
    
    TVector3 pp(vp1->Px(), vp1->Py(), vp1->Pz());
   
    //local frame
    TVector3 pLong = pp.Dot(ppJ1) / ppJ1.Mag2() * ppJ1;
    TVector3 pPerp = pp - pLong;
    //projection onto the two perpendicular vectors defined above
    
    Float_t ppjX = pPerp.Dot(ppJ2);
    Float_t ppjY = pPerp.Dot(ppJ3);
    Float_t ppjT = TMath::Sqrt(ppjX * ppjX + ppjY * ppjY);
    if(ppjT<=0) return 0;
    
    mxx += (ppjX * ppjX / ppjT);
    myy += (ppjY * ppjY / ppjT);
    mxy += (ppjX * ppjY / ppjT);
    nc++;
    sump2 += ppjT;}
  
  if(nc<2) return 0;
  if(sump2==0) return 0;
  // Sphericity Matrix
  Double_t ele[4] = {mxx / sump2, mxy / sump2, mxy / sump2, myy / sump2};
  TMatrixDSym m0(2,ele);
  
  // Find eigenvectors
  TMatrixDSymEigen m(m0);
  TVectorD eval(2);
  TMatrixD evecm = m.GetEigenVectors();
  eval  = m.GetEigenValues();
  // Largest eigenvector
  int jev = 0;
  //  cout<<eval[0]<<" "<<eval[1]<<endl;
  if (eval[0] < eval[1]) jev = 1;
  TVectorD evec0(2);
  // Principle axis
  evec0 = TMatrixDColumn(evecm, jev);
  Double_t compx=evec0[0];
  Double_t compy=evec0[1];
  TVector2 evec(compx, compy);
  Double_t circ=0;
  if(jev==1) circ=2*eval[0];
  if(jev==0) circ=2*eval[1];
  
  return circ;
  
  
  
}




//________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::GetJetCircularity(AliEmcalJet *jet, Int_t jetContNb =0 ) {
  //calc subtracted jet mass
 
  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
    return jet->GetSecondOrderSubtractedCircularity();
  else
    return Circularity(jet, jetContNb);
 
}

//________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::LeSub(AliEmcalJet *jet, Int_t jetContNb =0 ){

  AliJetContainer *jetCont = GetJetContainer(jetContNb);
  if (!jet->GetNumberOfTracks())
      return 0; 
    Double_t den=0.;
    Double_t num = 0.;
    AliVParticle *vp1 = 0x0;
    AliVParticle *vp2 = 0x0;
    std::vector<int> ordindex;
    ordindex=jet->SortConstituentsPt(jetCont->GetParticleContainer()->GetArray());
    
   vp1 = static_cast<AliVParticle*>(jet->TrackAt(ordindex[0], jetCont->GetParticleContainer()->GetArray()));  
   vp2 = static_cast<AliVParticle*>(jet->TrackAt(ordindex[1], jetCont->GetParticleContainer()->GetArray()));  
     
  num=vp1->Pt();
  den=vp2->Pt();
  
return num-den;
} 

//________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::GetJetLeSub(AliEmcalJet *jet, Int_t jetContNb =0) {
  //calc subtracted jet mass
 
  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
    return jet->GetSecondOrderSubtractedLeSub();
  else
    return LeSub(jet, jetContNb);
 
}

//________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::GetJetNumberOfConstituents(AliEmcalJet *jet,Int_t jetContNb=0) {
  //calc subtracted jet mass
  
  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
    return jet->GetSecondOrderSubtractedConstituent();
  else
    return jet->GetNumberOfTracks();
 
}
   

//______________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::Sigma2(AliEmcalJet *jet, Int_t jetContNb=0){

  AliJetContainer *jetCont = GetJetContainer(jetContNb);
  if (!jet->GetNumberOfTracks())
      return 0; 
      Double_t mxx    = 0.;
      Double_t myy    = 0.;
      Double_t mxy    = 0.;
      int  nc     = 0;
      Double_t sump2  = 0.;
       
     AliVParticle *vp1 = 0x0;
     for(UInt_t i = 0; i < jet->GetNumberOfTracks(); i++) {
       vp1 = static_cast<AliVParticle*>(jet->TrackAt(i, jetCont->GetParticleContainer()->GetArray()));  
       Double_t ppt=vp1->Pt();
       Double_t dphi = vp1->Phi()-jet->Phi();
       if(dphi<-1.*TMath::Pi()) dphi+=TMath::TwoPi();
       if(dphi>TMath::Pi()) dphi-=TMath::TwoPi();
       Double_t deta = vp1->Eta()-jet->Eta();
       mxx += ppt*ppt*deta*deta;
       myy += ppt*ppt*dphi*dphi;
       mxy -= ppt*ppt*deta*dphi;
       nc++;
       sump2 += ppt*ppt;
       
     }  
     if(nc<2) return 0;
     if(sump2==0) return 0;
     // Sphericity Matrix
     Double_t ele[4] = {mxx , mxy , mxy , myy };
     TMatrixDSym m0(2,ele);
     
     // Find eigenvectors
     TMatrixDSymEigen m(m0);
     TVectorD eval(2);
     TMatrixD evecm = m.GetEigenVectors();
     eval  = m.GetEigenValues();
     // Largest eigenvector
     int jev = 0;
     //  cout<<eval[0]<<" "<<eval[1]<<endl;
     if (eval[0] < eval[1]) jev = 1;
     TVectorD evec0(2);
     // Principle axis
     evec0 = TMatrixDColumn(evecm, jev);
     Double_t compx=evec0[0];
     Double_t compy=evec0[1];
     TVector2 evec(compx, compy);
     Double_t sig=0;
     if(jev==1) sig=TMath::Sqrt(TMath::Abs(eval[0])/sump2);
     if(jev==0) sig=TMath::Sqrt(TMath::Abs(eval[1])/sump2);
     
     return sig;
     
}

//________________________________________________________________________
Float_t AliAnalysisTaskEmcalQGTagging::GetSigma2(AliEmcalJet *jet, Int_t jetContNb=0) {
  //calc subtracted jet mass
 
  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
    return jet->GetSecondOrderSubtractedSigma2();
  else
    return Sigma2(jet, jetContNb);
 
}

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

  return kTRUE;
}

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

  // fTreeObservableTagging = dynamic_cast<TTree*>(GetOutputData(1));
  // if (!fTreeObservableTagging){
  //   Printf("ERROR: fTreeObservableTagging not available"); 
  //   return;
  // }

}

 AliAnalysisTaskEmcalQGTagging.cxx:1
 AliAnalysisTaskEmcalQGTagging.cxx:2
 AliAnalysisTaskEmcalQGTagging.cxx:3
 AliAnalysisTaskEmcalQGTagging.cxx:4
 AliAnalysisTaskEmcalQGTagging.cxx:5
 AliAnalysisTaskEmcalQGTagging.cxx:6
 AliAnalysisTaskEmcalQGTagging.cxx:7
 AliAnalysisTaskEmcalQGTagging.cxx:8
 AliAnalysisTaskEmcalQGTagging.cxx:9
 AliAnalysisTaskEmcalQGTagging.cxx:10
 AliAnalysisTaskEmcalQGTagging.cxx:11
 AliAnalysisTaskEmcalQGTagging.cxx:12
 AliAnalysisTaskEmcalQGTagging.cxx:13
 AliAnalysisTaskEmcalQGTagging.cxx:14
 AliAnalysisTaskEmcalQGTagging.cxx:15
 AliAnalysisTaskEmcalQGTagging.cxx:16
 AliAnalysisTaskEmcalQGTagging.cxx:17
 AliAnalysisTaskEmcalQGTagging.cxx:18
 AliAnalysisTaskEmcalQGTagging.cxx:19
 AliAnalysisTaskEmcalQGTagging.cxx:20
 AliAnalysisTaskEmcalQGTagging.cxx:21
 AliAnalysisTaskEmcalQGTagging.cxx:22
 AliAnalysisTaskEmcalQGTagging.cxx:23
 AliAnalysisTaskEmcalQGTagging.cxx:24
 AliAnalysisTaskEmcalQGTagging.cxx:25
 AliAnalysisTaskEmcalQGTagging.cxx:26
 AliAnalysisTaskEmcalQGTagging.cxx:27
 AliAnalysisTaskEmcalQGTagging.cxx:28
 AliAnalysisTaskEmcalQGTagging.cxx:29
 AliAnalysisTaskEmcalQGTagging.cxx:30
 AliAnalysisTaskEmcalQGTagging.cxx:31
 AliAnalysisTaskEmcalQGTagging.cxx:32
 AliAnalysisTaskEmcalQGTagging.cxx:33
 AliAnalysisTaskEmcalQGTagging.cxx:34
 AliAnalysisTaskEmcalQGTagging.cxx:35
 AliAnalysisTaskEmcalQGTagging.cxx:36
 AliAnalysisTaskEmcalQGTagging.cxx:37
 AliAnalysisTaskEmcalQGTagging.cxx:38
 AliAnalysisTaskEmcalQGTagging.cxx:39
 AliAnalysisTaskEmcalQGTagging.cxx:40
 AliAnalysisTaskEmcalQGTagging.cxx:41
 AliAnalysisTaskEmcalQGTagging.cxx:42
 AliAnalysisTaskEmcalQGTagging.cxx:43
 AliAnalysisTaskEmcalQGTagging.cxx:44
 AliAnalysisTaskEmcalQGTagging.cxx:45
 AliAnalysisTaskEmcalQGTagging.cxx:46
 AliAnalysisTaskEmcalQGTagging.cxx:47
 AliAnalysisTaskEmcalQGTagging.cxx:48
 AliAnalysisTaskEmcalQGTagging.cxx:49
 AliAnalysisTaskEmcalQGTagging.cxx:50
 AliAnalysisTaskEmcalQGTagging.cxx:51
 AliAnalysisTaskEmcalQGTagging.cxx:52
 AliAnalysisTaskEmcalQGTagging.cxx:53
 AliAnalysisTaskEmcalQGTagging.cxx:54
 AliAnalysisTaskEmcalQGTagging.cxx:55
 AliAnalysisTaskEmcalQGTagging.cxx:56
 AliAnalysisTaskEmcalQGTagging.cxx:57
 AliAnalysisTaskEmcalQGTagging.cxx:58
 AliAnalysisTaskEmcalQGTagging.cxx:59
 AliAnalysisTaskEmcalQGTagging.cxx:60
 AliAnalysisTaskEmcalQGTagging.cxx:61
 AliAnalysisTaskEmcalQGTagging.cxx:62
 AliAnalysisTaskEmcalQGTagging.cxx:63
 AliAnalysisTaskEmcalQGTagging.cxx:64
 AliAnalysisTaskEmcalQGTagging.cxx:65
 AliAnalysisTaskEmcalQGTagging.cxx:66
 AliAnalysisTaskEmcalQGTagging.cxx:67
 AliAnalysisTaskEmcalQGTagging.cxx:68
 AliAnalysisTaskEmcalQGTagging.cxx:69
 AliAnalysisTaskEmcalQGTagging.cxx:70
 AliAnalysisTaskEmcalQGTagging.cxx:71
 AliAnalysisTaskEmcalQGTagging.cxx:72
 AliAnalysisTaskEmcalQGTagging.cxx:73
 AliAnalysisTaskEmcalQGTagging.cxx:74
 AliAnalysisTaskEmcalQGTagging.cxx:75
 AliAnalysisTaskEmcalQGTagging.cxx:76
 AliAnalysisTaskEmcalQGTagging.cxx:77
 AliAnalysisTaskEmcalQGTagging.cxx:78
 AliAnalysisTaskEmcalQGTagging.cxx:79
 AliAnalysisTaskEmcalQGTagging.cxx:80
 AliAnalysisTaskEmcalQGTagging.cxx:81
 AliAnalysisTaskEmcalQGTagging.cxx:82
 AliAnalysisTaskEmcalQGTagging.cxx:83
 AliAnalysisTaskEmcalQGTagging.cxx:84
 AliAnalysisTaskEmcalQGTagging.cxx:85
 AliAnalysisTaskEmcalQGTagging.cxx:86
 AliAnalysisTaskEmcalQGTagging.cxx:87
 AliAnalysisTaskEmcalQGTagging.cxx:88
 AliAnalysisTaskEmcalQGTagging.cxx:89
 AliAnalysisTaskEmcalQGTagging.cxx:90
 AliAnalysisTaskEmcalQGTagging.cxx:91
 AliAnalysisTaskEmcalQGTagging.cxx:92
 AliAnalysisTaskEmcalQGTagging.cxx:93
 AliAnalysisTaskEmcalQGTagging.cxx:94
 AliAnalysisTaskEmcalQGTagging.cxx:95
 AliAnalysisTaskEmcalQGTagging.cxx:96
 AliAnalysisTaskEmcalQGTagging.cxx:97
 AliAnalysisTaskEmcalQGTagging.cxx:98
 AliAnalysisTaskEmcalQGTagging.cxx:99
 AliAnalysisTaskEmcalQGTagging.cxx:100
 AliAnalysisTaskEmcalQGTagging.cxx:101
 AliAnalysisTaskEmcalQGTagging.cxx:102
 AliAnalysisTaskEmcalQGTagging.cxx:103
 AliAnalysisTaskEmcalQGTagging.cxx:104
 AliAnalysisTaskEmcalQGTagging.cxx:105
 AliAnalysisTaskEmcalQGTagging.cxx:106
 AliAnalysisTaskEmcalQGTagging.cxx:107
 AliAnalysisTaskEmcalQGTagging.cxx:108
 AliAnalysisTaskEmcalQGTagging.cxx:109
 AliAnalysisTaskEmcalQGTagging.cxx:110
 AliAnalysisTaskEmcalQGTagging.cxx:111
 AliAnalysisTaskEmcalQGTagging.cxx:112
 AliAnalysisTaskEmcalQGTagging.cxx:113
 AliAnalysisTaskEmcalQGTagging.cxx:114
 AliAnalysisTaskEmcalQGTagging.cxx:115
 AliAnalysisTaskEmcalQGTagging.cxx:116
 AliAnalysisTaskEmcalQGTagging.cxx:117
 AliAnalysisTaskEmcalQGTagging.cxx:118
 AliAnalysisTaskEmcalQGTagging.cxx:119
 AliAnalysisTaskEmcalQGTagging.cxx:120
 AliAnalysisTaskEmcalQGTagging.cxx:121
 AliAnalysisTaskEmcalQGTagging.cxx:122
 AliAnalysisTaskEmcalQGTagging.cxx:123
 AliAnalysisTaskEmcalQGTagging.cxx:124
 AliAnalysisTaskEmcalQGTagging.cxx:125
 AliAnalysisTaskEmcalQGTagging.cxx:126
 AliAnalysisTaskEmcalQGTagging.cxx:127
 AliAnalysisTaskEmcalQGTagging.cxx:128
 AliAnalysisTaskEmcalQGTagging.cxx:129
 AliAnalysisTaskEmcalQGTagging.cxx:130
 AliAnalysisTaskEmcalQGTagging.cxx:131
 AliAnalysisTaskEmcalQGTagging.cxx:132
 AliAnalysisTaskEmcalQGTagging.cxx:133
 AliAnalysisTaskEmcalQGTagging.cxx:134
 AliAnalysisTaskEmcalQGTagging.cxx:135
 AliAnalysisTaskEmcalQGTagging.cxx:136
 AliAnalysisTaskEmcalQGTagging.cxx:137
 AliAnalysisTaskEmcalQGTagging.cxx:138
 AliAnalysisTaskEmcalQGTagging.cxx:139
 AliAnalysisTaskEmcalQGTagging.cxx:140
 AliAnalysisTaskEmcalQGTagging.cxx:141
 AliAnalysisTaskEmcalQGTagging.cxx:142
 AliAnalysisTaskEmcalQGTagging.cxx:143
 AliAnalysisTaskEmcalQGTagging.cxx:144
 AliAnalysisTaskEmcalQGTagging.cxx:145
 AliAnalysisTaskEmcalQGTagging.cxx:146
 AliAnalysisTaskEmcalQGTagging.cxx:147
 AliAnalysisTaskEmcalQGTagging.cxx:148
 AliAnalysisTaskEmcalQGTagging.cxx:149
 AliAnalysisTaskEmcalQGTagging.cxx:150
 AliAnalysisTaskEmcalQGTagging.cxx:151
 AliAnalysisTaskEmcalQGTagging.cxx:152
 AliAnalysisTaskEmcalQGTagging.cxx:153
 AliAnalysisTaskEmcalQGTagging.cxx:154
 AliAnalysisTaskEmcalQGTagging.cxx:155
 AliAnalysisTaskEmcalQGTagging.cxx:156
 AliAnalysisTaskEmcalQGTagging.cxx:157
 AliAnalysisTaskEmcalQGTagging.cxx:158
 AliAnalysisTaskEmcalQGTagging.cxx:159
 AliAnalysisTaskEmcalQGTagging.cxx:160
 AliAnalysisTaskEmcalQGTagging.cxx:161
 AliAnalysisTaskEmcalQGTagging.cxx:162
 AliAnalysisTaskEmcalQGTagging.cxx:163
 AliAnalysisTaskEmcalQGTagging.cxx:164
 AliAnalysisTaskEmcalQGTagging.cxx:165
 AliAnalysisTaskEmcalQGTagging.cxx:166
 AliAnalysisTaskEmcalQGTagging.cxx:167
 AliAnalysisTaskEmcalQGTagging.cxx:168
 AliAnalysisTaskEmcalQGTagging.cxx:169
 AliAnalysisTaskEmcalQGTagging.cxx:170
 AliAnalysisTaskEmcalQGTagging.cxx:171
 AliAnalysisTaskEmcalQGTagging.cxx:172
 AliAnalysisTaskEmcalQGTagging.cxx:173
 AliAnalysisTaskEmcalQGTagging.cxx:174
 AliAnalysisTaskEmcalQGTagging.cxx:175
 AliAnalysisTaskEmcalQGTagging.cxx:176
 AliAnalysisTaskEmcalQGTagging.cxx:177
 AliAnalysisTaskEmcalQGTagging.cxx:178
 AliAnalysisTaskEmcalQGTagging.cxx:179
 AliAnalysisTaskEmcalQGTagging.cxx:180
 AliAnalysisTaskEmcalQGTagging.cxx:181
 AliAnalysisTaskEmcalQGTagging.cxx:182
 AliAnalysisTaskEmcalQGTagging.cxx:183
 AliAnalysisTaskEmcalQGTagging.cxx:184
 AliAnalysisTaskEmcalQGTagging.cxx:185
 AliAnalysisTaskEmcalQGTagging.cxx:186
 AliAnalysisTaskEmcalQGTagging.cxx:187
 AliAnalysisTaskEmcalQGTagging.cxx:188
 AliAnalysisTaskEmcalQGTagging.cxx:189
 AliAnalysisTaskEmcalQGTagging.cxx:190
 AliAnalysisTaskEmcalQGTagging.cxx:191
 AliAnalysisTaskEmcalQGTagging.cxx:192
 AliAnalysisTaskEmcalQGTagging.cxx:193
 AliAnalysisTaskEmcalQGTagging.cxx:194
 AliAnalysisTaskEmcalQGTagging.cxx:195
 AliAnalysisTaskEmcalQGTagging.cxx:196
 AliAnalysisTaskEmcalQGTagging.cxx:197
 AliAnalysisTaskEmcalQGTagging.cxx:198
 AliAnalysisTaskEmcalQGTagging.cxx:199
 AliAnalysisTaskEmcalQGTagging.cxx:200
 AliAnalysisTaskEmcalQGTagging.cxx:201
 AliAnalysisTaskEmcalQGTagging.cxx:202
 AliAnalysisTaskEmcalQGTagging.cxx:203
 AliAnalysisTaskEmcalQGTagging.cxx:204
 AliAnalysisTaskEmcalQGTagging.cxx:205
 AliAnalysisTaskEmcalQGTagging.cxx:206
 AliAnalysisTaskEmcalQGTagging.cxx:207
 AliAnalysisTaskEmcalQGTagging.cxx:208
 AliAnalysisTaskEmcalQGTagging.cxx:209
 AliAnalysisTaskEmcalQGTagging.cxx:210
 AliAnalysisTaskEmcalQGTagging.cxx:211
 AliAnalysisTaskEmcalQGTagging.cxx:212
 AliAnalysisTaskEmcalQGTagging.cxx:213
 AliAnalysisTaskEmcalQGTagging.cxx:214
 AliAnalysisTaskEmcalQGTagging.cxx:215
 AliAnalysisTaskEmcalQGTagging.cxx:216
 AliAnalysisTaskEmcalQGTagging.cxx:217
 AliAnalysisTaskEmcalQGTagging.cxx:218
 AliAnalysisTaskEmcalQGTagging.cxx:219
 AliAnalysisTaskEmcalQGTagging.cxx:220
 AliAnalysisTaskEmcalQGTagging.cxx:221
 AliAnalysisTaskEmcalQGTagging.cxx:222
 AliAnalysisTaskEmcalQGTagging.cxx:223
 AliAnalysisTaskEmcalQGTagging.cxx:224
 AliAnalysisTaskEmcalQGTagging.cxx:225
 AliAnalysisTaskEmcalQGTagging.cxx:226
 AliAnalysisTaskEmcalQGTagging.cxx:227
 AliAnalysisTaskEmcalQGTagging.cxx:228
 AliAnalysisTaskEmcalQGTagging.cxx:229
 AliAnalysisTaskEmcalQGTagging.cxx:230
 AliAnalysisTaskEmcalQGTagging.cxx:231
 AliAnalysisTaskEmcalQGTagging.cxx:232
 AliAnalysisTaskEmcalQGTagging.cxx:233
 AliAnalysisTaskEmcalQGTagging.cxx:234
 AliAnalysisTaskEmcalQGTagging.cxx:235
 AliAnalysisTaskEmcalQGTagging.cxx:236
 AliAnalysisTaskEmcalQGTagging.cxx:237
 AliAnalysisTaskEmcalQGTagging.cxx:238
 AliAnalysisTaskEmcalQGTagging.cxx:239
 AliAnalysisTaskEmcalQGTagging.cxx:240
 AliAnalysisTaskEmcalQGTagging.cxx:241
 AliAnalysisTaskEmcalQGTagging.cxx:242
 AliAnalysisTaskEmcalQGTagging.cxx:243
 AliAnalysisTaskEmcalQGTagging.cxx:244
 AliAnalysisTaskEmcalQGTagging.cxx:245
 AliAnalysisTaskEmcalQGTagging.cxx:246
 AliAnalysisTaskEmcalQGTagging.cxx:247
 AliAnalysisTaskEmcalQGTagging.cxx:248
 AliAnalysisTaskEmcalQGTagging.cxx:249
 AliAnalysisTaskEmcalQGTagging.cxx:250
 AliAnalysisTaskEmcalQGTagging.cxx:251
 AliAnalysisTaskEmcalQGTagging.cxx:252
 AliAnalysisTaskEmcalQGTagging.cxx:253
 AliAnalysisTaskEmcalQGTagging.cxx:254
 AliAnalysisTaskEmcalQGTagging.cxx:255
 AliAnalysisTaskEmcalQGTagging.cxx:256
 AliAnalysisTaskEmcalQGTagging.cxx:257
 AliAnalysisTaskEmcalQGTagging.cxx:258
 AliAnalysisTaskEmcalQGTagging.cxx:259
 AliAnalysisTaskEmcalQGTagging.cxx:260
 AliAnalysisTaskEmcalQGTagging.cxx:261
 AliAnalysisTaskEmcalQGTagging.cxx:262
 AliAnalysisTaskEmcalQGTagging.cxx:263
 AliAnalysisTaskEmcalQGTagging.cxx:264
 AliAnalysisTaskEmcalQGTagging.cxx:265
 AliAnalysisTaskEmcalQGTagging.cxx:266
 AliAnalysisTaskEmcalQGTagging.cxx:267
 AliAnalysisTaskEmcalQGTagging.cxx:268
 AliAnalysisTaskEmcalQGTagging.cxx:269
 AliAnalysisTaskEmcalQGTagging.cxx:270
 AliAnalysisTaskEmcalQGTagging.cxx:271
 AliAnalysisTaskEmcalQGTagging.cxx:272
 AliAnalysisTaskEmcalQGTagging.cxx:273
 AliAnalysisTaskEmcalQGTagging.cxx:274
 AliAnalysisTaskEmcalQGTagging.cxx:275
 AliAnalysisTaskEmcalQGTagging.cxx:276
 AliAnalysisTaskEmcalQGTagging.cxx:277
 AliAnalysisTaskEmcalQGTagging.cxx:278
 AliAnalysisTaskEmcalQGTagging.cxx:279
 AliAnalysisTaskEmcalQGTagging.cxx:280
 AliAnalysisTaskEmcalQGTagging.cxx:281
 AliAnalysisTaskEmcalQGTagging.cxx:282
 AliAnalysisTaskEmcalQGTagging.cxx:283
 AliAnalysisTaskEmcalQGTagging.cxx:284
 AliAnalysisTaskEmcalQGTagging.cxx:285
 AliAnalysisTaskEmcalQGTagging.cxx:286
 AliAnalysisTaskEmcalQGTagging.cxx:287
 AliAnalysisTaskEmcalQGTagging.cxx:288
 AliAnalysisTaskEmcalQGTagging.cxx:289
 AliAnalysisTaskEmcalQGTagging.cxx:290
 AliAnalysisTaskEmcalQGTagging.cxx:291
 AliAnalysisTaskEmcalQGTagging.cxx:292
 AliAnalysisTaskEmcalQGTagging.cxx:293
 AliAnalysisTaskEmcalQGTagging.cxx:294
 AliAnalysisTaskEmcalQGTagging.cxx:295
 AliAnalysisTaskEmcalQGTagging.cxx:296
 AliAnalysisTaskEmcalQGTagging.cxx:297
 AliAnalysisTaskEmcalQGTagging.cxx:298
 AliAnalysisTaskEmcalQGTagging.cxx:299
 AliAnalysisTaskEmcalQGTagging.cxx:300
 AliAnalysisTaskEmcalQGTagging.cxx:301
 AliAnalysisTaskEmcalQGTagging.cxx:302
 AliAnalysisTaskEmcalQGTagging.cxx:303
 AliAnalysisTaskEmcalQGTagging.cxx:304
 AliAnalysisTaskEmcalQGTagging.cxx:305
 AliAnalysisTaskEmcalQGTagging.cxx:306
 AliAnalysisTaskEmcalQGTagging.cxx:307
 AliAnalysisTaskEmcalQGTagging.cxx:308
 AliAnalysisTaskEmcalQGTagging.cxx:309
 AliAnalysisTaskEmcalQGTagging.cxx:310
 AliAnalysisTaskEmcalQGTagging.cxx:311
 AliAnalysisTaskEmcalQGTagging.cxx:312
 AliAnalysisTaskEmcalQGTagging.cxx:313
 AliAnalysisTaskEmcalQGTagging.cxx:314
 AliAnalysisTaskEmcalQGTagging.cxx:315
 AliAnalysisTaskEmcalQGTagging.cxx:316
 AliAnalysisTaskEmcalQGTagging.cxx:317
 AliAnalysisTaskEmcalQGTagging.cxx:318
 AliAnalysisTaskEmcalQGTagging.cxx:319
 AliAnalysisTaskEmcalQGTagging.cxx:320
 AliAnalysisTaskEmcalQGTagging.cxx:321
 AliAnalysisTaskEmcalQGTagging.cxx:322
 AliAnalysisTaskEmcalQGTagging.cxx:323
 AliAnalysisTaskEmcalQGTagging.cxx:324
 AliAnalysisTaskEmcalQGTagging.cxx:325
 AliAnalysisTaskEmcalQGTagging.cxx:326
 AliAnalysisTaskEmcalQGTagging.cxx:327
 AliAnalysisTaskEmcalQGTagging.cxx:328
 AliAnalysisTaskEmcalQGTagging.cxx:329
 AliAnalysisTaskEmcalQGTagging.cxx:330
 AliAnalysisTaskEmcalQGTagging.cxx:331
 AliAnalysisTaskEmcalQGTagging.cxx:332
 AliAnalysisTaskEmcalQGTagging.cxx:333
 AliAnalysisTaskEmcalQGTagging.cxx:334
 AliAnalysisTaskEmcalQGTagging.cxx:335
 AliAnalysisTaskEmcalQGTagging.cxx:336
 AliAnalysisTaskEmcalQGTagging.cxx:337
 AliAnalysisTaskEmcalQGTagging.cxx:338
 AliAnalysisTaskEmcalQGTagging.cxx:339
 AliAnalysisTaskEmcalQGTagging.cxx:340
 AliAnalysisTaskEmcalQGTagging.cxx:341
 AliAnalysisTaskEmcalQGTagging.cxx:342
 AliAnalysisTaskEmcalQGTagging.cxx:343
 AliAnalysisTaskEmcalQGTagging.cxx:344
 AliAnalysisTaskEmcalQGTagging.cxx:345
 AliAnalysisTaskEmcalQGTagging.cxx:346
 AliAnalysisTaskEmcalQGTagging.cxx:347
 AliAnalysisTaskEmcalQGTagging.cxx:348
 AliAnalysisTaskEmcalQGTagging.cxx:349
 AliAnalysisTaskEmcalQGTagging.cxx:350
 AliAnalysisTaskEmcalQGTagging.cxx:351
 AliAnalysisTaskEmcalQGTagging.cxx:352
 AliAnalysisTaskEmcalQGTagging.cxx:353
 AliAnalysisTaskEmcalQGTagging.cxx:354
 AliAnalysisTaskEmcalQGTagging.cxx:355
 AliAnalysisTaskEmcalQGTagging.cxx:356
 AliAnalysisTaskEmcalQGTagging.cxx:357
 AliAnalysisTaskEmcalQGTagging.cxx:358
 AliAnalysisTaskEmcalQGTagging.cxx:359
 AliAnalysisTaskEmcalQGTagging.cxx:360
 AliAnalysisTaskEmcalQGTagging.cxx:361
 AliAnalysisTaskEmcalQGTagging.cxx:362
 AliAnalysisTaskEmcalQGTagging.cxx:363
 AliAnalysisTaskEmcalQGTagging.cxx:364
 AliAnalysisTaskEmcalQGTagging.cxx:365
 AliAnalysisTaskEmcalQGTagging.cxx:366
 AliAnalysisTaskEmcalQGTagging.cxx:367
 AliAnalysisTaskEmcalQGTagging.cxx:368
 AliAnalysisTaskEmcalQGTagging.cxx:369
 AliAnalysisTaskEmcalQGTagging.cxx:370
 AliAnalysisTaskEmcalQGTagging.cxx:371
 AliAnalysisTaskEmcalQGTagging.cxx:372
 AliAnalysisTaskEmcalQGTagging.cxx:373
 AliAnalysisTaskEmcalQGTagging.cxx:374
 AliAnalysisTaskEmcalQGTagging.cxx:375
 AliAnalysisTaskEmcalQGTagging.cxx:376
 AliAnalysisTaskEmcalQGTagging.cxx:377
 AliAnalysisTaskEmcalQGTagging.cxx:378
 AliAnalysisTaskEmcalQGTagging.cxx:379
 AliAnalysisTaskEmcalQGTagging.cxx:380
 AliAnalysisTaskEmcalQGTagging.cxx:381
 AliAnalysisTaskEmcalQGTagging.cxx:382
 AliAnalysisTaskEmcalQGTagging.cxx:383
 AliAnalysisTaskEmcalQGTagging.cxx:384
 AliAnalysisTaskEmcalQGTagging.cxx:385
 AliAnalysisTaskEmcalQGTagging.cxx:386
 AliAnalysisTaskEmcalQGTagging.cxx:387
 AliAnalysisTaskEmcalQGTagging.cxx:388
 AliAnalysisTaskEmcalQGTagging.cxx:389
 AliAnalysisTaskEmcalQGTagging.cxx:390
 AliAnalysisTaskEmcalQGTagging.cxx:391
 AliAnalysisTaskEmcalQGTagging.cxx:392
 AliAnalysisTaskEmcalQGTagging.cxx:393
 AliAnalysisTaskEmcalQGTagging.cxx:394
 AliAnalysisTaskEmcalQGTagging.cxx:395
 AliAnalysisTaskEmcalQGTagging.cxx:396
 AliAnalysisTaskEmcalQGTagging.cxx:397
 AliAnalysisTaskEmcalQGTagging.cxx:398
 AliAnalysisTaskEmcalQGTagging.cxx:399
 AliAnalysisTaskEmcalQGTagging.cxx:400
 AliAnalysisTaskEmcalQGTagging.cxx:401
 AliAnalysisTaskEmcalQGTagging.cxx:402
 AliAnalysisTaskEmcalQGTagging.cxx:403
 AliAnalysisTaskEmcalQGTagging.cxx:404
 AliAnalysisTaskEmcalQGTagging.cxx:405
 AliAnalysisTaskEmcalQGTagging.cxx:406
 AliAnalysisTaskEmcalQGTagging.cxx:407
 AliAnalysisTaskEmcalQGTagging.cxx:408
 AliAnalysisTaskEmcalQGTagging.cxx:409
 AliAnalysisTaskEmcalQGTagging.cxx:410
 AliAnalysisTaskEmcalQGTagging.cxx:411
 AliAnalysisTaskEmcalQGTagging.cxx:412
 AliAnalysisTaskEmcalQGTagging.cxx:413
 AliAnalysisTaskEmcalQGTagging.cxx:414
 AliAnalysisTaskEmcalQGTagging.cxx:415
 AliAnalysisTaskEmcalQGTagging.cxx:416
 AliAnalysisTaskEmcalQGTagging.cxx:417
 AliAnalysisTaskEmcalQGTagging.cxx:418
 AliAnalysisTaskEmcalQGTagging.cxx:419
 AliAnalysisTaskEmcalQGTagging.cxx:420
 AliAnalysisTaskEmcalQGTagging.cxx:421
 AliAnalysisTaskEmcalQGTagging.cxx:422
 AliAnalysisTaskEmcalQGTagging.cxx:423
 AliAnalysisTaskEmcalQGTagging.cxx:424
 AliAnalysisTaskEmcalQGTagging.cxx:425
 AliAnalysisTaskEmcalQGTagging.cxx:426
 AliAnalysisTaskEmcalQGTagging.cxx:427
 AliAnalysisTaskEmcalQGTagging.cxx:428
 AliAnalysisTaskEmcalQGTagging.cxx:429
 AliAnalysisTaskEmcalQGTagging.cxx:430
 AliAnalysisTaskEmcalQGTagging.cxx:431
 AliAnalysisTaskEmcalQGTagging.cxx:432
 AliAnalysisTaskEmcalQGTagging.cxx:433
 AliAnalysisTaskEmcalQGTagging.cxx:434
 AliAnalysisTaskEmcalQGTagging.cxx:435
 AliAnalysisTaskEmcalQGTagging.cxx:436
 AliAnalysisTaskEmcalQGTagging.cxx:437
 AliAnalysisTaskEmcalQGTagging.cxx:438
 AliAnalysisTaskEmcalQGTagging.cxx:439
 AliAnalysisTaskEmcalQGTagging.cxx:440
 AliAnalysisTaskEmcalQGTagging.cxx:441
 AliAnalysisTaskEmcalQGTagging.cxx:442
 AliAnalysisTaskEmcalQGTagging.cxx:443
 AliAnalysisTaskEmcalQGTagging.cxx:444
 AliAnalysisTaskEmcalQGTagging.cxx:445
 AliAnalysisTaskEmcalQGTagging.cxx:446
 AliAnalysisTaskEmcalQGTagging.cxx:447
 AliAnalysisTaskEmcalQGTagging.cxx:448
 AliAnalysisTaskEmcalQGTagging.cxx:449
 AliAnalysisTaskEmcalQGTagging.cxx:450
 AliAnalysisTaskEmcalQGTagging.cxx:451
 AliAnalysisTaskEmcalQGTagging.cxx:452
 AliAnalysisTaskEmcalQGTagging.cxx:453
 AliAnalysisTaskEmcalQGTagging.cxx:454
 AliAnalysisTaskEmcalQGTagging.cxx:455
 AliAnalysisTaskEmcalQGTagging.cxx:456
 AliAnalysisTaskEmcalQGTagging.cxx:457
 AliAnalysisTaskEmcalQGTagging.cxx:458
 AliAnalysisTaskEmcalQGTagging.cxx:459
 AliAnalysisTaskEmcalQGTagging.cxx:460
 AliAnalysisTaskEmcalQGTagging.cxx:461
 AliAnalysisTaskEmcalQGTagging.cxx:462
 AliAnalysisTaskEmcalQGTagging.cxx:463
 AliAnalysisTaskEmcalQGTagging.cxx:464
 AliAnalysisTaskEmcalQGTagging.cxx:465
 AliAnalysisTaskEmcalQGTagging.cxx:466
 AliAnalysisTaskEmcalQGTagging.cxx:467
 AliAnalysisTaskEmcalQGTagging.cxx:468
 AliAnalysisTaskEmcalQGTagging.cxx:469
 AliAnalysisTaskEmcalQGTagging.cxx:470
 AliAnalysisTaskEmcalQGTagging.cxx:471
 AliAnalysisTaskEmcalQGTagging.cxx:472
 AliAnalysisTaskEmcalQGTagging.cxx:473
 AliAnalysisTaskEmcalQGTagging.cxx:474
 AliAnalysisTaskEmcalQGTagging.cxx:475
 AliAnalysisTaskEmcalQGTagging.cxx:476
 AliAnalysisTaskEmcalQGTagging.cxx:477
 AliAnalysisTaskEmcalQGTagging.cxx:478
 AliAnalysisTaskEmcalQGTagging.cxx:479
 AliAnalysisTaskEmcalQGTagging.cxx:480
 AliAnalysisTaskEmcalQGTagging.cxx:481
 AliAnalysisTaskEmcalQGTagging.cxx:482
 AliAnalysisTaskEmcalQGTagging.cxx:483
 AliAnalysisTaskEmcalQGTagging.cxx:484
 AliAnalysisTaskEmcalQGTagging.cxx:485
 AliAnalysisTaskEmcalQGTagging.cxx:486
 AliAnalysisTaskEmcalQGTagging.cxx:487
 AliAnalysisTaskEmcalQGTagging.cxx:488
 AliAnalysisTaskEmcalQGTagging.cxx:489
 AliAnalysisTaskEmcalQGTagging.cxx:490
 AliAnalysisTaskEmcalQGTagging.cxx:491
 AliAnalysisTaskEmcalQGTagging.cxx:492
 AliAnalysisTaskEmcalQGTagging.cxx:493
 AliAnalysisTaskEmcalQGTagging.cxx:494
 AliAnalysisTaskEmcalQGTagging.cxx:495
 AliAnalysisTaskEmcalQGTagging.cxx:496
 AliAnalysisTaskEmcalQGTagging.cxx:497
 AliAnalysisTaskEmcalQGTagging.cxx:498
 AliAnalysisTaskEmcalQGTagging.cxx:499
 AliAnalysisTaskEmcalQGTagging.cxx:500
 AliAnalysisTaskEmcalQGTagging.cxx:501
 AliAnalysisTaskEmcalQGTagging.cxx:502
 AliAnalysisTaskEmcalQGTagging.cxx:503
 AliAnalysisTaskEmcalQGTagging.cxx:504
 AliAnalysisTaskEmcalQGTagging.cxx:505
 AliAnalysisTaskEmcalQGTagging.cxx:506
 AliAnalysisTaskEmcalQGTagging.cxx:507
 AliAnalysisTaskEmcalQGTagging.cxx:508
 AliAnalysisTaskEmcalQGTagging.cxx:509
 AliAnalysisTaskEmcalQGTagging.cxx:510
 AliAnalysisTaskEmcalQGTagging.cxx:511
 AliAnalysisTaskEmcalQGTagging.cxx:512
 AliAnalysisTaskEmcalQGTagging.cxx:513
 AliAnalysisTaskEmcalQGTagging.cxx:514
 AliAnalysisTaskEmcalQGTagging.cxx:515
 AliAnalysisTaskEmcalQGTagging.cxx:516
 AliAnalysisTaskEmcalQGTagging.cxx:517
 AliAnalysisTaskEmcalQGTagging.cxx:518
 AliAnalysisTaskEmcalQGTagging.cxx:519
 AliAnalysisTaskEmcalQGTagging.cxx:520
 AliAnalysisTaskEmcalQGTagging.cxx:521
 AliAnalysisTaskEmcalQGTagging.cxx:522
 AliAnalysisTaskEmcalQGTagging.cxx:523
 AliAnalysisTaskEmcalQGTagging.cxx:524
 AliAnalysisTaskEmcalQGTagging.cxx:525
 AliAnalysisTaskEmcalQGTagging.cxx:526
 AliAnalysisTaskEmcalQGTagging.cxx:527
 AliAnalysisTaskEmcalQGTagging.cxx:528
 AliAnalysisTaskEmcalQGTagging.cxx:529
 AliAnalysisTaskEmcalQGTagging.cxx:530
 AliAnalysisTaskEmcalQGTagging.cxx:531
 AliAnalysisTaskEmcalQGTagging.cxx:532
 AliAnalysisTaskEmcalQGTagging.cxx:533
 AliAnalysisTaskEmcalQGTagging.cxx:534
 AliAnalysisTaskEmcalQGTagging.cxx:535
 AliAnalysisTaskEmcalQGTagging.cxx:536
 AliAnalysisTaskEmcalQGTagging.cxx:537
 AliAnalysisTaskEmcalQGTagging.cxx:538
 AliAnalysisTaskEmcalQGTagging.cxx:539
 AliAnalysisTaskEmcalQGTagging.cxx:540
 AliAnalysisTaskEmcalQGTagging.cxx:541
 AliAnalysisTaskEmcalQGTagging.cxx:542
 AliAnalysisTaskEmcalQGTagging.cxx:543
 AliAnalysisTaskEmcalQGTagging.cxx:544
 AliAnalysisTaskEmcalQGTagging.cxx:545
 AliAnalysisTaskEmcalQGTagging.cxx:546
 AliAnalysisTaskEmcalQGTagging.cxx:547
 AliAnalysisTaskEmcalQGTagging.cxx:548
 AliAnalysisTaskEmcalQGTagging.cxx:549
 AliAnalysisTaskEmcalQGTagging.cxx:550
 AliAnalysisTaskEmcalQGTagging.cxx:551
 AliAnalysisTaskEmcalQGTagging.cxx:552
 AliAnalysisTaskEmcalQGTagging.cxx:553
 AliAnalysisTaskEmcalQGTagging.cxx:554
 AliAnalysisTaskEmcalQGTagging.cxx:555
 AliAnalysisTaskEmcalQGTagging.cxx:556
 AliAnalysisTaskEmcalQGTagging.cxx:557
 AliAnalysisTaskEmcalQGTagging.cxx:558
 AliAnalysisTaskEmcalQGTagging.cxx:559
 AliAnalysisTaskEmcalQGTagging.cxx:560
 AliAnalysisTaskEmcalQGTagging.cxx:561
 AliAnalysisTaskEmcalQGTagging.cxx:562
 AliAnalysisTaskEmcalQGTagging.cxx:563
 AliAnalysisTaskEmcalQGTagging.cxx:564
 AliAnalysisTaskEmcalQGTagging.cxx:565
 AliAnalysisTaskEmcalQGTagging.cxx:566
 AliAnalysisTaskEmcalQGTagging.cxx:567
 AliAnalysisTaskEmcalQGTagging.cxx:568
 AliAnalysisTaskEmcalQGTagging.cxx:569
 AliAnalysisTaskEmcalQGTagging.cxx:570
 AliAnalysisTaskEmcalQGTagging.cxx:571
 AliAnalysisTaskEmcalQGTagging.cxx:572
 AliAnalysisTaskEmcalQGTagging.cxx:573
 AliAnalysisTaskEmcalQGTagging.cxx:574
 AliAnalysisTaskEmcalQGTagging.cxx:575
 AliAnalysisTaskEmcalQGTagging.cxx:576
 AliAnalysisTaskEmcalQGTagging.cxx:577
 AliAnalysisTaskEmcalQGTagging.cxx:578
 AliAnalysisTaskEmcalQGTagging.cxx:579
 AliAnalysisTaskEmcalQGTagging.cxx:580
 AliAnalysisTaskEmcalQGTagging.cxx:581
 AliAnalysisTaskEmcalQGTagging.cxx:582
 AliAnalysisTaskEmcalQGTagging.cxx:583
 AliAnalysisTaskEmcalQGTagging.cxx:584
 AliAnalysisTaskEmcalQGTagging.cxx:585
 AliAnalysisTaskEmcalQGTagging.cxx:586
 AliAnalysisTaskEmcalQGTagging.cxx:587
 AliAnalysisTaskEmcalQGTagging.cxx:588
 AliAnalysisTaskEmcalQGTagging.cxx:589
 AliAnalysisTaskEmcalQGTagging.cxx:590
 AliAnalysisTaskEmcalQGTagging.cxx:591
 AliAnalysisTaskEmcalQGTagging.cxx:592
 AliAnalysisTaskEmcalQGTagging.cxx:593
 AliAnalysisTaskEmcalQGTagging.cxx:594
 AliAnalysisTaskEmcalQGTagging.cxx:595
 AliAnalysisTaskEmcalQGTagging.cxx:596
 AliAnalysisTaskEmcalQGTagging.cxx:597
 AliAnalysisTaskEmcalQGTagging.cxx:598
 AliAnalysisTaskEmcalQGTagging.cxx:599
 AliAnalysisTaskEmcalQGTagging.cxx:600
 AliAnalysisTaskEmcalQGTagging.cxx:601
 AliAnalysisTaskEmcalQGTagging.cxx:602
 AliAnalysisTaskEmcalQGTagging.cxx:603
 AliAnalysisTaskEmcalQGTagging.cxx:604
 AliAnalysisTaskEmcalQGTagging.cxx:605
 AliAnalysisTaskEmcalQGTagging.cxx:606
 AliAnalysisTaskEmcalQGTagging.cxx:607
 AliAnalysisTaskEmcalQGTagging.cxx:608
 AliAnalysisTaskEmcalQGTagging.cxx:609
 AliAnalysisTaskEmcalQGTagging.cxx:610
 AliAnalysisTaskEmcalQGTagging.cxx:611
 AliAnalysisTaskEmcalQGTagging.cxx:612
 AliAnalysisTaskEmcalQGTagging.cxx:613
 AliAnalysisTaskEmcalQGTagging.cxx:614
 AliAnalysisTaskEmcalQGTagging.cxx:615
 AliAnalysisTaskEmcalQGTagging.cxx:616
 AliAnalysisTaskEmcalQGTagging.cxx:617