ROOT logo

/**************************************************************************
 * Copyright(c) 1998-2009, 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.                  *
 **************************************************************************/

//-----------------------------------------------------------------
//         AliSpectraBothTrackCuts class
//-----------------------------------------------------------------

#include "TChain.h"
#include "TTree.h"
#include "TLegend.h"
#include "TH1F.h"
#include "TH1I.h"
#include "TH2F.h"
#include "TH3F.h"
#include "TCanvas.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
#include "AliAODTrack.h"
#include "AliVTrack.h"
#include "AliExternalTrackParam.h"
#include "AliAODMCParticle.h"
#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliAnalysisTaskESDfilter.h"
#include "AliAnalysisDataContainer.h"
#include "AliSpectraBothTrackCuts.h"
//#include "AliSpectraBothHistoManager.h"
#include <iostream>

using namespace std;

const char * AliSpectraBothTrackCuts::kBinLabel[] ={"TrkBit",
						   "TrkCuts",
						   "TrkEta",
						   "TrkDCA",
						   "TrkP",
						   "TrkPt",
						   "TrkPtTOF",
						   "TOFMatching",
						   "kTOFout",
						   "kTIME",
						   "kTOFpid",
						   "Accepted"};


ClassImp(AliSpectraBothTrackCuts)


AliSpectraBothTrackCuts::AliSpectraBothTrackCuts(const char *name) : TNamed(name, "AOD Track Cuts"), fIsSelected(0), fTrackBits(0), fMinTPCcls(0), fEtaCutMin(0), fEtaCutMax(0), fDCACut(0), fPCut(0), fPtCut(0), fYCutMax(0),fYCutMin(0),
  fPtCutTOFMatching(0),fAODtrack(kotherobject), fHashitinSPD1(0),fusedadditionalcuts(kTRUE),
fPtCutTOFMatchingPion(-1.0),fPtCutTOFMatchingKaon(-1.0),fPtCutTOFMatchingProton(-1.0),fUseTypeDependedTOFCut(kFALSE),fMakeQAhisto(kFALSE),
fHistoCuts(0), fHistoNSelectedPos(0), fHistoNSelectedNeg(0), fHistoNMatchedPos(0), fHistoNMatchedNeg(0), fHistoEtaPhiHighPt(0), fHistoNclustersITS(0),
fHistoDCAzQA(0),fHistoNclustersQA(0),fHistochi2perNDFQA(0),
fTrack(0),fCuts(0)
  
