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.                  *
 **************************************************************************/

/* $Id$ */

//---------------------------------------------------------------------
// Class to calculate the background per unit area
// manages the search for jets
// Authors: Elena Bruna elena.bruna@yale.edu
//          Sevil Salur ssalur@lbl.gov
//
// 2011 :
// renamed from AliJetBkg to AliFastJetBkg as this class uses only FASTJET based algos.
//---------------------------------------------------------------------

#include <Riostream.h> 
#include <TClonesArray.h>
#include <TF1.h>
#include <TString.h>

#include "AliJetHeader.h"
#include "AliFastJetHeaderV1.h"
#include "AliAODJet.h"
#include "AliFastJetInput.h"
#include "AliFastJetBkg.h"

#include "fastjet/PseudoJet.hh"
#include "fastjet/ClusterSequenceArea.hh"
#include "fastjet/AreaDefinition.hh"
#include "fastjet/JetDefinition.hh"

#include<vector> 

using namespace std;

ClassImp(AliFastJetBkg)

////////////////////////////////////////////////////////////////////////

AliFastJetBkg::AliFastJetBkg():
  TObject(),
  fHeader(0),
  fInputFJ(0)
{
  // Default constructor
}

//______________________________________________________________________
AliFastJetBkg::AliFastJetBkg(const AliFastJetBkg& input):
  TObject(input),
  fHeader(input.fHeader),
  fInputFJ(input.fInputFJ)
{
  // copy constructor
}

//______________________________________________________________________
AliFastJetBkg& AliFastJetBkg::operator=(const AliFastJetBkg& source)
{
  // Assignment operator. 
  if(this!=&source){ 
   TObject::operator=(source);
   fHeader = source.fHeader;
   fInputFJ = source.fInputFJ;
  }
  
  return *this;

}

//___________________________________________________________________
void AliFastJetBkg::BkgFastJetb(Double_t& rho,Double_t& sigma, 
				Double_t& meanarea)
{
  // Bkg estimation
   
  AliFastJetHeaderV1 *header = (AliFastJetHeaderV1*)fHeader; 
  Int_t debug  = header->GetDebug();     // debug option
  if(debug>0) cout<<"===============  AliFastJetBkg::BkgFastJetb()  =========== "<<endl;
  vector<fastjet::PseudoJet> inputParticles=fInputFJ->GetInputParticles();
  
  double rParamBkg = header->GetRparamBkg(); //Radius for background calculation

  Double_t medianb,sigmab,meanareab;
  CalcRhob(medianb,sigmab,meanareab,inputParticles,rParamBkg,"All");
  rho=medianb;
  sigma=sigmab;
  meanarea=meanareab;
 
}

//_________________________________________________________________
void AliFastJetBkg::BkgFastJetWoHardest(Double_t& rho,Double_t& sigma, 
					Double_t& meanarea)
{

  // Bkg estimation without hardest jet

  AliFastJetHeaderV1 *header = (AliFastJetHeaderV1*)fHeader; 
  Int_t debug  = header->GetDebug();     // debug option
  if(debug) cout<<"===============  AliFastJetBkg::BkgWoHardest()  =========== "<<endl;
  vector<fastjet::PseudoJet> inputParticles=fInputFJ->GetInputParticles();
  
  double rParamBkg = header->GetRparamBkg(); //Radius for background calculation  
  Double_t medianb,sigmab,meanareab;
  CalcRhoWoHardest(medianb,sigmab,meanareab,inputParticles,rParamBkg,"All");
  rho=medianb;
  sigma=sigmab;
  meanarea=meanareab;

}

