ROOT logo
//
// Class AliRsnCutTrackQuality
//
// General implementation of a single cut strategy, which can be:
// - a value contained in a given interval  [--> IsBetween()   ]
// - a value equal to a given reference     [--> MatchesValue()]
//
// In all cases, the reference value(s) is (are) given as data members
// and each kind of cut requires a given value type (Int, UInt, Double),
// but the cut check procedure is then automatized and chosen thanks to
// an enumeration of the implemented cut types.
// At the end, the user (or any other point which uses this object) has
// to use the method IsSelected() to check if this cut has been passed.
//
// authors: Martin Vala (martin.vala@cern.ch)
//          Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
//

#include <Riostream.h>
#include <TFormula.h>
#include <TBits.h>

#include "AliLog.h"
#include "AliESDtrackCuts.h"

#include "AliRsnEvent.h"
#include "AliRsnDaughter.h"
#include "AliRsnCutTrackQuality.h"

ClassImp(AliRsnCutTrackQuality)

//_________________________________________________________________________________________________
AliRsnCutTrackQuality::AliRsnCutTrackQuality(const char *name) :
   AliRsnCut(name, AliRsnTarget::kDaughter, 0.0, 0.0),
   fFlagsOn(0x0),
   fFlagsOff(0x0),
   fRejectKinkDaughters(kTRUE),
   fDCARmaxfixed(kTRUE),
   fDCARminfixed(kTRUE),
   fDCARptFormula(""),
   fDCARptFormulaMin(""),
   fDCARmax(1E20),
   fDCARmin(0),
   fDCAZfixed(kTRUE),
   fDCAZptFormula(""),
   fDCAZmax(1E20),
   fSPDminNClusters(0),
   fITSminNClusters(0),
   fITSmaxChi2(1E20),
   fTPCminNClusters(0),
   fTPCmaxChi2(1E20),
   fCutMaxChi2TPCConstrainedVsGlobal(1E20),
   fTrackMaxChi2(1E20),
   fIsUseCrossedRowsCut(kFALSE),
   fTPCminNCrossedRows(0),
   fTPCminCrossedRowsOverFindableCls(0),
   fIsUseLengthActiveVolumeTPCCut(kFALSE),
   fCutMinLengthActiveVolumeTPC(0),
   fAODTestFilterBit(-1),
   fCheckOnlyFilterBit(kTRUE),
   fESDtrackCuts(0x0)
{
//
// Default constructor.
// Initializes all cuts in such a way that all of them are disabled.
//
   SetPtRange(0.0, 1E20);
   SetEtaRange(-1E20, 1E20);
}

//_________________________________________________________________________________________________
AliRsnCutTrackQuality::AliRsnCutTrackQuality(const AliRsnCutTrackQuality &copy) :
   AliRsnCut(copy),
   fFlagsOn(copy.fFlagsOn),
   fFlagsOff(copy.fFlagsOff),
   fRejectKinkDaughters(copy.fRejectKinkDaughters),
   fDCARmaxfixed(copy.fDCARmaxfixed),
   fDCARminfixed(copy.fDCARminfixed),
   fDCARptFormula(copy.fDCARptFormula),
   fDCARptFormulaMin(copy.fDCARptFormulaMin),
   fDCARmax(copy.fDCARmax),
   fDCARmin(copy.fDCARmin),
   fDCAZfixed(copy.fDCAZfixed),
   fDCAZptFormula(copy.fDCAZptFormula),
   fDCAZmax(copy.fDCAZmax),
   fSPDminNClusters(copy.fSPDminNClusters),
   fITSminNClusters(copy.fITSminNClusters),
   fITSmaxChi2(copy.fITSmaxChi2),
   fTPCminNClusters(copy.fTPCminNClusters),
   fTPCmaxChi2(copy.fTPCmaxChi2),
   fCutMaxChi2TPCConstrainedVsGlobal(copy.fCutMaxChi2TPCConstrainedVsGlobal),
   fTrackMaxChi2(copy.fTrackMaxChi2),
   fIsUseCrossedRowsCut(copy.fIsUseCrossedRowsCut),
   fTPCminNCrossedRows(copy.fTPCminNCrossedRows),
   fTPCminCrossedRowsOverFindableCls(copy.fTPCminCrossedRowsOverFindableCls),
   fIsUseLengthActiveVolumeTPCCut(copy.fIsUseLengthActiveVolumeTPCCut),
   fCutMinLengthActiveVolumeTPC(copy.fCutMinLengthActiveVolumeTPC),
   fAODTestFilterBit(copy.fAODTestFilterBit),
   fCheckOnlyFilterBit(copy.fCheckOnlyFilterBit),
   fESDtrackCuts(copy.fESDtrackCuts)
{
//
// Copy constructor.
// Just copy all data member values.
//

   SetPtRange(copy.fPt[0], copy.fPt[1]);
   SetEtaRange(copy.fEta[0], copy.fEta[1]);
}

