ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2010, 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$ */

////////////////////////////////////////////////////////////////////////
//
// Base class for cuts on Associated tracks for HF Correlation analysis
//
// Author: S.Bjelogrlic (Utrecht) sandro.bjelogrlic@cern.ch
////////////////////////////////////////////////////////////////////////
#include <Riostream.h>
#include "AliHFAssociatedTrackCuts.h"
#include "AliAODPidHF.h"
#include "AliESDtrackCuts.h"
#include "AliESDtrack.h"
#include "AliESDVertex.h"
#include "AliAODv0.h"
#include "AliAODVertex.h"
#include "AliAODMCParticle.h"
#include "AliAnalysisManager.h"
#include "AliInputEventHandler.h"
#include "TString.h"

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

ClassImp(AliHFAssociatedTrackCuts)

//--------------------------------------------------------------------------
AliHFAssociatedTrackCuts::AliHFAssociatedTrackCuts():
AliAnalysisCuts(),
fESDTrackCuts(0),
fPidObj(0),
  fEffWeights(0),

fTrigEffWeightsvspt(0),
fTrigEffWeightsvsptB(0),
fTrigEffWeights(0),
fTrigEffWeightsB(0),
fPoolMaxNEvents(0), 
fPoolMinNTracks(0), 
fMinEventsToMix(0),
fNzVtxBins(0), 
fNzVtxBinsDim(0), 
fZvtxBins(0), 
fNCentBins(0), 
fNCentBinsDim(0), 
fCentBins(0),

fNofMCEventType(0),
fMCEventType(0),

fNTrackCuts(0),
fAODTrackCuts(0),
fTrackCutsNames(0),
fNvZeroCuts(0),
fAODvZeroCuts(0),
fvZeroCutsNames(0),
fBit(-1),
fCharge(0),
fDescription("")

{
	//
	//default constructor
	//
	//
	//default constructor
	//
	
}

//--------------------------------------------------------------------------
AliHFAssociatedTrackCuts::AliHFAssociatedTrackCuts(const char* name, const char* title):
AliAnalysisCuts(name,title),
fESDTrackCuts(0),
fPidObj(0),
fEffWeights(0),
fTrigEffWeightsvspt(0),
fTrigEffWeightsvsptB(0),
fTrigEffWeights(0),
fTrigEffWeightsB(0),
fPoolMaxNEvents(0), 
fPoolMinNTracks(0), 
fMinEventsToMix(0),
fNzVtxBins(0), 
fNzVtxBinsDim(0), 
fZvtxBins(0), 
fNCentBins(0), 
fNCentBinsDim(0), 
fCentBins(0),

fNofMCEventType(0),
fMCEventType(0),

fNTrackCuts(0),
fAODTrackCuts(0),
fTrackCutsNames(0),
fNvZeroCuts(0),
fAODvZeroCuts(0),
fvZeroCutsNames(0),
fBit(-1),
fCharge(0),
fDescription("")

{
	//
	//default constructor
	//
	
}
//--------------------------------------------------------------------------
AliHFAssociatedTrackCuts::AliHFAssociatedTrackCuts(const AliHFAssociatedTrackCuts &source) :
AliAnalysisCuts(source),
fESDTrackCuts(source.fESDTrackCuts),
fPidObj(source.fPidObj),
fEffWeights(source.fEffWeights),
fTrigEffWeightsvspt(source.fTrigEffWeightsvspt),
fTrigEffWeightsvsptB(source.fTrigEffWeightsvsptB),
fTrigEffWeights(source.fTrigEffWeights),
fTrigEffWeightsB(source.fTrigEffWeightsB),

fPoolMaxNEvents(source.fPoolMaxNEvents), 
fPoolMinNTracks(source.fPoolMinNTracks), 
fMinEventsToMix(source.fMinEventsToMix),
fNzVtxBins(source.fNzVtxBins), 
fNzVtxBinsDim(source.fNzVtxBinsDim), 
fZvtxBins(source.fZvtxBins), 
fNCentBins(source.fNCentBins), 
fNCentBinsDim(source.fNCentBinsDim), 
fCentBins(source.fCentBins),

fNofMCEventType(source.fNofMCEventType),
fMCEventType(source.fMCEventType),