//____________________________________________________________________
void AliFastJetBkg::CalcRhob(Double_t& median,Double_t& 
			     sigma,Double_t& 
			     meanarea,vector<fastjet::PseudoJet> inputParticles,Double_t 
			     rParamBkg,TString method)
{
  // calculate rho using the fastjet method

  AliFastJetHeaderV1 *header = (AliFastJetHeaderV1*)fHeader;
  Int_t debug  = header->GetDebug();     // debug option

  fastjet::Strategy strategy = header->GetStrategy();
  fastjet::RecombinationScheme recombScheme = header->GetRecombScheme();
  fastjet::JetAlgorithm algorithm = header->GetBGAlgorithm();
  fastjet::JetDefinition jetDef(algorithm, rParamBkg, recombScheme, strategy);

  // create an object that specifies how we to define the area
  fastjet::AreaDefinition areaDef;
  double ghostEtamax = header->GetGhostEtaMax(); 
  double ghostArea   = header->GetGhostArea(); 
  int    activeAreaRepeats = header->GetActiveAreaRepeats(); 

  // now create the object that holds info about ghosts

  fastjet::GhostedAreaSpec ghost_spec(ghostEtamax, activeAreaRepeats, ghostArea);
  // and from that get an area definition
  fastjet::AreaType areaType = header->GetAreaType();
  areaDef = fastjet::AreaDefinition(areaType,ghost_spec);
  
  //fastjet::ClusterSequenceArea clust_seq(inputParticles, jetDef);
  fastjet::ClusterSequenceArea clust_seq(inputParticles, jetDef,areaDef);
  TString comment = "Running FastJet algorithm for BKG calculation with the following setup. ";
  comment+= "Jet definition: ";
  comment+= TString(jetDef.description());
  // comment+= ". Area definition: ";
  // comment+= TString(areaDef.description());
  comment+= ". Strategy adopted by FastJet: ";
  comment+= TString(clust_seq.strategy_string());
  comment+= Form("Method: %s",method.Data());
  header->SetComment(comment);
  if(debug>0){
    cout << "--------------------------------------------------------" << endl;
    cout << comment << endl;
    cout << "--------------------------------------------------------" << endl;
  }

  vector<fastjet::PseudoJet> inclusiveJets = clust_seq.inclusive_jets(0.);
  vector<fastjet::PseudoJet> jets = sorted_by_pt(inclusiveJets); 

  double phiMin = 0, phiMax = 0, rapMin = 0, rapMax = 0;

  phiMin = 0;
  phiMax = 2*TMath::Pi();
 
  rapMax = ghostEtamax - rParamBkg;
  rapMin = - ghostEtamax + rParamBkg;

  fastjet::RangeDefinition range(rapMin, rapMax, phiMin, phiMax);

  double medianb, sigmab, meanareab;
  clust_seq.get_median_rho_and_sigma(inclusiveJets, range, false, medianb, sigmab, meanareab, false);
  median=medianb;
  sigma=sigmab;
  meanarea=meanareab; 
 
}

