ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//_________________________________________________________________________
// Do photon/pi0 analysis for isolation and correlation
// at the generator level. Only for kine stack (ESDs)
//
//
// -- Author: Gustavo Conesa (LPSC-CNRS-Grenoble) 
//////////////////////////////////////////////////////////////////////////////

// --- ROOT system ---
#include "TH2F.h"
#include "TParticle.h"
#include "TDatabasePDG.h"

//---- ANALYSIS system ----
#include "AliAnaGeneratorKine.h" 
#include "AliStack.h"  
#include "AliGenPythiaEventHeader.h"

ClassImp(AliAnaGeneratorKine)


//__________________________________________
AliAnaGeneratorKine::AliAnaGeneratorKine() : 
AliAnaCaloTrackCorrBaseClass(), 
fTriggerDetector(),  fTriggerDetectorString(),
fFidCutTrigger(0),
fMinChargedPt(0),    fMinNeutralPt(0),
fStack(0),
fParton2(0),         fParton3(0), 
fParton6(0),         fParton7(0),
fJet6(),             fJet7(),
fTrigger(),          fLVTmp(),
fPtHard(0),
fhPtHard(0),         fhPtParton(0),    fhPtJet(0),
fhPtPartonPtHard(0), fhPtJetPtHard(0), fhPtJetPtParton(0),
fhPtPhoton(0),       fhPtPi0(0)
{
  //Default Ctor
  
  //Initialize parameters
  InitParameters();
  
  for(Int_t i = 0; i < 4; i++)
  {
    fhPtPhotonLeading[i]          = fhPtPi0Leading[i]          = 0;
    fhPtPhotonLeadingSumPt[i]     = fhPtPi0LeadingSumPt[i]     = 0;
    fhPtPhotonLeadingIsolated[i]  = fhPtPi0LeadingIsolated[i]  = 0;
    for(Int_t j = 0; j < 2; j++)
    {
    fhZHardPhoton[j][i]           = fhZHardPi0[j][i]           = 0;            
    fhZHardPhotonIsolated[j][i]   = fhZHardPi0Isolated[j][i]   = 0; 
    fhZPartonPhoton[j][i]         = fhZPartonPi0[j][i]         = 0;            
    fhZPartonPhotonIsolated[j][i] = fhZPartonPi0Isolated[j][i] = 0; 
    fhZJetPhoton[j][i]            = fhZJetPi0[j][i]            = 0;            
    fhZJetPhotonIsolated[j][i]    = fhZJetPi0Isolated[j][i]    = 0; 
    fhXEPhoton[j][i]              = fhXEPi0[j][i]              = 0;            
    fhXEPhotonIsolated[j][i]      = fhXEPi0Isolated[j][i]      = 0; 
    fhXEUEPhoton[j][i]            = fhXEUEPi0[j][i]            = 0;            
    fhXEUEPhotonIsolated[j][i]    = fhXEUEPi0Isolated[j][i]    = 0; 

    fhPtPartonTypeNearPhoton[j][i]         = fhPtPartonTypeNearPi0[j][i]         = 0;            
    fhPtPartonTypeNearPhotonIsolated[j][i] = fhPtPartonTypeNearPi0Isolated[j][i] = 0; 

    fhPtPartonTypeAwayPhoton[j][i]         = fhPtPartonTypeAwayPi0[j][i]         = 0;            
    fhPtPartonTypeAwayPhotonIsolated[j][i] = fhPtPartonTypeAwayPi0Isolated[j][i] = 0;
      
    fhPtAcceptedGammaJet[j][i] = 0;
    }
  }
  
}

//___________________________________________________________________________
Bool_t  AliAnaGeneratorKine::CorrelateWithPartonOrJet(Int_t   indexTrig,
                                                      Int_t   pdgTrig,
                                                      Bool_t  leading[4],
                                                      Bool_t  isolated[4],
                                                      Int_t & iparton )  
{
  // Correlate trigger with partons or jets, get z
  
  AliDebug(1,"Start");
  
  //Get the index of the mother
  iparton =  (fStack->Particle(indexTrig))->GetFirstMother();
  TParticle * mother = fStack->Particle(iparton);
  while (iparton > 7) 
  {
    iparton   = mother->GetFirstMother();
    if(iparton < 0)
    {
      AliWarning("Negative index, skip event");
      return kFALSE;
    }
    mother = fStack->Particle(iparton);
  }
  
  //printf("Mother is parton %d with pdg %d\n",imom,mother->GetPdgCode());
  
  if(iparton < 6)
  {
    //printf("This particle is not from hard process - pdg %d, parton index %d\n",pdgTrig, iparton);
    return kFALSE; 
  }
  
  Float_t  ptTrig  = fTrigger.Pt();
  Float_t phiTrig  = fTrigger.Phi();
  Float_t etaTrig  = fTrigger.Eta();
  
  Float_t partonPt = fParton6->Pt();
  
  Float_t jetPt    = fJet6.Pt();
  Float_t jetPhi   = fJet6.Phi();
  Float_t jetEta   = fJet6.Eta();
  
  Float_t awayJetPt  = fJet7.Pt();
  Float_t awayJetEta = fJet7.Eta();
  Float_t awayJetPhi = fJet7.Phi();
  
  Int_t nearPDG = fParton6->GetPdgCode();
  Int_t awayPDG = fParton7->GetPdgCode();
  
  if ( iparton == 7 )
  {
    partonPt = fParton7->Pt();
    
    jetPt  = fJet7.Pt();
    jetPhi = fJet7.Phi();
    jetEta = fJet7.Eta();
    
    awayJetPt  = fJet6.Pt();
    awayJetEta = fJet6.Eta();
    awayJetPhi = fJet6.Phi();

    nearPDG = fParton7->GetPdgCode();
    awayPDG = fParton6->GetPdgCode();
    
  }

  Float_t deltaPhi = TMath::Abs(phiTrig-awayJetPhi) *TMath::RadToDeg();
  //printf("Trigger Away jet phi %2.2f\n",deltaPhi);
  
  //Get id of parton in near and away side
  Int_t away = -1;
  Int_t near = -1;
  if     (nearPDG == 22) near = 0;
  else if(nearPDG == 21) near = 1;
  else                   near = 2;
  
  if     (awayPDG == 22) away = 0;
  else if(awayPDG == 21) away = 1;
  else                   away = 2;
  //printf("parton 6 pdg = %d, parton 7 pdg = %d\n",fParton6->GetPdgCode(),fParton7->GetPdgCode());

  AliDebug(1,Form("Trigger pdg %d, (Trigger,JetNear, JetAway): pT (%2.2f,%2.2f,%2.2f), phi (%2.2f,%2.2f,%2.2f), eta (%2.2f,%2.2f,%2.2f); Delta phi trigger-away jet %f; parton type: away side %d; near side %d",
                  pdgTrig,
                  ptTrig,jetPt,awayJetPt,
                  phiTrig*TMath::RadToDeg(),jetPhi*TMath::RadToDeg(),awayJetPhi*TMath::RadToDeg(),
                  etaTrig,jetEta,awayJetEta,
                  deltaPhi,away,near));
  
  // RATIOS
  
  Float_t zHard = ptTrig / fPtHard;
  Float_t zPart = ptTrig / partonPt;
  Float_t zJet  = ptTrig / jetPt;
  
  //if(zHard > 1 ) printf("*** Particle energy larger than pT hard z=%f\n",zHard);
  
  //printf("Z: hard %2.2f, parton %2.2f, jet %2.2f\n",zHard,zPart,zJet);

  // conditions loop
  for( Int_t i = 0; i < 4; i++ )
  {
    // pi0
    if(pdgTrig==111)
    {
      fhPtPartonTypeNearPi0[leading[i]][i]->Fill(ptTrig,near);
      fhPtPartonTypeAwayPi0[leading[i]][i]->Fill(ptTrig,away);
      
      fhZHardPi0  [leading[i]][i]->Fill(ptTrig,zHard);
      fhZPartonPi0[leading[i]][i]->Fill(ptTrig,zPart);
      fhZJetPi0   [leading[i]][i]->Fill(ptTrig,zJet );
      
      if(isolated[i])
      {
        fhPtPartonTypeNearPi0Isolated[leading[i]][i]->Fill(ptTrig,near);
        fhPtPartonTypeAwayPi0Isolated[leading[i]][i]->Fill(ptTrig,away);
        
        fhZHardPi0Isolated  [leading[i]][i]->Fill(ptTrig,zHard);
        fhZPartonPi0Isolated[leading[i]][i]->Fill(ptTrig,zPart);
        fhZJetPi0Isolated   [leading[i]][i]->Fill(ptTrig,zJet);
      }
    }// pi0
    // gamma
    else if(pdgTrig==22)
    {
      fhPtPartonTypeNearPhoton[leading[i]][i]->Fill(ptTrig,near);
      fhPtPartonTypeAwayPhoton[leading[i]][i]->Fill(ptTrig,away);
      
      fhZHardPhoton  [leading[i]][i]->Fill(ptTrig,zHard);
      fhZPartonPhoton[leading[i]][i]->Fill(ptTrig,zPart);
      fhZJetPhoton   [leading[i]][i]->Fill(ptTrig,zJet );
      
      if(deltaPhi < 220 && deltaPhi > 140 && TMath::Abs(awayJetEta) < 0.6)
      {
        //printf("Accept jet\n");
        fhPtAcceptedGammaJet[leading[i]][i]->Fill(ptTrig,away);
      }
      //else printf("Reject jet!!!\n");
      
      if(isolated[i])
      {
        fhPtPartonTypeNearPhotonIsolated[leading[i]][i]->Fill(ptTrig,near);
        fhPtPartonTypeAwayPhotonIsolated[leading[i]][i]->Fill(ptTrig,away);
        
        fhZHardPhotonIsolated  [leading[i]][i]->Fill(ptTrig,zHard);
        fhZPartonPhotonIsolated[leading[i]][i]->Fill(ptTrig,zPart);
        fhZJetPhotonIsolated   [leading[i]][i]->Fill(ptTrig,zJet);
      }
    } // gamma
  } // conditions loop
  
  
  AliDebug(1,"End TRUE");
  
  return kTRUE;
}


