ROOT logo
#ifndef ALICFVERTEXINGHFCASCADE_H
#define ALICFVERTEXINGHFCASCADE_H

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

//-----------------------------------------------------------------------
// Class for HF corrections as a function of many variables and steps
// For D* and other cascades
// 
// Author : A.GRELLI - a.grelli@uu.nl UTRECHT
//-----------------------------------------------------------------------


#include "AliCFVertexingHF.h"
#include "AliAODRecoDecayHF.h"
#include "AliAODRecoCascadeHF.h"
#include "AliAODRecoDecayHF2Prong.h"

class AliAODMCParticle;
class TClonesArray;
class AliCFVertexingHF;
class AliESDtrack;
class TDatabasePDG;
class AliPIDResponse;

class AliCFVertexingHFCascade : public AliCFVertexingHF{
 public:
		
  AliCFVertexingHFCascade();
  AliCFVertexingHFCascade(TClonesArray *mcArray, UShort_t originDselection);
	
  //virtual ~AliCFVertexingHFCascade(){};
  
  
  Bool_t GetGeneratedValuesFromMCParticle(Double_t* /*vectorMC*/);
  Bool_t GetRecoValuesFromCandidate(Double_t* /*vectorReco*/ ) const;
  Bool_t CheckMCChannelDecay()const;
  
  Bool_t SetRecoCandidateParam(AliAODRecoDecayHF *recoCand);
  //Bool_t EvaluateIfD0toKpi(AliAODMCParticle* neutralDaugh, Double_t* VectorD0)const;
  Bool_t EvaluateIfCorrectNeutrDaugh(AliAODMCParticle* neutralDaugh, Double_t* VectorD0)const;

  void SetPtAccCut(Float_t* ptAccCut);
  void SetEtaAccCut(Float_t* etaAccCut);
  void SetAccCut(Float_t* ptAccCut, Float_t* etaAccCut);
  void SetAccCut();

  Double_t GetEtaProng(Int_t iProng)const;
  Double_t GetPtProng(Int_t iProng) const;

  void SetPDGcascade(Int_t pdg)    {fPDGcascade = pdg;}
  void SetPDGbachelor(Int_t pdg)   {fPDGbachelor = pdg;}
  void SetPDGneutrDaugh(Int_t pdg)         {fPDGneutrDaugh = pdg;}
  void SetPDGneutrDaughForMC(Int_t pdg)         {fPDGneutrDaughForMC = pdg;}
  void SetPDGneutrDaughPositive(Int_t pdg) {fPDGneutrDaughPositive = pdg;}
  void SetPDGneutrDaughNegative(Int_t pdg) {fPDGneutrDaughNegative = pdg;}
  void SetPrimaryVertex(AliAODVertex* vtx) {fPrimVtx = vtx;}

  Int_t GetPDGcascade()    const {return fPDGcascade;}
  Int_t GetPDGbachelor()   const {return fPDGbachelor;}
  Int_t GetPDGneutrDaugh()         const {return fPDGneutrDaugh;}
  Int_t GetPDGneutrDaughForMC()         const {return fPDGneutrDaughForMC;}
  Int_t GetPDGneutrDaughPositive() const {return fPDGneutrDaughPositive;}
  Int_t GetPDGneutrDaughNegative() const {return fPDGneutrDaughNegative;}
  AliAODVertex* GetPrimaryVertex() const {return fPrimVtx;}

  Bool_t CheckAdditionalCuts(AliPIDResponse* pidResponse) const;

  void SetUseCutsForTMVA(Bool_t useCutsForTMVA) {fUseCutsForTMVA = useCutsForTMVA;}
  Bool_t GetUseCutsForTMVA() const {return fUseCutsForTMVA;}

  void SetCutOnMomConservation(Float_t cut) {fCutOnMomConservation = cut;}
  Bool_t GetCutOnMomConservation() const {return fCutOnMomConservation;}

 protected:
  
  
 private:	
  AliCFVertexingHFCascade(const AliCFVertexingHFCascade& c);
  AliCFVertexingHFCascade& operator= (const AliCFVertexingHFCascade& other);

  Int_t fPDGcascade;   // pdg code of the cascade
  Int_t fPDGbachelor;  // pdg code of the bachelor
  Int_t fPDGneutrDaugh;        // pdg code of the V0
  Int_t fPDGneutrDaughForMC;        // pdg code of the V0
  Int_t fPDGneutrDaughPositive;  // pdg code of the positive daughter of the V0
  Int_t fPDGneutrDaughNegative;  // pdg code of the negative daughter of the V0
  AliAODVertex* fPrimVtx;        // primaryVertex
  Bool_t fUseCutsForTMVA;        // flag to decide whether to use or not the preselection
                                 // cuts of the TMVA when filling the CF
  Float_t fCutOnMomConservation; // cut on momentum conservation

  ClassDef(AliCFVertexingHFCascade,4); // CF class for D* and other cascades
  
};

