#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();
+ public:
+ AliAnalysisTaskGammaConvV1();
+ AliAnalysisTaskGammaConvV1(const char *name);
+ virtual ~AliAnalysisTaskGammaConvV1();
- virtual void UserCreateOutputObjects();
- virtual void UserExec(Option_t *);
- virtual void Terminate(const Option_t*);
- void InitBack();
+ virtual void UserCreateOutputObjects();
+ virtual Bool_t Notify();
+ virtual void UserExec(Option_t *);
+ virtual void Terminate(const Option_t*);
+ void InitBack();
- void SetIsHeavyIon(Bool_t flag){fIsHeavyIon = flag;}
- void SetDoMesonAnalysis(Bool_t flag){fDoMesonAnalysis = flag;}
- void ProcessPhotonCandidates();
- void CalculatePi0Candidates();
- void CalculateBackground();
- void CalculateBackgroundRP();
- void ProcessMCParticles();
- void ProcessTruePhotonCandidates( AliAODConversionPhoton* TruePhotonCandidate);
- void ProcessTrueMesonCandidates( AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1);
- void RotateParticle(AliAODConversionPhoton *gamma);
- void SetConversionCutList(Int_t nCuts, TList *CutArray){
- fnCuts = nCuts;
- fCutArray = CutArray;
- }
- void SetMesonCutList(Int_t nCuts, TList *CutArray){
- fnCuts = nCuts;
- fMesonCutArray = CutArray;
- }
+ void SetIsHeavyIon(Int_t flag){
+ fIsHeavyIon = flag;
+
+ }
- // BG HandlerSettings
- void SetMoveParticleAccordingToVertex(Bool_t flag){fMoveParticleAccordingToVertex = flag;}
- void CountESDTracks();
- void MoveParticleAccordingToVertex(AliAODConversionPhoton* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex);
- void UpdateEventByEventData();
+ 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 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;
+ }
- protected:
- AliV0ReaderV1 *fV0Reader;
- AliGammaConversionAODBGHandler **fBGHandler;
- AliConversionAODBGHandlerRP **fBGHandlerRP;
- AliVEvent *fInputEvent;
- AliMCEvent *fMCEvent;
- AliStack *fMCStack;
- TList **fCutFolder;
- TList **fESDList;
- TList **fBackList;
- TList **fMotherList;
- TList **fTrueList;
- TList **fMCList;
- TList **fHeaderNameList;
- TList *fOutputContainer;
- TClonesArray *fReaderGammas;
- TList *fGammaCandidates;
- TList *fCutArray;
- AliConversionCuts *fConversionCuts;
- TList *fMesonCutArray;
- AliConversionMesonCuts *fMesonCuts;
- TH1F **hESDConvGammaPt;
- TH1F **hESDConvGammaR;
- TH2F **hESDMotherInvMassPt;
- THnSparseF **sESDMotherInvMassPtZM;
- TH2F **hESDMotherBackInvMassPt;
- THnSparseF **sESDMotherBackInvMassPtZM;
- TH2F **hESDMotherInvMassEalpha;
- TH1F **hMCAllGammaPt;
- TH1F **hMCDecayGammaPi0Pt;
- TH1F **hMCDecayGammaRhoPt;
- TH1F **hMCDecayGammaEtaPt;
- TH1F **hMCDecayGammaOmegaPt;
- TH1F **hMCDecayGammaEtapPt;
- TH1F **hMCDecayGammaPhiPt;
- TH1F **hMCDecayGammaSigmaPt;
- TH1F **hMCConvGammaPt;
- TH1F **hMCConvGammaR;
- TH1F **hMCConvGammaEta;
- TH1F **hMCConvGammaRSPt;
- TH1F **hMCConvGammaRSR;
- TH1F **hMCConvGammaRSEta;
- TH1F **hMCPi0Pt;
- TH1F **hMCEtaPt;
- TH1F **hMCPi0InAccPt;
- TH1F **hMCEtaInAccPt;
- TH2F **hESDTrueMotherInvMassPt;
- TH2F **hESDTruePi0FromEtaInvMassPt;
- TH2F **hESDTruePrimaryMotherInvMassPt;
- TH2F **hESDTruePrimaryMotherInvMassMCPt;
- TH2F **hESDTruePrimaryPi0ESDPtMCPt;
- TH2F **hESDTruePrimaryEtaESDPtMCPt;
- TH2F **hESDTrueSecondaryMotherInvMassPt;
- TH2F **hESDTrueSecondaryMotherFromK0sInvMassPt;
- TH1F **hESDTrueK0sWithPi0DaughterMCPt;
- TH2F **hESDTrueSecondaryMotherFromEtaInvMassPt;
- TH1F **hESDTrueEtaWithPi0DaughterMCPt;
- TH2F **hESDTrueBckGGInvMassPt;
- TH2F **hESDTrueBckContInvMassPt;
- TH2F **hESDTrueMotherDalitzInvMassPt;
- TH1F **hESDTrueConvGammaPt;
- TH2F **hESDCombinatorialPt;
- TH1F **hESDTruePrimaryConvGammaPt;
- TH1F **hESDTruePrimaryConvGammaR;
- TH1F **hESDTruePrimaryConvGammaEta;
- TH2F **hESDTruePrimaryConvGammaESDPtMCPt;
- TH2F **hESDTruePrimaryConvGammaRSESDPtMCPt;
- TH1F **hESDTrueSecondaryConvGammaPt;
- TH1F **hESDTrueSecondaryConvGammaR;
- TH1F **hESDTrueSecondaryConvGammaFromXFromK0sPt;
- TH1I **hNEvents;
- TH1I **hNGoodESDTracks;
- TH1I **hNGammaCandidates;
- TH1I **hNV0Tracks;
+ // 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; //!
+ 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; //
- TRandom3 fRandom;
- Int_t fnGammaCandidates;
- Double_t *fUnsmearedPx; //[fnGammaCandidates]
- Double_t *fUnsmearedPy; //[fnGammaCandidates]
- Double_t *fUnsmearedPz; //[fnGammaCandidates]
- Double_t *fUnsmearedE; //[fnGammaCandidates]
- Int_t fnCuts;
- Int_t fiCut;
- Int_t fNumberOfESDTracks;
- Bool_t fMoveParticleAccordingToVertex;
- Bool_t fIsHeavyIon;
- Bool_t fDoMesonAnalysis;
- Bool_t fIsFromMBHeader;
+ private:
-private:
-
- AliAnalysisTaskGammaConvV1(const AliAnalysisTaskGammaConvV1&); // Prevent copy-construction
- AliAnalysisTaskGammaConvV1 &operator=(const AliAnalysisTaskGammaConvV1&); // Prevent assignment
-
-
- ClassDef(AliAnalysisTaskGammaConvV1, 3);
+ AliAnalysisTaskGammaConvV1(const AliAnalysisTaskGammaConvV1&); // Prevent copy-construction
+ AliAnalysisTaskGammaConvV1 &operator=(const AliAnalysisTaskGammaConvV1&); // Prevent assignment
+ ClassDef(AliAnalysisTaskGammaConvV1, 14);
};
#endif