//____________________________________________________
TList *  AliAnaGeneratorKine::GetCreateOutputObjects()
{  
  // Create histograms to be saved in output file 
  
  TList * outputContainer = new TList() ; 
  outputContainer->SetName("GenKineHistos") ; 
  
  Int_t   nptbins    = GetHistogramRanges()->GetHistoPtBins();
  Float_t ptmax      = GetHistogramRanges()->GetHistoPtMax();
  Float_t ptmin      = GetHistogramRanges()->GetHistoPtMin();

  Int_t   nptsumbins = GetHistogramRanges()->GetHistoNPtSumBins();
  Float_t ptsummax   = GetHistogramRanges()->GetHistoPtSumMax();
  Float_t ptsummin   = GetHistogramRanges()->GetHistoPtSumMin();

  
  fhPtHard  = new TH1F("hPtHard"," pt hard for selected triggers",nptbins,ptmin,ptmax); 
  fhPtHard->SetXTitle("#it{p}_{T}^{hard} (GeV/#it{c})");
  outputContainer->Add(fhPtHard);
  
  fhPtParton  = new TH1F("hPtParton"," pt parton for selected triggers",nptbins,ptmin,ptmax); 
  fhPtParton->SetXTitle("#it{p}_{T}^{parton} (GeV/#it{c})");
  outputContainer->Add(fhPtParton);
  
  fhPtJet  = new TH1F("hPtJet"," pt jet for selected triggers",nptbins,ptmin,ptmax); 
  fhPtJet->SetXTitle("#it{p}_{T}^{jet} (GeV/#it{c})");
  outputContainer->Add(fhPtJet);
  
  fhPtPartonPtHard  = new TH2F("hPtPartonPtHard","parton pt / pt hard for selected triggers",nptbins,ptmin,ptmax,200,0,2); 
  fhPtPartonPtHard->SetXTitle("#it{p}_{T}^{hard} (GeV/#it{c})");
  fhPtPartonPtHard->SetYTitle("#it{p}_{T}^{parton}/#it{p}_{T}^{hard}");
  outputContainer->Add(fhPtPartonPtHard);
  
  fhPtJetPtHard  = new TH2F("hPtJetPtHard","jet pt / pt hard for selected triggers",nptbins,ptmin,ptmax,200,0,2); 
  fhPtJetPtHard->SetXTitle("#it{p}_{T}^{hard} (GeV/#it{c})");
  fhPtJetPtHard->SetYTitle("#it{p}_{T}^{jet}/#it{p}_{T}^{hard}");
  outputContainer->Add(fhPtJetPtHard);
  
  fhPtJetPtParton  = new TH2F("hPtJetPtParton","parton pt / pt hard for selected triggers",nptbins,ptmin,ptmax,200,0,2); 
  fhPtJetPtParton->SetXTitle("#it{p}_{T}^{hard} (GeV/#it{c})");
  fhPtJetPtParton->SetYTitle("#it{p}_{T}^{jet}/#it{p}_{T}^{parton}");
  outputContainer->Add(fhPtJetPtParton);
  
  fhPtPhoton  = new TH1F("hPtPhoton","Input #gamma",nptbins,ptmin,ptmax);
  fhPtPhoton->SetXTitle("#it{p}_{T} (GeV/#it{c})");
  outputContainer->Add(fhPtPhoton);

  fhPtPi0  = new TH1F("hPtPi0","Input #pi^{0}",nptbins,ptmin,ptmax);
  fhPtPi0->SetXTitle("#it{p}_{T} (GeV/#it{c})");
  outputContainer->Add(fhPtPi0);
  
  TString name   [] = {"","_EMC","_Photon","_EMC_Photon"};
  TString title  [] = {"",", neutral in EMCal",", neutral only #gamma-like",", neutral in EMCal and only #gamma-like"};
  TString leading[] = {"NotLeading","Leading"};
  
  for(Int_t i = 0; i < 4; i++)
  {
    
    // Pt
    
    fhPtPhotonLeading[i]  = new TH1F(Form("hPtPhotonLeading%s",name[i].Data()),
                                     Form("#gamma: Leading of all particles%s",title[i].Data()),
                                     nptbins,ptmin,ptmax);
    fhPtPhotonLeading[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
    outputContainer->Add(fhPtPhotonLeading[i]);
    
    fhPtPi0Leading[i]  = new TH1F(Form("hPtPi0Leading%s",name[i].Data()),
                                  Form("#pi^{0}: Leading of all particles%s",title[i].Data()),
                                  nptbins,ptmin,ptmax);
    fhPtPi0Leading[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
    outputContainer->Add(fhPtPi0Leading[i]);
    
    fhPtPhotonLeadingIsolated[i]  = new TH1F(Form("hPtPhotonLeadingIsolated%s",name[i].Data()),
                                             Form("#gamma: Leading of all particles%s, isolated",title[i].Data()),
                                             nptbins,ptmin,ptmax);
    fhPtPhotonLeadingIsolated[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
    outputContainer->Add(fhPtPhotonLeadingIsolated[i]);
    
    fhPtPi0LeadingIsolated[i]  = new TH1F(Form("hPtPi0LeadingIsolated%s",name[i].Data()),
                                          Form("#pi^{0}: Leading of all particles%s, isolated",title[i].Data()),
                                          nptbins,ptmin,ptmax);
    fhPtPi0LeadingIsolated[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
    outputContainer->Add(fhPtPi0LeadingIsolated[i]);
    
    fhPtPhotonLeadingSumPt[i]  = new TH2F(Form("hPtPhotonLeadingSumPt%s",name[i].Data()),
                                     Form("#gamma: Leading of all particles%s",title[i].Data()),
                                     nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
    fhPtPhotonLeadingSumPt[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
    fhPtPhotonLeadingSumPt[i]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
    outputContainer->Add(fhPtPhotonLeadingSumPt[i]);
    
    fhPtPi0LeadingSumPt[i]  = new TH2F(Form("hPtPi0LeadingSumPt%s",name[i].Data()),
                                  Form("#pi^{0}: Leading of all particles%s",title[i].Data()),
                                  nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
    fhPtPi0LeadingSumPt[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
    fhPtPi0LeadingSumPt[i]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
    outputContainer->Add(fhPtPi0LeadingSumPt[i]);

    
    // Leading or not loop
    for(Int_t j = 0; j < 2; j++)
    {
      
      fhPtAcceptedGammaJet[j][i]  = new TH2F(Form("hPtAcceptedGammaJet%s%s",leading[j].Data(),name[i].Data()),
                                            Form("#gamma-jet: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                            nptbins,ptmin,ptmax,3,0,3);
      fhPtAcceptedGammaJet[j][i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
      fhPtAcceptedGammaJet[j][i]->SetYTitle("Parton type");
      fhPtAcceptedGammaJet[j][i]->GetYaxis()->SetBinLabel(1,"#gamma");
      fhPtAcceptedGammaJet[j][i]->GetYaxis()->SetBinLabel(2,"g");
      fhPtAcceptedGammaJet[j][i]->GetYaxis()->SetBinLabel(3,"q");
      outputContainer->Add(fhPtAcceptedGammaJet[j][i]);

      // Near side parton
      
      fhPtPartonTypeNearPhoton[j][i]  = new TH2F(Form("hPtPartonTypeNearPhoton%s%s",leading[j].Data(),name[i].Data()),
                                                 Form("#gamma: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                                 nptbins,ptmin,ptmax,3,0,3);
      fhPtPartonTypeNearPhoton[j][i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
      fhPtPartonTypeNearPhoton[j][i]->SetYTitle("Parton type");
      fhPtPartonTypeNearPhoton[j][i]->GetYaxis()->SetBinLabel(1,"#gamma");
      fhPtPartonTypeNearPhoton[j][i]->GetYaxis()->SetBinLabel(2,"g");
      fhPtPartonTypeNearPhoton[j][i]->GetYaxis()->SetBinLabel(3,"q");
      outputContainer->Add(fhPtPartonTypeNearPhoton[j][i]);
      
      fhPtPartonTypeNearPi0[j][i]  = new TH2F(Form("hPtPartonTypeNearPi0%s%s",leading[j].Data(),name[i].Data()),
                                              Form("#pi^{0}: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                              nptbins,ptmin,ptmax,3,0,3);
      fhPtPartonTypeNearPi0[j][i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
      fhPtPartonTypeNearPi0[j][i]->SetYTitle("Parton type");
      fhPtPartonTypeNearPi0[j][i]->GetYaxis()->SetBinLabel(1,"#gamma");
      fhPtPartonTypeNearPi0[j][i]->GetYaxis()->SetBinLabel(2,"g");
      fhPtPartonTypeNearPi0[j][i]->GetYaxis()->SetBinLabel(3,"q");
      outputContainer->Add(fhPtPartonTypeNearPi0[j][i]);
      
      fhPtPartonTypeNearPhotonIsolated[j][i]  = new TH2F(Form("hPtPartonTypeNearPhoton%sIsolated%s",leading[j].Data(),name[i].Data()),
                                                         Form("#gamma: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                                         nptbins,ptmin,ptmax,3,0,3);
      fhPtPartonTypeNearPhotonIsolated[j][i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
      fhPtPartonTypeNearPhotonIsolated[j][i]->SetYTitle("Parton type");
      fhPtPartonTypeNearPhotonIsolated[j][i]->GetYaxis()->SetBinLabel(1,"#gamma");
      fhPtPartonTypeNearPhotonIsolated[j][i]->GetYaxis()->SetBinLabel(2,"g");
      fhPtPartonTypeNearPhotonIsolated[j][i]->GetYaxis()->SetBinLabel(3,"q");
      outputContainer->Add(fhPtPartonTypeNearPhotonIsolated[j][i]);
      
      fhPtPartonTypeNearPi0Isolated[j][i]  = new TH2F(Form("hPtPartonTypeNearPi0%sIsolated%s",leading[j].Data(),name[i].Data()),
                                                      Form("#pi^{0}: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                                      nptbins,ptmin,ptmax,3,0,3);
      fhPtPartonTypeNearPi0Isolated[j][i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
      fhPtPartonTypeNearPi0Isolated[j][i]->SetYTitle("Parton type");
      fhPtPartonTypeNearPi0Isolated[j][i]->GetYaxis()->SetBinLabel(1,"#gamma");
      fhPtPartonTypeNearPi0Isolated[j][i]->GetYaxis()->SetBinLabel(2,"g");
      fhPtPartonTypeNearPi0Isolated[j][i]->GetYaxis()->SetBinLabel(3,"q");
      outputContainer->Add(fhPtPartonTypeNearPi0Isolated[j][i]);
      
      
      // Away side parton
      
      fhPtPartonTypeAwayPhoton[j][i]  = new TH2F(Form("hPtPartonTypeAwayPhoton%s%s",leading[j].Data(),name[i].Data()),
                                                 Form("#gamma: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                                 nptbins,ptmin,ptmax,3,0,3);
      fhPtPartonTypeAwayPhoton[j][i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
      fhPtPartonTypeAwayPhoton[j][i]->SetYTitle("Parton type");
      fhPtPartonTypeAwayPhoton[j][i]->GetYaxis()->SetBinLabel(1,"#gamma");
      fhPtPartonTypeAwayPhoton[j][i]->GetYaxis()->SetBinLabel(2,"g");
      fhPtPartonTypeAwayPhoton[j][i]->GetYaxis()->SetBinLabel(3,"q");
      outputContainer->Add(fhPtPartonTypeAwayPhoton[j][i]);
      
      fhPtPartonTypeAwayPi0[j][i]  = new TH2F(Form("hPtPartonTypeAwayPi0%s%s",leading[j].Data(),name[i].Data()),
                                              Form("#pi^{0}: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                              nptbins,ptmin,ptmax,3,0,3);
      fhPtPartonTypeAwayPi0[j][i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
      fhPtPartonTypeAwayPi0[j][i]->SetYTitle("Parton type");
      fhPtPartonTypeAwayPi0[j][i]->GetYaxis()->SetBinLabel(1,"#gamma");
      fhPtPartonTypeAwayPi0[j][i]->GetYaxis()->SetBinLabel(2,"g");
      fhPtPartonTypeAwayPi0[j][i]->GetYaxis()->SetBinLabel(3,"q");
      outputContainer->Add(fhPtPartonTypeAwayPi0[j][i]);
      
      fhPtPartonTypeAwayPhotonIsolated[j][i]  = new TH2F(Form("hPtPartonTypeAwayPhoton%sIsolated%s",leading[j].Data(),name[i].Data()),
                                                         Form("#gamma: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                                         nptbins,ptmin,ptmax,3,0,3);
      fhPtPartonTypeAwayPhotonIsolated[j][i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
      fhPtPartonTypeAwayPhotonIsolated[j][i]->SetYTitle("Parton type");
      fhPtPartonTypeAwayPhotonIsolated[j][i]->GetYaxis()->SetBinLabel(1,"#gamma");
      fhPtPartonTypeAwayPhotonIsolated[j][i]->GetYaxis()->SetBinLabel(2,"g");
      fhPtPartonTypeAwayPhotonIsolated[j][i]->GetYaxis()->SetBinLabel(3,"q");
      outputContainer->Add(fhPtPartonTypeAwayPhotonIsolated[j][i]);
      
      fhPtPartonTypeAwayPi0Isolated[j][i]  = new TH2F(Form("hPtPartonTypeAwayPi0%sIsolated%s",leading[j].Data(),name[i].Data()),
                                                      Form("#pi^{0}: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                                      nptbins,ptmin,ptmax,3,0,3);
      fhPtPartonTypeAwayPi0Isolated[j][i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
      fhPtPartonTypeAwayPi0Isolated[j][i]->SetYTitle("Parton type");
      fhPtPartonTypeAwayPi0Isolated[j][i]->GetYaxis()->SetBinLabel(1,"#gamma");
      fhPtPartonTypeAwayPi0Isolated[j][i]->GetYaxis()->SetBinLabel(2,"g");
      fhPtPartonTypeAwayPi0Isolated[j][i]->GetYaxis()->SetBinLabel(3,"q");
      outputContainer->Add(fhPtPartonTypeAwayPi0Isolated[j][i]);
      
      // zHard
      
      fhZHardPhoton[j][i]  = new TH2F(Form("hZHardPhoton%s%s",leading[j].Data(),name[i].Data()),
                                      Form("#it{z}_{Hard} of #gamma: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                      nptbins,ptmin,ptmax,200,0,2);
      fhZHardPhoton[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZHardPhoton[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZHardPhoton[j][i]);
      
      fhZHardPi0[j][i]  = new TH2F(Form("hZHardPi0%s%s",leading[j].Data(),name[i].Data()),
                                   Form("#it{z}_{Hard} of #pi^{0}: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                   nptbins,ptmin,ptmax,200,0,2);
      fhZHardPi0[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZHardPi0[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZHardPi0[j][i]);
      
      fhZHardPhotonIsolated[j][i]  = new TH2F(Form("hZHardPhoton%sIsolated%s",leading[j].Data(),name[i].Data()),
                                              Form("#it{z}_{Hard} of #gamma: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                              nptbins,ptmin,ptmax,200,0,2);
      fhZHardPhotonIsolated[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZHardPhotonIsolated[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZHardPhotonIsolated[j][i]);
      
      fhZHardPi0Isolated[j][i]  = new TH2F(Form("hZHardPi0%sIsolated%s",leading[j].Data(),name[i].Data()),
                                           Form("#it{z}_{Hard} of #pi^{0}: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                           nptbins,ptmin,ptmax,200,0,2);
      fhZHardPi0Isolated[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZHardPi0Isolated[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZHardPi0Isolated[j][i]);
      
      // zHard
      
      fhZPartonPhoton[j][i]  = new TH2F(Form("hZPartonPhoton%s%s",leading[j].Data(),name[i].Data()),
                                        Form("#it{z}_{Parton} of #gamma: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                        nptbins,ptmin,ptmax,200,0,2);
      fhZPartonPhoton[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZPartonPhoton[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZPartonPhoton[j][i]);
      
      fhZPartonPi0[j][i]  = new TH2F(Form("hZPartonPi0%s%s",leading[j].Data(),name[i].Data()),
                                     Form("#it{z}_{Parton} of #pi^{0}: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                     nptbins,ptmin,ptmax,200,0,2);
      fhZPartonPi0[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZPartonPi0[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZPartonPi0[j][i]);
      
      fhZPartonPhotonIsolated[j][i]  = new TH2F(Form("hZPartonPhoton%sIsolated%s",leading[j].Data(),name[i].Data()),
                                                Form("#it{z}_{Parton} of #gamma: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                                nptbins,ptmin,ptmax,200,0,2);
      fhZPartonPhotonIsolated[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZPartonPhotonIsolated[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZPartonPhotonIsolated[j][i]);
      
      fhZPartonPi0Isolated[j][i]  = new TH2F(Form("hZPartonPi0%sIsolated%s",leading[j].Data(),name[i].Data()),
                                             Form("#it{z}_{Parton} of #pi^{0}: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                             nptbins,ptmin,ptmax,200,0,2);
      fhZPartonPi0Isolated[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZPartonPi0Isolated[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZPartonPi0Isolated[j][i]);
      
      
      // zJet
      
      fhZJetPhoton[j][i]  = new TH2F(Form("hZJetPhoton%s%s",leading[j].Data(),name[i].Data()),
                                     Form("#it{z}_{Jet} of #gamma: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                     nptbins,ptmin,ptmax,200,0,2);
      fhZJetPhoton[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZJetPhoton[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZJetPhoton[j][i]);
      
      fhZJetPi0[j][i]  = new TH2F(Form("hZJetPi0%s%s",leading[j].Data(),name[i].Data()),
                                  Form("#it{z}_{Jet} of #pi^{0}: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                  nptbins,ptmin,ptmax,200,0,2);
      fhZJetPi0[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZJetPi0[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZJetPi0[j][i]);
      
      fhZJetPhotonIsolated[j][i]  = new TH2F(Form("hZJetPhoton%sIsolated%s",leading[j].Data(),name[i].Data()),
                                             Form("#it{z}_{Jet} of #gamma: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                             nptbins,ptmin,ptmax,200,0,2);
      fhZJetPhotonIsolated[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZJetPhotonIsolated[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZJetPhotonIsolated[j][i]);
      
      fhZJetPi0Isolated[j][i]  = new TH2F(Form("hZJetPi0%sIsolated%s",leading[j].Data(),name[i].Data()),
                                          Form("#it{z}_{Jet} of #pi^{0}: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                          nptbins,ptmin,ptmax,200,0,2);
      fhZJetPi0Isolated[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhZJetPi0Isolated[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhZJetPi0Isolated[j][i]);
      
      
      // XE
      
      fhXEPhoton[j][i]  = new TH2F(Form("hXEPhoton%s%s",leading[j].Data(),name[i].Data()),
                                   Form("#it{z}_{Jet} of #gamma: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                   nptbins,ptmin,ptmax,200,0,2);
      fhXEPhoton[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhXEPhoton[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhXEPhoton[j][i]);
      
      fhXEPi0[j][i]  = new TH2F(Form("hXEPi0%s%s",leading[j].Data(),name[i].Data()),
                                Form("#it{z}_{Jet} of #pi^{0}: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                nptbins,ptmin,ptmax,200,0,2);
      fhXEPi0[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhXEPi0[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhXEPi0[j][i]);
      
      fhXEPhotonIsolated[j][i]  = new TH2F(Form("hXEPhoton%sIsolated%s",leading[j].Data(),name[i].Data()),
                                           Form("#it{z}_{Jet} of #gamma: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                           nptbins,ptmin,ptmax,200,0,2);
      fhXEPhotonIsolated[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhXEPhotonIsolated[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhXEPhotonIsolated[j][i]);
      
      fhXEPi0Isolated[j][i]  = new TH2F(Form("hXEPi0%sIsolated%s",leading[j].Data(),name[i].Data()),
                                        Form("#it{z}_{Jet} of #pi^{0}: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                        nptbins,ptmin,ptmax,200,0,2);
      fhXEPi0Isolated[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhXEPi0Isolated[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhXEPi0Isolated[j][i]);
      
      
      // XE from UE
      
      fhXEUEPhoton[j][i]  = new TH2F(Form("hXEUEPhoton%s%s",leading[j].Data(),name[i].Data()),
                                     Form("#it{z}_{Jet} of #gamma: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                     nptbins,ptmin,ptmax,200,0,2);
      fhXEUEPhoton[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhXEUEPhoton[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhXEUEPhoton[j][i]);
      
      fhXEUEPi0[j][i]  = new TH2F(Form("hXEUEPi0%s%s",leading[j].Data(),name[i].Data()),
                                  Form("#it{z}_{Jet} of #pi^{0}: %s of all particles%s",leading[j].Data(),title[i].Data()),
                                  nptbins,ptmin,ptmax,200,0,2);
      fhXEUEPi0[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhXEUEPi0[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhXEUEPi0[j][i]);
      
      fhXEUEPhotonIsolated[j][i]  = new TH2F(Form("hXEUEPhoton%sIsolated%s",leading[j].Data(),name[i].Data()),
                                             Form("#it{z}_{Jet} of #gamma: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                             nptbins,ptmin,ptmax,200,0,2);
      fhXEUEPhotonIsolated[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhXEUEPhotonIsolated[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhXEUEPhotonIsolated[j][i]);
      
      fhXEUEPi0Isolated[j][i]  = new TH2F(Form("hXEUEPi0%sIsolated%s",leading[j].Data(),name[i].Data()),
                                          Form("#it{z}_{Jet} of #pi^{0}: %s of all particles%s, isolated",leading[j].Data(),title[i].Data()),
                                          nptbins,ptmin,ptmax,200,0,2); 
      fhXEUEPi0Isolated[j][i]->SetYTitle("#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
      fhXEUEPi0Isolated[j][i]->SetXTitle("#it{p}_{T}^{particle} (GeV/#it{c})");
      outputContainer->Add(fhXEUEPi0Isolated[j][i]);          
    }
  }
  
  return outputContainer;
  
}

//____________________________________________
void  AliAnaGeneratorKine::GetPartonsAndJets() 
{
  // Fill data members with partons,jets and generated pt hard 
  
  AliDebug(1,"Start");

  fStack =  GetMCStack() ;
  
  if(!fStack) 
    AliFatal("No Stack available, STOP");
  
  fParton2 = fStack->Particle(2) ;
  fParton3 = fStack->Particle(3) ;
  fParton6 = fStack->Particle(6) ;
  fParton7 = fStack->Particle(7) ;
  
  Float_t p6phi = fParton6->Phi();
  if(p6phi < 0) p6phi +=TMath::TwoPi();
  Float_t p7phi = fParton7->Phi();
  if(p7phi < 0) p7phi +=TMath::TwoPi();  
  
  //printf("parton6: pt %2.2f, eta %2.2f, phi %2.2f with pdg %d\n",fParton6->Pt(),fParton6->Eta(),p6phi, fParton6->GetPdgCode());
  //printf("parton7: pt %2.2f, eta %2.2f, phi %2.2f with pdg %d\n",fParton7->Pt(),fParton7->Eta(),p7phi, fParton7->GetPdgCode());
  
  // Get the jets, only for pythia
  if(!strcmp(GetReader()->GetGenEventHeader()->ClassName(), "AliGenPythiaEventHeader"))
  {
    AliGenPythiaEventHeader* pygeh= (AliGenPythiaEventHeader*) GetReader()->GetGenEventHeader();
    
    fPtHard = pygeh->GetPtHard();
    
    //printf("pt Hard %2.2f\n",fPtHard);
    
    const Int_t nTriggerJets =  pygeh->NTriggerJets();
        
    Float_t tmpjet[]={0,0,0,0};
    
    // select the closest jet to parton
    Float_t jet7R = 100;
    Float_t jet6R = 100;
    
    for(Int_t ijet = 0; ijet< nTriggerJets; ijet++)
    {
      pygeh->TriggerJet(ijet, tmpjet);
      
      fLVTmp.SetPxPyPzE(tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3]);
      Float_t jphi = fLVTmp.Phi();
      if(jphi < 0) jphi +=TMath::TwoPi();
      
      Double_t radius6 = GetIsolationCut()->Radius(fParton6->Eta(), p6phi, fLVTmp.Eta() , jphi) ;
      Double_t radius7 = GetIsolationCut()->Radius(fParton7->Eta(), p7phi, fLVTmp.Eta() , jphi) ;
      
      //printf("jet %d: pt %2.2f, eta %2.2f, phi %2.2f, r6 %2.2f, r7 %2.2f\n",ijet,jet.Pt(),jet.Eta(),jphi,radius6, radius7);
      
      if (radius6 < jet6R)
      {
        jet6R = radius6;
        fJet6 = fLVTmp;
        
      }
      if (radius7 < jet7R) 
      {
        jet7R = radius7;
        fJet7 = fLVTmp;
      }
            
    } // jet loop
    
    //printf("jet6: pt %2.2f, eta %2.2f, phi %2.2f\n",fJet6.Pt(),fJet6.Eta(),fJet6.Phi());
    //printf("jet7: pt %2.2f, eta %2.2f, phi %2.2f\n",fJet7.Pt(),fJet7.Eta(),fJet6.Phi());
    
  } // pythia header
  
  fhPtHard   ->Fill(fPtHard);
  fhPtJet    ->Fill(fJet6.Pt());
  fhPtJet    ->Fill(fJet7.Pt());
  fhPtParton ->Fill(fParton6->Pt());
  fhPtParton ->Fill(fParton7->Pt());

  fhPtPartonPtHard->Fill(fPtHard, fParton6->Pt()/fPtHard);
  fhPtPartonPtHard->Fill(fPtHard, fParton7->Pt()/fPtHard);
  fhPtJetPtHard   ->Fill(fPtHard, fJet6.Pt()/fPtHard);
  fhPtJetPtHard   ->Fill(fPtHard, fJet7.Pt()/fPtHard);
  fhPtJetPtParton ->Fill(fPtHard, fJet6.Pt()/fParton6->Pt());
  fhPtJetPtParton ->Fill(fPtHard, fJet7.Pt()/fParton7->Pt());
  
  AliDebug(1,"End");

}

//_____________________________________________________
void AliAnaGeneratorKine::GetXE(Int_t   indexTrig,
                                Int_t   pdgTrig,
                                Bool_t  leading[4],
                                Bool_t  isolated[4],
                                Int_t   iparton)
{

  // Calculate the real XE and the UE XE

  AliDebug(1,"Start");
  
  Float_t ptTrig  = fTrigger.Pt();
  Float_t phiTrig = fTrigger.Phi();
  if(phiTrig < 0 ) phiTrig += TMath::TwoPi();
  
  //Loop on primaries, start from position 8, no partons
  for(Int_t ipr = 8; ipr < fStack->GetNprimary(); ipr ++ )
  {
    TParticle * particle = fStack->Particle(ipr) ;
    
    if(ipr==indexTrig) continue;
    
    Int_t   pdg    = particle->GetPdgCode();
    Int_t   status = particle->GetStatusCode();
        
    // Compare trigger with final state particles
    if( status != 1 ) continue ;
    
    Double_t charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
    
    if(charge == 0 ) continue; // construct xe only with charged
    
    Float_t pt     = particle->Pt();
    Float_t phi    = particle->Phi();
    if(phi < 0 ) phi += TMath::TwoPi();
    
    if( pt < fMinChargedPt)    continue ;
    
    particle->Momentum(fLVTmp);
    Bool_t inTPC = GetFiducialCut()->IsInFiducialCut(fLVTmp.Eta(),fLVTmp.Phi(),kCTS) ;
    
    if(!inTPC) continue;
    
    Float_t xe = -pt/ptTrig*TMath::Cos(phi-phiTrig);
    
    // ---------------------------------------------------
    // Get the index of the mother, get from what parton
    Int_t ipartonAway =  particle->GetFirstMother();
    if(ipartonAway < 0) return;
    
    TParticle * mother = fStack->Particle(ipartonAway);
    while (ipartonAway > 7) 
    {
      ipartonAway   = mother->GetFirstMother();
      if(ipartonAway < 0) break;
      mother = fStack->Particle(ipartonAway);
    }
    
    //-----------------------------------------
    // Get XE of particles belonging to the jet
    // on the opposite side of the trigger
    if((ipartonAway==6 || ipartonAway==7) && iparton!=ipartonAway) 
    {
      for( Int_t i = 0; i < 4; i++ )
      {
        if(pdgTrig==111)
        {
          fhXEPi0[leading[i]][i]  ->Fill(ptTrig,xe);
          
          if(isolated[i])
          {
            fhXEPi0Isolated[leading[i]][i]  ->Fill(ptTrig,xe);
          }
          
        }// pi0
        else if(pdgTrig==22)
        {
          fhXEPhoton[leading[i]][i]  ->Fill(ptTrig,xe);
          
          if(isolated[i])
          {
            fhXEPhotonIsolated[leading[i]][i]  ->Fill(ptTrig,xe);
          }
          
        } // photon
      } // conditions loop
    } // Away side

    //----------------------------------------------------------
    // Get the XE from particles not attached to any of the jets
    if(ipartonAway!=6 && ipartonAway!=7)
    {
      for( Int_t i = 0; i < 4; i++ )
      {
        if(pdgTrig==111)
        {
          fhXEUEPi0[leading[i]][i]  ->Fill(ptTrig,xe);
          
          if(isolated[i])
          {
            fhXEUEPi0Isolated[leading[i]][i]  ->Fill(ptTrig,xe);
          }
          
        }// pi0
        else if(pdgTrig==22)
        {
          fhXEUEPhoton[leading[i]][i]  ->Fill(ptTrig,xe);
          
          if(isolated[i])
          {
            fhXEUEPhotonIsolated[leading[i]][i]  ->Fill(ptTrig,xe);
          }
          
        } // photon
      } // conditions loop  
    } // Away side    
    
  } // primary loop

  AliDebug(1,"End");

}

//________________________________________
void AliAnaGeneratorKine::InitParameters()
{
  
  //Initialize the parameters of the analysis.
  AddToHistogramsName("AnaGenKine_");
  
  fTriggerDetector = kEMCAL;
  
  fMinChargedPt    = 0.2;
  fMinNeutralPt    = 0.3;
  
}

//_____________________________________________________________________
void  AliAnaGeneratorKine::IsLeadingAndIsolated(Int_t indexTrig,
                                                Int_t pdgTrig,
                                                Bool_t leading[4],
                                                Bool_t isolated[4]) 
{
  // Check if the trigger is the leading particle and if it is isolated
  // In case of neutral particles check all neutral or neutral in EMCAL acceptance
  
  AliDebug(1,"Start");

  Float_t ptMaxCharged       = 0; // all charged
  Float_t ptMaxNeutral       = 0; // all neutral
  Float_t ptMaxNeutEMCAL     = 0; // for neutral, select them in EMCAL acceptance
  Float_t ptMaxNeutPhot      = 0; // for neutral, take only photons
  Float_t ptMaxNeutEMCALPhot = 0; // for neutral, take only photons in EMCAL acceptance 
  
  leading[0] = 0;
  leading[1] = 0;
  leading[2] = 0;
  leading[3] = 0;
  
  isolated[0] = 0;
  isolated[1] = 0;
  isolated[2] = 0;
  isolated[3] = 0;
  
  Float_t ptTrig  = fTrigger.Pt();
  Float_t etaTrig = fTrigger.Eta();
  Float_t phiTrig = fTrigger.Phi();
  if(phiTrig < 0 ) phiTrig += TMath::TwoPi();

  // Minimum track or cluster energy

  //Isolation cuts
  Float_t ptThresIC    = GetIsolationCut()->GetPtThreshold();
  Float_t sumThresIC   = GetIsolationCut()->GetPtThreshold();
  Float_t rThresIC     = GetIsolationCut()->GetConeSize();
  Float_t isoMethod    = GetIsolationCut()->GetICMethod();
  
  //Counters
  Int_t   nICTrack     = 0;
  Int_t   nICNeutral   = 0;
  Int_t   nICNeutEMCAL = 0;
  Int_t   nICNeutPhot  = 0;
  Int_t   nICNeutEMCALPhot = 0;
  
  // Sum of pT
  Float_t sumNePt         = 0;
  Float_t sumNePtPhot     = 0;
  Float_t sumNePtEMC      = 0;
  Float_t sumNePtEMCPhot  = 0;
  Float_t sumChPt         = 0;
  
  //Loop on primaries, start from position 8, no partons
  for(Int_t ipr = 8; ipr < fStack->GetNprimary(); ipr ++ )
  {
    if(ipr == indexTrig) continue;
    TParticle * particle = fStack->Particle(ipr) ;
    
    Int_t   imother= particle->GetFirstMother();
    //printf("Leading ipr %d - mother %d\n",ipr, imother);
    
    if(imother==indexTrig)  continue ;
    
    Int_t   pdg    = particle->GetPdgCode();
    Int_t   status = particle->GetStatusCode();
     
    // Compare trigger with final state particles
    if( status != 1) continue ;

    // Select all particles in at least the TPC acceptance
    Bool_t inTPC = GetFiducialCut()->IsInFiducialCut(fTrigger.Eta(),fTrigger.Phi(),kCTS) ;
    if(!inTPC) continue;
    
    Float_t pt     = particle->Pt();
    Float_t eta    = particle->Eta();
    Float_t phi    = particle->Phi();
    if(phi < 0 ) phi += TMath::TwoPi();
    
    Double_t charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
    
    //Isolation
    Double_t radius = GetIsolationCut()->Radius(etaTrig, phiTrig, eta , phi) ;
    
    if(charge==0)
    {
      if(pt < fMinNeutralPt)  continue ;
      
      if( ptMaxNeutral < pt ) ptMaxNeutral = pt;
      
      if( radius < rThresIC )
      {
        if( pt > ptThresIC ) nICNeutral++ ;
        sumNePt+= pt;
      }
      
      Bool_t phPDG = kFALSE;
      if(pdg==22 || pdg==111) phPDG = kTRUE;
    
      //if(pt > ptTrig) printf(" --- pdg %d, phPDG %d pT %2.2f, pTtrig %2.2f, eta %2.2f, phi %2.2f\n",pdg,phPDG,pt,ptTrig,particle->Eta(), particle->Phi()*TMath::RadToDeg());
      if(phPDG)
      {
        if( ptMaxNeutPhot < pt) ptMaxNeutPhot = pt;
        
        if( radius < rThresIC )
        {
          if(pt > ptThresIC) nICNeutPhot++ ;
          sumNePtPhot += pt;
        }
      }
      
      //Calorimeter acceptance
      Bool_t inCalo = GetFiducialCut()->IsInFiducialCut(fTrigger.Eta(),fTrigger.Phi(),GetCalorimeter()) ;
      if(!inCalo) continue;
      
      if( ptMaxNeutEMCAL < pt ) ptMaxNeutEMCAL = pt;
      if( radius < rThresIC )
      {
        if( pt > ptThresIC ) nICNeutEMCAL++ ;
        sumNePtEMC += pt;
      }
      
      if(phPDG)
      {
        if( ptMaxNeutEMCALPhot < pt )             ptMaxNeutEMCALPhot = pt;
        if(  radius < rThresIC )
        {
          if (pt > ptThresIC) nICNeutEMCALPhot++ ;
          sumNePtEMCPhot += pt;
        }
      }
    }
    else
    {
      if( pt < fMinChargedPt)  continue ;
      
      if( ptMaxCharged < pt )   ptMaxCharged   = pt;
      
      if( radius < rThresIC )
      {
        //printf("UE track? pTtrig %2.2f, pt %2.2f, etaTrig %2.2f,  eta %2.2f, phiTrig %2.2f,  phi %2.2f, radius %2.2f\n",
        //       ptTrig, pt,etaTrig, eta, phiTrig*TMath::RadToDeg(), phi*TMath::RadToDeg(),radius);
        if( pt > ptThresIC ) nICTrack++ ;
        sumChPt += pt;
      }
    }

  } // particle loop
  
  // Leding decision
  if(ptTrig > ptMaxCharged)
  {
    //printf("pt charged %2.2f, pt neutral %2.2f, pt neutral emcal %2.2f, pt photon %2.2f, pt photon emcal %2.2f\n", 
    //       ptMaxCharged, ptMaxNeutral, ptMaxNeutEMCAL,ptMaxNeutPhot, ptMaxNeutEMCALPhot);
    if(ptTrig > ptMaxNeutral      ) leading[0] = kTRUE ;
    if(ptTrig > ptMaxNeutEMCAL    ) leading[1] = kTRUE ;
    if(ptTrig > ptMaxNeutPhot     ) leading[2] = kTRUE ;
    if(ptTrig > ptMaxNeutEMCALPhot) leading[3] = kTRUE ;
  }
  
  //printf("N in cone over threshold: tracks  %d, neutral %d, neutral emcal %d, photon %d, photon emcal %d\n", 
  //       nICTrack, nICNeutral ,nICNeutEMCAL,nICNeutPhot, nICNeutEMCALPhot);
  
  //------------------
  // Isolation decision
  if( isoMethod == AliIsolationCut::kPtThresIC )
  {
    if( nICTrack == 0 )
    {
      if(nICNeutral       == 0 ) isolated[0] = kTRUE ;
      if(nICNeutEMCAL     == 0 ) isolated[1] = kTRUE ;
      if(nICNeutPhot      == 0 ) isolated[2] = kTRUE ;
      if(nICNeutEMCALPhot == 0 ) isolated[3] = kTRUE ;
    }
  }
  else if( isoMethod == AliIsolationCut::kSumPtIC )
  {
    if(sumChPt + sumNePt        < sumThresIC ) isolated[0] = kTRUE ;
    if(sumChPt + sumNePtEMC     < sumThresIC ) isolated[1] = kTRUE ;
    if(sumChPt + sumNePtPhot    < sumThresIC ) isolated[2] = kTRUE ;
    if(sumChPt + sumNePtEMCPhot < sumThresIC ) isolated[3] = kTRUE ;
  }
  
  
  //----------------------------------------------------
  // Fill histograms if conditions apply for all 4 cases
  for( Int_t i = 0; i < 4; i++ )
  {
    if(pdgTrig==111)
    {
      if(leading[i])
      { 
        fhPtPi0Leading[i]->Fill(ptTrig);
        
        if     (i == 0) fhPtPi0LeadingSumPt[i]->Fill(ptTrig, sumChPt + sumNePt);
        else if(i == 1) fhPtPi0LeadingSumPt[i]->Fill(ptTrig, sumChPt + sumNePtEMC);
        else if(i == 2) fhPtPi0LeadingSumPt[i]->Fill(ptTrig, sumChPt + sumNePtPhot);
        else if(i == 3) fhPtPi0LeadingSumPt[i]->Fill(ptTrig, sumChPt + sumNePtEMCPhot);

        if(isolated[i]) fhPtPi0LeadingIsolated[i]->Fill(ptTrig);
      }
    }// pi0
    else if(pdgTrig==22)
    {
      if(leading[i])
      { 
        fhPtPhotonLeading[i]->Fill(ptTrig);
        
        if     (i == 0) fhPtPhotonLeadingSumPt[i]->Fill(ptTrig, sumChPt + sumNePt);
        else if(i == 1) fhPtPhotonLeadingSumPt[i]->Fill(ptTrig, sumChPt + sumNePtEMC);
        else if(i == 2) fhPtPhotonLeadingSumPt[i]->Fill(ptTrig, sumChPt + sumNePtPhot);
        else if(i == 3) fhPtPhotonLeadingSumPt[i]->Fill(ptTrig, sumChPt + sumNePtEMCPhot);
        
        if(isolated[i]) fhPtPhotonLeadingIsolated[i]->Fill(ptTrig);
      }
    } // photon
  } // conditions loop
 
  AliDebug(1,"End");
  
}
  
//_____________________________________________________
void  AliAnaGeneratorKine::MakeAnalysisFillHistograms() 
{
  //Particle-Parton Correlation Analysis, fill histograms
  
  AliDebug(1,"Start");
  
  GetPartonsAndJets();
  
  for(Int_t ipr = 0; ipr < fStack->GetNprimary(); ipr ++ )
  {
    TParticle * particle = fStack->Particle(ipr) ;
    
    Int_t   pdgTrig    = particle->GetPdgCode();
    Int_t   statusTrig = particle->GetStatusCode();
    Int_t   imother    = particle->GetFirstMother();
    Float_t ptTrig     = particle->Pt(); 

    // Select final state photons (prompt, fragmentation) or pi0s
    
    //Check the origin of the photon, accept if prompt or initial/final state radiation
    if(pdgTrig == 22 && statusTrig == 1)
    {
      if(imother > 8) continue;
    }
    // If not photon, trigger on pi0
    else if(pdgTrig != 111) continue;
    
    // Acceptance and kinematical cuts
    if( ptTrig < GetMinPt() ) continue ;
    
    // Recover the kinematics:
    particle->Momentum(fTrigger);
    
    Bool_t in = GetFiducialCutForTrigger()->IsInFiducialCut(fTrigger.Eta(),fTrigger.Phi(),fTriggerDetector) ;
    if(! in ) continue ;

    AliDebug(1,Form("Select trigger particle %d: pdg %d status %d, mother index %d, pT %2.2f, eta %2.2f, phi %2.2f",
                    ipr, pdgTrig, statusTrig, imother, ptTrig, particle->Eta(), particle->Phi()*TMath::RadToDeg()));
    
//    if(pdgTrig==111)
//    {
//      printf("\t pi0 daughters %d, %d\n", particle->GetDaughter(0), particle->GetDaughter(1));
//    }

    if     (pdgTrig==22 ) fhPtPhoton->Fill(ptTrig);
    else if(pdgTrig==111) fhPtPi0   ->Fill(ptTrig);
    
    // Check if it is leading
    Bool_t leading[4] ;
    Bool_t isolated[4] ;

    IsLeadingAndIsolated(ipr, pdgTrig, leading, isolated);
    
    Int_t iparton = -1;
    Int_t ok = CorrelateWithPartonOrJet(ipr, pdgTrig, leading, isolated, iparton);
    if(!ok) continue;
    
    GetXE(ipr,pdgTrig,leading,isolated,iparton) ;    
    
  }
  
  AliDebug(1,"End fill histograms");
  
}

//_________________________________________________________
void AliAnaGeneratorKine::SetTriggerDetector(TString & det)
{
  // Set the detrimeter for the analysis
  
  fTriggerDetectorString = det;
  
  if     (det=="EMCAL") fTriggerDetector = kEMCAL;
  else if(det=="PHOS" ) fTriggerDetector = kPHOS;
  else if(det=="CTS")   fTriggerDetector = kCTS;
  else if(det=="DCAL")  fTriggerDetector = kDCAL;
  else if(det.Contains("DCAL") && det.Contains("PHOS")) fTriggerDetector = kDCALPHOS;
  else AliFatal(Form("Detector < %s > not known!", det.Data()));
  
}

//_____________________________________________________
void AliAnaGeneratorKine::SetTriggerDetector(Int_t det)
{
  // Set the detrimeter for the analysis
  
  fTriggerDetector = det;
  
  if     (det==kEMCAL)    fTriggerDetectorString = "EMCAL";
  else if(det==kPHOS )    fTriggerDetectorString = "PHOS";
  else if(det==kCTS)      fTriggerDetectorString = "CTS";
  else if(det==kDCAL)     fTriggerDetectorString = "DCAL";
  else if(det==kDCALPHOS) fTriggerDetectorString = "DCAL_PHOS";
  else AliFatal(Form("Detector < %d > not known!", det));
  
}

 AliAnaGeneratorKine.cxx:1
 AliAnaGeneratorKine.cxx:2
 AliAnaGeneratorKine.cxx:3
 AliAnaGeneratorKine.cxx:4
 AliAnaGeneratorKine.cxx:5
 AliAnaGeneratorKine.cxx:6
 AliAnaGeneratorKine.cxx:7
 AliAnaGeneratorKine.cxx:8
 AliAnaGeneratorKine.cxx:9
 AliAnaGeneratorKine.cxx:10
 AliAnaGeneratorKine.cxx:11
 AliAnaGeneratorKine.cxx:12
 AliAnaGeneratorKine.cxx:13
 AliAnaGeneratorKine.cxx:14
 AliAnaGeneratorKine.cxx:15
 AliAnaGeneratorKine.cxx:16
 AliAnaGeneratorKine.cxx:17
 AliAnaGeneratorKine.cxx:18
 AliAnaGeneratorKine.cxx:19
 AliAnaGeneratorKine.cxx:20
 AliAnaGeneratorKine.cxx:21
 AliAnaGeneratorKine.cxx:22
 AliAnaGeneratorKine.cxx:23
 AliAnaGeneratorKine.cxx:24
 AliAnaGeneratorKine.cxx:25
 AliAnaGeneratorKine.cxx:26
 AliAnaGeneratorKine.cxx:27
 AliAnaGeneratorKine.cxx:28
 AliAnaGeneratorKine.cxx:29
 AliAnaGeneratorKine.cxx:30
 AliAnaGeneratorKine.cxx:31
 AliAnaGeneratorKine.cxx:32
 AliAnaGeneratorKine.cxx:33
 AliAnaGeneratorKine.cxx:34
 AliAnaGeneratorKine.cxx:35
 AliAnaGeneratorKine.cxx:36
 AliAnaGeneratorKine.cxx:37
 AliAnaGeneratorKine.cxx:38
 AliAnaGeneratorKine.cxx:39
 AliAnaGeneratorKine.cxx:40
 AliAnaGeneratorKine.cxx:41
 AliAnaGeneratorKine.cxx:42
 AliAnaGeneratorKine.cxx:43
 AliAnaGeneratorKine.cxx:44
 AliAnaGeneratorKine.cxx:45
 AliAnaGeneratorKine.cxx:46
 AliAnaGeneratorKine.cxx:47
 AliAnaGeneratorKine.cxx:48
 AliAnaGeneratorKine.cxx:49
 AliAnaGeneratorKine.cxx:50
 AliAnaGeneratorKine.cxx:51
 AliAnaGeneratorKine.cxx:52
 AliAnaGeneratorKine.cxx:53
 AliAnaGeneratorKine.cxx:54
 AliAnaGeneratorKine.cxx:55
 AliAnaGeneratorKine.cxx:56
 AliAnaGeneratorKine.cxx:57
 AliAnaGeneratorKine.cxx:58
 AliAnaGeneratorKine.cxx:59
 AliAnaGeneratorKine.cxx:60
 AliAnaGeneratorKine.cxx:61
 AliAnaGeneratorKine.cxx:62
 AliAnaGeneratorKine.cxx:63
 AliAnaGeneratorKine.cxx:64
 AliAnaGeneratorKine.cxx:65
 AliAnaGeneratorKine.cxx:66
 AliAnaGeneratorKine.cxx:67
 AliAnaGeneratorKine.cxx:68
 AliAnaGeneratorKine.cxx:69
 AliAnaGeneratorKine.cxx:70
 AliAnaGeneratorKine.cxx:71
 AliAnaGeneratorKine.cxx:72
 AliAnaGeneratorKine.cxx:73
 AliAnaGeneratorKine.cxx:74
 AliAnaGeneratorKine.cxx:75
 AliAnaGeneratorKine.cxx:76
 AliAnaGeneratorKine.cxx:77
 AliAnaGeneratorKine.cxx:78
 AliAnaGeneratorKine.cxx:79
 AliAnaGeneratorKine.cxx:80
 AliAnaGeneratorKine.cxx:81
 AliAnaGeneratorKine.cxx:82
 AliAnaGeneratorKine.cxx:83
 AliAnaGeneratorKine.cxx:84
 AliAnaGeneratorKine.cxx:85
 AliAnaGeneratorKine.cxx:86
 AliAnaGeneratorKine.cxx:87
 AliAnaGeneratorKine.cxx:88
 AliAnaGeneratorKine.cxx:89
 AliAnaGeneratorKine.cxx:90
 AliAnaGeneratorKine.cxx:91
 AliAnaGeneratorKine.cxx:92
 AliAnaGeneratorKine.cxx:93
 AliAnaGeneratorKine.cxx:94
 AliAnaGeneratorKine.cxx:95
 AliAnaGeneratorKine.cxx:96
 AliAnaGeneratorKine.cxx:97
 AliAnaGeneratorKine.cxx:98
 AliAnaGeneratorKine.cxx:99
 AliAnaGeneratorKine.cxx:100
 AliAnaGeneratorKine.cxx:101
 AliAnaGeneratorKine.cxx:102
 AliAnaGeneratorKine.cxx:103
 AliAnaGeneratorKine.cxx:104
 AliAnaGeneratorKine.cxx:105
 AliAnaGeneratorKine.cxx:106
 AliAnaGeneratorKine.cxx:107
 AliAnaGeneratorKine.cxx:108
 AliAnaGeneratorKine.cxx:109
 AliAnaGeneratorKine.cxx:110
 AliAnaGeneratorKine.cxx:111
 AliAnaGeneratorKine.cxx:112
 AliAnaGeneratorKine.cxx:113
 AliAnaGeneratorKine.cxx:114
 AliAnaGeneratorKine.cxx:115
 AliAnaGeneratorKine.cxx:116
 AliAnaGeneratorKine.cxx:117
 AliAnaGeneratorKine.cxx:118
 AliAnaGeneratorKine.cxx:119
 AliAnaGeneratorKine.cxx:120
 AliAnaGeneratorKine.cxx:121
 AliAnaGeneratorKine.cxx:122
 AliAnaGeneratorKine.cxx:123
 AliAnaGeneratorKine.cxx:124
 AliAnaGeneratorKine.cxx:125
 AliAnaGeneratorKine.cxx:126
 AliAnaGeneratorKine.cxx:127
 AliAnaGeneratorKine.cxx:128
 AliAnaGeneratorKine.cxx:129
 AliAnaGeneratorKine.cxx:130
 AliAnaGeneratorKine.cxx:131
 AliAnaGeneratorKine.cxx:132
 AliAnaGeneratorKine.cxx:133
 AliAnaGeneratorKine.cxx:134
 AliAnaGeneratorKine.cxx:135
 AliAnaGeneratorKine.cxx:136
 AliAnaGeneratorKine.cxx:137
 AliAnaGeneratorKine.cxx:138
 AliAnaGeneratorKine.cxx:139
 AliAnaGeneratorKine.cxx:140
 AliAnaGeneratorKine.cxx:141
 AliAnaGeneratorKine.cxx:142
 AliAnaGeneratorKine.cxx:143
 AliAnaGeneratorKine.cxx:144
 AliAnaGeneratorKine.cxx:145
 AliAnaGeneratorKine.cxx:146
 AliAnaGeneratorKine.cxx:147
 AliAnaGeneratorKine.cxx:148
 AliAnaGeneratorKine.cxx:149
 AliAnaGeneratorKine.cxx:150
 AliAnaGeneratorKine.cxx:151
 AliAnaGeneratorKine.cxx:152
 AliAnaGeneratorKine.cxx:153
 AliAnaGeneratorKine.cxx:154
 AliAnaGeneratorKine.cxx:155
 AliAnaGeneratorKine.cxx:156
 AliAnaGeneratorKine.cxx:157
 AliAnaGeneratorKine.cxx:158
 AliAnaGeneratorKine.cxx:159
 AliAnaGeneratorKine.cxx:160
 AliAnaGeneratorKine.cxx:161
 AliAnaGeneratorKine.cxx:162
 AliAnaGeneratorKine.cxx:163
 AliAnaGeneratorKine.cxx:164
 AliAnaGeneratorKine.cxx:165
 AliAnaGeneratorKine.cxx:166
 AliAnaGeneratorKine.cxx:167
 AliAnaGeneratorKine.cxx:168
 AliAnaGeneratorKine.cxx:169
 AliAnaGeneratorKine.cxx:170
 AliAnaGeneratorKine.cxx:171
 AliAnaGeneratorKine.cxx:172
 AliAnaGeneratorKine.cxx:173
 AliAnaGeneratorKine.cxx:174
 AliAnaGeneratorKine.cxx:175
 AliAnaGeneratorKine.cxx:176
 AliAnaGeneratorKine.cxx:177
 AliAnaGeneratorKine.cxx:178
 AliAnaGeneratorKine.cxx:179
 AliAnaGeneratorKine.cxx:180
 AliAnaGeneratorKine.cxx:181
 AliAnaGeneratorKine.cxx:182
 AliAnaGeneratorKine.cxx:183
 AliAnaGeneratorKine.cxx:184
 AliAnaGeneratorKine.cxx:185
 AliAnaGeneratorKine.cxx:186
 AliAnaGeneratorKine.cxx:187
 AliAnaGeneratorKine.cxx:188
 AliAnaGeneratorKine.cxx:189
 AliAnaGeneratorKine.cxx:190
 AliAnaGeneratorKine.cxx:191
 AliAnaGeneratorKine.cxx:192
 AliAnaGeneratorKine.cxx:193
 AliAnaGeneratorKine.cxx:194
 AliAnaGeneratorKine.cxx:195
 AliAnaGeneratorKine.cxx:196
 AliAnaGeneratorKine.cxx:197
 AliAnaGeneratorKine.cxx:198
 AliAnaGeneratorKine.cxx:199
 AliAnaGeneratorKine.cxx:200
 AliAnaGeneratorKine.cxx:201
 AliAnaGeneratorKine.cxx:202
 AliAnaGeneratorKine.cxx:203
 AliAnaGeneratorKine.cxx:204
 AliAnaGeneratorKine.cxx:205
 AliAnaGeneratorKine.cxx:206
 AliAnaGeneratorKine.cxx:207
 AliAnaGeneratorKine.cxx:208
 AliAnaGeneratorKine.cxx:209
 AliAnaGeneratorKine.cxx:210
 AliAnaGeneratorKine.cxx:211
 AliAnaGeneratorKine.cxx:212
 AliAnaGeneratorKine.cxx:213
 AliAnaGeneratorKine.cxx:214
 AliAnaGeneratorKine.cxx:215
 AliAnaGeneratorKine.cxx:216
 AliAnaGeneratorKine.cxx:217
 AliAnaGeneratorKine.cxx:218
 AliAnaGeneratorKine.cxx:219
 AliAnaGeneratorKine.cxx:220
 AliAnaGeneratorKine.cxx:221
 AliAnaGeneratorKine.cxx:222
 AliAnaGeneratorKine.cxx:223
 AliAnaGeneratorKine.cxx:224
 AliAnaGeneratorKine.cxx:225
 AliAnaGeneratorKine.cxx:226
 AliAnaGeneratorKine.cxx:227
 AliAnaGeneratorKine.cxx:228
 AliAnaGeneratorKine.cxx:229
 AliAnaGeneratorKine.cxx:230
 AliAnaGeneratorKine.cxx:231
 AliAnaGeneratorKine.cxx:232
 AliAnaGeneratorKine.cxx:233
 AliAnaGeneratorKine.cxx:234
 AliAnaGeneratorKine.cxx:235
 AliAnaGeneratorKine.cxx:236
 AliAnaGeneratorKine.cxx:237
 AliAnaGeneratorKine.cxx:238
 AliAnaGeneratorKine.cxx:239
 AliAnaGeneratorKine.cxx:240
 AliAnaGeneratorKine.cxx:241
 AliAnaGeneratorKine.cxx:242
 AliAnaGeneratorKine.cxx:243
 AliAnaGeneratorKine.cxx:244
 AliAnaGeneratorKine.cxx:245
 AliAnaGeneratorKine.cxx:246
 AliAnaGeneratorKine.cxx:247
 AliAnaGeneratorKine.cxx:248
 AliAnaGeneratorKine.cxx:249
 AliAnaGeneratorKine.cxx:250
 AliAnaGeneratorKine.cxx:251
 AliAnaGeneratorKine.cxx:252
 AliAnaGeneratorKine.cxx:253
 AliAnaGeneratorKine.cxx:254
 AliAnaGeneratorKine.cxx:255
 AliAnaGeneratorKine.cxx:256
 AliAnaGeneratorKine.cxx:257
 AliAnaGeneratorKine.cxx:258
 AliAnaGeneratorKine.cxx:259
 AliAnaGeneratorKine.cxx:260
 AliAnaGeneratorKine.cxx:261
 AliAnaGeneratorKine.cxx:262
 AliAnaGeneratorKine.cxx:263
 AliAnaGeneratorKine.cxx:264
 AliAnaGeneratorKine.cxx:265
 AliAnaGeneratorKine.cxx:266
 AliAnaGeneratorKine.cxx:267
 AliAnaGeneratorKine.cxx:268
 AliAnaGeneratorKine.cxx:269
 AliAnaGeneratorKine.cxx:270
 AliAnaGeneratorKine.cxx:271
 AliAnaGeneratorKine.cxx:272
 AliAnaGeneratorKine.cxx:273
 AliAnaGeneratorKine.cxx:274
 AliAnaGeneratorKine.cxx:275
 AliAnaGeneratorKine.cxx:276
 AliAnaGeneratorKine.cxx:277
 AliAnaGeneratorKine.cxx:278
 AliAnaGeneratorKine.cxx:279
 AliAnaGeneratorKine.cxx:280
 AliAnaGeneratorKine.cxx:281
 AliAnaGeneratorKine.cxx:282
 AliAnaGeneratorKine.cxx:283
 AliAnaGeneratorKine.cxx:284
 AliAnaGeneratorKine.cxx:285
 AliAnaGeneratorKine.cxx:286
 AliAnaGeneratorKine.cxx:287
 AliAnaGeneratorKine.cxx:288
 AliAnaGeneratorKine.cxx:289
 AliAnaGeneratorKine.cxx:290
 AliAnaGeneratorKine.cxx:291
 AliAnaGeneratorKine.cxx:292
 AliAnaGeneratorKine.cxx:293
 AliAnaGeneratorKine.cxx:294
 AliAnaGeneratorKine.cxx:295
 AliAnaGeneratorKine.cxx:296
 AliAnaGeneratorKine.cxx:297
 AliAnaGeneratorKine.cxx:298
 AliAnaGeneratorKine.cxx:299
 AliAnaGeneratorKine.cxx:300
 AliAnaGeneratorKine.cxx:301
 AliAnaGeneratorKine.cxx:302
 AliAnaGeneratorKine.cxx:303
 AliAnaGeneratorKine.cxx:304
 AliAnaGeneratorKine.cxx:305
 AliAnaGeneratorKine.cxx:306
 AliAnaGeneratorKine.cxx:307
 AliAnaGeneratorKine.cxx:308
 AliAnaGeneratorKine.cxx:309
 AliAnaGeneratorKine.cxx:310
 AliAnaGeneratorKine.cxx:311
 AliAnaGeneratorKine.cxx:312
 AliAnaGeneratorKine.cxx:313
 AliAnaGeneratorKine.cxx:314
 AliAnaGeneratorKine.cxx:315
 AliAnaGeneratorKine.cxx:316
 AliAnaGeneratorKine.cxx:317
 AliAnaGeneratorKine.cxx:318
 AliAnaGeneratorKine.cxx:319
 AliAnaGeneratorKine.cxx:320
 AliAnaGeneratorKine.cxx:321
 AliAnaGeneratorKine.cxx:322
 AliAnaGeneratorKine.cxx:323
 AliAnaGeneratorKine.cxx:324
 AliAnaGeneratorKine.cxx:325
 AliAnaGeneratorKine.cxx:326
 AliAnaGeneratorKine.cxx:327
 AliAnaGeneratorKine.cxx:328
 AliAnaGeneratorKine.cxx:329
 AliAnaGeneratorKine.cxx:330
 AliAnaGeneratorKine.cxx:331
 AliAnaGeneratorKine.cxx:332
 AliAnaGeneratorKine.cxx:333
 AliAnaGeneratorKine.cxx:334
 AliAnaGeneratorKine.cxx:335
 AliAnaGeneratorKine.cxx:336
 AliAnaGeneratorKine.cxx:337
 AliAnaGeneratorKine.cxx:338
 AliAnaGeneratorKine.cxx:339
 AliAnaGeneratorKine.cxx:340
 AliAnaGeneratorKine.cxx:341
 AliAnaGeneratorKine.cxx:342
 AliAnaGeneratorKine.cxx:343
 AliAnaGeneratorKine.cxx:344
 AliAnaGeneratorKine.cxx:345
 AliAnaGeneratorKine.cxx:346
 AliAnaGeneratorKine.cxx:347
 AliAnaGeneratorKine.cxx:348
 AliAnaGeneratorKine.cxx:349
 AliAnaGeneratorKine.cxx:350
 AliAnaGeneratorKine.cxx:351
 AliAnaGeneratorKine.cxx:352
 AliAnaGeneratorKine.cxx:353
 AliAnaGeneratorKine.cxx:354
 AliAnaGeneratorKine.cxx:355
 AliAnaGeneratorKine.cxx:356
 AliAnaGeneratorKine.cxx:357
 AliAnaGeneratorKine.cxx:358
 AliAnaGeneratorKine.cxx:359
 AliAnaGeneratorKine.cxx:360
 AliAnaGeneratorKine.cxx:361
 AliAnaGeneratorKine.cxx:362
 AliAnaGeneratorKine.cxx:363
 AliAnaGeneratorKine.cxx:364
 AliAnaGeneratorKine.cxx:365
 AliAnaGeneratorKine.cxx:366
 AliAnaGeneratorKine.cxx:367
 AliAnaGeneratorKine.cxx:368
 AliAnaGeneratorKine.cxx:369
 AliAnaGeneratorKine.cxx:370
 AliAnaGeneratorKine.cxx:371
 AliAnaGeneratorKine.cxx:372
 AliAnaGeneratorKine.cxx:373
 AliAnaGeneratorKine.cxx:374
 AliAnaGeneratorKine.cxx:375
 AliAnaGeneratorKine.cxx:376
 AliAnaGeneratorKine.cxx:377
 AliAnaGeneratorKine.cxx:378
 AliAnaGeneratorKine.cxx:379
 AliAnaGeneratorKine.cxx:380
 AliAnaGeneratorKine.cxx:381
 AliAnaGeneratorKine.cxx:382
 AliAnaGeneratorKine.cxx:383
 AliAnaGeneratorKine.cxx:384
 AliAnaGeneratorKine.cxx:385
 AliAnaGeneratorKine.cxx:386
 AliAnaGeneratorKine.cxx:387
 AliAnaGeneratorKine.cxx:388
 AliAnaGeneratorKine.cxx:389
 AliAnaGeneratorKine.cxx:390
 AliAnaGeneratorKine.cxx:391
 AliAnaGeneratorKine.cxx:392
 AliAnaGeneratorKine.cxx:393
 AliAnaGeneratorKine.cxx:394
 AliAnaGeneratorKine.cxx:395
 AliAnaGeneratorKine.cxx:396
 AliAnaGeneratorKine.cxx:397
 AliAnaGeneratorKine.cxx:398
 AliAnaGeneratorKine.cxx:399
 AliAnaGeneratorKine.cxx:400
 AliAnaGeneratorKine.cxx:401
 AliAnaGeneratorKine.cxx:402
 AliAnaGeneratorKine.cxx:403
 AliAnaGeneratorKine.cxx:404
 AliAnaGeneratorKine.cxx:405
 AliAnaGeneratorKine.cxx:406
 AliAnaGeneratorKine.cxx:407
 AliAnaGeneratorKine.cxx:408
 AliAnaGeneratorKine.cxx:409
 AliAnaGeneratorKine.cxx:410
 AliAnaGeneratorKine.cxx:411
 AliAnaGeneratorKine.cxx:412
 AliAnaGeneratorKine.cxx:413
 AliAnaGeneratorKine.cxx:414
 AliAnaGeneratorKine.cxx:415
 AliAnaGeneratorKine.cxx:416
 AliAnaGeneratorKine.cxx:417
 AliAnaGeneratorKine.cxx:418
 AliAnaGeneratorKine.cxx:419
 AliAnaGeneratorKine.cxx:420
 AliAnaGeneratorKine.cxx:421
 AliAnaGeneratorKine.cxx:422
 AliAnaGeneratorKine.cxx:423
 AliAnaGeneratorKine.cxx:424
 AliAnaGeneratorKine.cxx:425
 AliAnaGeneratorKine.cxx:426
 AliAnaGeneratorKine.cxx:427
 AliAnaGeneratorKine.cxx:428
 AliAnaGeneratorKine.cxx:429
 AliAnaGeneratorKine.cxx:430
 AliAnaGeneratorKine.cxx:431
 AliAnaGeneratorKine.cxx:432
 AliAnaGeneratorKine.cxx:433
 AliAnaGeneratorKine.cxx:434
 AliAnaGeneratorKine.cxx:435
 AliAnaGeneratorKine.cxx:436
 AliAnaGeneratorKine.cxx:437
 AliAnaGeneratorKine.cxx:438
 AliAnaGeneratorKine.cxx:439
 AliAnaGeneratorKine.cxx:440
 AliAnaGeneratorKine.cxx:441
 AliAnaGeneratorKine.cxx:442
 AliAnaGeneratorKine.cxx:443
 AliAnaGeneratorKine.cxx:444
 AliAnaGeneratorKine.cxx:445
 AliAnaGeneratorKine.cxx:446
 AliAnaGeneratorKine.cxx:447
 AliAnaGeneratorKine.cxx:448
 AliAnaGeneratorKine.cxx:449
 AliAnaGeneratorKine.cxx:450
 AliAnaGeneratorKine.cxx:451
 AliAnaGeneratorKine.cxx:452
 AliAnaGeneratorKine.cxx:453
 AliAnaGeneratorKine.cxx:454
 AliAnaGeneratorKine.cxx:455
 AliAnaGeneratorKine.cxx:456
 AliAnaGeneratorKine.cxx:457
 AliAnaGeneratorKine.cxx:458
 AliAnaGeneratorKine.cxx:459
 AliAnaGeneratorKine.cxx:460
 AliAnaGeneratorKine.cxx:461
 AliAnaGeneratorKine.cxx:462
 AliAnaGeneratorKine.cxx:463
 AliAnaGeneratorKine.cxx:464
 AliAnaGeneratorKine.cxx:465
 AliAnaGeneratorKine.cxx:466
 AliAnaGeneratorKine.cxx:467
 AliAnaGeneratorKine.cxx:468
 AliAnaGeneratorKine.cxx:469
 AliAnaGeneratorKine.cxx:470
 AliAnaGeneratorKine.cxx:471
 AliAnaGeneratorKine.cxx:472
 AliAnaGeneratorKine.cxx:473
 AliAnaGeneratorKine.cxx:474
 AliAnaGeneratorKine.cxx:475
 AliAnaGeneratorKine.cxx:476
 AliAnaGeneratorKine.cxx:477
 AliAnaGeneratorKine.cxx:478
 AliAnaGeneratorKine.cxx:479
 AliAnaGeneratorKine.cxx:480
 AliAnaGeneratorKine.cxx:481
 AliAnaGeneratorKine.cxx:482
 AliAnaGeneratorKine.cxx:483
 AliAnaGeneratorKine.cxx:484
 AliAnaGeneratorKine.cxx:485
 AliAnaGeneratorKine.cxx:486
 AliAnaGeneratorKine.cxx:487
 AliAnaGeneratorKine.cxx:488
 AliAnaGeneratorKine.cxx:489
 AliAnaGeneratorKine.cxx:490
 AliAnaGeneratorKine.cxx:491
 AliAnaGeneratorKine.cxx:492
 AliAnaGeneratorKine.cxx:493
 AliAnaGeneratorKine.cxx:494
 AliAnaGeneratorKine.cxx:495
 AliAnaGeneratorKine.cxx:496
 AliAnaGeneratorKine.cxx:497
 AliAnaGeneratorKine.cxx:498
 AliAnaGeneratorKine.cxx:499
 AliAnaGeneratorKine.cxx:500
 AliAnaGeneratorKine.cxx:501
 AliAnaGeneratorKine.cxx:502
 AliAnaGeneratorKine.cxx:503
 AliAnaGeneratorKine.cxx:504
 AliAnaGeneratorKine.cxx:505
 AliAnaGeneratorKine.cxx:506
 AliAnaGeneratorKine.cxx:507
 AliAnaGeneratorKine.cxx:508
 AliAnaGeneratorKine.cxx:509
 AliAnaGeneratorKine.cxx:510
 AliAnaGeneratorKine.cxx:511
 AliAnaGeneratorKine.cxx:512
 AliAnaGeneratorKine.cxx:513
 AliAnaGeneratorKine.cxx:514
 AliAnaGeneratorKine.cxx:515
 AliAnaGeneratorKine.cxx:516
 AliAnaGeneratorKine.cxx:517
 AliAnaGeneratorKine.cxx:518
 AliAnaGeneratorKine.cxx:519
 AliAnaGeneratorKine.cxx:520
 AliAnaGeneratorKine.cxx:521
 AliAnaGeneratorKine.cxx:522
 AliAnaGeneratorKine.cxx:523
 AliAnaGeneratorKine.cxx:524
 AliAnaGeneratorKine.cxx:525
 AliAnaGeneratorKine.cxx:526
 AliAnaGeneratorKine.cxx:527
 AliAnaGeneratorKine.cxx:528
 AliAnaGeneratorKine.cxx:529
 AliAnaGeneratorKine.cxx:530
 AliAnaGeneratorKine.cxx:531
 AliAnaGeneratorKine.cxx:532
 AliAnaGeneratorKine.cxx:533
 AliAnaGeneratorKine.cxx:534
 AliAnaGeneratorKine.cxx:535
 AliAnaGeneratorKine.cxx:536
 AliAnaGeneratorKine.cxx:537
 AliAnaGeneratorKine.cxx:538
 AliAnaGeneratorKine.cxx:539
 AliAnaGeneratorKine.cxx:540
 AliAnaGeneratorKine.cxx:541
 AliAnaGeneratorKine.cxx:542
 AliAnaGeneratorKine.cxx:543
 AliAnaGeneratorKine.cxx:544
 AliAnaGeneratorKine.cxx:545
 AliAnaGeneratorKine.cxx:546
 AliAnaGeneratorKine.cxx:547
 AliAnaGeneratorKine.cxx:548
 AliAnaGeneratorKine.cxx:549
 AliAnaGeneratorKine.cxx:550
 AliAnaGeneratorKine.cxx:551
 AliAnaGeneratorKine.cxx:552
 AliAnaGeneratorKine.cxx:553
 AliAnaGeneratorKine.cxx:554
 AliAnaGeneratorKine.cxx:555
 AliAnaGeneratorKine.cxx:556
 AliAnaGeneratorKine.cxx:557
 AliAnaGeneratorKine.cxx:558
 AliAnaGeneratorKine.cxx:559
 AliAnaGeneratorKine.cxx:560
 AliAnaGeneratorKine.cxx:561
 AliAnaGeneratorKine.cxx:562
 AliAnaGeneratorKine.cxx:563
 AliAnaGeneratorKine.cxx:564
 AliAnaGeneratorKine.cxx:565
 AliAnaGeneratorKine.cxx:566
 AliAnaGeneratorKine.cxx:567
 AliAnaGeneratorKine.cxx:568
 AliAnaGeneratorKine.cxx:569
 AliAnaGeneratorKine.cxx:570
 AliAnaGeneratorKine.cxx:571
 AliAnaGeneratorKine.cxx:572
 AliAnaGeneratorKine.cxx:573
 AliAnaGeneratorKine.cxx:574
 AliAnaGeneratorKine.cxx:575
 AliAnaGeneratorKine.cxx:576
 AliAnaGeneratorKine.cxx:577
 AliAnaGeneratorKine.cxx:578
 AliAnaGeneratorKine.cxx:579
 AliAnaGeneratorKine.cxx:580
 AliAnaGeneratorKine.cxx:581
 AliAnaGeneratorKine.cxx:582
 AliAnaGeneratorKine.cxx:583
 AliAnaGeneratorKine.cxx:584
 AliAnaGeneratorKine.cxx:585
 AliAnaGeneratorKine.cxx:586
 AliAnaGeneratorKine.cxx:587
 AliAnaGeneratorKine.cxx:588
 AliAnaGeneratorKine.cxx:589
 AliAnaGeneratorKine.cxx:590
 AliAnaGeneratorKine.cxx:591
 AliAnaGeneratorKine.cxx:592
 AliAnaGeneratorKine.cxx:593
 AliAnaGeneratorKine.cxx:594
 AliAnaGeneratorKine.cxx:595
 AliAnaGeneratorKine.cxx:596
 AliAnaGeneratorKine.cxx:597
 AliAnaGeneratorKine.cxx:598
 AliAnaGeneratorKine.cxx:599
 AliAnaGeneratorKine.cxx:600
 AliAnaGeneratorKine.cxx:601
 AliAnaGeneratorKine.cxx:602
 AliAnaGeneratorKine.cxx:603
 AliAnaGeneratorKine.cxx:604
 AliAnaGeneratorKine.cxx:605
 AliAnaGeneratorKine.cxx:606
 AliAnaGeneratorKine.cxx:607
 AliAnaGeneratorKine.cxx:608
 AliAnaGeneratorKine.cxx:609
 AliAnaGeneratorKine.cxx:610
 AliAnaGeneratorKine.cxx:611
 AliAnaGeneratorKine.cxx:612
 AliAnaGeneratorKine.cxx:613
 AliAnaGeneratorKine.cxx:614
 AliAnaGeneratorKine.cxx:615
 AliAnaGeneratorKine.cxx:616
 AliAnaGeneratorKine.cxx:617
 AliAnaGeneratorKine.cxx:618
 AliAnaGeneratorKine.cxx:619
 AliAnaGeneratorKine.cxx:620
 AliAnaGeneratorKine.cxx:621
 AliAnaGeneratorKine.cxx:622
 AliAnaGeneratorKine.cxx:623
 AliAnaGeneratorKine.cxx:624
 AliAnaGeneratorKine.cxx:625
 AliAnaGeneratorKine.cxx:626
 AliAnaGeneratorKine.cxx:627
 AliAnaGeneratorKine.cxx:628
 AliAnaGeneratorKine.cxx:629
 AliAnaGeneratorKine.cxx:630
 AliAnaGeneratorKine.cxx:631
 AliAnaGeneratorKine.cxx:632
 AliAnaGeneratorKine.cxx:633
 AliAnaGeneratorKine.cxx:634
 AliAnaGeneratorKine.cxx:635
 AliAnaGeneratorKine.cxx:636
 AliAnaGeneratorKine.cxx:637
 AliAnaGeneratorKine.cxx:638
 AliAnaGeneratorKine.cxx:639
 AliAnaGeneratorKine.cxx:640
 AliAnaGeneratorKine.cxx:641
 AliAnaGeneratorKine.cxx:642
 AliAnaGeneratorKine.cxx:643
 AliAnaGeneratorKine.cxx:644
 AliAnaGeneratorKine.cxx:645
 AliAnaGeneratorKine.cxx:646
 AliAnaGeneratorKine.cxx:647
 AliAnaGeneratorKine.cxx:648
 AliAnaGeneratorKine.cxx:649
 AliAnaGeneratorKine.cxx:650
 AliAnaGeneratorKine.cxx:651
 AliAnaGeneratorKine.cxx:652
 AliAnaGeneratorKine.cxx:653
 AliAnaGeneratorKine.cxx:654
 AliAnaGeneratorKine.cxx:655
 AliAnaGeneratorKine.cxx:656
 AliAnaGeneratorKine.cxx:657
 AliAnaGeneratorKine.cxx:658
 AliAnaGeneratorKine.cxx:659
 AliAnaGeneratorKine.cxx:660
 AliAnaGeneratorKine.cxx:661
 AliAnaGeneratorKine.cxx:662
 AliAnaGeneratorKine.cxx:663
 AliAnaGeneratorKine.cxx:664
 AliAnaGeneratorKine.cxx:665
 AliAnaGeneratorKine.cxx:666
 AliAnaGeneratorKine.cxx:667
 AliAnaGeneratorKine.cxx:668
 AliAnaGeneratorKine.cxx:669
 AliAnaGeneratorKine.cxx:670
 AliAnaGeneratorKine.cxx:671
 AliAnaGeneratorKine.cxx:672
 AliAnaGeneratorKine.cxx:673
 AliAnaGeneratorKine.cxx:674
 AliAnaGeneratorKine.cxx:675
 AliAnaGeneratorKine.cxx:676
 AliAnaGeneratorKine.cxx:677
 AliAnaGeneratorKine.cxx:678
 AliAnaGeneratorKine.cxx:679
 AliAnaGeneratorKine.cxx:680
 AliAnaGeneratorKine.cxx:681
 AliAnaGeneratorKine.cxx:682
 AliAnaGeneratorKine.cxx:683
 AliAnaGeneratorKine.cxx:684
 AliAnaGeneratorKine.cxx:685
 AliAnaGeneratorKine.cxx:686
 AliAnaGeneratorKine.cxx:687
 AliAnaGeneratorKine.cxx:688
 AliAnaGeneratorKine.cxx:689
 AliAnaGeneratorKine.cxx:690
 AliAnaGeneratorKine.cxx:691
 AliAnaGeneratorKine.cxx:692
 AliAnaGeneratorKine.cxx:693
 AliAnaGeneratorKine.cxx:694
 AliAnaGeneratorKine.cxx:695
 AliAnaGeneratorKine.cxx:696
 AliAnaGeneratorKine.cxx:697
 AliAnaGeneratorKine.cxx:698
 AliAnaGeneratorKine.cxx:699
 AliAnaGeneratorKine.cxx:700
 AliAnaGeneratorKine.cxx:701
 AliAnaGeneratorKine.cxx:702
 AliAnaGeneratorKine.cxx:703
 AliAnaGeneratorKine.cxx:704
 AliAnaGeneratorKine.cxx:705
 AliAnaGeneratorKine.cxx:706
 AliAnaGeneratorKine.cxx:707
 AliAnaGeneratorKine.cxx:708
 AliAnaGeneratorKine.cxx:709
 AliAnaGeneratorKine.cxx:710
 AliAnaGeneratorKine.cxx:711
 AliAnaGeneratorKine.cxx:712
 AliAnaGeneratorKine.cxx:713
 AliAnaGeneratorKine.cxx:714
 AliAnaGeneratorKine.cxx:715
 AliAnaGeneratorKine.cxx:716
 AliAnaGeneratorKine.cxx:717
 AliAnaGeneratorKine.cxx:718
 AliAnaGeneratorKine.cxx:719
 AliAnaGeneratorKine.cxx:720
 AliAnaGeneratorKine.cxx:721
 AliAnaGeneratorKine.cxx:722
 AliAnaGeneratorKine.cxx:723
 AliAnaGeneratorKine.cxx:724
 AliAnaGeneratorKine.cxx:725
 AliAnaGeneratorKine.cxx:726
 AliAnaGeneratorKine.cxx:727
 AliAnaGeneratorKine.cxx:728
 AliAnaGeneratorKine.cxx:729
 AliAnaGeneratorKine.cxx:730
 AliAnaGeneratorKine.cxx:731
 AliAnaGeneratorKine.cxx:732
 AliAnaGeneratorKine.cxx:733
 AliAnaGeneratorKine.cxx:734
 AliAnaGeneratorKine.cxx:735
 AliAnaGeneratorKine.cxx:736
 AliAnaGeneratorKine.cxx:737
 AliAnaGeneratorKine.cxx:738
 AliAnaGeneratorKine.cxx:739
 AliAnaGeneratorKine.cxx:740
 AliAnaGeneratorKine.cxx:741
 AliAnaGeneratorKine.cxx:742
 AliAnaGeneratorKine.cxx:743
 AliAnaGeneratorKine.cxx:744
 AliAnaGeneratorKine.cxx:745
 AliAnaGeneratorKine.cxx:746
 AliAnaGeneratorKine.cxx:747
 AliAnaGeneratorKine.cxx:748
 AliAnaGeneratorKine.cxx:749
 AliAnaGeneratorKine.cxx:750
 AliAnaGeneratorKine.cxx:751
 AliAnaGeneratorKine.cxx:752
 AliAnaGeneratorKine.cxx:753
 AliAnaGeneratorKine.cxx:754
 AliAnaGeneratorKine.cxx:755
 AliAnaGeneratorKine.cxx:756
 AliAnaGeneratorKine.cxx:757
 AliAnaGeneratorKine.cxx:758
 AliAnaGeneratorKine.cxx:759
 AliAnaGeneratorKine.cxx:760
 AliAnaGeneratorKine.cxx:761
 AliAnaGeneratorKine.cxx:762
 AliAnaGeneratorKine.cxx:763
 AliAnaGeneratorKine.cxx:764
 AliAnaGeneratorKine.cxx:765
 AliAnaGeneratorKine.cxx:766
 AliAnaGeneratorKine.cxx:767
 AliAnaGeneratorKine.cxx:768
 AliAnaGeneratorKine.cxx:769
 AliAnaGeneratorKine.cxx:770
 AliAnaGeneratorKine.cxx:771
 AliAnaGeneratorKine.cxx:772
 AliAnaGeneratorKine.cxx:773
 AliAnaGeneratorKine.cxx:774
 AliAnaGeneratorKine.cxx:775
 AliAnaGeneratorKine.cxx:776
 AliAnaGeneratorKine.cxx:777
 AliAnaGeneratorKine.cxx:778
 AliAnaGeneratorKine.cxx:779
 AliAnaGeneratorKine.cxx:780
 AliAnaGeneratorKine.cxx:781
 AliAnaGeneratorKine.cxx:782
 AliAnaGeneratorKine.cxx:783
 AliAnaGeneratorKine.cxx:784
 AliAnaGeneratorKine.cxx:785
 AliAnaGeneratorKine.cxx:786
 AliAnaGeneratorKine.cxx:787
 AliAnaGeneratorKine.cxx:788
 AliAnaGeneratorKine.cxx:789
 AliAnaGeneratorKine.cxx:790
 AliAnaGeneratorKine.cxx:791
 AliAnaGeneratorKine.cxx:792
 AliAnaGeneratorKine.cxx:793
 AliAnaGeneratorKine.cxx:794
 AliAnaGeneratorKine.cxx:795
 AliAnaGeneratorKine.cxx:796
 AliAnaGeneratorKine.cxx:797
 AliAnaGeneratorKine.cxx:798
 AliAnaGeneratorKine.cxx:799
 AliAnaGeneratorKine.cxx:800
 AliAnaGeneratorKine.cxx:801
 AliAnaGeneratorKine.cxx:802
 AliAnaGeneratorKine.cxx:803
 AliAnaGeneratorKine.cxx:804
 AliAnaGeneratorKine.cxx:805
 AliAnaGeneratorKine.cxx:806
 AliAnaGeneratorKine.cxx:807
 AliAnaGeneratorKine.cxx:808
 AliAnaGeneratorKine.cxx:809
 AliAnaGeneratorKine.cxx:810
 AliAnaGeneratorKine.cxx:811
 AliAnaGeneratorKine.cxx:812
 AliAnaGeneratorKine.cxx:813
 AliAnaGeneratorKine.cxx:814
 AliAnaGeneratorKine.cxx:815
 AliAnaGeneratorKine.cxx:816
 AliAnaGeneratorKine.cxx:817
 AliAnaGeneratorKine.cxx:818
 AliAnaGeneratorKine.cxx:819
 AliAnaGeneratorKine.cxx:820
 AliAnaGeneratorKine.cxx:821
 AliAnaGeneratorKine.cxx:822
 AliAnaGeneratorKine.cxx:823
 AliAnaGeneratorKine.cxx:824
 AliAnaGeneratorKine.cxx:825
 AliAnaGeneratorKine.cxx:826
 AliAnaGeneratorKine.cxx:827
 AliAnaGeneratorKine.cxx:828
 AliAnaGeneratorKine.cxx:829
 AliAnaGeneratorKine.cxx:830
 AliAnaGeneratorKine.cxx:831
 AliAnaGeneratorKine.cxx:832
 AliAnaGeneratorKine.cxx:833
 AliAnaGeneratorKine.cxx:834
 AliAnaGeneratorKine.cxx:835
 AliAnaGeneratorKine.cxx:836
 AliAnaGeneratorKine.cxx:837
 AliAnaGeneratorKine.cxx:838
 AliAnaGeneratorKine.cxx:839
 AliAnaGeneratorKine.cxx:840
 AliAnaGeneratorKine.cxx:841
 AliAnaGeneratorKine.cxx:842
 AliAnaGeneratorKine.cxx:843
 AliAnaGeneratorKine.cxx:844
 AliAnaGeneratorKine.cxx:845
 AliAnaGeneratorKine.cxx:846
 AliAnaGeneratorKine.cxx:847
 AliAnaGeneratorKine.cxx:848
 AliAnaGeneratorKine.cxx:849
 AliAnaGeneratorKine.cxx:850
 AliAnaGeneratorKine.cxx:851
 AliAnaGeneratorKine.cxx:852
 AliAnaGeneratorKine.cxx:853
 AliAnaGeneratorKine.cxx:854
 AliAnaGeneratorKine.cxx:855
 AliAnaGeneratorKine.cxx:856
 AliAnaGeneratorKine.cxx:857
 AliAnaGeneratorKine.cxx:858
 AliAnaGeneratorKine.cxx:859
 AliAnaGeneratorKine.cxx:860
 AliAnaGeneratorKine.cxx:861
 AliAnaGeneratorKine.cxx:862
 AliAnaGeneratorKine.cxx:863
 AliAnaGeneratorKine.cxx:864
 AliAnaGeneratorKine.cxx:865
 AliAnaGeneratorKine.cxx:866
 AliAnaGeneratorKine.cxx:867
 AliAnaGeneratorKine.cxx:868
 AliAnaGeneratorKine.cxx:869
 AliAnaGeneratorKine.cxx:870
 AliAnaGeneratorKine.cxx:871
 AliAnaGeneratorKine.cxx:872
 AliAnaGeneratorKine.cxx:873
 AliAnaGeneratorKine.cxx:874
 AliAnaGeneratorKine.cxx:875
 AliAnaGeneratorKine.cxx:876
 AliAnaGeneratorKine.cxx:877
 AliAnaGeneratorKine.cxx:878
 AliAnaGeneratorKine.cxx:879
 AliAnaGeneratorKine.cxx:880
 AliAnaGeneratorKine.cxx:881
 AliAnaGeneratorKine.cxx:882
 AliAnaGeneratorKine.cxx:883
 AliAnaGeneratorKine.cxx:884
 AliAnaGeneratorKine.cxx:885
 AliAnaGeneratorKine.cxx:886
 AliAnaGeneratorKine.cxx:887
 AliAnaGeneratorKine.cxx:888
 AliAnaGeneratorKine.cxx:889
 AliAnaGeneratorKine.cxx:890
 AliAnaGeneratorKine.cxx:891
 AliAnaGeneratorKine.cxx:892
 AliAnaGeneratorKine.cxx:893
 AliAnaGeneratorKine.cxx:894
 AliAnaGeneratorKine.cxx:895
 AliAnaGeneratorKine.cxx:896
 AliAnaGeneratorKine.cxx:897
 AliAnaGeneratorKine.cxx:898
 AliAnaGeneratorKine.cxx:899
 AliAnaGeneratorKine.cxx:900
 AliAnaGeneratorKine.cxx:901
 AliAnaGeneratorKine.cxx:902
 AliAnaGeneratorKine.cxx:903
 AliAnaGeneratorKine.cxx:904
 AliAnaGeneratorKine.cxx:905
 AliAnaGeneratorKine.cxx:906
 AliAnaGeneratorKine.cxx:907
 AliAnaGeneratorKine.cxx:908
 AliAnaGeneratorKine.cxx:909
 AliAnaGeneratorKine.cxx:910
 AliAnaGeneratorKine.cxx:911
 AliAnaGeneratorKine.cxx:912
 AliAnaGeneratorKine.cxx:913
 AliAnaGeneratorKine.cxx:914
 AliAnaGeneratorKine.cxx:915
 AliAnaGeneratorKine.cxx:916
 AliAnaGeneratorKine.cxx:917
 AliAnaGeneratorKine.cxx:918
 AliAnaGeneratorKine.cxx:919
 AliAnaGeneratorKine.cxx:920
 AliAnaGeneratorKine.cxx:921
 AliAnaGeneratorKine.cxx:922
 AliAnaGeneratorKine.cxx:923
 AliAnaGeneratorKine.cxx:924
 AliAnaGeneratorKine.cxx:925
 AliAnaGeneratorKine.cxx:926
 AliAnaGeneratorKine.cxx:927
 AliAnaGeneratorKine.cxx:928
 AliAnaGeneratorKine.cxx:929
 AliAnaGeneratorKine.cxx:930
 AliAnaGeneratorKine.cxx:931
 AliAnaGeneratorKine.cxx:932
 AliAnaGeneratorKine.cxx:933
 AliAnaGeneratorKine.cxx:934
 AliAnaGeneratorKine.cxx:935
 AliAnaGeneratorKine.cxx:936
 AliAnaGeneratorKine.cxx:937
 AliAnaGeneratorKine.cxx:938
 AliAnaGeneratorKine.cxx:939
 AliAnaGeneratorKine.cxx:940
 AliAnaGeneratorKine.cxx:941
 AliAnaGeneratorKine.cxx:942
 AliAnaGeneratorKine.cxx:943
 AliAnaGeneratorKine.cxx:944
 AliAnaGeneratorKine.cxx:945
 AliAnaGeneratorKine.cxx:946
 AliAnaGeneratorKine.cxx:947
 AliAnaGeneratorKine.cxx:948
 AliAnaGeneratorKine.cxx:949
 AliAnaGeneratorKine.cxx:950
 AliAnaGeneratorKine.cxx:951
 AliAnaGeneratorKine.cxx:952
 AliAnaGeneratorKine.cxx:953
 AliAnaGeneratorKine.cxx:954
 AliAnaGeneratorKine.cxx:955
 AliAnaGeneratorKine.cxx:956
 AliAnaGeneratorKine.cxx:957
 AliAnaGeneratorKine.cxx:958
 AliAnaGeneratorKine.cxx:959
 AliAnaGeneratorKine.cxx:960
 AliAnaGeneratorKine.cxx:961
 AliAnaGeneratorKine.cxx:962
 AliAnaGeneratorKine.cxx:963
 AliAnaGeneratorKine.cxx:964
 AliAnaGeneratorKine.cxx:965
 AliAnaGeneratorKine.cxx:966
 AliAnaGeneratorKine.cxx:967
 AliAnaGeneratorKine.cxx:968
 AliAnaGeneratorKine.cxx:969
 AliAnaGeneratorKine.cxx:970
 AliAnaGeneratorKine.cxx:971
 AliAnaGeneratorKine.cxx:972
 AliAnaGeneratorKine.cxx:973
 AliAnaGeneratorKine.cxx:974
 AliAnaGeneratorKine.cxx:975
 AliAnaGeneratorKine.cxx:976
 AliAnaGeneratorKine.cxx:977
 AliAnaGeneratorKine.cxx:978
 AliAnaGeneratorKine.cxx:979
 AliAnaGeneratorKine.cxx:980
 AliAnaGeneratorKine.cxx:981
 AliAnaGeneratorKine.cxx:982
 AliAnaGeneratorKine.cxx:983
 AliAnaGeneratorKine.cxx:984
 AliAnaGeneratorKine.cxx:985
 AliAnaGeneratorKine.cxx:986
 AliAnaGeneratorKine.cxx:987
 AliAnaGeneratorKine.cxx:988
 AliAnaGeneratorKine.cxx:989
 AliAnaGeneratorKine.cxx:990
 AliAnaGeneratorKine.cxx:991
 AliAnaGeneratorKine.cxx:992
 AliAnaGeneratorKine.cxx:993
 AliAnaGeneratorKine.cxx:994
 AliAnaGeneratorKine.cxx:995
 AliAnaGeneratorKine.cxx:996
 AliAnaGeneratorKine.cxx:997
 AliAnaGeneratorKine.cxx:998
 AliAnaGeneratorKine.cxx:999
 AliAnaGeneratorKine.cxx:1000
 AliAnaGeneratorKine.cxx:1001
 AliAnaGeneratorKine.cxx:1002
 AliAnaGeneratorKine.cxx:1003
 AliAnaGeneratorKine.cxx:1004
 AliAnaGeneratorKine.cxx:1005
 AliAnaGeneratorKine.cxx:1006
 AliAnaGeneratorKine.cxx:1007
 AliAnaGeneratorKine.cxx:1008
 AliAnaGeneratorKine.cxx:1009
 AliAnaGeneratorKine.cxx:1010
 AliAnaGeneratorKine.cxx:1011
 AliAnaGeneratorKine.cxx:1012
 AliAnaGeneratorKine.cxx:1013
 AliAnaGeneratorKine.cxx:1014
 AliAnaGeneratorKine.cxx:1015
 AliAnaGeneratorKine.cxx:1016
 AliAnaGeneratorKine.cxx:1017
 AliAnaGeneratorKine.cxx:1018
 AliAnaGeneratorKine.cxx:1019
 AliAnaGeneratorKine.cxx:1020
 AliAnaGeneratorKine.cxx:1021
 AliAnaGeneratorKine.cxx:1022
 AliAnaGeneratorKine.cxx:1023
 AliAnaGeneratorKine.cxx:1024
 AliAnaGeneratorKine.cxx:1025
 AliAnaGeneratorKine.cxx:1026
 AliAnaGeneratorKine.cxx:1027
 AliAnaGeneratorKine.cxx:1028
 AliAnaGeneratorKine.cxx:1029
 AliAnaGeneratorKine.cxx:1030
 AliAnaGeneratorKine.cxx:1031
 AliAnaGeneratorKine.cxx:1032
 AliAnaGeneratorKine.cxx:1033
 AliAnaGeneratorKine.cxx:1034
 AliAnaGeneratorKine.cxx:1035
 AliAnaGeneratorKine.cxx:1036
 AliAnaGeneratorKine.cxx:1037
 AliAnaGeneratorKine.cxx:1038
 AliAnaGeneratorKine.cxx:1039
 AliAnaGeneratorKine.cxx:1040
 AliAnaGeneratorKine.cxx:1041
 AliAnaGeneratorKine.cxx:1042
 AliAnaGeneratorKine.cxx:1043
 AliAnaGeneratorKine.cxx:1044
 AliAnaGeneratorKine.cxx:1045
 AliAnaGeneratorKine.cxx:1046
 AliAnaGeneratorKine.cxx:1047
 AliAnaGeneratorKine.cxx:1048
 AliAnaGeneratorKine.cxx:1049
 AliAnaGeneratorKine.cxx:1050
 AliAnaGeneratorKine.cxx:1051
 AliAnaGeneratorKine.cxx:1052
 AliAnaGeneratorKine.cxx:1053
 AliAnaGeneratorKine.cxx:1054
 AliAnaGeneratorKine.cxx:1055
 AliAnaGeneratorKine.cxx:1056
 AliAnaGeneratorKine.cxx:1057
 AliAnaGeneratorKine.cxx:1058
 AliAnaGeneratorKine.cxx:1059
 AliAnaGeneratorKine.cxx:1060
 AliAnaGeneratorKine.cxx:1061
 AliAnaGeneratorKine.cxx:1062
 AliAnaGeneratorKine.cxx:1063
 AliAnaGeneratorKine.cxx:1064
 AliAnaGeneratorKine.cxx:1065
 AliAnaGeneratorKine.cxx:1066
 AliAnaGeneratorKine.cxx:1067
 AliAnaGeneratorKine.cxx:1068
 AliAnaGeneratorKine.cxx:1069
 AliAnaGeneratorKine.cxx:1070
 AliAnaGeneratorKine.cxx:1071
 AliAnaGeneratorKine.cxx:1072
 AliAnaGeneratorKine.cxx:1073
 AliAnaGeneratorKine.cxx:1074
 AliAnaGeneratorKine.cxx:1075
 AliAnaGeneratorKine.cxx:1076
 AliAnaGeneratorKine.cxx:1077
 AliAnaGeneratorKine.cxx:1078
 AliAnaGeneratorKine.cxx:1079
 AliAnaGeneratorKine.cxx:1080
 AliAnaGeneratorKine.cxx:1081
 AliAnaGeneratorKine.cxx:1082
 AliAnaGeneratorKine.cxx:1083
 AliAnaGeneratorKine.cxx:1084
 AliAnaGeneratorKine.cxx:1085
 AliAnaGeneratorKine.cxx:1086
 AliAnaGeneratorKine.cxx:1087
 AliAnaGeneratorKine.cxx:1088
 AliAnaGeneratorKine.cxx:1089
 AliAnaGeneratorKine.cxx:1090
 AliAnaGeneratorKine.cxx:1091
 AliAnaGeneratorKine.cxx:1092
 AliAnaGeneratorKine.cxx:1093
 AliAnaGeneratorKine.cxx:1094
 AliAnaGeneratorKine.cxx:1095
 AliAnaGeneratorKine.cxx:1096
 AliAnaGeneratorKine.cxx:1097
 AliAnaGeneratorKine.cxx:1098
 AliAnaGeneratorKine.cxx:1099
 AliAnaGeneratorKine.cxx:1100
 AliAnaGeneratorKine.cxx:1101
 AliAnaGeneratorKine.cxx:1102
 AliAnaGeneratorKine.cxx:1103
 AliAnaGeneratorKine.cxx:1104
 AliAnaGeneratorKine.cxx:1105
 AliAnaGeneratorKine.cxx:1106
 AliAnaGeneratorKine.cxx:1107
 AliAnaGeneratorKine.cxx:1108
 AliAnaGeneratorKine.cxx:1109
 AliAnaGeneratorKine.cxx:1110
 AliAnaGeneratorKine.cxx:1111
 AliAnaGeneratorKine.cxx:1112
 AliAnaGeneratorKine.cxx:1113
 AliAnaGeneratorKine.cxx:1114
 AliAnaGeneratorKine.cxx:1115
 AliAnaGeneratorKine.cxx:1116
 AliAnaGeneratorKine.cxx:1117
 AliAnaGeneratorKine.cxx:1118
 AliAnaGeneratorKine.cxx:1119
 AliAnaGeneratorKine.cxx:1120
 AliAnaGeneratorKine.cxx:1121
 AliAnaGeneratorKine.cxx:1122
 AliAnaGeneratorKine.cxx:1123
 AliAnaGeneratorKine.cxx:1124
 AliAnaGeneratorKine.cxx:1125
 AliAnaGeneratorKine.cxx:1126
 AliAnaGeneratorKine.cxx:1127
 AliAnaGeneratorKine.cxx:1128
 AliAnaGeneratorKine.cxx:1129
 AliAnaGeneratorKine.cxx:1130
 AliAnaGeneratorKine.cxx:1131
 AliAnaGeneratorKine.cxx:1132
 AliAnaGeneratorKine.cxx:1133
 AliAnaGeneratorKine.cxx:1134
 AliAnaGeneratorKine.cxx:1135
 AliAnaGeneratorKine.cxx:1136
 AliAnaGeneratorKine.cxx:1137
 AliAnaGeneratorKine.cxx:1138
 AliAnaGeneratorKine.cxx:1139
 AliAnaGeneratorKine.cxx:1140
 AliAnaGeneratorKine.cxx:1141
 AliAnaGeneratorKine.cxx:1142
 AliAnaGeneratorKine.cxx:1143
 AliAnaGeneratorKine.cxx:1144
 AliAnaGeneratorKine.cxx:1145
 AliAnaGeneratorKine.cxx:1146
 AliAnaGeneratorKine.cxx:1147
 AliAnaGeneratorKine.cxx:1148
 AliAnaGeneratorKine.cxx:1149
 AliAnaGeneratorKine.cxx:1150
 AliAnaGeneratorKine.cxx:1151
 AliAnaGeneratorKine.cxx:1152
 AliAnaGeneratorKine.cxx:1153