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.                  *
**************************************************************************/
//
// Track filter class 
// Apply cut steps to all tracks in one event and returns a list of
// filtered tracks
//
// Author:
//   Markus Fasel <M.Fasel@gsi.de>
//
#include <TMath.h>
#include <TString.h>

#include "AliAnalysisCuts.h"
#include "AliCFContainer.h"
#include "AliCFParticleGenCuts.h"
#include "AliCFTrackKineCuts.h"
#include "AliCFTrackIsPrimaryCuts.h"
#include "AliCFTrackQualityCuts.h"
#include "AliMCEvent.h"
#include "AliVEvent.h"
#include "AliVTrack.h"
#include "AliVParticle.h"

#include "AliHFEcontainer.h"
#include "AliHFEcutStep.h"
#include "AliHFEextraCuts.h"
#include "AliHFEtrackFilter.h"
#include "AliHFEtools.h"

ClassImp(AliHFEtrackFilter)

//__________________________________________________________________
AliHFEtrackFilter::AliHFEtrackFilter() :
  TNamed(),
  fFilteredTracks(NULL),
  fCutSteps(NULL),
  fEfficiencyContainers(NULL),
  fMC(NULL),
  fMCsignal(NULL),
  fPtBins(0),
  fEtaBins(0),
  fPhiBins(0),
  fPtBinning(NULL),
  fEtaBinning(NULL),
  fPhiBinning(NULL)
{
  //
  // Dummy Constructor
  //
}

//__________________________________________________________________
AliHFEtrackFilter::AliHFEtrackFilter(const Char_t *name) :
  TNamed(name, ""),
  fFilteredTracks(NULL),
  fCutSteps(NULL),
  fEfficiencyContainers(NULL),
  fMC(NULL),
  fMCsignal(NULL),
  fPtBins(0),
  fEtaBins(0),
  fPhiBins(0),
  fPtBinning(NULL),
  fEtaBinning(NULL),
  fPhiBinning(NULL)
{
  //
  // Constructor
  //
  fCutSteps = new TObjArray;
  fFilteredTracks = new TObjArray;
  fEfficiencyContainers = new TObjArray(4);
}

//__________________________________________________________________
AliHFEtrackFilter::AliHFEtrackFilter(const AliHFEtrackFilter &ref):
  TNamed(ref),
  fFilteredTracks(NULL),
  fCutSteps(NULL),
  fEfficiencyContainers(NULL),
  fMC(NULL),
  fMCsignal(NULL),
  fPtBins(0),
  fEtaBins(0),
  fPhiBins(0),
  fPtBinning(NULL),
  fEtaBinning(NULL),
  fPhiBinning(NULL)
{
  //
  // Copy constructor
  //
  ref.Copy(*this);
}

//__________________________________________________________________
AliHFEtrackFilter &AliHFEtrackFilter::operator=(const AliHFEtrackFilter &o){
  //
  // Assignment operator
  //
  if(this != &o){
    o.Copy(*this);
  }
  return *this;
}

//__________________________________________________________________
AliHFEtrackFilter::~AliHFEtrackFilter(){
  //
  // Destructor
  //

  // remove correction framework content
  if(fPtBinning) delete fPtBinning;
  if(fEtaBinning) delete fEtaBinning;
  if(fPhiBinning) delete fPhiBinning;
  if(TestBit(kOwnCFContainers)) 
    fEfficiencyContainers->Delete();
  delete fEfficiencyContainers;
  // remove default content
  delete fFilteredTracks;
  delete fCutSteps;
}

