#include <TH1F.h>
#include <TH3F.h>
+#include <TObjString.h>
#include <THnSparse.h>
#include "AliAnalysisTaskSE.h"
#include "AliAODTrack.h"
void SetReadMC(Bool_t read){fReadMC=read;}
- void SetEventMixingOn(){fDoEventMixing=kTRUE;}
- void SetEventMixingOff(){fDoEventMixing=kFALSE;}
- void SetMaxNumberOfEventsForMixing(Int_t maxn){fMaxNumberOfEventsForMixing=maxn;}
- void SetMaxzVertDistForMix(Double_t dist){
- fUsePoolsZ=kFALSE;
- fMaxzVertDistForMix=dist;
- }
- void SetMaxMultDiffForMix(Double_t maxd){
- fUsePoolsM=kFALSE;
- fMaxMultDiffForMix=maxd;
+ void SetEventMixingWithCuts(Double_t maxDeltaVz, Double_t maxDeltaMult){
+ fDoEventMixing=2; fMaxzVertDistForMix=maxDeltaVz; fMaxMultDiffForMix=maxDeltaMult;
}
+ void SetEventMixingWithPools(){fDoEventMixing=1;}
+ void SetEventMixingOff(){fDoEventMixing=0;}
+ void SetNumberOfEventsForMixing(Int_t minn){fNumberOfEventsForMixing=minn;}
+
void ConfigureZVertPools(Int_t nPools, Double_t* zVertLimits);
void ConfigureMultiplicityPools(Int_t nPools, Double_t* multLimits);
void SelectPromptD(){fPromptFeeddown=kPrompt;}
void SetPtBinWidth(Double_t binw){fPtBinWidth=binw;}
void SetEtaAccCut(Double_t etacut){fEtaAccCut=etacut;}
void SetPtAccCut(Double_t ptcut){fPtAccCut=ptcut;}
-
+ void SetMultiplicityRange(Double_t mmin=-0.5, Double_t mmax=199.5){
+ fMinMultiplicity=mmin;
+ fMaxMultiplicity=mmax;
+ }
+
void SetPIDstrategy(Int_t strat){fPIDstrategy=strat;}
void SetMaxPforIDPion(Double_t maxpIdPion){fmaxPforIDPion=maxpIdPion;}
void SetMaxPforIDKaon(Double_t maxpIdKaon){fmaxPforIDKaon=maxpIdKaon;}
Bool_t FillHistos(Int_t pdgD,Int_t nProngs, AliAODRecoDecay* tmpRD, Double_t* px, Double_t* py, Double_t* pz, UInt_t *pdgdau, TClonesArray *arrayMC, Int_t* dgLabels);
void FillLSHistos(Int_t pdgD,Int_t nProngs, AliAODRecoDecay* tmpRD, Double_t* px, Double_t* py, Double_t* pz, UInt_t *pdgdau, Int_t charge);
void FillMEHistos(Int_t pdgD,Int_t nProngs, AliAODRecoDecay* tmpRD, Double_t* px, Double_t* py, Double_t* pz, UInt_t *pdgdau);
+ void FillMEHistosLS(Int_t pdgD,Int_t nProngs, AliAODRecoDecay* tmpRD, Double_t* px, Double_t* py, Double_t* pz, UInt_t *pdgdau, Int_t charge);
void FillGenHistos(TClonesArray* arrayMC);
Bool_t CheckAcceptance(TClonesArray* arrayMC, Int_t nProng, Int_t *labDau);
- Bool_t CanBeMixed(Double_t zv1, Double_t zv2, Double_t mult1, Double_t mult2);
-
+ Int_t GetPoolIndex(Double_t zvert, Double_t mult);
+ void ResetPool(Int_t poolIndex);
+ void DoMixingWithPools(Int_t poolIndex);
+ void DoMixingWithCuts();
+ Bool_t CanBeMixed(Double_t zv1, Double_t zv2, Double_t mult1, Double_t mult2);
enum EMesonSpecies {kDzero, kDplus, kDstar, kDs};
enum EPrompFd {kNone,kPrompt,kFeeddown,kBoth};
enum EPIDstrategy {knSigma, kBayesianMaxProb, kBayesianThres};
TH1F *fHistCheckOriginSel; //!hist. of origin (c/b) of D meson
TH1F *fHistCheckDecChan; //!hist. of decay channel of D meson
TH1F *fHistCheckDecChanAcc; //!hist. of decay channel of D meson in acc.
- TH2F *fPtVsYGen; //! hist. of Y vs. Pt generated (all D)
- TH2F *fPtVsYGenLargeAcc; //! hist. of Y vs. Pt generated (|y|<0.9)
- TH2F *fPtVsYGenLimAcc; //! hist. of Y vs. Pt generated (|y|<0.5)
- TH2F *fPtVsYGenAcc; //! hist. of Y vs. Pt generated (D in acc)
- TH2F *fPtVsYReco; //! hist. of Y vs. Pt generated (Reco D)
+ TH3F *fPtVsYVsMultGen; //! hist. of Y vs. Pt vs. Mult generated (all D)
+ TH3F *fPtVsYVsMultGenLargeAcc; //! hist. of Y vs. Pt vs. Mult generated (|y|<0.9)
+ TH3F *fPtVsYVsMultGenLimAcc; //! hist. of Y vs. Pt vs. Mult generated (|y|<0.5)
+ TH3F *fPtVsYVsMultGenAcc; //! hist. of Y vs. Pt vs. Mult generated (D in acc)
+ TH3F *fPtVsYVsMultReco; //! hist. of Y vs. Pt vs. Mult generated (Reco D)
TH3F *fMassVsPtVsY; //! hist. of Y vs. Pt vs. Mass (all cand)
TH3F *fMassVsPtVsYRot; //! hist. of Y vs. Pt vs. Mass (rotations)
TH3F *fMassVsPtVsYLSpp; //! hist. of Y vs. Pt vs. Mass (like sign ++)
TH1F *fDeltaMass; //! hist. mass difference after rotations
THnSparse *fDeltaMassFullAnalysis; //! hist. mass difference after rotations with more details
TH3F *fMassVsPtVsYME; //! hist. of Y vs. Pt vs. Mass (mixedevents)
-
+ TH3F *fMassVsPtVsYMELSpp; //! hist. of Y vs. Pt vs. Mass (mixedevents)
+ TH3F *fMassVsPtVsYMELSmm; //! hist. of Y vs. Pt vs. Mass (mixedevents)
+ TH2F* fEventsPerPool; //! hist with number of events per pool
+ TH2F* fMixingsPerPool; //! hist with number of mixings per pool
UInt_t fFilterMask; // FilterMask
AliESDtrackCuts* fTrackCutsAll; // track selection
AliESDtrackCuts* fTrackCutsPion; // pion track selection
Double_t fBayesThresKaon; // threshold for kaon identification via Bayesian PID
Double_t fBayesThresPion; // threshold for pion identification via Bayesian PID
- Bool_t fDoEventMixing; // flag for event mixing
- Int_t fMaxNumberOfEventsForMixing; // maximum number of events to be used in event mixing
- Double_t fMaxzVertDistForMix; // cut on zvertex distance for event mixing
- Double_t fMaxMultDiffForMix; // cut on multiplicity difference for event mixing
- Bool_t fUsePoolsZ; // flag for using pools in z vertex
- Bool_t fUsePoolsM; // flag for using pools in multiplicity
+ Int_t fDoEventMixing; // flag for event mixing
+ Int_t fNumberOfEventsForMixing; // maximum number of events to be used in event mixing
+ Double_t fMaxzVertDistForMix; // cut on zvertex distance for event mixing with cuts
+ Double_t fMaxMultDiffForMix; // cut on multiplicity difference for event mixing with cuts
Int_t fNzVertPools; // number of pools in z vertex for event mixing
Int_t fNzVertPoolsLimSize; // number of pools in z vertex for event mixing +1
Double_t* fzVertPoolLims; //[fNzVertPoolsLimSize] limits of the pools in zVertex
Int_t fNMultPools; // number of pools in multiplicity for event mixing
Int_t fNMultPoolsLimSize; // number of pools in multiplicity for event mixing +1
Double_t* fMultPoolLims; //[fNMultPoolsLimSize] limits of the pools in multiplicity
-
- TTree* fEventBuffer; // structure for event mixing
+ Int_t fNOfPools; // number of pools
+ TTree** fEventBuffer; //! structure for event mixing
+ TObjString* fEventInfo; // unique event Id for event mixing checks
Double_t fVtxZ; // zVertex
Double_t fMultiplicity; // multiplicity
+ Double_t fMinMultiplicity; // lower limit for multiplcities in MC histos
+ Double_t fMaxMultiplicity; // upper limit for multiplcities in MC histos
TObjArray* fKaonTracks; // array of kaon-compatible tracks (TLorentzVectors)
TObjArray* fPionTracks; // array of pion-compatible tracks (TLorentzVectors)
- ClassDef(AliAnalysisTaskCombinHF,7); // D0D+ task from AOD tracks
+ ClassDef(AliAnalysisTaskCombinHF,10); // D0D+ task from AOD tracks
};
#endif