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

////////////////////////////////////////////////////////////////////////////
//          ----   CORRECTION FRAMEWORK   ----
// class AliCFParticleGenCuts implementation
// Using this class a user may define selections relative to 
// MC particle (AliMCParticle) using generation-level information.
////////////////////////////////////////////////////////////////////////////
// author : R. Vernet (renaud.vernet@cern.ch)
////////////////////////////////////////////////////////////////////////////

#include "AliLog.h"
#include "AliCFParticleGenCuts.h"
#include "TParticle.h"
#include "TParticlePDG.h"
#include "AliMCEvent.h"
#include "TObject.h"
#include "AliStack.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TBits.h"
#include "TList.h"
#include "TArrayF.h"
#include "TDecayChannel.h"
#include "AliAODMCParticle.h"
#include "AliAODEvent.h"

ClassImp(AliCFParticleGenCuts)

//______________________________
AliCFParticleGenCuts::AliCFParticleGenCuts() : 
  AliCFCutBase(),
  fIsAODMC(0),
  fMCInfo(0x0),
  fRequireIsCharged(0),
  fRequireIsNeutral(0),
  fRequireIsPrimary(0),
  fRequireIsSecondary(0),
  fRequirePdgCode(0),
  fRequireAbsolutePdg(0),
  fProdVtxRange2D(0),
  fPdgCode(0),
  fProdVtxXMin (-1.e+09),
  fProdVtxYMin (-1.e+09),
  fProdVtxZMin (-1.e+09),
  fProdVtxXMax ( 1.e+09),
  fProdVtxYMax ( 1.e+09),
  fProdVtxZMax ( 1.e+09),
  fDecayVtxXMin(-1.e+09),
  fDecayVtxYMin(-1.e+09),
  fDecayVtxZMin(-1.e+09),
  fDecayVtxXMax( 1.e+09),
  fDecayVtxYMax( 1.e+09),
  fDecayVtxZMax( 1.e+09),
  fDecayLengthMin(-1.),
  fDecayLengthMax(1.e+09),
  fDecayRxyMin(-1),
  fDecayRxyMax(1.e+09),
  fDecayChannel(0x0),
  fhCutStatistics(0x0),
  fhCutCorrelation(0x0),
  fCutValues(new TArrayF(kNCuts)),
  fBitmap(new TBits(0))
{
  //
  //ctor
  //
  for (int i=0; i<kNCuts; i++) 
    for (int j=0; j<kNStepQA; j++) 
      fhQA[i][j]=0x0;

  for (int j=0; j<kNStepQA; j++)
    fhProdVtxXY[j]=0x0;
}

//______________________________
AliCFParticleGenCuts::AliCFParticleGenCuts(const Char_t* name, const Char_t* title) : 
  AliCFCutBase(name,title),
  fIsAODMC(0),
  fMCInfo(0x0),
  fRequireIsCharged(0),
  fRequireIsNeutral(0),
  fRequireIsPrimary(0),
  fRequireIsSecondary(0),
  fRequirePdgCode(0),
  fRequireAbsolutePdg(0),
  fProdVtxRange2D(0),
  fPdgCode(0),
  fProdVtxXMin (-1.e+09),
  fProdVtxYMin (-1.e+09),
  fProdVtxZMin (-1.e+09),
  fProdVtxXMax ( 1.e+09),
  fProdVtxYMax ( 1.e+09),
  fProdVtxZMax ( 1.e+09),
  fDecayVtxXMin(-1.e+09),
  fDecayVtxYMin(-1.e+09),
  fDecayVtxZMin(-1.e+09),
  fDecayVtxXMax( 1.e+09),
  fDecayVtxYMax( 1.e+09),
  fDecayVtxZMax( 1.e+09),
  fDecayLengthMin(-1.),
  fDecayLengthMax(1.e+09),
  fDecayRxyMin(-1.),
  fDecayRxyMax(1.e+09),
  fDecayChannel(0x0),
  fhCutStatistics(0x0),
  fhCutCorrelation(0x0),
  fCutValues(new TArrayF(kNCuts)),
  fBitmap(new TBits(0))
{
  //
  //ctor
  //
  for (int i=0; i<kNCuts; i++) 
    for (int j=0; j<kNStepQA; j++) 
      fhQA[i][j]=0x0;

  for (int j=0; j<kNStepQA; j++)
    fhProdVtxXY[j]=0x0;
}