//__________________________________________________________________
void AliHFEtrackFilter::Copy(TObject &o) const{
  //
  // Copy content into the object o
  //
  TNamed::Copy(o);
  AliHFEtrackFilter &target = dynamic_cast<AliHFEtrackFilter &>(o);

  // Make copy
  target.fFilteredTracks = dynamic_cast<TObjArray *>(fFilteredTracks->Clone());
  target.fCutSteps = dynamic_cast<TObjArray *>(fCutSteps->Clone());
  target.fEfficiencyContainers = dynamic_cast<TObjArray *>(fEfficiencyContainers->Clone());
  target.fMC = fMC;
  target.fMCsignal = dynamic_cast<AliHFEcutStep *>(fMCsignal->Clone());
  
  target.fPtBins = fPtBins;
  target.fEtaBins = fEtaBins;
  target.fPhiBins = fPhiBins;
  target.fPtBinning = new Double_t[fPtBins];
  memcpy(target.fPtBinning, fPtBinning, sizeof(Double_t) * fPtBins);
  target.fEtaBinning = new Double_t[fEtaBins];
  memcpy(target.fEtaBinning, fEtaBinning, sizeof(Double_t) * fEtaBins);
  target.fPhiBinning = new Double_t[fPhiBins];
  memcpy(target.fPhiBinning, fPhiBinning, sizeof(Double_t) * fPhiBins);
}

//__________________________________________________________________
void AliHFEtrackFilter::InitCF(){
  //
  // Initialize correction framework container
  // No HFE container given
  // Only for testing purpose
  //
   const Char_t *cnames[4] = {"_container", "_container_signal", "_container_MC", "_container_signalMC"};
  const Char_t *ctitlesAppends[4] = {"(All Rec)", "(All Signals)", "(All Rec (MC))", "(All Signals(MC))"};

  // Create the binning if not done from outside
  if(!fPtBins){
    fPtBins = 40;
    fPtBinning = AliHFEtools::MakeLogarithmicBinning(fPtBins, 0.1, 10); 
  }
  if(!fEtaBins){
    fEtaBins = 8;
    fEtaBinning = AliHFEtools::MakeLinearBinning(fEtaBins, -0.9, 0.9); 
  }
  if(!fPhiBins){
    fPhiBins = 18;
    fPhiBinning = AliHFEtools::MakeLinearBinning(fPhiBins, 0, 2*TMath::Pi());
  }
  Double_t chargeBins[3] = {-1.1, 0., 1.1};
  Int_t nStep = fCutSteps->GetEntriesFast()+1;
  Int_t nBins[4] = {fPtBins, fEtaBins, fPhiBins + 2};
  AliCFContainer *ctmp = NULL;
  for(Int_t icont = 0; icont < 4; icont++){
    TString containername =  GetName() + TString(cnames[icont]);
    TString containertitle = TString("Container for filter ") + GetName() + TString(ctitlesAppends[icont]);
    ctmp = new AliCFContainer(containername.Data(), containertitle.Data(), nStep, 4, nBins);
    SetBit(kOwnCFContainers, kTRUE);

    // Set the binning
    ctmp->SetBinLimits(0, fPtBinning);
    ctmp->SetBinLimits(1, fEtaBinning);
    ctmp->SetBinLimits(2, fPhiBinning);
    ctmp->SetBinLimits(3, chargeBins);

    // Label variable names
    ctmp->SetVarTitle(0, "pt");
    ctmp->SetVarTitle(1, "eta");
    ctmp->SetVarTitle(2, "phi");
    ctmp->SetVarTitle(3, "charge");

    // Label step name
    ctmp->SetStepTitle(0, "No Cuts");
    AliHFEcutStep *cutStep = NULL;
    for(Int_t istep = 0; istep < fCutSteps->GetEntriesFast(); istep++){
      cutStep = dynamic_cast<AliHFEcutStep *>(fCutSteps->UncheckedAt(istep)); 
      if(cutStep) ctmp->SetStepTitle(istep + 1, cutStep->GetName());
    }
    fEfficiencyContainers->AddAt(ctmp, 0);
  }
  OwnContainers();
}