//____________________________________________________________________
void AliFastJetBkg::CalcRhoWoHardest(Double_t& median,Double_t& 
				     sigma,Double_t& meanarea,vector<fastjet::PseudoJet> inputParticles,Double_t 
				     rParamBkg,TString method)
{
  // calculate rho (without the hardest jet) using the fastjet method

  AliFastJetHeaderV1 *header = (AliFastJetHeaderV1*)fHeader;
  Int_t debug  = header->GetDebug();     // debug option

  fastjet::Strategy strategy = header->GetStrategy();
  fastjet::RecombinationScheme recombScheme = header->GetRecombScheme();
  fastjet::JetAlgorithm algorithm = header->GetBGAlgorithm();
  fastjet::JetDefinition jetDef(algorithm, rParamBkg, recombScheme, strategy);

  // create an object that specifies how we to define the area
  fastjet::AreaDefinition areaDef;
  double ghostEtamax = header->GetGhostEtaMax(); 
  double ghostArea   = header->GetGhostArea(); 
  int    activeAreaRepeats = header->GetActiveAreaRepeats(); 

  // now create the object that holds info about ghosts

  fastjet::GhostedAreaSpec ghost_spec(ghostEtamax, activeAreaRepeats, ghostArea);
  // and from that get an area definition
  fastjet::AreaType areaType = header->GetAreaType();
  areaDef = fastjet::AreaDefinition(areaType,ghost_spec);
  //fastjet::ClusterSequenceArea clust_seq(inputParticles, jetDef);
  fastjet::ClusterSequenceArea clust_seq(inputParticles,jetDef,areaDef);
  TString comment = "Running FastJet algorithm for BKG calculation with the following setup. ";
  comment+= "Jet definition: ";
  comment+= TString(jetDef.description());
  // comment+= ". Area definition: ";
  // comment+= TString(areaDef.description());
  comment+= ". Strategy adopted by FastJet: ";
  comment+= TString(clust_seq.strategy_string());
  comment+= Form("Method: %s",method.Data());
  header->SetComment(comment);
if(debug>0){
    cout << "--------------------------------------------------------" << endl;
    cout << comment << endl;
    cout << "--------------------------------------------------------" << endl;
  }

  vector<fastjet::PseudoJet> inclusiveJets = clust_seq.inclusive_jets(0.);
  vector<fastjet::PseudoJet> jets = sorted_by_pt(inclusiveJets); 
  vector<fastjet::PseudoJet> jets2=sorted_by_pt(inclusiveJets);
  if(jets2.size()>=2) jets2.erase(jets2.begin(),jets2.begin()+1);
    
  double phiMin = 0, phiMax = 0, rapMin = 0, rapMax = 0;

  phiMin = 0;
  phiMax = 2*TMath::Pi();
 
  rapMax = ghostEtamax - rParamBkg;
  rapMin = - ghostEtamax + rParamBkg;

  fastjet::RangeDefinition range(rapMin, rapMax, phiMin, phiMax);

  double medianb, sigmab, meanareab;
  clust_seq.get_median_rho_and_sigma(jets2, range, false, medianb, sigmab, 
				     meanareab, false);
  median=medianb;
  sigma=sigmab;
  meanarea=meanareab; 

}

//___________________________________________________________________
Float_t AliFastJetBkg::BkgFastJet()
{
  // Return background  
 
  AliFastJetHeaderV1 *header = (AliFastJetHeaderV1*)fHeader;
  Int_t debug  = header->GetDebug();     // debug option

  if(debug>0) cout<<"===============  AliFastJetBkg::BkgFastJet()  =========== "<<endl;
  vector<fastjet::PseudoJet> inputParticles=fInputFJ->GetInputParticles();
  
  if(debug>0) cout<<"printing inputParticles for BKG "<<inputParticles.size()<<endl;
  
  double rParamBkg = header->GetRparamBkg(); //Radius for background calculation
  Double_t rho=CalcRho(inputParticles,rParamBkg,"All");
  if(debug) cout<<"-------- rho (from all part)="<<rho<<endl; 
  return rho;
 
}

//___________________________________________________________________
Float_t AliFastJetBkg::BkgChargedFastJet()
{
  // Background for charged jets
  
  AliFastJetHeaderV1 *header = (AliFastJetHeaderV1*)fHeader;
  Int_t debug  = header->GetDebug();     // debug option

  if(debug>0) cout<<"===============  AliFastJetBkg::BkgChargedFastJet()  =========== "<<endl;

  vector<fastjet::PseudoJet> inputParticlesCharged=fInputFJ->GetInputParticlesCh();
  
  if(debug>0) cout<<"printing CHARGED inputParticles for BKG "<<inputParticlesCharged.size()<<endl;

  double rParam = header->GetRparam();

  Double_t rho=CalcRho(inputParticlesCharged,rParam,"Charg");

  if(debug>0) cout<<"-------- rho (from CHARGED part)="<<rho<<endl; 
  return rho;

}

//___________________________________________________________________
Float_t AliFastJetBkg::BkgStat()
{
  // background subtraction using statistical method
 
  AliFastJetHeaderV1 *header = (AliFastJetHeaderV1*)fHeader;
  Int_t debug  = header->GetDebug();     // debug option

  if(debug>0) cout<<"==============AliFastJetBkg::BkgStat()============="<<endl;
  //TO BE IMPLEMENTED 
  Int_t nTracks= 0;
  TF1 fun("fun",BkgFunction,0,800,1);
  Double_t enTot=fun.Eval(nTracks);
  Double_t accEMCal=2*0.7*110./180*TMath::Pi();//2.68 area of EMCal
  return enTot/accEMCal;

}