{
/*
  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);	
  // Constructor
  fHistoCuts = new TH1I("fTrkCuts", "Track Cuts", kNTrkCuts, -0.5, kNTrkCuts - 0.5);
  for(Int_t ibin=1;ibin<=kNTrkCuts;ibin++)fHistoCuts->GetXaxis()->SetBinLabel(ibin,kBinLabel[ibin-1]);
  //standard histo
  const Double_t templBins[] = {0.05,0.1,0.12,0.14,0.16,0.18,0.20,0.25,0.30,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.2,3.4,3.6,3.8,4.0,4.2,4.4,4.6,4.8,5.0};
  Int_t nbinsTempl=52;
  
  fHistoNSelectedPos=new TH1F("fHistoNSelectedPos","fHistoNSelectedPos",nbinsTempl,templBins);
  fHistoNSelectedPos->GetXaxis()->SetTitle("P_{T} (GeV / c)");
  fHistoNSelectedNeg=new TH1F("fHistoNSelectedNeg","fHistoNSelectedNeg",nbinsTempl,templBins);
  fHistoNSelectedNeg->GetXaxis()->SetTitle("P_{T} (GeV / c)");
  fHistoNMatchedPos=new TH1F("fHistoNMatchedPos","fHistoNMatchedPos",nbinsTempl,templBins);
  fHistoNMatchedPos->GetXaxis()->SetTitle("P_{T} (GeV / c)");
  fHistoNMatchedNeg=new TH1F("fHistoNMatchedNeg","fHistoNMatchedNeg",nbinsTempl,templBins);
  fHistoNMatchedNeg->GetXaxis()->SetTitle("P_{T} (GeV / c)");
  fHistoEtaPhiHighPt=new TH2F("fHistoEtaPhiHighPt","fHistoEtaPhiHighPt",200,-1,1,400,0,7);
  fHistoEtaPhiHighPt->SetXTitle("eta");
  fHistoEtaPhiHighPt->SetYTitle("phi");
  fHistoNclustersITS=new TH1F("fHistoNclustersITS","fHistoNclustersITS;N;ITSLayer",6,-0.5,5.5);
  */
  fEtaCutMin = -100000.0; // default value of eta cut ~ no cut
  fEtaCutMax = 100000.0; // default value of eta cut ~ no cut
  fDCACut = 100000.0; // default value of dca cut ~ no cut
  fPCut = 100000.0; // default value of p cut ~ no cut
  fPtCut = 100000.0; // default value of pt cut ~ no cut 
  fPtCutTOFMatching=0.6; //default value fot matching with TOF
  fYCutMax       = 100000.0; // default value of y cut ~ no cut 
  fYCutMin       = -100000.0; // default value of y cut ~ no cut 
  fMinTPCcls=70; // ncls in TPC
 //  TH1::AddDirectory(oldStatus);
	
}
//__________________________________________________________________
void AliSpectraBothTrackCuts::InitHisto()
{
	Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);	
 
  fHistoCuts = new TH1I("fTrkCuts", "Track Cuts", kNTrkCuts, -0.5, kNTrkCuts - 0.5);
  for(Int_t ibin=1;ibin<=kNTrkCuts;ibin++)fHistoCuts->GetXaxis()->SetBinLabel(ibin,kBinLabel[ibin-1]);
  //standard histo
  const Double_t templBins[] = {0.05,0.1,0.12,0.14,0.16,0.18,0.20,0.25,0.30,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.2,3.4,3.6,3.8,4.0,4.2,4.4,4.6,4.8,5.0};
  Int_t nbinsTempl=52;
  const  Double_t parBins[]={-0.5,0.5,1.5,2.5};
  Int_t nbinsnpar=3;
  const  Double_t dcazBins[] ={-4.0,-3.8,-3.6,-3.4,-3.2,-3.0,-2.8,-2.6,-2.4,-2.2,-2.0,-1.8,-1.6,-1.4,-1.2,-1.0,-0.8,-0.6,-0.4,-0.2,0.0,0.2,0.4,0.6,0.8,1.0,1.2,1.4,1.6,1.8,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0}; 		  	
  Int_t nbinsdcaz=40;
  const  Double_t nclsBins[]={45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160}; 	 
  Int_t nbinsncls=23;
  const  Double_t chindfBins[]={0.0,0.4,0.8,1.2,1.6,2.0,2.4,2.8,3.2,3.6,4.0,4.4,4.8,5.2,5.6,6.0,6.4,6.8,7.2,7.6,8.0}; 	
  Int_t nbinchindf=20;

  if(!fHistoNSelectedPos)
  	fHistoNSelectedPos=new TH1F("fHistoNSelectedPos","fHistoNSelectedPos",nbinsTempl,templBins);
  fHistoNSelectedPos->GetXaxis()->SetTitle("P_{T} (GeV / c)");
  if(!fHistoNSelectedNeg)
  	fHistoNSelectedNeg=new TH1F("fHistoNSelectedNeg","fHistoNSelectedNeg",nbinsTempl,templBins);
  fHistoNSelectedNeg->GetXaxis()->SetTitle("P_{T} (GeV / c)");
  if(!fHistoNMatchedPos)
  	fHistoNMatchedPos=new TH1F("fHistoNMatchedPos","fHistoNMatchedPos",nbinsTempl,templBins);
  fHistoNMatchedPos->GetXaxis()->SetTitle("P_{T} (GeV / c)");
  if(!fHistoNMatchedNeg)
  	fHistoNMatchedNeg=new TH1F("fHistoNMatchedNeg","fHistoNMatchedNeg",nbinsTempl,templBins);
  fHistoNMatchedNeg->GetXaxis()->SetTitle("P_{T} (GeV / c)");
  if(!fHistoEtaPhiHighPt)
  	fHistoEtaPhiHighPt=new TH2F("fHistoEtaPhiHighPt","fHistoEtaPhiHighPt",200,-1,1,400,0,7);
  fHistoEtaPhiHighPt->SetXTitle("eta");
  fHistoEtaPhiHighPt->SetYTitle("phi");
  if(!fHistoNclustersITS)
  	fHistoNclustersITS=new TH1F("fHistoNclustersITS","fHistoNclustersITS;N;ITSLayer",6,-0.5,5.5);
  if(fMakeQAhisto)
  {		
   	if(!fHistoDCAzQA)
		fHistoDCAzQA=new TH3F("fHistoDCAzQA","QA of DCA z;par type; P_{T} (GeV/C);dcaz",nbinsnpar,parBins,nbinsTempl,templBins,nbinsdcaz,dcazBins);
   	if(!fHistoNclustersQA)
		fHistoNclustersQA=new TH3F("fHistoNclustersQA","QA of Ncls ;par type ; P_{T} (GeV/C);ncls",nbinsnpar,parBins,nbinsTempl,templBins,nbinsncls,nclsBins);
	   if(!fHistochi2perNDFQA) 
		fHistochi2perNDFQA=new TH3F("fHistochi2perNDFQA","QA of chi2/ndf ;par type; P_{T} (GeV/C);chi2ndf",nbinsnpar,parBins,nbinsTempl,templBins,nbinchindf,chindfBins);
 }
 TH1::AddDirectory(oldStatus);

