]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG/FLOW/Tasks/AliAnalysisTaskJetFlow.h
fix typo in partial derivative which is used to calculate correlated errors
[u/mrichter/AliRoot.git] / PWG / FLOW / Tasks / AliAnalysisTaskJetFlow.h
index 4622a34f6389318690b8c2ef4812d3f936f02a58..1f69694a070ebd793693935c700913cf4864f2e5 100644 (file)
@@ -5,12 +5,21 @@
 #ifndef AliAnalysisTaskJetFlow_H
 #define AliAnalysisTaskJetFlow_H
 
+// root includes
+#include <TMath.h>
+// aliroot includes
 #include <AliAnalysisTaskSE.h>
-#include <AliFlowTrackCuts.h>
-#include <AliFlowEventCuts.h>
-#include <AliFlowEvent.h>
-#include <TString.h>
-#include <AliVEvent.h>
+// forward declarations
+class TString;
+class TObject;
+class TList;
+class TArrayD;
+class TClonesArray;
+class AliFlowTrackCuts;
+class AliFlowEventCuts;
+class AliFlowEvent;
+class TH1;
+class AliAnalysisTaskRhoVnModulation;
 
 class AliAnalysisTaskJetFlow : public AliAnalysisTaskSE
 {
@@ -19,53 +28,112 @@ class AliAnalysisTaskJetFlow : public AliAnalysisTaskSE
         enum dataType           {kESD, kAOD, kESDMC, kAODMC };  // data type
         // constructors, destructor
                                 AliAnalysisTaskJetFlow();
-                                AliAnalysisTaskJetFlow(const char *name);
+                                AliAnalysisTaskJetFlow(
+                                        const char* name,
+                                        AliAnalysisTaskRhoVnModulation* rhoTask, 
+                                        Bool_t VPart,           // use jets or tracks as pois
+                                        Bool_t VZEROEP,         // do vzero ep method
+                                        Bool_t GQC2,            // do gapped qc2 method
+                                        Bool_t QC2,             // do qc2 method
+                                        Bool_t QC4,             // do simple qc4 method FIXME not implemented yet
+                                        Bool_t FlowPackageSP,   // call flow package vzero scalar product
+                                        Bool_t FlowPackageQC    // call flow package nth order q-cumulants
+                                        );
         virtual                 ~AliAnalysisTaskJetFlow();
         // virtual methods
-        virtual void            LocalInit();
         virtual void            UserCreateOutputObjects();
         virtual void            UserExec(Option_t* option);
         virtual void            Terminate(Option_t* option);
         // setters
-        void                    SetCutsRP(AliFlowTrackCuts* c)          {fCutsRP        = c;}
-        void                    SetCutsPOI(AliFlowTrackCuts* c)         {fCutsPOI       = c;}
-        void                    SetCutsNull(AliFlowTrackCuts* c)        {fCutsNull      = c;}
-        void                    SetJetCollectionName(TString jets)      {fJetsName      = jets;}
+        void                    SetJetRadius(Double_t r)                {fJetRadius     = r;}
+        void                    SetLocalRhoName(TString n)              {fLocalRhoName  = n;}
         void                    SetDebugMode(Int_t d)                   {fDebug         = d;}
-        void                    SetPtBump(Float_t b)                    {fPtBump        = b;}
+        void                    SetCCMinPt(Float_t m)                   {fCCMinPt       = m;}
         void                    SetCCMaxPt(Float_t m)                   {fCCMaxPt       = m;}
-        void                    SetCCBinsInPt(Float_t b)                {fCCBinsInPt    = b;}
-        void                    SetMinMaxCentrality(Float_t min, Float_t max)       {fCentralityMin = min; fCentralityMax = max; }
+        void                    SetCCBinsInPt(Int_t b)                  {fCCBinsInPt    = b;}
+        void                    SetMinMaxCentrality(Float_t min, Float_t max)   {fCentralityMin = min; fCentralityMax = max; }
+        void                    SetMinimizeDiffBins(Bool_t b)           {fMinimizeDiffBins = b; }
+        void                    SetPtBins(TArrayD* pt)                  {fPtBins = pt; }
+        void                    SetDoMultWeight(Bool_t m)               {fDoMultWeight = m; }
+        void                    SetDoPtWeight(Bool_t p)                 {fDoPtWeight = p; }
+
+        AliFlowTrackCuts*       GetRPCuts() const                       {return fCutsRP_VZERO;}
+        AliAnalysisTaskRhoVnModulation* GetMaster() const               {return fRhoVn;}
+
+        // cuts
+        Bool_t                  PassesCuts();
         // analysis details
-        Bool_t                  PassesCuts(AliVEvent* event); 
+        void                    DoVZEROFlowAnalysis();
+        void                    DoGappedQC2Analysis();
+        void                    DoQC2FlowAnalysis();
+        void                    DoQC4FlowAnalysis();
+        Bool_t                  DoFlowPackageFlowAnalysis();
+        // q-cumulant helper calculations TODO move to AliAnlaysisTaskRhoVnModulation for consistency
+        void                    QCnDifferentialFlowVectors(Double_t* repn, Double_t* impn, Double_t *mp, Double_t *reqn, Double_t *imqn, Double_t* mq, Int_t n);
 
     private:
 
         // analysis flags and task setup specifics
         Int_t                   fDebug;                 // debug level (0 none, 1 fcn calls, 2 verbose)
         TString                 fJetsName;              // name of jet list
+        Double_t                fJetRadius;             // jet radius
+        TString                 fTracksName;            // name of track list
+        TString                 fLocalRhoName;          // name of local rho
+        TClonesArray*           fPois;                  //! array with pois
+        TClonesArray*           fRPs;                   //! array with rps
+        TObject*                fLocalRho;              //! local energy density
         TList*                  fOutputList;            //! output list
         dataType                fDataType;              //! data type
+        Bool_t                  fVParticleAnalysis;     // do the analysis on vparticles instead of jets
+        Bool_t                  fMinimizeDiffBins;      // minimize variables (for low statistics)
+        Bool_t                  fDoVZEROFlowAnalysis;   // do vzero flow analysis
+        Bool_t                  fDoGappedQC2Analysis;   // do gapped qc2 analysis
+        Bool_t                  fDoQC2FlowAnalysis;     // do qc2 flow analysis
+        Bool_t                  fDoQC4FlowAnalysis;     // do qc4 flow analysis
+        Bool_t                  fDoQCFPAnalysis;        // do qc fp analysis
+        Bool_t                  fDoSPFPAnalysis;        // do sp fp analyis
+        Bool_t                  fDoMultWeight;          // weight events with multiplicity
+        Bool_t                  fDoPtWeight;            // introduce pt weighting for rp's and poi's
+        Bool_t                  fInitialized;           //! check if the analysis is initialized
         // members
-        Float_t                 fPtBump;                // track pt += ptbump
+        Bool_t                  fUsePtWeight;           // use pt weights for the qc analysis
+        Float_t                 fCCMinPt;               // min pt for flow analysis(common constants)
         Float_t                 fCCMaxPt;               // max pt for flow analysis (common constants)
-        Float_t                 fCCBinsInPt;            // bins in pt for flow analysis (common constants)
+        Int_t                   fCCBinsInPt;            // bins in pt for flow analysis (common constants)
         Float_t                 fCentralityMin;         // minimium centrality
         Float_t                 fCentralityMax;         // maximum centrality
+        TArrayD*                fPtBins;                // custom pt bins for flow analysis
         // cut objects
-        AliFlowTrackCuts*       fCutsRP;                // rp cuts
-        AliFlowTrackCuts*       fCutsPOI;               // poi cuts
-        AliFlowTrackCuts*       fCutsNull;              // empty cuts
-        AliFlowEventCuts*       fCutsEvent;             // event cuts
+        AliFlowTrackCuts*       fCutsRP_VZERO;          //! rp cuts for fzero
+        AliFlowTrackCuts*       fCutsNull;              //! empty cuts
+        AliFlowEventCuts*       fCutsEvent;             //! event cuts
         // containers, setup
-        AliFlowEvent*           fFlowEvent;             //! container for flow analysis
+        AliFlowEvent*           fFlowEvent_TPC;         //! container for flow analysis
+        AliFlowEvent*           fFlowEvent_VZERO;       //! container for flow analysis
+        AliAnalysisTaskRhoVnModulation* fRhoVn;         // common cuts and settings master object, see class header
         // histograms
         TH1F*                   fHistAnalysisSummary;   //! analysis summary
+        TH1F*                   fCentralitySelection;   //! centrality selection
+        // for event plane flow analysis
+        TH1F*                   fVZEROAEP;              //! VZEROA EP
+        TH1F*                   fVZEROCEP;              //! VZEROC EP
+        TProfile*               fv2VZEROA;              //! v2 from VZEROA
+        TProfile*               fv2VZEROC;              //! v2 from VZEROC
+        // for qc flow analysis
+        TProfile*               fRefCumulants;          //! (weighted) reference cumulant
+        TProfile*               fDiffCumlantsV2;        //! (weighted) differential cumulant
+        TProfile*               fDiffCumlantsV3;        //! (weighted) differential cumulant
+        TH1F*                   fQC2v2;                 //! final qc2 result
+        TH1F*                   fQC2v3;                 //! final qc2 result
+        // additional histograms
+        TProfile*               fTempA;                 //! internal bookkeeping
+        TProfile*               fTempC;                 //! internal bookkeeping
 
         AliAnalysisTaskJetFlow(const AliAnalysisTaskJetFlow&);                  // not implemented
         AliAnalysisTaskJetFlow& operator=(const AliAnalysisTaskJetFlow&);       // not implemented
 
-        ClassDef(AliAnalysisTaskJetFlow, 3);
+        ClassDef(AliAnalysisTaskJetFlow, 4);
 };
 
 #endif