//___________________________________________________________________
Float_t AliFastJetBkg::BkgFastJetCone(TClonesArray* fAODJets)
{
  // Cone background subtraction method applied on the fastjet: REmove the particles of the
  // two largest jets with the given R from the estimation of new rho. 

  AliFastJetHeaderV1 *header = (AliFastJetHeaderV1*)fHeader;
  Int_t debug  = header->GetDebug();     // debug option

  if(debug>0) cout<<"==============AliFastJetBkg::SubtractFastJetBackgCone()============="<<endl;

  Float_t rc= header->GetRparam();

  //Hard wired Calorimeter area (get it later from the AliJetReaderHeader.h)
  Double_t accEMCal=2*0.7*110./180*TMath::Pi();//2.68 area of EMCal

  Int_t nJ=fAODJets->GetEntries(); //this must be the # of jets... 
  if(debug>0) cout<<"nJets:  "<<nJ<<endl;
  
  // Information extracted from fInputParticle
  // load input vectors and calculate total energy in array
  Float_t pt,eta,phi;
  Float_t jeteta = 0,jetphi = 0,jeteta1 = 0, jetphi1 = 0;
  Float_t rhoback=0.0;

  Float_t ptallback=0.0; //particles without the jet
  Float_t restarea=accEMCal; //initial area set 
  Bool_t acc=0;
  Bool_t acc1=0;
  Float_t rCone=0.4;
  
  if(nJ==1) { 
    AliAODJet *jettmp = (AliAODJet*)(fAODJets->At(0));
    jeteta=jettmp->Eta();
    jetphi=jettmp->Phi();
    acc=EmcalAcceptance(jeteta,jetphi,rCone);
    if(acc==1)restarea= accEMCal-TMath::Pi()*rc*rc;
    if(debug) cout<<" acc  "<<acc<<endl;
  }
  
  if(nJ>=2) { 
    AliAODJet *jettmp = (AliAODJet*)(fAODJets->At(0));
    AliAODJet *jettmp1 = (AliAODJet*)(fAODJets->At(1));
    jeteta=jettmp->Eta();
    jetphi=jettmp->Phi();
    jeteta1=jettmp1->Eta();
    jetphi1=jettmp1->Phi(); 
    acc=EmcalAcceptance(jeteta,jetphi,rCone);
    acc1=EmcalAcceptance(jeteta1,jetphi1,rCone);
    if(acc1==1 && acc==1)restarea= accEMCal-2*TMath::Pi()*rc*rc;
    if(acc1==1 && acc==0)restarea= accEMCal-TMath::Pi()*rc*rc;
    if(acc1==0 && acc==1)restarea= accEMCal-TMath::Pi()*rc*rc;

    if(debug) cout<<" acc1="<<acc<<"  acc2="<<acc1<<"  restarea="<<restarea<<endl;

  }
  
  // cout<<" nIn = "<<nIn<<endl;
  Float_t sumpt=0;
  vector<fastjet::PseudoJet> inputParticles=fInputFJ->GetInputParticles();
  for(UInt_t i=0; i<inputParticles.size(); i++)
    { // Loop over input list of particles
      pt    = inputParticles[i].perp();
      eta   = inputParticles[i].eta();
      phi   = inputParticles[i].phi();

      // To be updated
      //cout<<"test emcal acceptance for particles "<<EmcalAcceptance(eta,phi,0.)<<endl;
	
      Float_t deta=0.0, dphi=0.0, dr=100.0;
      Float_t deta1=0.0, dphi1=0.0, dr1=100.0;

      //cout<<i<<"  pt="<<pt<<"  eta="<<eta<<"  phi="<<phi<<endl;
      if(phi>1.396 && phi<3.316 && eta>-0.7 && eta<0.7){
	sumpt+=pt;
	//if(i<30)cout<<i<<" pt = "<<pt<<endl;

	if(nJ==1 && acc==1) { 
	  deta = eta - jeteta;
	  dphi = phi - jetphi;
	  if (dphi < -TMath::Pi()) dphi= -dphi - 2.0 * TMath::Pi();
	  if (dphi > TMath::Pi()) dphi = 2.0 * TMath::Pi() - dphi;
	  dr = TMath::Sqrt(deta * deta + dphi * dphi);
	  if(dr<=rc)sumpt-=pt;
	}
	
	if(nJ>=2) { 
	  if(acc==1){
	    deta = eta - jeteta;
	    dphi = phi - jetphi;
	    if (dphi < -TMath::Pi()) dphi= -dphi - 2.0 * TMath::Pi();
	    if (dphi > TMath::Pi()) dphi = 2.0 * TMath::Pi() - dphi;
	    dr = TMath::Sqrt(deta * deta + dphi * dphi);
	    if(dr<=rc)sumpt-=pt;
	  }
	  if(acc1==1){
	    deta1 = eta - jeteta1;
	    dphi1 = phi - jetphi1;
	    if (dphi1 < -TMath::Pi()) dphi1= -dphi1 - 2.0 * TMath::Pi();
	    if (dphi1 > TMath::Pi()) dphi1 = 2.0 * TMath::Pi() - dphi1;
	    dr1 = TMath::Sqrt(deta1 * deta1 + dphi1 * dphi1);
	    if(dr1<=rc)sumpt-=pt;
	  }
	}

	if(dr >= rc && dr1 >=rc) { 
	  // particles outside both cones
	  if(debug>1) cout<<" out of the cone  "<<dr<<"    "<<deta<<"  deltaeta  "<<dphi<<"  dphi "<<i<<"  particle  "<<endl;
	  if(debug>1) cout<<" out of the cone  "<<dr1<<"    "<<deta1<<"  deltaeta1  "<<dphi1<<"  dphi1 "<<i<<"  particle  "<<endl;
	  ptallback+=pt;
	}
      }
    } // End loop on input list of particles 
  
  if(debug>0) cout<<"total area left "<<restarea<<endl;
  if(debug>0) cout<<"sumpt="<<sumpt<<endl;
  // if(acc==1 || acc1==1) rhoback= ptallback/restarea;
  // else rhoback=ptallback;

  rhoback= ptallback/restarea;
  if(debug)cout<<"rhoback    "<<rhoback<<"     "<<nJ<<"   "<<endl;

  return rhoback;
   
}