if(fUseTypeDependedTOFCut) 
	fPtCutTOFMatching=TMath::Max(fPtCutTOFMatchingPion,TMath::Max(fPtCutTOFMatchingKaon,fPtCutTOFMatchingProton));
 


}
//_______________________________________________________
AliSpectraBothTrackCuts::~AliSpectraBothTrackCuts()
{
	if(fHistoCuts)
		delete fHistoCuts;
	if(fHistoNSelectedPos)
		delete fHistoNSelectedPos;
	if(fHistoNSelectedNeg)
		delete fHistoNSelectedNeg;
	if(fHistoNMatchedPos)
		delete fHistoNMatchedPos;
	if(fHistoNMatchedNeg)
		delete fHistoNMatchedNeg;
	if(fHistoEtaPhiHighPt)
		delete fHistoEtaPhiHighPt;
	if(fHistoNclustersITS)
		delete fHistoNclustersITS;
	if(fHistoDCAzQA)
		delete fHistoDCAzQA;
	if(fHistoNclustersQA)
		delete fHistoNclustersQA;
	if(fHistochi2perNDFQA)
		delete fHistochi2perNDFQA;



}
//_______________________________________________________
Bool_t AliSpectraBothTrackCuts::IsSelected(AliVTrack * track,Bool_t FillHistStat)
{
// Returns true if Track Cuts are selected and applied
  if (!track)
    {
      printf("ERROR: Could not receive track");
      return kFALSE;
    }
    fTrack = track;
   TString nameoftrack(track->ClassName());  
    if(!nameoftrack.CompareTo("AliESDtrack"))
		fAODtrack=kESDobject;
	else if(!nameoftrack.CompareTo("AliAODTrack"))
		fAODtrack=kAODobject;
	else
		fAODtrack=kotherobject;
  if(!CheckTrackType()){
    return kFALSE;
  }
  if(FillHistStat)fHistoCuts->Fill(kTrkBit);
  if(!CheckTrackCuts()){
    return kFALSE;
  }
  if(FillHistStat)fHistoCuts->Fill(kTrkCuts);
  if(!CheckEtaCut()){
    return kFALSE;
  }
  if(FillHistStat)fHistoCuts->Fill(kTrkEta);
  if(!CheckDCACut()){
    return kFALSE;
  }
  if(FillHistStat)fHistoCuts->Fill(kTrkDCA);
  if(!CheckPCut()){
    return kFALSE;
  }
  if(FillHistStat)fHistoCuts->Fill(kTrkP);
  if(!CheckPtCut()){
    return kFALSE;
  }
  if(FillHistStat)fHistoCuts->Fill(kTrkPt);
  if(!CheckTOFMatching(FillHistStat)){
    return kFALSE;
  }
  if(FillHistStat)fHistoCuts->Fill(kAccepted);
  //Printf("-------- %d,%d",kTOFMatching,kAccepted);
  
  return kTRUE;
}
//_________________________________________________________

