#ifndef ALIANLYSISTASKGAMMACONVV1_cxx #define ALIANLYSISTASKGAMMACONVV1_cxx #include "AliAnalysisTaskSE.h" #include "AliESDtrack.h" #include "AliV0ReaderV1.h" #include "AliConvEventCuts.h" #include "AliKFConversionPhoton.h" #include "AliGammaConversionAODBGHandler.h" #include "AliConversionAODBGHandlerRP.h" #include "AliConversionMesonCuts.h" #include "AliAnalysisManager.h" #include "TProfile2D.h" #include "TH3.h" #include "TH3F.h" class AliAnalysisTaskGammaConvV1 : public AliAnalysisTaskSE { public: AliAnalysisTaskGammaConvV1(); AliAnalysisTaskGammaConvV1(const char *name); virtual ~AliAnalysisTaskGammaConvV1(); virtual void UserCreateOutputObjects(); virtual Bool_t Notify(); virtual void UserExec(Option_t *); virtual void Terminate(const Option_t*); void InitBack(); void SetIsHeavyIon(Int_t flag){ fIsHeavyIon = flag; } void SetIsMC(Bool_t isMC){fIsMC=isMC;} void SetDoMesonAnalysis(Bool_t flag){fDoMesonAnalysis = flag;} void SetDoMesonQA(Int_t flag){fDoMesonQA = flag;} void SetDoPhotonQA(Int_t flag){fDoPhotonQA = flag;} void SetDoTHnSparse(Bool_t flag){fDoTHnSparse = flag;} void ProcessPhotonCandidates(); void CalculatePi0Candidates(); void CalculateBackground(); void CalculateBackgroundRP(); void ProcessMCParticles(); void ProcessAODMCParticles(); void RelabelAODPhotonCandidates(Bool_t mode); void ProcessTruePhotonCandidates( AliAODConversionPhoton* TruePhotonCandidate); void ProcessTruePhotonCandidatesAOD( AliAODConversionPhoton* TruePhotonCandidate); void ProcessTrueMesonCandidates( AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1); void ProcessTrueMesonCandidatesAOD(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1); void RotateParticle(AliAODConversionPhoton *gamma); void RotateParticleAccordingToEP(AliAODConversionPhoton *gamma, Double_t previousEventEP, Double_t thisEventEP); void SetEventCutList(Int_t nCuts, TList *CutArray){ fnCuts = nCuts; fEventCutArray = CutArray; } void SetConversionCutList(Int_t nCuts, TList *CutArray){ fnCuts = nCuts; fCutArray = CutArray; } void SetMesonCutList(Int_t nCuts, TList *CutArray){ fnCuts = nCuts; fMesonCutArray = CutArray; } // BG HandlerSettings void SetMoveParticleAccordingToVertex(Bool_t flag){fMoveParticleAccordingToVertex = flag;} void FillPhotonCombinatorialBackgroundHist(AliAODConversionPhoton *TruePhotonCandidate, Int_t pdgCode[]); void MoveParticleAccordingToVertex(AliAODConversionPhoton* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex); void UpdateEventByEventData(); void SetLogBinningXTH2(TH2* histoRebin); Int_t GetSourceClassification(Int_t daughter, Int_t pdgCode); protected: AliV0ReaderV1 *fV0Reader; // AliGammaConversionAODBGHandler **fBGHandler; // AliConversionAODBGHandlerRP **fBGHandlerRP; // AliVEvent *fInputEvent; // AliMCEvent *fMCEvent; // AliStack *fMCStack; // TList **fCutFolder; // TList **fESDList; // TList **fBackList; // TList **fMotherList; // TList **fPhotonDCAList; // TList **fMesonDCAList; // TList **fTrueList; // TList **fMCList; // TList **fHeaderNameList; // TList *fOutputContainer; // TClonesArray *fReaderGammas; // TList *fGammaCandidates; // TList *fEventCutArray; // AliConvEventCuts *fEventCuts; // TList *fCutArray; // AliConversionPhotonCuts *fConversionCuts; // TList *fMesonCutArray; // AliConversionMesonCuts *fMesonCuts; // TH1F **hESDConvGammaPt; //! TH1F **hESDConvGammaR; //! TH1F **hESDConvGammaEta; //! TH1F **hESDConvGammaPhi; //! TTree **tESDConvGammaPtDcazCat; //! Float_t fPtGamma; //! Float_t fDCAzPhoton; //! Float_t fRConvPhoton; //! Float_t fEtaPhoton; //! UChar_t iCatPhoton; //! UChar_t iPhotonMCInfo; //! // 0: garbage, // 1: background // 2: secondary photon not from eta or k0s, // 3: secondary photon from eta, // 4: secondary photon from k0s, // 5: dalitz // 6: primary gamma TH2F **hESDMotherInvMassPt; //! THnSparseF **sESDMotherInvMassPtZM; //! TH2F **hESDMotherBackInvMassPt; //! THnSparseF **sESDMotherBackInvMassPtZM; //! TH2F **hESDMotherInvMassEalpha; //! TH2F **hESDMotherPi0PtY; //! TH2F **hESDMotherEtaPtY; //! TH2F **hESDMotherPi0PtAlpha; //! TH2F **hESDMotherEtaPtAlpha; //! TH2F **hESDMotherPi0PtOpenAngle; //! TH2F **hESDMotherEtaPtOpenAngle; //! TH1I **hMCHeaders; //! TH1F **hMCAllGammaPt; //! TH1F **hMCDecayGammaPi0Pt; //! TH1F **hMCDecayGammaRhoPt; //! TH1F **hMCDecayGammaEtaPt; //! TH1F **hMCDecayGammaOmegaPt; //! TH1F **hMCDecayGammaEtapPt; //! TH1F **hMCDecayGammaPhiPt; //! TH1F **hMCDecayGammaSigmaPt; //! TH1F **hMCConvGammaPt; //! TH1F **hMCConvGammaR; //! TH1F **hMCConvGammaEta; //! TH1F **hMCPi0Pt; //! TH1F **hMCPi0WOWeightPt; //! TH1F **hMCEtaPt; //! TH1F **hMCEtaWOWeightPt; //! TH1F **hMCPi0InAccPt; //! TH1F **hMCEtaInAccPt; //! TH2F **hMCPi0PtY; //! TH2F **hMCEtaPtY; //! TH2F **hMCPi0PtAlpha; //! TH2F **hMCEtaPtAlpha; //! TH1F **hMCK0sPt; //! TH1F **hMCK0sWOWeightPt; //! TH2F **hMCK0sPtY; //! TH2F **hMCSecPi0PtvsSource; //! TH2F **hMCSecPi0RvsSource; //! TH1F **hMCSecPi0Source; //! TH1F **hMCSecEtaPt; //! TH1F **hMCSecEtaSource; //! TH2F **hESDTrueMotherInvMassPt; //! TH2F **hESDTruePrimaryMotherInvMassPt; //! TH2F **hESDTruePrimaryMotherW0WeightingInvMassPt; //! TProfile2D **pESDTruePrimaryMotherWeightsInvMassPt; //! TH2F **hESDTruePrimaryPi0MCPtResolPt; //! TH2F **hESDTruePrimaryEtaMCPtResolPt; //! TH2F **hESDTrueSecondaryMotherInvMassPt; //! TH2F **hESDTrueSecondaryMotherFromK0sInvMassPt; //! TH1F **hESDTrueK0sWithPi0DaughterMCPt; //! TH2F **hESDTrueSecondaryMotherFromEtaInvMassPt; //! TH1F **hESDTrueEtaWithPi0DaughterMCPt; //! TH2F **hESDTrueSecondaryMotherFromLambdaInvMassPt; //! TH1F **hESDTrueLambdaWithPi0DaughterMCPt; //! TH2F **hESDTrueBckGGInvMassPt; //! TH2F **hESDTrueBckContInvMassPt; //! TH2F **hESDTruePi0PtY; //! TH2F **hESDTrueEtaPtY; //! TH2F **hESDTruePi0PtAlpha; //! TH2F **hESDTrueEtaPtAlpha; //! TH2F **hESDTruePi0PtOpenAngle; //! TH2F **hESDTrueEtaPtOpenAngle; //! TH2F **hESDTrueMotherDalitzInvMassPt; //! TH1F **hESDTrueConvGammaPt; //! TH1F **hESDTrueConvGammaR; //! TH1F **hESDTrueConvGammaPtMC; //! TH1F **hESDTrueConvGammaRMC; //! TH1F **hESDTrueConvGammaEta; //! TH2F **hESDCombinatorialPt; //! TH1F **hESDTruePrimaryConvGammaPt; //! TH2F **hESDTruePrimaryConvGammaESDPtMCPt; //! TH1F **hESDTrueSecondaryConvGammaPt; //! TH1F **hESDTrueSecondaryConvGammaFromXFromK0sPt; //! TH1F **hESDTrueSecondaryConvGammaFromXFromLambdaPt; //! TH2F **hESDTrueDalitzPsiPairDeltaPhi; //! TH2F **hESDTrueGammaPsiPairDeltaPhi; //! TH1I **hNEvents; //! TH1I **hNGoodESDTracks; //! TH1I **hNGammaCandidates; //! TH2F **hNGoodESDTracksVsNGammaCanditates; //! TH1I **hNV0Tracks; //! TProfile **hEtaShift; //! TTree **tESDMesonsInvMassPtDcazMinDcazMaxFlag; //! Float_t fInvMass; //! Float_t fPt; //! Float_t fDCAzGammaMin; //! Float_t fDCAzGammaMax; //! UChar_t iFlag; //! UChar_t iMesonMCInfo; //! // 0: garbage, // 1: background // 2: secondary meson not from eta or k0s, // 3: secondary meson from eta, // 4: secondary meson from k0s, // 5: dalitz // 6: primary meson gamma-gamma-channel Double_t fEventPlaneAngle; // EventPlaneAngle TRandom3 fRandom; // Int_t fnGammaCandidates; // Double_t *fUnsmearedPx; //[fnGammaCandidates] Double_t *fUnsmearedPy; //[fnGammaCandidates] Double_t *fUnsmearedPz; //[fnGammaCandidates] Double_t *fUnsmearedE; //[fnGammaCandidates] Int_t *fMCStackPos; //[fnGammaCandidates] Int_t *fMCStackNeg; //[fnGammaCandidates] Int_t *fESDArrayPos; //[fnGammaCandidates] Int_t *fESDArrayNeg; //[fnGammaCandidates] Int_t fnCuts; // Int_t fiCut; // Bool_t fMoveParticleAccordingToVertex; // Int_t fIsHeavyIon; // Bool_t fDoMesonAnalysis; // Int_t fDoMesonQA; // Int_t fDoPhotonQA; // Bool_t fIsFromMBHeader; // Bool_t fIsMC; // Bool_t fDoTHnSparse; // flag for using THnSparses for background estimation private: AliAnalysisTaskGammaConvV1(const AliAnalysisTaskGammaConvV1&); // Prevent copy-construction AliAnalysisTaskGammaConvV1 &operator=(const AliAnalysisTaskGammaConvV1&); // Prevent assignment ClassDef(AliAnalysisTaskGammaConvV1, 14); }; #endif