fNTrackCuts(source.fNTrackCuts),
fAODTrackCuts(source.fAODTrackCuts),
fTrackCutsNames(source.fTrackCutsNames),
fNvZeroCuts(source.fNvZeroCuts),
fAODvZeroCuts(source.fAODvZeroCuts),
fvZeroCutsNames(source.fvZeroCutsNames),
fBit(source.fBit),
fCharge(source.fCharge),
fDescription(source.fDescription)
{
	//
	// copy constructor
	//
	

        AliInfo("AliHFAssociatedTrackCuts::Copy constructor ");
	if(source.fESDTrackCuts) AddTrackCuts(source.fESDTrackCuts);
	if(source.fAODTrackCuts) SetAODTrackCuts(source.fAODTrackCuts);
	if(source.fAODvZeroCuts) SetAODvZeroCuts(source.fAODvZeroCuts);
	if(source.fPidObj) SetPidHF(source.fPidObj);
	if(source.fEffWeights) SetEfficiencyWeightMap(source.fEffWeights);
	if(source.fTrigEffWeightsvspt) SetTriggerEffWeightMapvspt(source.fTrigEffWeightsvspt);
	if(source.fTrigEffWeightsvsptB) SetTriggerEffWeightMapvsptB(source.fTrigEffWeightsvsptB);
	if(source.fTrigEffWeights) SetTriggerEffWeightMap(source.fTrigEffWeights);
	if(source.fTrigEffWeightsB)SetTriggerEffWeightMapB(source.fTrigEffWeightsB);
   
    
}
//--------------------------------------------------------------------------
AliHFAssociatedTrackCuts &AliHFAssociatedTrackCuts::operator=(const AliHFAssociatedTrackCuts &source)
{
	//
	// assignment operator
	//	
	if(&source == this) return *this;
	
	AliAnalysisCuts::operator=(source);
	fESDTrackCuts=source.fESDTrackCuts;
	fPidObj=source.fPidObj;
	fEffWeights=source.fEffWeights;
    fTrigEffWeightsvspt=source.fTrigEffWeightsvspt;
	fTrigEffWeightsvsptB=source.fTrigEffWeightsvsptB;
    fTrigEffWeights=source.fTrigEffWeights;
	fTrigEffWeightsB=source.fTrigEffWeightsB;
	fNTrackCuts=source.fNTrackCuts;
	fAODTrackCuts=source.fAODTrackCuts;
	fTrackCutsNames=source.fTrackCutsNames;
	fNvZeroCuts=source.fNvZeroCuts;
	fAODvZeroCuts=source.fAODvZeroCuts;
	fvZeroCutsNames=source.fvZeroCutsNames;
	fBit=source.fBit;
	fCharge=source.fCharge;
	
	return *this;

}


//--------------------------------------------------------------------------
AliHFAssociatedTrackCuts::~AliHFAssociatedTrackCuts()
{
	if(fESDTrackCuts) {delete fESDTrackCuts; fESDTrackCuts = 0;}
	if(fPidObj) {delete fPidObj; fPidObj = 0;}
	if(fEffWeights){delete fEffWeights;fEffWeights=0;}
    if(fTrigEffWeightsvspt){delete fTrigEffWeightsvspt;fTrigEffWeightsvspt=0;}
	if(fTrigEffWeightsvsptB){delete fTrigEffWeightsvsptB;fTrigEffWeightsvsptB=0;}
    if(fTrigEffWeights){delete fTrigEffWeights;fTrigEffWeights=0;}
	if(fTrigEffWeightsB){delete fTrigEffWeightsB;fTrigEffWeightsB=0;}
	if(fZvtxBins) {delete[] fZvtxBins; fZvtxBins=0;} 
	if(fCentBins) {delete[] fCentBins; fCentBins=0;}
	if(fAODTrackCuts) {delete[] fAODTrackCuts; fAODTrackCuts=0;}
	if(fTrackCutsNames) {delete[] fTrackCutsNames; fTrackCutsNames=0;}
	if(fAODvZeroCuts){delete[] fAODvZeroCuts; fAODvZeroCuts=0;}
	if(fvZeroCutsNames) {delete[] fvZeroCutsNames; fvZeroCutsNames=0;}

	
}
//--------------------------------------------------------------------------
Bool_t AliHFAssociatedTrackCuts::IsInAcceptance()
{
	printf("Careful: method AliHFAssociatedTrackCuts::IsInAcceptance is not implemented yet \n");
	return kFALSE;
}
//--------------------------------------------------------------------------
Bool_t AliHFAssociatedTrackCuts::IsHadronSelected(AliAODTrack * track,const AliESDVertex *primary, Double_t magfield)
{
  
  AliESDtrack esdtrack(track);
  if(primary){// needed to calculate impact parameters
    // needed to calculate the impact parameters
    esdtrack.RelateToVertex(primary,magfield,3.); 
  }
  // set the TPC cluster info
  esdtrack.SetTPCClusterMap(track->GetTPCClusterMap());
  esdtrack.SetTPCSharedMap(track->GetTPCSharedMap());
  esdtrack.SetTPCPointsF(track->GetTPCNclsF());
  
  if(!fESDTrackCuts->IsSelected(&esdtrack)) return kFALSE;
  
  if(fBit>-1 && !track->TestFilterBit(fBit)) return kFALSE; // check the filter bit
  
  return kTRUE;
	
}