//_________________________________________________________________________________________________
AliRsnCutTrackQuality &AliRsnCutTrackQuality::operator=(const AliRsnCutTrackQuality &copy)
{
//
// Assignment operator.
// Just copy all data member values.
//

   if (this == &copy)
      return *this;

   fFlagsOn = copy.fFlagsOn;
   fFlagsOff = copy.fFlagsOff;
   fRejectKinkDaughters = copy.fRejectKinkDaughters;
   fDCARmaxfixed = copy.fDCARmaxfixed;
   fDCARminfixed = copy.fDCARminfixed;
   fDCARptFormula = copy.fDCARptFormula;
   fDCARptFormulaMin = copy.fDCARptFormulaMin;
   fDCARmax = copy.fDCARmax;
   fDCARmin = copy.fDCARmin;
   fDCAZfixed = copy.fDCAZfixed;
   fDCAZptFormula = copy.fDCAZptFormula;
   fDCAZmax = copy.fDCAZmax;
   fSPDminNClusters = copy.fSPDminNClusters;
   fITSminNClusters = copy.fITSminNClusters;
   fITSmaxChi2 = copy.fITSmaxChi2;
   fTPCminNClusters = copy.fTPCminNClusters;
   fTPCmaxChi2 = copy.fTPCmaxChi2;
   fCutMaxChi2TPCConstrainedVsGlobal = copy.fCutMaxChi2TPCConstrainedVsGlobal;
   fTrackMaxChi2 = copy.fTrackMaxChi2;
   fIsUseCrossedRowsCut=copy.fIsUseCrossedRowsCut;
   fTPCminNCrossedRows = copy.fTPCminNCrossedRows;
   fTPCminCrossedRowsOverFindableCls = copy.fTPCminCrossedRowsOverFindableCls;
   fIsUseLengthActiveVolumeTPCCut=copy.fIsUseLengthActiveVolumeTPCCut;
   fCutMinLengthActiveVolumeTPC = copy.fCutMinLengthActiveVolumeTPC;
   
   fAODTestFilterBit = copy.fAODTestFilterBit;
   fCheckOnlyFilterBit = copy.fCheckOnlyFilterBit;
   fESDtrackCuts = copy.fESDtrackCuts;
   SetPtRange(copy.fPt[0], copy.fPt[1]);
   SetEtaRange(copy.fEta[0], copy.fEta[1]);

   return (*this);
}

//_________________________________________________________________________________________________
void AliRsnCutTrackQuality::DisableAll()
{
//
// Disable all cuts
//

   fFlagsOn = 0x0;
   fFlagsOff = 0x0;
   fRejectKinkDaughters = kFALSE;
   fDCARmaxfixed = kTRUE;
   fDCARminfixed = kTRUE;
   fDCARptFormula = "";
   fDCARptFormulaMin = "";
   fDCARmax = 1E20;
   fDCARmin = 0;
   fDCAZfixed = kTRUE;
   fDCAZptFormula = "";
   fDCAZmax = 1E20;
   fSPDminNClusters = 0;
   fITSminNClusters = 0;
   fITSmaxChi2 = 1E20;
   fTPCminNClusters = 0;
   fTPCmaxChi2 = 1E20;
   fAODTestFilterBit = -1;
   fCutMaxChi2TPCConstrainedVsGlobal = 1E20;
   fTrackMaxChi2 = 1E20;
   fIsUseCrossedRowsCut = 0;
   fTPCminNCrossedRows = 0;
   fTPCminCrossedRowsOverFindableCls = 0;
   fIsUseLengthActiveVolumeTPCCut = 0;
   fCutMinLengthActiveVolumeTPC = 0.0;
 
   if (fESDtrackCuts) {
      const char *cutsName = fESDtrackCuts->GetName();
      const char *cutsTitle = fESDtrackCuts->GetTitle();
      delete fESDtrackCuts;
      fESDtrackCuts = new AliESDtrackCuts(cutsName,cutsTitle);
   }
   SetPtRange(0.0, 1E20);
   SetEtaRange(-1E20, 1E20);
}

