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