//--------------------------------------------------------------------------
Bool_t AliHFAssociatedTrackCuts::CheckHadronKinematic(Double_t pt, Double_t d0) 
{
	
	
	
    if(pt < fAODTrackCuts[0]) {return kFALSE; cout << "reject min pt" << endl;}
	if(pt > fAODTrackCuts[1]) {return kFALSE; cout << "reject max pt" << endl;}
	if(d0 < fAODTrackCuts[2]) {return kFALSE; cout << "reject min d0" << endl;}
	if(d0 > fAODTrackCuts[3]) {return kFALSE; cout << "reject max d0" << endl;}
	
	return kTRUE;

	
}
//--------------------------------------------------------------------------

Bool_t AliHFAssociatedTrackCuts::Charge(Short_t charge, AliAODTrack* track) 
{// charge is the charge to compare to (for example, a daughter of a D meson)
	
	if(!fCharge) return kTRUE; // if fCharge is set to 0 (no selection on the charge), returns always true
	if(track->Charge()!= fCharge*charge) return kFALSE;
	return kTRUE;
}

//--------------------------------------------------------------------------
Bool_t AliHFAssociatedTrackCuts::CheckKaonCompatibility(AliAODTrack * track, Bool_t useMc, TClonesArray* mcArray, Int_t method)
{
	Bool_t isKaon = kFALSE;
	
	if(useMc) { // on MC
		Int_t hadLabel = track->GetLabel();
		if(hadLabel < 0) return kFALSE;
		AliAODMCParticle* hadron = dynamic_cast<AliAODMCParticle*>(mcArray->At(hadLabel)); 
		if(hadron){
		  Int_t pdg = TMath::Abs(hadron->GetPdgCode()); 
		  if (pdg == 321) isKaon = kTRUE;
		}
	}
	
	if(!useMc) { // on DATA
          switch(method) {
	  case(1): {
		Bool_t isKTPC=kFALSE;
		Bool_t isPiTPC=kFALSE;
		Bool_t isPTPC=kFALSE;
		Bool_t isKTOF=kFALSE;
		Bool_t isPiTOF=kFALSE;
		Bool_t isPTOF=kFALSE;
		
		Bool_t KaonHyp = kFALSE;
		Bool_t PionHyp = kFALSE;
		Bool_t ProtonHyp = kFALSE;
		
		if(fPidObj->CheckStatus(track,"TOF")) {
			isKTOF=fPidObj->IsKaonRaw(track,"TOF");
			isPiTOF=fPidObj->IsPionRaw(track,"TOF");
			isPTOF=fPidObj->IsProtonRaw(track,"TOF");
		}
		if(fPidObj->CheckStatus(track,"TPC")){
			isKTPC=fPidObj->IsKaonRaw(track,"TPC");
			isPiTPC=fPidObj->IsPionRaw(track,"TPC");
			isPTPC=fPidObj->IsProtonRaw(track,"TPC");		
		}
		
		if (isKTOF && isKTPC) KaonHyp = kTRUE;
		if (isPiTOF && isPiTPC) PionHyp = kTRUE;
		if (isPTOF && isPTPC) ProtonHyp = kTRUE;
		
		if(KaonHyp && !PionHyp && !ProtonHyp) isKaon = kTRUE; 
	        break;
	      }
      case(2): {
		if(fPidObj->MakeRawPid(track,3)>=1) isKaon = kTRUE;
		break;
	      }
      }
	}
	
	return isKaon;
	
}
//--------------------------------------------------------------------------
Bool_t AliHFAssociatedTrackCuts::IsKZeroSelected(AliAODv0 *vzero, AliAODVertex *vtx1)
{
	
	if(vzero->DcaV0Daughters()>fAODvZeroCuts[0]) return kFALSE;
	if(vzero->Chi2V0()>fAODvZeroCuts[1]) return kFALSE;
	if(vzero->DecayLength(vtx1) < fAODvZeroCuts[2]) return kFALSE;
	if(vzero->DecayLength(vtx1) > fAODvZeroCuts[3]) return kFALSE;
	if(vzero->OpenAngleV0() > fAODvZeroCuts[4]) return kFALSE;
	if(vzero->Pt() < fAODvZeroCuts[5]) return kFALSE;
	if(TMath::Abs(vzero->Eta()) > fAODvZeroCuts[6]) return kFALSE;

	
	return kTRUE;
}
//--------------------------------------------------------------------------
Bool_t *AliHFAssociatedTrackCuts::IsMCpartFromHF(Int_t label, TClonesArray*mcArray){
  // Check origin in MC
    
  Bool_t isCharmy = kFALSE;
  Bool_t isBeauty = kFALSE;
  Bool_t isD = kFALSE;
  Bool_t isB = kFALSE;
    
     Bool_t *originvect = new Bool_t[5];
    
    originvect[0] = kFALSE; // is from charm
	originvect[1] = kFALSE; // is from beauty
	originvect[2] = kFALSE; // is from D
	originvect[3] = kFALSE; // is from B
    originvect[4] = kFALSE; // did something go wrong? (kTRUE yes, kFALSE no))
    
    //__________________________________

    if (label<0) {originvect[4] = kTRUE; return originvect;}
    
    AliAODMCParticle* mcParticle = dynamic_cast<AliAODMCParticle*>(mcArray->At(label));
    if(!mcParticle) {originvect[4] = kTRUE; return originvect;}
    Int_t pdgCode = -1;
    Int_t  mother = mcParticle->GetMother();
    
    if(mother <0) {originvect[4] = kTRUE; return originvect;}
    
    while (mother >= 0){
        mcParticle = dynamic_cast<AliAODMCParticle*>(mcArray->At(mother));
        if(!mcParticle) {AliError("NO MC PARTICLE"); break;}
        pdgCode =  TMath::Abs(mcParticle->GetPdgCode());
        
        mother = mcParticle->GetMother();
        
        if((pdgCode>=400 && pdgCode <500) || (pdgCode>=4000 && pdgCode<5000 )) isD = kTRUE;
        if((pdgCode>=500 && pdgCode <600) || (pdgCode>=5000 && pdgCode<6000 )) {isD = kFALSE; isB = kTRUE;}
        if(pdgCode == 4) isCharmy = kTRUE;
        if(pdgCode == 5) {isBeauty = kTRUE; isCharmy = kFALSE;}
        if(mother<0) break;
    }
    
	originvect[0] = isCharmy;
	originvect[1] = isBeauty;
	originvect[2] = isD;
	originvect[3] = isB;
 
    
  return originvect;
}

