class AliHFEpid;\r
class TH1D;\r
class TH2D;\r
+class TF1;\r
class TProfile;\r
class TProfile2D;\r
class THnSparse;\r
class AliESDtrackCuts;\r
class AliHFEVZEROEventPlane;\r
class TArrayI;\r
+class AliAODMCHeader;\r
+class TClonesArray;\r
+class AliHFENonPhotonicElectron;\r
+class TTreeSRedirector;\r
\r
class AliAnalysisTaskHFEFlow: public AliAnalysisTaskSE {\r
- \r
public:\r
\r
typedef enum{\r
kElectronfromconversionboth = 1,\r
kElectronfrompi0 = 2,\r
kElectronfrompi0both = 3,\r
- kElectronfromC = 4,\r
- kElectronfromB = 5,\r
- kElectronfrometa = 6,\r
- kElectronfrometaboth = 7,\r
- kElectronfromother = 8\r
+ kElectronfrometa = 4,\r
+ kElectronfrometaboth = 5,\r
+ kElectronfromC = 6,\r
+ kElectronfromB = 7,\r
+ kElectronfromother = 8,\r
+ kNoElectron = 9\r
} FlowSource_t;\r
\r
typedef enum{\r
virtual void UserExec(Option_t */*option*/);\r
virtual void UserCreateOutputObjects();\r
\r
- void SetAODAnalysis(Bool_t aodAnalysis) { fAODAnalysis = aodAnalysis; };\r
- void SetUseFlagAOD(Bool_t useFlagAOD) { fUseFlagAOD = useFlagAOD; }\r
- void SetApplyCut(Bool_t applyCut) { fApplyCut = applyCut; }\r
- void SetFlags(ULong_t flags) { fFlags = flags; }\r
+ void SetAODAnalysis(Bool_t aodAnalysis) { fAODAnalysis = aodAnalysis; };\r
+ void SetUseFilterAOD(Bool_t useFilterAOD) { fUseFilterAOD = useFilterAOD; }\r
+ void SetApplyCut(Bool_t applyCut) { fApplyCut = applyCut; }\r
+ void SetFilter(ULong_t filter) { fFilter = filter; }\r
\r
AliHFEpid *GetPID() const { return fPID; }\r
+ AliHFEpid *GetPIDTOFOnly() const { return fPIDTOFOnly; }\r
AliHFEpidQAmanager *GetPIDQAManager() const { return fPIDqa; }\r
AliHFEpid *GetPIDBackground() const { return fPIDBackground; }\r
AliHFEpidQAmanager *GetPIDBackgroundQAManager() const { return fPIDBackgroundqa; }\r
+ AliHFENonPhotonicElectron *GetHFEBackgroundSubtraction() const { return fBackgroundSubtraction; }\r
\r
\r
+ void SetContamination(TF1 * const function,Int_t k) { fContamination[k] = function; };\r
+ void SetV2Contamination(TF1 * const function,Int_t k) { fv2contamination[k] = function; };\r
void SetHFECuts(AliHFEcuts * const cuts) { fHFECuts = cuts; };\r
+ void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) { fRejectKinkMother = rejectKinkMother; };\r
+ void SetHFEBackgroundSubtraction(AliHFENonPhotonicElectron * const backgroundSubtraction) { fBackgroundSubtraction = backgroundSubtraction; };\r
void SetHFEBackgroundCuts(AliESDtrackCuts * const cuts) { fHFEBackgroundCuts = cuts; };\r
void SetSubEtaGapTPC(Bool_t subEtaGapTPC) { fSubEtaGapTPC = subEtaGapTPC; };\r
void SetEtaGap(Double_t etaGap) { fEtaGap = etaGap; };\r
void SetMaxNumberOfIterations(Int_t maxNumberOfIterations) { fMaxNumberOfIterations = maxNumberOfIterations; };\r
void SetPrecisionPhi(Double_t precisionPhi) { fPrecisionPhi = precisionPhi;};\r
void SetUseMCReactionPlane(Bool_t useMCReactionPlane) { fUseMCReactionPlane = useMCReactionPlane;};\r
+ void SetUseSP(Bool_t useSP) { fSP = useSP;}\r
void SetMCPID(Bool_t mcPID) { fMCPID = mcPID;};\r
void SetNoPID(Bool_t noPID) { fNoPID = noPID;};\r
\r
void SetDebugLevel(Int_t debugLevel) { fDebugLevel = debugLevel;};\r
+ void SetMonitorEventPlane(Bool_t monitorEventPlane) { fMonitorEventPlane = monitorEventPlane;};\r
+ void SetMonitorContamination(Bool_t monitorContamination) { fMonitorContamination = monitorContamination;};\r
+ void SetMonitorPhotonic(Bool_t monitorPhotonic) { fMonitorPhotonic = monitorPhotonic;};\r
+ void SetMonitorWithoutPID(Bool_t monitorWithoutPID) { fMonitorWithoutPID = monitorWithoutPID;};\r
+ void SetMonitorTrackCuts(Bool_t monitorTrackCuts) { fMonitorTrackCuts = monitorTrackCuts;};\r
+ void SetMonitorQCumulant(Bool_t monitorQCumulant) { fMonitorQCumulant = monitorQCumulant;};\r
\r
Int_t GetNbBinsCentralityQCumulant() const { return fNbBinsCentralityQCumulant; };\r
Double_t GetBinCentralityLess(Int_t k) const { return fBinCentralityLess[k]; };\r
void SetMaxopening3D(Double_t maxOpening3D) { fMaxopening3D = maxOpening3D; };\r
void SetMaxopeningtheta(Double_t maxOpeningtheta) { fMaxopeningtheta = maxOpeningtheta; };\r
void SetMaxopeningphi(Double_t maxOpeningphi) { fMaxopeningphi = maxOpeningphi; };\r
+ void SetAlgorithmMA(Bool_t algorithmMA) { fAlgorithmMA = algorithmMA; };\r
+ void SetMassConstraint(Bool_t massConstraint) { fSetMassConstraint = massConstraint; };\r
\r
Int_t LookAtNonHFE(Int_t iTrack1, AliVTrack *track1, AliVEvent *fESD, AliMCEvent *mcEvent,Int_t binct,Double_t deltaphi,Int_t source,Int_t indexmother);\r
\r
private:\r
TList *fListHist; //! TH list\r
Bool_t fAODAnalysis; // AOD analysis\r
- Bool_t fUseFlagAOD; // Use the preselected AOD track\r
+ Bool_t fUseFilterAOD; // Use the preselected AOD track\r
Bool_t fApplyCut; // Apply the analysis cut for AOD tracks\r
- ULong_t fFlags; // reconstruction AOD status flags \r
+ ULong_t fFilter; // reconstruction AOD status flags \r
+ AliAODMCHeader *fAODMCHeader; // ! MC info AOD\r
+ TClonesArray *fAODArrayMCInfo; // ! MC info particle AOD\r
+ AliHFENonPhotonicElectron *fBackgroundSubtraction; // Background subtraction\r
\r
Bool_t fVZEROEventPlane; // Use Event Planes from VZERO\r
Bool_t fVZEROEventPlaneA; // Use Event Planes from VZERO A\r
Int_t fMaxNumberOfIterations; // Max number of iteration for adding v2\r
Double_t fPrecisionPhi; // precision phi for adding v2\r
Bool_t fUseMCReactionPlane; // use MC reaction plane\r
+ Bool_t fSP; // calculate using scalar product method (instead of event plane method)\r
\r
Bool_t fMCPID; // MC PID for electrons\r
Bool_t fNoPID; // No PID for checks\r
Double_t fMaxopeningphi; // Limit opening angle in phi\r
Double_t fMaxopening3D; // Limit opening 3D\r
Double_t fMaxInvmass; // Limit invariant mass\r
+ Bool_t fSetMassConstraint; // Set mass constraint\r
\r
\r
Int_t fDebugLevel; // Debug Level \r
-\r
+ Bool_t fMonitorEventPlane; // Monitor event plane\r
+ Bool_t fMonitorContamination; // Monitor contamination\r
+ Bool_t fMonitorPhotonic;// Monitor photonic\r
+ Bool_t fMonitorWithoutPID;// Monitor without PID\r
+ Bool_t fMonitorTrackCuts;// Monitor track cuts\r
+ Bool_t fMonitorQCumulant;// Monitor Q cumulant\r
+ \r
// Cuts for FLOW PWG2\r
AliFlowTrackCuts* fcutsRP; //! Reference particle cut\r
AliFlowTrackCuts* fcutsPOI; //! Particle Of Interest cut\r
\r
// Cuts for HFE\r
- AliHFEcuts *fHFECuts; //! HFE cuts\r
- AliHFEpid *fPID; //! PID cuts \r
- AliHFEpidQAmanager *fPIDqa; //! QA Manager\r
+ AliHFEcuts *fHFECuts; // HFE cuts\r
+ Bool_t fRejectKinkMother; // Reject Kink Mother \r
+ AliHFEpid *fPID; // PID cuts \r
+ AliHFEpid *fPIDTOFOnly; // PID cuts TOF only\r
+ AliHFEpidQAmanager *fPIDqa; // QA Manager\r
AliFlowEvent *fflowEvent; //! Flow event \r
\r
+ // Hadron Contamination\r
+ TF1 *fContamination[11]; // Parametrization of the contamination (0-5,5-10,10-20,20-30,30-40,40-50,50-60,60-70,70-80,80-90,90-100)\r
+ TF1 *fv2contamination[11]; // Parametrization of the v2 of charged pions (0-5,5-10,10-20,20-30,30-40,40-50,50-60,60-70,70-80,80-90,90-100)\r
+\r
// Cuts for background study\r
- AliESDtrackCuts *fHFEBackgroundCuts; //! HFE background cuts\r
- AliHFEpid *fPIDBackground; //! PID background cuts \r
- AliHFEpidQAmanager *fPIDBackgroundqa; //! QA Manager Background \r
+ AliESDtrackCuts *fHFEBackgroundCuts; // HFE background cuts\r
+ AliHFEpid *fPIDBackground; // PID background cuts \r
+ AliHFEpidQAmanager *fPIDBackgroundqa; // QA Manager Background \r
Bool_t fAlgorithmMA; // algorithm MA\r
\r
// List of tracks\r
Int_t fCounterPoolBackground; // number of tracks\r
\r
// VZERO Event plane after calibration 2010\r
- AliHFEVZEROEventPlane *fHFEVZEROEventPlane; //! VZERO event plane calibrated\r
+ AliHFEVZEROEventPlane *fHFEVZEROEventPlane; // VZERO event plane calibrated\r
\r
// Histos\r
TH2D *fHistEV; //! Number of events\r
\r
// A Event plane as function of phiepa, phiepb, phiepc, phiepd centrality \r
- // a V0A, b V0C, c TPC, d V0\r
+ // a V0A, b V0C, c TPC,\r
THnSparseF *fEventPlane; //! Event plane\r
\r
// B Event Plane after subtraction as function of phiep, centrality \r
THnSparseF *fEventPlaneaftersubtraction; //! Event plane\r
\r
+ // Contamination\r
+ THnSparseF *fFractionContamination; //! Fraction of contamination as function of pt\r
+ TProfile2D *fContaminationv2; //! v2 of contamination\r
+\r
// Monitoring Event plane: cos2phi, sin2phi, centrality\r
THnSparseF *fCosSin2phiep; //! Cos(2phi), Sin(2phi)\r
\r
\r
// G Maps delta phi as function of deltaphi, centrality, pt\r
THnSparseF *fDeltaPhiMaps; //! Delta phi\r
+ THnSparseF *fDeltaPhiMapsContamination; //! Delta phi for contamination substraction\r
// H Maps cos phi : cos, centrality, pt\r
THnSparseF *fCosPhiMaps; //! Cos\r
TProfile2D *fProfileCosPhiMaps; //! Profile Cos\r
\r
// Background study: not statistic but tagged \r
THnSparseF *fDeltaPhiMapsTaggedPhotonic; //! Delta phi\r
- THnSparseF *fCosPhiMapsTaggedPhotonic; //! Cos\r
+ //THnSparseF *fCosPhiMapsTaggedPhotonic; //! Cos\r
THnSparseF *fDeltaPhiMapsTaggedNonPhotonic; //! Delta phi\r
- THnSparseF *fCosPhiMapsTaggedNonPhotonic; //! Cos\r
+ //THnSparseF *fCosPhiMapsTaggedNonPhotonic; //! Cos\r
THnSparseF *fDeltaPhiMapsTaggedPhotonicLS; //! Delta phi\r
- THnSparseF *fCosPhiMapsTaggedPhotonicLS; //! Cos\r
+ //THnSparseF *fCosPhiMapsTaggedPhotonicLS; //! Cos\r
\r
// Background study: centrality, pt, source\r
THnSparseF *fMCSourceDeltaPhiMaps; //! Source MC\r
THnSparseF *fOppSignAngle; // ! Opening Angles\r
THnSparseF *fSameSignAngle; // ! Opening Angles\r
\r
- Int_t FindMother(Int_t tr, AliMCEvent *mcEvent, Int_t &indexmother);\r
+ TTreeSRedirector *fDebugStreamer; //!Debug streamer\r
+\r
+ Int_t FindMother(Int_t tr, AliMCEvent *mcEvent, Int_t &indexmother);\r
+ Int_t CheckPdg(Int_t tr, AliMCEvent* mcEvent);\r
Int_t IsMotherGamma(Int_t tr, AliMCEvent* mcEvent);\r
Int_t IsMotherPi0(Int_t tr, AliMCEvent* mcEvent);\r
Int_t IsMotherC(Int_t tr, AliMCEvent* mcEvent);\r