//_________________________________________________________________________________________________
void AliRsnCutTrackQuality::SetPtRange(Double_t a, Double_t b)
{
  //Set Pt range cut
  fPt[0] = TMath::Min(a, b); 
  fPt[1] = TMath::Max(a, b);
  if (fESDtrackCuts) fESDtrackCuts->SetPtRange(fPt[0], fPt[1]);
  return;
}

//_________________________________________________________________________________________________
void AliRsnCutTrackQuality::SetEtaRange(Double_t a, Double_t b)   
{
  //Set Pt range cut
  fEta[0] = TMath::Min(a, b);
  fEta[1] = TMath::Max(a, b);
  if (fESDtrackCuts) fESDtrackCuts->SetEtaRange(fEta[0], fEta[1]);
  return;
}

//_________________________________________________________________________________________________
Bool_t AliRsnCutTrackQuality::IsSelected(TObject *object)
{
//
// Cut checker.
// Checks the type of object being evaluated
// and then calls the appropriate sub-function (for ESD or AOD)
//

   // coherence check
   if (!TargetOK(object)) return kFALSE;

   // status is checked in the same way for all tracks, using AliVTrack
   // as a convention, if a the collection of 'on' flags is '0x0', it
   // is assumed that no flags are required, and this check is skipped;
   // for the collection of 'off' flags this is not needed
   AliVTrack *vtrack = fDaughter->Ref2Vtrack();
   if (!vtrack) {
      AliDebug(AliLog::kDebug + 2, "This object is not either an ESD nor AOD track");
      return kFALSE;
   }
   ULong_t status   = (ULong_t)vtrack->GetStatus();
   ULong_t checkOn  = status & fFlagsOn;
   ULong_t checkOff = status & fFlagsOff;
   if (fFlagsOn != 0x0 && checkOn != fFlagsOn) {
      AliDebug(AliLog::kDebug + 2, Form("Failed flag check: required  %s", Binary(fFlagsOn)));
      AliDebug(AliLog::kDebug + 2, Form("                   track has %s", Binary(status  )));
      return kFALSE;
   }
   if (checkOff != 0) {
      AliDebug(AliLog::kDebug + 2, Form("Failed flag check: forbidden %s", Binary(fFlagsOff)));
      AliDebug(AliLog::kDebug + 2, Form("                   track has %s", Binary(status  )));
      return kFALSE;
   }
   AliDebug(AliLog::kDebug + 3, Form("Flag check OK: required  %s", Binary(fFlagsOn)));
   AliDebug(AliLog::kDebug + 3, Form("               forbidden %s", Binary(fFlagsOff)));
   AliDebug(AliLog::kDebug + 3, Form("               track has %s", Binary(status  )));

   // retrieve real object type
   AliESDtrack *esdTrack = fDaughter->Ref2ESDtrack();
   AliAODTrack *aodTrack = fDaughter->Ref2AODtrack();
   if (esdTrack) {
      AliDebug(AliLog::kDebug + 2, "Checking an ESD track");
      if (fESDtrackCuts)
         return fESDtrackCuts->IsSelected(esdTrack);
      else
         return CheckESD(esdTrack);
   } else if (aodTrack) {
      AliDebug(AliLog::kDebug + 2, "Checking an AOD track");
      return CheckAOD(aodTrack);
   } else {
      AliDebug(AliLog::kDebug + 2, Form("This object is not either an ESD nor AOD track, it is an %s", fDaughter->GetRef()->ClassName()));
      return kFALSE;
   }
}

