]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/vertexingHF/AliAODRecoCascadeHF.h
Coverity fixes
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliAODRecoCascadeHF.h
index be88536db4aeff0b6fff4a6062d03b5fc254cd5f..0500596ac67230170e5642cdf9b39a264831a4e7 100644 (file)
@@ -3,18 +3,23 @@
 /* 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@iop.ccnu.edu.cn
+// 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 {
@@ -33,11 +38,31 @@ class AliAODRecoCascadeHF : public AliAODRecoDecayHF2Prong {
   AliAODRecoCascadeHF& operator=(const AliAODRecoCascadeHF& source);
 
   // 2prong (D0 for Dstar)
-  AliAODRecoDecayHF2Prong* Get2Prong() const {return (AliAODRecoDecayHF2Prong*)GetDaughter(1);}
+  AliAODRecoDecayHF2Prong* Get2Prong() const {
+    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);} 
@@ -45,6 +70,21 @@ class AliAODRecoCascadeHF : public AliAODRecoDecayHF2Prong {
   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) const;
+
+  Int_t MatchToMC(Int_t pdgabs,Int_t pdgabs2prong,
+                  Int_t *pdgDg,Int_t *pdgDg2prong,
+                  TClonesArray *mcArray) const;
 
  protected: