ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2006, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

/////////////////////////////////////////////////////////////
// 
// Base class for AOD reconstructed light-flavour decays
// strongly based on AOD reconstructed heavy-flavour decay by
// A.Dainese, andrea.dainese@lnl.infn.it
// Author:  Ramona Lea (ramona.lea@cern.ch)
/////////////////////////////////////////////////////////////

#include <TDatabasePDG.h>
#include <TVector3.h>
#include <TRandom.h>
#include "AliAODRecoDecay.h"
#include "AliAODRecoDecayLF.h"
#include "AliAODEvent.h"
#include "AliVertexerTracks.h"
#include "AliExternalTrackParam.h"
#include "AliKFVertex.h"
#include "AliVVertex.h"
#include "AliESDVertex.h"

ClassImp(AliAODRecoDecayLF)

//--------------------------------------------------------------------------
AliAODRecoDecayLF::AliAODRecoDecayLF() :
  AliAODRecoDecay(),
  fOwnPrimaryVtx(0x0),
  fEventPrimaryVtx(),
  fListOfCuts(),
  fd0err(0x0), 
  fProngID(0x0),
  fSelectionMap(0)
{
  //
  // Default Constructor
  //
}
//--------------------------------------------------------------------------
AliAODRecoDecayLF::AliAODRecoDecayLF(AliAODVertex *vtx2,Int_t nprongs,Short_t charge,
				     Double_t *px,Double_t *py,Double_t *pz,
				     Double_t *d0,Double_t *d0err) :
  AliAODRecoDecay(vtx2,nprongs,charge,px,py,pz,d0),
  fOwnPrimaryVtx(0x0),
  fEventPrimaryVtx(),
  fListOfCuts(),
  fd0err(0x0),
  fProngID(0x0),
  fSelectionMap(0)
{
  //
  // Constructor with AliAODVertex for decay vertex
  //
  fd0err = new Double_t[GetNProngs()];
  for(Int_t i=0; i<GetNProngs(); i++) fd0err[i] = d0err[i];
}
//--------------------------------------------------------------------------
AliAODRecoDecayLF::AliAODRecoDecayLF(AliAODVertex *vtx2,Int_t nprongs,Short_t charge,
				     Double_t *d0,Double_t *d0err) :
  AliAODRecoDecay(vtx2,nprongs,charge,d0),
  fOwnPrimaryVtx(0x0),
  fEventPrimaryVtx(),
  fListOfCuts(),
  fd0err(0x0),
  fProngID(0x0),
  fSelectionMap(0)
{
  //
  // Constructor with AliAODVertex for decay vertex and without prongs momenta
  //
  fd0err = new Double_t[GetNProngs()];
  for(Int_t i=0; i<GetNProngs(); i++) fd0err[i] = d0err[i];
}
//--------------------------------------------------------------------------
AliAODRecoDecayLF::AliAODRecoDecayLF(Double_t vtx1[3],Double_t vtx2[3],
				     Int_t nprongs,Short_t charge,
				     Double_t *px,Double_t *py,Double_t *pz,
				     Double_t *d0) :
  AliAODRecoDecay(0x0,nprongs,charge,px,py,pz,d0),
  fOwnPrimaryVtx(0x0),
  fEventPrimaryVtx(),
  fListOfCuts(),
  fd0err(0x0),
  fProngID(0x0), 
  fSelectionMap(0)
{
  //
  // Constructor that can used for a "MC" object
  //

  fOwnPrimaryVtx = new AliAODVertex(vtx1);

  AliAODVertex *vtx = new AliAODVertex(vtx2);
  SetOwnSecondaryVtx(vtx);

}
//--------------------------------------------------------------------------
AliAODRecoDecayLF::AliAODRecoDecayLF(const AliAODRecoDecayLF &source) :
  AliAODRecoDecay(source),
  fOwnPrimaryVtx(0x0),
  fEventPrimaryVtx(source.fEventPrimaryVtx),
  fListOfCuts(source.fListOfCuts),
  fd0err(0x0),
  fProngID(0x0),
  fSelectionMap(source.fSelectionMap)
{
  //
  // Copy constructor
  //
  if(source.GetOwnPrimaryVtx()) fOwnPrimaryVtx = new AliAODVertex(*(source.GetOwnPrimaryVtx()));

  if(source.GetNProngs()>0) {
    fd0err = new Double_t[GetNProngs()];
    memcpy(fd0err,source.fd0err,GetNProngs()*sizeof(Double_t));
    if(source.fProngID) {
      fProngID = new UShort_t[GetNProngs()];
      memcpy(fProngID,source.fProngID,GetNProngs()*sizeof(UShort_t));
    }
  }
}
//--------------------------------------------------------------------------
AliAODRecoDecayLF &AliAODRecoDecayLF::operator=(const AliAODRecoDecayLF &source)
{
  //
  // assignment operator
  //
  if(&source == this) return *this;

  AliAODRecoDecay::operator=(source);

  fEventPrimaryVtx = source.fEventPrimaryVtx;
  fListOfCuts = source.fListOfCuts;
  fSelectionMap = source.fSelectionMap;

  if(source.GetOwnPrimaryVtx()) {
    delete fOwnPrimaryVtx;
    fOwnPrimaryVtx = new AliAODVertex(*(source.GetOwnPrimaryVtx()));
  }

  if(source.GetNProngs()>0) {
    if(source.fd0err) {
      delete [] fd0err;
      fd0err = new Double_t[GetNProngs()];
      memcpy(fd0err,source.fd0err,GetNProngs()*sizeof(Double_t));
    }
    if(source.fProngID) {
      delete [] fProngID;
      fProngID = new UShort_t[GetNProngs()];
      memcpy(fProngID,source.fProngID,GetNProngs()*sizeof(UShort_t));
    }
  }
  return *this;
}
//--------------------------------------------------------------------------
AliAODRecoDecayLF::~AliAODRecoDecayLF() {
  //  
  // Default Destructor
  //
  if(fOwnPrimaryVtx) delete fOwnPrimaryVtx;
  if(fd0err) delete [] fd0err;
  if(fProngID) delete [] fProngID;
}
//---------------------------------------------------------------------------
AliKFParticle *AliAODRecoDecayLF::ApplyVertexingKF(Int_t *iprongs,Int_t nprongs,Int_t *pdgs,Bool_t topoCostraint, Double_t bzkG, Double_t *mass) const {
  //
  // Applies the KF vertexer 
  // Int_t iprongs[nprongs] = indices of the prongs to be used from the vertexer
  // Int_t pdgs[nprongs] = pdgs assigned to the prongs, needed to define the AliKFParticle
  // Bool_t topoCostraint = if kTRUE, the topological constraint is applied
  // Double_t bzkG = magnetic field
  // Double_t mass[2] = {mass, sigma} for the mass constraint (if mass[0]>0 the constraint is applied).
  //

  AliKFParticle::SetField(bzkG);
  AliKFParticle *vertexKF=0;
  
  AliKFVertex copyKF;
  Int_t nt=0,ntcheck=0;

  Double_t pos[3]={0.,0.,0.};
  if(!fOwnPrimaryVtx) {
    printf("AliAODRecoDecayLF::ApplyVertexingKF(): cannot apply because primary vertex is not found\n");
    return vertexKF;
  }
  fOwnPrimaryVtx->GetXYZ(pos);
  Int_t contr=fOwnPrimaryVtx->GetNContributors();
  Double_t covmatrix[6]={0.,0.,0.,0.,0.,0.};
  fOwnPrimaryVtx->GetCovarianceMatrix(covmatrix);
  Double_t chi2=fOwnPrimaryVtx->GetChi2();
  AliESDVertex primaryVtx2(pos,covmatrix,chi2,contr,"Vertex");
 

  if(topoCostraint){
   copyKF=AliKFVertex(primaryVtx2);
   nt=primaryVtx2.GetNContributors();
   ntcheck=nt;
  }

  vertexKF = new AliKFParticle();
  for(Int_t i= 0;i<nprongs;i++){
    Int_t ipr=iprongs[i];
    AliAODTrack *aodTrack = (AliAODTrack*)GetDaughter(ipr);
    if(!aodTrack) {
      printf("AliAODRecoDecayLF::ApplyVertexingKF(): no daughters available\n");
      delete vertexKF; vertexKF=NULL;
      return vertexKF;
    }
    AliKFParticle daughterKF(*aodTrack,pdgs[i]);
    vertexKF->AddDaughter(daughterKF);
    
    if(topoCostraint && nt>0){
      //Int_t index=(Int_t)GetProngID(ipr);
      if(!aodTrack->GetUsedForPrimVtxFit()) continue;
      copyKF -= daughterKF;
      ntcheck--;
    }
  }
  
  if(topoCostraint){
    if(ntcheck>0) {
      copyKF += (*vertexKF);
      vertexKF->SetProductionVertex(copyKF);
    }
 }
  
  if(mass[0]>0.){
    vertexKF->SetMassConstraint(mass[0],mass[1]);
  }
  
  return vertexKF;
}
//---------------------------------------------------------------------------
AliAODVertex* AliAODRecoDecayLF::RemoveDaughtersFromPrimaryVtx(AliAODEvent *aod) {
  //
  // This method returns a primary vertex without the daughter tracks of the 
  // candidate and it recalculates the impact parameters and errors.
  // 
  // The output vertex is created with "new". The user has to 
  // set it to the candidate with SetOwnPrimaryVtx(), unset it at the end 
  // of processing with UnsetOwnPrimaryVtx() and delete it.
  // If a NULL pointer is returned, the removal failed (too few tracks left).
  //
  // For the moment, the primary vertex is recalculated from scratch without
  // the daughter tracks.
  //

  AliAODVertex *vtxAOD = aod->GetPrimaryVertex();
  if(!vtxAOD) return 0;
  TString title=vtxAOD->GetTitle();
  if(!title.Contains("VertexerTracks")) return 0;



  AliVertexerTracks *vertexer = new AliVertexerTracks(aod->GetMagneticField());

  Int_t ndg = GetNDaughters();

  vertexer->SetITSMode();
  vertexer->SetMinClusters(3);
  vertexer->SetConstraintOff();

  if(title.Contains("WithConstraint")) {
    Float_t diamondcovxy[3];
    aod->GetDiamondCovXY(diamondcovxy);
    Double_t pos[3]={aod->GetDiamondX(),aod->GetDiamondY(),0.};
    Double_t cov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,10.*10.};
    AliESDVertex *diamond = new AliESDVertex(pos,cov,1.,1);
    vertexer->SetVtxStart(diamond);
    delete diamond; diamond=NULL;
  }

  Int_t skipped[10]; for(Int_t i=0;i<10;i++) skipped[i]=-1;
  Int_t nTrksToSkip=0,id;
  AliAODTrack *t = 0;
  for(Int_t i=0; i<ndg; i++) {
    t = (AliAODTrack*)GetDaughter(i);
    id = (Int_t)t->GetID();
    if(id<0) continue;
    skipped[nTrksToSkip++] = id;
  }

  vertexer->SetSkipTracks(nTrksToSkip,skipped);
  AliESDVertex *vtxESDNew = vertexer->FindPrimaryVertex(aod);

  delete vertexer; vertexer=NULL;

  if(!vtxESDNew) return 0;
  if(vtxESDNew->GetNContributors()<=0) { 
    delete vtxESDNew; vtxESDNew=NULL;
    return 0;
  }

  // convert to AliAODVertex
  Double_t pos[3],cov[6],chi2perNDF;
  vtxESDNew->GetXYZ(pos); // position
  vtxESDNew->GetCovMatrix(cov); //covariance matrix
  chi2perNDF = vtxESDNew->GetChi2toNDF();
  delete vtxESDNew; vtxESDNew=NULL;

  AliAODVertex *vtxAODNew = new AliAODVertex(pos,cov,chi2perNDF);

  RecalculateImpPars(vtxAODNew,aod);

  return vtxAODNew;
}
//-----------------------------------------------------------------------------------
void AliAODRecoDecayLF::RecalculateImpPars(AliAODVertex *vtxAODNew,AliAODEvent* aod) {
  //
  // now recalculate the daughters impact parameters
  //
  Double_t dz[2],covdz[3];
  for(Int_t i=0; i<GetNDaughters(); i++) {
    AliAODTrack *t = (AliAODTrack*)GetDaughter(i);
    AliExternalTrackParam etp; etp.CopyFromVTrack(t);
    if(etp.PropagateToDCA(vtxAODNew,aod->GetMagneticField(),3.,dz,covdz)) {
      fd0[i]    = dz[0];
      fd0err[i] = TMath::Sqrt(covdz[0]);
    }
  }

  return;
}
//-----------------------------------------------------------------------------------
void AliAODRecoDecayLF::Misalign(TString misal) {
  //
  // Method to smear the impact parameter of the duaghter tracks
  // and the sec. vtx position accordinlgy 
  // Useful to study effect of misalignment.
  // The starting point are parameterisations of the impact parameter resolution
  // from MC and data 
  // Errors on d0 and vtx are not recalculated (to be done)
  //
  if(misal=="null")return;
  Double_t pard0rphiMC[3]={36.7,36.,1.25};// d0(pt)=[0]+[1]/(pt^[2]); in micron, conversion to cm is done later
  Double_t pard0rphimisal[3]={0,0,0};
  Double_t pard0zMC[3]={85.,130.,0.7};// d0(pt)=[0]+[1]/(pt^[2]); in micron, conversion to cm is done later
  Double_t pard0zmisal[3]={0,0,0};
  if(misal=="data") {
    //use this to reproduce data d0(pt) trend for pions
    pard0rphimisal[0]=37.;
    pard0rphimisal[1]=37.5;
    pard0rphimisal[2]=1.25;
    pard0zmisal[0]=96.;
    pard0zmisal[1]=131.;
    pard0zmisal[2]=0.7;
  }
  else if(misal=="resB") {
    // temporary values: asymptotic value larger by a factor 1.2 w.r.t. MC
    pard0rphimisal[0]=44.4;
    pard0rphimisal[1]=37.5;
    pard0rphimisal[2]=1.25;
    pard0zmisal[0]=115.2;
    pard0zmisal[1]=131.;
    pard0zmisal[2]=0.7;
  }
  else if(misal=="resC") {
    // temporary values: slightly larger asymptotic value, larger values at low pt
    pard0rphimisal[0]=40.;
    pard0rphimisal[1]=40.;
    pard0rphimisal[2]=1.3;
    pard0zmisal[0]=125.;
    pard0zmisal[1]=131.;
    pard0zmisal[2]=0.85;
  }
  else printf("AliAODRecoDecayLF::Misalign():  wrong misalign type specified \n");
 

  AliAODVertex *evVtx=0x0,*secVtx=0x0;
  Double_t evVtxPos[3]={-9999.,-9999.,-9999.},secVtxPos[3]={-9999.,9999.,9999.};
  if(fOwnPrimaryVtx)fOwnPrimaryVtx->GetXYZ(evVtxPos);
  else {
    evVtx=(AliAODVertex*)(fEventPrimaryVtx.GetObject());
    evVtx->GetXYZ(evVtxPos);
  }
  secVtx=(AliAODVertex*)GetSecondaryVtx();
  secVtx->GetXYZ(secVtxPos);
  
  TVector3 v2v1(secVtxPos[0]-evVtxPos[0],secVtxPos[1]-evVtxPos[1],0.);

  Double_t sigmarphinull,sigmarphimisal,sigmarphiadd;
  Double_t sigmaznull,sigmazmisal,sigmazadd;
  Double_t deltad0rphi[10],deltad0z[10];
  
  // loop on the two prongs
  for(Int_t i=0; i<fNProngs; i++) { 
    sigmarphinull = pard0rphiMC[0]+pard0rphiMC[1]/TMath::Power(PtProng(i),pard0rphiMC[2]);
    sigmarphimisal = pard0rphimisal[0]+pard0rphimisal[1]/TMath::Power(PtProng(i),pard0rphimisal[2]);
    if(sigmarphimisal>sigmarphinull) {
      sigmarphiadd = TMath::Sqrt(sigmarphimisal*sigmarphimisal-
				 sigmarphinull*sigmarphinull);
      deltad0rphi[i] = gRandom->Gaus(0.,sigmarphiadd);
    } else {
      deltad0rphi[i] = 0.;
    }

    sigmaznull =  pard0zMC[0]+pard0zMC[1]/TMath::Power(PtProng(i),pard0zMC[2]);
    sigmazmisal = pard0zmisal[0]+pard0zmisal[1]/TMath::Power(PtProng(i),pard0zmisal[2]);
    if(sigmazmisal>sigmaznull) {
      sigmazadd = TMath::Sqrt(sigmazmisal*sigmazmisal-
			      sigmaznull*sigmaznull);
      deltad0z[i] = gRandom->Gaus(0.,sigmazadd);
    } else {
      deltad0z[i] = 0.;
    }

    TVector3 pxy(fPx[i],fPy[i],0.);
    TVector3 pxycrossv2v1=pxy.Cross(v2v1);
    if( pxycrossv2v1.Z()*fd0[i] > 0 ) {
      secVtxPos[0]+=1.e-4*deltad0rphi[i]*(-fPy[i])/PtProng(i);// e-4: conversion to cm
      secVtxPos[1]+=1.e-4*deltad0rphi[i]*(+fPx[i])/PtProng(i);    
    } else {
      secVtxPos[0]+=1.e-4*deltad0rphi[i]*(+fPy[i])/PtProng(i);
      secVtxPos[1]+=1.e-4*deltad0rphi[i]*(-fPx[i])/PtProng(i);    
    }
    
    // change d0rphi
    fd0[i] += 1.e-4*deltad0rphi[i]; // e-4: conversion to cm
    // change secondary vertex z
    secVtxPos[2]+=0.5e-4*deltad0z[i];
  }
  secVtx->SetX(secVtxPos[0]);
  secVtx->SetY(secVtxPos[1]);
  secVtx->SetZ(secVtxPos[2]);

  return;
}
 AliAODRecoDecayLF.cxx:1
 AliAODRecoDecayLF.cxx:2
 AliAODRecoDecayLF.cxx:3
 AliAODRecoDecayLF.cxx:4
 AliAODRecoDecayLF.cxx:5
 AliAODRecoDecayLF.cxx:6
 AliAODRecoDecayLF.cxx:7
 AliAODRecoDecayLF.cxx:8
 AliAODRecoDecayLF.cxx:9
 AliAODRecoDecayLF.cxx:10
 AliAODRecoDecayLF.cxx:11
 AliAODRecoDecayLF.cxx:12
 AliAODRecoDecayLF.cxx:13
 AliAODRecoDecayLF.cxx:14
 AliAODRecoDecayLF.cxx:15
 AliAODRecoDecayLF.cxx:16
 AliAODRecoDecayLF.cxx:17
 AliAODRecoDecayLF.cxx:18
 AliAODRecoDecayLF.cxx:19
 AliAODRecoDecayLF.cxx:20
 AliAODRecoDecayLF.cxx:21
 AliAODRecoDecayLF.cxx:22
 AliAODRecoDecayLF.cxx:23
 AliAODRecoDecayLF.cxx:24
 AliAODRecoDecayLF.cxx:25
 AliAODRecoDecayLF.cxx:26
 AliAODRecoDecayLF.cxx:27
 AliAODRecoDecayLF.cxx:28
 AliAODRecoDecayLF.cxx:29
 AliAODRecoDecayLF.cxx:30
 AliAODRecoDecayLF.cxx:31
 AliAODRecoDecayLF.cxx:32
 AliAODRecoDecayLF.cxx:33
 AliAODRecoDecayLF.cxx:34
 AliAODRecoDecayLF.cxx:35
 AliAODRecoDecayLF.cxx:36
 AliAODRecoDecayLF.cxx:37
 AliAODRecoDecayLF.cxx:38
 AliAODRecoDecayLF.cxx:39
 AliAODRecoDecayLF.cxx:40
 AliAODRecoDecayLF.cxx:41
 AliAODRecoDecayLF.cxx:42
 AliAODRecoDecayLF.cxx:43
 AliAODRecoDecayLF.cxx:44
 AliAODRecoDecayLF.cxx:45
 AliAODRecoDecayLF.cxx:46
 AliAODRecoDecayLF.cxx:47
 AliAODRecoDecayLF.cxx:48
 AliAODRecoDecayLF.cxx:49
 AliAODRecoDecayLF.cxx:50
 AliAODRecoDecayLF.cxx:51
 AliAODRecoDecayLF.cxx:52
 AliAODRecoDecayLF.cxx:53
 AliAODRecoDecayLF.cxx:54
 AliAODRecoDecayLF.cxx:55
 AliAODRecoDecayLF.cxx:56
 AliAODRecoDecayLF.cxx:57
 AliAODRecoDecayLF.cxx:58
 AliAODRecoDecayLF.cxx:59
 AliAODRecoDecayLF.cxx:60
 AliAODRecoDecayLF.cxx:61
 AliAODRecoDecayLF.cxx:62
 AliAODRecoDecayLF.cxx:63
 AliAODRecoDecayLF.cxx:64
 AliAODRecoDecayLF.cxx:65
 AliAODRecoDecayLF.cxx:66
 AliAODRecoDecayLF.cxx:67
 AliAODRecoDecayLF.cxx:68
 AliAODRecoDecayLF.cxx:69
 AliAODRecoDecayLF.cxx:70
 AliAODRecoDecayLF.cxx:71
 AliAODRecoDecayLF.cxx:72
 AliAODRecoDecayLF.cxx:73
 AliAODRecoDecayLF.cxx:74
 AliAODRecoDecayLF.cxx:75
 AliAODRecoDecayLF.cxx:76
 AliAODRecoDecayLF.cxx:77
 AliAODRecoDecayLF.cxx:78
 AliAODRecoDecayLF.cxx:79
 AliAODRecoDecayLF.cxx:80
 AliAODRecoDecayLF.cxx:81
 AliAODRecoDecayLF.cxx:82
 AliAODRecoDecayLF.cxx:83
 AliAODRecoDecayLF.cxx:84
 AliAODRecoDecayLF.cxx:85
 AliAODRecoDecayLF.cxx:86
 AliAODRecoDecayLF.cxx:87
 AliAODRecoDecayLF.cxx:88
 AliAODRecoDecayLF.cxx:89
 AliAODRecoDecayLF.cxx:90
 AliAODRecoDecayLF.cxx:91
 AliAODRecoDecayLF.cxx:92
 AliAODRecoDecayLF.cxx:93
 AliAODRecoDecayLF.cxx:94
 AliAODRecoDecayLF.cxx:95
 AliAODRecoDecayLF.cxx:96
 AliAODRecoDecayLF.cxx:97
 AliAODRecoDecayLF.cxx:98
 AliAODRecoDecayLF.cxx:99
 AliAODRecoDecayLF.cxx:100
 AliAODRecoDecayLF.cxx:101
 AliAODRecoDecayLF.cxx:102
 AliAODRecoDecayLF.cxx:103
 AliAODRecoDecayLF.cxx:104
 AliAODRecoDecayLF.cxx:105
 AliAODRecoDecayLF.cxx:106
 AliAODRecoDecayLF.cxx:107
 AliAODRecoDecayLF.cxx:108
 AliAODRecoDecayLF.cxx:109
 AliAODRecoDecayLF.cxx:110
 AliAODRecoDecayLF.cxx:111
 AliAODRecoDecayLF.cxx:112
 AliAODRecoDecayLF.cxx:113
 AliAODRecoDecayLF.cxx:114
 AliAODRecoDecayLF.cxx:115
 AliAODRecoDecayLF.cxx:116
 AliAODRecoDecayLF.cxx:117
 AliAODRecoDecayLF.cxx:118
 AliAODRecoDecayLF.cxx:119
 AliAODRecoDecayLF.cxx:120
 AliAODRecoDecayLF.cxx:121
 AliAODRecoDecayLF.cxx:122
 AliAODRecoDecayLF.cxx:123
 AliAODRecoDecayLF.cxx:124
 AliAODRecoDecayLF.cxx:125
 AliAODRecoDecayLF.cxx:126
 AliAODRecoDecayLF.cxx:127
 AliAODRecoDecayLF.cxx:128
 AliAODRecoDecayLF.cxx:129
 AliAODRecoDecayLF.cxx:130
 AliAODRecoDecayLF.cxx:131
 AliAODRecoDecayLF.cxx:132
 AliAODRecoDecayLF.cxx:133
 AliAODRecoDecayLF.cxx:134
 AliAODRecoDecayLF.cxx:135
 AliAODRecoDecayLF.cxx:136
 AliAODRecoDecayLF.cxx:137
 AliAODRecoDecayLF.cxx:138
 AliAODRecoDecayLF.cxx:139
 AliAODRecoDecayLF.cxx:140
 AliAODRecoDecayLF.cxx:141
 AliAODRecoDecayLF.cxx:142
 AliAODRecoDecayLF.cxx:143
 AliAODRecoDecayLF.cxx:144
 AliAODRecoDecayLF.cxx:145
 AliAODRecoDecayLF.cxx:146
 AliAODRecoDecayLF.cxx:147
 AliAODRecoDecayLF.cxx:148
 AliAODRecoDecayLF.cxx:149
 AliAODRecoDecayLF.cxx:150
 AliAODRecoDecayLF.cxx:151
 AliAODRecoDecayLF.cxx:152
 AliAODRecoDecayLF.cxx:153
 AliAODRecoDecayLF.cxx:154
 AliAODRecoDecayLF.cxx:155
 AliAODRecoDecayLF.cxx:156
 AliAODRecoDecayLF.cxx:157
 AliAODRecoDecayLF.cxx:158
 AliAODRecoDecayLF.cxx:159
 AliAODRecoDecayLF.cxx:160
 AliAODRecoDecayLF.cxx:161
 AliAODRecoDecayLF.cxx:162
 AliAODRecoDecayLF.cxx:163
 AliAODRecoDecayLF.cxx:164
 AliAODRecoDecayLF.cxx:165
 AliAODRecoDecayLF.cxx:166
 AliAODRecoDecayLF.cxx:167
 AliAODRecoDecayLF.cxx:168
 AliAODRecoDecayLF.cxx:169
 AliAODRecoDecayLF.cxx:170
 AliAODRecoDecayLF.cxx:171
 AliAODRecoDecayLF.cxx:172
 AliAODRecoDecayLF.cxx:173
 AliAODRecoDecayLF.cxx:174
 AliAODRecoDecayLF.cxx:175
 AliAODRecoDecayLF.cxx:176
 AliAODRecoDecayLF.cxx:177
 AliAODRecoDecayLF.cxx:178
 AliAODRecoDecayLF.cxx:179
 AliAODRecoDecayLF.cxx:180
 AliAODRecoDecayLF.cxx:181
 AliAODRecoDecayLF.cxx:182
 AliAODRecoDecayLF.cxx:183
 AliAODRecoDecayLF.cxx:184
 AliAODRecoDecayLF.cxx:185
 AliAODRecoDecayLF.cxx:186
 AliAODRecoDecayLF.cxx:187
 AliAODRecoDecayLF.cxx:188
 AliAODRecoDecayLF.cxx:189
 AliAODRecoDecayLF.cxx:190
 AliAODRecoDecayLF.cxx:191
 AliAODRecoDecayLF.cxx:192
 AliAODRecoDecayLF.cxx:193
 AliAODRecoDecayLF.cxx:194
 AliAODRecoDecayLF.cxx:195
 AliAODRecoDecayLF.cxx:196
 AliAODRecoDecayLF.cxx:197
 AliAODRecoDecayLF.cxx:198
 AliAODRecoDecayLF.cxx:199
 AliAODRecoDecayLF.cxx:200
 AliAODRecoDecayLF.cxx:201
 AliAODRecoDecayLF.cxx:202
 AliAODRecoDecayLF.cxx:203
 AliAODRecoDecayLF.cxx:204
 AliAODRecoDecayLF.cxx:205
 AliAODRecoDecayLF.cxx:206
 AliAODRecoDecayLF.cxx:207
 AliAODRecoDecayLF.cxx:208
 AliAODRecoDecayLF.cxx:209
 AliAODRecoDecayLF.cxx:210
 AliAODRecoDecayLF.cxx:211
 AliAODRecoDecayLF.cxx:212
 AliAODRecoDecayLF.cxx:213
 AliAODRecoDecayLF.cxx:214
 AliAODRecoDecayLF.cxx:215
 AliAODRecoDecayLF.cxx:216
 AliAODRecoDecayLF.cxx:217
 AliAODRecoDecayLF.cxx:218
 AliAODRecoDecayLF.cxx:219
 AliAODRecoDecayLF.cxx:220
 AliAODRecoDecayLF.cxx:221
 AliAODRecoDecayLF.cxx:222
 AliAODRecoDecayLF.cxx:223
 AliAODRecoDecayLF.cxx:224
 AliAODRecoDecayLF.cxx:225
 AliAODRecoDecayLF.cxx:226
 AliAODRecoDecayLF.cxx:227
 AliAODRecoDecayLF.cxx:228
 AliAODRecoDecayLF.cxx:229
 AliAODRecoDecayLF.cxx:230
 AliAODRecoDecayLF.cxx:231
 AliAODRecoDecayLF.cxx:232
 AliAODRecoDecayLF.cxx:233
 AliAODRecoDecayLF.cxx:234
 AliAODRecoDecayLF.cxx:235
 AliAODRecoDecayLF.cxx:236
 AliAODRecoDecayLF.cxx:237
 AliAODRecoDecayLF.cxx:238
 AliAODRecoDecayLF.cxx:239
 AliAODRecoDecayLF.cxx:240
 AliAODRecoDecayLF.cxx:241
 AliAODRecoDecayLF.cxx:242
 AliAODRecoDecayLF.cxx:243
 AliAODRecoDecayLF.cxx:244
 AliAODRecoDecayLF.cxx:245
 AliAODRecoDecayLF.cxx:246
 AliAODRecoDecayLF.cxx:247
 AliAODRecoDecayLF.cxx:248
 AliAODRecoDecayLF.cxx:249
 AliAODRecoDecayLF.cxx:250
 AliAODRecoDecayLF.cxx:251
 AliAODRecoDecayLF.cxx:252
 AliAODRecoDecayLF.cxx:253
 AliAODRecoDecayLF.cxx:254
 AliAODRecoDecayLF.cxx:255
 AliAODRecoDecayLF.cxx:256
 AliAODRecoDecayLF.cxx:257
 AliAODRecoDecayLF.cxx:258
 AliAODRecoDecayLF.cxx:259
 AliAODRecoDecayLF.cxx:260
 AliAODRecoDecayLF.cxx:261
 AliAODRecoDecayLF.cxx:262
 AliAODRecoDecayLF.cxx:263
 AliAODRecoDecayLF.cxx:264
 AliAODRecoDecayLF.cxx:265
 AliAODRecoDecayLF.cxx:266
 AliAODRecoDecayLF.cxx:267
 AliAODRecoDecayLF.cxx:268
 AliAODRecoDecayLF.cxx:269
 AliAODRecoDecayLF.cxx:270
 AliAODRecoDecayLF.cxx:271
 AliAODRecoDecayLF.cxx:272
 AliAODRecoDecayLF.cxx:273
 AliAODRecoDecayLF.cxx:274
 AliAODRecoDecayLF.cxx:275
 AliAODRecoDecayLF.cxx:276
 AliAODRecoDecayLF.cxx:277
 AliAODRecoDecayLF.cxx:278
 AliAODRecoDecayLF.cxx:279
 AliAODRecoDecayLF.cxx:280
 AliAODRecoDecayLF.cxx:281
 AliAODRecoDecayLF.cxx:282
 AliAODRecoDecayLF.cxx:283
 AliAODRecoDecayLF.cxx:284
 AliAODRecoDecayLF.cxx:285
 AliAODRecoDecayLF.cxx:286
 AliAODRecoDecayLF.cxx:287
 AliAODRecoDecayLF.cxx:288
 AliAODRecoDecayLF.cxx:289
 AliAODRecoDecayLF.cxx:290
 AliAODRecoDecayLF.cxx:291
 AliAODRecoDecayLF.cxx:292
 AliAODRecoDecayLF.cxx:293
 AliAODRecoDecayLF.cxx:294
 AliAODRecoDecayLF.cxx:295
 AliAODRecoDecayLF.cxx:296
 AliAODRecoDecayLF.cxx:297
 AliAODRecoDecayLF.cxx:298
 AliAODRecoDecayLF.cxx:299
 AliAODRecoDecayLF.cxx:300
 AliAODRecoDecayLF.cxx:301
 AliAODRecoDecayLF.cxx:302
 AliAODRecoDecayLF.cxx:303
 AliAODRecoDecayLF.cxx:304
 AliAODRecoDecayLF.cxx:305
 AliAODRecoDecayLF.cxx:306
 AliAODRecoDecayLF.cxx:307
 AliAODRecoDecayLF.cxx:308
 AliAODRecoDecayLF.cxx:309
 AliAODRecoDecayLF.cxx:310
 AliAODRecoDecayLF.cxx:311
 AliAODRecoDecayLF.cxx:312
 AliAODRecoDecayLF.cxx:313
 AliAODRecoDecayLF.cxx:314
 AliAODRecoDecayLF.cxx:315
 AliAODRecoDecayLF.cxx:316
 AliAODRecoDecayLF.cxx:317
 AliAODRecoDecayLF.cxx:318
 AliAODRecoDecayLF.cxx:319
 AliAODRecoDecayLF.cxx:320
 AliAODRecoDecayLF.cxx:321
 AliAODRecoDecayLF.cxx:322
 AliAODRecoDecayLF.cxx:323
 AliAODRecoDecayLF.cxx:324
 AliAODRecoDecayLF.cxx:325
 AliAODRecoDecayLF.cxx:326
 AliAODRecoDecayLF.cxx:327
 AliAODRecoDecayLF.cxx:328
 AliAODRecoDecayLF.cxx:329
 AliAODRecoDecayLF.cxx:330
 AliAODRecoDecayLF.cxx:331
 AliAODRecoDecayLF.cxx:332
 AliAODRecoDecayLF.cxx:333
 AliAODRecoDecayLF.cxx:334
 AliAODRecoDecayLF.cxx:335
 AliAODRecoDecayLF.cxx:336
 AliAODRecoDecayLF.cxx:337
 AliAODRecoDecayLF.cxx:338
 AliAODRecoDecayLF.cxx:339
 AliAODRecoDecayLF.cxx:340
 AliAODRecoDecayLF.cxx:341
 AliAODRecoDecayLF.cxx:342
 AliAODRecoDecayLF.cxx:343
 AliAODRecoDecayLF.cxx:344
 AliAODRecoDecayLF.cxx:345
 AliAODRecoDecayLF.cxx:346
 AliAODRecoDecayLF.cxx:347
 AliAODRecoDecayLF.cxx:348
 AliAODRecoDecayLF.cxx:349
 AliAODRecoDecayLF.cxx:350
 AliAODRecoDecayLF.cxx:351
 AliAODRecoDecayLF.cxx:352
 AliAODRecoDecayLF.cxx:353
 AliAODRecoDecayLF.cxx:354
 AliAODRecoDecayLF.cxx:355
 AliAODRecoDecayLF.cxx:356
 AliAODRecoDecayLF.cxx:357
 AliAODRecoDecayLF.cxx:358
 AliAODRecoDecayLF.cxx:359
 AliAODRecoDecayLF.cxx:360
 AliAODRecoDecayLF.cxx:361
 AliAODRecoDecayLF.cxx:362
 AliAODRecoDecayLF.cxx:363
 AliAODRecoDecayLF.cxx:364
 AliAODRecoDecayLF.cxx:365
 AliAODRecoDecayLF.cxx:366
 AliAODRecoDecayLF.cxx:367
 AliAODRecoDecayLF.cxx:368
 AliAODRecoDecayLF.cxx:369
 AliAODRecoDecayLF.cxx:370
 AliAODRecoDecayLF.cxx:371
 AliAODRecoDecayLF.cxx:372
 AliAODRecoDecayLF.cxx:373
 AliAODRecoDecayLF.cxx:374
 AliAODRecoDecayLF.cxx:375
 AliAODRecoDecayLF.cxx:376
 AliAODRecoDecayLF.cxx:377
 AliAODRecoDecayLF.cxx:378
 AliAODRecoDecayLF.cxx:379
 AliAODRecoDecayLF.cxx:380
 AliAODRecoDecayLF.cxx:381
 AliAODRecoDecayLF.cxx:382
 AliAODRecoDecayLF.cxx:383
 AliAODRecoDecayLF.cxx:384
 AliAODRecoDecayLF.cxx:385
 AliAODRecoDecayLF.cxx:386
 AliAODRecoDecayLF.cxx:387
 AliAODRecoDecayLF.cxx:388
 AliAODRecoDecayLF.cxx:389
 AliAODRecoDecayLF.cxx:390
 AliAODRecoDecayLF.cxx:391
 AliAODRecoDecayLF.cxx:392
 AliAODRecoDecayLF.cxx:393
 AliAODRecoDecayLF.cxx:394
 AliAODRecoDecayLF.cxx:395
 AliAODRecoDecayLF.cxx:396
 AliAODRecoDecayLF.cxx:397
 AliAODRecoDecayLF.cxx:398
 AliAODRecoDecayLF.cxx:399
 AliAODRecoDecayLF.cxx:400
 AliAODRecoDecayLF.cxx:401
 AliAODRecoDecayLF.cxx:402
 AliAODRecoDecayLF.cxx:403
 AliAODRecoDecayLF.cxx:404
 AliAODRecoDecayLF.cxx:405
 AliAODRecoDecayLF.cxx:406
 AliAODRecoDecayLF.cxx:407
 AliAODRecoDecayLF.cxx:408
 AliAODRecoDecayLF.cxx:409
 AliAODRecoDecayLF.cxx:410
 AliAODRecoDecayLF.cxx:411
 AliAODRecoDecayLF.cxx:412
 AliAODRecoDecayLF.cxx:413
 AliAODRecoDecayLF.cxx:414
 AliAODRecoDecayLF.cxx:415
 AliAODRecoDecayLF.cxx:416
 AliAODRecoDecayLF.cxx:417
 AliAODRecoDecayLF.cxx:418
 AliAODRecoDecayLF.cxx:419
 AliAODRecoDecayLF.cxx:420
 AliAODRecoDecayLF.cxx:421
 AliAODRecoDecayLF.cxx:422
 AliAODRecoDecayLF.cxx:423
 AliAODRecoDecayLF.cxx:424
 AliAODRecoDecayLF.cxx:425
 AliAODRecoDecayLF.cxx:426
 AliAODRecoDecayLF.cxx:427
 AliAODRecoDecayLF.cxx:428
 AliAODRecoDecayLF.cxx:429
 AliAODRecoDecayLF.cxx:430
 AliAODRecoDecayLF.cxx:431
 AliAODRecoDecayLF.cxx:432
 AliAODRecoDecayLF.cxx:433
 AliAODRecoDecayLF.cxx:434
 AliAODRecoDecayLF.cxx:435
 AliAODRecoDecayLF.cxx:436
 AliAODRecoDecayLF.cxx:437
 AliAODRecoDecayLF.cxx:438
 AliAODRecoDecayLF.cxx:439
 AliAODRecoDecayLF.cxx:440
 AliAODRecoDecayLF.cxx:441