]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/vertexingHF/AliAnalysisTaskSESignificance.h
Fix
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliAnalysisTaskSESignificance.h
index 5be7b892cb4ac588c2df4bee78911948cda630bc..809fd56da922773766fe247fb9f6cedeb6907307 100644 (file)
@@ -4,6 +4,8 @@
 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
+/* $Id$ */ 
+
 //*************************************************************************
 // AliAnalysisTaskSESignificane to calculate effects on 
 // significance of D mesons  cut 
@@ -24,6 +26,9 @@ class AliAnalysisTaskSESignificance : public AliAnalysisTaskSE
 {
  public:
 
+  enum FeedDownEnum {kBoth,kCharmOnly,kBeautyOnly};
+  enum ChanDs {kAllReson,kPhi,kK0star};
+
   AliAnalysisTaskSESignificance();
   AliAnalysisTaskSESignificance(const char *name, TList *listMDV,AliRDHFCuts *RDCuts, Int_t decaychannel,Int_t selectionlevel=AliRDHFCuts::kAll);
  
@@ -31,15 +36,24 @@ class AliAnalysisTaskSESignificance : public AliAnalysisTaskSE
 
   Bool_t CheckConsistency();
   void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}
+  void SetBFeedDown(FeedDownEnum flagB);//see enum
+  void SetDFromCharmOnly(){SetBFeedDown(kCharmOnly);}
+  void SetDFromBeautyOnly(){SetBFeedDown(kBeautyOnly);}
   void SetMassLimits(Float_t range,Int_t pdg);
   void SetMassLimits(Float_t lowlimit, Float_t uplimit);
   void SetNBins(Int_t nbins){fNBins=nbins;}
   void SetFillWithPartAntiPartBoth(Int_t value){fPartOrAndAntiPart=value;}
+  void SetDsChannel(Int_t chan){fDsChannel=chan;}
+  void SetUseSelBit(Bool_t selBit=kTRUE){fUseSelBit=selBit;}
+
   //void SetMultiVector(const AliMultiDimVector *MultiDimVec){fMultiDimVec->CopyStructure(MultiDimVec);}
   Float_t GetUpperMassLimit()const {return fUpmasslimit;}
   Float_t GetLowerMassLimit()const {return fLowmasslimit;}
   Int_t GetNBins()const {return fNBins;}
   Int_t GetFillWithPartAntiPartBoth()const {return fPartOrAndAntiPart;}
+  Int_t GetBFeedDown()const {return fBFeedDown;}
+  Int_t GetDsChannel()const {return fDsChannel;}
+  Bool_t GetUseSelBit()const {return fUseSelBit;}
 
   // Implementation of interface methods
   virtual void UserCreateOutputObjects();
@@ -49,25 +63,38 @@ class AliAnalysisTaskSESignificance : public AliAnalysisTaskSE
     
  private:
 
+  void SetPDGdaughterDstoKKpi(){
+    fPDGdaughters[0]=321;//K
+    fPDGdaughters[1]=321;//K
+    fPDGdaughters[2]=211;//pi
+    fPDGdaughters[3]=0; //empty
+  }
+  void SetPDGdaughterDstopiKK(){
+    fPDGdaughters[0]=211;//pi
+    fPDGdaughters[1]=321;//K
+    fPDGdaughters[2]=321;//K
+    fPDGdaughters[3]=0; //empty
+  }
+
   AliAnalysisTaskSESignificance(const AliAnalysisTaskSESignificance &source);
-  AliAnalysisTaskSESignificance& operator=(const AliAnalysisTaskSESignificance& source); 
+  AliAnalysisTaskSESignificance& operator=(const AliAnalysisTaskSESignificance& source);
+  void SetPDGCodes();
   Int_t GetHistoIndex(Int_t iPtBin) const { return iPtBin*3;}
   Int_t GetSignalHistoIndex(Int_t iPtBin) const { return iPtBin*3+1;}
   Int_t GetBackgroundHistoIndex(Int_t iPtBin) const { return iPtBin*3+2;}
   Int_t GetLSHistoIndex(Int_t iPtBin)const { return iPtBin*5;}
+  Int_t CheckOrigin(const AliAODMCParticle* mcPart, const TClonesArray* mcArray) const;
 
-  void CalculateInvMasses(AliAODRecoDecayHF* d,Double_t* &masses,Int_t& nmasses);
+  void FillDplus(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Int_t isSel);
+  void FillD02p(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index, Int_t isSel);
+  void FillDs(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Int_t isSel,Int_t optDecay);
+  void FillDstar(AliAODRecoCascadeHF* dstarD0pi,TClonesArray *arrayMC,Int_t index,Int_t isSel);
+  void FillD04p(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Int_t isSel);
+  void FillLambdac(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index, Int_t isSel);
 
-  void FillDplus(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Double_t* masses,Int_t isSel);
-  void FillD02p(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Double_t* masses, Int_t isSel);
-  void FillDs(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Double_t* masses,Int_t isSel);
-  void FillDstar(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Double_t* masses,Int_t isSel);
-  void FillD04p(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Double_t* masses,Int_t isSel);
-  void FillLambdac(AliAODRecoDecayHF* d,TClonesArray *arrayMC,Int_t index,Double_t* masses,Int_t isSel);
 
-
-  enum {kMaxPtBins=5};
-  enum {kMaxCutVar=5};
+  enum {kMaxPtBins=8};
+  enum {kMaxCutVar=10};
   enum {kMaxSteps=10};
   enum {kMaxNHist=500000};
   enum {kDplustoKpipi,kD0toKpi,kDstartoKpipi,kDstoKKpi,kD0toKpipipi,kLambdactopKpi};
@@ -84,14 +111,23 @@ class AliAnalysisTaskSESignificance : public AliAnalysisTaskSE
   AliRDHFCuts *fRDCuts;//prong cut values
   Int_t fNPtBins; //number of pt bins
   Bool_t fReadMC;    //flag for access to MC
+  Bool_t fUseSelBit;    //flag to use selection bit (speed up candidates selection)
+  FeedDownEnum fBFeedDown; //flag to search for D from B decays
   Int_t fDecChannel; //decay channel identifier
-  Int_t fSelectionlevel;//selection level: kALL,kTracks,kCandidate
+  Int_t fPDGmother;  // PDG code of D meson
+  Int_t fNProngs;         // number of prong of the decay channel  
+  Int_t fPDGdaughters[4]; // PDG codes of daughters
+  TString fBranchName;    // AOD branch name for channel
+  Int_t fSelectionlevel;  //selection level: kALL,kTracks,kCandidate
+  Int_t   fNVars;         // number of selection variables
+  Float_t fVars[kMaxCutVar];       // array with values of cut variables
   Int_t fNBins;  //number of bins in the mass histograms
   Int_t fPartOrAndAntiPart;  //fill histograms with particle only (+1), antiparticle only (-1), both (0)
+  Int_t fDsChannel;          // Ds resonant channel selected
+  Int_t fPDGDStarToD0pi[2]; //PDG codes for the particles in the D* -> pi + D0 decay
+  Int_t fPDGD0ToKpi[2];    //PDG codes for the particles in the D0 -> K + pi decay
 
-  ClassDef(AliAnalysisTaskSESignificance,2); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates
+  ClassDef(AliAnalysisTaskSESignificance,5); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates
 };
 
 #endif
-
-