//______________________________
AliCFParticleGenCuts::AliCFParticleGenCuts(const AliCFParticleGenCuts& c) : 
  AliCFCutBase(c),
  fIsAODMC(c.fIsAODMC),
  fMCInfo(c.fMCInfo),
  fRequireIsCharged(c.fRequireIsCharged),
  fRequireIsNeutral(c.fRequireIsNeutral),
  fRequireIsPrimary(c.fRequireIsPrimary),
  fRequireIsSecondary(c.fRequireIsSecondary),
  fRequirePdgCode(c.fRequirePdgCode),
  fRequireAbsolutePdg(c.fRequireAbsolutePdg),
  fProdVtxRange2D(c.fProdVtxRange2D),
  fPdgCode(c.fPdgCode),
  fProdVtxXMin (c.fProdVtxXMin),
  fProdVtxYMin (c.fProdVtxYMin),
  fProdVtxZMin (c.fProdVtxZMin),
  fProdVtxXMax (c.fProdVtxXMax),
  fProdVtxYMax (c.fProdVtxYMax),
  fProdVtxZMax (c.fProdVtxZMax),
  fDecayVtxXMin(c.fDecayVtxXMin),
  fDecayVtxYMin(c.fDecayVtxYMin),
  fDecayVtxZMin(c.fDecayVtxZMin),
  fDecayVtxXMax(c.fDecayVtxXMax),
  fDecayVtxYMax(c.fDecayVtxYMax),
  fDecayVtxZMax(c.fDecayVtxZMax),
  fDecayLengthMin(c.fDecayLengthMin),
  fDecayLengthMax(c.fDecayLengthMin),
  fDecayRxyMin(c.fDecayLengthMin),
  fDecayRxyMax(c.fDecayLengthMin),
  fDecayChannel(c.fDecayChannel),
  fhCutStatistics(new TH1F(*c.fhCutStatistics)),
  fhCutCorrelation(new TH2F(*c.fhCutCorrelation)),
  fCutValues(new TArrayF(*c.fCutValues)),
  fBitmap(new TBits(*c.fBitmap))
{
  //
  //copy ctor
  //
  for (int i=0; i<kNCuts; i++)
    for (int j=0; j<kNStepQA; j++)
      fhQA[i][j]=(TH1F*)c.fhQA[i][j]->Clone();

  for (int j=0; j<kNStepQA; j++)
    fhProdVtxXY[j]=(TH2F*)c.fhProdVtxXY[j]->Clone();
}

//______________________________
AliCFParticleGenCuts& AliCFParticleGenCuts::operator=(const AliCFParticleGenCuts& c)
{
  //
  // Assignment operator
  //
  if (this != &c) {
    AliCFCutBase::operator=(c) ;
    fIsAODMC=c.fIsAODMC;
    fMCInfo=c.fMCInfo;
    fRequireIsCharged=c.fRequireIsCharged;
    fRequireIsNeutral=c.fRequireIsNeutral;
    fRequireIsPrimary=c.fRequireIsPrimary;
    fRequireIsSecondary=c.fRequireIsSecondary;
    fRequirePdgCode=c.fRequirePdgCode;
    fRequireAbsolutePdg=c.fRequireAbsolutePdg;
    fProdVtxRange2D=c.fProdVtxRange2D;
    fPdgCode=c.fPdgCode;
    fProdVtxXMin=c.fProdVtxXMin;
    fProdVtxYMin=c.fProdVtxYMin;
    fProdVtxZMin=c.fProdVtxZMin;
    fProdVtxXMax=c.fProdVtxXMax;
    fProdVtxYMax=c.fProdVtxYMax;
    fProdVtxZMax=c.fProdVtxZMax;
    fDecayVtxXMin=c.fDecayVtxXMin;
    fDecayVtxYMin=c.fDecayVtxYMin;
    fDecayVtxZMin=c.fDecayVtxZMin;
    fDecayVtxXMax=c.fDecayVtxXMax;
    fDecayVtxYMax=c.fDecayVtxYMax;
    fDecayVtxZMax=c.fDecayVtxZMax;      
    fDecayLengthMin=c.fDecayVtxZMax;
    fDecayLengthMax=c.fDecayLengthMax;
    fDecayRxyMin=c.fDecayRxyMin;
    fDecayRxyMax=c.fDecayRxyMax;
    fDecayChannel=c.fDecayChannel;
    fCutValues=new TArrayF(*c.fCutValues);
    fBitmap=new TBits(*c.fBitmap);
    
    if (fhCutStatistics)  fhCutStatistics =new TH1F(*c.fhCutStatistics) ;
    if (fhCutCorrelation) fhCutCorrelation=new TH2F(*c.fhCutCorrelation);
    
    for (int i=0; i<kNCuts; i++)
      for (int j=0; j<kNStepQA; j++)
	fhQA[i][j]=(TH1F*)c.fhQA[i][j]->Clone();

    for (int j=0; j<kNStepQA; j++)
	fhProdVtxXY[j]=(TH2F*)c.fhProdVtxXY[j]->Clone();
  }
  return *this ;
}

//______________________________
Bool_t AliCFParticleGenCuts::IsSelected(TObject* obj) {
  //
  // check if selections on 'obj' are passed
  // 'obj' must be an AliMCParticle
  //
  
  if (!obj) return kFALSE ;

  if (!fIsAODMC) SelectionBitMap((AliMCParticle*)   obj);
  else           SelectionBitMap((AliAODMCParticle*)obj);

  if (fIsQAOn) FillHistograms(obj,0);

  for (UInt_t icut=0; icut<fBitmap->GetNbits();icut++)
    if (!fBitmap->TestBitNumber(icut)) return kFALSE ; 
  
  if (fIsQAOn) FillHistograms(obj,1);
  return kTRUE;
}
	     