//__________________________________________________________________
void AliHFEtrackFilter::InitCF(AliHFEcontainer *cont){
  //
  // Initialize Correction Framework container 
  // Use the given HFE container
  // HFE standard way to use the correction Framework
  //
  
  const Char_t *cnames[4] = {"_container", "_container_signal", "_container_MC", "_container_signalMC"};
  const Char_t *ctitlesAppends[4] = {"(All Rec)", "(All Signals)", "(All Rec (MC))", "(All Signals(MC))"};
  Int_t nStep = fCutSteps->GetEntriesFast()+1;
  AliCFContainer *ctmp = NULL;
  for(Int_t icont = 0; icont < 4; icont++){
    TString contname = GetName() + TString(cnames[icont]); 
    TString contTitle = TString("Container for filter ") + GetName() + TString(ctitlesAppends[icont]);
    //printf("Adding container %s: %s\n", contname.Data(), contTitle.Data());
    cont->CreateContainer(contname.Data(), contTitle.Data(), nStep);
    fEfficiencyContainers->AddAt((ctmp = cont->GetCFContainer(contname.Data())), icont);
    
    // Label step name
    ctmp->SetStepTitle(0, "No Cuts");
    AliHFEcutStep *cutStep = NULL;
    for(Int_t istep = 0; istep < fCutSteps->GetEntriesFast(); istep++){
      cutStep = dynamic_cast<AliHFEcutStep *>(fCutSteps->UncheckedAt(istep)); 
      if(cutStep) ctmp->SetStepTitle(istep + 1, cutStep->GetName());
    }
  }
  ReleaseContainers();
}

//__________________________________________________________________
void AliHFEtrackFilter::FilterTracks(const AliVEvent * const event){
  //
  // Perform track filtering
  // Check each cut step one by one and select tracks which pass
  // all cuts. If the correction framework is initialized, a correction#
  // framework container will be filled for each cut step.
  //
  AliHFEcutStep *cutStep = NULL;
  AliVTrack *track = NULL;
  AliVParticle *mctrack = NULL;
  Double_t cont[4] = {0., 0., 0., 0.}, contMC[4] = {0., 0., 0., 0.};
  Bool_t goodTrack = kTRUE, signal = kFALSE;
  Int_t nStep = fCutSteps->GetEntriesFast();
  AliCFContainer *call = dynamic_cast<AliCFContainer *>(fEfficiencyContainers->At(0));
  AliCFContainer *cSignal = dynamic_cast<AliCFContainer *>(fEfficiencyContainers->At(1));
  AliCFContainer *callMC = dynamic_cast<AliCFContainer *>(fEfficiencyContainers->At(2));
  AliCFContainer *cSignalMC = dynamic_cast<AliCFContainer *>(fEfficiencyContainers->At(3));
  for(Int_t itrack = 0; itrack < event->GetNumberOfTracks(); itrack++){
    signal = kFALSE;
    track = static_cast<AliVTrack *>(event->GetTrack(itrack));
    // check Monte-Carlo Information if available 
    if(fMC){
      mctrack = fMC->GetTrack(TMath::Abs(track->GetLabel()));
      if(mctrack){
        //AliMCParticle *mother = dynamic_cast<AliMCParticle *>(fMC->GetTrack(mctrack->Particle()->GetFirstMother()));
        //AliInfo(Form("Label %d, Mother %d", track->GetLabel(), mother->Particle()->GetPdgCode()));
        contMC[0] = mctrack->Pt();
        contMC[1] = mctrack->Eta();
        contMC[2] = mctrack->Phi();
        contMC[3] = mctrack->Charge();
        if(fMCsignal->IsSelected(mctrack)) signal = kTRUE;
        //if(TMath::Abs(mother->Particle()->GetPdgCode()) != 443) signal = kFALSE;
        //AliInfo(Form("Signal? %s", signal ? "Yes": "No"));
      }
    }

    // Fill Array without cut
    cont[0] = track->Pt();
    cont[1] = track->Eta();
    cont[2] = track->Phi();
    cont[3] = track->Charge();
    if(call) call->Fill(cont, 0);
    if(callMC) callMC->Fill(contMC, 0);
    if(signal){
      if(cSignal) cSignal->Fill(cont, 0);
      if(cSignalMC) cSignalMC->Fill(contMC, 0);
    }
    // cut the track
    goodTrack = kTRUE;
    for(Int_t icut = 0; icut < nStep; icut++){
      cutStep = dynamic_cast<AliHFEcutStep *>(fCutSteps->UncheckedAt(icut));
      if(cutStep && (!cutStep->IsSelected(track))){
        // track cut away
        goodTrack = kFALSE;
        break;
      }

      // Track survived cut step: Fill container
      if(call) call->Fill(cont, icut + 1);
      if(callMC) callMC->Fill(contMC, icut + 1);
      if(signal){
        if(cSignal) cSignal->Fill(cont, icut + 1);
        if(cSignalMC) cSignalMC->Fill(contMC, icut + 1);
      }
    }

    // Append track to the list of filtered tracks
    if(goodTrack) fFilteredTracks->Add(track);
  }
}

