#ifndef AliDptDptInMC_H_Included
#define AliDptDptInMC_H_Included
#include "AliAnalysisTaskSE.h"
#include "TString.h"
#include "AliLog.h"
#include "AliPID.h"
#include "AliPIDResponse.h"
class AliAODEvent;
class AliESDEvent;
class AliInputEventHandler;
class TH1;
class TH2;
class TH2;
class TH3;
class TH1F;
class TH2F;
class TH2F;
class TH3F;
class TH1D;
class TH2D;
class TH2D;
class TH3D;
class TProfile;
class AliDptDptInMC : public AliAnalysisTaskSE
{
public:
AliDptDptInMC();
AliDptDptInMC(const TString & name);
private:
AliDptDptInMC(const AliDptDptInMC&);
const AliDptDptInMC& operator=(const AliDptDptInMC&);
public:
virtual ~AliDptDptInMC();
virtual void UserCreateOutputObjects();
virtual void UserExec(Option_t *option);
virtual void FinishTaskOutput();
virtual void Terminate(Option_t* );
virtual void createHistograms();
virtual void finalizeHistograms();
virtual void addToList(TH1 *h);
TH1D * createHisto1D(const TString & name, const TString & title,int n, double xmin, double xmax,const TString & xTitle, const TString & yTitle);
TH1D * createHisto1D(const TString & name, const TString & title,int n, double * bins,const TString & xTitle, const TString & yTitle);
TH2D * createHisto2D(const TString & name, const TString & title,
int nx, double xmin, double xmax, int ny, double ymin, double ymax, const TString & xTitle, const TString & yTitle, const TString & zTitle);
TH2D * createHisto2D(const TString & name, const TString & title, int nx, double* xbins, int ny, double ymin, double ymax,
const TString & xTitle, const TString & yTitle, const TString & zTitle);
TH1F * createHisto1F(const TString & name, const TString & title,int n, double xmin, double xmax,const TString & xTitle, const TString & yTitle);
TH1F * createHisto1F(const TString & name, const TString & title,int n, double * bins,const TString & xTitle, const TString & yTitle);
TH2F * createHisto2F(const TString & name, const TString & title,
int nx, double xmin, double xmax, int ny, double ymin, double ymax, const TString & xTitle, const TString & yTitle, const TString & zTitle);
TH2F * createHisto2F(const TString & name, const TString & title, int nx, double* xbins, int ny, double ymin, double ymax,
const TString & xTitle, const TString & yTitle, const TString & zTitle);
TH3F * createHisto3F(const TString & name, const TString & title,
int nx, double xmin, double xmax, int ny, double ymin, double ymax, int nz, double zmin, double zmax,
const TString & xTitle, const TString & yTitle, const TString & zTitle);
TProfile * createProfile(const TString & title,const TString & description, int n, double xMin,double xMax,
const TString & xTitle, const TString & yTitle);
TProfile * createProfile(const TString & name,const TString & description,
int nx, double* bins,
const TString & xTitle, const TString & yTitle);
float * getFloatArray(int size, float v);
double * getDoubleArray(int size, double v);
void fillHistoWithArray(TH1 * h, double * array, int size);
void fillHistoWithArray(TH2 * h, double * array, int size1, int size2);
void fillHistoWithArray(TH3 * h, double * array, int size1, int size2, int size3);
void fillHistoWithArray(TH1 * h, float * array, int size);
void fillHistoWithArray(TH2 * h, float * array, int size1, int size2);
void fillHistoWithArray(TH3 * h, float * array, int size1, int size2, int size3);
virtual void SetDebugLevel( int v ) { _debugLevel = v; }
virtual void SetSinglesOnly(int v) { _singlesOnly = v; }
virtual void SetUseWeights(int v) { _useWeights = v; }
virtual void SetSameFilter(int v) { _sameFilter = v; }
virtual void SetRejectPileup(int v) { _rejectPileup = v; }
virtual void SetRejectPairConversion(int v) { _rejectPairConversion = v; }
virtual void SetVertexZMin(double v) { _vertexZMin = v; }
virtual void SetVertexZMax(double v) { _vertexZMax = v; }
virtual void SetVertexXYMin(double v) { _vertexXYMin = v; }
virtual void SetVertexXYMax(double v) { _vertexXYMax = v; }
virtual void SetCentralityMethod(int v) { _centralityMethod = v; }
virtual void SetCentrality(double centralityMin, double centralityMax)
{
_centralityMin = centralityMin;
_centralityMax = centralityMax;
}
virtual void SetRequestedCharge_1(int v) { _requestedCharge_1 = v; }
virtual void SetRequestedCharge_2(int v) { _requestedCharge_2 = v; }
virtual void SetPtMin1( double v) { _min_pt_1 = v; }
virtual void SetPtMax1( double v) { _max_pt_1 = v; }
virtual void SetEtaMin1(double v) { _min_eta_1 = v; }
virtual void SetEtaMax1(double v) { _max_eta_1 = v; }
virtual void SetPtMin2( double v) { _min_pt_2 = v; }
virtual void SetPtMax2( double v) { _max_pt_2 = v; }
virtual void SetEtaMin2(double v) { _min_eta_2 = v; }
virtual void SetEtaMax2(double v) { _max_eta_2 = v; }
virtual void SetDcaZMin(double v) { _dcaZMin = v; }
virtual void SetDcaZMax(double v) { _dcaZMax = v; }
virtual void SetDcaXYMin(double v) { _dcaXYMin = v; }
virtual void SetDcaXYMax(double v) { _dcaXYMax = v; }
virtual void SetDedxMin(double v) { _dedxMin = v; }
virtual void SetDedxMax(double v) { _dedxMax = v; }
virtual void SetNClusterMin(int v) { _nClusterMin = v; }
virtual void SetTrackFilterBit(int v) { _trackFilterBit = v; }
virtual void SetWeigth_1(TH3F * v) { _weight_1 = v; }
virtual void SetWeigth_2(TH3F * v) { _weight_2 = v; }
void SetNSigmaCut(Double_t nsigma){ fNSigmaCut = nsigma;}
void SetAnalysisType(const char* analysisType) {fAnalysisType = analysisType;}
void SetResonancesCut( Bool_t NoResonances ){ fExcludeResonancesInMC = NoResonances;}
void SetElectronCut( Bool_t NoElectron ){ fExcludeElectronsInMC = NoElectron;}
protected:
AliAODEvent* fAODEvent;
AliESDEvent* fESDEvent;
AliInputEventHandler* fInputHandler;
AliPIDResponse* fPIDResponse;
TList* _outputHistoList;
TClonesArray *fArrayMC;
double _twoPi;
long _eventCount;
int _debugLevel;
int _singlesOnly;
int _useWeights;
int _sameFilter;
int _rejectPileup;
int _rejectPairConversion;
double _vertexZMin;
double _vertexZMax;
double _vertexXYMin;
double _vertexXYMax;
int _centralityMethod;
double _centralityMin;
double _centralityMax;
int _requestedCharge_1;
int _requestedCharge_2;
double _dcaZMin;
double _dcaZMax;
double _dcaXYMin;
double _dcaXYMax;
double _dedxMin;
double _dedxMax;
int _nClusterMin;
int _trackFilterBit;
Double_t fNSigmaCut;
TString fAnalysisType;
Bool_t fExcludeResonancesInMC;
Bool_t fExcludeElectronsInMC;
double _field;
int _nTracks;
double _mult0;
double _mult1;
double _mult2;
double _mult3;
double _mult4;
double _mult4a;
double _mult5;
double _mult6;
int arraySize;
int *_id_1;
int *_charge_1;
int *_iEtaPhi_1;
int *_iPt_1;
float *_pt_1;
float *_px_1;
float *_py_1;
float *_pz_1;
float *_correction_1;
float *_dedx_1;
int *_id_2;
int *_charge_2;
int *_iEtaPhi_2;
int *_iPt_2;
float *_pt_2;
float *_px_2;
float *_py_2;
float *_pz_2;
float *_correction_2;
float *_dedx_2;
float * _correctionWeight_1;
float * _correctionWeight_2;
int _nBins_M0; double _min_M0; double _max_M0; double _width_M0;
int _nBins_M1; double _min_M1; double _max_M1; double _width_M1;
int _nBins_M2; double _min_M2; double _max_M2; double _width_M2;
int _nBins_M3; double _min_M3; double _max_M3; double _width_M3;
int _nBins_M4; double _min_M4; double _max_M4; double _width_M4;
int _nBins_M5; double _min_M5; double _max_M5; double _width_M5;
int _nBins_M6; double _min_M6; double _max_M6; double _width_M6;
int _nBins_vertexZ; double _min_vertexZ; double _max_vertexZ; double _width_vertexZ;
int _nBins_pt_1; double _min_pt_1; double _max_pt_1; double _width_pt_1;
int _nBins_phi_1; double _min_phi_1; double _max_phi_1; double _width_phi_1;
int _nBins_eta_1; double _min_eta_1; double _max_eta_1; double _width_eta_1;
int _nBins_etaPhi_1;
int _nBins_etaPhiPt_1;
int _nBins_zEtaPhiPt_1;
int _nBins_pt_2; double _min_pt_2; double _max_pt_2; double _width_pt_2;
int _nBins_phi_2; double _min_phi_2; double _max_phi_2; double _width_phi_2;
int _nBins_eta_2; double _min_eta_2; double _max_eta_2; double _width_eta_2;
int _nBins_etaPhi_2;
int _nBins_etaPhiPt_2;
int _nBins_zEtaPhiPt_2;
int _nBins_etaPhi_12;
double __n1_1;
double __n1_2;
double __n2_12;
double __s1pt_1;
double __s1pt_2;
double __s2ptpt_12;
double __s2NPt_12;
double __s2PtN_12;
double __n1Nw_1;
double __n1Nw_2;
double __n2Nw_12;
double __s1ptNw_1;
double __s1ptNw_2;
double __s2ptptNw_12;
double __s2NPtNw_12;
double __s2PtNNw_12;
double * __n1_1_vsPt;
double * __n1_1_vsEtaPhi;
double * __s1pt_1_vsEtaPhi;
float * __n1_1_vsZEtaPhiPt;
double * __n1_2_vsPt;
double * __n1_2_vsEtaPhi;
double * __s1pt_2_vsEtaPhi;
float * __n1_2_vsZEtaPhiPt;
double * __n2_12_vsPtPt;
float * __n2_12_vsEtaPhi;
float * __s2ptpt_12_vsEtaPhi;
float * __s2PtN_12_vsEtaPhi;
float * __s2NPt_12_vsEtaPhi;
TH3F * _weight_1;
TH3F * _weight_2;
TH1D * _eventAccounting;
TH1D * _m0;
TH1D * _m1;
TH1D * _m2;
TH1D * _m3;
TH1D * _m4;
TH1D * _m5;
TH1D * _m6;
TH1D * _vertexZ;
TH1F * _Ncluster1;
TH1F * _Ncluster2;
TH1F * _etadis;
TH1F * _phidis;
TH1F * _dcaz;
TH1F * _dcaxy;
TH1F * _etadis2;
TH1F * _phidis2;
TH1F * _dcaz2;
TH1F * _dcaxy2;
TH1F * _etadis3;
TH1F * _phidis3;
TH1F * _dcaz3;
TH1F * _dcaxy3;
TH1F * _n1_1_vsPt;
TH2F * _n1_1_vsEtaVsPhi;
TH2F * _s1pt_1_vsEtaVsPhi;
TH3F * _n1_1_vsZVsEtaVsPhiVsPt;
TProfile * _n1_1_vsM;
TProfile * _s1pt_1_vsM;
TProfile * _n1Nw_1_vsM;
TProfile * _s1ptNw_1_vsM;
TH2D * _dedxVsP_1;
TH2D * _corrDedxVsP_1;
TH2F * _betaVsP_1;
TH1F * _n1_2_vsPt;
TH2F * _n1_2_vsEtaVsPhi;
TH2F * _s1pt_2_vsEtaVsPhi;
TH3F * _n1_2_vsZVsEtaVsPhiVsPt;
TProfile * _n1_2_vsM;
TProfile * _s1pt_2_vsM;
TProfile * _n1Nw_2_vsM;
TProfile * _s1ptNw_2_vsM;
TH2D * _dedxVsP_2;
TH2D * _corrDedxVsP_2;
TH2F * _betaVsP_2;
TH1F * _n2_12_vsEtaPhi;
TH2F * _n2_12_vsPtVsPt;
TH1F * _s2PtPt_12_vsEtaPhi;
TH1F * _s2PtN_12_vsEtaPhi;
TH1F * _s2NPt_12_vsEtaPhi;
TProfile * _n2_12_vsM;
TProfile * _s2PtPt_12_vsM;
TProfile * _s2PtN_12_vsM;
TProfile * _s2NPt_12_vsM;
TProfile * _n2Nw_12_vsM;
TProfile * _s2PtPtNw_12_vsM;
TProfile * _s2PtNNw_12_vsM;
TProfile * _s2NPtNw_12_vsM;
TH1F * _invMass;
TH1F * _invMassElec;
TString n1Name;
TString n1NwName;
TString n2Name;
TString n2NwName;
TString n3Name;
TString n1n1Name;
TString n1n1n1Name;
TString n2n1Name;
TString r1Name;
TString r2Name;
TString r3Name;
TString r2r1Name;
TString c2Name;
TString c3Name;
TString d3Name;
TString p3Name;
TString cName;
TString intR2Name;
TString binCorrName;
TString intBinCorrName;
TString countsName;
TString part_1_Name;
TString part_2_Name;
TString part_3_Name;
TString pair_12_Name;
TString pair_13_Name;
TString pair_23_Name;
TString tripletName;
TString avg;
TString avgName;
TString sumName;
TString s1ptName;
TString s1ptNwName;
TString s1DptName;
TString s2PtPtName;
TString s2NPtName;
TString s2PtNName;
TString s2DptDptName;
TString s2PtPtNwName;
TString s2NPtNwName;
TString s2PtNNwName;
TString ptName;
TString ptptName;
TString pt1pt1Name;
TString DptName;
TString DptDptName;
TString RDptDptName;
TString nPtName;
TString ptNName;
TString seanName;
TString _title_counts;
TString _title_m0;
TString _title_m1;
TString _title_m2;
TString _title_m3;
TString _title_m4;
TString _title_m5;
TString _title_m6;
TString _title_eta_1;
TString _title_phi_1;
TString _title_pt_1;
TString _title_etaPhi_1;
TString _title_n_1;
TString _title_SumPt_1;
TString _title_AvgPt_1;
TString _title_AvgN_1;
TString _title_AvgSumPt_1;
TString _title_eta_2;
TString _title_phi_2;
TString _title_pt_2;
TString _title_etaPhi_2;
TString _title_n_2;
TString _title_SumPt_2;
TString _title_AvgPt_2;
TString _title_AvgN_2;
TString _title_AvgSumPt_2;
TString _title_etaPhi_12;
TString _title_AvgN2_12;
TString _title_AvgSumPtPt_12;
TString _title_AvgSumPtN_12;
TString _title_AvgNSumPt_12;
TString vsZ;
TString vsM;
TString vsPt;
TString vsPhi;
TString vsEta;
TString vsEtaPhi;
TString vsPtVsPt;
ClassDef(AliDptDptInMC,1)
};
#endif