//___________________________________________________________________
Double_t AliFastJetBkg::CalcRho(vector<fastjet::PseudoJet> inputParticles,Double_t rParamBkg,TString method)
{
  // calculate rho using the fastjet method

  AliFastJetHeaderV1 *header = (AliFastJetHeaderV1*)fHeader;
  Int_t debug  = header->GetDebug();     // debug option

  fastjet::Strategy strategy = header->GetStrategy();
  fastjet::RecombinationScheme recombScheme = header->GetRecombScheme();
  fastjet::JetAlgorithm algorithm = header->GetBGAlgorithm();
  fastjet::JetDefinition jetDef(algorithm, rParamBkg, recombScheme, strategy);

  // create an object that specifies how we to define the area
  fastjet::AreaDefinition areaDef;
  double ghostEtamax       = header->GetGhostEtaMax(); 
  double ghostArea         = header->GetGhostArea(); 
  int    activeAreaRepeats = header->GetActiveAreaRepeats(); 
  
  // now create the object that holds info about ghosts

  if (method.Contains("Charg"))ghostEtamax=0.9;

  fastjet::GhostedAreaSpec ghost_spec(ghostEtamax, activeAreaRepeats, ghostArea);
  // and from that get an area definition
  fastjet::AreaType areaType = header->GetAreaType();
  areaDef = fastjet::AreaDefinition(areaType,ghost_spec);
  if(debug>0) cout<<"rParamBkg="<<rParamBkg<<"  ghostEtamax="<<ghostEtamax<<"  ghostArea="<<ghostArea<<" areadef="<<TString(areaDef.description())<< endl;
  //fastjet::ClusterSequenceArea clust_seq(inputParticles, jetDef);
  fastjet::ClusterSequenceArea clust_seq(inputParticles, jetDef,areaDef);
  TString comment = "Running FastJet algorithm for BKG calculation with the following setup. ";
  comment+= "Jet definition: ";
  comment+= TString(jetDef.description());
  // comment+= ". Area definition: ";
  // comment+= TString(areaDef.description());
  comment+= ". Strategy adopted by FastJet: ";
  comment+= TString(clust_seq.strategy_string());
  header->SetComment(comment);
  if(debug>0){
    cout << "--------------------------------------------------------" << endl;
    cout << comment << endl;
    cout << "--------------------------------------------------------" << endl;
  }

  double ptmin = header->GetPtMin(); 
  vector<fastjet::PseudoJet> inclusiveJets = clust_seq.inclusive_jets(ptmin);
  vector<fastjet::PseudoJet> jets = sorted_by_pt(inclusiveJets); 

  if (debug>0) {
    cout<<"# of BKG jets = "<<jets.size()<<endl;
    for (size_t j = 0; j < jets.size(); j++) { // loop for jets   
      printf("BKG Jet found %5d %9.5f %8.5f %10.3f %4.4f \n",(Int_t)j,jets[j].rap(),jets[j].phi(),jets[j].perp(),clust_seq.area(jets[j]));
    }
  }
  
  double phiMin = 0, phiMax = 0, rapMin = 0, rapMax = 0;

  if (method.Contains("All")){
    phiMin = 80.*TMath::Pi()/180+rParamBkg;
    phiMax = 190.*TMath::Pi()/180-rParamBkg;
  }
  if (method.Contains("Charg")){
    phiMin = 0;
    phiMax = 2*TMath::Pi();
  }
  rapMax = ghostEtamax - rParamBkg;
  rapMin = - ghostEtamax + rParamBkg;

  fastjet::RangeDefinition range(rapMin, rapMax, phiMin, phiMax);

  Double_t rho=clust_seq.median_pt_per_unit_area(range);
  // double median, sigma, meanArea;
  // clust_seq.get_median_rho_and_sigma(inclusiveJets, range, false, median, sigma, meanArea, true);
  // fastjet::ActiveAreaSpec area_spec(ghostEtamax,activeAreaRepeats,ghostArea);

  // fastjet::ClusterSequenceActiveArea clust_seq_bkg(inputParticles, jetDef,area_spec);

  if(debug>0) cout<<"bkg in R="<<rParamBkg<<"  : "<<rho<<" range: Rap="<<rapMin<<","<<rapMax<<" --  phi="<<phiMin<<","<<phiMax<<endl;

  return rho;

}

//___________________________________________________________________
Double_t  AliFastJetBkg::BkgFunction(Double_t */*x*/,Double_t */*par*/)
{
  // to be implemented--- (pT + Energy in EMCal Acceptance vs Multiplicity)
  return 1;

}

//___________________________________________________________________
Bool_t AliFastJetBkg::EmcalAcceptance(Float_t eta, Float_t phi, Float_t radius) const
{
  // Apply emcal acceptance cuts
  // To be updated

  Float_t meanPhi=190./180.*TMath::Pi()-110./180.*TMath::Pi()/2;
  Float_t deltaphi=110./180.*TMath::Pi();
  Float_t phicut=deltaphi/2.-radius;
  Float_t etacut=0.7-radius;
  //cout<<"  eta    "<<eta<<"  phi    "<<phi<<endl;
  //cout<<etacut<<"    "<<phicut<<"    "<<meanPhi<<"    "<<endl;
  if(TMath::Abs(eta)<etacut && TMath::Abs(phi-meanPhi)<phicut) return 1;
  else return 0; 

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