-#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