Bool_t AliSpectraBothTrackCuts::CheckTrackType()
{
  // Check track Type
  if(fAODtrack==kESDobject)
  {
	AliESDtrack* esdtrack=dynamic_cast<AliESDtrack*>(fTrack);
	if(!esdtrack)
		return kFALSE;	
	if(fCuts->AcceptTrack(esdtrack)) return kTRUE;
		return kFALSE;
 }
  else if(fAODtrack==kAODobject)
  {
	AliAODTrack* aodtrack=dynamic_cast<AliAODTrack*>(fTrack);
	if(!aodtrack)
		return kFALSE;
	if (aodtrack->TestFilterBit(fTrackBits)) return kTRUE;
		return kFALSE;
  }

  else
	return kFALSE;
  
}
//_________________________________________________________

Bool_t AliSpectraBothTrackCuts::CheckTrackCuts()
{
  // Check additional track Cuts
  Bool_t PassTrackCuts=kTRUE;
  if(!fusedadditionalcuts)
	return PassTrackCuts;
  AliAODTrack* aodtrack=0;
  AliESDtrack* esdtrack=0;
  if(fAODtrack==kESDobject)
  {
	esdtrack=dynamic_cast<AliESDtrack*>(fTrack);
	if(!esdtrack)
		return kFALSE;
	if (!esdtrack->HasPointOnITSLayer(0) && !esdtrack->HasPointOnITSLayer(1))PassTrackCuts=kFALSE; //FIXME 1 SPD for the moment
	if (fHashitinSPD1&&!esdtrack->HasPointOnITSLayer(0)) PassTrackCuts=kFALSE; 		
	if (esdtrack->GetTPCNcls()<fMinTPCcls)PassTrackCuts=kFALSE;
	if(!esdtrack->IsOn(AliESDtrack::kTPCrefit))PassTrackCuts=kFALSE;
	if(!esdtrack->IsOn(AliESDtrack::kITSrefit))PassTrackCuts=kFALSE;
	if(PassTrackCuts)
	{
		for(int i=0;i<6;i++)
			if(esdtrack->HasPointOnITSLayer(i))
				fHistoNclustersITS->Fill(i);
	}	
  }
  else if (fAODtrack==kAODobject)
  	{
	aodtrack=dynamic_cast<AliAODTrack*>(fTrack);
	if(!aodtrack)
		return kFALSE;
	if (!aodtrack->HasPointOnITSLayer(0) && !aodtrack->HasPointOnITSLayer(1))PassTrackCuts=kFALSE; //FIXME 1 SPD for the moment
	if (fHashitinSPD1&&!aodtrack->HasPointOnITSLayer(0)) PassTrackCuts=kFALSE; 	
	if (aodtrack->GetTPCNcls()<fMinTPCcls)PassTrackCuts=kFALSE;
	if(!aodtrack->IsOn(AliAODTrack::kTPCrefit))PassTrackCuts=kFALSE;
	if(!aodtrack->IsOn(AliAODTrack::kITSrefit))PassTrackCuts=kFALSE;
	if(PassTrackCuts)
	{
		for(int i=0;i<6;i++)
			if(aodtrack->HasPointOnITSLayer(i))
				fHistoNclustersITS->Fill(i);
	}	
  }
  else
	return kFALSE;
    
  
  
  return PassTrackCuts;
}
//________________________________________________________
Bool_t AliSpectraBothTrackCuts::CheckEtaCut()
{
   // Check eta cut
   if (fTrack->Eta() < fEtaCutMax && fTrack->Eta() > fEtaCutMin) return kTRUE;
    return kFALSE;
}