//--------------------------------------------------------------------------
Bool_t AliHFAssociatedTrackCuts::InvMassDstarRejection(AliAODRecoDecayHF2Prong* d, AliAODTrack *track, Int_t hypD0) const {
	//
	// Calculates invmass of track+D0 and rejects if compatible with D*
	// (to remove pions from D*)
	// 
	Double_t nsigma = 3.;
	
	Double_t mD0, mD0bar;
	d->InvMassD0(mD0,mD0bar);
	
	Double_t invmassDstar1 = 0, invmassDstar2 = 0; 
	Double_t e1Pi = d->EProng(0,211), e2K = d->EProng(1,321); //hyp 1 (pi,K) - D0
	Double_t e1K = d->EProng(0,321), e2Pi = d->EProng(1,211); //hyp 2 (K,pi) - D0bar
	Double_t psum2 = (d->Px()+track->Px())*(d->Px()+track->Px())
	+(d->Py()+track->Py())*(d->Py()+track->Py())
	+(d->Pz()+track->Pz())*(d->Pz()+track->Pz());
	
	switch(hypD0) {
		case 1:
			invmassDstar1 = TMath::Sqrt(pow(e1Pi+e2K+track->E(0.1396),2.)-psum2);
			if ((TMath::Abs(invmassDstar1-mD0)-0.14543) < nsigma*800.*pow(10.,-6.)) return kFALSE;
			break;
		case 2:
			invmassDstar2 = TMath::Sqrt(pow(e2Pi+e1K+track->E(0.1396),2.)-psum2);
			if ((TMath::Abs(invmassDstar2-mD0bar)-0.14543) < nsigma*800.*pow(10.,-6.)) return kFALSE;
			break;
		case 3:
			invmassDstar1 = TMath::Sqrt(pow(e1Pi+e2K+track->E(0.1396),2.)-psum2);
			invmassDstar2 = TMath::Sqrt(pow(e2Pi+e1K+track->E(0.1396),2.)-psum2);
			if ((TMath::Abs(invmassDstar1-mD0)-0.14543) < nsigma*800.*pow(10.,-6.)) return kFALSE;
			if ((TMath::Abs(invmassDstar2-mD0bar)-0.14543) < nsigma*800.*pow(10.,-6.)) return kFALSE;
			break;
	}
	
	return kTRUE;
}
//________________________________________________________
void AliHFAssociatedTrackCuts::SetMCEventTypes(Int_t *MCEventTypeArray)
// set the array of event types you want to process in MonteCarlo (gluon splitting, pair production etc.)
{
	if(!fMCEventType) fMCEventType = new Int_t[fNofMCEventType];
	
	for(Int_t k=0; k<fNofMCEventType; k++){
		fMCEventType[k] = MCEventTypeArray[k];
	}
	return;	
}