//__________________________________________________________________________________
void AliCFParticleGenCuts::SelectionBitMap(AliMCParticle* mcPart)
{
  //
  // test if the track passes the single cuts
  // and store the information in a bitmap
  //

  for (UInt_t i=0; i<kNCuts; i++) {
    fBitmap->SetBitNumber(i,kFALSE);
    fCutValues->SetAt((Double32_t)0,i) ;
  }

  // fill the cut array
  Double32_t partVx=(Double32_t)mcPart->Xv();
  Double32_t partVy=(Double32_t)mcPart->Yv();
  Double32_t partVz=(Double32_t)mcPart->Zv();

  // calculate the production vertex ellipse
  Double32_t prodVtxXYmin = 0.;
  if (fProdVtxXMin>0 && fProdVtxYMin>0)
	prodVtxXYmin = partVx*partVx/(fProdVtxXMin*fProdVtxXMin) + partVy*partVy/(fProdVtxYMin*fProdVtxYMin);
  Double32_t prodVtxXYmax = 0.;
  if(fProdVtxXMax>0 && fProdVtxYMax>0)
	prodVtxXYmax = partVx*partVx/(fProdVtxXMax*fProdVtxXMax) + partVy*partVy/(fProdVtxYMax*fProdVtxYMax);

  Double32_t decayVx=0.;
  Double32_t decayVy=0.;
  Double32_t decayVz=0.;
  Double32_t decayL=0.;
  Double32_t decayRxy=0.;

  TParticle* part = mcPart->Particle();
  AliStack*  stack = ((AliMCEvent*)fMCInfo)->Stack();
  TParticle* daughter=0x0;
  if ( part->GetNDaughters() > 0 ) {
    daughter = stack->Particle(part->GetFirstDaughter()) ;
    decayVx=(Double32_t)daughter->Vx();
    decayVy=(Double32_t)daughter->Vy();
    decayVz=(Double32_t)daughter->Vz();
    decayL = TMath::Sqrt(TMath::Power(partVx-decayVx,2) + 
			 TMath::Power(partVy-decayVy,2) + 
			 TMath::Power(partVz-decayVz,2) ) ;
    decayRxy = TMath::Sqrt(TMath::Power(decayVx,2) + TMath::Power(decayVy,2) ) ;
  }

  fCutValues->SetAt(partVx  ,kCutProdVtxXMin) ;
  fCutValues->SetAt(partVy  ,kCutProdVtxYMin) ;
  fCutValues->SetAt(partVz  ,kCutProdVtxZMin) ;
  fCutValues->SetAt(partVx  ,kCutProdVtxXMax) ;
  fCutValues->SetAt(partVy  ,kCutProdVtxYMax) ;
  fCutValues->SetAt(partVz  ,kCutProdVtxZMax) ;
  fCutValues->SetAt(decayVx ,kCutDecVtxXMin)  ;
  fCutValues->SetAt(decayVy ,kCutDecVtxYMin)  ;
  fCutValues->SetAt(decayVz ,kCutDecVtxZMin)  ;
  fCutValues->SetAt(decayVx ,kCutDecVtxXMax)  ;
  fCutValues->SetAt(decayVy ,kCutDecVtxYMax)  ;
  fCutValues->SetAt(decayVz ,kCutDecVtxZMax)  ;
  fCutValues->SetAt(decayL  ,kCutDecLgthMin)  ;
  fCutValues->SetAt(decayL  ,kCutDecLgthMax)  ;
  fCutValues->SetAt(decayRxy,kCutDecRxyMin)   ;
  fCutValues->SetAt(decayRxy,kCutDecRxyMax)   ;
  
  // cut on charge
  if ( fRequireIsCharged || fRequireIsNeutral ) {
    if (fRequireIsCharged &&  IsCharged(mcPart)) fCutValues->SetAt((Double32_t)kTRUE,kCutCharge) ;
    if (fRequireIsNeutral && !IsCharged(mcPart)) fCutValues->SetAt((Double32_t)kTRUE,kCutCharge) ;
  } 
  else fCutValues->SetAt((Double32_t)kTRUE,kCutCharge) ;
  
  // cut on primary/secondary
  if ( fRequireIsPrimary || fRequireIsSecondary) {
    if (fRequireIsPrimary   &&  IsPrimary(mcPart)) fCutValues->SetAt((Double32_t)kTRUE,kCutPrimSec);
    if (fRequireIsSecondary && !IsPrimary(mcPart)) fCutValues->SetAt((Double32_t)kTRUE,kCutPrimSec);
  } 
  else fCutValues->SetAt((Double32_t)kTRUE,kCutPrimSec);
  
  // cut on PDG code
  if ( fRequirePdgCode ) {
    if (IsA(mcPart,fPdgCode,fRequireAbsolutePdg)) fCutValues->SetAt((Double32_t)kTRUE,kCutPDGCode);
  }
  else fCutValues->SetAt((Double32_t)kTRUE,kCutPDGCode);
  
  // cut on decay channel
  if ( fDecayChannel ) {
    Bool_t goodDecay = kTRUE ;
    Short_t nDaughters = mcPart->Particle()->GetNDaughters() ;
    if (nDaughters != fDecayChannel->NDaughters()) goodDecay = kFALSE ;
    //now number of daughters is OK
    if (goodDecay) {
      // now check if decay channel is respected
      // first try
      for (Int_t iDaughter = 0; iDaughter<nDaughters; iDaughter++) {
	TParticle* daug = stack->Particle(mcPart->Particle()->GetDaughter(iDaughter)) ;
	if (daug->GetPdgCode() != fDecayChannel->DaughterPdgCode(iDaughter)) {goodDecay = kFALSE; break;}
      }
      if (!goodDecay) {
	//second try inverting the order of the daughters
	goodDecay = kTRUE ;
	for (Int_t iDaughter = 0; iDaughter<nDaughters; iDaughter++) {
	  TParticle* daug = stack->Particle(mcPart->Particle()->GetDaughter(nDaughters-(iDaughter+1))) ;
	  if (daug->GetPdgCode() != fDecayChannel->DaughterPdgCode(iDaughter)) {goodDecay = kFALSE; break;}
	}
      }
      if (!goodDecay && fRequireAbsolutePdg) {
	//now tries inverting the sign of the daughters in case the anti-particle is also looked at
	// third try
	goodDecay = kTRUE ;
	for (Int_t iDaughter = 0; iDaughter<nDaughters; iDaughter++) {
	  TParticle* daug = stack->Particle(mcPart->Particle()->GetDaughter(iDaughter)) ;
	  if (daug->GetPdgCode() != -fDecayChannel->DaughterPdgCode(iDaughter)) {goodDecay = kFALSE; break;}
	}
	if (!goodDecay) {
	  //fourth try inverting the order of the daughters
	  goodDecay = kTRUE ;
	  for (Int_t iDaughter = 0; iDaughter<nDaughters; iDaughter++) {
	    TParticle* daug = stack->Particle(mcPart->Particle()->GetDaughter(nDaughters-(iDaughter+1))) ;
	    if (daug->GetPdgCode() != -fDecayChannel->DaughterPdgCode(iDaughter)) {goodDecay = kFALSE; break;}
	  }
	}
      } //end check anti-particle
    } //end # daughters OK
    fCutValues->SetAt((Double32_t)goodDecay,kCutDecayChannel) ;
  } //end require decay channel
  else fCutValues->SetAt((Double32_t)kTRUE,kCutDecayChannel);
  
  
  // now array of cut is build, fill the bitmap consequently
  Int_t iCutBit = -1;
  if ( fCutValues->At(++iCutBit) !=0 )              fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) !=0 )              fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) !=0 )              fBitmap->SetBitNumber(iCutBit,kTRUE);

  ++iCutBit;
  if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) > fProdVtxXMin)
    || ( fProdVtxRange2D && (fProdVtxXMin>0 && fProdVtxYMin>0) && prodVtxXYmin >= 1)
    || ( fProdVtxRange2D && (fProdVtxXMin<=0 || fProdVtxYMin<=0) ) )
   fBitmap->SetBitNumber(iCutBit,kTRUE);

  ++iCutBit;
  if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) < fProdVtxXMax)
    || ( fProdVtxRange2D && (fProdVtxXMax>0 && fProdVtxYMax>0) && prodVtxXYmax <= 1)
    || ( fProdVtxRange2D && (fProdVtxXMax<=0 || fProdVtxYMax<=0) ) )
  fBitmap->SetBitNumber(iCutBit,kTRUE);

  ++iCutBit;
  if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) > fProdVtxYMin)
    || ( fProdVtxRange2D &&  (fProdVtxXMin>0 && fProdVtxYMin>0) && prodVtxXYmin >= 1)
    || ( fProdVtxRange2D &&  (fProdVtxXMin<=0 || fProdVtxYMin<=0) ) )
  fBitmap->SetBitNumber(iCutBit,kTRUE);

  ++iCutBit;
  if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) < fProdVtxYMax)
    || ( fProdVtxRange2D && (fProdVtxXMax>0 && fProdVtxYMax>0) && prodVtxXYmax <= 1)
    || ( fProdVtxRange2D && (fProdVtxXMax<=0 || fProdVtxYMax<=0) ) )
  fBitmap->SetBitNumber(iCutBit,kTRUE);

  if ( fCutValues->At(++iCutBit) > fProdVtxZMin)    fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fProdVtxZMax)    fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) > fDecayVtxXMin)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fDecayVtxXMax)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) > fDecayVtxYMin)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fDecayVtxYMax)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) > fDecayVtxZMin)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fDecayVtxZMax)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) > fDecayLengthMin) fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fDecayLengthMax) fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) > fDecayRxyMin)    fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fDecayRxyMax)    fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) != 0 )             fBitmap->SetBitNumber(iCutBit,kTRUE);
}

