/************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * * Contributors are mentioned in the code where appropriate. * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright notice appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ //2- and 3-particle trigger particle correlation analysis //Author: Jason Glyndwr Ulery, ulery@uni-frankfurt.de //version 3.5, last revised 2010/11/04 #ifndef ALIANALYSISTASKDIHADRON_H #define ALIANALYSISTASKDIHADRON_H class TH1; class TH1F; class TH2F; class TH3F; class AliESDEvent; //#include "AliAnalysisTask.h" #include "AliAnalysisTaskSE.h" class AliAnalysisTaskDiHadron : public AliAnalysisTaskSE{ //Default constructor public: AliAnalysisTaskDiHadron(const char *name="AliAnalysisTaskDiHadron"); virtual ~AliAnalysisTaskDiHadron() {} //virtual ~AliAnalysisTaskDiHadron(); //AliAnalysisTask Functions virtual void ConnectInputData(Option_t *option); virtual void CreateOutputObjects(); virtual void Exec(Option_t *option); virtual void Terminate(Option_t *); void SetEfficiencies(Float_t EffFitPt, const TF1 *FitLow, const TF1 *FitHigh, Int_t NFitLowParam, Int_t NFitHighParam, Float_t *FitLowParam, Float_t *FitHighParam); void SetFlow(Float_t V2FitPt, Float_t V3FitPt, Float_t V4FitPt, const TF1 *FitLowV2, const TF1 *FitHighV2, const TF1 *FitLowV3, const TF1 *FitHighV3, const TF1 *FitLowV4, const TF1 *FitHighV4, Int_t NFitLowParamV2, Int_t NFitHighParamV2, Int_t NFitLowParamV3, Int_t NFitHighParamV3, Int_t NFitLowParamV4, Int_t NFitHighParamV4, Float_t *FitLowParamV2, Float_t *FitHighParamV2, Float_t *FitLowParamV3, Float_t *FitHighParamV3, Float_t *FitLowParamV4, Float_t *FitHighParamV4); void SetBins(Int_t nBinPhi, Int_t nBinEta, Int_t nBinPhiEtaPhi, Int_t nBinPhiEtaEta, Int_t nBinPhi3, Int_t nBinEta3, Float_t dPhiMin, Float_t dPhiMax, Int_t NTPtBins, Int_t NMixBins, Int_t NCentBins,Int_t fCentPercent, Int_t NAPtBins, Int_t NAPt3Bins, Int_t NVertexBins, Int_t NXEBin,Float_t *PtTrigArray, Float_t *PtAssocArray, Float_t *PtAssoc3Array1, Float_t *PtAssoc3Array2, Int_t *CentArrayMin, Int_t *CentArrayMax, Float_t *XEArray); void SetOptions(Int_t fAODData, Int_t fEfficiencyCorr, Int_t fDEBUG,Int_t fMCHistos); void SetCuts(Int_t MinClutersTPC, Float_t MinClusterRatio, Float_t MaxTPCchi2, Int_t MinClustersITS, Float_t EtaCut, Float_t TrigEtaCut, Float_t NearPhiCut, Float_t XECut, Float_t MaxDCA, Float_t MaxDCAXY, Float_t MaxDCAZ, Int_t DCA2D, Int_t TPCRefit, Int_t ITSRefit, Int_t SPDCut, Float_t MinPtAssoc, Float_t MaxPtAssoc, Float_t VzCut, Int_t NIDs, const char *TrigIDArray); void SetSimulation(Int_t Simulate,Float_t SimNBgPart,Float_t SimNJetPart,Float_t SimNJet,Int_t SimNEvents, Int_t SimAwayDeflected); Int_t CheckVertex(const AliESDEvent *rESD); Int_t CheckVertexAOD(const AliAODEvent *rAOD); Int_t CheckTrigger(const AliESDEvent *rESD); Int_t CheckTriggerAOD(const AliAODEvent *rAOD); Int_t TrackCuts(const AliESDEvent *rESD, Float_t *rPt, Float_t *rEta, Float_t *rPhi, Short_t *rCharge, Float_t *rEff, Float_t *rV2, Float_t *rV3, Float_t *rV4, Int_t **rPtAssoc3, Int_t *rNPtAssoc3, Int_t *rGoodTracks); Int_t TrackCutsAOD(const AliAODEvent *rAOD, Float_t *rPt, Float_t *rEta, Float_t *rPhi, Short_t *rCharge, Float_t *rEff, Float_t *rV2, Float_t *rV3, Float_t *rV4, Int_t **rPtAssoc3, Int_t *rNPtAssoc3, Int_t *rGoodTracks); Int_t TrackCutsMC(AliMCEvent *rMC, Float_t *rPt, Float_t *rEta, Float_t *rPhi, Short_t *rCharge, Float_t *rEff, Float_t *rV2, Float_t *rV3, Float_t *rV4, Int_t **rPtAssoc3, Int_t *rNPtAssoc3, Int_t *rGoodTracks); Int_t TrackCutsSim(Float_t *rPt, Float_t *rEta, Float_t *rPhi, Short_t *rCharge, Float_t *rEff, Float_t *rV2, Float_t *rV3, Float_t *rV4, Int_t **rPtAssoc3, Int_t *rNPtAssoc3, Int_t *rGoodTracks); void CalcFlow(Float_t *rPt, Float_t *rEta, Float_t *rPhi, Int_t *rGoodTracks, Int_t LeadPart); private: //Maximum numbers for creating the arrays enum{kNumberOfPtBins=20, kNumberOfCentBins=11, kNumberOfAPtBins=50, kNumberOfApt3Bins=50, kNumberOfTriggerIDs=10, kNumberOfVertexBins=20, kNumberOfXeBins=20, kNumberOfEventsToMix=100}; // virtual void SetParameters(); AliESDEvent *fESD; //ESD data file AliAODEvent *fAOD;//AOD data file AliMCEvent *fMC;//Monty Carlo event file TList *fOutput;//List used to store all the histograms for output //Cuts Int_t fMinClustersTPC;//Minimum Clusters in the TPC Float_t fMinClusterRatio;//Ratio of MinClusters to Number of Possible Clusters in TPC Float_t fMaxTPCchi2;//Max chi^2/ndf for TPC fit Int_t fMinClustersITS;//Minimum Clusters in ITS Float_t fEtaCut;//Associated particle eta range |eta|