//________________________________________________________
void AliHFAssociatedTrackCuts::SetAODTrackCuts(Float_t *cutsarray)
{
	if(!fAODTrackCuts) fAODTrackCuts = new Float_t[fNTrackCuts];
	for(Int_t i =0; i<fNTrackCuts; i++){
		fAODTrackCuts[i] = cutsarray[i];
	}
	SetTrackCutsNames();
	return;
}
//________________________________________________________
void AliHFAssociatedTrackCuts::SetTrackCutsNames(/*TString *namearray*/){
	
	fTrackCutsNames = new TString[4];
	fTrackCutsNames[0]= "associated track:: pt min [GeV/c]................: ";
	fTrackCutsNames[1]= "associated track:: pt max [GeV/c]................: ";
	fTrackCutsNames[2]= "associated track:: d0 min [cm]...................: ";
	fTrackCutsNames[3]= "associated track:: d0 max [cm]...................: ";
	

	
	return;
}
//--------------------------------------------------------------------------
void AliHFAssociatedTrackCuts::SetAODvZeroCuts(Float_t *cutsarray)
{
	

	if(!fAODvZeroCuts) fAODvZeroCuts = new Float_t[fNvZeroCuts];
	for(Int_t i =0; i<fNvZeroCuts; i++){
		fAODvZeroCuts[i] = cutsarray[i];
	}
	SetvZeroCutsNames();
	return;
}
//--------------------------------------------------------------------------
void AliHFAssociatedTrackCuts::SetvZeroCutsNames(/*TString *namearray*/){
	
	fvZeroCutsNames = new TString[7];
	fvZeroCutsNames[0] = "vZero:: max DCA between two daughters [cm].......: ";
	fvZeroCutsNames[1] = "vZero:: max fit Chi Square between two daughters.: ";
	fvZeroCutsNames[2] = "vZero:: min decay length [cm]....................: ";
	fvZeroCutsNames[3] = "vZero:: max decay length [cm]....................: ";
	fvZeroCutsNames[4] = "vZero:: max opening angle between daughters [rad]: ";
	fvZeroCutsNames[5] = "vZero:: pt min [Gev/c]...........................: ";
	fvZeroCutsNames[6] = "vZero:: |Eta| range <............................: ";
	
	
	return;
}

//--------------------------------------------------------------------------
void AliHFAssociatedTrackCuts::SetPidAssociated()
{
  //setting PidResponse
  if(fPidObj->GetOldPid()==kFALSE && fPidObj->GetPidResponse()==0x0){
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
    AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
    fPidObj->SetPidResponse(pidResp);
  }
}
//--------------------------------------------------------------------------