//__________________________________________________________________________________
void AliCFParticleGenCuts::SelectionBitMap(AliAODMCParticle* mcPart)
{
  //
  // test if the track passes the single cuts
  // and store the information in a bitmap
  //
  
  for (UInt_t i=0; i<kNCuts; i++) {
    fBitmap->SetBitNumber(i,kFALSE);
    fCutValues->SetAt((Double32_t)0,i) ;
  }

  // fill the cut array
  Double32_t partVx=(Double32_t)mcPart->Xv();
  Double32_t partVy=(Double32_t)mcPart->Yv();
  Double32_t partVz=(Double32_t)mcPart->Zv();

  // calculate the production vertex ellipse
  Double32_t prodVtxXYmin = 0.;
  if (fProdVtxXMin!=0 && fProdVtxYMin!=0)
	prodVtxXYmin = partVx*partVx/(fProdVtxXMin*fProdVtxXMin) + partVy*partVy/(fProdVtxYMin*fProdVtxYMin);
  Double32_t prodVtxXYmax = 0.;
  if(fProdVtxXMax!=0 && fProdVtxYMax!=0)
	prodVtxXYmax = partVx*partVx/(fProdVtxXMax*fProdVtxXMax) + partVy*partVy/(fProdVtxYMax*fProdVtxYMax);

  Double32_t decayVx=0.;
  Double32_t decayVy=0.;
  Double32_t decayVz=0.;
  Double32_t decayL=0.;
  Double32_t decayRxy=0.;

  AliAODEvent* aod = dynamic_cast<AliAODEvent*>(fMCInfo);
  
  if (!aod) {
    AliError("AOD event casting failed");
    return;
  }
  
  TClonesArray* mcArray = dynamic_cast<TClonesArray*>(aod->FindListObject(AliAODMCParticle::StdBranchName()));
  if (!mcArray) {
    AliError("array casting failed");
    return;
  }
  AliAODMCParticle* daughter = 0x0 ;

  if (mcPart->GetDaughter(0)>0) {
    daughter = dynamic_cast<AliAODMCParticle*>(mcArray->At(mcPart->GetDaughter(0)));
    if (!daughter) {
      AliError("daughter casting failed");
      return;
    }

    decayVx=(Double32_t)daughter->Xv();
    decayVy=(Double32_t)daughter->Yv();
    decayVz=(Double32_t)daughter->Zv();
    decayL = TMath::Sqrt(TMath::Power(partVx-decayVx,2) + 
			 TMath::Power(partVy-decayVy,2) + 
			 TMath::Power(partVz-decayVz,2) ) ;
    decayRxy = TMath::Sqrt(TMath::Power(decayVx,2) + TMath::Power(decayVy,2) ) ;
    
  }
  
  fCutValues->SetAt(partVx  ,kCutProdVtxXMin) ;
  fCutValues->SetAt(partVy  ,kCutProdVtxYMin) ;
  fCutValues->SetAt(partVz  ,kCutProdVtxZMin) ;
  fCutValues->SetAt(partVx  ,kCutProdVtxXMax) ;
  fCutValues->SetAt(partVy  ,kCutProdVtxYMax) ;
  fCutValues->SetAt(partVz  ,kCutProdVtxZMax) ;
  fCutValues->SetAt(decayVx ,kCutDecVtxXMin)  ;
  fCutValues->SetAt(decayVy ,kCutDecVtxYMin)  ;
  fCutValues->SetAt(decayVz ,kCutDecVtxZMin)  ;
  fCutValues->SetAt(decayVx ,kCutDecVtxXMax)  ;
  fCutValues->SetAt(decayVy ,kCutDecVtxYMax)  ;
  fCutValues->SetAt(decayVz ,kCutDecVtxZMax)  ;
  fCutValues->SetAt(decayL  ,kCutDecLgthMin)  ;
  fCutValues->SetAt(decayL  ,kCutDecLgthMax)  ;
  fCutValues->SetAt(decayRxy,kCutDecRxyMin)   ;
  fCutValues->SetAt(decayRxy,kCutDecRxyMax)   ;
  
  // cut on charge
  if ( fRequireIsCharged || fRequireIsNeutral ) {
    if (fRequireIsCharged &&  IsCharged(mcPart)) fCutValues->SetAt((Double32_t)kTRUE,kCutCharge) ;
    if (fRequireIsNeutral && !IsCharged(mcPart)) fCutValues->SetAt((Double32_t)kTRUE,kCutCharge) ;
  } 
  else fCutValues->SetAt((Double32_t)kTRUE,kCutCharge) ;
  
  // cut on primary/secondary
  if ( fRequireIsPrimary || fRequireIsSecondary) {
    if (fRequireIsPrimary   &&  IsPrimary(mcPart)) fCutValues->SetAt((Double32_t)kTRUE,kCutPrimSec);
    if (fRequireIsSecondary && !IsPrimary(mcPart)) fCutValues->SetAt((Double32_t)kTRUE,kCutPrimSec);
  } 
  else fCutValues->SetAt((Double32_t)kTRUE,kCutPrimSec);
  
  // cut on PDG code
  if ( fRequirePdgCode ) {
    if (IsA(mcPart,fPdgCode,fRequireAbsolutePdg)) fCutValues->SetAt((Double32_t)kTRUE,kCutPDGCode);
  }
  else fCutValues->SetAt((Double32_t)kTRUE,kCutPDGCode);
  
  // cut on decay channel
  if ( fDecayChannel ) {
    Bool_t goodDecay = kTRUE ;
    Short_t nDaughters = 0 ;
    if (mcPart->GetDaughter(0) >=0) nDaughters = 1 + mcPart->GetDaughter(1) - mcPart->GetDaughter(0);
    
    if (nDaughters != fDecayChannel->NDaughters()) goodDecay = kFALSE ;
    if (goodDecay) {
      // now check if decay channel is respected
      // first try
      for (Int_t iDaughter = 0 ; iDaughter<nDaughters; iDaughter++) {
	AliAODMCParticle* daug = dynamic_cast<AliAODMCParticle*>(mcArray->At(mcPart->GetDaughter(0)+iDaughter));
	if (!daug) {
	  AliError("daughter: casting failed");
	  continue;
	}
	if (daug->GetPdgCode() != fDecayChannel->DaughterPdgCode(iDaughter)) {goodDecay = kFALSE; break;}
      }
      if (!goodDecay) {
	//second try inverting the order of the daughters
	goodDecay = kTRUE ;
	for (Int_t iDaughter = 0 ; iDaughter<nDaughters; iDaughter++) {
	  AliAODMCParticle* daug = dynamic_cast<AliAODMCParticle*>(mcArray->At(mcPart->GetDaughter(1)-iDaughter));
	  if (!daug) {AliFatal(""); return;}
	  if (daug->GetPdgCode() != fDecayChannel->DaughterPdgCode(iDaughter)) {goodDecay = kFALSE; break;}
	}
      }
    }
    fCutValues->SetAt((Double32_t)goodDecay,kCutDecayChannel) ;
  }
  else fCutValues->SetAt((Double32_t)kTRUE,kCutDecayChannel);
  
  
  // now array of cut is build, fill the bitmap consequently
  Int_t iCutBit = -1;
  if ( fCutValues->At(++iCutBit) !=0 )              fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) !=0 )              fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) !=0 )              fBitmap->SetBitNumber(iCutBit,kTRUE);

  ++iCutBit;
  if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) > fProdVtxXMin)
       || ( fProdVtxRange2D && (fProdVtxXMin>0 && fProdVtxYMin>0) && prodVtxXYmin >= 1)
       || ( fProdVtxRange2D && (fProdVtxXMin<=0 || fProdVtxYMin<=0) ) )
    fBitmap->SetBitNumber(iCutBit,kTRUE);
  
  ++iCutBit;
  if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) < fProdVtxXMax)
       || ( fProdVtxRange2D && (fProdVtxXMax>0 && fProdVtxYMax>0) && prodVtxXYmax <= 1)
       || ( fProdVtxRange2D && (fProdVtxXMax<=0 || fProdVtxYMax<=0) ) )
    fBitmap->SetBitNumber(iCutBit,kTRUE);
  
  ++iCutBit;
  if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) > fProdVtxYMin)
       || ( fProdVtxRange2D &&  (fProdVtxXMin>0 && fProdVtxYMin>0) && prodVtxXYmin >= 1)
       || ( fProdVtxRange2D &&  (fProdVtxXMin<=0 || fProdVtxYMin<=0) ) )
    fBitmap->SetBitNumber(iCutBit,kTRUE);
  
  ++iCutBit;
  if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) < fProdVtxYMax)
       || ( fProdVtxRange2D && (fProdVtxXMax>0 && fProdVtxYMax>0) && prodVtxXYmax <= 1)
       || ( fProdVtxRange2D && (fProdVtxXMax<=0 || fProdVtxYMax<=0) ) )
    fBitmap->SetBitNumber(iCutBit,kTRUE);
  
  if ( fCutValues->At(++iCutBit) > fProdVtxZMin)    fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fProdVtxZMax)    fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) > fDecayVtxXMin)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fDecayVtxXMax)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) > fDecayVtxYMin)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fDecayVtxYMax)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) > fDecayVtxZMin)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fDecayVtxZMax)   fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) > fDecayLengthMin) fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fDecayLengthMax) fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) > fDecayRxyMin)    fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) < fDecayRxyMax)    fBitmap->SetBitNumber(iCutBit,kTRUE);
  if ( fCutValues->At(++iCutBit) != 0 )             fBitmap->SetBitNumber(iCutBit,kTRUE);
}