//_________________________________________________________________________________________________
Bool_t AliRsnCutTrackQuality::CheckESD(AliESDtrack *track)
{
//
// Check an ESD track.
// This is done using the default track checker for ESD.
// It is declared static, not to recreate it every time.
//
  //static AliESDtrackCuts cuts;
  AliESDtrackCuts cuts;

   // general acceptance/pt cuts
   cuts.SetPtRange(fPt[0], fPt[1]);
   cuts.SetEtaRange(fEta[0], fEta[1]);

   // transverse DCA cuts
   if (fDCARmaxfixed)
      cuts.SetMaxDCAToVertexXY(fDCARmax);
   else
      cuts.SetMaxDCAToVertexXYPtDep(fDCARptFormula.Data());
      
   if (fDCARminfixed)
      cuts.SetMinDCAToVertexXY(fDCARmin);
   else
      cuts.SetMinDCAToVertexXYPtDep(fDCARptFormulaMin.Data());

   // longitudinal DCA cuts
   if (fDCAZfixed)
      cuts.SetMaxDCAToVertexZ(fDCAZmax);
   else
      cuts.SetMaxDCAToVertexZPtDep(fDCAZptFormula.Data());

   // these options are always disabled in current version
   cuts.SetDCAToVertex2D(kFALSE);
   cuts.SetRequireSigmaToVertex(kFALSE);

   // TPC related cuts for TPC+ITS tracks
   if (fIsUseCrossedRowsCut) {
     cuts.SetMinNCrossedRowsTPC(fTPCminNCrossedRows);
     cuts.SetMinRatioCrossedRowsOverFindableClustersTPC(fTPCminCrossedRowsOverFindableCls);
   } else {
     cuts.SetMinNClustersTPC(fTPCminNClusters);
   }
   cuts.SetMaxChi2PerClusterTPC(fTPCmaxChi2);
   cuts.SetAcceptKinkDaughters(!fRejectKinkDaughters);
   cuts.SetMaxChi2TPCConstrainedGlobal(fCutMaxChi2TPCConstrainedVsGlobal);

   if (fIsUseLengthActiveVolumeTPCCut)
     cuts.SetMinLengthActiveVolumeTPC(fCutMinLengthActiveVolumeTPC);

   // ITS related cuts for TPC+ITS tracks
   if (fSPDminNClusters > 0)
      cuts.SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
   cuts.SetMaxChi2PerClusterITS(fITSmaxChi2);

   // now that all is initialized, do the check
   if (!track) {
     AliError("Invalid track object. Rejected.");
     return kFALSE;
   }
   return cuts.IsSelected(track);
}

