]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/hfe/AliAnalysisTaskHFEFlow.h
Bug fix
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskHFEFlow.h
index b9b1b6a714c53fd69034aed5148e1f2d6311624d..f25cab4f552be6cbb59cd56a86f16d9760cc1134 100644 (file)
@@ -36,6 +36,7 @@ class AliHFEcuts;
 class AliHFEpid;\r
 class TH1D;\r
 class TH2D;\r
+class TF1;\r
 class TProfile;\r
 class TProfile2D;\r
 class THnSparse;\r
@@ -44,9 +45,12 @@ class AliFlowEvent;
 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
@@ -54,11 +58,12 @@ public:
     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
@@ -79,18 +84,24 @@ public:
   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
@@ -111,10 +122,17 @@ public:
   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
@@ -126,15 +144,20 @@ public:
   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
@@ -158,6 +181,7 @@ private:
   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
@@ -168,24 +192,37 @@ private:
   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
@@ -193,18 +230,22 @@ private:
   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
@@ -239,17 +280,18 @@ private:
 \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
@@ -260,7 +302,10 @@ private:
   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