ROOT logo
#ifndef ALIAODRECODECAYHF3PRONG_H
#define ALIAODRECODECAYHF3PRONG_H
/* Copyright(c) 1998-2006, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */ 

//***********************************************************
// Class AliAODRecoDecayHF3Prong
// base class for AOD reconstructed 3-prong heavy-flavour decays
// (D+->Kpipi, Ds->KKpi ...)
// Author: E.Bruna bruna@to.infn.it, F.Prino prino@to.infn.it
//***********************************************************

#include "AliAODRecoDecay.h"
#include "AliAODRecoDecayHF.h"
#include "AliAODEvent.h"

class AliAODRecoDecayHF3Prong : public AliAODRecoDecayHF {

 public:
  
  AliAODRecoDecayHF3Prong();
   AliAODRecoDecayHF3Prong(AliAODVertex *vtx2,
			   Double_t *px,Double_t *py,Double_t *pz,
			   Double_t *d0,Double_t *d0err,
			   Double_t *dca, Double_t sigvert,
			   Double_t dist12,Double_t dist23,Short_t charge);
   AliAODRecoDecayHF3Prong(AliAODVertex *vtx2,
			   Double_t *d0,Double_t *d0err,
			   Double_t *dca, Double_t sigvert,
			   Double_t dist12,Double_t dist23, Short_t charge);

  AliAODRecoDecayHF3Prong(const AliAODRecoDecayHF3Prong& source);
  AliAODRecoDecayHF3Prong& operator=(const AliAODRecoDecayHF3Prong& source); 
  void GetDCAs(Double_t dca[3]) const 
    {for(Int_t i=0;i<3;i++) dca[i]=GetDCA(i);}
  Double_t GetSigmaVert(const AliAODEvent* aod=0x0) { 
    if(fSigmaVert>0.00001) return fSigmaVert; 
    if(aod) fSigmaVert=ComputeSigmaVert(aod);
    return fSigmaVert;
  }
  Double_t ComputeSigmaVert(const AliAODEvent* aod) const;
  Double_t GetDist12toPrim() const { return fDist12toPrim; }
  Double_t GetDist23toPrim() const { return fDist23toPrim; }
  void SetDist12toPrim(Double_t d) { fDist12toPrim=d; }
  void SetDist23toPrim(Double_t d) { fDist23toPrim=d; }


  // D+->Kpipi
  Double_t EDplus() const {return E(411);} 
  Double_t YDplus() const {return Y(411);} 
  Double_t CtDplus() const {return Ct(411);} 
  Double_t CtDplus(Double_t point[3]) const {return AliAODRecoDecay::Ct(411,point);}
  Double_t CtDplus(AliAODVertex *vtx1) const {return AliAODRecoDecay::Ct(411,vtx1);}
  Double_t InvMassDplus() const {UInt_t pdg[3]={211,321,211};return InvMass(3,pdg);}
  Bool_t   SelectDplus(const Double_t* cuts) const;

  // Ds+->KKpi
  Double_t EDs() const {return E(431);} 
  Double_t YDs() const {return Y(431);} 
  Double_t CtDs() const {return Ct(431);} 
  Double_t CtDs(Double_t point[3]) const {return AliAODRecoDecay::Ct(431,point);}
  Double_t CtDs(AliAODVertex *vtx1) const {return AliAODRecoDecay::Ct(431,vtx1);}
  Double_t InvMassDsKKpi() const {UInt_t pdg[3]={321,321,211};return InvMass(3,pdg);}
  Double_t InvMassDspiKK() const {UInt_t pdg[3]={211,321,321};return InvMass(3,pdg);}
  
  Double_t CosPiKPhiRFrameKKpi() const {return CosPiKPhiRFrame(0);}
  Double_t CosPiKPhiRFramepiKK() const {return CosPiKPhiRFrame(1);}
  Double_t CosPiDsLabFrameKKpi() const {return CosPiDsLabFrame(0);}
  Double_t CosPiDsLabFramepiKK() const {return CosPiDsLabFrame(1);}
  
  Double_t CosPiKPhiRFrame(Int_t option) const;
  Double_t CosPiDsLabFrame(Int_t option) const;
  Bool_t   SelectDs(const Double_t* cuts,Int_t &okDsKKpi,Int_t &okDspiKK, Int_t &okMassPhi, Int_t &okMassK0star) 
    const; // same variables as D+, for now

  // Lambdac+->pKpi
  Double_t ELc() const {return E(4122);} 
  Double_t YLc() const {return Y(4122);} 
  Double_t CtLc() const {return Ct(4122);} 
  Double_t CtLc(Double_t point[3]) const {return AliAODRecoDecay::Ct(4122,point);}
  Double_t CtLc(AliAODVertex *vtx1) const {return AliAODRecoDecay::Ct(4122,vtx1);}
  Double_t InvMassLcpKpi() const {UInt_t pdg[3]={2212,321,211};return InvMass(3,pdg);}
  Double_t InvMassLcpiKp() const {UInt_t pdg[3]={211,321,2212};return InvMass(3,pdg);}
  Bool_t   SelectLc(const Double_t* cuts,Int_t &okLcpKpi,Int_t &okLcpiKp) 
    const; // same variables as D+, for now

 private:

  Double_t fSigmaVert; // track dispersion around the secondary vertex
  Double_t fDist12toPrim; //distance prim vert - 2 opposite sign track vertex 
  Double_t fDist23toPrim; //distance prim vert - 2 opposite sign track vertex



  ClassDef(AliAODRecoDecayHF3Prong,1)  // base class for AOD reconstructed 
                                       // heavy-flavour 3-prong decays
};

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