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

/* $Id$ */ 

//***********************************************************
// Class AliAODRecoCascadeHF
// base class for AOD reconstructed heavy-flavour cascade decays
// (D*->D0pi, ...)
// The convention is: prong 0 is the bachelor, prong 1 is the "V0"
//
// Author: X-M. Zhang, zhangxm@iopp.ccnu.edu.cn
//***********************************************************

#include <TRef.h>
#include <TRefArray.h>
#include <TClonesArray.h>
#include <TClass.h>
#include "AliAODVertex.h"
#include "AliAODv0.h"
#include "AliAODRecoDecayHF2Prong.h"

class AliAODRecoCascadeHF : public AliAODRecoDecayHF2Prong {

 public:

  AliAODRecoCascadeHF();
  AliAODRecoCascadeHF(AliAODVertex *vtx2, Short_t charge,
		      Double_t *px, Double_t *py, Double_t *pz,
		      Double_t *d0, Double_t *d0err, Double_t dca);
  AliAODRecoCascadeHF(AliAODVertex *vtx2, Short_t charge,
		      Double_t *d0, Double_t *d0err, Double_t dca);
  virtual ~AliAODRecoCascadeHF();

  AliAODRecoCascadeHF(const AliAODRecoCascadeHF& source);
  AliAODRecoCascadeHF& operator=(const AliAODRecoCascadeHF& source);

  // 2prong (D0 for Dstar)
  AliAODRecoDecayHF2Prong* Get2Prong() const {
    if(!GetDaughter(1)) return 0;
    if ( ! ((AliAODRecoDecay*)GetDaughter(1))->IsA()->InheritsFrom("AliAODRecoDecayHF2Prong") ){
      AliWarning("Object is not of type AliAODRecoDecayHF2Prong");
      return 0;
    }
    return (AliAODRecoDecayHF2Prong*)GetDaughter(1);
  }

  // Bachelor (soft pion for Dstar)
  AliAODTrack* GetBachelor() const {return (AliAODTrack*)GetDaughter(0);}

  // v0 (Ks or Lambda for Lambda_c)
  AliAODv0* Getv0() const {
    if ( ! ((AliAODRecoDecay*)GetDaughter(1))->IsA()->InheritsFrom("AliAODv0") ){
       AliWarning("Object is not of type v0");
       return 0;
      }
    return (AliAODv0*)GetDaughter(1);
    }

  // Get v0 positive track
  AliAODTrack* Getv0PositiveTrack() const { return  (AliAODTrack*)Getv0()->GetDaughter(0);  }
  // Get v0 negative track
  AliAODTrack* Getv0NegativeTrack() const { return  (AliAODTrack*)Getv0()->GetDaughter(1);  }

  // D*->D0pi, D0->Kpi
  Double_t EDstar() const {return E(413);} 
  Double_t YDstar() const {return Y(413);} 
  Bool_t   SelectDstar(const Double_t *cutsDstar,const Double_t *cutsD0,Bool_t testD0=kTRUE) const;
  Double_t InvMassD0() const {return (Charge()>0 ? Get2Prong()->InvMassD0() : Get2Prong()->InvMassD0bar());}
  Double_t InvMassDstarKpipi() const;
  Double_t DeltaInvMass() const {return (InvMassDstarKpipi()-InvMassD0());}
  Double_t AngleD0dkpPisoft() const;
  Bool_t   TrigonometricalCut() const;

  // Lc invariant mass
  Double_t InvMassLctoK0sP() const {
    UInt_t pdg[2]={2212,310}; return InvMass(2,pdg);
  }
  Double_t InvMassLctoLambdaPi() const {
    UInt_t pdg[2]={211,3122}; return InvMass(2,pdg);
  }
  Bool_t SelectLctoV0(const Double_t *cutsLctoV0, Bool_t okLck0sp, Bool_t okLcLpi, Bool_t okLcLbarpi) const;

  Int_t MatchToMC(Int_t pdgabs,Int_t pdgabs2prong,
                  Int_t *pdgDg,Int_t *pdgDg2prong,
                  TClonesArray *mcArray, Bool_t isV0=kFALSE) const;

  Double_t CosV0PointingAngle() const;
  Double_t CosV0PointingAngleXY() const;
  Double_t DecayLengthV0() const;
  Double_t DecayLengthXYV0() const;
  Double_t NormalizedV0DecayLength() const;
  Double_t NormalizedV0DecayLengthXY() const;

 protected:

  ClassDef(AliAODRecoCascadeHF, 2); // heavy-flavour cascade class
};

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