Bool_t AliSpectraBothTrackCuts::CheckYCut(BothParticleSpecies_t species) 
{
  // check if the rapidity is within the set range
  Double_t y;
  
  Double_t pz=fTrack->Pz();
  Double_t p=fTrack->P();
  Double_t mass=-1.0;
  /*
  if (species == kSpProton) { y = fTrack->Y(9.38271999999999995e-01); }
  if ( species == kSpKaon ) { y = fTrack->Y(4.93676999999999977e-01); }
  if ( species == kSpPion)  { y = fTrack->Y(1.39570000000000000e-01); }
  
  */
    if (species == kSpProton) { mass=9.38271999999999995e-01; }
  if ( species == kSpKaon ) { mass=4.93676999999999977e-01; }
  if ( species == kSpPion)  { mass=1.39570000000000000e-01; }
  if(mass<0.0)
	y =-999.0 ;
  else
	y=0.5*TMath::Log((TMath::Sqrt(mass*mass+p*p)+pz)/(TMath::Sqrt(mass*mass+p*p)-pz));
  if (y > fYCutMax || y<fYCutMin||y < -998.) return kFALSE;
	return kTRUE;
}
//_______________________________________________________
Bool_t AliSpectraBothTrackCuts::CheckDCACut()
{
   // Check DCA cut
 // if (TMath::Abs(fTrack->DCA()) < fDCACut) return kTRUE; //FIXME for newest AOD fTrack->DCA() always gives -999
   
    AliAODTrack* aodtrack=0;
  AliESDtrack* esdtrack=0;
  if(fAODtrack==kESDobject)
  {
	esdtrack=dynamic_cast<AliESDtrack*>(fTrack);
	if(!esdtrack)
		return kFALSE;
	Float_t dcaxy=0.0; 
	Float_t dcaz=0.0;
	esdtrack->GetImpactParameters(dcaxy,dcaz);	
	if (TMath::Abs(dcaxy) < fDCACut) 
		return kTRUE;
	else 
		return kFALSE;
   }
  else if (fAODtrack==kAODobject)
  {
	aodtrack=dynamic_cast<AliAODTrack*>(fTrack);
	if(!aodtrack)
		return kFALSE;
	if (TMath::Abs(aodtrack->DCA()) < fDCACut) return kTRUE;
	else 
		return kFALSE;
		
   }
	else
	return kFALSE;
}
//________________________________________________________
Bool_t AliSpectraBothTrackCuts::CheckPCut()
{
   // Check P cut
   if (fTrack->P() < fPCut) return kTRUE;
   return kFALSE;
}
//_______________________________________________________
Bool_t AliSpectraBothTrackCuts::CheckPtCut()
{
    // check Pt cut
//    if ((fTrack->Pt() < fPtCut) && (fTrack->Pt() > 0.3 )) return kTRUE;
   if (fTrack->Pt() < fPtCut) return kTRUE;
    return kFALSE;
}