//_________________________________________________________________________________________________
Bool_t AliRsnCutTrackQuality::CheckAOD(AliAODTrack *track)
{
//
// Check an AOD track.
// This is done doing directly all checks, since there is not
// an equivalend checker for AOD tracks
//

   // if a test bit is used, check it and skip the following
   if (fAODTestFilterBit >= 0) {
      UInt_t bit = 1 << fAODTestFilterBit;
      AliDebugClass(2, Form("Required a test filter bit for AOD check: %u (result: %s)", bit, (track->TestFilterBit(bit) ? "accept" : "reject")));
      if (!track->TestFilterBit(bit))
         return kFALSE;
      else {
         if (track->Pt() < fPt[0] || track->Pt() > fPt[1]) return kFALSE;
         if (track->Eta() < fEta[0] || track->Eta() > fEta[1]) return kFALSE;
         if (fCheckOnlyFilterBit) return kTRUE;
      }
   }

   // try to retrieve the reference AOD event
   AliAODEvent *aodEvent = 0x0;
   if (fEvent) aodEvent = fEvent->GetRefAOD();
   if (!aodEvent) {
      AliError("AOD reference event is not initialized!");
      return kFALSE;
   }

   // step #0: check SPD and ITS clusters
   Int_t nSPD = 0;
   nSPD  = TESTBIT(track->GetITSClusterMap(), 0);
   nSPD += TESTBIT(track->GetITSClusterMap(), 1);
   if (nSPD < fSPDminNClusters) {
      AliDebug(AliLog::kDebug + 2, "Not enough SPD clusters in this track. Rejected");
      return kFALSE;
   }


   //step #1: check number of clusters 
   if ((!fIsUseCrossedRowsCut) && (track->GetTPCNcls() < fTPCminNClusters)) {
      AliDebug(AliLog::kDebug + 2, "Too few TPC clusters. Rejected");
      return kFALSE;
   }
 
   if (track->GetITSNcls() < fITSminNClusters) {
      AliDebug(AliLog::kDebug + 2, "Too few ITS clusters. Rejected");
      return kFALSE;
   }

   //check track chi square
   if (track->Chi2perNDF() > fTrackMaxChi2) {
      AliDebug(AliLog::kDebug + 2, "Bad chi2. Rejected");
      return kFALSE;
   }

   //step #2a: check number of crossed rows in TPC
   if (fIsUseCrossedRowsCut) {
     Float_t nCrossedRowsTPC = track->GetTPCNCrossedRows();
     if (nCrossedRowsTPC < fTPCminNCrossedRows) {
       AliDebug(AliLog::kDebug + 2, "Too few TPC crossed rows. Rejected");
       return kFALSE;
     }
     if (track->GetTPCNclsF()>0) {
       Float_t ratioCrossedRowsOverFindableClustersTPC = nCrossedRowsTPC / track->GetTPCNclsF();
       if (ratioCrossedRowsOverFindableClustersTPC < fTPCminCrossedRowsOverFindableCls){
	 AliDebug(AliLog::kDebug + 2, "Too few TPC crossed rows/findable clusters. Rejected");
	 return kFALSE;
       }
     } else {
       AliDebug(AliLog::kDebug + 2, "Negative value for TPC crossed rows/findable clusters. Rejected");
       return kFALSE;
     }
   }
   //step #2b: check on track length in active volume of TPC implemented only for ESD tracks
   //if (fIsUseLengthActiveVolumeTPCCut) { // not yet implemented in AODs}
 
   //step #3: reject kink daughters
   AliAODVertex *vertex = track->GetProdVertex();
   if (vertex && fRejectKinkDaughters) {
      if (vertex->GetType() == AliAODVertex::kKink) {
         AliDebug(AliLog::kDebug + 2, "Kink daughter. Rejected");
         return kFALSE;
      }
   }

   // step #4: DCA cut (transverse)
   // --> reject all tracks not ITS refitted
   Double_t b[2], cov[3];
   vertex = aodEvent->GetPrimaryVertex();
   if (!vertex) {
      AliDebug(AliLog::kDebug + 2, "NULL vertex");
      return kFALSE;
   }
   if ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) {
      AliDebug(AliLog::kDebug + 2, "Not ITS refitted");
      return kFALSE;
   }
   if (!track->PropagateToDCA(vertex, aodEvent->GetMagneticField(), kVeryBig, b, cov)) {
      AliDebug(AliLog::kDebug + 2, "Failed propagation to vertex");
      return kFALSE;
   }
   // if the DCA cut is not fixed, compute current value
   if (!fDCARmaxfixed) {
      TString str(fDCARptFormula);
      str.ReplaceAll("pt", "x");
      TFormula dcaXY(Form("%s_dcaXY", GetName()), str.Data());
      fDCARmax = dcaXY.Eval(track->Pt());
   }
   if (!fDCARminfixed) {   
      TString str2(fDCARptFormulaMin);
      str2.ReplaceAll("pt", "x");
      TFormula dcaXY_2(Form("%s_dcaXY_2", GetName()), str2.Data());
      fDCARmin = dcaXY_2.Eval(track->Pt());
   }
   // check the cut
   if (TMath::Abs(b[0]) > fDCARmax) {
      AliDebug(AliLog::kDebug + 2, "Too large transverse DCA");
      return kFALSE;
   }
   
   if (TMath::Abs(b[0]) < fDCARmin) {
      AliDebug(AliLog::kDebug + 2, "Too short transverse DCA");
      return kFALSE;
   }

   // step #5: DCA cut (longitudinal)
   // the DCA has already been computed above
   // if the DCA cut is not fixed, compute current value
   if (!fDCAZfixed) {
      TString str(fDCAZptFormula);
      str.ReplaceAll("pt", "x");
      TFormula dcaZ(Form("%s_dcaXY", GetName()), str.Data());
      fDCAZmax = dcaZ.Eval(track->Pt());
   }
   // check the cut
   if (TMath::Abs(b[1]) > fDCAZmax) {
      AliDebug(AliLog::kDebug + 2, "Too large longitudinal DCA");
      return kFALSE;
   }

   // step #6: check eta/pt range
   if (track->Eta() < fEta[0] || track->Eta() > fEta[1]) {
      AliDebug(AliLog::kDebug + 2, "Outside ETA acceptance");
      return kFALSE;
   }
   if (track->Pt() < fPt[0] || track->Pt() > fPt[1]) {
      AliDebug(AliLog::kDebug + 2, "Outside PT acceptance");
      return kFALSE;
   }

   // if we are here, all cuts were passed and no exit point was got
   AliDebug(AliLog::kDebug + 2, "============================= ACCEPTED TRACK =====================================================");
   return kTRUE;
}