void AliHFAssociatedTrackCuts::Print(Option_t *option) const
{
  /// overloaded from TObject: print info
  if (strcmp(option, "parameters")==0) {
    PrintPoolParameters();
    return;
  } else if (strcmp(option, "selectedMC")==0) {
    PrintSelectedMCevents();
    return;
  }
  PrintAll();
}

//--------------------------------------------------------------------------
Int_t AliHFAssociatedTrackCuts::GetPoolBin(Double_t multorcent, Double_t zVtx) const
{
 
    Int_t poolbin = -1;
    Int_t centbin = -1;
    Int_t zvtxbin = -1;
    
    
    if(multorcent <fCentBins[0]) return poolbin;
    if(zVtx <fZvtxBins[0]) return poolbin;
    
    
    for (Int_t i=0;i<fNCentBins;i++){
        if(multorcent<fCentBins[i+1]) {
            centbin=i;
            break;
        }
    }
    
    for (Int_t i=0;i<fNzVtxBins;i++){
        if(zVtx<fZvtxBins[i+1]) {
            zvtxbin=i;
            break;
        }
    }

    poolbin = centbin  + zvtxbin*fNzVtxBins;
    
    return poolbin;
}
//--------------------------------------------------------------------------
void AliHFAssociatedTrackCuts::PrintAll() const
{
	
	if(fDescription){
	  printf("=================================================");
	  printf("\nAdditional description\n");
	  std::cout << fDescription << std::endl;
	  printf("\n");
	}
	printf("\n=================================================");
	if(fESDTrackCuts){
	  printf("\nCuts for the associated track: \n \n");
	  
	  printf("ITS Refit........................................: %s\n",fESDTrackCuts->GetRequireITSRefit() ? "Yes" : "No");
	  printf("TPC Refit........................................: %s\n",fESDTrackCuts->GetRequireTPCRefit() ? "Yes" : "No");
	  printf("ITS SA...........................................: %s\n",fESDTrackCuts->GetRequireITSStandAlone() ? "Yes" : "No");
	  printf("TPC SA...........................................: %s\n",fESDTrackCuts->GetRequireTPCStandAlone() ? "Yes" : "No");
	  printf("Min number of ITS clusters.......................: %d\n",fESDTrackCuts->GetMinNClustersITS());
	  printf("Min number of TPC clusters.......................: %d\n",fESDTrackCuts->GetMinNClusterTPC());
	  Int_t spd = fESDTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD);
	  if(spd==0) std::cout <<  "SPD..............................................: kOff"  << std::endl;
	  if(spd==1) std::cout <<  "SPD..............................................: kNone"  << std::endl;
	  if(spd==2) std::cout <<  "SPD..............................................: kAny"  << std::endl;
	  if(spd==3) std::cout <<  "SPD..............................................: kFirst"  << std::endl;
	  if(spd==4) std::cout <<  "SPD..............................................: kOnlyFirst"  << std::endl;
	  if(spd==5) std::cout <<  "SPD..............................................: kSecond"  << std::endl;
	  if(spd==6) std::cout <<  "SPD..............................................: kOnlySecond"  << std::endl;
	  if(spd==7) std::cout <<  "SPD..............................................: kBoth"  << std::endl;
	}
	else printf("\nNo Cuts for Associated Tracks\n");
	std::cout <<  "Filter Bit.......................................: " << fBit  << std::endl;
	std::cout <<  "Charge...........................................: " << fCharge  << std::endl;
	
	if(fAODTrackCuts){
	  for(Int_t j=0;j<fNTrackCuts;j++){
	    std::cout << fTrackCutsNames[j] << fAODTrackCuts[j] << std::endl;
	  }
	}

	if(fAODvZeroCuts){
	  printf("\n");
	  printf("=================================================");
	  printf("\nCuts for the K0 candidates: \n \n");
	  for(Int_t k=0;k<fNvZeroCuts;k++){
	    std::cout << fvZeroCutsNames[k] <<  fAODvZeroCuts[k] << std::endl;
	  }
	}
	else printf("\nNo Cuts for the K0 candidates\n");
	std::cout << " " << std::endl;
	PrintPoolParameters();
	PrintSelectedMCevents();

}