//__________________________________________________________________________________
void AliCFParticleGenCuts::FillHistograms(TObject* /*obj*/, Bool_t afterCuts)
{
  //
  // fill the QA histograms
  //

  for (int iCutNumber = 0; iCutNumber < kNCuts; iCutNumber++) 
    fhQA[iCutNumber][afterCuts]->Fill(fCutValues->At(iCutNumber));

  fhProdVtxXY[afterCuts]->Fill(fCutValues->At(4),fCutValues->At(5));

  // fill cut statistics and cut correlation histograms with information from the bitmap
  if (afterCuts) return;

  // Number of single cuts in this class
  UInt_t ncuts = fBitmap->GetNbits();
  for(UInt_t bit=0; bit<ncuts;bit++) {
    if (!fBitmap->TestBitNumber(bit)) {
      fhCutStatistics->Fill(bit+1);
      for (UInt_t bit2=bit; bit2<ncuts;bit2++) {
	if (!fBitmap->TestBitNumber(bit2)) 
	  fhCutCorrelation->Fill(bit+1,bit2+1);
      }
    }
  }
}

//__________________________________________________________________________________
void AliCFParticleGenCuts::AddQAHistograms(TList *qaList) {
  //
  // saves the histograms in a TList
  //

  DefineHistograms();

  qaList->Add(fhCutStatistics);
  qaList->Add(fhCutCorrelation);

  for (Int_t j=0; j<kNStepQA; j++) {
    qaList->Add(fhProdVtxXY[j]);
    for(Int_t i=0; i<kNCuts; i++)
      qaList->Add(fhQA[i][j]);
  }
}

