]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/vertexingHF/AliAnalysisTaskSECharmFraction.h
Fix for end-of-line style
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAnalysisTaskSECharmFraction.h
index 7ded1067a13240387e7bcc6cc029a5d491a1b158..b285c32376bbde86d505568e30ba3959a2f7b67a 100644 (file)
-#ifndef ALIANALYSISTASKSECHARMFRACTION_H\r
-#define ALIANALYSISTASKSECHARMFRACTION_H\r
-\r
-/* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *\r
- * See cxx source for full Copyright notice                               */\r
-\r
-//*************************************************************************\r
-// Class AliAnalysisTaskSECharmFraction\r
-// AliAnalysisTask for the extraction of the fraction of prompt charm\r
-// using the charm hadron impact parameter to the primary vertex\r
-//\r
-//\r
-// Author: Andrea Rossi andrea.rossi@pd.infn.it\r
-//*************************************************************************\r
-\r
-class TH1F;\r
-class TH2F;\r
-class AliAODDEvent;\r
-class AliAODMCHeader;\r
-class AliAODRecoDecayHF2Prong;\r
-class AliAODRecoDecayHF;\r
-class AliAODMCParticle;\r
-class AliAnalysisVertexingHF;\r
-class AliRDHFCutsD0toKpi;\r
-class AliNormalizationCounter;\r
-class AliVertexingHFUtils;\r
-\r
-#include "AliAnalysisTaskSE.h"\r
-\r
-class AliAnalysisTaskSECharmFraction : public AliAnalysisTaskSE {\r
- public:\r
-  AliAnalysisTaskSECharmFraction();\r
-  AliAnalysisTaskSECharmFraction(const char *name);\r
-  AliAnalysisTaskSECharmFraction(const char *name,AliRDHFCutsD0toKpi *cutsA,AliRDHFCutsD0toKpi *cutsB);\r
-\r
-  virtual ~AliAnalysisTaskSECharmFraction(); \r
-\r
-  // Implementation of interface methods\r
-  virtual void UserCreateOutputObjects();\r
-  virtual void Init();\r
-  virtual void LocalInit() {Init();}\r
-  virtual void UserExec(Option_t *option);\r
-  virtual void Terminate(Option_t *option);  \r
-  void SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}\r
-  void SetSplitMassD0D0bar(Bool_t splitD0D0bar=kTRUE){fsplitMassD0D0bar=splitD0D0bar;}\r
-  Bool_t GetIsSplitMassD0D0bar(){return fsplitMassD0D0bar;}\r
-  void SetUsePID(Bool_t pid){fusePID=pid;}\r
-  void SetAnalyzeLikeSign(Bool_t likesign=kFALSE){fLikeSign=likesign;}\r
-  void SetNMaxTrForVtx(const Int_t ntrMaxforVtx){fNtrMaxforVtx=ntrMaxforVtx;}\r
-  Int_t GetNMaxTrForVtx(){return fNtrMaxforVtx;}\r
-  void SetPtBins(Int_t nbins,const Float_t *ptbins);\r
-  void SetSignalInvMassCut(const Double_t signalInvMassCut=0.027){fsignalInvMassCut=signalInvMassCut;}\r
-  void SetLargeInvMassCut(const Double_t largeInvMassCut=2.){flargeInvMassCut=largeInvMassCut;}\r
-  void SetSideBandInvMassCut(const Double_t sidebandInvMassCut=0.054){// default value ~ 2x3 times inv mass resol.: a factor 2 is applied w.r.t. 3sigma, should be safe enough to exclude most of the reflections \r
-    fsidebandInvMassCut=sidebandInvMassCut;  \r
-  }\r
-  void SetSideBandInvMassWindow(const Double_t sidebandInvMassWindow=0.108){//~ 6 times inv. mass resol.\r
-    fsidebandInvMassWindow=sidebandInvMassWindow;\r
-  }  \r
-  void SetAcceptanceCut(const Double_t eta=0.8,const Double_t nITSpoints=5.,const Double_t nSPDpoints=2.){fAcceptanceCuts[0]=eta;fAcceptanceCuts[1]=nITSpoints;fAcceptanceCuts[2]=nSPDpoints;}\r
-  void SetStandardMassSelection();\r
-  Int_t SetStandardCuts(Double_t pt,Double_t invMassCut);\r
-  Int_t SetStandardCuts(Float_t *&ptbinlimits);\r
-  void CheckInvMassD0(AliAODRecoDecayHF2Prong *d,Double_t &invMassD0,Double_t &invMassD0bar,Bool_t &isPeakD0,Bool_t &isPeakD0bar,Bool_t &isSideBandD0,Bool_t &isSideBandD0bar);\r
-  void SetAnalysisLevel(Int_t level){fFastAnalysis=level;}\r
-  void SetCheckBitD0flag(Bool_t checkfl){fcheckD0Bit=checkfl;}\r
-  Bool_t GetCheckBitD0flag(){return fcheckD0Bit;}\r
-  Int_t GetAnalysisLevel(){return fFastAnalysis;}\r
-  Int_t CheckOrigin(const TClonesArray* arrayMC, const AliAODMCParticle *mcPartCandidate)const;\r
-  AliAODRecoDecayHF *GetD0toKPiSignalType(const AliAODRecoDecayHF2Prong *d,TClonesArray *arrayMC,Int_t &signaltype,Double_t &massMumTrue,Double_t *primaryVtx);\r
-  AliAODRecoDecayHF *GetD0toKPiSignalTypeObsolete(const AliAODRecoDecayHF2Prong *d,TClonesArray *arrayMC,Int_t &signaltype,Double_t &massMumTrue,Double_t *primaryVtx);\r
-  AliAODRecoDecayHF* ConstructFakeTrueSecVtx(const AliAODMCParticle *b1,const AliAODMCParticle *b2,const AliAODMCParticle *mum,Double_t *primaryVtxTrue);\r
-  void SetUseMC(Bool_t useMC){fUseMC=useMC;}\r
-  Bool_t SpecialSelD0(AliAODRecoDecayHF2Prong *d,Int_t &nusedforVtx);\r
-  Bool_t FillAziList(AliAODEvent *aod,Double_t azilist[30000],Int_t trkIDlist[30000],Int_t &nprim)const;\r
-  void FillAziHistos(AliAODRecoDecayHF2Prong *d,TList *&list,Int_t ptbin,Double_t azilist[30000],Int_t trkIDlist[30000],Int_t nprim,Int_t okD0,Int_t okD0bar,Bool_t isPeakD0,Bool_t isPeakD0bar,Bool_t isSideBandD0,Bool_t isSideBandD0bar)const;\r
-\r
-  AliAODVertex* GetPrimaryVtxSkipped(AliAODEvent *aodev,AliAODRecoDecayHF2Prong *d);\r
-  void SetRejecCandidateMCUpgrade(Bool_t selection){fselectForUpgrade=selection;}\r
-  void SetSkipEventSelection(Bool_t skip){fskipEventSelection=skip;}\r
-  void SetMaxZvtxForSkipEventSelection(Double_t zmax){fZvtxUpgr=zmax;}\r
-  /* ######### THE FOLLOWING IS FOR FURTHER IMPLEMENATION ############\r
-     Int_t GetPtBin(Double_t pt)const;\r
-     void SetD0Cuts(Int_t ptbin,Double_t &*d0cutsLoose,Double_t &*d0cutsTight);\r
-     \r
-     //  void InvMassSelection();\r
-     \r
-     void SetCheckMC(Bool_t checkMC){fcheckMC=checkMC;}\r
-     void SetCheckMC_D0(Bool_t check_D0){fcheckMCD0=check_D0;}\r
-     void SetCheckMC_2prongs(Bool_t check2prongs){fcheckMC2prongs=check2prongs;}\r
-     void SetCheckMC_prompt(Bool_t checkprompt){fcheckMCprompt=checkprompt;}\r
-     void SetCheckMC_fromB(Bool_t checkfromB){fcheckMCfromB=checkfromB;}\r
-     void SetCheckMC_fromDstar(Bool_t skipD0star){fSkipD0star=skipD0star;}\r
-     void SetUseCuts(Bool_t usecuts){fD0usecuts=usecuts;}\r
-     void SetSideBands(Double_t sideband){fSideBands=sideband;}\r
-     void SetStudyPureBackground(Bool_t back){fStudyPureBackground=back;}\r
-  */\r
-  AliRDHFCutsD0toKpi* GetLooseCut(){\r
-    return fCutsLoose;\r
-  }\r
-  AliRDHFCutsD0toKpi* GetTightCut(){\r
-    return fCutsTight;\r
-  }\r
-  /* void SetCutFunction(Int_t (*setcuts)(AliAnalysisTaskSECharmFraction*,Double_t,Double_t)){\r
-     fSetCuts=setcuts;\r
-     fStandCuts=kFALSE;\r
-     }\r
-  */\r
-  //  Int_t SetCuts(AliAnalysisTaskSECharmFraction *alchfr,Double_t pt,Double_t invMassCut);\r
-  \r
- private:\r
-  Bool_t FillHistos(AliAODRecoDecayHF2Prong *d,TList *&list,Int_t ptbin,Int_t okD0,Int_t okD0bar,Double_t invMassD0,Double_t invMassD0bar,Bool_t isPeakD0,Bool_t isPeakD0bar,Bool_t isSideBandD0,Bool_t isSideBandD0bar,Double_t massmumtrue,AliAODRecoDecayHF *aodDMC,Double_t *vtxTrue);\r
-  void FillHistoMCproperties(TClonesArray *arrayMC);\r
-\r
-  AliRDHFCutsD0toKpi *fCutsLoose;        // Loose cuts object\r
-  AliRDHFCutsD0toKpi *fCutsTight;      // Vertexer heavy flavour\r
-  Int_t fFastAnalysis;                  // Level of analysis speed: default is 1, switch it to 2 to fill the THnSparse\r
-  Bool_t  fReadMC;                          // Flag To switch on/off access to MC \r
-  Bool_t fcheckD0Bit;                       // Flag to check the D0 bit flag\r
-  Bool_t  fsplitMassD0D0bar;                // Flag to use two shistos for D0 and D0bar invariant masses\r
-  Bool_t  fLikeSign;                        // Flag to analyse Like Sign array\r
-  Bool_t  fusePID;                          // Flag to use PID\r
-  Double_t    fmD0PDG;                      //  MC D0 mass\r
-  Int_t        fnbins;                      // Number of pt bins\r
-  Float_t *fptbins;                        //[fnbins] ptbins \r
-  Int_t fNtrMaxforVtx;                      // N Max acceptable tracks used for vertex (0,1,2)\r
-  Double_t fptAll;                          //!Sum of pt of the reco tracks\r
-  Double_t fptAllSq;                        //!Sum of the square of the pt of the reco tracks\r
-  Double_t fptMax[3];                       //!Three largest track pt in the event\r
-  Double_t fAcceptanceCuts[3];                // array with acceptance cuts\r
-  Double_t fsignalInvMassCut;               // invariant mass cut to define signal region\r
-  Double_t flargeInvMassCut;                // invariant mass cut to accept all inv mass window\r
-  Double_t fsidebandInvMassCut;             // invariant mass cut to define side band region lower limit\r
-  Double_t fsidebandInvMassWindow;          // invariant mass cut to define side band region width\r
-  Bool_t fUseMC;                            // flag to use or not MC info\r
-  Bool_t fCleanCandOwnVtx;                  // flag to switch on/off cleaning of the candidate own vtx\r
-  TH1F *fNentries;                          //!histo for #AOD analysed, container 1\r
-  TH1F *fSignalType;                        //!histo for the type of MC signal , container 2\r
-  TH1F *fSignalTypeLsCuts;                 //!histo for the type of MC signal with loose cuts , container 3\r
-  TH1F *fSignalTypeTghCuts;                //!histo for the type of MC signal with tight cuts, container 4\r
-  AliNormalizationCounter *fCounter;        //!counter for the normalization \r
-  TList *flistMCproperties;               //!TLists for MC properties of D0 w.r.t. B mesons and c quarks cntainer 5\r
-  TList *flistNoCutsSignal;               //!TList for signal (D prompt) with nocuts, container 6\r
-  TList *flistNoCutsBack;               //!TList for background with nocuts, container 7\r
-  TList *flistNoCutsFromB;               //!TList for D from B or D from Dstar from Bwith nocuts, container 8\r
-  TList *flistNoCutsFromDstar;               //!TList for D from Dstar with nocuts, container 9\r
-  TList *flistNoCutsOther;               //!TList for others with nocuts, container 10\r
-  TList *flistLsCutsSignal;               //!TList for signal (D prompt) with loose cuts, container 11\r
-  TList *flistLsCutsBack;               //!TList for background with loose cuts, container 12\r
-  TList *flistLsCutsFromB;               //!TList for D from B or D from Dstar from B with loose cuts, container 13\r
-  TList *flistLsCutsFromDstar;               //!TList for D from Dstar with loose cuts, container 14\r
-  TList *flistLsCutsOther;               //!TList for others with loose cuts, container 15\r
-  TList *flistTghCutsSignal;               //!TList for signal (D prompt) with tight cuts, container 16\r
-  TList *flistTghCutsBack;               //!TList for backgrnd with tight cuts, container 17\r
-  TList *flistTghCutsFromB;               //!TList for D from B or D from Dstar from Bwith tight cuts, container 18\r
-  TList *flistTghCutsFromDstar;               //!TList for D from Dstar Dstar with tight cuts, container 19\r
-  TList *flistTghCutsOther;               //!TList for others with tight cuts, container 20\r
-  AliVertexingHFUtils *fVertUtil;         // vertexing HF Util\r
-  Bool_t fselectForUpgrade;               // switch to reject candidates from HIJING and not Pythia for upgrade studies\r
-  Bool_t fskipEventSelection;               // switch to skip event selection (for upgrade studies)\r
-  Double_t fZvtxUpgr;                       // cut value on max zvtx used ONLY if fskipEventSelection is kTRUE\r
-  /*  Bool_t       fD0usecuts;            // Switch on the use of the cuts             TO BE IMPLEMENTED \r
-      Bool_t       fcheckMC;              //  Switch on MC check: minimum check is same mother  TO BE IMPLEMENTED\r
-      Bool_t       fcheckMCD0;           //  check the mother is a D0                  TO BE IMPLEMENTED\r
-      Bool_t       fcheckMC2prongs;         //  check the decay is in two prongs       TO BE IMPLEMENTED  \r
-      Bool_t       fcheckMCprompt;       //  check the D0 comes from a c quark         TO BE IMPLEMENTED\r
-      Bool_t       fcheckMCfromB;        //  check the D0 comes from a b quark         TO BE IMPLEMENTED\r
-      Bool_t       fSkipD0star;           // skip if D0 comes from a D*                TO BE IMPLEMENTED\r
-      Bool_t  fStudyd0fromBTrue;         // Flag for analyze true impact par of D0 from B       TO BE IMPLEMENTED \r
-      Bool_t  fStudyPureBackground;      // Flag to study the background (reverse the selection on the signal)     TO BE IMPLEMENTED \r
-      Double_t  fSideBands;                //Side bands selection (see cxx)            TO BE IMPLEMENTED\r
-  */\r
-  AliAnalysisTaskSECharmFraction(const AliAnalysisTaskSECharmFraction&); // not implemented\r
-  AliAnalysisTaskSECharmFraction& operator=(const AliAnalysisTaskSECharmFraction&); // not implemented\r
-  \r
-  ClassDef(AliAnalysisTaskSECharmFraction,5); // analysis task for prompt charm fraction\r
-};\r
-\r
-#endif\r
+#ifndef ALIANALYSISTASKSECHARMFRACTION_H
+#define ALIANALYSISTASKSECHARMFRACTION_H
+
+/* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+//*************************************************************************
+// Class AliAnalysisTaskSECharmFraction
+// AliAnalysisTask for the extraction of the fraction of prompt charm
+// using the charm hadron impact parameter to the primary vertex
+//
+//
+// Author: Andrea Rossi andrea.rossi@pd.infn.it
+//*************************************************************************
+
+class TH1F;
+class TH2F;
+class AliAODDEvent;
+class AliAODMCHeader;
+class AliAODRecoDecayHF2Prong;
+class AliAODRecoDecayHF;
+class AliAODMCParticle;
+class AliAnalysisVertexingHF;
+class AliRDHFCutsD0toKpi;
+class AliNormalizationCounter;
+class AliVertexingHFUtils;
+
+#include "AliAnalysisTaskSE.h"
+
+class AliAnalysisTaskSECharmFraction : public AliAnalysisTaskSE {
+ public:
+  AliAnalysisTaskSECharmFraction();
+  AliAnalysisTaskSECharmFraction(const char *name);
+  AliAnalysisTaskSECharmFraction(const char *name,AliRDHFCutsD0toKpi *cutsA,AliRDHFCutsD0toKpi *cutsB);
+
+  virtual ~AliAnalysisTaskSECharmFraction(); 
+
+  // 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 SetReadMC(Bool_t readMC=kTRUE){fReadMC=readMC;}
+  void SetSplitMassD0D0bar(Bool_t splitD0D0bar=kTRUE){fsplitMassD0D0bar=splitD0D0bar;}
+  Bool_t GetIsSplitMassD0D0bar(){return fsplitMassD0D0bar;}
+  void SetUsePID(Bool_t pid){fusePID=pid;}
+  void SetAnalyzeLikeSign(Bool_t likesign=kFALSE){fLikeSign=likesign;}
+  void SetNMaxTrForVtx(const Int_t ntrMaxforVtx){fNtrMaxforVtx=ntrMaxforVtx;}
+  Int_t GetNMaxTrForVtx(){return fNtrMaxforVtx;}
+  void SetPtBins(Int_t nbins,const Float_t *ptbins);
+  void SetSignalInvMassCut(const Double_t signalInvMassCut=0.027){fsignalInvMassCut=signalInvMassCut;}
+  void SetLargeInvMassCut(const Double_t largeInvMassCut=2.){flargeInvMassCut=largeInvMassCut;}
+  void SetSideBandInvMassCut(const Double_t sidebandInvMassCut=0.054){// default value ~ 2x3 times inv mass resol.: a factor 2 is applied w.r.t. 3sigma, should be safe enough to exclude most of the reflections 
+    fsidebandInvMassCut=sidebandInvMassCut;  
+  }
+  void SetSideBandInvMassWindow(const Double_t sidebandInvMassWindow=0.108){//~ 6 times inv. mass resol.
+    fsidebandInvMassWindow=sidebandInvMassWindow;
+  }  
+  void SetAcceptanceCut(const Double_t eta=0.8,const Double_t nITSpoints=5.,const Double_t nSPDpoints=2.){fAcceptanceCuts[0]=eta;fAcceptanceCuts[1]=nITSpoints;fAcceptanceCuts[2]=nSPDpoints;}
+  void SetStandardMassSelection();
+  Int_t SetStandardCuts(Double_t pt,Double_t invMassCut);
+  Int_t SetStandardCuts(Float_t *&ptbinlimits);
+  void CheckInvMassD0(AliAODRecoDecayHF2Prong *d,Double_t &invMassD0,Double_t &invMassD0bar,Bool_t &isPeakD0,Bool_t &isPeakD0bar,Bool_t &isSideBandD0,Bool_t &isSideBandD0bar);
+  void SetAnalysisLevel(Int_t level){fFastAnalysis=level;}
+  void SetCheckBitD0flag(Bool_t checkfl){fcheckD0Bit=checkfl;}
+  Bool_t GetCheckBitD0flag(){return fcheckD0Bit;}
+  Int_t GetAnalysisLevel(){return fFastAnalysis;}
+  Int_t CheckOrigin(const TClonesArray* arrayMC, const AliAODMCParticle *mcPartCandidate)const;
+  AliAODRecoDecayHF *GetD0toKPiSignalType(const AliAODRecoDecayHF2Prong *d,TClonesArray *arrayMC,Int_t &signaltype,Double_t &massMumTrue,Double_t *primaryVtx);
+  AliAODRecoDecayHF *GetD0toKPiSignalTypeObsolete(const AliAODRecoDecayHF2Prong *d,TClonesArray *arrayMC,Int_t &signaltype,Double_t &massMumTrue,Double_t *primaryVtx);
+  AliAODRecoDecayHF* ConstructFakeTrueSecVtx(const AliAODMCParticle *b1,const AliAODMCParticle *b2,const AliAODMCParticle *mum,Double_t *primaryVtxTrue);
+  void SetUseMC(Bool_t useMC){fUseMC=useMC;}
+  Bool_t SpecialSelD0(AliAODRecoDecayHF2Prong *d,Int_t &nusedforVtx);
+  Bool_t FillAziList(AliAODEvent *aod,Double_t azilist[30000],Int_t trkIDlist[30000],Int_t &nprim)const;
+  void FillAziHistos(AliAODRecoDecayHF2Prong *d,TList *&list,Int_t ptbin,Double_t azilist[30000],Int_t trkIDlist[30000],Int_t nprim,Int_t okD0,Int_t okD0bar,Bool_t isPeakD0,Bool_t isPeakD0bar,Bool_t isSideBandD0,Bool_t isSideBandD0bar)const;
+
+  AliAODVertex* GetPrimaryVtxSkipped(AliAODEvent *aodev,AliAODRecoDecayHF2Prong *d);
+  void SetRejecCandidateMCUpgrade(Bool_t selection){fselectForUpgrade=selection;}
+  void SetSkipEventSelection(Bool_t skip){fskipEventSelection=skip;}
+  void SetMaxZvtxForSkipEventSelection(Double_t zmax){fZvtxUpgr=zmax;}
+  /* ######### THE FOLLOWING IS FOR FURTHER IMPLEMENATION ############
+     Int_t GetPtBin(Double_t pt)const;
+     void SetD0Cuts(Int_t ptbin,Double_t &*d0cutsLoose,Double_t &*d0cutsTight);
+     
+     //  void InvMassSelection();
+     
+     void SetCheckMC(Bool_t checkMC){fcheckMC=checkMC;}
+     void SetCheckMC_D0(Bool_t check_D0){fcheckMCD0=check_D0;}
+     void SetCheckMC_2prongs(Bool_t check2prongs){fcheckMC2prongs=check2prongs;}
+     void SetCheckMC_prompt(Bool_t checkprompt){fcheckMCprompt=checkprompt;}
+     void SetCheckMC_fromB(Bool_t checkfromB){fcheckMCfromB=checkfromB;}
+     void SetCheckMC_fromDstar(Bool_t skipD0star){fSkipD0star=skipD0star;}
+     void SetUseCuts(Bool_t usecuts){fD0usecuts=usecuts;}
+     void SetSideBands(Double_t sideband){fSideBands=sideband;}
+     void SetStudyPureBackground(Bool_t back){fStudyPureBackground=back;}
+  */
+  AliRDHFCutsD0toKpi* GetLooseCut(){
+    return fCutsLoose;
+  }
+  AliRDHFCutsD0toKpi* GetTightCut(){
+    return fCutsTight;
+  }
+  /* void SetCutFunction(Int_t (*setcuts)(AliAnalysisTaskSECharmFraction*,Double_t,Double_t)){
+     fSetCuts=setcuts;
+     fStandCuts=kFALSE;
+     }
+  */
+  //  Int_t SetCuts(AliAnalysisTaskSECharmFraction *alchfr,Double_t pt,Double_t invMassCut);
+  
+ private:
+  Bool_t FillHistos(AliAODRecoDecayHF2Prong *d,TList *&list,Int_t ptbin,Int_t okD0,Int_t okD0bar,Double_t invMassD0,Double_t invMassD0bar,Bool_t isPeakD0,Bool_t isPeakD0bar,Bool_t isSideBandD0,Bool_t isSideBandD0bar,Double_t massmumtrue,AliAODRecoDecayHF *aodDMC,Double_t *vtxTrue);
+  void FillHistoMCproperties(TClonesArray *arrayMC);
+
+  AliRDHFCutsD0toKpi *fCutsLoose;        // Loose cuts object
+  AliRDHFCutsD0toKpi *fCutsTight;      // Vertexer heavy flavour
+  Int_t fFastAnalysis;                  // Level of analysis speed: default is 1, switch it to 2 to fill the THnSparse
+  Bool_t  fReadMC;                          // Flag To switch on/off access to MC 
+  Bool_t fcheckD0Bit;                       // Flag to check the D0 bit flag
+  Bool_t  fsplitMassD0D0bar;                // Flag to use two shistos for D0 and D0bar invariant masses
+  Bool_t  fLikeSign;                        // Flag to analyse Like Sign array
+  Bool_t  fusePID;                          // Flag to use PID
+  Double_t    fmD0PDG;                      //  MC D0 mass
+  Int_t        fnbins;                      // Number of pt bins
+  Float_t *fptbins;                        //[fnbins] ptbins 
+  Int_t fNtrMaxforVtx;                      // N Max acceptable tracks used for vertex (0,1,2)
+  Double_t fptAll;                          //!Sum of pt of the reco tracks
+  Double_t fptAllSq;                        //!Sum of the square of the pt of the reco tracks
+  Double_t fptMax[3];                       //!Three largest track pt in the event
+  Double_t fAcceptanceCuts[3];                // array with acceptance cuts
+  Double_t fsignalInvMassCut;               // invariant mass cut to define signal region
+  Double_t flargeInvMassCut;                // invariant mass cut to accept all inv mass window
+  Double_t fsidebandInvMassCut;             // invariant mass cut to define side band region lower limit
+  Double_t fsidebandInvMassWindow;          // invariant mass cut to define side band region width
+  Bool_t fUseMC;                            // flag to use or not MC info
+  Bool_t fCleanCandOwnVtx;                  // flag to switch on/off cleaning of the candidate own vtx
+  TH1F *fNentries;                          //!histo for #AOD analysed, container 1
+  TH1F *fSignalType;                        //!histo for the type of MC signal , container 2
+  TH1F *fSignalTypeLsCuts;                 //!histo for the type of MC signal with loose cuts , container 3
+  TH1F *fSignalTypeTghCuts;                //!histo for the type of MC signal with tight cuts, container 4
+  AliNormalizationCounter *fCounter;        //!counter for the normalization 
+  TList *flistMCproperties;               //!TLists for MC properties of D0 w.r.t. B mesons and c quarks cntainer 5
+  TList *flistNoCutsSignal;               //!TList for signal (D prompt) with nocuts, container 6
+  TList *flistNoCutsBack;               //!TList for background with nocuts, container 7
+  TList *flistNoCutsFromB;               //!TList for D from B or D from Dstar from Bwith nocuts, container 8
+  TList *flistNoCutsFromDstar;               //!TList for D from Dstar with nocuts, container 9
+  TList *flistNoCutsOther;               //!TList for others with nocuts, container 10
+  TList *flistLsCutsSignal;               //!TList for signal (D prompt) with loose cuts, container 11
+  TList *flistLsCutsBack;               //!TList for background with loose cuts, container 12
+  TList *flistLsCutsFromB;               //!TList for D from B or D from Dstar from B with loose cuts, container 13
+  TList *flistLsCutsFromDstar;               //!TList for D from Dstar with loose cuts, container 14
+  TList *flistLsCutsOther;               //!TList for others with loose cuts, container 15
+  TList *flistTghCutsSignal;               //!TList for signal (D prompt) with tight cuts, container 16
+  TList *flistTghCutsBack;               //!TList for backgrnd with tight cuts, container 17
+  TList *flistTghCutsFromB;               //!TList for D from B or D from Dstar from Bwith tight cuts, container 18
+  TList *flistTghCutsFromDstar;               //!TList for D from Dstar Dstar with tight cuts, container 19
+  TList *flistTghCutsOther;               //!TList for others with tight cuts, container 20
+  AliVertexingHFUtils *fVertUtil;         // vertexing HF Util
+  Bool_t fselectForUpgrade;               // switch to reject candidates from HIJING and not Pythia for upgrade studies
+  Bool_t fskipEventSelection;               // switch to skip event selection (for upgrade studies)
+  Double_t fZvtxUpgr;                       // cut value on max zvtx used ONLY if fskipEventSelection is kTRUE
+  /*  Bool_t       fD0usecuts;            // Switch on the use of the cuts             TO BE IMPLEMENTED 
+      Bool_t       fcheckMC;              //  Switch on MC check: minimum check is same mother  TO BE IMPLEMENTED
+      Bool_t       fcheckMCD0;           //  check the mother is a D0                  TO BE IMPLEMENTED
+      Bool_t       fcheckMC2prongs;         //  check the decay is in two prongs       TO BE IMPLEMENTED  
+      Bool_t       fcheckMCprompt;       //  check the D0 comes from a c quark         TO BE IMPLEMENTED
+      Bool_t       fcheckMCfromB;        //  check the D0 comes from a b quark         TO BE IMPLEMENTED
+      Bool_t       fSkipD0star;           // skip if D0 comes from a D*                TO BE IMPLEMENTED
+      Bool_t  fStudyd0fromBTrue;         // Flag for analyze true impact par of D0 from B       TO BE IMPLEMENTED 
+      Bool_t  fStudyPureBackground;      // Flag to study the background (reverse the selection on the signal)     TO BE IMPLEMENTED 
+      Double_t  fSideBands;                //Side bands selection (see cxx)            TO BE IMPLEMENTED
+  */
+  AliAnalysisTaskSECharmFraction(const AliAnalysisTaskSECharmFraction&); // not implemented
+  AliAnalysisTaskSECharmFraction& operator=(const AliAnalysisTaskSECharmFraction&); // not implemented
+  
+  ClassDef(AliAnalysisTaskSECharmFraction,5); // analysis task for prompt charm fraction
+};
+
+#endif