//_________________________________________________________________________________________________
void AliRsnCutTrackQuality::Print(const Option_t *) const
{
//
// Print information on this cut
//

   AliInfo(Form("Cut name                : %s", GetName()));
   AliInfo(Form("Required flags (off, on): %lx %lx", fFlagsOn, fFlagsOff));
   AliInfo(Form("Ranges in eta, pt       : %.2f - %.2f, %.2f - %.2f", fEta[0], fEta[1], fPt[0], fPt[1]));
   AliInfo(Form("Kink daughters are      : %s", (fRejectKinkDaughters ? "rejected" : "accepted")));
   AliInfo(Form("TPC requirements (clusters)       : min. cluster = %i, max chi2 = %f", fTPCminNClusters, fTPCmaxChi2));
   AliInfo(Form("TPC requirements (crossed rows)   : min. crossed rows = %f, min. crossed rows/findable clusters = %f", fTPCminNCrossedRows, fTPCminCrossedRowsOverFindableCls));
   AliInfo(Form("TPC requirements (track length)   : min. track length in active volume TPC = %f", fCutMinLengthActiveVolumeTPC));

   AliInfo(Form("ITS requirements        : min. cluster = %d (all), %d (SPD), max chi2 = %f", fITSminNClusters, fSPDminNClusters, fITSmaxChi2));

   if (fDCARmaxfixed) {
      AliInfo(Form("Max DCA r cut               : fixed to %f cm", fDCARmax));
   } else {
      AliInfo(Form("Max DCA r cut formula       : %s", fDCARptFormula.Data()));
   }
   
   if (fDCARminfixed) {
      AliInfo(Form("Min DCA r cut               : fixed to %f cm", fDCARmin));
   } else {
      AliInfo(Form("Min DCA r cut formula       : %s", fDCARptFormulaMin.Data()));
   }

   if (fDCAZfixed) {
      AliInfo(Form("DCA z cut               : fixed to %f cm", fDCAZmax));
   } else {
      AliInfo(Form("DCA z cut formula       : %s", fDCAZptFormula.Data()));
   }

   AliInfo(Form("fAODTestFilterBit       : filter bit %i",fAODTestFilterBit));
   AliInfo(Form("fCheckOnlyFilterBit     : %i",((int) fCheckOnlyFilterBit)));
}
//__________________________________________________________________________________________________
void AliRsnCutTrackQuality::SetDefaults2010(Bool_t useTPCCrossedRows, Bool_t useDefaultKinematicCuts)
{
//
// Default settings for cuts used in 2010
//
  
  fIsUseCrossedRowsCut=useTPCCrossedRows;
  fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE, fIsUseCrossedRowsCut);
  if (useDefaultKinematicCuts) {
    SetPtRange(0.15, 1E+20);
    SetEtaRange(-0.8, 0.8);
  } 
  SetAODTestFilterBit(5);
  return;
}

//__________________________________________________________________________________________________
void AliRsnCutTrackQuality::SetDefaultsHighPt2011(Bool_t useTPCCrossedRows, Bool_t useDefaultKinematicCuts)
{
//
// Default settings for cuts used in 2011 (for high-pT)
//
  fIsUseCrossedRowsCut=useTPCCrossedRows;
  fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE, fIsUseCrossedRowsCut);
  fESDtrackCuts->SetMinNCrossedRowsTPC(120); //default is min 70 crossed rows -> use 120 to go to higher pt
  fESDtrackCuts->SetMaxFractionSharedTPCClusters(0.4);//default is not set --> use to go to higher pt
  if (useDefaultKinematicCuts) {
    SetPtRange(0.15, 1E+20);
    SetEtaRange(-0.8, 0.8);
  } 
  SetAODTestFilterBit(10);
  return;
}

//__________________________________________________________________________________________________
void AliRsnCutTrackQuality::SetDefaults2011(Bool_t useTPCCrossedRows, Bool_t useDefaultKinematicCuts)
{
//
// Default std cuts 2011 with crossed rows (=70)
//
  fIsUseCrossedRowsCut=useTPCCrossedRows;
  fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE,fIsUseCrossedRowsCut);
  if (useDefaultKinematicCuts) {
    SetPtRange(0.15, 1E+20);
    SetEtaRange(-0.8, 0.8);
  } 
  SetAODTestFilterBit(5);
  return;
}
//__________________________________________________________________________________________________
const char *AliRsnCutTrackQuality::Binary(UInt_t number)
{
//
// Convert an integer in binary
//

   static char b[50];
   b[0] = '\0';

   UInt_t z;
   for (z = 512; z > 0; z >>= 1)
      strncat(b, ((number & z) == z) ? "1" : "0", 1);

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