//__________________________________________________________________________________
void AliCFParticleGenCuts::DefineHistograms() {
  //
  // histograms for cut variables, cut statistics and cut correlations
  //
  Int_t color = 2;

  // book cut statistics and cut correlation histograms
  fhCutStatistics = new TH1F(Form("%s_cut_statistics",GetName()),"",kNCuts,0.5,kNCuts+0.5);
  fhCutStatistics->SetLineWidth(2);
  int k = 1;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"charge")     ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"prim/sec")   ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"PDG")        ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"VtxXMin")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"VtxXMax")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"VtxYMin")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"VtxYMax")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"VtxZMin")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecZMax")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecXMin")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecXMax")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecYMin")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecYMax")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecZMin")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecZMax")    ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecLgthMin") ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecLgthMax") ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecRxyMin")  ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecRxyMax")  ; k++;
  fhCutStatistics->GetXaxis()->SetBinLabel(k,"DecChannel") ; k++;


  fhCutCorrelation = new TH2F(Form("%s_cut_correlation",GetName()),"",kNCuts,0.5,kNCuts+0.5,kNCuts,0.5,kNCuts+0.5);
  fhCutCorrelation->SetLineWidth(2);
  for (k=1; k<=kNCuts; k++) {
    fhCutCorrelation->GetXaxis()->SetBinLabel(k,fhCutStatistics->GetXaxis()->GetBinLabel(k));
    fhCutCorrelation->GetYaxis()->SetBinLabel(k,fhCutStatistics->GetXaxis()->GetBinLabel(k));
  }

  Char_t str[5];
  for (int i=0; i<kNStepQA; i++) {
    if (i==0) snprintf(str,5," ");
    else snprintf(str,5,"_cut");
    fhQA[kCutCharge]      [i] = new TH1F(Form("%s_charge%s"      ,GetName(),str),"",2,0,2);
    fhQA[kCutPrimSec]     [i] = new TH1F(Form("%s_primSec%s"     ,GetName(),str),"",2,0,2);
    fhQA[kCutPDGCode]     [i] = new TH1F(Form("%s_pdgCode%s"     ,GetName(),str),"",2,0,2);
    fhQA[kCutProdVtxXMin] [i] = new TH1F(Form("%s_prodVtxXMin%s" ,GetName(),str),"",100,-10,10);
    fhQA[kCutProdVtxXMax] [i] = new TH1F(Form("%s_prodVtxXMax%s" ,GetName(),str),"",100,-10,10);
    fhQA[kCutProdVtxYMin] [i] = new TH1F(Form("%s_prodVtxYMin%s" ,GetName(),str),"",100,-10,10);
    fhQA[kCutProdVtxYMax] [i] = new TH1F(Form("%s_prodVtxYMax%s" ,GetName(),str),"",100,-10,10);
    fhQA[kCutProdVtxZMin] [i] = new TH1F(Form("%s_prodVtxZMin%s" ,GetName(),str),"",100,-10,10);
    fhQA[kCutProdVtxZMax] [i] = new TH1F(Form("%s_prodVtxZMax%s" ,GetName(),str),"",100,-10,10);
    fhQA[kCutDecVtxXMin]  [i] = new TH1F(Form("%s_decVtxXMin%s"  ,GetName(),str),"",100,0,10);
    fhQA[kCutDecVtxXMax]  [i] = new TH1F(Form("%s_decVtxXMax%s"  ,GetName(),str),"",100,0,10);
    fhQA[kCutDecVtxYMin]  [i] = new TH1F(Form("%s_decVtxYMin%s"  ,GetName(),str),"",100,0,10);
    fhQA[kCutDecVtxYMax]  [i] = new TH1F(Form("%s_decVtxYMax%s"  ,GetName(),str),"",100,0,10);
    fhQA[kCutDecVtxZMin]  [i] = new TH1F(Form("%s_decVtxZMin%s"  ,GetName(),str),"",100,0,10);
    fhQA[kCutDecVtxZMax]  [i] = new TH1F(Form("%s_decVtxZMax%s"  ,GetName(),str),"",100,0,10);
    fhQA[kCutDecLgthMin]  [i] = new TH1F(Form("%s_decLengthMin%s",GetName(),str),"",100,0,10);
    fhQA[kCutDecLgthMax]  [i] = new TH1F(Form("%s_decLengthMax%s",GetName(),str),"",100,0,10);
    fhQA[kCutDecRxyMin]   [i] = new TH1F(Form("%s_decRxyMin%s"   ,GetName(),str),"",100,0,10);
    fhQA[kCutDecRxyMax]   [i] = new TH1F(Form("%s_decRxyMax%s"   ,GetName(),str),"",100,0,10);
    fhQA[kCutDecayChannel][i] = new TH1F(Form("%s_decayChannel%s",GetName(),str),"",2,0,2);
    fhProdVtxXY		  [i] = new TH2F(Form("%s_prodVtxXY%s"   ,GetName(),str),"",100,0,10,100,0,10);
    fhProdVtxXY		  [i] ->GetXaxis()->SetTitle("x_{production vertex}");
    fhProdVtxXY		  [i] ->GetYaxis()->SetTitle("y_{production vertex}");
    fhQA[kCutProdVtxXMax] [i] ->GetXaxis()->SetTitle("x_{production vertex}");
    fhQA[kCutProdVtxYMax] [i] ->GetXaxis()->SetTitle("y_{production vertex}");
  }
  for(Int_t i=0; i<kNCuts; i++) fhQA[i][1]->SetLineColor(color);
}