#endif
 AliCFVertexingHFCascade.h:1
 AliCFVertexingHFCascade.h:2
 AliCFVertexingHFCascade.h:3
 AliCFVertexingHFCascade.h:4
 AliCFVertexingHFCascade.h:5
 AliCFVertexingHFCascade.h:6
 AliCFVertexingHFCascade.h:7
 AliCFVertexingHFCascade.h:8
 AliCFVertexingHFCascade.h:9
 AliCFVertexingHFCascade.h:10
 AliCFVertexingHFCascade.h:11
 AliCFVertexingHFCascade.h:12
 AliCFVertexingHFCascade.h:13
 AliCFVertexingHFCascade.h:14
 AliCFVertexingHFCascade.h:15
 AliCFVertexingHFCascade.h:16
 AliCFVertexingHFCascade.h:17
 AliCFVertexingHFCascade.h:18
 AliCFVertexingHFCascade.h:19
 AliCFVertexingHFCascade.h:20
 AliCFVertexingHFCascade.h:21
 AliCFVertexingHFCascade.h:22
 AliCFVertexingHFCascade.h:23
 AliCFVertexingHFCascade.h:24
 AliCFVertexingHFCascade.h:25
 AliCFVertexingHFCascade.h:26
 AliCFVertexingHFCascade.h:27
 AliCFVertexingHFCascade.h:28
 AliCFVertexingHFCascade.h:29
 AliCFVertexingHFCascade.h:30
 AliCFVertexingHFCascade.h:31
 AliCFVertexingHFCascade.h:32
 AliCFVertexingHFCascade.h:33
 AliCFVertexingHFCascade.h:34
 AliCFVertexingHFCascade.h:35
 AliCFVertexingHFCascade.h:36
 AliCFVertexingHFCascade.h:37
 AliCFVertexingHFCascade.h:38
 AliCFVertexingHFCascade.h:39
 AliCFVertexingHFCascade.h:40
 AliCFVertexingHFCascade.h:41
 AliCFVertexingHFCascade.h:42
 AliCFVertexingHFCascade.h:43
 AliCFVertexingHFCascade.h:44
 AliCFVertexingHFCascade.h:45
 AliCFVertexingHFCascade.h:46
 AliCFVertexingHFCascade.h:47
 AliCFVertexingHFCascade.h:48
 AliCFVertexingHFCascade.h:49
 AliCFVertexingHFCascade.h:50
 AliCFVertexingHFCascade.h:51
 AliCFVertexingHFCascade.h:52
 AliCFVertexingHFCascade.h:53
 AliCFVertexingHFCascade.h:54
 AliCFVertexingHFCascade.h:55
 AliCFVertexingHFCascade.h:56
 AliCFVertexingHFCascade.h:57
 AliCFVertexingHFCascade.h:58
 AliCFVertexingHFCascade.h:59
 AliCFVertexingHFCascade.h:60
 AliCFVertexingHFCascade.h:61
 AliCFVertexingHFCascade.h:62
 AliCFVertexingHFCascade.h:63
 AliCFVertexingHFCascade.h:64
 AliCFVertexingHFCascade.h:65
 AliCFVertexingHFCascade.h:66
 AliCFVertexingHFCascade.h:67
 AliCFVertexingHFCascade.h:68
 AliCFVertexingHFCascade.h:69
 AliCFVertexingHFCascade.h:70
 AliCFVertexingHFCascade.h:71
 AliCFVertexingHFCascade.h:72
 AliCFVertexingHFCascade.h:73
 AliCFVertexingHFCascade.h:74
 AliCFVertexingHFCascade.h:75
 AliCFVertexingHFCascade.h:76
 AliCFVertexingHFCascade.h:77
 AliCFVertexingHFCascade.h:78
 AliCFVertexingHFCascade.h:79
 AliCFVertexingHFCascade.h:80
 AliCFVertexingHFCascade.h:81
 AliCFVertexingHFCascade.h:82
 AliCFVertexingHFCascade.h:83
 AliCFVertexingHFCascade.h:84
 AliCFVertexingHFCascade.h:85
 AliCFVertexingHFCascade.h:86
 AliCFVertexingHFCascade.h:87
 AliCFVertexingHFCascade.h:88
 AliCFVertexingHFCascade.h:89
 AliCFVertexingHFCascade.h:90
 AliCFVertexingHFCascade.h:91
 AliCFVertexingHFCascade.h:92
 AliCFVertexingHFCascade.h:93
 AliCFVertexingHFCascade.h:94
 AliCFVertexingHFCascade.h:95
 AliCFVertexingHFCascade.h:96
 AliCFVertexingHFCascade.h:97
 AliCFVertexingHFCascade.h:98
 AliCFVertexingHFCascade.h:99
 AliCFVertexingHFCascade.h:100
 AliCFVertexingHFCascade.h:101
 AliCFVertexingHFCascade.h:102
 AliCFVertexingHFCascade.h:103
 AliCFVertexingHFCascade.h:104
 AliCFVertexingHFCascade.h:105
 AliCFVertexingHFCascade.h:106
 AliCFVertexingHFCascade.h:107
 AliCFVertexingHFCascade.h:108
 AliCFVertexingHFCascade.h:109
 AliCFVertexingHFCascade.h:110