//__________________________________________________________________
void AliHFEtrackFilter::GenerateCutSteps(){
  //
  // Make the default cuts
  //
  MakeCutStepRecKineITSTPC();
  MakeCutStepPrimary();
  MakeCutStepHFEITS();
  MakeCutStepHFETRD();

  MakeMCSignalCuts();
}

//__________________________________________________________________
void AliHFEtrackFilter::AddCutStep(AliHFEcutStep *step){
  //
  // Add new cut step to the filter
  //
  if(!fCutSteps->FindObject(step->GetName())) fCutSteps->Add(step);
}

//__________________________________________________________________
AliHFEcutStep *AliHFEtrackFilter::GetCutStep(Int_t istep){
  //
  // Getter for single cut step
  //
  return dynamic_cast<AliHFEcutStep *>(fCutSteps->At(istep));
}

//__________________________________________________________________
AliHFEcutStep *AliHFEtrackFilter::GetCutStep(const Char_t *name){
  //
  // Getter for single cut step (by step name)
  //
  return dynamic_cast<AliHFEcutStep *>(fCutSteps->FindObject(name));
}

//__________________________________________________________________
void AliHFEtrackFilter::Flush(){
  //
  // Empty track container
  //
  fFilteredTracks->Clear();
}

//__________________________________________________________________
void AliHFEtrackFilter::SetPtBins(Int_t nBins, Double_t *binning){
  //
  // User defined pt binning
  //
  fPtBins = nBins;
  fPtBinning = new Double_t[fPtBins + 1];
  memcpy(fPtBinning, binning, sizeof(Double_t) * nBins);
}

//__________________________________________________________________
void AliHFEtrackFilter::SetEtaBins(Int_t nBins, Double_t *binning){
  //
  // User defined eta binning
  //
  fEtaBins = nBins;
  fEtaBinning = new Double_t[fEtaBins + 1];
  memcpy(fEtaBinning, binning, sizeof(Double_t) * nBins);
}

//__________________________________________________________________
void AliHFEtrackFilter::SetPhiBins(Int_t nBins, Double_t *binning){
  //
  // User defined phi binning
  //
  fPhiBins = nBins;
  fPhiBinning = new Double_t[fPhiBins + 1];
  memcpy(fPhiBinning, binning, sizeof(Double_t) * nBins);
}

//__________________________________________________________________
AliHFEcutStep *AliHFEtrackFilter::MakeCutStepRecKineITSTPC(){
  //
  // Make the cut step for Rec Kine
  // Cut step is already included in the filter
  //
  AliHFEcutStep *fCutStep = new AliHFEcutStep("RecKineITSTPC");

  AliCFTrackQualityCuts *trackQuality = new AliCFTrackQualityCuts((Char_t *)"QualityRec", (Char_t *)"REC Track Quality Cuts");
  trackQuality->SetMinNClusterTPC(80);
  trackQuality->SetMaxChi2PerClusterTPC(3.5);
  trackQuality->SetStatus(AliVTrack::kTPCrefit | AliVTrack::kITSrefit);
  trackQuality->SetMaxCovDiagonalElements(2., 2., 0.5, 0.5, 2); 
  fCutStep->AddCut(trackQuality);

  AliHFEextraCuts *hfecuts = new AliHFEextraCuts("HFETPC","Extra cuts from the HFE group");
  hfecuts->SetClusterRatioTPC(0.6, AliHFEextraCuts::kFoundOverCR);
  fCutStep->AddCut(hfecuts);
  
  AliCFTrackKineCuts *kineCuts = new AliCFTrackKineCuts((Char_t *)"RecKine", (Char_t *)"REC Kine Cuts");
  kineCuts->SetPtRange(0.1, 20);
  kineCuts->SetEtaRange(-0.8, 0.8);
  fCutStep->AddCut(kineCuts); 

  AddCutStep(fCutStep);
  return fCutStep;
}