//______________________________
Bool_t AliCFParticleGenCuts::IsCharged(AliVParticle *mcPart) {
  //
  //check if particle is charged.
  //
  if (mcPart->Charge()==0) return kFALSE;
  return kTRUE;
}
//______________________________
Bool_t AliCFParticleGenCuts::IsPrimary(AliMCParticle *mcPart) {
  //
  //check if particle is primary (standard definition)
  //
  
  AliStack* stack = ((AliMCEvent*)fMCInfo)->Stack();

  if (!stack->IsPhysicalPrimary(mcPart->GetLabel())) return kFALSE;
  return kTRUE;
}
//______________________________
Bool_t AliCFParticleGenCuts::IsPrimary(AliAODMCParticle *mcPart) {
  //
  //check if particle is primary (standard definition)
  //
  
  if (!mcPart->IsPhysicalPrimary()) return kFALSE;
  return kTRUE;
}
//______________________________
Bool_t AliCFParticleGenCuts::IsPrimaryCharged(AliVParticle *mcPart) {
  //
  //check if a charged particle is primary (standard definition)
  //

  if (!fIsAODMC) {
    if (!IsPrimary((AliMCParticle*)mcPart) || !IsCharged(mcPart)) return kFALSE ;
  }
  else {
    if (!IsPrimary((AliAODMCParticle*)mcPart) || !IsCharged(mcPart)) return kFALSE ;
  }
  return kTRUE;
}
//______________________________
Bool_t AliCFParticleGenCuts::IsA(AliMCParticle *mcPart, Int_t pdg, Bool_t abs) {
  //
  //Check on the pdg code of the MC particle. if abs=kTRUE then check on the 
  //absolute value. 
  //
  TParticle* part = mcPart->Particle();
  Int_t pdgCode = part->GetPdgCode();

  if (abs) {
    pdgCode = TMath::Abs(pdgCode);
    pdg = TMath::Abs(pdg);
  }
  if (pdgCode != pdg ) return kFALSE;
  return kTRUE;
}
//______________________________
Bool_t AliCFParticleGenCuts::IsA(AliAODMCParticle *mcPart, Int_t pdg, Bool_t abs) {
  //
  //Check on the pdg code of the MC particle. if abs=kTRUE then check on the 
  //absolute value. 
  //
  Int_t pdgCode = mcPart->GetPdgCode();
  
  if (abs) {
    pdgCode = TMath::Abs(pdgCode);
    pdg = TMath::Abs(pdg);
  }
  if (pdgCode != pdg ) return kFALSE;
  return kTRUE;
}
//______________________________
void AliCFParticleGenCuts::SetMCEventInfo(const TObject* mcEvent) {
  //
  // Sets pointer to MC event information (AliMCEvent)
  //

  if (!mcEvent) {
    AliError("Pointer to MC Event is null !");
    return;
  }
  
  TString className(mcEvent->ClassName());
  if (className.CompareTo("AliMCEvent") != 0 && className.CompareTo("AliAODEvent") != 0) {
    AliError("argument must point to an AliMCEvent or an AliAODEvent !");
    return ;
  }

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