//_______________________________________________________
Bool_t AliSpectraBothTrackCuts::CheckTOFMatching(Bool_t FillHistStat)
{
  // check Pt cut
  //    if ((fTrack->Pt() < fPtCut) && (fTrack->Pt() > 0.3 )) return kTRUE;
	if (fTrack->Pt() < fPtCutTOFMatching) 
		return kTRUE;
	else
 	{
		if(FillHistStat)
			fHistoCuts->Fill(kTrkPtTOF);
    		if(fTrack->Charge()>0)
			fHistoNSelectedPos->Fill(fTrack->Pt());
    		else 
			fHistoNSelectedNeg->Fill(fTrack->Pt());
    		UInt_t status=fTrack->GetStatus();
    		if((status&AliAODTrack::kTOFout)&&FillHistStat)
			fHistoCuts->Fill(kTrTOFout);
    		if((status&AliAODTrack::kTIME)&&FillHistStat)
			fHistoCuts->Fill(kTrTIME);
    		if((status&AliAODTrack::kTOFpid)&&FillHistStat)
			fHistoCuts->Fill(kTrTOFpid);
    
   		 if((status&AliAODTrack::kTOFout)==0 || (status&AliAODTrack::kTIME)==0)
		{//kTOFout and kTIME
      			return kFALSE; 
    		} 
    		if(FillHistStat)
			fHistoCuts->Fill(kTOFMatching);
    		if(fTrack->Charge()>0)
			fHistoNMatchedPos->Fill(fTrack->Pt());
   		 else 
			fHistoNMatchedNeg->Fill(fTrack->Pt());
    		if(fTrack->Pt()>1.5)
		{
      			//fHistoEtaPhiHighPt->Fill(fTrack->GetOuterParam()->Eta(),fTrack->GetOuterParam()->Phi());
      			//Printf("AliExternalTrackParam * extpar=(AliExternalTrackParam*)fTrack->GetOuterParam();");
      			//AliExternalTrackParam * extpar=(AliExternalTrackParam*)fTrack->GetOuterParam();
      			fHistoEtaPhiHighPt->Fill(fTrack->Eta(),fTrack->Phi());
     			 //Printf("fHistoEtaPhiHighPt->Fill(extpar->Eta(),extpar->Phi());");
      			//fHistoEtaPhiHighPt->Fill(extpar->Eta(),extpar->Phi());
      			//delete extpar;
    		}
    		return kTRUE;
  	}
}
//_______________________________________________________
void AliSpectraBothTrackCuts::PrintCuts() const
{
  // Print cuts
    cout << "Track Cuts" << endl;
    cout << " > TrackBit\t" << fTrackBits << endl;
    cout << " > Eta cut\t" << fEtaCutMin <<","<< fEtaCutMax << endl;
    cout << " > DCA cut\t" << fDCACut << endl;
    cout << " > P cut\t" << fPCut << endl;
    cout << " > Pt cut \t" << fPtCut << endl;
    cout << " > TPC cls \t" << fMinTPCcls << endl;
}
//_______________________________________________________
void AliSpectraBothTrackCuts::SetTrackType(UInt_t bit)
{
   // Set the type of track to be used. The argument should be the bit number. The mask is produced automatically.
   fTrackBits = (0x1 << (bit - 1));
}
//_______________________________________________________

