// ---------------------------------------------------------------------------- // AliAnalysisTaskDiHadronPID.h // ---------------------------------------------------------------------------- // Author: Misha Veldhoen (misha.veldhoen@cern.ch) // Last Rev.: May 2nd 2012. (v 8.00) // ---------------------------------------------------------------------------- #ifndef ALIANALYSISTASKDIHADRONPID_H #define ALIANALYSISTASKDIHADRONPID_H #include #include "AliAnalysisTaskSE.h" #include "THnSparse.h" #include "TMath.h" using namespace std; class TH1F; class TH2F; class TH3F; class TList; class TObjArray; class TClonesArray; class TString; class AliAODTrack; class AliAODEvent; class AliAODVertex; class AliPIDResponse; class AliAnalysisTaskDiHadronPID: public AliAnalysisTaskSE { public: // Required functions. AliAnalysisTaskDiHadronPID(); AliAnalysisTaskDiHadronPID(const char *name); virtual ~AliAnalysisTaskDiHadronPID(); virtual void UserCreateOutputObjects(); virtual void UserExec(Option_t *option); virtual void Terminate(Option_t *); // Setters void SetVerbose(Int_t verbose) {fVerbose=verbose;} void SetPrintBufferSize(Bool_t printbuffersize=kTRUE) {fPrintBufferSize=printbuffersize;} void SetCalculateMixedEvents(Bool_t mixedevents=kTRUE) {fCalculateMixedEvents=mixedevents;} void SetMC(Bool_t mc=kTRUE) {fMC = mc;} void SetBeamType(TString beamtype) { if ((beamtype!="pp")&&(beamtype!="PbPb")) { cout<<"SetBeamType -> Beamtype must be pp or PbPb"<0.9) { cout<<"SetMaxEta -> |eta| must be < 0.9"<1.0) { cout<<"SetMaxPlotEta -> |eta| must be < 1.0"< Maximum pT must be > 5.0 GeV/c."<72) { cout<<"SetNEtaBins -> Number of bins must be between 1 and 72"<72) { cout<<"SetNPhiBins -> Number of bins must be between 1 and 72"<10.) { cout<<"SetVertexZMixedEvents -> must be 0 < z < 10"<25000) { cout<<"SetTrigBufferMaxSize -> Max buffer size must be between 10 and 25000."< Centrality cannot be lower than 0."< Maximum centrality needs to be smaller than the minimum centrality. (It's confusing I know)"<100.) { cout<<"SetCentralityCut -> Minimum centrality cannot exceed 100%."< 5.0 tracks, trigger track cuts.) TH2F *fEtaSpectrumAssoc; //! eta spectrum of associateds as a function of pT TH2F *fPhiSpectrumAssoc; //! phi spectrum of associateds as a function of pT // PID QA plots. TH2F *fTPCnSigmaProton; //! TPC nSigma plot for Protons. TH2F *fTOFnSigmaProton; //! TOF nSigma plot for Protons. TH2F *fTPCnSigmaPion; //! TPC nSigma plot for Pions. TH2F *fTOFnSigmaPion; //! TOF nSigma plot for Pions. TH2F *fTPCnSigmaKaon; //! TPC nSigma plot for Kaons. TH2F *fTOFnSigmaKaon; //! TOF nSigma plot for Kaons. TH3F *fTPCSignal; //! TPC signal (pt,eta). TH3F *fTOFSignal; //! TOF signal (pt,eta). TH3F *fInclusiveTPCTOF[3][10]; //! inclusive TPC-TOF histogram as a function of pT (and eta) TH3F *fInclusiveTPCTOFRap[3][10];//! inclusive TPC-TOF histogram as a function of pT and rapidity, with additional rapidity cut. // Efficiency Plots (Monte Carlo) TH2F *fPtEtaDistrDataPrim[6]; //! pT distribution of physical primaries [species: pi+,pi-,K+,K-,p,pbar]. TH2F *fPtEtaDistrDataSec[6]; //! TH2F *fPtRapDistrDataPrimRapCut[6];//! pT distribution of physical primaries [species: pi+,pi-,K+,K-,p,pbar]. TH2F *fPtRapDistrDataSecRapCut[6];//! with an additional rapidity cut. TH2F *fPtEtaDistrMCPrim[6]; //! pT distribution of MCParticles. [species: pi+,pi-,K+,K-,p,pbar]. TH2F *fPtEtaDistrMCSec[6]; //! TH2F *fPtRapDistrMCPrimRapCut[6];//! pT distribution of MCParticles. [species: pi+,pi-,K+,K-,p,pbar]. TH2F *fPtRapDistrMCSecRapCut[6]; //! with an additional rapidity cut. TH3F *fDiHadronMC[6]; //! DPhiDEta Plot per species [species] // Di-Hadron Correlations. TH3F *fDiHadron; //! regular di-hadron correlation, accepting all associateds. THnSparseF *fDiHadronTPCTOF[3][10]; //! Di-Hadron correlations with both TPC and TOF signal. // Mixed Events. TH3F *fMixedEvents; //! Mixed Events, associated track cuts. //TH3F *fMixedEventsTPCTOFCut[3]; //! For every species seperately we keep track of mixed events. THnSparseF *fMixedEventsTPCTOF[3][10]; //! // List of Histograms. TList *fHistoList; //! List of Histograms. // Analysis Task Configuration Variables. Bool_t fCalculateMixedEvents; // TString fBeamType; // pp or PbPb Bool_t fMC; // runs over MC. Double_t fMaxEta; // Q: Do we need to take extra care of the binning? Double_t fMaxPlotEta; // Double_t fMaxRap; // Max rapidity, applied to the inclusive spectra. Double_t fMaxPt; // Int_t fNEtaBins; // Number of bins in eta Int_t fNPhiBins; // Number of bins in phi Double_t fVertexZMixedEvents; // Events with a vertex z difference smaller than // this number (standard 2cm) will be mixed. Double_t fCentralityCutMax; // Maximum centrality (standard 0%) Double_t fCentralityCutMin; // Minimum centrality (standard 10%) Bool_t fZoomed; // Bool_t fDoITSCut; // Cut the tracks with not at least one SPD hit. Bool_t fDoDCACut; // Perform a DCA cut to get rid of secondaries. Bool_t fDemandNoMismatch; // Int_t fTrackCutLabelNumbers[8]; // Track Cut labels. // Level of verbal output. // 0 -> No output. // 1 -> Only error messages. // 2 -> Information about output creation (beginning of the job) // 3 -> Event information. // 4 -> Track information. Int_t fVerbose; // Bool_t fPrintBufferSize; // // Trigger buffer. Double_t fTrigBuffer[25000][4]; //! Int_t fTrigBufferIndex; //! Int_t fTrigBufferSize; //! Int_t fTrigBufferMaxSize; //! ClassDef(AliAnalysisTaskDiHadronPID,1); }; #endif