]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/vertexingHF/AliAnalysisTaskSESelectHF4Prong.h
Updates in PbPb cuts (Andrea Rossi)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliAnalysisTaskSESelectHF4Prong.h
index d988cb1a8d7eb5b9bfd49c8de8d5a0452df2a6e6..b1fa5237797246a35cc4aa4365242a55a4a67dd0 100644 (file)
 #include <TChain.h>
 
 #include "AliAnalysisTaskSE.h"
-#include "AliAODEvent.h"\r
-#include "AliAnalysisManager.h"
-#include "AliAnalysisVertexingHF.h"
-#include "AliRDHFCuts.h"
 #include "AliRDHFCutsD0toKpipipi.h"
-
+#include "AliAODMCParticle.h"
+class AliAODEvent;\r
+class AliAnalysisManager;
+class AliAnalysisVertexingHF;
+class AliRDHFCuts;
 
 class AliAnalysisTaskSESelectHF4Prong : public AliAnalysisTaskSE
 {
@@ -36,14 +36,24 @@ class AliAnalysisTaskSESelectHF4Prong : public AliAnalysisTaskSE
   AliAnalysisTaskSESelectHF4Prong(const char *name,AliRDHFCutsD0toKpipipi* cuts);
   virtual ~AliAnalysisTaskSESelectHF4Prong();
 
-
   // Implementation of interface methods
   virtual void UserCreateOutputObjects();
   virtual void Init();
   virtual void LocalInit() {Init();}
   virtual void UserExec(Option_t *option);
   virtual void Terminate(Option_t *option);
+
+  void SetPtBinH(Double_t* ptlimits);
+  void PrintPtBinHandMCFlag();
+  void SetMCTruth(int flag) {fMCTruth = flag;};
+  Int_t GetMCTruth() const {return fMCTruth;}
   
+  void AnalysisReflection(AliAODEvent* aodIn, AliAODRecoDecayHF4Prong* d, Int_t hyp01, Int_t hyp02, Int_t hyp03, Int_t hyp04);
+  Int_t StudyMCTruth(TClonesArray* mcArray, AliAODRecoDecayHF4Prong* d);
+  void FillReflHistos(AliAODRecoDecayHF4Prong* d, Int_t hyp01, Int_t hyp02, Int_t hyp03, Int_t hyp04, Int_t flagLayer1, Int_t flagLayer2, Int_t flagLayer3, Int_t flagLayer4);
+  void FillReflD0Histos(AliAODRecoDecayHF4Prong* d, Int_t hyp01, Int_t hyp02, Int_t hyp03, Int_t hyp04, Int_t flagLayforD0_1, Int_t flagLayforD0_2, Int_t flagLayforD0_3, Int_t flagLayforD0_4);
+  void FillReflD0barHistos(AliAODRecoDecayHF4Prong* d, Int_t hyp01, Int_t hyp02, Int_t hyp03, Int_t hyp04, Int_t flagLayforD0bar_1, Int_t flagLayforD0bar_2, Int_t flagLayforD0bar_3, Int_t flagLayforD0bar_4);
  private:
 
   AliAnalysisTaskSESelectHF4Prong(const AliAnalysisTaskSESelectHF4Prong &source);
@@ -51,9 +61,11 @@ class AliAnalysisTaskSESelectHF4Prong : public AliAnalysisTaskSE
   TClonesArray *fVerticesHFTClArr;     //! Array of heavy-flavour vertices
   TClonesArray *fCharm4ProngTClArr;        //! Array of D0->K3pi
 
-  Double_t fmassD0[2];
-  Double_t fmassD0bar[2];
-  Int_t fSelected;
+  Double_t fPtBinH[6];                       //bin i has pt between values i and i+1
+  Double_t fmassD0[2];                       //!To store invariant mass for D0 hypotheses
+  Double_t fmassD0bar[2];                    //!To store invariant mass for D0bar hypotheses
+  Int_t fSelected;                           //!Flag for selection of candidate
+  Int_t fMCTruth;                            //flag for MC truth analysis
 
   TList *fOutput;                             //! list send on output slot 1
   TList *fOutput2;                            //! list send on output slot 2
@@ -63,46 +75,56 @@ class AliAnalysisTaskSESelectHF4Prong : public AliAnalysisTaskSE
   TList *fOutputC;                            //! list send on output slot 6
 
   //output histograms\r
-  TH1F *fhInvMassD0Sum_10Mev_Bin1;                        //! Invariant mass D01+D02 (good hyp) _10Mev BIN1
-  TH1F *fhInvMassD0barSum_10Mev_Bin1;                     //! Invariant mass D0bar1+D0bar2 (good hyp) _10Mev
-  TH1F *fhInvMassSumAll_10Mev_Bin1;                       //! Invariant mass superimpose (good hyp only)_10Mev
-  TH1F *fhInvMassD0Sum_5Mev_Bin1;                         //! Invariant mass D01+D02 (good hyp) _5Mev
-  TH1F *fhInvMassD0barSum_5Mev_Bin1;                      //! Invariant mass D0bar1+D0bar2 (good hyp) _5Mev
-  TH1F *fhInvMassSumAll_5Mev_Bin1;                        //! Invariant mass superimpose (good hyp only)_5Mev
-
-  TH1F *fhInvMassD0Sum_10Mev_Bin2;                        //! Invariant mass D01+D02 (good hyp) _10Mev BIN2
-  TH1F *fhInvMassD0barSum_10Mev_Bin2;                     //! Invariant mass D0bar1+D0bar2 (good hyp) _10Mev
-  TH1F *fhInvMassSumAll_10Mev_Bin2;                       //! Invariant mass superimpose (good hyp only)_10Mev
-  TH1F *fhInvMassD0Sum_5Mev_Bin2;                         //! Invariant mass D01+D02 (good hyp) _5Mev
-  TH1F *fhInvMassD0barSum_5Mev_Bin2;                      //! Invariant mass D0bar1+D0bar2 (good hyp) _5Mev
-  TH1F *fhInvMassSumAll_5Mev_Bin2;                        //! Invariant mass superimpose (good hyp only)_5Mev
-
-  TH1F *fhInvMassD0Sum_10Mev_Bin3;                        //! Invariant mass D01+D02 (good hyp) _10Mev BIN3
-  TH1F *fhInvMassD0barSum_10Mev_Bin3;                     //! Invariant mass D0bar1+D0bar2 (good hyp) _10Mev
-  TH1F *fhInvMassSumAll_10Mev_Bin3;                       //! Invariant mass superimpose (good hyp only)_10Mev
-  TH1F *fhInvMassD0Sum_5Mev_Bin3;                         //! Invariant mass D01+D02 (good hyp) _5Mev
-  TH1F *fhInvMassD0barSum_5Mev_Bin3;                      //! Invariant mass D0bar1+D0bar2 (good hyp) _5Mev
-  TH1F *fhInvMassSumAll_5Mev_Bin3;                        //! Invariant mass superimpose (good hyp only)_5Mev
-
-  TH1F *fhInvMassD0Sum_10Mev_Bin4;                        //! Invariant mass D01+D02 (good hyp) _10Mev BIN4
-  TH1F *fhInvMassD0barSum_10Mev_Bin4;                     //! Invariant mass D0bar1+D0bar2 (good hyp) _10Mev
-  TH1F *fhInvMassSumAll_10Mev_Bin4;                       //! Invariant mass superimpose (good hyp only)_10Mev
-  TH1F *fhInvMassD0Sum_5Mev_Bin4;                         //! Invariant mass D01+D02 (good hyp) _5Mev
-  TH1F *fhInvMassD0barSum_5Mev_Bin4;                      //! Invariant mass D0bar1+D0bar2 (good hyp) _5Mev
-  TH1F *fhInvMassSumAll_5Mev_Bin4;                        //! Invariant mass superimpose (good hyp only)_5Mev
-
-  TH1F *fhInvMassD0Sum_10Mev_Bin5;                        //! Invariant mass D01+D02 (good hyp) _10Mev BIN5
-  TH1F *fhInvMassD0barSum_10Mev_Bin5;                     //! Invariant mass D0bar1+D0bar2 (good hyp) _10Mev
-  TH1F *fhInvMassSumAll_10Mev_Bin5;                       //! Invariant mass superimpose (good hyp only)_10Mev
-  TH1F *fhInvMassD0Sum_5Mev_Bin5;                         //! Invariant mass D01+D02 (good hyp) _5Mev
-  TH1F *fhInvMassD0barSum_5Mev_Bin5;                      //! Invariant mass D0bar1+D0bar2 (good hyp) _5Mev
-  TH1F *fhInvMassSumAll_5Mev_Bin5;                        //! Invariant mass superimpose (good hyp only)_5Mev
-
-  TH1F *fhInvMassMultipleOnly_Bin1;                      //! Invariant mass superimpose good hyp only for multiple hyps accepted Bin1
-  TH1F *fhInvMassMultipleOnly_Bin2;                      //! Invariant mass superimpose good hyp only for multiple hyps accepted Bin2
-  TH1F *fhInvMassMultipleOnly_Bin3;                      //! Invariant mass superimpose good hyp only for multiple hyps accepted Bin3
-  TH1F *fhInvMassMultipleOnly_Bin4;                      //! Invariant mass superimpose good hyp only for multiple hyps accepted Bin4
-  TH1F *fhInvMassMultipleOnly_Bin5;                      //! Invariant mass superimpose good hyp only for multiple hyps accepted Bin5
+  TH1F *fhInvMassD0Sum10MevBin1;                        //! Invariant mass D01+D02 (good hyp) 10Mev BIN1
+  TH1F *fhInvMassD0barSum10MevBin1;                     //! Invariant mass D0bar1+D0bar2 (good hyp) 10Mev
+  TH1F *fhInvMassSumAll10MevBin1;                       //! Invariant mass superimpose (good hyp only) 10Mev
+  TH1F *fhInvMassD0Sum5MevBin1;                         //! Invariant mass D01+D02 (good hyp) 5Mev
+  TH1F *fhInvMassD0barSum5MevBin1;                      //! Invariant mass D0bar1+D0bar2 (good hyp) 5Mev
+  TH1F *fhInvMassSumAll5MevBin1;                        //! Invariant mass superimpose (good hyp only) 5Mev
+
+  TH1F *fhInvMassD0Sum10MevBin2;                        //! Invariant mass D01+D02 (good hyp) 10Mev BIN2
+  TH1F *fhInvMassD0barSum10MevBin2;                     //! Invariant mass D0bar1+D0bar2 (good hyp) 10Mev
+  TH1F *fhInvMassSumAll10MevBin2;                       //! Invariant mass superimpose (good hyp only) 10Mev
+  TH1F *fhInvMassD0Sum5MevBin2;                         //! Invariant mass D01+D02 (good hyp) 5Mev
+  TH1F *fhInvMassD0barSum5MevBin2;                      //! Invariant mass D0bar1+D0bar2 (good hyp) 5Mev
+  TH1F *fhInvMassSumAll5MevBin2;                        //! Invariant mass superimpose (good hyp only) 5Mev
+
+  TH1F *fhInvMassD0Sum10MevBin3;                        //! Invariant mass D01+D02 (good hyp) 10Mev BIN3
+  TH1F *fhInvMassD0barSum10MevBin3;                     //! Invariant mass D0bar1+D0bar2 (good hyp) 10Mev
+  TH1F *fhInvMassSumAll10MevBin3;                       //! Invariant mass superimpose (good hyp only) 10Mev
+  TH1F *fhInvMassD0Sum5MevBin3;                         //! Invariant mass D01+D02 (good hyp) 5Mev
+  TH1F *fhInvMassD0barSum5MevBin3;                      //! Invariant mass D0bar1+D0bar2 (good hyp) 5Mev
+  TH1F *fhInvMassSumAll5MevBin3;                        //! Invariant mass superimpose (good hyp only) 5Mev
+
+  TH1F *fhInvMassD0Sum10MevBin4;                        //! Invariant mass D01+D02 (good hyp) 10Mev BIN4
+  TH1F *fhInvMassD0barSum10MevBin4;                     //! Invariant mass D0bar1+D0bar2 (good hyp) 10Mev
+  TH1F *fhInvMassSumAll10MevBin4;                       //! Invariant mass superimpose (good hyp only) 10Mev
+  TH1F *fhInvMassD0Sum5MevBin4;                         //! Invariant mass D01+D02 (good hyp) 5Mev
+  TH1F *fhInvMassD0barSum5MevBin4;                      //! Invariant mass D0bar1+D0bar2 (good hyp) 5Mev
+  TH1F *fhInvMassSumAll5MevBin4;                        //! Invariant mass superimpose (good hyp only) 5Mev
+
+  TH1F *fhInvMassD0Sum10MevBin5;                        //! Invariant mass D01+D02 (good hyp) 10Mev BIN5
+  TH1F *fhInvMassD0barSum10MevBin5;                     //! Invariant mass D0bar1+D0bar2 (good hyp) 10Mev
+  TH1F *fhInvMassSumAll10MevBin5;                       //! Invariant mass superimpose (good hyp only) 10Mev
+  TH1F *fhInvMassD0Sum5MevBin5;                         //! Invariant mass D01+D02 (good hyp) 5Mev
+  TH1F *fhInvMassD0barSum5MevBin5;                      //! Invariant mass D0bar1+D0bar2 (good hyp) 5Mev
+  TH1F *fhInvMassSumAll5MevBin5;                        //! Invariant mass superimpose (good hyp only) 5Mev
+
+  TH2F *fhReflBin1;                                    //! Analysis for reflection - Bin1
+  TH2F *fhReflBin2;                                    //! Analysis for reflection - Bin2
+  TH2F *fhReflBin3;                                    //! Analysis for reflection - Bin3
+  TH2F *fhReflBin4;                                    //! Analysis for reflection - Bin4
+  TH2F *fhReflBin5;                                    //! Analysis for reflection - Bin5
+  TH2F *fhReflD0Bin1;                                  //! Analysis for reflection - D0 study - Bin1
+  TH2F *fhReflD0Bin2;                                  //! Analysis for reflection - D0 study - Bin2
+  TH2F *fhReflD0Bin3;                                  //! Analysis for reflection - D0 study - Bin3
+  TH2F *fhReflD0Bin4;                                  //! Analysis for reflection - D0 study - Bin4
+  TH2F *fhReflD0Bin5;                                  //! Analysis for reflection - D0 study - Bin5
+  TH2F *fhReflD0barBin1;                               //! Analysis for reflection - D0bar study - Bin1
+  TH2F *fhReflD0barBin2;                               //! Analysis for reflection - D0bar study - Bin2
+  TH2F *fhReflD0barBin3;                               //! Analysis for reflection - D0bar study - Bin3
+  TH2F *fhReflD0barBin4;                               //! Analysis for reflection - D0bar study - Bin4
+  TH2F *fhReflD0barBin5;                               //! Analysis for reflection - D0bar study - Bin5
 
   TH2F *fScatterP4PID;                                   //! K momentum vs like sign Pi momentum after PID
   TH2F *fPtVsY;                                                  //! Pt vs Y of selected candidates (by PPR cuts)
@@ -120,19 +142,17 @@ class AliAnalysisTaskSESelectHF4Prong : public AliAnalysisTaskSE
   TH1F *fCutPt;                                               //! Candidate D0 Pt
   TH1F *fCutY;                                        //! Candidate D0 Y
   TH1F *fPIDSel;                                      //! PID Selected
-  TH1F *fPIDSel_Bin1;                                 //! PID Selected Bin1
-  TH1F *fPIDSel_Bin2;                                 //! PID Selected Bin2
-  TH1F *fPIDSel_Bin3;                                 //! PID Selected Bin3
-  TH1F *fPIDSel_Bin4;                                 //! PID Selected Bin4
-  TH1F *fPIDSel_Bin5;                                 //! PID Selected Bin5
-  TH1F *fMultipleHyps;                                //! Multiple hypotesis accepted counter
-  TH1F *fMultipleHypsType;                            //! Multiple hypotesis accepted counter
+  TH1F *fPIDSelBin1;                                  //! PID Selected Bin1
+  TH1F *fPIDSelBin2;                                  //! PID Selected Bin2
+  TH1F *fPIDSelBin3;                                  //! PID Selected Bin3
+  TH1F *fPIDSelBin4;                                  //! PID Selected Bin4
+  TH1F *fPIDSelBin5;                                  //! PID Selected Bin5
+  TH2F *fMultipleHyps;                                //! Multiple hypotesis accepted counter
+  TH2F *fMultipleHypsType;                            //! Multiple hypotesis accepted counter
 
   TH1F *fPtSel;                                               //! Pt of selected candidates
  
-  AliRDHFCutsD0toKpipipi *fCuts;                       //! Cuts container
-
-  AliAnalysisVertexingHF *fVHF;        // analysis (used to pass the cuts)
+  AliRDHFCutsD0toKpipipi *fCuts;                       // Cuts container
 
   ClassDef(AliAnalysisTaskSESelectHF4Prong,2); // AliAnalysisTaskSE for the reconstruction of heavy-flavour decay candidates
 };