Long64_t AliSpectraBothTrackCuts::Merge(TCollection* list)
{
  // Merge a list of AliSpectraBothTrackCuts objects with this.
  // Returns the number of merged objects (including this).

  //  AliInfo("Merging");


  if (!list)
    return 0;

  if (list->IsEmpty())
    return 1;

  TIterator* iter = list->MakeIterator();
  TObject* obj;

  // collections of all histograms
  TList collections;//FIXME we should only 1 collection
  TList collections_histoNSelectedPos;
  TList collections_histoNSelectedNeg;
  TList collections_histoNMatchedPos;
  TList collections_histoNMatchedNeg;
  TList collections_histoEtaPhiHighPt;
  TList collections_histoDCAzQA;
  TList collections_histoNclustersQA;	
  TList collections_histochi2perNDFQA;
	
  Int_t count = 0;

  while ((obj = iter->Next())) {
    AliSpectraBothTrackCuts* entry = dynamic_cast<AliSpectraBothTrackCuts*> (obj);
    if (entry == 0) 
      continue;
    
    TH1I * histo = entry->GetHistoCuts();   
    if(histo)	   
    	collections.Add(histo);
    TH1F * histoNSelectedPos = entry->GetHistoNSelectedPos();
    if(histoNSelectedPos)	      
    	collections_histoNSelectedPos.Add(histoNSelectedPos);
    TH1F * histoNSelectedNeg = entry->GetHistoNSelectedNeg();      
    if(histoNSelectedNeg)
    	collections_histoNSelectedNeg.Add(histoNSelectedNeg);
    TH1F * histoNMatchedPos = entry->GetHistoNMatchedPos();  
    if(histoNMatchedPos)	    
    	collections_histoNMatchedPos.Add(histoNMatchedPos);
    TH1F * histoNMatchedNeg = entry->GetHistoNMatchedNeg();      
    if(histoNMatchedNeg)
    	collections_histoNMatchedNeg.Add(histoNMatchedNeg);
    TH2F * histoEtaPhiHighPt = entry->GetHistoEtaPhiHighPt();      
    if(histoEtaPhiHighPt)
    	collections_histoEtaPhiHighPt.Add(histoEtaPhiHighPt);
    TH3F* histoDCAzQA=entry->GetHistoDCAzQA();
    if(histoDCAzQA)	 	
    	collections_histoDCAzQA.Add(histoDCAzQA);
    TH3F* histoNclustersQA=entry->GetHistoNclustersQA(); 	
    if(histoNclustersQA)
   	collections_histoNclustersQA.Add(histoNclustersQA);
    TH3F* histochi2perNDFQA=entry->GetHistochi2perNDFQA(); 	
    if(histochi2perNDFQA)
    	collections_histochi2perNDFQA.Add(histochi2perNDFQA);
	


    count++;
  }
  if(fHistoCuts)	 
  	fHistoCuts->Merge(&collections);
  if(fHistoNSelectedPos)
  	fHistoNSelectedPos->Merge(&collections_histoNSelectedPos);
  if(fHistoNSelectedNeg)
  	fHistoNSelectedNeg->Merge(&collections_histoNSelectedNeg);
  if(fHistoNMatchedPos)
  	fHistoNMatchedPos->Merge(&collections_histoNMatchedPos);
  if(fHistoNMatchedNeg)
  	fHistoNMatchedNeg->Merge(&collections_histoNMatchedNeg);
  if(fHistoEtaPhiHighPt)
  	fHistoEtaPhiHighPt->Merge(&collections_histoEtaPhiHighPt);
  if(fHistoDCAzQA)
 	 fHistoDCAzQA->Merge(&collections_histoDCAzQA);
  if(fHistoNclustersQA)
  	fHistoNclustersQA->Merge(&collections_histoNclustersQA);
  if(fHistochi2perNDFQA)
  fHistochi2perNDFQA->Merge(&collections_histochi2perNDFQA);

  delete iter;

  return count+1;
}
//________________________________________________________________________________________________________________________
  void AliSpectraBothTrackCuts::SetPtTOFMatchingPartDepended(Float_t pion,Float_t kaon,Float_t proton)
{
	// configure the task in case of the use particle depended TOF matching cut 
	// the value fPtCutTOFMatching is set as max pt of all
	fPtCutTOFMatchingPion=pion;
	fPtCutTOFMatchingKaon=kaon;
	fPtCutTOFMatchingProton=proton;
	fUseTypeDependedTOFCut=kTRUE;
	fPtCutTOFMatching=TMath::Max(fPtCutTOFMatchingPion,TMath::Max(fPtCutTOFMatchingKaon,fPtCutTOFMatchingProton));
 
}
//___________________________________________________________________________________________________________________________
Bool_t AliSpectraBothTrackCuts::CheckTOFMatchingParticleType(Int_t type) 
{
	Float_t ptcut=fPtCutTOFMatching;
	switch (type) 
	{	
	    case  kSpPion:
	    ptcut=fPtCutTOFMatchingPion;
	    break;
	    case kSpKaon:
	    ptcut=fPtCutTOFMatchingKaon;
	    break;
	    case  kSpProton:
	    ptcut=fPtCutTOFMatchingProton;
	    break;
	    default: 
	    ptcut=0.0;
	    break;		
		

	}	
	if (fTrack->Pt() < ptcut) 
		return kTRUE;
	else
 	{
		UInt_t status=fTrack->GetStatus();
   		 if((status&AliAODTrack::kTOFout)==0 || (status&AliAODTrack::kTIME)==0)
		{//kTOFout and kTIME
      			return kFALSE; 
    		} 
    		return kTRUE;
  	}

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