//--------------------------------------------------------------------------
void AliHFAssociatedTrackCuts::PrintPoolParameters() const
{   
	printf("=================================================");
	printf("\nEvent Pool settings: \n \n");
	
	printf("Number of zVtx Bins: %d\n", fNzVtxBins);
	printf("\nzVtx Bins:\n");
	//Double_t zVtxbinLims[fNzVtxBins+1] = fNzVtxBins;
	for(Int_t k=0; k<fNzVtxBins; k++){
		printf("Bin %d..............................................: %.1f - %.1f cm\n", k, fZvtxBins[k], fZvtxBins[k+1]);	
	}
	printf("\n");
	printf("\nNumber of Centrality(multiplicity) Bins: %d\n", fNCentBins);
	printf("\nCentrality(multiplicity) Bins:\n");
	for(Int_t k=0; k<fNCentBins; k++){
		printf("Bin %d..............................................: %.1f - %.1f\n", k, fCentBins[k], fCentBins[k+1]);
	}

	
	
}
//--------------------------------------------------------------------------

Double_t AliHFAssociatedTrackCuts::GetTrackWeight(Double_t pt, Double_t eta,Double_t zvtx){
  if(!fEffWeights)return 1.;
  
  Int_t bin=fEffWeights->FindBin(pt,eta,zvtx);
  if(fEffWeights->IsBinUnderflow(bin)||fEffWeights->IsBinOverflow(bin))return 1.;
  return fEffWeights->GetBinContent(bin);

}


//--------------------------------------------------------------------------
Double_t AliHFAssociatedTrackCuts::GetTrigWeight(Double_t pt, Double_t mult){
    
    
    
    if(fTrigEffWeightsvspt){
       Int_t bin=fTrigEffWeightsvspt->FindBin(pt);
        if(fTrigEffWeightsvspt->IsBinUnderflow(bin)||fTrigEffWeightsvspt->IsBinOverflow(bin))return 1.;
        return fTrigEffWeightsvspt->GetBinContent(bin);
        
    }
    
    if(fTrigEffWeights){
        Int_t bin=fTrigEffWeights->FindBin(pt,mult);
        if(fTrigEffWeights->IsBinUnderflow(bin)||fTrigEffWeights->IsBinOverflow(bin))return 1.;
        return fTrigEffWeights->GetBinContent(bin);
        
    }
    
    //if(!fTrigEffWeights && !fTrigEffWeightsvspt)return 1.;
    
    return 1.;
    
}

//--------------------------------------------------------------------------
Double_t AliHFAssociatedTrackCuts::GetTrigWeightB(Double_t pt, Double_t mult){
    
    if(fTrigEffWeightsvsptB){
        Int_t bin=fTrigEffWeightsvsptB->FindBin(pt);
        if(fTrigEffWeightsvsptB->IsBinUnderflow(bin)||fTrigEffWeightsvsptB->IsBinOverflow(bin))return 1.;
        return fTrigEffWeightsvsptB->GetBinContent(bin);
        
    }
    
    if(fTrigEffWeightsB){
        Int_t bin=fTrigEffWeightsB->FindBin(pt,mult);
        if(fTrigEffWeightsB->IsBinUnderflow(bin)||fTrigEffWeightsB->IsBinOverflow(bin))return 1.;
        return fTrigEffWeightsB->GetBinContent(bin);
        
    }
    
 //   if(!fTrigEffWeightsB && !fTrigEffWeightsvsptB)return 1.;
    return 1;
}
//--------------------------------------------------------------------------
void AliHFAssociatedTrackCuts::PrintSelectedMCevents() const
{
	printf("\n=================================================");
	
	printf("\nSelected MC events: \n \n");
	printf("Number of selected events: %d\n",fNofMCEventType);
	
	for(Int_t k=0; k<fNofMCEventType; k++){
	if(fMCEventType[k]==28)	printf("=> Flavour excitation \n");	
	if(fMCEventType[k]==53)	printf("=> Pair creation \n");	
	if(fMCEventType[k]==68)	printf("=> Gluon splitting \n");	
	}
	
	printf("\n");
	for(Int_t k=0; k<fNofMCEventType; k++){
		printf("MC process code %d \n",fMCEventType[k]);		
	}
	
	printf("\n");
	
	
		
	
}


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