//__________________________________________________________________
AliHFEcutStep *AliHFEtrackFilter::MakeCutStepPrimary(){
  // 
  // Make cut on primaries
  // Cut step is already included in the filter
  //
  AliHFEcutStep *fCutStep = new AliHFEcutStep("Primary");

  AliCFTrackIsPrimaryCuts *primaryCut = new AliCFTrackIsPrimaryCuts((Char_t *)"PrimaryCuts", (Char_t *)"REC Primary Cuts");
  primaryCut->SetMaxDCAToVertexXY(0.5);
  primaryCut->SetMaxDCAToVertexZ(5.);
  primaryCut->SetAcceptKinkDaughters(kFALSE);
  fCutStep->AddCut(primaryCut);

  AddCutStep(fCutStep);
  return fCutStep;
}

//__________________________________________________________________
AliHFEcutStep *AliHFEtrackFilter::MakeCutStepHFEITS(){
  //
  // Add special ITS cuts
  // Cut step is already included in the filter
  //
  AliHFEcutStep *fCutStep = new AliHFEcutStep("HFEITS");

  AliHFEextraCuts *hfecuts = new AliHFEextraCuts((Char_t *)"HFEPixelsCuts",(Char_t *)"Extra cuts from the HFE group");
  hfecuts->SetRequireITSpixel(AliHFEextraCuts::kFirst);
  //hfecuts->SetCheckITSstatus(kTRUE);
  fCutStep->AddCut(hfecuts);

  AddCutStep(fCutStep);
  return fCutStep;
}

//__________________________________________________________________
AliHFEcutStep *AliHFEtrackFilter::MakeCutStepHFETRD(){
  //
  // Add special TRD cut
  // Cut step is already included in the filter
  //
  AliHFEcutStep *fCutStep = new AliHFEcutStep("HFETRD");

  AliHFEextraCuts *hfecuts = new AliHFEextraCuts("HFETRDCuts","Extra cuts from the HFE group");
  hfecuts->SetMinTrackletsTRD(0);
  fCutStep->AddCut(hfecuts);

  AddCutStep(fCutStep);
  return fCutStep;
}

//__________________________________________________________________
AliHFEcutStep *AliHFEtrackFilter::MakeMCSignalCuts(){
  //
  // Define MC Signal
  // Cut step is already included in the filter
  //
  fMCsignal = new AliHFEcutStep("MCSignal");
  AliCFParticleGenCuts *genCuts = new AliCFParticleGenCuts((Char_t *)"fCutsGenMC", (Char_t *)"Particle Generation Cuts");
  genCuts->SetRequireIsCharged();
  genCuts->SetRequireIsPrimary();
  genCuts->SetProdVtxRange2D();
  genCuts->SetProdVtxRangeX(0, 1);
  genCuts->SetProdVtxRangeY(0, 1);
  genCuts->SetRequirePdgCode(11, kTRUE);
  fMCsignal->AddCut(genCuts);
  
  AliCFTrackKineCuts *kineMCcuts = new AliCFTrackKineCuts((Char_t *)"fCutsKineMC",(Char_t *)"MC Kine Cuts");
  kineMCcuts->SetPtRange(0.1, 20.);
  kineMCcuts->SetEtaRange(-0.8, 0.8);
  fMCsignal->AddCut(kineMCcuts);

  return fMCsignal;
}

//__________________________________________________________________
void AliHFEtrackFilter::SetMC(AliMCEvent * const mc){
  //
  // Publish MC event to the single cut steps
  //
  fMC = mc;
  fMCsignal->SetMC(fMC);
  AliHFEcutStep *cs = NULL;
  for(Int_t icut = 0; icut < fCutSteps->GetEntriesFast(); icut++)
    if((cs = dynamic_cast<AliHFEcutStep *>(fCutSteps->UncheckedAt(icut)))) cs->SetMC(fMC);
}

//__________________________________________________________________
void AliHFEtrackFilter::SetRecEvent(const AliVEvent *rec){
  //
  // Publish MC event to the single cut steps
  //
  AliHFEcutStep *cs = NULL;
  for(Int_t icut = 0; icut < fCutSteps->GetEntriesFast(); icut++)
    if((cs = dynamic_cast<AliHFEcutStep *>(fCutSteps->UncheckedAt(icut)))) cs->SetRecEvent(rec);
}


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