//________________________________________________________________________
AliAnalysisTaskGammaConvV1::AliAnalysisTaskGammaConvV1(): AliAnalysisTaskSE(),
- fV0Reader(NULL),
- fBGHandler(NULL),
- fBGHandlerRP(NULL),
- fInputEvent(NULL),
- fMCEvent(NULL),
- fMCStack(NULL),
- fCutFolder(NULL),
- fESDList(NULL),
- fBackList(NULL),
- fMotherList(NULL),
- fPhotonDCAList(NULL),
- fMesonDCAList(NULL),
- fTrueList(NULL),
- fMCList(NULL),
- fHeaderNameList(NULL),
- fOutputContainer(0),
- fReaderGammas(NULL),
- fGammaCandidates(NULL),
- fCutArray(NULL),
- fConversionCuts(NULL),
- fMesonCutArray(NULL),
- fMesonCuts(NULL),
- hESDConvGammaPt(NULL),
- hESDConvGammaR(NULL),
- hESDConvGammaEta(NULL),
- tESDConvGammaPtDcazCat(NULL),
- fPtGamma(0),
- fDCAzPhoton(0),
- fRConvPhoton(0),
- fEtaPhoton(0),
- iCatPhoton(0),
- iPhotonMCInfo(0),
- hESDMotherInvMassPt(NULL),
- sESDMotherInvMassPtZM(NULL),
- hESDMotherBackInvMassPt(NULL),
- sESDMotherBackInvMassPtZM(NULL),
- hESDMotherInvMassEalpha(NULL),
- hESDMotherPi0PtY(NULL),
- hESDMotherEtaPtY(NULL),
- hESDMotherPi0PtAlpha(NULL),
- hESDMotherEtaPtAlpha(NULL),
- hESDMotherPi0YEtaLowPtGamma(NULL),
- hESDMotherPi0YEtaHighPtGamma(NULL),
- hESDMotherEtaYEtaLowPtGamma(NULL),
- hESDMotherEtaYEtaHighPtGamma(NULL),
- hMCHeaders(NULL),
- hMCAllGammaPt(NULL),
- hMCDecayGammaPi0Pt(NULL),
- hMCDecayGammaRhoPt(NULL),
- hMCDecayGammaEtaPt(NULL),
- hMCDecayGammaOmegaPt(NULL),
- hMCDecayGammaEtapPt(NULL),
- hMCDecayGammaPhiPt(NULL),
- hMCDecayGammaSigmaPt(NULL),
- hMCConvGammaPt(NULL),
- hMCConvGammaR(NULL),
- hMCConvGammaEta(NULL),
- hMCPi0Pt(NULL),
- hMCPi0WOWeightPt(NULL),
- hMCEtaPt(NULL),
- hMCPi0InAccPt(NULL),
- hMCEtaInAccPt(NULL),
- hMCPi0PtY(NULL),
- hMCEtaPtY(NULL),
- hMCK0sPt(NULL),
- hMCK0sWOWeightPt(NULL),
- hMCK0sPtY(NULL),
- hESDTrueMotherInvMassPt(NULL),
- hESDTruePrimaryMotherInvMassPt(NULL),
- hESDTruePrimaryMotherW0WeightingInvMassPt(NULL),
- pESDTruePrimaryMotherWeightsInvMassPt(NULL),
- hESDTruePrimaryPi0MCPtResolPt(NULL),
- hESDTruePrimaryEtaMCPtResolPt(NULL),
- hESDTrueSecondaryMotherInvMassPt(NULL),
- hESDTrueSecondaryMotherFromK0sInvMassPt(NULL),
- hESDTrueK0sWithPi0DaughterMCPt(NULL),
- hESDTrueSecondaryMotherFromEtaInvMassPt(NULL),
- hESDTrueEtaWithPi0DaughterMCPt(NULL),
- hESDTrueBckGGInvMassPt(NULL),
- hESDTrueBckContInvMassPt(NULL),
- hESDTruePi0PtY(NULL),
- hESDTrueEtaPtY(NULL),
- hESDTruePi0PtAlpha(NULL),
- hESDTrueEtaPtAlpha(NULL),
- hESDTruePi0YEtaLowPtGamma(NULL),
- hESDTruePi0YEtaHighPtGamma(NULL),
- hESDTrueEtaYEtaLowPtGamma(NULL),
- hESDTrueEtaYEtaHighPtGamma(NULL),
- hESDTrueMotherDalitzInvMassPt(NULL),
- hESDTrueConvGammaPt(NULL),
- hESDCombinatorialPt(NULL),
- hESDTruePrimaryConvGammaPt(NULL),
- hESDTruePrimaryConvGammaESDPtMCPt(NULL),
- hESDTrueSecondaryConvGammaPt(NULL),
- hESDTrueSecondaryConvGammaFromXFromK0sPt(NULL),
- hESDTrueSecondaryConvGammaFromXFromLambdaPt(NULL),
- hESDTrueDalitzPsiPairDeltaPhi(NULL),
- hESDTrueGammaPsiPairDeltaPhi(NULL),
- hNEvents(NULL),
- hNGoodESDTracks(NULL),
- hNGammaCandidates(NULL),
- hNV0Tracks(NULL),
- hEtaShift(NULL),
- tESDMesonsInvMassPtDcazMinDcazMaxFlag(NULL),
- fInvMass(0),
- fPt(0),
- fDCAzGammaMin(0),
- fDCAzGammaMax(0),
- iFlag(0),
- iMesonMCInfo(0),
- fEventPlaneAngle(-100),
- fRandom(0),
- fnGammaCandidates(0),
- fUnsmearedPx(NULL),
- fUnsmearedPy(NULL),
- fUnsmearedPz(NULL),
- fUnsmearedE(NULL),
- fMCStackPos(NULL),
- fMCStackNeg(NULL),
- fESDArrayPos(NULL),
- fESDArrayNeg(NULL),
- fnCuts(0),
- fiCut(0),
- fMoveParticleAccordingToVertex(kTRUE),
- fIsHeavyIon(kFALSE),
- fDoMesonAnalysis(kTRUE),
- fDoMesonQA(0),
- fDoPhotonQA(0),
- fIsFromMBHeader(kTRUE),
- fIsMC(kFALSE)
+ fV0Reader(NULL),
+ fBGHandler(NULL),
+ fBGHandlerRP(NULL),
+ fInputEvent(NULL),
+ fMCEvent(NULL),
+ fMCStack(NULL),
+ fCutFolder(NULL),
+ fESDList(NULL),
+ fBackList(NULL),
+ fMotherList(NULL),
+ fPhotonDCAList(NULL),
+ fMesonDCAList(NULL),
+ fTrueList(NULL),
+ fMCList(NULL),
+ fHeaderNameList(NULL),
+ fOutputContainer(0),
+ fReaderGammas(NULL),
+ fGammaCandidates(NULL),
+ fEventCutArray(NULL),
+ fEventCuts(NULL),
+ fCutArray(NULL),
+ fConversionCuts(NULL),
+ fMesonCutArray(NULL),
+ fMesonCuts(NULL),
+ hESDConvGammaPt(NULL),
+ hESDConvGammaR(NULL),
+ hESDConvGammaEta(NULL),
+ tESDConvGammaPtDcazCat(NULL),
+ fPtGamma(0),
+ fDCAzPhoton(0),
+ fRConvPhoton(0),
+ fEtaPhoton(0),
+ iCatPhoton(0),
+ iPhotonMCInfo(0),
+ hESDMotherInvMassPt(NULL),
+ sESDMotherInvMassPtZM(NULL),
+ hESDMotherBackInvMassPt(NULL),
+ sESDMotherBackInvMassPtZM(NULL),
+ hESDMotherInvMassEalpha(NULL),
+ hESDMotherPi0PtY(NULL),
+ hESDMotherEtaPtY(NULL),
+ hESDMotherPi0PtAlpha(NULL),
+ hESDMotherEtaPtAlpha(NULL),
+ hESDMotherPi0PtOpenAngle(NULL),
+ hESDMotherEtaPtOpenAngle(NULL),
+ hMCHeaders(NULL),
+ hMCAllGammaPt(NULL),
+ hMCDecayGammaPi0Pt(NULL),
+ hMCDecayGammaRhoPt(NULL),
+ hMCDecayGammaEtaPt(NULL),
+ hMCDecayGammaOmegaPt(NULL),
+ hMCDecayGammaEtapPt(NULL),
+ hMCDecayGammaPhiPt(NULL),
+ hMCDecayGammaSigmaPt(NULL),
+ hMCConvGammaPt(NULL),
+ hMCConvGammaR(NULL),
+ hMCConvGammaEta(NULL),
+ hMCPi0Pt(NULL),
+ hMCPi0WOWeightPt(NULL),
+ hMCEtaPt(NULL),
+ hMCEtaWOWeightPt(NULL),
+ hMCPi0InAccPt(NULL),
+ hMCEtaInAccPt(NULL),
+ hMCPi0PtY(NULL),
+ hMCEtaPtY(NULL),
+ hMCPi0PtAlpha(NULL),
+ hMCEtaPtAlpha(NULL),
+ hMCK0sPt(NULL),
+ hMCK0sWOWeightPt(NULL),
+ hMCK0sPtY(NULL),
+ hMCSecPi0PtvsSource(NULL),
+ hMCSecPi0Source(NULL),
+ hMCSecEtaPt(NULL),
+ hMCSecEtaSource(NULL),
+ hESDTrueMotherInvMassPt(NULL),
+ hESDTruePrimaryMotherInvMassPt(NULL),
+ hESDTruePrimaryMotherW0WeightingInvMassPt(NULL),
+ pESDTruePrimaryMotherWeightsInvMassPt(NULL),
+ hESDTruePrimaryPi0MCPtResolPt(NULL),
+ hESDTruePrimaryEtaMCPtResolPt(NULL),
+ hESDTrueSecondaryMotherInvMassPt(NULL),
+ hESDTrueSecondaryMotherFromK0sInvMassPt(NULL),
+ hESDTrueK0sWithPi0DaughterMCPt(NULL),
+ hESDTrueSecondaryMotherFromEtaInvMassPt(NULL),
+ hESDTrueEtaWithPi0DaughterMCPt(NULL),
+ hESDTrueSecondaryMotherFromLambdaInvMassPt(NULL),
+ hESDTrueLambdaWithPi0DaughterMCPt(NULL),
+ hESDTrueBckGGInvMassPt(NULL),
+ hESDTrueBckContInvMassPt(NULL),
+ hESDTruePi0PtY(NULL),
+ hESDTrueEtaPtY(NULL),
+ hESDTruePi0PtAlpha(NULL),
+ hESDTrueEtaPtAlpha(NULL),
+ hESDTruePi0PtOpenAngle(NULL),
+ hESDTrueEtaPtOpenAngle(NULL),
+ hESDTrueMotherDalitzInvMassPt(NULL),
+ hESDTrueConvGammaPt(NULL),
+ hESDTrueConvGammaEta(NULL),
+ hESDCombinatorialPt(NULL),
+ hESDTruePrimaryConvGammaPt(NULL),
+ hESDTruePrimaryConvGammaESDPtMCPt(NULL),
+ hESDTrueSecondaryConvGammaPt(NULL),
+ hESDTrueSecondaryConvGammaFromXFromK0sPt(NULL),
+ hESDTrueSecondaryConvGammaFromXFromLambdaPt(NULL),
+ hESDTrueDalitzPsiPairDeltaPhi(NULL),
+ hESDTrueGammaPsiPairDeltaPhi(NULL),
+ hNEvents(NULL),
+ hNGoodESDTracks(NULL),
+ hNGammaCandidates(NULL),
+ hNGoodESDTracksVsNGammaCanditates(NULL),
+ hNV0Tracks(NULL),
+ hEtaShift(NULL),
+ tESDMesonsInvMassPtDcazMinDcazMaxFlag(NULL),
+ fInvMass(0),
+ fPt(0),
+ fDCAzGammaMin(0),
+ fDCAzGammaMax(0),
+ iFlag(0),
+ iMesonMCInfo(0),
+ fEventPlaneAngle(-100),
+ fRandom(0),
+ fnGammaCandidates(0),
+ fUnsmearedPx(NULL),
+ fUnsmearedPy(NULL),
+ fUnsmearedPz(NULL),
+ fUnsmearedE(NULL),
+ fMCStackPos(NULL),
+ fMCStackNeg(NULL),
+ fESDArrayPos(NULL),
+ fESDArrayNeg(NULL),
+ fnCuts(0),
+ fiCut(0),
+ fMoveParticleAccordingToVertex(kTRUE),
+ fIsHeavyIon(0),
+ fDoMesonAnalysis(kTRUE),
+ fDoMesonQA(0),
+ fDoPhotonQA(0),
+ fIsFromMBHeader(kTRUE),
+ fIsMC(kFALSE)
{
}
//________________________________________________________________________
AliAnalysisTaskGammaConvV1::AliAnalysisTaskGammaConvV1(const char *name):
- AliAnalysisTaskSE(name),
- fV0Reader(NULL),
- fBGHandler(NULL),
- fBGHandlerRP(NULL),
- fInputEvent(NULL),
- fMCEvent(NULL),
- fMCStack(NULL),
- fCutFolder(NULL),
- fESDList(NULL),
- fBackList(NULL),
- fMotherList(NULL),
- fPhotonDCAList(NULL),
- fMesonDCAList(NULL),
- fTrueList(NULL),
- fMCList(NULL),
- fHeaderNameList(NULL),
- fOutputContainer(0),
- fReaderGammas(NULL),
- fGammaCandidates(NULL),
- fCutArray(NULL),
- fConversionCuts(NULL),
- fMesonCutArray(NULL),
- fMesonCuts(NULL),
- hESDConvGammaPt(NULL),
- hESDConvGammaR(NULL),
- hESDConvGammaEta(NULL),
- tESDConvGammaPtDcazCat(NULL),
- fPtGamma(0),
- fDCAzPhoton(0),
- fRConvPhoton(0),
- fEtaPhoton(0),
- iCatPhoton(0),
- iPhotonMCInfo(0),
- hESDMotherInvMassPt(NULL),
- sESDMotherInvMassPtZM(NULL),
- hESDMotherBackInvMassPt(NULL),
- sESDMotherBackInvMassPtZM(NULL),
- hESDMotherInvMassEalpha(NULL),
- hESDMotherPi0PtY(NULL),
- hESDMotherEtaPtY(NULL),
- hESDMotherPi0PtAlpha(NULL),
- hESDMotherEtaPtAlpha(NULL),
- hESDMotherPi0YEtaLowPtGamma(NULL),
- hESDMotherPi0YEtaHighPtGamma(NULL),
- hESDMotherEtaYEtaLowPtGamma(NULL),
- hESDMotherEtaYEtaHighPtGamma(NULL),
- hMCHeaders(NULL),
- hMCAllGammaPt(NULL),
- hMCDecayGammaPi0Pt(NULL),
- hMCDecayGammaRhoPt(NULL),
- hMCDecayGammaEtaPt(NULL),
- hMCDecayGammaOmegaPt(NULL),
- hMCDecayGammaEtapPt(NULL),
- hMCDecayGammaPhiPt(NULL),
- hMCDecayGammaSigmaPt(NULL),
- hMCConvGammaPt(NULL),
- hMCConvGammaR(NULL),
- hMCConvGammaEta(NULL),
- hMCPi0Pt(NULL),
- hMCPi0WOWeightPt(NULL),
- hMCEtaPt(NULL),
- hMCPi0InAccPt(NULL),
- hMCEtaInAccPt(NULL),
- hMCPi0PtY(NULL),
- hMCEtaPtY(NULL),
- hMCK0sPt(NULL),
- hMCK0sWOWeightPt(NULL),
- hMCK0sPtY(NULL),
- hESDTrueMotherInvMassPt(NULL),
- hESDTruePrimaryMotherInvMassPt(NULL),
- hESDTruePrimaryMotherW0WeightingInvMassPt(NULL),
- pESDTruePrimaryMotherWeightsInvMassPt(NULL),
- hESDTruePrimaryPi0MCPtResolPt(NULL),
- hESDTruePrimaryEtaMCPtResolPt(NULL),
- hESDTrueSecondaryMotherInvMassPt(NULL),
- hESDTrueSecondaryMotherFromK0sInvMassPt(NULL),
- hESDTrueK0sWithPi0DaughterMCPt(NULL),
- hESDTrueSecondaryMotherFromEtaInvMassPt(NULL),
- hESDTrueEtaWithPi0DaughterMCPt(NULL),
- hESDTrueBckGGInvMassPt(NULL),
- hESDTrueBckContInvMassPt(NULL),
- hESDTruePi0PtY(NULL),
- hESDTrueEtaPtY(NULL),
- hESDTruePi0PtAlpha(NULL),
- hESDTrueEtaPtAlpha(NULL),
- hESDTruePi0YEtaLowPtGamma(NULL),
- hESDTruePi0YEtaHighPtGamma(NULL),
- hESDTrueEtaYEtaLowPtGamma(NULL),
- hESDTrueEtaYEtaHighPtGamma(NULL),
- hESDTrueMotherDalitzInvMassPt(NULL),
- hESDTrueConvGammaPt(NULL),
- hESDCombinatorialPt(NULL),
- hESDTruePrimaryConvGammaPt(NULL),
- hESDTruePrimaryConvGammaESDPtMCPt(NULL),
- hESDTrueSecondaryConvGammaPt(NULL),
- hESDTrueSecondaryConvGammaFromXFromK0sPt(NULL),
- hESDTrueSecondaryConvGammaFromXFromLambdaPt(NULL),
- hESDTrueDalitzPsiPairDeltaPhi(NULL),
- hESDTrueGammaPsiPairDeltaPhi(NULL),
- hNEvents(NULL),
- hNGoodESDTracks(NULL),
- hNGammaCandidates(NULL),
- hNV0Tracks(NULL),
- hEtaShift(NULL),
- tESDMesonsInvMassPtDcazMinDcazMaxFlag(NULL),
- fInvMass(0),
- fPt(0),
- fDCAzGammaMin(0),
- fDCAzGammaMax(0),
- iFlag(0),
- iMesonMCInfo(0),
- fEventPlaneAngle(-100),
- fRandom(0),
- fnGammaCandidates(0),
- fUnsmearedPx(NULL),
- fUnsmearedPy(NULL),
- fUnsmearedPz(NULL),
- fUnsmearedE(NULL),
- fMCStackPos(NULL),
- fMCStackNeg(NULL),
- fESDArrayPos(NULL),
- fESDArrayNeg(NULL),
- fnCuts(0),
- fiCut(0),
- fMoveParticleAccordingToVertex(kTRUE),
- fIsHeavyIon(kFALSE),
- fDoMesonAnalysis(kTRUE),
- fDoMesonQA(0),
- fDoPhotonQA(0),
- fIsFromMBHeader(kTRUE),
- fIsMC(kFALSE)
+ AliAnalysisTaskSE(name),
+ fV0Reader(NULL),
+ fBGHandler(NULL),
+ fBGHandlerRP(NULL),
+ fInputEvent(NULL),
+ fMCEvent(NULL),
+ fMCStack(NULL),
+ fCutFolder(NULL),
+ fESDList(NULL),
+ fBackList(NULL),
+ fMotherList(NULL),
+ fPhotonDCAList(NULL),
+ fMesonDCAList(NULL),
+ fTrueList(NULL),
+ fMCList(NULL),
+ fHeaderNameList(NULL),
+ fOutputContainer(0),
+ fReaderGammas(NULL),
+ fGammaCandidates(NULL),
+ fEventCutArray(NULL),
+ fEventCuts(NULL),
+ fCutArray(NULL),
+ fConversionCuts(NULL),
+ fMesonCutArray(NULL),
+ fMesonCuts(NULL),
+ hESDConvGammaPt(NULL),
+ hESDConvGammaR(NULL),
+ hESDConvGammaEta(NULL),
+ tESDConvGammaPtDcazCat(NULL),
+ fPtGamma(0),
+ fDCAzPhoton(0),
+ fRConvPhoton(0),
+ fEtaPhoton(0),
+ iCatPhoton(0),
+ iPhotonMCInfo(0),
+ hESDMotherInvMassPt(NULL),
+ sESDMotherInvMassPtZM(NULL),
+ hESDMotherBackInvMassPt(NULL),
+ sESDMotherBackInvMassPtZM(NULL),
+ hESDMotherInvMassEalpha(NULL),
+ hESDMotherPi0PtY(NULL),
+ hESDMotherEtaPtY(NULL),
+ hESDMotherPi0PtAlpha(NULL),
+ hESDMotherEtaPtAlpha(NULL),
+ hESDMotherPi0PtOpenAngle(NULL),
+ hESDMotherEtaPtOpenAngle(NULL),
+ hMCHeaders(NULL),
+ hMCAllGammaPt(NULL),
+ hMCDecayGammaPi0Pt(NULL),
+ hMCDecayGammaRhoPt(NULL),
+ hMCDecayGammaEtaPt(NULL),
+ hMCDecayGammaOmegaPt(NULL),
+ hMCDecayGammaEtapPt(NULL),
+ hMCDecayGammaPhiPt(NULL),
+ hMCDecayGammaSigmaPt(NULL),
+ hMCConvGammaPt(NULL),
+ hMCConvGammaR(NULL),
+ hMCConvGammaEta(NULL),
+ hMCPi0Pt(NULL),
+ hMCPi0WOWeightPt(NULL),
+ hMCEtaPt(NULL),
+ hMCEtaWOWeightPt(NULL),
+ hMCPi0InAccPt(NULL),
+ hMCEtaInAccPt(NULL),
+ hMCPi0PtY(NULL),
+ hMCEtaPtY(NULL),
+ hMCPi0PtAlpha(NULL),
+ hMCEtaPtAlpha(NULL),
+ hMCK0sPt(NULL),
+ hMCK0sWOWeightPt(NULL),
+ hMCK0sPtY(NULL),
+ hMCSecPi0PtvsSource(NULL),
+ hMCSecPi0Source(NULL),
+ hMCSecEtaPt(NULL),
+ hMCSecEtaSource(NULL),
+ hESDTrueMotherInvMassPt(NULL),
+ hESDTruePrimaryMotherInvMassPt(NULL),
+ hESDTruePrimaryMotherW0WeightingInvMassPt(NULL),
+ pESDTruePrimaryMotherWeightsInvMassPt(NULL),
+ hESDTruePrimaryPi0MCPtResolPt(NULL),
+ hESDTruePrimaryEtaMCPtResolPt(NULL),
+ hESDTrueSecondaryMotherInvMassPt(NULL),
+ hESDTrueSecondaryMotherFromK0sInvMassPt(NULL),
+ hESDTrueK0sWithPi0DaughterMCPt(NULL),
+ hESDTrueSecondaryMotherFromEtaInvMassPt(NULL),
+ hESDTrueEtaWithPi0DaughterMCPt(NULL),
+ hESDTrueSecondaryMotherFromLambdaInvMassPt(NULL),
+ hESDTrueLambdaWithPi0DaughterMCPt(NULL),
+ hESDTrueBckGGInvMassPt(NULL),
+ hESDTrueBckContInvMassPt(NULL),
+ hESDTruePi0PtY(NULL),
+ hESDTrueEtaPtY(NULL),
+ hESDTruePi0PtAlpha(NULL),
+ hESDTrueEtaPtAlpha(NULL),
+ hESDTruePi0PtOpenAngle(NULL),
+ hESDTrueEtaPtOpenAngle(NULL),
+ hESDTrueMotherDalitzInvMassPt(NULL),
+ hESDTrueConvGammaPt(NULL),
+ hESDTrueConvGammaEta(NULL),
+ hESDCombinatorialPt(NULL),
+ hESDTruePrimaryConvGammaPt(NULL),
+ hESDTruePrimaryConvGammaESDPtMCPt(NULL),
+ hESDTrueSecondaryConvGammaPt(NULL),
+ hESDTrueSecondaryConvGammaFromXFromK0sPt(NULL),
+ hESDTrueSecondaryConvGammaFromXFromLambdaPt(NULL),
+ hESDTrueDalitzPsiPairDeltaPhi(NULL),
+ hESDTrueGammaPsiPairDeltaPhi(NULL),
+ hNEvents(NULL),
+ hNGoodESDTracks(NULL),
+ hNGammaCandidates(NULL),
+ hNGoodESDTracksVsNGammaCanditates(NULL),
+ hNV0Tracks(NULL),
+ hEtaShift(NULL),
+ tESDMesonsInvMassPtDcazMinDcazMaxFlag(NULL),
+ fInvMass(0),
+ fPt(0),
+ fDCAzGammaMin(0),
+ fDCAzGammaMax(0),
+ iFlag(0),
+ iMesonMCInfo(0),
+ fEventPlaneAngle(-100),
+ fRandom(0),
+ fnGammaCandidates(0),
+ fUnsmearedPx(NULL),
+ fUnsmearedPy(NULL),
+ fUnsmearedPz(NULL),
+ fUnsmearedE(NULL),
+ fMCStackPos(NULL),
+ fMCStackNeg(NULL),
+ fESDArrayPos(NULL),
+ fESDArrayNeg(NULL),
+ fnCuts(0),
+ fiCut(0),
+ fMoveParticleAccordingToVertex(kTRUE),
+ fIsHeavyIon(0),
+ fDoMesonAnalysis(kTRUE),
+ fDoMesonQA(0),
+ fDoPhotonQA(0),
+ fIsFromMBHeader(kTRUE),
+ fIsMC(kFALSE)
{
// Define output slots here
- DefineOutput(1, TList::Class());
+ DefineOutput(1, TList::Class());
}
AliAnalysisTaskGammaConvV1::~AliAnalysisTaskGammaConvV1()
{
- if(fGammaCandidates){
- delete fGammaCandidates;
- fGammaCandidates = 0x0;
- }
- if(fBGHandler){
- delete[] fBGHandler;
- fBGHandler = 0x0;
- }
- if(fBGHandlerRP){
- delete[] fBGHandlerRP;
- fBGHandlerRP = 0x0;
- }
+ if(fGammaCandidates){
+ delete fGammaCandidates;
+ fGammaCandidates = 0x0;
+ }
+ if(fBGHandler){
+ delete[] fBGHandler;
+ fBGHandler = 0x0;
+ }
+ if(fBGHandlerRP){
+ delete[] fBGHandlerRP;
+ fBGHandlerRP = 0x0;
+ }
}
//___________________________________________________________
void AliAnalysisTaskGammaConvV1::InitBack(){
- const Int_t nDim = 4;
- Int_t nBins[nDim] = {800,250,7,4};
- Double_t xMin[nDim] = {0,0, 0,0};
- Double_t xMax[nDim] = {0.8,25,7,4};
-
- sESDMotherInvMassPtZM = new THnSparseF*[fnCuts];
- sESDMotherBackInvMassPtZM = new THnSparseF*[fnCuts];
-
- fBGHandler = new AliGammaConversionAODBGHandler*[fnCuts];
- fBGHandlerRP = new AliConversionAODBGHandlerRP*[fnCuts];
- for(Int_t iCut = 0; iCut<fnCuts;iCut++){
- if (((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->DoBGCalculation()){
- TString cutstring = ((AliConversionCuts*)fCutArray->At(iCut))->GetCutNumber();
- TString cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
-
- Int_t collisionSystem = atoi((TString)(((AliConversionCuts*)fCutArray->At(iCut))->GetCutNumber())(0,1));
- Int_t centMin = atoi((TString)(((AliConversionCuts*)fCutArray->At(iCut))->GetCutNumber())(1,1));
- Int_t centMax = atoi((TString)(((AliConversionCuts*)fCutArray->At(iCut))->GetCutNumber())(2,1));
-
- if(collisionSystem == 1 || collisionSystem == 2 ||
- collisionSystem == 5 || collisionSystem == 8 ||
- collisionSystem == 9){
- centMin = centMin*10;
- centMax = centMax*10;
- if(centMax ==0 && centMax!=centMin) centMax=100;
- }
- else if(collisionSystem == 3 || collisionSystem == 6){
- centMin = centMin*5;
- centMax = centMax*5;
- }
- else if(collisionSystem == 4 || collisionSystem == 7){
- centMin = ((centMin*5)+45);
- centMax = ((centMax*5)+45);
- }
-
- fBackList[iCut] = new TList();
- fBackList[iCut]->SetName(Form("%s_%s Back histograms",cutstring.Data(),cutstringMeson.Data()));
- fBackList[iCut]->SetOwner(kTRUE);
- fCutFolder[iCut]->Add(fBackList[iCut]);
-
- sESDMotherBackInvMassPtZM[iCut] = new THnSparseF("Back_Back_InvMass_Pt_z_m","Back_Back_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
- fBackList[iCut]->Add(sESDMotherBackInvMassPtZM[iCut]);
-
- fMotherList[iCut] = new TList();
- fMotherList[iCut]->SetName(Form("%s_%s Mother histograms",cutstring.Data(),cutstringMeson.Data()));
- fMotherList[iCut]->SetOwner(kTRUE);
- fCutFolder[iCut]->Add(fMotherList[iCut]);
-
- sESDMotherInvMassPtZM[iCut] = new THnSparseF("Back_Mother_InvMass_Pt_z_m","Back_Mother_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
- fMotherList[iCut]->Add(sESDMotherInvMassPtZM[iCut]);
-
- if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->BackgroundHandlerType() == 0){
- fBGHandler[iCut] = new AliGammaConversionAODBGHandler(
- collisionSystem,centMin,centMax,
- ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents(),
- ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseTrackMultiplicity());
- fBGHandlerRP[iCut] = NULL;
- }
- else{
- fBGHandlerRP[iCut] = new AliConversionAODBGHandlerRP(
- ((AliConversionCuts*)fCutArray->At(fiCut))->IsHeavyIon(),
- ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity(),
- ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents());
- fBGHandler[iCut] = NULL;
- }
- }
- }
+ const Int_t nDim = 4;
+ Int_t nBins[nDim] = {800,250,7,4};
+ Double_t xMin[nDim] = {0,0, 0,0};
+ Double_t xMax[nDim] = {0.8,25,7,4};
+
+ sESDMotherInvMassPtZM = new THnSparseF*[fnCuts];
+ sESDMotherBackInvMassPtZM = new THnSparseF*[fnCuts];
+
+ fBGHandler = new AliGammaConversionAODBGHandler*[fnCuts];
+ fBGHandlerRP = new AliConversionAODBGHandlerRP*[fnCuts];
+ for(Int_t iCut = 0; iCut<fnCuts;iCut++){
+ if (((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->DoBGCalculation()){
+ TString cutstringEvent = ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber();
+ TString cutstringPhoton = ((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutNumber();
+ TString cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
+
+ Int_t collisionSystem = atoi((TString)(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber())(0,1));
+ Int_t centMin = atoi((TString)(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber())(1,1));
+ Int_t centMax = atoi((TString)(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber())(2,1));
+
+ if(collisionSystem == 1 || collisionSystem == 2 ||
+ collisionSystem == 5 || collisionSystem == 8 ||
+ collisionSystem == 9){
+ centMin = centMin*10;
+ centMax = centMax*10;
+ if(centMax ==0 && centMax!=centMin) centMax=100;
+ } else if(collisionSystem == 3 || collisionSystem == 6) {
+ centMin = centMin*5;
+ centMax = centMax*5;
+ } else if(collisionSystem == 4 || collisionSystem == 7) {
+ centMin = ((centMin*5)+45);
+ centMax = ((centMax*5)+45);
+ }
+
+ fBackList[iCut] = new TList();
+ fBackList[iCut]->SetName(Form("%s_%s_%s Back histograms",cutstringEvent.Data(), cutstringPhoton.Data(),cutstringMeson.Data()));
+ fBackList[iCut]->SetOwner(kTRUE);
+ fCutFolder[iCut]->Add(fBackList[iCut]);
+
+ sESDMotherBackInvMassPtZM[iCut] = new THnSparseF("Back_Back_InvMass_Pt_z_m","Back_Back_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
+ fBackList[iCut]->Add(sESDMotherBackInvMassPtZM[iCut]);
+
+ fMotherList[iCut] = new TList();
+ fMotherList[iCut]->SetName(Form("%s_%s_%s Mother histograms",cutstringEvent.Data() ,cutstringPhoton.Data(),cutstringMeson.Data()));
+ fMotherList[iCut]->SetOwner(kTRUE);
+ fCutFolder[iCut]->Add(fMotherList[iCut]);
+
+ sESDMotherInvMassPtZM[iCut] = new THnSparseF("Back_Mother_InvMass_Pt_z_m","Back_Mother_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
+ fMotherList[iCut]->Add(sESDMotherInvMassPtZM[iCut]);
+
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->BackgroundHandlerType() == 0){
+ fBGHandler[iCut] = new AliGammaConversionAODBGHandler(
+ collisionSystem,centMin,centMax,
+ ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents(),
+ ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseTrackMultiplicity(),
+ 0,8,5);
+ fBGHandlerRP[iCut] = NULL;
+ } else {
+ fBGHandlerRP[iCut] = new AliConversionAODBGHandlerRP(
+ ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsHeavyIon(),
+ ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity(),
+ ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents());
+ fBGHandler[iCut] = NULL;
+ }
+ }
+ }
}
//________________________________________________________________________
-void AliAnalysisTaskGammaConvV1::UserCreateOutputObjects()
-{
-
- // Create histograms
- if(fOutputContainer != NULL){
- delete fOutputContainer;
- fOutputContainer = NULL;
- }
- if(fOutputContainer == NULL){
- fOutputContainer = new TList();
- fOutputContainer->SetOwner(kTRUE);
- }
-
- // Array of current cut's gammas
- fGammaCandidates = new TList();
-
- fCutFolder = new TList*[fnCuts];
- fESDList = new TList*[fnCuts];
- fBackList = new TList*[fnCuts];
- fMotherList = new TList*[fnCuts];
- hNEvents = new TH1I*[fnCuts];
- hNGoodESDTracks = new TH1I*[fnCuts];
- hNGammaCandidates = new TH1I*[fnCuts];
- hNV0Tracks = new TH1I*[fnCuts];
- hEtaShift = new TProfile*[fnCuts];
- hESDConvGammaPt = new TH1F*[fnCuts];
-
- if (fDoPhotonQA == 2){
- fPhotonDCAList = new TList*[fnCuts];
- tESDConvGammaPtDcazCat = new TTree*[fnCuts];
- }
- if (fDoPhotonQA > 0){
- hESDConvGammaR = new TH1F*[fnCuts];
- hESDConvGammaEta = new TH1F*[fnCuts];
- }
-
- if(fDoMesonAnalysis){
- hESDMotherInvMassPt = new TH2F*[fnCuts];
- hESDMotherBackInvMassPt = new TH2F*[fnCuts];
- hESDMotherInvMassEalpha = new TH2F*[fnCuts];
- if (fDoMesonQA == 2){
- fMesonDCAList = new TList*[fnCuts];
- tESDMesonsInvMassPtDcazMinDcazMaxFlag = new TTree*[fnCuts];
- }
- if (fDoMesonQA > 0){
- hESDMotherPi0PtY = new TH2F*[fnCuts];
- hESDMotherEtaPtY = new TH2F*[fnCuts];
- hESDMotherPi0PtAlpha = new TH2F*[fnCuts];
- hESDMotherEtaPtAlpha = new TH2F*[fnCuts];
- hESDMotherPi0YEtaLowPtGamma = new TH2F*[fnCuts];
- hESDMotherPi0YEtaHighPtGamma = new TH2F*[fnCuts];
- hESDMotherEtaYEtaLowPtGamma = new TH2F*[fnCuts];
- hESDMotherEtaYEtaHighPtGamma = new TH2F*[fnCuts];
- }
- }
-
- for(Int_t iCut = 0; iCut<fnCuts;iCut++){
-
- TString cutstring = ((AliConversionCuts*)fCutArray->At(iCut))->GetCutNumber();
- TString cutstringMeson = "NoMesonCut";
- if(fDoMesonAnalysis)cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
-
- fCutFolder[iCut] = new TList();
- fCutFolder[iCut]->SetName(Form("Cut Number %s_%s",cutstring.Data(),cutstringMeson.Data()));
- fCutFolder[iCut]->SetOwner(kTRUE);
- fOutputContainer->Add(fCutFolder[iCut]);
- fESDList[iCut] = new TList();
- fESDList[iCut]->SetName(Form("%s_%s ESD histograms",cutstring.Data(),cutstringMeson.Data()));
- fESDList[iCut]->SetOwner(kTRUE);
- fCutFolder[iCut]->Add(fESDList[iCut]);
-
- hNEvents[iCut] = new TH1I("NEvents","NEvents",9,-0.5,8.5);
- hNEvents[iCut]->GetXaxis()->SetBinLabel(1,"Accepted");
- hNEvents[iCut]->GetXaxis()->SetBinLabel(2,"Centrality");
- hNEvents[iCut]->GetXaxis()->SetBinLabel(3,"Missing MC");
- if (((AliConversionCuts*)fCutArray->At(iCut))->IsSpecialTrigger() == 4 ){
- TString TriggerNames = "Not Trigger: ";
- TriggerNames = TriggerNames+ ( (AliConversionCuts*)fCutArray->At(iCut))->GetSpecialTriggerName();
- hNEvents[iCut]->GetXaxis()->SetBinLabel(4,TriggerNames.Data());
- } else {
- hNEvents[iCut]->GetXaxis()->SetBinLabel(4,"Trigger");
- }
- hNEvents[iCut]->GetXaxis()->SetBinLabel(5,"Vertex Z");
- hNEvents[iCut]->GetXaxis()->SetBinLabel(6,"Cont. Vertex");
- hNEvents[iCut]->GetXaxis()->SetBinLabel(7,"Pile-Up");
- hNEvents[iCut]->GetXaxis()->SetBinLabel(8,"no SDD");
- hNEvents[iCut]->GetXaxis()->SetBinLabel(9,"no V0AND");
- fESDList[iCut]->Add(hNEvents[iCut]);
- if(fIsHeavyIon) hNGoodESDTracks[iCut] = new TH1I("GoodESDTracks","GoodESDTracks",4000,0,4000);
- else hNGoodESDTracks[iCut] = new TH1I("GoodESDTracks","GoodESDTracks",200,0,200);
- fESDList[iCut]->Add(hNGoodESDTracks[iCut]);
- if(fIsHeavyIon) hNGammaCandidates[iCut] = new TH1I("GammaCandidates","GammaCandidates",100,0,100);
- else hNGammaCandidates[iCut] = new TH1I("GammaCandidates","GammaCandidates",50,0,50);
- fESDList[iCut]->Add(hNGammaCandidates[iCut]);
- if(fIsHeavyIon) hNV0Tracks[iCut] = new TH1I("V0 Multiplicity","V0 Multiplicity",30000,0,30000);
- else hNV0Tracks[iCut] = new TH1I("V0 Multiplicity","V0 Multiplicity",2000,0,2000);
- fESDList[iCut]->Add(hNV0Tracks[iCut]);
- hEtaShift[iCut] = new TProfile("Eta Shift","Eta Shift",1, -0.5,0.5);
- fESDList[iCut]->Add(hEtaShift[iCut]);
- hESDConvGammaPt[iCut] = new TH1F("ESD_ConvGamma_Pt","ESD_ConvGamma_Pt",250,0,25);
- fESDList[iCut]->Add(hESDConvGammaPt[iCut]);
-
- if (fDoPhotonQA == 2){
- fPhotonDCAList[iCut] = new TList();
- fPhotonDCAList[iCut]->SetName(Form("%s_%s Photon DCA tree",cutstring.Data(),cutstringMeson.Data()));
- fPhotonDCAList[iCut]->SetOwner(kTRUE);
- fCutFolder[iCut]->Add(fPhotonDCAList[iCut]);
-
- tESDConvGammaPtDcazCat[iCut] = new TTree("ESD_ConvGamma_Pt_Dcaz_R_Eta","ESD_ConvGamma_Pt_Dcaz_R_Eta_Cat");
- tESDConvGammaPtDcazCat[iCut]->Branch("Pt",&fPtGamma,"fPtGamma/F");
- tESDConvGammaPtDcazCat[iCut]->Branch("DcaZPhoton",&fDCAzPhoton,"fDCAzPhoton/F");
-// tESDConvGammaPtDcazCat[iCut]->Branch("R",&fRConvPhoton,"fRConvPhoton/F");
-// tESDConvGammaPtDcazCat[iCut]->Branch("Eta",&fEtaPhoton,"fEtaPhoton/F");
-
- tESDConvGammaPtDcazCat[iCut]->Branch("cat",&iCatPhoton,"iCatPhoton/b");
- if(fIsMC){
- tESDConvGammaPtDcazCat[iCut]->Branch("photonMCInfo",&iPhotonMCInfo,"iPhotonMCInfo/b");
- }
- fPhotonDCAList[iCut]->Add(tESDConvGammaPtDcazCat[iCut]);
- }
-
- if (fDoPhotonQA > 0){
- hESDConvGammaR[iCut] = new TH1F("ESD_ConvGamma_R","ESD_ConvGamma_R",800,0,200);
- fESDList[iCut]->Add(hESDConvGammaR[iCut]);
- hESDConvGammaEta[iCut] = new TH1F("ESD_ConvGamma_Eta","ESD_ConvGamma_Eta",100,-4,4);
- fESDList[iCut]->Add(hESDConvGammaEta[iCut]);
- }
-
- if(fDoMesonAnalysis){
- hESDMotherInvMassPt[iCut] = new TH2F("ESD_Mother_InvMass_Pt","ESD_Mother_InvMass_Pt",800,0,0.8,250,0,25);
- fESDList[iCut]->Add(hESDMotherInvMassPt[iCut]);
- hESDMotherBackInvMassPt[iCut] = new TH2F("ESD_Background_InvMass_Pt","ESD_Background_InvMass_Pt",800,0,0.8,250,0,25);
- fESDList[iCut]->Add(hESDMotherBackInvMassPt[iCut]);
- hESDMotherInvMassEalpha[iCut] = new TH2F("ESD_Mother_InvMass_vs_E_alpha","ESD_Mother_InvMass_vs_E_alpha",800,0,0.8,250,0,25);
- fESDList[iCut]->Add(hESDMotherInvMassEalpha[iCut]);
- if (fDoMesonQA == 2){
- fMesonDCAList[iCut] = new TList();
- fMesonDCAList[iCut]->SetName(Form("%s_%s Meson DCA tree",cutstring.Data(),cutstringMeson.Data()));
- fMesonDCAList[iCut]->SetOwner(kTRUE);
- fCutFolder[iCut]->Add(fMesonDCAList[iCut]);
-
- tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut] = new TTree("ESD_Mesons_InvMass_Pt_DcazMin_DcazMax_Flag","ESD_Mesons_InvMass_Pt_DcazMin_DcazMax_Flag");
- tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("InvMass",&fInvMass,"fInvMass/F");
- tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("Pt",&fPt,"fPt/F");
- tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("DcaZMin",&fDCAzGammaMin,"fDCAzGammaMin/F");
- tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("DcaZMax",&fDCAzGammaMax,"fDCAzGammaMax/F");
- tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("kind",&iFlag,"iFlag/b");
- if(fIsMC){
- tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("mesonMCInfo",&iMesonMCInfo,"iMesonMCInfo/b");
- }
- fMesonDCAList[iCut]->Add(tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]);
-
- }
- if (fDoMesonQA > 0 ){
- hESDMotherPi0PtY[iCut] = new TH2F("ESD_MotherPi0_Pt_Y","ESD_MotherPi0_Pt_Y",250,0,25,150,-1.5,1.5);
- fESDList[iCut]->Add(hESDMotherPi0PtY[iCut]);
- hESDMotherEtaPtY[iCut] = new TH2F("ESD_MotherEta_Pt_Y","ESD_MotherEta_Pt_Y",250,0,25,150,-1.5,1.5);
- fESDList[iCut]->Add(hESDMotherEtaPtY[iCut]);
- hESDMotherPi0PtAlpha[iCut] = new TH2F("ESD_MotherPi0_Pt_Alpha","ESD_MotherPi0_Pt_Alpha",250,0,25,100,0,1);
- fESDList[iCut]->Add(hESDMotherPi0PtAlpha[iCut]);
- hESDMotherEtaPtAlpha[iCut] = new TH2F("ESD_MotherEta_Pt_Alpha","ESD_MotherEta_Pt_Alpha",250,0,25,100,0,1);
- fESDList[iCut]->Add(hESDMotherEtaPtAlpha[iCut]);
- hESDMotherPi0YEtaLowPtGamma[iCut] = new TH2F("ESD_MotherPi0_Y_EtaLowPtGamma","ESD_MotherPi0_Y_EtaLowPtGamma",150,-1.5,1.5,200,2,2);
- fESDList[iCut]->Add(hESDMotherPi0YEtaLowPtGamma[iCut]);
- hESDMotherPi0YEtaHighPtGamma[iCut] = new TH2F("ESD_MotherPi0_Y_EtaHighPtGamma","ESD_MotherPi0_Y_EtaHighPtGamma",150,-1.5,1.5,200,2,2);
- fESDList[iCut]->Add(hESDMotherPi0YEtaHighPtGamma[iCut]);
- hESDMotherEtaYEtaLowPtGamma[iCut] = new TH2F("ESD_MotherEta_Y_EtaLowPtGamma","ESD_MotherEta_Y_EtaLowPtGamma",150,-1.5,1.5,200,2,2);
- fESDList[iCut]->Add(hESDMotherEtaYEtaLowPtGamma[iCut]);
- hESDMotherEtaYEtaHighPtGamma[iCut] = new TH2F("ESD_MotherEta_Y_EtaHighPtGamma","ESD_MotherEta_Y_EtaHighPtGamma",150,-1.5,1.5,200,2,2);
- fESDList[iCut]->Add(hESDMotherEtaYEtaHighPtGamma[iCut]);
- }
-
-
- }
-
-
- }
- if(fDoMesonAnalysis){
- InitBack(); // Init Background Handler
- }
-
- if(fIsMC){
- // MC Histogramms
- fMCList = new TList*[fnCuts];
- // True Histogramms
- fTrueList = new TList*[fnCuts];
- // Selected Header List
- fHeaderNameList = new TList*[fnCuts];
- hMCHeaders = new TH1I*[fnCuts];
- hMCAllGammaPt = new TH1F*[fnCuts];
- hMCDecayGammaPi0Pt = new TH1F*[fnCuts];
- hMCDecayGammaRhoPt = new TH1F*[fnCuts];
- hMCDecayGammaEtaPt = new TH1F*[fnCuts];
- hMCDecayGammaOmegaPt = new TH1F*[fnCuts];
- hMCDecayGammaEtapPt = new TH1F*[fnCuts];
- hMCDecayGammaPhiPt = new TH1F*[fnCuts];
- hMCDecayGammaSigmaPt = new TH1F*[fnCuts];
- hMCConvGammaPt = new TH1F*[fnCuts];
- hESDTrueConvGammaPt = new TH1F*[fnCuts];
-
- hESDCombinatorialPt = new TH2F*[fnCuts];
- hESDTruePrimaryConvGammaPt = new TH1F*[fnCuts];
- hESDTruePrimaryConvGammaESDPtMCPt = new TH2F*[fnCuts];
- hESDTrueSecondaryConvGammaPt = new TH1F*[fnCuts];
- hESDTrueSecondaryConvGammaFromXFromK0sPt = new TH1F*[fnCuts];
- hESDTrueSecondaryConvGammaFromXFromLambdaPt = new TH1F*[fnCuts];
-
- hESDTrueDalitzPsiPairDeltaPhi= new TH2F*[fnCuts];
- hESDTrueGammaPsiPairDeltaPhi= new TH2F*[fnCuts];
-
- if (fDoPhotonQA > 0){
- hMCConvGammaR = new TH1F*[fnCuts];
- hMCConvGammaEta = new TH1F*[fnCuts];
- }
-
- if(fDoMesonAnalysis){
- hMCPi0Pt = new TH1F*[fnCuts];
- hMCPi0WOWeightPt = new TH1F*[fnCuts];
- hMCEtaPt = new TH1F*[fnCuts];
- hMCPi0InAccPt = new TH1F*[fnCuts];
- hMCEtaInAccPt = new TH1F*[fnCuts];
-
- hESDTrueMotherInvMassPt = new TH2F*[fnCuts];
- hESDTruePrimaryMotherInvMassPt = new TH2F*[fnCuts];
- hESDTruePrimaryMotherW0WeightingInvMassPt = new TH2F*[fnCuts];
- pESDTruePrimaryMotherWeightsInvMassPt = new TProfile2D*[fnCuts];
- hESDTrueSecondaryMotherInvMassPt = new TH2F*[fnCuts];
- hESDTrueSecondaryMotherFromK0sInvMassPt = new TH2F*[fnCuts];
- hESDTrueSecondaryMotherFromEtaInvMassPt = new TH2F*[fnCuts];
- hESDTrueMotherDalitzInvMassPt = new TH2F*[fnCuts];
- if (fDoMesonQA > 0){
- hMCPi0PtY = new TH2F*[fnCuts];
- hMCEtaPtY = new TH2F*[fnCuts];
- hMCK0sPt = new TH1F*[fnCuts];
- hMCK0sWOWeightPt = new TH1F*[fnCuts];
- hMCK0sPtY = new TH2F*[fnCuts];
- hESDTruePrimaryPi0MCPtResolPt = new TH2F*[fnCuts];
- hESDTruePrimaryEtaMCPtResolPt = new TH2F*[fnCuts];
- hESDTrueK0sWithPi0DaughterMCPt = new TH1F*[fnCuts];
- hESDTrueEtaWithPi0DaughterMCPt = new TH1F*[fnCuts];
- hESDTrueBckGGInvMassPt = new TH2F*[fnCuts];
- hESDTrueBckContInvMassPt = new TH2F*[fnCuts];
- hESDTruePi0PtY = new TH2F*[fnCuts];
- hESDTrueEtaPtY = new TH2F*[fnCuts];
- hESDTruePi0PtAlpha = new TH2F*[fnCuts];
- hESDTrueEtaPtAlpha = new TH2F*[fnCuts];
- hESDTruePi0YEtaLowPtGamma = new TH2F*[fnCuts];
- hESDTruePi0YEtaHighPtGamma = new TH2F*[fnCuts];
- hESDTrueEtaYEtaLowPtGamma = new TH2F*[fnCuts];
- hESDTrueEtaYEtaHighPtGamma = new TH2F*[fnCuts];
- }
- }
-
- for(Int_t iCut = 0; iCut<fnCuts;iCut++){
- TString cutstring = ((AliConversionCuts*)fCutArray->At(iCut))->GetCutNumber();
- TString cutstringMeson = "NoMesonCut";
- if(fDoMesonAnalysis)cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
-
- fMCList[iCut] = new TList();
- fMCList[iCut]->SetName(Form("%s_%s MC histograms",cutstring.Data(),cutstringMeson.Data()));
- fMCList[iCut]->SetOwner(kTRUE);
- fCutFolder[iCut]->Add(fMCList[iCut]);
- hMCHeaders[iCut] = new TH1I("MC_Headers","MC_Headers",20,0,20);
- fMCList[iCut]->Add(hMCHeaders[iCut]);
- hMCAllGammaPt[iCut] = new TH1F("MC_AllGamma_Pt","MC_AllGamma_Pt",250,0,25);
- fMCList[iCut]->Add(hMCAllGammaPt[iCut]);
- hMCDecayGammaPi0Pt[iCut] = new TH1F("MC_DecayGammaPi0_Pt","MC_DecayGammaPi0_Pt",250,0,25);
- fMCList[iCut]->Add(hMCDecayGammaPi0Pt[iCut]);
- hMCDecayGammaRhoPt[iCut] = new TH1F("MC_DecayGammaRho_Pt","MC_DecayGammaRho_Pt",250,0,25);
- fMCList[iCut]->Add(hMCDecayGammaRhoPt[iCut]);
- hMCDecayGammaEtaPt[iCut] = new TH1F("MC_DecayGammaEta_Pt","MC_DecayGammaEta_Pt",250,0,25);
- fMCList[iCut]->Add(hMCDecayGammaEtaPt[iCut]);
- hMCDecayGammaOmegaPt[iCut] = new TH1F("MC_DecayGammaOmega_Pt","MC_DecayGammaOmmega_Pt",250,0,25);
- fMCList[iCut]->Add(hMCDecayGammaOmegaPt[iCut]);
- hMCDecayGammaEtapPt[iCut] = new TH1F("MC_DecayGammaEtap_Pt","MC_DecayGammaEtap_Pt",250,0,25);
- fMCList[iCut]->Add(hMCDecayGammaEtapPt[iCut]);
- hMCDecayGammaPhiPt[iCut] = new TH1F("MC_DecayGammaPhi_Pt","MC_DecayGammaPhi_Pt",250,0,25);
- fMCList[iCut]->Add(hMCDecayGammaPhiPt[iCut]);
- hMCDecayGammaSigmaPt[iCut] = new TH1F("MC_DecayGammaSigma_Pt","MC_DecayGammaSigma_Pt",250,0,25);
- fMCList[iCut]->Add(hMCDecayGammaSigmaPt[iCut]);
- hMCConvGammaPt[iCut] = new TH1F("MC_ConvGamma_Pt","MC_ConvGamma_Pt",250,0,25);
- fMCList[iCut]->Add(hMCConvGammaPt[iCut]);
-
- if (fDoPhotonQA > 0){
- hMCConvGammaR[iCut] = new TH1F("MC_ConvGamma_R","MC_ConvGamma_R",800,0,200);
- fMCList[iCut]->Add(hMCConvGammaR[iCut]);
- hMCConvGammaEta[iCut] = new TH1F("MC_ConvGamma_Eta","MC_ConvGamma_Eta",100,-4,4);
- fMCList[iCut]->Add(hMCConvGammaEta[iCut]);
- }
-
- if(fDoMesonAnalysis){
- hMCPi0Pt[iCut] = new TH1F("MC_Pi0_Pt","MC_Pi0_Pt",250,0,25);
- hMCPi0Pt[iCut]->Sumw2();
- fMCList[iCut]->Add(hMCPi0Pt[iCut]);
- hMCPi0WOWeightPt[iCut] = new TH1F("MC_Pi0_WOWeights_Pt","MC_Pi0_WOWeights_Pt",250,0,25);
- hMCPi0WOWeightPt[iCut]->Sumw2();
- fMCList[iCut]->Add(hMCPi0WOWeightPt[iCut]);
-
- hMCEtaPt[iCut] = new TH1F("MC_Eta_Pt","MC_Eta_Pt",250,0,25);
- hMCEtaPt[iCut]->Sumw2();
- fMCList[iCut]->Add(hMCEtaPt[iCut]);
- hMCPi0InAccPt[iCut] = new TH1F("MC_Pi0InAcc_Pt","MC_Pi0InAcc_Pt",250,0,25);
- hMCPi0InAccPt[iCut]->Sumw2();
- fMCList[iCut]->Add(hMCPi0InAccPt[iCut]);
- hMCEtaInAccPt[iCut] = new TH1F("MC_EtaInAcc_Pt","MC_EtaInAcc_Pt",250,0,25);
- hMCEtaInAccPt[iCut]->Sumw2();
- fMCList[iCut]->Add(hMCEtaInAccPt[iCut]);
- if (fDoMesonQA > 0){
- hMCPi0PtY[iCut] = new TH2F("MC_Pi0_Pt_Y","MC_Pi0_Pt_Y",250,0,25,150,-1.5,1.5);
- hMCPi0PtY[iCut]->Sumw2();
- fMCList[iCut]->Add(hMCPi0PtY[iCut]);
- hMCEtaPtY[iCut] = new TH2F("MC_Eta_Pt_Y","MC_Eta_Pt_Y",250,0,25,150,-1.5,1.5);
- hMCEtaPtY[iCut]->Sumw2();
- fMCList[iCut]->Add(hMCEtaPtY[iCut]);
- hMCK0sPt[iCut] = new TH1F("MC_K0s_Pt","MC_K0s_Pt",250,0,25);
- hMCK0sPt[iCut]->Sumw2();
- fMCList[iCut]->Add(hMCK0sPt[iCut]);
- hMCK0sWOWeightPt[iCut] = new TH1F("MC_K0s_WOWeights_Pt","MC_K0s_WOWeights_Pt",250,0,25);
- hMCK0sWOWeightPt[iCut]->Sumw2();
- fMCList[iCut]->Add(hMCK0sWOWeightPt[iCut]);
- hMCK0sPtY[iCut] = new TH2F("MC_K0s_Pt_Y","MC_K0s_Pt_Y",250,0,25,150,-1.5,1.5);
- hMCK0sPtY[iCut]->Sumw2();
- fMCList[iCut]->Add(hMCK0sPtY[iCut]);
-
- }
-
- }
- fTrueList[iCut] = new TList();
- fTrueList[iCut]->SetName(Form("%s_%s True histograms",cutstring.Data(),cutstringMeson.Data()));
- fTrueList[iCut]->SetOwner(kTRUE);
- fCutFolder[iCut]->Add(fTrueList[iCut]);
-
- hESDTrueConvGammaPt[iCut] = new TH1F("ESD_TrueConvGamma_Pt","ESD_TrueConvGamma_Pt",250,0,25);
- fTrueList[iCut]->Add(hESDTrueConvGammaPt[iCut]);
-
- hESDCombinatorialPt[iCut] = new TH2F("ESD_TrueCombinatorial_Pt","ESD_TrueCombinatorial_Pt",250,0,25,16,-0.5,15.5);
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 1,"Elec+Elec");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 2,"Elec+Pion");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 3,"Elec+Kaon");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 4,"Elec+Proton");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 5,"Elec+Muon");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 6,"Pion+Pion");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 7,"Pion+Kaon");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 8,"Pion+Proton");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 9,"Pion+Muon");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(10,"Kaon+Kaon");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(11,"Kaon+Proton");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(12,"Kaon+Muon");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(13,"Proton+Proton");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(14,"Proton+Muon");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(15,"Muon+Muon");
- hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(16,"Rest");
- fTrueList[iCut]->Add(hESDCombinatorialPt[iCut]);
- hESDTruePrimaryConvGammaPt[iCut] = new TH1F("ESD_TruePrimaryConvGamma_Pt","ESD_TruePrimaryConvGamma_Pt",250,0,25);
- fTrueList[iCut]->Add(hESDTruePrimaryConvGammaPt[iCut]);
- hESDTrueSecondaryConvGammaPt[iCut] = new TH1F("ESD_TrueSecondaryConvGamma_Pt","ESD_TrueSecondaryConvGamma_Pt",250,0,25);
- fTrueList[iCut]->Add(hESDTrueSecondaryConvGammaPt[iCut]);
-
- hESDTrueSecondaryConvGammaFromXFromK0sPt[iCut]
- = new TH1F("ESD_TrueSecondaryConvGammaFromXFromK0s_Pt", "ESD_TrueSecondaryConvGammaFromXFromK0s_Pt",250,0,25);
- fTrueList[iCut]->Add(hESDTrueSecondaryConvGammaFromXFromK0sPt[iCut]);
- hESDTrueSecondaryConvGammaFromXFromLambdaPt[iCut]
- = new TH1F("ESD_TrueSecondaryConvGammaFromXFromLambda_Pt", "ESD_TrueSecondaryConvGammaFromXFromLambda_Pt",250,0,25);
- fTrueList[iCut]->Add(hESDTrueSecondaryConvGammaFromXFromLambdaPt[iCut]);
-
- hESDTrueDalitzPsiPairDeltaPhi[iCut]
- = new TH2F("ESD_TrueDalitzPsiPairDeltaPhi_Pt", "ESD_TrueDalitzPsiPairDeltaPhi_Pt",400,-2,2,400,-2,2);
- fTrueList[iCut]->Add(hESDTrueDalitzPsiPairDeltaPhi[iCut]);
-
- hESDTrueGammaPsiPairDeltaPhi[iCut]
- = new TH2F("ESD_TrueGammaPsiPairDeltaPhi_Pt", "ESD_TrueGammaPsiPairDeltaPhi_Pt",200,-2,2,400,-2,2);
- fTrueList[iCut]->Add(hESDTrueGammaPsiPairDeltaPhi[iCut]);
-
-
- hESDTruePrimaryConvGammaESDPtMCPt[iCut] = new TH2F("ESD_TruePrimaryConvGammaESD_PtMCPt", "ESD_TruePrimaryConvGammaESD_PtMCPt",250,0,25,250,0,25);
- fTrueList[iCut]->Add(hESDTruePrimaryConvGammaESDPtMCPt[iCut]);
-
- if(fDoMesonAnalysis){
- hESDTrueMotherInvMassPt[iCut] = new TH2F("ESD_TrueMother_InvMass_Pt","ESD_TrueMother_InvMass_Pt",800,0,0.8,250,0,25);
- fTrueList[iCut]->Add(hESDTrueMotherInvMassPt[iCut]);
- hESDTruePrimaryMotherInvMassPt[iCut]
- = new TH2F("ESD_TruePrimaryMother_InvMass_Pt", "ESD_TruePrimaryMother_InvMass_Pt", 800,0,0.8,250,0,25);
- hESDTruePrimaryMotherInvMassPt[iCut]->Sumw2();
- fTrueList[iCut]->Add(hESDTruePrimaryMotherInvMassPt[iCut]);
- hESDTruePrimaryMotherW0WeightingInvMassPt[iCut]
- = new TH2F("ESD_TruePrimaryMotherW0Weights_InvMass_Pt", "ESD_TruePrimaryMotherW0Weights_InvMass_Pt", 800,0,0.8,250,0,25);
- hESDTruePrimaryMotherW0WeightingInvMassPt[iCut]->Sumw2();
- fTrueList[iCut]->Add(hESDTruePrimaryMotherW0WeightingInvMassPt[iCut]);
- pESDTruePrimaryMotherWeightsInvMassPt[iCut]
- = new TProfile2D("ESD_TruePrimaryMotherWeights_InvMass_Pt", "ESD_TruePrimaryMotherWeights_InvMass_Pt", 800,0,0.8,250,0,25);
- pESDTruePrimaryMotherWeightsInvMassPt[iCut]->Sumw2();
- fTrueList[iCut]->Add(pESDTruePrimaryMotherWeightsInvMassPt[iCut]);
- hESDTrueSecondaryMotherInvMassPt[iCut]
- = new TH2F("ESD_TrueSecondaryMother_InvMass_Pt", "ESD_TrueSecondaryMother_InvMass_Pt", 800,0,0.8,250,0,25);
- hESDTrueSecondaryMotherInvMassPt[iCut]->Sumw2();
- fTrueList[iCut]->Add(hESDTrueSecondaryMotherInvMassPt[iCut]);
- hESDTrueSecondaryMotherFromK0sInvMassPt[iCut]
- = new TH2F("ESD_TrueSecondaryMotherFromK0s_InvMass_Pt","ESD_TrueSecondaryMotherFromK0s_InvMass_Pt",800,0,0.8,250,0,25);
- hESDTrueSecondaryMotherFromK0sInvMassPt[iCut]->Sumw2();
- fTrueList[iCut]->Add(hESDTrueSecondaryMotherFromK0sInvMassPt[iCut]);
- hESDTrueSecondaryMotherFromEtaInvMassPt[iCut]
- = new TH2F("ESD_TrueSecondaryMotherFromEta_InvMass_Pt","ESD_TrueSecondaryMotherFromEta_InvMass_Pt",800,0,0.8,250,0,25);
- fTrueList[iCut]->Add(hESDTrueSecondaryMotherFromEtaInvMassPt[iCut]);
- hESDTrueMotherDalitzInvMassPt[iCut] = new TH2F("ESD_TrueDalitz_InvMass_Pt","ESD_TrueDalitz_InvMass_Pt",800,0,0.8,250,0,25);
- fTrueList[iCut]->Add(hESDTrueMotherDalitzInvMassPt[iCut]);
- if (fDoMesonQA > 0){
- hESDTruePrimaryPi0MCPtResolPt[iCut] = new TH2F("ESD_TruePrimaryPi0_MCPt_ResolPt","ESD_TruePrimaryPi0_ResolPt_MCPt",500,0,25,1000,-1.,1.);
- hESDTruePrimaryPi0MCPtResolPt[iCut]->Sumw2();
- fTrueList[iCut]->Add(hESDTruePrimaryPi0MCPtResolPt[iCut]);
- hESDTruePrimaryEtaMCPtResolPt[iCut] = new TH2F("ESD_TruePrimaryEta_MCPt_ResolPt","ESD_TruePrimaryEta_ResolPt_MCPt",500,0,25,1000,-1.,1.);
- hESDTruePrimaryEtaMCPtResolPt[iCut]->Sumw2();
- fTrueList[iCut]->Add(hESDTruePrimaryEtaMCPtResolPt[iCut]);
- hESDTrueBckGGInvMassPt[iCut] = new TH2F("ESD_TrueBckGG_InvMass_Pt","ESD_TrueBckGG_InvMass_Pt",800,0,0.8,250,0,25);
- fTrueList[iCut]->Add(hESDTrueBckGGInvMassPt[iCut]);
- hESDTrueBckContInvMassPt[iCut] = new TH2F("ESD_TrueBckCont_InvMass_Pt","ESD_TrueBckCont_InvMass_Pt",800,0,0.8,250,0,25);
- fTrueList[iCut]->Add(hESDTrueBckContInvMassPt[iCut]);
- hESDTrueK0sWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueK0sWithPi0Daughter_MCPt","ESD_TrueK0sWithPi0Daughter_MCPt",250,0,25);
- fTrueList[iCut]->Add(hESDTrueK0sWithPi0DaughterMCPt[iCut]);
- hESDTrueEtaWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueEtaWithPi0Daughter_MCPt","ESD_TrueEtaWithPi0Daughter_MCPt",250,0,25);
- fTrueList[iCut]->Add(hESDTrueEtaWithPi0DaughterMCPt[iCut]);
- hESDTruePi0PtY[iCut] = new TH2F("ESD_TruePi0_Pt_Y","ESD_TruePi0_Pt_Y",250,0,25,150,-1.5,1.5);
- fTrueList[iCut]->Add(hESDTruePi0PtY[iCut]);
- hESDTrueEtaPtY[iCut] = new TH2F("ESD_TrueEta_Pt_Y","ESD_TrueEta_Pt_Y",250,0,25,150,-1.5,1.5);
- fTrueList[iCut]->Add(hESDTrueEtaPtY[iCut]);
- hESDTruePi0PtAlpha[iCut] = new TH2F("ESD_TruePi0_Pt_Alpha","ESD_TruePi0_Pt_Alpha",250,0,25,100,0,1);
- fTrueList[iCut]->Add(hESDTruePi0PtAlpha[iCut]);
- hESDTrueEtaPtAlpha[iCut] = new TH2F("ESD_TrueEta_Pt_Alpha","ESD_TrueEta_Pt_Alpha",250,0,25,100,0,1);
- fTrueList[iCut]->Add(hESDTrueEtaPtAlpha[iCut]);
-
- hESDTruePi0YEtaLowPtGamma[iCut] = new TH2F("ESD_TruePi0_Y_EtaLowPtGamma","ESD_TruePi0_Y_EtaLowPtGamma",150,-1.5,1.5,200,2,2);
- fTrueList[iCut]->Add(hESDTruePi0YEtaLowPtGamma[iCut]);
- hESDTruePi0YEtaHighPtGamma[iCut] = new TH2F("ESD_TruePi0_Y_EtaHighPtGamma","ESD_TruePi0_Y_EtaHighPtGamma",150,-1.5,1.5,200,2,2);
- fTrueList[iCut]->Add(hESDTruePi0YEtaHighPtGamma[iCut]);
- hESDTrueEtaYEtaLowPtGamma[iCut] = new TH2F("ESD_TrueEta_Y_EtaLowPtGamma","ESD_TrueEta_Y_EtaLowPtGamma",150,-1.5,1.5,200,2,2);
- fTrueList[iCut]->Add(hESDTrueEtaYEtaLowPtGamma[iCut]);
- hESDTrueEtaYEtaHighPtGamma[iCut] = new TH2F("ESD_TrueEta_Y_EtaHighPtGamma","ESD_TrueEta_Y_EtaHighPtGamma",150,-1.5,1.5,200,2,2);
- fTrueList[iCut]->Add(hESDTrueEtaYEtaHighPtGamma[iCut]);
- }
- }
- }
- }
-
- fV0Reader=(AliV0ReaderV1*)AliAnalysisManager::GetAnalysisManager()->GetTask("V0ReaderV1");
- if(!fV0Reader){printf("Error: No V0 Reader");return;} // GetV0Reader
-
- if(fV0Reader)
- if((AliConversionCuts*)fV0Reader->GetConversionCuts())
- if(((AliConversionCuts*)fV0Reader->GetConversionCuts())->GetCutHistograms())
- fOutputContainer->Add(((AliConversionCuts*)fV0Reader->GetConversionCuts())->GetCutHistograms());
-
- for(Int_t iCut = 0; iCut<fnCuts;iCut++){
- if(!((AliConversionCuts*)fCutArray->At(iCut))) continue;
- if(((AliConversionCuts*)fCutArray->At(iCut))->GetCutHistograms()){
- fCutFolder[iCut]->Add(((AliConversionCuts*)fCutArray->At(iCut))->GetCutHistograms());
- }
- if(fDoMesonAnalysis){
- if(!((AliConversionMesonCuts*)fMesonCutArray->At(iCut))) continue;
- if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutHistograms()){
- fCutFolder[iCut]->Add(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutHistograms());
- }
- }
- }
- PostData(1, fOutputContainer);
+void AliAnalysisTaskGammaConvV1::UserCreateOutputObjects(){
+
+ // Create histograms
+ if(fOutputContainer != NULL){
+ delete fOutputContainer;
+ fOutputContainer = NULL;
+ }
+ if(fOutputContainer == NULL){
+ fOutputContainer = new TList();
+ fOutputContainer->SetOwner(kTRUE);
+ }
+
+ // Array of current cut's gammas
+ fGammaCandidates = new TList();
+
+ fCutFolder = new TList*[fnCuts];
+ fESDList = new TList*[fnCuts];
+ fBackList = new TList*[fnCuts];
+ fMotherList = new TList*[fnCuts];
+ hNEvents = new TH1I*[fnCuts];
+ hNGoodESDTracks = new TH1I*[fnCuts];
+ hNGammaCandidates = new TH1I*[fnCuts];
+ hNGoodESDTracksVsNGammaCanditates = new TH2F*[fnCuts];
+ hNV0Tracks = new TH1I*[fnCuts];
+ hEtaShift = new TProfile*[fnCuts];
+ hESDConvGammaPt = new TH1F*[fnCuts];
+
+ if (fDoPhotonQA == 2){
+ fPhotonDCAList = new TList*[fnCuts];
+ tESDConvGammaPtDcazCat = new TTree*[fnCuts];
+ }
+ if (fDoPhotonQA > 0){
+ hESDConvGammaR = new TH1F*[fnCuts];
+ hESDConvGammaEta = new TH1F*[fnCuts];
+ }
+
+ if(fDoMesonAnalysis){
+ hESDMotherInvMassPt = new TH2F*[fnCuts];
+ hESDMotherBackInvMassPt = new TH2F*[fnCuts];
+ hESDMotherInvMassEalpha = new TH2F*[fnCuts];
+ if (fDoMesonQA == 2){
+ fMesonDCAList = new TList*[fnCuts];
+ tESDMesonsInvMassPtDcazMinDcazMaxFlag = new TTree*[fnCuts];
+ }
+ if (fDoMesonQA > 0){
+ hESDMotherPi0PtY = new TH2F*[fnCuts];
+ hESDMotherEtaPtY = new TH2F*[fnCuts];
+ hESDMotherPi0PtAlpha = new TH2F*[fnCuts];
+ hESDMotherEtaPtAlpha = new TH2F*[fnCuts];
+ hESDMotherPi0PtOpenAngle = new TH2F*[fnCuts];
+ hESDMotherEtaPtOpenAngle = new TH2F*[fnCuts];
+ }
+ }
+
+ for(Int_t iCut = 0; iCut<fnCuts;iCut++){
+
+ TString cutstringEvent = ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber();
+ TString cutstringPhoton = ((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutNumber();
+ TString cutstringMeson = "NoMesonCut";
+ if(fDoMesonAnalysis)cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
+
+ fCutFolder[iCut] = new TList();
+ fCutFolder[iCut]->SetName(Form("Cut Number %s_%s_%s",cutstringEvent.Data() ,cutstringPhoton.Data(),cutstringMeson.Data()));
+ fCutFolder[iCut]->SetOwner(kTRUE);
+ fOutputContainer->Add(fCutFolder[iCut]);
+ fESDList[iCut] = new TList();
+ fESDList[iCut]->SetName(Form("%s_%s_%s ESD histograms",cutstringEvent.Data() ,cutstringPhoton.Data(),cutstringMeson.Data()));
+ fESDList[iCut]->SetOwner(kTRUE);
+ fCutFolder[iCut]->Add(fESDList[iCut]);
+
+ hNEvents[iCut] = new TH1I("NEvents","NEvents",9,-0.5,8.5);
+ hNEvents[iCut]->GetXaxis()->SetBinLabel(1,"Accepted");
+ hNEvents[iCut]->GetXaxis()->SetBinLabel(2,"Centrality");
+ hNEvents[iCut]->GetXaxis()->SetBinLabel(3,"Missing MC");
+ if (((AliConvEventCuts*)fEventCutArray->At(iCut))->IsSpecialTrigger() > 1 ){
+ TString TriggerNames = "Not Trigger: ";
+ TriggerNames = TriggerNames+ ( (AliConvEventCuts*)fEventCutArray->At(iCut))->GetSpecialTriggerName();
+ hNEvents[iCut]->GetXaxis()->SetBinLabel(4,TriggerNames.Data());
+ } else {
+ hNEvents[iCut]->GetXaxis()->SetBinLabel(4,"Trigger");
+ }
+ hNEvents[iCut]->GetXaxis()->SetBinLabel(5,"Vertex Z");
+ hNEvents[iCut]->GetXaxis()->SetBinLabel(6,"Cont. Vertex");
+ hNEvents[iCut]->GetXaxis()->SetBinLabel(7,"Pile-Up");
+ hNEvents[iCut]->GetXaxis()->SetBinLabel(8,"no SDD");
+ hNEvents[iCut]->GetXaxis()->SetBinLabel(9,"no V0AND");
+ fESDList[iCut]->Add(hNEvents[iCut]);
+
+ if(fIsHeavyIon == 1) hNGoodESDTracks[iCut] = new TH1I("GoodESDTracks","GoodESDTracks",4000,0,4000);
+ else if(fIsHeavyIon == 2) hNGoodESDTracks[iCut] = new TH1I("GoodESDTracks","GoodESDTracks",400,0,400);
+ else hNGoodESDTracks[iCut] = new TH1I("GoodESDTracks","GoodESDTracks",200,0,200);
+ fESDList[iCut]->Add(hNGoodESDTracks[iCut]);
+ if(fIsHeavyIon == 1) hNGammaCandidates[iCut] = new TH1I("GammaCandidates","GammaCandidates",100,0,100);
+ else if(fIsHeavyIon == 2) hNGammaCandidates[iCut] = new TH1I("GammaCandidates","GammaCandidates",50,0,50);
+ else hNGammaCandidates[iCut] = new TH1I("GammaCandidates","GammaCandidates",50,0,50);
+ fESDList[iCut]->Add(hNGammaCandidates[iCut]);
+ if(fIsHeavyIon == 1) hNGoodESDTracksVsNGammaCanditates[iCut] = new TH2F("GoodESDTracksVsGammaCandidates","GoodESDTracksVsGammaCandidates",4000,0,4000,100,0,100);
+ else if(fIsHeavyIon == 2) hNGoodESDTracksVsNGammaCanditates[iCut] = new TH2F("GoodESDTracksVsGammaCandidates","GoodESDTracksVsGammaCandidates",400,0,400,50,0,50);
+ else hNGoodESDTracksVsNGammaCanditates[iCut] = new TH2F("GoodESDTracksVsGammaCandidates","GoodESDTracksVsGammaCandidates",200,0,200,50,0,50);
+ fESDList[iCut]->Add(hNGoodESDTracksVsNGammaCanditates[iCut]);
+
+
+ if(fIsHeavyIon == 1) hNV0Tracks[iCut] = new TH1I("V0 Multiplicity","V0 Multiplicity",30000,0,30000);
+ else if(fIsHeavyIon == 2) hNV0Tracks[iCut] = new TH1I("V0 Multiplicity","V0 Multiplicity",2500,0,2500);
+ else hNV0Tracks[iCut] = new TH1I("V0 Multiplicity","V0 Multiplicity",1500,0,1500);
+ fESDList[iCut]->Add(hNV0Tracks[iCut]);
+ hEtaShift[iCut] = new TProfile("Eta Shift","Eta Shift",1, -0.5,0.5);
+ fESDList[iCut]->Add(hEtaShift[iCut]);
+ hESDConvGammaPt[iCut] = new TH1F("ESD_ConvGamma_Pt","ESD_ConvGamma_Pt",250,0,25);
+ fESDList[iCut]->Add(hESDConvGammaPt[iCut]);
+
+ if (fDoPhotonQA == 2){
+ fPhotonDCAList[iCut] = new TList();
+ fPhotonDCAList[iCut]->SetName(Form("%s_%s_%s Photon DCA tree",cutstringEvent.Data(),cutstringPhoton.Data(),cutstringMeson.Data()));
+ fPhotonDCAList[iCut]->SetOwner(kTRUE);
+ fCutFolder[iCut]->Add(fPhotonDCAList[iCut]);
+
+ tESDConvGammaPtDcazCat[iCut] = new TTree("ESD_ConvGamma_Pt_Dcaz_R_Eta","ESD_ConvGamma_Pt_Dcaz_R_Eta_Cat");
+ tESDConvGammaPtDcazCat[iCut]->Branch("Pt",&fPtGamma,"fPtGamma/F");
+ tESDConvGammaPtDcazCat[iCut]->Branch("DcaZPhoton",&fDCAzPhoton,"fDCAzPhoton/F");
+ // tESDConvGammaPtDcazCat[iCut]->Branch("R",&fRConvPhoton,"fRConvPhoton/F");
+ // tESDConvGammaPtDcazCat[iCut]->Branch("Eta",&fEtaPhoton,"fEtaPhoton/F");
+
+ tESDConvGammaPtDcazCat[iCut]->Branch("cat",&iCatPhoton,"iCatPhoton/b");
+ if(fIsMC){
+ tESDConvGammaPtDcazCat[iCut]->Branch("photonMCInfo",&iPhotonMCInfo,"iPhotonMCInfo/b");
+ }
+ fPhotonDCAList[iCut]->Add(tESDConvGammaPtDcazCat[iCut]);
+ }
+
+ if (fDoPhotonQA > 0){
+ hESDConvGammaR[iCut] = new TH1F("ESD_ConvGamma_R","ESD_ConvGamma_R",800,0,200);
+ fESDList[iCut]->Add(hESDConvGammaR[iCut]);
+ hESDConvGammaEta[iCut] = new TH1F("ESD_ConvGamma_Eta","ESD_ConvGamma_Eta",2000,-2,2);
+ fESDList[iCut]->Add(hESDConvGammaEta[iCut]);
+ }
+
+ if(fDoMesonAnalysis){
+ hESDMotherInvMassPt[iCut] = new TH2F("ESD_Mother_InvMass_Pt","ESD_Mother_InvMass_Pt",800,0,0.8,250,0,25);
+ fESDList[iCut]->Add(hESDMotherInvMassPt[iCut]);
+ hESDMotherBackInvMassPt[iCut] = new TH2F("ESD_Background_InvMass_Pt","ESD_Background_InvMass_Pt",800,0,0.8,250,0,25);
+ fESDList[iCut]->Add(hESDMotherBackInvMassPt[iCut]);
+ hESDMotherInvMassEalpha[iCut] = new TH2F("ESD_Mother_InvMass_vs_E_alpha","ESD_Mother_InvMass_vs_E_alpha",800,0,0.8,250,0,25);
+ fESDList[iCut]->Add(hESDMotherInvMassEalpha[iCut]);
+ if (fDoMesonQA == 2){
+ fMesonDCAList[iCut] = new TList();
+ fMesonDCAList[iCut]->SetName(Form("%s_%s_%s Meson DCA tree",cutstringEvent.Data() ,cutstringPhoton.Data(),cutstringMeson.Data()));
+ fMesonDCAList[iCut]->SetOwner(kTRUE);
+ fCutFolder[iCut]->Add(fMesonDCAList[iCut]);
+
+ tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut] = new TTree("ESD_Mesons_InvMass_Pt_DcazMin_DcazMax_Flag","ESD_Mesons_InvMass_Pt_DcazMin_DcazMax_Flag");
+ tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("InvMass",&fInvMass,"fInvMass/F");
+ tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("Pt",&fPt,"fPt/F");
+ tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("DcaZMin",&fDCAzGammaMin,"fDCAzGammaMin/F");
+ tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("DcaZMax",&fDCAzGammaMax,"fDCAzGammaMax/F");
+ tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("kind",&iFlag,"iFlag/b");
+ if(fIsMC){
+ tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]->Branch("mesonMCInfo",&iMesonMCInfo,"iMesonMCInfo/b");
+ }
+ fMesonDCAList[iCut]->Add(tESDMesonsInvMassPtDcazMinDcazMaxFlag[iCut]);
+
+ }
+ if (fDoMesonQA > 0 ){
+ hESDMotherPi0PtY[iCut] = new TH2F("ESD_MotherPi0_Pt_Y","ESD_MotherPi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
+ SetLogBinningXTH2(hESDMotherPi0PtY[iCut]);
+ fESDList[iCut]->Add(hESDMotherPi0PtY[iCut]);
+ hESDMotherEtaPtY[iCut] = new TH2F("ESD_MotherEta_Pt_Y","ESD_MotherEta_Pt_Y",150,0.03,15.,150,-1.5,1.5);
+ SetLogBinningXTH2(hESDMotherEtaPtY[iCut]);
+ fESDList[iCut]->Add(hESDMotherEtaPtY[iCut]);
+ hESDMotherPi0PtAlpha[iCut] = new TH2F("ESD_MotherPi0_Pt_Alpha","ESD_MotherPi0_Pt_Alpha",150,0.03,15.,100,0,1);
+ SetLogBinningXTH2(hESDMotherPi0PtAlpha[iCut]);
+ fESDList[iCut]->Add(hESDMotherPi0PtAlpha[iCut]);
+ hESDMotherEtaPtAlpha[iCut] = new TH2F("ESD_MotherEta_Pt_Alpha","ESD_MotherEta_Pt_Alpha",150,0.03,15.,100,0,1);
+ SetLogBinningXTH2(hESDMotherEtaPtAlpha[iCut]);
+ fESDList[iCut]->Add(hESDMotherEtaPtAlpha[iCut]);
+ hESDMotherPi0PtOpenAngle[iCut] = new TH2F("ESD_MotherPi0_Pt_OpenAngle","ESD_MotherPi0_Pt_OpenAngle",150,0.03,15.,100,0,TMath::Pi());
+ SetLogBinningXTH2(hESDMotherPi0PtOpenAngle[iCut]);
+ fESDList[iCut]->Add(hESDMotherPi0PtOpenAngle[iCut]);
+ hESDMotherEtaPtOpenAngle[iCut] = new TH2F("ESD_MotherEta_Pt_OpenAngle","ESD_MotherEta_Pt_OpenAngle",150,0.03,15.,100,0,TMath::Pi());
+ SetLogBinningXTH2(hESDMotherEtaPtOpenAngle[iCut]);
+ fESDList[iCut]->Add(hESDMotherEtaPtOpenAngle[iCut]);
+ }
+
+
+ }
+
+
+ }
+ if(fDoMesonAnalysis){
+ InitBack(); // Init Background Handler
+ }
+
+ if(fIsMC){
+ // MC Histogramms
+ fMCList = new TList*[fnCuts];
+ // True Histogramms
+ fTrueList = new TList*[fnCuts];
+ // Selected Header List
+ fHeaderNameList = new TList*[fnCuts];
+ hMCHeaders = new TH1I*[fnCuts];
+ hMCAllGammaPt = new TH1F*[fnCuts];
+ hMCDecayGammaPi0Pt = new TH1F*[fnCuts];
+ hMCDecayGammaRhoPt = new TH1F*[fnCuts];
+ hMCDecayGammaEtaPt = new TH1F*[fnCuts];
+ hMCDecayGammaOmegaPt = new TH1F*[fnCuts];
+ hMCDecayGammaEtapPt = new TH1F*[fnCuts];
+ hMCDecayGammaPhiPt = new TH1F*[fnCuts];
+ hMCDecayGammaSigmaPt = new TH1F*[fnCuts];
+ hMCConvGammaPt = new TH1F*[fnCuts];
+ hESDTrueConvGammaPt = new TH1F*[fnCuts];
+
+ hESDCombinatorialPt = new TH2F*[fnCuts];
+ hESDTruePrimaryConvGammaPt = new TH1F*[fnCuts];
+ hESDTruePrimaryConvGammaESDPtMCPt = new TH2F*[fnCuts];
+ hESDTrueSecondaryConvGammaPt = new TH1F*[fnCuts];
+ hESDTrueSecondaryConvGammaFromXFromK0sPt = new TH1F*[fnCuts];
+ hESDTrueSecondaryConvGammaFromXFromLambdaPt = new TH1F*[fnCuts];
+
+ hESDTrueDalitzPsiPairDeltaPhi= new TH2F*[fnCuts];
+ hESDTrueGammaPsiPairDeltaPhi= new TH2F*[fnCuts];
+
+ if (fDoPhotonQA > 0){
+ hMCConvGammaR = new TH1F*[fnCuts];
+ hMCConvGammaEta = new TH1F*[fnCuts];
+ hESDTrueConvGammaEta = new TH1F*[fnCuts];
+ }
+
+ if(fDoMesonAnalysis){
+ hMCPi0Pt = new TH1F*[fnCuts];
+ hMCPi0WOWeightPt = new TH1F*[fnCuts];
+ hMCEtaPt = new TH1F*[fnCuts];
+ hMCEtaWOWeightPt = new TH1F*[fnCuts];
+ hMCPi0InAccPt = new TH1F*[fnCuts];
+ hMCEtaInAccPt = new TH1F*[fnCuts];
+
+ hESDTrueMotherInvMassPt = new TH2F*[fnCuts];
+ hESDTruePrimaryMotherInvMassPt = new TH2F*[fnCuts];
+ hESDTruePrimaryMotherW0WeightingInvMassPt = new TH2F*[fnCuts];
+ pESDTruePrimaryMotherWeightsInvMassPt = new TProfile2D*[fnCuts];
+ hESDTrueSecondaryMotherInvMassPt = new TH2F*[fnCuts];
+ hESDTrueSecondaryMotherFromK0sInvMassPt = new TH2F*[fnCuts];
+ hESDTrueSecondaryMotherFromEtaInvMassPt = new TH2F*[fnCuts];
+ hESDTrueSecondaryMotherFromLambdaInvMassPt = new TH2F*[fnCuts];
+ hESDTrueMotherDalitzInvMassPt = new TH2F*[fnCuts];
+ if (fDoMesonQA > 0){
+ hMCPi0PtY = new TH2F*[fnCuts];
+ hMCEtaPtY = new TH2F*[fnCuts];
+ hMCPi0PtAlpha = new TH2F*[fnCuts];
+ hMCEtaPtAlpha = new TH2F*[fnCuts];
+ hMCK0sPt = new TH1F*[fnCuts];
+ hMCK0sWOWeightPt = new TH1F*[fnCuts];
+ hMCK0sPtY = new TH2F*[fnCuts];
+ hMCSecPi0PtvsSource= new TH2F*[fnCuts];
+ hMCSecPi0Source = new TH1F*[fnCuts];
+ hMCSecEtaPt = new TH1F*[fnCuts];
+ hMCSecEtaSource = new TH1F*[fnCuts];
+ hESDTruePrimaryPi0MCPtResolPt = new TH2F*[fnCuts];
+ hESDTruePrimaryEtaMCPtResolPt = new TH2F*[fnCuts];
+ hESDTrueK0sWithPi0DaughterMCPt = new TH1F*[fnCuts];
+ hESDTrueEtaWithPi0DaughterMCPt = new TH1F*[fnCuts];
+ hESDTrueLambdaWithPi0DaughterMCPt = new TH1F*[fnCuts];
+ hESDTrueBckGGInvMassPt = new TH2F*[fnCuts];
+ hESDTrueBckContInvMassPt = new TH2F*[fnCuts];
+ hESDTruePi0PtY = new TH2F*[fnCuts];
+ hESDTrueEtaPtY = new TH2F*[fnCuts];
+ hESDTruePi0PtAlpha = new TH2F*[fnCuts];
+ hESDTrueEtaPtAlpha = new TH2F*[fnCuts];
+ hESDTruePi0PtOpenAngle = new TH2F*[fnCuts];
+ hESDTrueEtaPtOpenAngle = new TH2F*[fnCuts];
+ }
+ }
+
+ for(Int_t iCut = 0; iCut<fnCuts;iCut++){
+ TString cutstringEvent = ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber();
+ TString cutstringPhoton = ((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutNumber();
+ TString cutstringMeson = "NoMesonCut";
+ if(fDoMesonAnalysis)cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber();
+
+ fMCList[iCut] = new TList();
+ fMCList[iCut]->SetName(Form("%s_%s_%s MC histograms",cutstringEvent.Data() ,cutstringPhoton.Data(),cutstringMeson.Data()));
+ fMCList[iCut]->SetOwner(kTRUE);
+ fCutFolder[iCut]->Add(fMCList[iCut]);
+ hMCHeaders[iCut] = new TH1I("MC_Headers","MC_Headers",20,0,20);
+ fMCList[iCut]->Add(hMCHeaders[iCut]);
+ hMCAllGammaPt[iCut] = new TH1F("MC_AllGamma_Pt","MC_AllGamma_Pt",250,0,25);
+ fMCList[iCut]->Add(hMCAllGammaPt[iCut]);
+ hMCDecayGammaPi0Pt[iCut] = new TH1F("MC_DecayGammaPi0_Pt","MC_DecayGammaPi0_Pt",250,0,25);
+ fMCList[iCut]->Add(hMCDecayGammaPi0Pt[iCut]);
+ hMCDecayGammaRhoPt[iCut] = new TH1F("MC_DecayGammaRho_Pt","MC_DecayGammaRho_Pt",250,0,25);
+ fMCList[iCut]->Add(hMCDecayGammaRhoPt[iCut]);
+ hMCDecayGammaEtaPt[iCut] = new TH1F("MC_DecayGammaEta_Pt","MC_DecayGammaEta_Pt",250,0,25);
+ fMCList[iCut]->Add(hMCDecayGammaEtaPt[iCut]);
+ hMCDecayGammaOmegaPt[iCut] = new TH1F("MC_DecayGammaOmega_Pt","MC_DecayGammaOmmega_Pt",250,0,25);
+ fMCList[iCut]->Add(hMCDecayGammaOmegaPt[iCut]);
+ hMCDecayGammaEtapPt[iCut] = new TH1F("MC_DecayGammaEtap_Pt","MC_DecayGammaEtap_Pt",250,0,25);
+ fMCList[iCut]->Add(hMCDecayGammaEtapPt[iCut]);
+ hMCDecayGammaPhiPt[iCut] = new TH1F("MC_DecayGammaPhi_Pt","MC_DecayGammaPhi_Pt",250,0,25);
+ fMCList[iCut]->Add(hMCDecayGammaPhiPt[iCut]);
+ hMCDecayGammaSigmaPt[iCut] = new TH1F("MC_DecayGammaSigma_Pt","MC_DecayGammaSigma_Pt",250,0,25);
+ fMCList[iCut]->Add(hMCDecayGammaSigmaPt[iCut]);
+ hMCConvGammaPt[iCut] = new TH1F("MC_ConvGamma_Pt","MC_ConvGamma_Pt",250,0,25);
+ fMCList[iCut]->Add(hMCConvGammaPt[iCut]);
+
+ if (fDoPhotonQA > 0){
+ hMCConvGammaR[iCut] = new TH1F("MC_ConvGamma_R","MC_ConvGamma_R",800,0,200);
+ fMCList[iCut]->Add(hMCConvGammaR[iCut]);
+ hMCConvGammaEta[iCut] = new TH1F("MC_ConvGamma_Eta","MC_ConvGamma_Eta",2000,-2,2);
+ fMCList[iCut]->Add(hMCConvGammaEta[iCut]);
+ }
+
+ if(fDoMesonAnalysis){
+ hMCPi0Pt[iCut] = new TH1F("MC_Pi0_Pt","MC_Pi0_Pt",250,0,25);
+ hMCPi0Pt[iCut]->Sumw2();
+ fMCList[iCut]->Add(hMCPi0Pt[iCut]);
+ hMCPi0WOWeightPt[iCut] = new TH1F("MC_Pi0_WOWeights_Pt","MC_Pi0_WOWeights_Pt",250,0,25);
+ hMCPi0WOWeightPt[iCut]->Sumw2();
+ fMCList[iCut]->Add(hMCPi0WOWeightPt[iCut]);
+
+ hMCEtaPt[iCut] = new TH1F("MC_Eta_Pt","MC_Eta_Pt",250,0,25);
+ hMCEtaPt[iCut]->Sumw2();
+ fMCList[iCut]->Add(hMCEtaPt[iCut]);
+ hMCEtaWOWeightPt[iCut] = new TH1F("MC_Eta_WOWeights_Pt","MC_Eta_WOWeights_Pt",250,0,25);
+ hMCEtaWOWeightPt[iCut]->Sumw2();
+ fMCList[iCut]->Add(hMCEtaWOWeightPt[iCut]);
+ hMCPi0InAccPt[iCut] = new TH1F("MC_Pi0InAcc_Pt","MC_Pi0InAcc_Pt",250,0,25);
+ hMCPi0InAccPt[iCut]->Sumw2();
+ fMCList[iCut]->Add(hMCPi0InAccPt[iCut]);
+ hMCEtaInAccPt[iCut] = new TH1F("MC_EtaInAcc_Pt","MC_EtaInAcc_Pt",250,0,25);
+ hMCEtaInAccPt[iCut]->Sumw2();
+ fMCList[iCut]->Add(hMCEtaInAccPt[iCut]);
+ if (fDoMesonQA > 0){
+ hMCPi0PtY[iCut] = new TH2F("MC_Pi0_Pt_Y","MC_Pi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
+ hMCPi0PtY[iCut]->Sumw2();
+ SetLogBinningXTH2(hMCPi0PtY[iCut]);
+ fMCList[iCut]->Add(hMCPi0PtY[iCut]);
+ hMCEtaPtY[iCut] = new TH2F("MC_Eta_Pt_Y","MC_Eta_Pt_Y",150,0.03,15.,150,-1.5,1.5);
+ hMCEtaPtY[iCut]->Sumw2();
+ SetLogBinningXTH2(hMCEtaPtY[iCut]);
+ fMCList[iCut]->Add(hMCEtaPtY[iCut]);
+ hMCPi0PtAlpha[iCut] = new TH2F("MC_Pi0_Pt_Alpha","MC_Pi0_Pt_Alpha",150,0.03,15.,100,0,1);
+ SetLogBinningXTH2(hMCPi0PtAlpha[iCut]);
+ fMCList[iCut]->Add(hMCPi0PtAlpha[iCut]);
+ hMCEtaPtAlpha[iCut] = new TH2F("MC_Eta_Pt_Alpha","MC_Eta_Pt_Alpha",150,0.03,15.,100,0,1);
+ SetLogBinningXTH2(hMCEtaPtAlpha[iCut]);
+ fMCList[iCut]->Add(hMCEtaPtAlpha[iCut]);
+
+ hMCK0sPt[iCut] = new TH1F("MC_K0s_Pt","MC_K0s_Pt",150,0,15);
+ hMCK0sPt[iCut]->Sumw2();
+ fMCList[iCut]->Add(hMCK0sPt[iCut]);
+ hMCK0sWOWeightPt[iCut] = new TH1F("MC_K0s_WOWeights_Pt","MC_K0s_WOWeights_Pt",150,0,15);
+ hMCK0sWOWeightPt[iCut]->Sumw2();
+ fMCList[iCut]->Add(hMCK0sWOWeightPt[iCut]);
+ hMCK0sPtY[iCut] = new TH2F("MC_K0s_Pt_Y","MC_K0s_Pt_Y",150,0.03,15.,150,-1.5,1.5);
+ hMCK0sPtY[iCut]->Sumw2();
+ SetLogBinningXTH2(hMCK0sPtY[iCut]);
+ fMCList[iCut]->Add(hMCK0sPtY[iCut]);
+
+ hMCSecPi0Source[iCut] = new TH1F("MC_SecPi0_Source","MC_SecPi0_Source",5000,0.,5000);
+ fMCList[iCut]->Add(hMCSecPi0Source[iCut]);
+ hMCSecEtaSource[iCut] = new TH1F("MC_SecEta_Source","MC_SecEta_Source",5000,0,5000);
+ fMCList[iCut]->Add(hMCSecEtaSource[iCut]);
+ hMCSecPi0PtvsSource[iCut] = new TH2F("MC_SecPi0_Pt_Source","MC_SecPi0_Pt_Source",250,0.0,25.,16,-0.5,15.5);
+ hMCSecPi0PtvsSource[iCut]->Sumw2();
+ fMCList[iCut]->Add(hMCSecPi0PtvsSource[iCut]);
+ hMCSecEtaPt[iCut] = new TH1F("MC_SecEta_Pt","MC_SecEta_Pt",250,0,25);
+ hMCSecEtaPt[iCut]->Sumw2();
+ fMCList[iCut]->Add(hMCSecEtaPt[iCut]);
+ }
+
+ }
+ fTrueList[iCut] = new TList();
+ fTrueList[iCut]->SetName(Form("%s_%s_%s True histograms",cutstringEvent.Data() ,cutstringPhoton.Data(),cutstringMeson.Data()));
+ fTrueList[iCut]->SetOwner(kTRUE);
+ fCutFolder[iCut]->Add(fTrueList[iCut]);
+
+ hESDTrueConvGammaPt[iCut] = new TH1F("ESD_TrueConvGamma_Pt","ESD_TrueConvGamma_Pt",250,0,25);
+ fTrueList[iCut]->Add(hESDTrueConvGammaPt[iCut]);
+
+ hESDCombinatorialPt[iCut] = new TH2F("ESD_TrueCombinatorial_Pt","ESD_TrueCombinatorial_Pt",250,0,25,16,-0.5,15.5);
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 1,"Elec+Elec");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 2,"Elec+Pion");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 3,"Elec+Kaon");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 4,"Elec+Proton");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 5,"Elec+Muon");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 6,"Pion+Pion");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 7,"Pion+Kaon");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 8,"Pion+Proton");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 9,"Pion+Muon");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(10,"Kaon+Kaon");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(11,"Kaon+Proton");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(12,"Kaon+Muon");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(13,"Proton+Proton");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(14,"Proton+Muon");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(15,"Muon+Muon");
+ hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(16,"Rest");
+ fTrueList[iCut]->Add(hESDCombinatorialPt[iCut]);
+ hESDTruePrimaryConvGammaPt[iCut] = new TH1F("ESD_TruePrimaryConvGamma_Pt","ESD_TruePrimaryConvGamma_Pt",250,0,25);
+ fTrueList[iCut]->Add(hESDTruePrimaryConvGammaPt[iCut]);
+ hESDTrueSecondaryConvGammaPt[iCut] = new TH1F("ESD_TrueSecondaryConvGamma_Pt","ESD_TrueSecondaryConvGamma_Pt",250,0,25);
+ fTrueList[iCut]->Add(hESDTrueSecondaryConvGammaPt[iCut]);
+
+ hESDTrueSecondaryConvGammaFromXFromK0sPt[iCut]
+ = new TH1F("ESD_TrueSecondaryConvGammaFromXFromK0s_Pt", "ESD_TrueSecondaryConvGammaFromXFromK0s_Pt",250,0,25);
+ fTrueList[iCut]->Add(hESDTrueSecondaryConvGammaFromXFromK0sPt[iCut]);
+ hESDTrueSecondaryConvGammaFromXFromLambdaPt[iCut]
+ = new TH1F("ESD_TrueSecondaryConvGammaFromXFromLambda_Pt", "ESD_TrueSecondaryConvGammaFromXFromLambda_Pt",250,0,25);
+ fTrueList[iCut]->Add(hESDTrueSecondaryConvGammaFromXFromLambdaPt[iCut]);
+
+ hESDTrueDalitzPsiPairDeltaPhi[iCut]
+ = new TH2F("ESD_TrueDalitzPsiPairDeltaPhi_Pt", "ESD_TrueDalitzPsiPairDeltaPhi_Pt",100,-0.5,2,100,-0.5,0.5);
+ fTrueList[iCut]->Add(hESDTrueDalitzPsiPairDeltaPhi[iCut]);
+
+ hESDTrueGammaPsiPairDeltaPhi[iCut]
+ = new TH2F("ESD_TrueGammaPsiPairDeltaPhi_Pt", "ESD_TrueGammaPsiPairDeltaPhi_Pt",100,-0.5,2,100,-0.5,0.5);
+ fTrueList[iCut]->Add(hESDTrueGammaPsiPairDeltaPhi[iCut]);
+
+ hESDTruePrimaryConvGammaESDPtMCPt[iCut] = new TH2F("ESD_TruePrimaryConvGammaESD_PtMCPt", "ESD_TruePrimaryConvGammaESD_PtMCPt",250,0,25,250,0,25);
+ fTrueList[iCut]->Add(hESDTruePrimaryConvGammaESDPtMCPt[iCut]);
+
+ if(fDoMesonAnalysis){
+ hESDTrueMotherInvMassPt[iCut] = new TH2F("ESD_TrueMother_InvMass_Pt","ESD_TrueMother_InvMass_Pt",800,0,0.8,250,0,25);
+ fTrueList[iCut]->Add(hESDTrueMotherInvMassPt[iCut]);
+ hESDTruePrimaryMotherInvMassPt[iCut]
+ = new TH2F("ESD_TruePrimaryMother_InvMass_Pt", "ESD_TruePrimaryMother_InvMass_Pt", 800,0,0.8,250,0,25);
+ hESDTruePrimaryMotherInvMassPt[iCut]->Sumw2();
+ fTrueList[iCut]->Add(hESDTruePrimaryMotherInvMassPt[iCut]);
+ hESDTruePrimaryMotherW0WeightingInvMassPt[iCut]
+ = new TH2F("ESD_TruePrimaryMotherW0Weights_InvMass_Pt", "ESD_TruePrimaryMotherW0Weights_InvMass_Pt", 800,0,0.8,250,0,25);
+ hESDTruePrimaryMotherW0WeightingInvMassPt[iCut]->Sumw2();
+ fTrueList[iCut]->Add(hESDTruePrimaryMotherW0WeightingInvMassPt[iCut]);
+ pESDTruePrimaryMotherWeightsInvMassPt[iCut]
+ = new TProfile2D("ESD_TruePrimaryMotherWeights_InvMass_Pt", "ESD_TruePrimaryMotherWeights_InvMass_Pt", 800,0,0.8,250,0,25);
+ pESDTruePrimaryMotherWeightsInvMassPt[iCut]->Sumw2();
+ fTrueList[iCut]->Add(pESDTruePrimaryMotherWeightsInvMassPt[iCut]);
+ hESDTrueSecondaryMotherInvMassPt[iCut]
+ = new TH2F("ESD_TrueSecondaryMother_InvMass_Pt", "ESD_TrueSecondaryMother_InvMass_Pt", 800,0,0.8,250,0,25);
+ hESDTrueSecondaryMotherInvMassPt[iCut]->Sumw2();
+ fTrueList[iCut]->Add(hESDTrueSecondaryMotherInvMassPt[iCut]);
+ hESDTrueSecondaryMotherFromK0sInvMassPt[iCut]
+ = new TH2F("ESD_TrueSecondaryMotherFromK0s_InvMass_Pt","ESD_TrueSecondaryMotherFromK0s_InvMass_Pt",800,0,0.8,250,0,25);
+ hESDTrueSecondaryMotherFromK0sInvMassPt[iCut]->Sumw2();
+ fTrueList[iCut]->Add(hESDTrueSecondaryMotherFromK0sInvMassPt[iCut]);
+ hESDTrueSecondaryMotherFromEtaInvMassPt[iCut]
+ = new TH2F("ESD_TrueSecondaryMotherFromEta_InvMass_Pt","ESD_TrueSecondaryMotherFromEta_InvMass_Pt",800,0,0.8,250,0,25);
+ fTrueList[iCut]->Add(hESDTrueSecondaryMotherFromEtaInvMassPt[iCut]);
+ hESDTrueSecondaryMotherFromLambdaInvMassPt[iCut]
+ = new TH2F("ESD_TrueSecondaryMotherFromLambda_InvMass_Pt","ESD_TrueSecondaryMotherFromLambda_InvMass_Pt",800,0,0.8,250,0,25);
+ fTrueList[iCut]->Add(hESDTrueSecondaryMotherFromLambdaInvMassPt[iCut]);
+ hESDTrueMotherDalitzInvMassPt[iCut] = new TH2F("ESD_TrueDalitz_InvMass_Pt","ESD_TrueDalitz_InvMass_Pt",800,0,0.8,250,0,25);
+ fTrueList[iCut]->Add(hESDTrueMotherDalitzInvMassPt[iCut]);
+ if (fDoMesonQA > 0){
+ hESDTruePrimaryPi0MCPtResolPt[iCut] = new TH2F("ESD_TruePrimaryPi0_MCPt_ResolPt","ESD_TruePrimaryPi0_ResolPt_MCPt",500,0.03,25,1000,-1.,1.);
+ hESDTruePrimaryPi0MCPtResolPt[iCut]->Sumw2();
+ SetLogBinningXTH2(hESDTruePrimaryPi0MCPtResolPt[iCut]);
+ fTrueList[iCut]->Add(hESDTruePrimaryPi0MCPtResolPt[iCut]);
+ hESDTruePrimaryEtaMCPtResolPt[iCut] = new TH2F("ESD_TruePrimaryEta_MCPt_ResolPt","ESD_TruePrimaryEta_ResolPt_MCPt",500,0.03,25,1000,-1.,1.);
+ hESDTruePrimaryEtaMCPtResolPt[iCut]->Sumw2();
+ SetLogBinningXTH2(hESDTruePrimaryEtaMCPtResolPt[iCut]);
+ fTrueList[iCut]->Add(hESDTruePrimaryEtaMCPtResolPt[iCut]);
+ hESDTrueBckGGInvMassPt[iCut] = new TH2F("ESD_TrueBckGG_InvMass_Pt","ESD_TrueBckGG_InvMass_Pt",800,0,0.8,250,0,25);
+ fTrueList[iCut]->Add(hESDTrueBckGGInvMassPt[iCut]);
+ hESDTrueBckContInvMassPt[iCut] = new TH2F("ESD_TrueBckCont_InvMass_Pt","ESD_TrueBckCont_InvMass_Pt",800,0,0.8,250,0,25);
+ fTrueList[iCut]->Add(hESDTrueBckContInvMassPt[iCut]);
+ hESDTrueK0sWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueK0sWithPi0Daughter_MCPt","ESD_TrueK0sWithPi0Daughter_MCPt",250,0,25);
+ fTrueList[iCut]->Add(hESDTrueK0sWithPi0DaughterMCPt[iCut]);
+ hESDTrueEtaWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueEtaWithPi0Daughter_MCPt","ESD_TrueEtaWithPi0Daughter_MCPt",250,0,25);
+ fTrueList[iCut]->Add(hESDTrueEtaWithPi0DaughterMCPt[iCut]);
+ hESDTrueLambdaWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueLambdaWithPi0Daughter_MCPt","ESD_TrueLambdaWithPi0Daughter_MCPt",250,0,25);
+ fTrueList[iCut]->Add(hESDTrueLambdaWithPi0DaughterMCPt[iCut]);
+
+ hESDTruePi0PtY[iCut] = new TH2F("ESD_TruePi0_Pt_Y","ESD_TruePi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
+ SetLogBinningXTH2(hESDTruePi0PtY[iCut]);
+ fTrueList[iCut]->Add(hESDTruePi0PtY[iCut]);
+ hESDTrueEtaPtY[iCut] = new TH2F("ESD_TrueEta_Pt_Y","ESD_TrueEta_Pt_Y",150,0.03,15.,150,-1.5,1.5);
+ SetLogBinningXTH2(hESDTrueEtaPtY[iCut]);
+ fTrueList[iCut]->Add(hESDTrueEtaPtY[iCut]);
+ hESDTruePi0PtAlpha[iCut] = new TH2F("ESD_TruePi0_Pt_Alpha","ESD_TruePi0_Pt_Alpha",150,0.03,15.,100,0,1);
+ SetLogBinningXTH2(hESDTruePi0PtAlpha[iCut]);
+ fTrueList[iCut]->Add(hESDTruePi0PtAlpha[iCut]);
+ hESDTrueEtaPtAlpha[iCut] = new TH2F("ESD_TrueEta_Pt_Alpha","ESD_TrueEta_Pt_Alpha",150,0.03,15.,100,0,1);
+ SetLogBinningXTH2(hESDTrueEtaPtAlpha[iCut]);
+ fTrueList[iCut]->Add(hESDTrueEtaPtAlpha[iCut]);
+
+ hESDTruePi0PtOpenAngle[iCut] = new TH2F("ESD_TruePi0_Pt_OpenAngle","ESD_TruePi0_Pt_OpenAngle",150,0.03,15.,200,0,2*TMath::Pi());
+ SetLogBinningXTH2(hESDTruePi0PtOpenAngle[iCut]);
+ fTrueList[iCut]->Add(hESDTruePi0PtOpenAngle[iCut]);
+ hESDTrueEtaPtOpenAngle[iCut] = new TH2F("ESD_TrueEta_Pt_OpenAngle","ESD_TrueEta_Pt_OpenAngle",150,0.03,15.,200,0,2*TMath::Pi());
+ SetLogBinningXTH2(hESDTrueEtaPtOpenAngle[iCut]);
+ fTrueList[iCut]->Add(hESDTrueEtaPtOpenAngle[iCut]);
+
+ hESDTrueConvGammaEta[iCut] = new TH1F("ESD_TrueConvGamma_Eta","ESD_TrueConvGamma_Eta",2000,-2,2);
+ fTrueList[iCut]->Add(hESDTrueConvGammaEta[iCut]);
+
+ }
+ }
+ }
+ }
+
+ fV0Reader=(AliV0ReaderV1*)AliAnalysisManager::GetAnalysisManager()->GetTask("V0ReaderV1");
+ if(!fV0Reader){printf("Error: No V0 Reader");return;} // GetV0Reader
+
+ if(fV0Reader)
+ if((AliConvEventCuts*)fV0Reader->GetEventCuts())
+ if(((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetCutHistograms())
+ fOutputContainer->Add(((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetCutHistograms());
+
+ if(fV0Reader)
+ if((AliConversionPhotonCuts*)fV0Reader->GetConversionCuts())
+ if(((AliConversionPhotonCuts*)fV0Reader->GetConversionCuts())->GetCutHistograms())
+ fOutputContainer->Add(((AliConversionPhotonCuts*)fV0Reader->GetConversionCuts())->GetCutHistograms());
+
+ for(Int_t iCut = 0; iCut<fnCuts;iCut++){
+ if(!((AliConvEventCuts*)fEventCutArray->At(iCut))) continue;
+ if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutHistograms()){
+ fCutFolder[iCut]->Add(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutHistograms());
+ }
+ if(!((AliConversionPhotonCuts*)fCutArray->At(iCut))) continue;
+ if(((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutHistograms()){
+ fCutFolder[iCut]->Add(((AliConversionPhotonCuts*)fCutArray->At(iCut))->GetCutHistograms());
+ }
+ if(fDoMesonAnalysis){
+ if(!((AliConversionMesonCuts*)fMesonCutArray->At(iCut))) continue;
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutHistograms()){
+ fCutFolder[iCut]->Add(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutHistograms());
+ }
+ }
+ }
+ PostData(1, fOutputContainer);
}
//_____________________________________________________________________________
Bool_t AliAnalysisTaskGammaConvV1::Notify()
{
- for(Int_t iCut = 0; iCut<fnCuts;iCut++){
- if(!((AliConversionCuts*)fCutArray->At(iCut))->GetDoEtaShift()){
- hEtaShift[iCut]->Fill(0.,(((AliConversionCuts*)fCutArray->At(iCut))->GetEtaShift()));
- continue; // No Eta Shift requested, continue
- }
- if(((AliConversionCuts*)fCutArray->At(iCut))->GetEtaShift() == 0.0){ // Eta Shift requested but not set, get shift automatically
- ((AliConversionCuts*)fCutArray->At(iCut))->GetCorrectEtaShiftFromPeriod(fV0Reader->GetPeriodName());
- hEtaShift[iCut]->Fill(0.,(((AliConversionCuts*)fCutArray->At(iCut))->GetEtaShift()));
- ((AliConversionCuts*)fCutArray->At(iCut))->DoEtaShift(kFALSE); // Eta Shift Set, make sure that it is called only once
- continue;
- }
- else{
- printf(" Gamma Conversion Task %s :: Eta Shift Manually Set to %f \n\n",
- (((AliConversionCuts*)fCutArray->At(iCut))->GetCutNumber()).Data(),((AliConversionCuts*)fCutArray->At(iCut))->GetEtaShift());
- hEtaShift[iCut]->Fill(0.,(((AliConversionCuts*)fCutArray->At(iCut))->GetEtaShift()));
- ((AliConversionCuts*)fCutArray->At(iCut))->DoEtaShift(kFALSE); // Eta Shift Set, make sure that it is called only once
- }
- }
-
- return kTRUE;
+ for(Int_t iCut = 0; iCut<fnCuts;iCut++){
+ if(!((AliConvEventCuts*)fEventCutArray->At(iCut))->GetDoEtaShift()){
+ hEtaShift[iCut]->Fill(0.,(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift()));
+ continue; // No Eta Shift requested, continue
+ }
+ if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift() == 0.0){ // Eta Shift requested but not set, get shift automatically
+ ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCorrectEtaShiftFromPeriod(fV0Reader->GetPeriodName());
+ hEtaShift[iCut]->Fill(0.,(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift()));
+ ((AliConvEventCuts*)fEventCutArray->At(iCut))->DoEtaShift(kFALSE); // Eta Shift Set, make sure that it is called only once
+ continue;
+ }
+ else{
+ printf(" Gamma Conversion Task %s :: Eta Shift Manually Set to %f \n\n",
+ (((AliConvEventCuts*)fEventCutArray->At(iCut))->GetCutNumber()).Data(),((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift());
+ hEtaShift[iCut]->Fill(0.,(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetEtaShift()));
+ ((AliConvEventCuts*)fEventCutArray->At(iCut))->DoEtaShift(kFALSE); // Eta Shift Set, make sure that it is called only once
+ }
+ }
+ return kTRUE;
}
//_____________________________________________________________________________
void AliAnalysisTaskGammaConvV1::UserExec(Option_t *)
{
- //
- // Called for each event
- //
- Int_t eventQuality = ((AliConversionCuts*)fV0Reader->GetConversionCuts())->GetEventQuality();
- if(eventQuality == 2 || eventQuality == 3){// Event Not Accepted due to MC event missing or wrong trigger for V0ReaderV1
- for(Int_t iCut = 0; iCut<fnCuts; iCut++){
- hNEvents[iCut]->Fill(eventQuality);
- }
- return;
- }
-
- if(fIsMC) fMCEvent = MCEvent();
- if(fMCEvent == NULL) fIsMC = kFALSE;
-
- fInputEvent = InputEvent();
-
- if(fIsMC && fInputEvent->IsA()==AliESDEvent::Class()){
- fMCStack = fMCEvent->Stack();
- if(fMCStack == NULL) fIsMC = kFALSE;
- }
-
- fReaderGammas = fV0Reader->GetReconstructedGammas(); // Gammas from default Cut
-
- // ------------------- BeginEvent ----------------------------
-
- AliEventplane *EventPlane = fInputEvent->GetEventplane();
- if(fIsHeavyIon)fEventPlaneAngle = EventPlane->GetEventplane("V0",fInputEvent,2);
- else fEventPlaneAngle=0.0;
-
- if(fIsMC && fInputEvent->IsA()==AliAODEvent::Class() && !(fV0Reader->AreAODsRelabeled())){
- RelabelAODPhotonCandidates(kTRUE); // In case of AODMC relabeling MC
- fV0Reader->RelabelAODs(kTRUE);
- }
- for(Int_t iCut = 0; iCut<fnCuts; iCut++){
- fiCut = iCut;
- Int_t eventNotAccepted =
- ((AliConversionCuts*)fCutArray->At(iCut))
- ->IsEventAcceptedByConversionCut(fV0Reader->GetConversionCuts(),fInputEvent,fMCEvent,fIsHeavyIon);
- if(eventNotAccepted){
- // cout << "event rejected due to wrong trigger: " <<eventNotAccepted << endl;
- hNEvents[iCut]->Fill(eventNotAccepted); // Check Centrality, PileUp, SDD and V0AND --> Not Accepted => eventQuality = 1
- continue;
- }
-
- if(eventQuality != 0){// Event Not Accepted
- // cout << "event rejected due to: " <<eventQuality << endl;
- hNEvents[iCut]->Fill(eventQuality);
- continue;
- }
-
- hNEvents[iCut]->Fill(eventQuality); // Should be 0 here
- hNGoodESDTracks[iCut]->Fill(fV0Reader->GetNumberOfPrimaryTracks());
- if(((AliConversionCuts*)fCutArray->At(iCut))->IsHeavyIon() == 2) hNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A());
- else hNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A()+fInputEvent->GetVZEROData()->GetMTotV0C());
-
- if(fIsMC){
- // Process MC Particle
- if(((AliConversionCuts*)fCutArray->At(iCut))->GetSignalRejection() != 0){
- if(fInputEvent->IsA()==AliESDEvent::Class()){
- ((AliConversionCuts*)fCutArray->At(iCut))->GetNotRejectedParticles(((AliConversionCuts*)fCutArray->At(iCut))->GetSignalRejection(),
- ((AliConversionCuts*)fCutArray->At(iCut))->GetAcceptedHeader(),
- fMCEvent);
- }
- else if(fInputEvent->IsA()==AliAODEvent::Class()){
- ((AliConversionCuts*)fCutArray->At(iCut))->GetNotRejectedParticles(((AliConversionCuts*)fCutArray->At(iCut))->GetSignalRejection(),
- ((AliConversionCuts*)fCutArray->At(iCut))->GetAcceptedHeader(),
- fInputEvent);
- }
-
- if(((AliConversionCuts*)fCutArray->At(iCut))->GetAcceptedHeader()){
- for(Int_t i = 0;i<(((AliConversionCuts*)fCutArray->At(iCut))->GetAcceptedHeader())->GetEntries();i++){
- TString nameBin= hMCHeaders[iCut]->GetXaxis()->GetBinLabel(i+1);
- if (nameBin.CompareTo("")== 0){
- TString nameHeader = ((TObjString*)((TList*)((AliConversionCuts*)fCutArray->At(iCut))
- ->GetAcceptedHeader())->At(i))->GetString();
- hMCHeaders[iCut]->GetXaxis()->SetBinLabel(i+1,nameHeader.Data());
- }
- }
- }
- }
- }
- if(fIsMC){
- if(fInputEvent->IsA()==AliESDEvent::Class())
- ProcessMCParticles();
- if(fInputEvent->IsA()==AliAODEvent::Class())
- ProcessAODMCParticles();
- }
-
- ProcessPhotonCandidates(); // Process this cuts gammas
-
- hNGammaCandidates[iCut]->Fill(fGammaCandidates->GetEntries());
- if(fDoMesonAnalysis){ // Meson Analysis
- if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseMCPSmearing() && fIsMC){
- fUnsmearedPx = new Double_t[fGammaCandidates->GetEntries()]; // Store unsmeared Momenta
- fUnsmearedPy = new Double_t[fGammaCandidates->GetEntries()];
- fUnsmearedPz = new Double_t[fGammaCandidates->GetEntries()];
- fUnsmearedE = new Double_t[fGammaCandidates->GetEntries()];
-
- for(Int_t gamma=0;gamma<fGammaCandidates->GetEntries();gamma++){ // Smear the AODPhotons in MC
- fUnsmearedPx[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Px();
- fUnsmearedPy[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Py();
- fUnsmearedPz[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Pz();
- fUnsmearedE[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->E();
- ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->SmearParticle(dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(gamma)));
- }
- }
-
- CalculatePi0Candidates(); // Combine Gammas
- if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->DoBGCalculation()){
- if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->BackgroundHandlerType() == 0){
- CalculateBackground(); // Combinatorial Background
- UpdateEventByEventData(); // Store Event for mixed Events
- }
- else{
- CalculateBackgroundRP(); // Combinatorial Background
- fBGHandlerRP[iCut]->AddEvent(fGammaCandidates,fInputEvent); // Store Event for mixed Events
- }
- }
- if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseMCPSmearing() && fIsMC){
- for(Int_t gamma=0;gamma<fGammaCandidates->GetEntries();gamma++){ // Smear the AODPhotons in MC
- ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPx(fUnsmearedPx[gamma]); // Reset Unsmeared Momenta
- ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPy(fUnsmearedPy[gamma]);
- ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPz(fUnsmearedPz[gamma]);
- ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetE(fUnsmearedE[gamma]);
- }
- delete[] fUnsmearedPx; fUnsmearedPx = 0x0;
- delete[] fUnsmearedPy; fUnsmearedPy = 0x0;
- delete[] fUnsmearedPz; fUnsmearedPz = 0x0;
- delete[] fUnsmearedE; fUnsmearedE = 0x0;
- }
- }
- fGammaCandidates->Clear(); // delete this cuts good gammas
- }
-
- if(fIsMC && fInputEvent->IsA()==AliAODEvent::Class() && !(fV0Reader->AreAODsRelabeled())){
- RelabelAODPhotonCandidates(kFALSE); // Back to ESDMC Label
- fV0Reader->RelabelAODs(kFALSE);
- }
-
- PostData(1, fOutputContainer);
+ //
+ // Called for each event
+ //
+ Int_t eventQuality = ((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetEventQuality();
+ if(eventQuality == 2 || eventQuality == 3){// Event Not Accepted due to MC event missing or wrong trigger for V0ReaderV1
+ for(Int_t iCut = 0; iCut<fnCuts; iCut++){
+ hNEvents[iCut]->Fill(eventQuality);
+ }
+ return;
+ }
+
+ if(fIsMC) fMCEvent = MCEvent();
+ if(fMCEvent == NULL) fIsMC = kFALSE;
+
+ fInputEvent = InputEvent();
+
+ if(fIsMC && fInputEvent->IsA()==AliESDEvent::Class()){
+ fMCStack = fMCEvent->Stack();
+ if(fMCStack == NULL) fIsMC = kFALSE;
+ }
+
+ fReaderGammas = fV0Reader->GetReconstructedGammas(); // Gammas from default Cut
+
+ // ------------------- BeginEvent ----------------------------
+
+ AliEventplane *EventPlane = fInputEvent->GetEventplane();
+ if(fIsHeavyIon ==1)fEventPlaneAngle = EventPlane->GetEventplane("V0",fInputEvent,2);
+ else fEventPlaneAngle=0.0;
+
+ if(fIsMC && fInputEvent->IsA()==AliAODEvent::Class() && !(fV0Reader->AreAODsRelabeled())){
+ RelabelAODPhotonCandidates(kTRUE); // In case of AODMC relabeling MC
+ fV0Reader->RelabelAODs(kTRUE);
+ }
+ for(Int_t iCut = 0; iCut<fnCuts; iCut++){
+ fiCut = iCut;
+ Int_t eventNotAccepted =
+ ((AliConvEventCuts*)fEventCutArray->At(iCut))
+ ->IsEventAcceptedByCut(fV0Reader->GetEventCuts(),fInputEvent,fMCEvent,fIsHeavyIon);
+ if(eventNotAccepted){
+ // cout << "event rejected due to wrong trigger: " <<eventNotAccepted << endl;
+ hNEvents[iCut]->Fill(eventNotAccepted); // Check Centrality, PileUp, SDD and V0AND --> Not Accepted => eventQuality = 1
+ continue;
+ }
+
+ if(eventQuality != 0){// Event Not Accepted
+ // cout << "event rejected due to: " <<eventQuality << endl;
+ hNEvents[iCut]->Fill(eventQuality);
+ continue;
+ }
+
+ hNEvents[iCut]->Fill(eventQuality); // Should be 0 here
+ hNGoodESDTracks[iCut]->Fill(fV0Reader->GetNumberOfPrimaryTracks());
+ if(((AliConvEventCuts*)fEventCutArray->At(iCut))->IsHeavyIon() == 2) hNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A());
+ else hNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A()+fInputEvent->GetVZEROData()->GetMTotV0C());
+
+ if(fIsMC){
+ // Process MC Particle
+ if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetSignalRejection() != 0){
+ if(fInputEvent->IsA()==AliESDEvent::Class()){
+ ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetNotRejectedParticles(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetSignalRejection(),
+ ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader(),
+ fMCEvent);
+ }
+ else if(fInputEvent->IsA()==AliAODEvent::Class()){
+ ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetNotRejectedParticles(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetSignalRejection(),
+ ((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader(),
+ fInputEvent);
+ }
+
+ if(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader()){
+ for(Int_t i = 0;i<(((AliConvEventCuts*)fEventCutArray->At(iCut))->GetAcceptedHeader())->GetEntries();i++){
+ TString nameBin= hMCHeaders[iCut]->GetXaxis()->GetBinLabel(i+1);
+ if (nameBin.CompareTo("")== 0){
+ TString nameHeader = ((TObjString*)((TList*)((AliConvEventCuts*)fEventCutArray->At(iCut))
+ ->GetAcceptedHeader())->At(i))->GetString();
+// cout << nameHeader << endl;
+ hMCHeaders[iCut]->GetXaxis()->SetBinLabel(i+1,nameHeader.Data());
+ }
+ }
+ }
+ }
+ }
+ if(fIsMC){
+ if(fInputEvent->IsA()==AliESDEvent::Class())
+ ProcessMCParticles();
+ if(fInputEvent->IsA()==AliAODEvent::Class())
+ ProcessAODMCParticles();
+ }
+
+ ProcessPhotonCandidates(); // Process this cuts gammas
+
+ hNGammaCandidates[iCut]->Fill(fGammaCandidates->GetEntries());
+ hNGoodESDTracksVsNGammaCanditates[iCut]->Fill(fV0Reader->GetNumberOfPrimaryTracks(),fGammaCandidates->GetEntries());
+ if(fDoMesonAnalysis){ // Meson Analysis
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseMCPSmearing() && fIsMC){
+ fUnsmearedPx = new Double_t[fGammaCandidates->GetEntries()]; // Store unsmeared Momenta
+ fUnsmearedPy = new Double_t[fGammaCandidates->GetEntries()];
+ fUnsmearedPz = new Double_t[fGammaCandidates->GetEntries()];
+ fUnsmearedE = new Double_t[fGammaCandidates->GetEntries()];
+
+ for(Int_t gamma=0;gamma<fGammaCandidates->GetEntries();gamma++){ // Smear the AODPhotons in MC
+ fUnsmearedPx[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Px();
+ fUnsmearedPy[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Py();
+ fUnsmearedPz[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Pz();
+ fUnsmearedE[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->E();
+ ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->SmearParticle(dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(gamma)));
+ }
+ }
+
+ CalculatePi0Candidates(); // Combine Gammas
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->DoBGCalculation()){
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->BackgroundHandlerType() == 0){
+ CalculateBackground(); // Combinatorial Background
+ UpdateEventByEventData(); // Store Event for mixed Events
+ }
+ else{
+ CalculateBackgroundRP(); // Combinatorial Background
+ fBGHandlerRP[iCut]->AddEvent(fGammaCandidates,fInputEvent); // Store Event for mixed Events
+ }
+ }
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseMCPSmearing() && fIsMC){
+ for(Int_t gamma=0;gamma<fGammaCandidates->GetEntries();gamma++){ // Smear the AODPhotons in MC
+ ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPx(fUnsmearedPx[gamma]); // Reset Unsmeared Momenta
+ ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPy(fUnsmearedPy[gamma]);
+ ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPz(fUnsmearedPz[gamma]);
+ ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetE(fUnsmearedE[gamma]);
+ }
+ delete[] fUnsmearedPx; fUnsmearedPx = 0x0;
+ delete[] fUnsmearedPy; fUnsmearedPy = 0x0;
+ delete[] fUnsmearedPz; fUnsmearedPz = 0x0;
+ delete[] fUnsmearedE; fUnsmearedE = 0x0;
+ }
+ }
+ fGammaCandidates->Clear(); // delete this cuts good gammas
+ }
+
+ if(fIsMC && fInputEvent->IsA()==AliAODEvent::Class() && !(fV0Reader->AreAODsRelabeled())){
+ RelabelAODPhotonCandidates(kFALSE); // Back to ESDMC Label
+ fV0Reader->RelabelAODs(kFALSE);
+ }
+
+ PostData(1, fOutputContainer);
}
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::ProcessPhotonCandidates()
{
- Int_t nV0 = 0;
- TList *GammaCandidatesStepOne = new TList();
- TList *GammaCandidatesStepTwo = new TList();
- // Loop over Photon Candidates allocated by ReaderV1
- for(Int_t i = 0; i < fReaderGammas->GetEntriesFast(); i++){
- AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) fReaderGammas->At(i);
- if(!PhotonCandidate) continue;
- fIsFromMBHeader = kTRUE;
- if(fIsMC && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){
- Int_t isPosFromMBHeader
- = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack, fInputEvent);
- if(isPosFromMBHeader == 0 && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
- Int_t isNegFromMBHeader
- = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack, fInputEvent);
- if(isNegFromMBHeader == 0 && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
-
- if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE;
- }
-
- if(!((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelected(PhotonCandidate,fInputEvent)) continue;
- if(!((AliConversionCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(PhotonCandidate->GetPhotonPhi(),fEventPlaneAngle)) continue;
- if(!((AliConversionCuts*)fCutArray->At(fiCut))->UseElecSharingCut() &&
- !((AliConversionCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){
- fGammaCandidates->Add(PhotonCandidate); // if no second loop is required add to events good gammas
-
- if(fIsFromMBHeader){
- hESDConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt());
- if (fDoPhotonQA > 0){
- hESDConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
- hESDConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
- }
- }
- if(fIsMC){
- if(fInputEvent->IsA()==AliESDEvent::Class())
- ProcessTruePhotonCandidates(PhotonCandidate);
- if(fInputEvent->IsA()==AliAODEvent::Class())
- ProcessTruePhotonCandidatesAOD(PhotonCandidate);
- }
- if (fIsFromMBHeader && fDoPhotonQA == 2){
- if (fIsHeavyIon && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
- fPtGamma = PhotonCandidate->Pt();
- fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
- fRConvPhoton = PhotonCandidate->GetConversionRadius();
- fEtaPhoton = PhotonCandidate->GetPhotonEta();
- iCatPhoton = PhotonCandidate->GetPhotonQuality();
- tESDConvGammaPtDcazCat[fiCut]->Fill();
- } else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
- fPtGamma = PhotonCandidate->Pt();
- fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
- fRConvPhoton = PhotonCandidate->GetConversionRadius();
- fEtaPhoton = PhotonCandidate->GetPhotonEta();
- iCatPhoton = PhotonCandidate->GetPhotonQuality();
- tESDConvGammaPtDcazCat[fiCut]->Fill();
- }
- }
- } else if(((AliConversionCuts*)fCutArray->At(fiCut))->UseElecSharingCut()){ // if Shared Electron cut is enabled, Fill array, add to step one
- ((AliConversionCuts*)fCutArray->At(fiCut))->FillElectonLabelArray(PhotonCandidate,nV0);
- nV0++;
- GammaCandidatesStepOne->Add(PhotonCandidate);
- } else if(!((AliConversionCuts*)fCutArray->At(fiCut))->UseElecSharingCut() &&
- ((AliConversionCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ // shared electron is disabled, step one not needed -> step two
- GammaCandidatesStepTwo->Add(PhotonCandidate);
- }
- }
- if(((AliConversionCuts*)fCutArray->At(fiCut))->UseElecSharingCut()){
- for(Int_t i = 0;i<GammaCandidatesStepOne->GetEntries();i++){
- AliAODConversionPhoton *PhotonCandidate= (AliAODConversionPhoton*) GammaCandidatesStepOne->At(i);
- if(!PhotonCandidate) continue;
- fIsFromMBHeader = kTRUE;
- if(fMCStack && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){
- Int_t isPosFromMBHeader
- = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack, fInputEvent);
- Int_t isNegFromMBHeader
- = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack, fInputEvent);
- if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE;
- }
- if(!((AliConversionCuts*)fCutArray->At(fiCut))->RejectSharedElectronV0s(PhotonCandidate,i,GammaCandidatesStepOne->GetEntries())) continue;
- if(!((AliConversionCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ // To Colse v0s cut diabled, step two not needed
- fGammaCandidates->Add(PhotonCandidate);
- if(fIsFromMBHeader){
- hESDConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt());
- if (fDoPhotonQA > 0){
- hESDConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
- hESDConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
- }
- }
- }
- if(fIsMC){
- if(fInputEvent->IsA()==AliESDEvent::Class())
- ProcessTruePhotonCandidates(PhotonCandidate);
- if(fInputEvent->IsA()==AliAODEvent::Class())
- ProcessTruePhotonCandidatesAOD(PhotonCandidate);
- } else GammaCandidatesStepTwo->Add(PhotonCandidate); // Close v0s cut enabled -> add to list two
-
- if (fIsFromMBHeader && fDoPhotonQA == 2){
- if (fIsHeavyIon && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
- fPtGamma = PhotonCandidate->Pt();
- fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
- fRConvPhoton = PhotonCandidate->GetConversionRadius();
- fEtaPhoton = PhotonCandidate->GetPhotonEta();
- iCatPhoton = PhotonCandidate->GetPhotonQuality();
- tESDConvGammaPtDcazCat[fiCut]->Fill();
- } else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
- fPtGamma = PhotonCandidate->Pt();
- fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
- fRConvPhoton = PhotonCandidate->GetConversionRadius();
- fEtaPhoton = PhotonCandidate->GetPhotonEta();
- iCatPhoton = PhotonCandidate->GetPhotonQuality();
- tESDConvGammaPtDcazCat[fiCut]->Fill();
- }
- }
- }
- }
- if(((AliConversionCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){
- for(Int_t i = 0;i<GammaCandidatesStepTwo->GetEntries();i++){
- AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) GammaCandidatesStepTwo->At(i);
- if(!PhotonCandidate) continue;
- fIsFromMBHeader = kTRUE;
- if(fMCStack && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){
- Int_t isPosFromMBHeader
- = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack, fInputEvent);
- Int_t isNegFromMBHeader
- = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack, fInputEvent);
- if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE;
- }
- if(!((AliConversionCuts*)fCutArray->At(fiCut))->RejectToCloseV0s(PhotonCandidate,GammaCandidatesStepTwo,i)) continue;
- fGammaCandidates->Add(PhotonCandidate); // Add gamma to current cut TList
- if(fIsFromMBHeader){
- hESDConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt());
- if (fDoPhotonQA > 0){
- hESDConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
- hESDConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
- }
- }
- if(fIsMC){
- if(fInputEvent->IsA()==AliESDEvent::Class())
- ProcessTruePhotonCandidates(PhotonCandidate);
- if(fInputEvent->IsA()==AliAODEvent::Class())
- ProcessTruePhotonCandidatesAOD(PhotonCandidate);
- }
- if (fIsFromMBHeader){
- if (fIsHeavyIon == 1 && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
- fPtGamma = PhotonCandidate->Pt();
- fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
- fRConvPhoton = PhotonCandidate->GetConversionRadius();
- fEtaPhoton = PhotonCandidate->GetPhotonEta();
- iCatPhoton = PhotonCandidate->GetPhotonQuality();
- tESDConvGammaPtDcazCat[fiCut]->Fill();
- } else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
- fPtGamma = PhotonCandidate->Pt();
- fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
- fRConvPhoton = PhotonCandidate->GetConversionRadius();
- fEtaPhoton = PhotonCandidate->GetPhotonEta();
- iCatPhoton = PhotonCandidate->GetPhotonQuality();
- tESDConvGammaPtDcazCat[fiCut]->Fill();
- }
- }
- }
- }
-
- delete GammaCandidatesStepOne;
- GammaCandidatesStepOne = 0x0;
- delete GammaCandidatesStepTwo;
- GammaCandidatesStepTwo = 0x0;
+ Int_t nV0 = 0;
+ TList *GammaCandidatesStepOne = new TList();
+ TList *GammaCandidatesStepTwo = new TList();
+ // Loop over Photon Candidates allocated by ReaderV1
+ for(Int_t i = 0; i < fReaderGammas->GetEntriesFast(); i++){
+ AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) fReaderGammas->At(i);
+ if(!PhotonCandidate) continue;
+ fIsFromMBHeader = kTRUE;
+ if(fIsMC && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
+ Int_t isPosFromMBHeader
+ = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack, fInputEvent);
+ if(isPosFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
+ Int_t isNegFromMBHeader
+ = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack, fInputEvent);
+ if(isNegFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
+
+ if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE;
+ }
+
+ if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelected(PhotonCandidate,fInputEvent)) continue;
+ if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(PhotonCandidate->GetPhotonPhi(),fEventPlaneAngle)) continue;
+ if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut() &&
+ !((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){
+ fGammaCandidates->Add(PhotonCandidate); // if no second loop is required add to events good gammas
+
+ if(fIsFromMBHeader){
+ hESDConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt());
+ if (fDoPhotonQA > 0){
+ hESDConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
+ hESDConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
+ }
+ }
+ if(fIsMC){
+ if(fInputEvent->IsA()==AliESDEvent::Class())
+ ProcessTruePhotonCandidates(PhotonCandidate);
+ if(fInputEvent->IsA()==AliAODEvent::Class())
+ ProcessTruePhotonCandidatesAOD(PhotonCandidate);
+ }
+ if (fIsFromMBHeader && fDoPhotonQA == 2){
+ if (fIsHeavyIon == 1 && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
+ fPtGamma = PhotonCandidate->Pt();
+ fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
+ fRConvPhoton = PhotonCandidate->GetConversionRadius();
+ fEtaPhoton = PhotonCandidate->GetPhotonEta();
+ iCatPhoton = PhotonCandidate->GetPhotonQuality();
+ tESDConvGammaPtDcazCat[fiCut]->Fill();
+ } else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
+ fPtGamma = PhotonCandidate->Pt();
+ fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
+ fRConvPhoton = PhotonCandidate->GetConversionRadius();
+ fEtaPhoton = PhotonCandidate->GetPhotonEta();
+ iCatPhoton = PhotonCandidate->GetPhotonQuality();
+ tESDConvGammaPtDcazCat[fiCut]->Fill();
+ }
+ }
+ } else if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut()){ // if Shared Electron cut is enabled, Fill array, add to step one
+ ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->FillElectonLabelArray(PhotonCandidate,nV0);
+ nV0++;
+ GammaCandidatesStepOne->Add(PhotonCandidate);
+ } else if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut() &&
+ ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ // shared electron is disabled, step one not needed -> step two
+ GammaCandidatesStepTwo->Add(PhotonCandidate);
+ }
+ }
+ if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseElecSharingCut()){
+ for(Int_t i = 0;i<GammaCandidatesStepOne->GetEntries();i++){
+ AliAODConversionPhoton *PhotonCandidate= (AliAODConversionPhoton*) GammaCandidatesStepOne->At(i);
+ if(!PhotonCandidate) continue;
+ fIsFromMBHeader = kTRUE;
+ if(fMCStack && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
+ Int_t isPosFromMBHeader
+ = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack, fInputEvent);
+ Int_t isNegFromMBHeader
+ = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack, fInputEvent);
+ if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE;
+ }
+ if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->RejectSharedElectronV0s(PhotonCandidate,i,GammaCandidatesStepOne->GetEntries())) continue;
+ if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ // To Colse v0s cut diabled, step two not needed
+ fGammaCandidates->Add(PhotonCandidate);
+ if(fIsFromMBHeader){
+ hESDConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt());
+ if (fDoPhotonQA > 0){
+ hESDConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
+ hESDConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
+ }
+ }
+ }
+ if(fIsMC){
+ if(fInputEvent->IsA()==AliESDEvent::Class())
+ ProcessTruePhotonCandidates(PhotonCandidate);
+ if(fInputEvent->IsA()==AliAODEvent::Class())
+ ProcessTruePhotonCandidatesAOD(PhotonCandidate);
+ } else GammaCandidatesStepTwo->Add(PhotonCandidate); // Close v0s cut enabled -> add to list two
+
+ if (fIsFromMBHeader && fDoPhotonQA == 2){
+ if (fIsHeavyIon ==1 && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
+ fPtGamma = PhotonCandidate->Pt();
+ fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
+ fRConvPhoton = PhotonCandidate->GetConversionRadius();
+ fEtaPhoton = PhotonCandidate->GetPhotonEta();
+ iCatPhoton = PhotonCandidate->GetPhotonQuality();
+ tESDConvGammaPtDcazCat[fiCut]->Fill();
+ } else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
+ fPtGamma = PhotonCandidate->Pt();
+ fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
+ fRConvPhoton = PhotonCandidate->GetConversionRadius();
+ fEtaPhoton = PhotonCandidate->GetPhotonEta();
+ iCatPhoton = PhotonCandidate->GetPhotonQuality();
+ tESDConvGammaPtDcazCat[fiCut]->Fill();
+ }
+ }
+ }
+ }
+ if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){
+ for(Int_t i = 0;i<GammaCandidatesStepTwo->GetEntries();i++){
+ AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) GammaCandidatesStepTwo->At(i);
+ if(!PhotonCandidate) continue;
+ fIsFromMBHeader = kTRUE;
+ if(fMCStack && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
+ Int_t isPosFromMBHeader
+ = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack, fInputEvent);
+ Int_t isNegFromMBHeader
+ = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack, fInputEvent);
+ if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE;
+ }
+ if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->RejectToCloseV0s(PhotonCandidate,GammaCandidatesStepTwo,i)) continue;
+ fGammaCandidates->Add(PhotonCandidate); // Add gamma to current cut TList
+ if(fIsFromMBHeader){
+ hESDConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt());
+ if (fDoPhotonQA > 0){
+ hESDConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius());
+ hESDConvGammaEta[fiCut]->Fill(PhotonCandidate->Eta());
+ }
+ }
+ if(fIsMC){
+ if(fInputEvent->IsA()==AliESDEvent::Class())
+ ProcessTruePhotonCandidates(PhotonCandidate);
+ if(fInputEvent->IsA()==AliAODEvent::Class())
+ ProcessTruePhotonCandidatesAOD(PhotonCandidate);
+ }
+ if (fIsFromMBHeader){
+ if (fIsHeavyIon == 1 && PhotonCandidate->Pt() > 0.399 && PhotonCandidate->Pt() < 12.){
+ fPtGamma = PhotonCandidate->Pt();
+ fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
+ fRConvPhoton = PhotonCandidate->GetConversionRadius();
+ fEtaPhoton = PhotonCandidate->GetPhotonEta();
+ iCatPhoton = PhotonCandidate->GetPhotonQuality();
+ tESDConvGammaPtDcazCat[fiCut]->Fill();
+ } else if ( PhotonCandidate->Pt() > 0.299 && PhotonCandidate->Pt() < 16.){
+ fPtGamma = PhotonCandidate->Pt();
+ fDCAzPhoton = PhotonCandidate->GetDCAzToPrimVtx();
+ fRConvPhoton = PhotonCandidate->GetConversionRadius();
+ fEtaPhoton = PhotonCandidate->GetPhotonEta();
+ iCatPhoton = PhotonCandidate->GetPhotonQuality();
+ tESDConvGammaPtDcazCat[fiCut]->Fill();
+ }
+ }
+ }
+ }
+
+ delete GammaCandidatesStepOne;
+ GammaCandidatesStepOne = 0x0;
+ delete GammaCandidatesStepTwo;
+ GammaCandidatesStepTwo = 0x0;
}
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::ProcessTruePhotonCandidatesAOD(AliAODConversionPhoton *TruePhotonCandidate)
{
-
- Double_t magField = fInputEvent->GetMagneticField();
- if( magField < 0.0 ){
- magField = 1.0;
- }
- else {
- magField = -1.0;
- }
-
- TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
- AliAODMCParticle *posDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelPositive());
- AliAODMCParticle *negDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelNegative());
- iPhotonMCInfo = 0;
-
- if(posDaughter == NULL || negDaughter == NULL) return; // One particle does not exist
- Int_t pdgCode[2] = {abs(posDaughter->GetPdgCode()),abs(negDaughter->GetPdgCode())};
-
- if(posDaughter->GetMother() != negDaughter->GetMother()){
- FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
- iPhotonMCInfo = 1;
- return;
- }
- else if(posDaughter->GetMother() == -1){
- FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
- iPhotonMCInfo = 1;
- return;
- }
-
- if(pdgCode[0]!=11 || pdgCode[1]!=11){
- iPhotonMCInfo = 1;
- return; //One Particle is not a electron
- }
- if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode()){
- iPhotonMCInfo = 1;
- return; // Same Charge
- }
-
- AliAODMCParticle *Photon = (AliAODMCParticle*) AODMCTrackArray->At(posDaughter->GetMother());
- AliVTrack * electronCandidate = ((AliConversionCuts*)fCutArray->At(fiCut))->GetTrack(fInputEvent,TruePhotonCandidate->GetTrackLabelNegative() );
- AliVTrack * positronCandidate = ((AliConversionCuts*)fCutArray->At(fiCut))->GetTrack(fInputEvent,TruePhotonCandidate->GetTrackLabelPositive() );
- Double_t deltaPhi = magField * TVector2::Phi_mpi_pi( electronCandidate->Phi()-positronCandidate->Phi());
-
- if(Photon->GetPdgCode() != 22){
- hESDTrueDalitzPsiPairDeltaPhi[fiCut]->Fill(deltaPhi,TruePhotonCandidate->GetPsiPair());
- iPhotonMCInfo = 1;
- return; // Mother is no Photon
- }
-
- if(((posDaughter->GetMCProcessCode())) != 5 || ((negDaughter->GetMCProcessCode())) != 5){
- iPhotonMCInfo = 1;
- return;// check if the daughters come from a conversion
- }
- // STILL A BUG IN ALIROOT >>8 HAS TPO BE REMOVED AFTER FIX
-
-
-
- // True Photon
- if(fIsFromMBHeader)hESDTrueConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
- hESDTrueGammaPsiPairDeltaPhi[fiCut]->Fill(deltaPhi,TruePhotonCandidate->GetPsiPair());
- if(Photon->IsPrimary()){
- // Count just primary MC Gammas as true --> For Ratio esdtruegamma / mcconvgamma
- if(fIsFromMBHeader){
- iPhotonMCInfo = 6;
- hESDTruePrimaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
- hESDTruePrimaryConvGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt()); // Allways Filled
- }
- // (Not Filled for i6, Extra Signal Gamma (parambox) are secondary)
- }
- else{
- if(fIsFromMBHeader){
- hESDTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
- iPhotonMCInfo = 2;
- if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
- ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 3122){
- iPhotonMCInfo = 5;
- hESDTrueSecondaryConvGammaFromXFromLambdaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
- }
- if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
- ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 310){
- iPhotonMCInfo = 4;
- hESDTrueSecondaryConvGammaFromXFromK0sPt[fiCut]->Fill(TruePhotonCandidate->Pt());
- }
- if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
- ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 221){
- iPhotonMCInfo = 3;
- }
- }
- }
-
+ Double_t magField = fInputEvent->GetMagneticField();
+ if( magField < 0.0 ){
+ magField = 1.0;
+ }
+ else {
+ magField = -1.0;
+ }
+
+ TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
+ if (AODMCTrackArray != NULL && TruePhotonCandidate != NULL){
+
+ AliAODMCParticle *posDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelPositive());
+ AliAODMCParticle *negDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelNegative());
+ iPhotonMCInfo = 0;
+
+ if(posDaughter == NULL || negDaughter == NULL) return; // One particle does not exist
+ Int_t pdgCode[2] = {abs(posDaughter->GetPdgCode()),abs(negDaughter->GetPdgCode())};
+
+ if(posDaughter->GetMother() != negDaughter->GetMother()){
+ FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
+ iPhotonMCInfo = 1;
+ return;
+ }
+ else if(posDaughter->GetMother() == -1){
+ FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
+ iPhotonMCInfo = 1;
+ return;
+ }
+
+ if(pdgCode[0]!=11 || pdgCode[1]!=11){
+ iPhotonMCInfo = 1;
+ return; //One Particle is not a electron
+ }
+ if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode()){
+ iPhotonMCInfo = 1;
+ return; // Same Charge
+ }
+
+ AliAODMCParticle *Photon = (AliAODMCParticle*) AODMCTrackArray->At(posDaughter->GetMother());
+ AliVTrack * electronCandidate = ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->GetTrack(fInputEvent,TruePhotonCandidate->GetTrackLabelNegative() );
+ AliVTrack * positronCandidate = ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->GetTrack(fInputEvent,TruePhotonCandidate->GetTrackLabelPositive() );
+ Double_t deltaPhi = magField * TVector2::Phi_mpi_pi( electronCandidate->Phi()-positronCandidate->Phi());
+
+ if(Photon->GetPdgCode() != 22){
+ hESDTrueDalitzPsiPairDeltaPhi[fiCut]->Fill(deltaPhi,TruePhotonCandidate->GetPsiPair());
+ iPhotonMCInfo = 1;
+ return; // Mother is no Photon
+ }
+
+ if(((posDaughter->GetMCProcessCode())) != 5 || ((negDaughter->GetMCProcessCode())) != 5){
+ iPhotonMCInfo = 1;
+ return;// check if the daughters come from a conversion
+ }
+ // STILL A BUG IN ALIROOT >>8 HAS TPO BE REMOVED AFTER FIX
+
+
+
+ // True Photon
+ if(fIsFromMBHeader){
+ hESDTrueConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
+ if (fDoPhotonQA > 0) hESDTrueConvGammaEta[fiCut]->Fill(TruePhotonCandidate->Eta());
+ }
+ hESDTrueGammaPsiPairDeltaPhi[fiCut]->Fill(deltaPhi,TruePhotonCandidate->GetPsiPair());
+ if(Photon->IsPrimary()){
+ // Count just primary MC Gammas as true --> For Ratio esdtruegamma / mcconvgamma
+ if(fIsFromMBHeader){
+ iPhotonMCInfo = 6;
+ hESDTruePrimaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
+ hESDTruePrimaryConvGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt()); // Allways Filled
+ }
+ // (Not Filled for i6, Extra Signal Gamma (parambox) are secondary)
+ }
+ else{
+ if(fIsFromMBHeader){
+ hESDTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
+ iPhotonMCInfo = 2;
+ if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
+ ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 3122){
+ iPhotonMCInfo = 5;
+ hESDTrueSecondaryConvGammaFromXFromLambdaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
+ }
+ if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
+ ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 310){
+ iPhotonMCInfo = 4;
+ hESDTrueSecondaryConvGammaFromXFromK0sPt[fiCut]->Fill(TruePhotonCandidate->Pt());
+ }
+ if(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother() > -1 &&
+ ((AliAODMCParticle*)AODMCTrackArray->At(((AliAODMCParticle*)AODMCTrackArray->At(Photon->GetMother()))->GetMother()))->GetPdgCode() == 221){
+ iPhotonMCInfo = 3;
+ }
+ }
+ }
+ }
+ return;
}
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::ProcessTruePhotonCandidates(AliAODConversionPhoton *TruePhotonCandidate)
{
-
- Double_t magField = fInputEvent->GetMagneticField();
- if( magField < 0.0 ){
- magField = 1.0;
- }
- else {
- magField = -1.0;
- }
-
- // Process True Photons
- TParticle *posDaughter = TruePhotonCandidate->GetPositiveMCDaughter(fMCStack);
- TParticle *negDaughter = TruePhotonCandidate->GetNegativeMCDaughter(fMCStack);
-
- iPhotonMCInfo = 0;
-
- if(posDaughter == NULL || negDaughter == NULL) return; // One particle does not exist
- Int_t pdgCode[2] = {abs(posDaughter->GetPdgCode()),abs(negDaughter->GetPdgCode())};
- iPhotonMCInfo = 1;
- if(posDaughter->GetMother(0) != negDaughter->GetMother(0)){
- FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
- return;
- }
- else if(posDaughter->GetMother(0) == -1){
- FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
- return;
- }
-
- if(pdgCode[0]!=11 || pdgCode[1]!=11) return; //One Particle is not a electron
-
- if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode()) return; // Same Charge
-
- TParticle *Photon = TruePhotonCandidate->GetMCParticle(fMCStack);
- AliVTrack * electronCandidate = ((AliConversionCuts*)fCutArray->At(fiCut))->GetTrack(fInputEvent,TruePhotonCandidate->GetTrackLabelNegative() );
- AliVTrack * positronCandidate = ((AliConversionCuts*)fCutArray->At(fiCut))->GetTrack(fInputEvent,TruePhotonCandidate->GetTrackLabelPositive() );
- Double_t deltaPhi = magField * TVector2::Phi_mpi_pi( electronCandidate->Phi()-positronCandidate->Phi());
-
- if(Photon->GetPdgCode() != 22){
- hESDTrueDalitzPsiPairDeltaPhi[fiCut]->Fill(deltaPhi,TruePhotonCandidate->GetPsiPair());
- return; // Mother is no Photon
- }
-
- if(posDaughter->GetUniqueID() != 5 || negDaughter->GetUniqueID() !=5) return;// check if the daughters come from a conversion
-
-
-
- // True Photon
- if(fIsFromMBHeader){
- hESDTrueConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
- }
- hESDTrueGammaPsiPairDeltaPhi[fiCut]->Fill(deltaPhi,TruePhotonCandidate->GetPsiPair());
- if(posDaughter->GetMother(0) <= fMCStack->GetNprimary()){
- // Count just primary MC Gammas as true --> For Ratio esdtruegamma / mcconvgamma
- if(fIsFromMBHeader){
- iPhotonMCInfo = 6;
- hESDTruePrimaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
- hESDTruePrimaryConvGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt()); // Allways Filled
-
- }
- // (Not Filled for i6, Extra Signal Gamma (parambox) are secondary)
- }
- else{
- if(fIsFromMBHeader){
- iPhotonMCInfo = 2;
- hESDTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
- if(fMCStack->Particle(Photon->GetMother(0))->GetMother(0) > -1 &&
- fMCStack->Particle(fMCStack->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 3122){
- hESDTrueSecondaryConvGammaFromXFromLambdaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
- iPhotonMCInfo = 5;
- }
- if(fMCStack->Particle(Photon->GetMother(0))->GetMother(0) > -1 &&
- fMCStack->Particle(fMCStack->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 310){
- hESDTrueSecondaryConvGammaFromXFromK0sPt[fiCut]->Fill(TruePhotonCandidate->Pt());
- iPhotonMCInfo = 4;
- }
- if(fMCStack->Particle(Photon->GetMother(0))->GetMother(0) > -1 &&
- fMCStack->Particle(fMCStack->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 221){
- iPhotonMCInfo = 3;
- }
- }
- }
+
+ Double_t magField = fInputEvent->GetMagneticField();
+ if( magField < 0.0 ){
+ magField = 1.0;
+ }
+ else {
+ magField = -1.0;
+ }
+
+ // Process True Photons
+ TParticle *posDaughter = TruePhotonCandidate->GetPositiveMCDaughter(fMCStack);
+ TParticle *negDaughter = TruePhotonCandidate->GetNegativeMCDaughter(fMCStack);
+
+ iPhotonMCInfo = 0;
+
+ if(posDaughter == NULL || negDaughter == NULL) return; // One particle does not exist
+ Int_t pdgCode[2] = {abs(posDaughter->GetPdgCode()),abs(negDaughter->GetPdgCode())};
+ iPhotonMCInfo = 1;
+ if(posDaughter->GetMother(0) != negDaughter->GetMother(0)){
+ FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
+ return;
+ } else if(posDaughter->GetMother(0) == -1){
+ FillPhotonCombinatorialBackgroundHist(TruePhotonCandidate, pdgCode);
+ return;
+ }
+
+ if(pdgCode[0]!=11 || pdgCode[1]!=11) return; //One Particle is not a electron
+
+ if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode()) return; // Same Charge
+
+ TParticle *Photon = TruePhotonCandidate->GetMCParticle(fMCStack);
+ AliVTrack * electronCandidate = ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->GetTrack(fInputEvent,TruePhotonCandidate->GetTrackLabelNegative() );
+ AliVTrack * positronCandidate = ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->GetTrack(fInputEvent,TruePhotonCandidate->GetTrackLabelPositive() );
+ Double_t deltaPhi = magField * TVector2::Phi_mpi_pi( electronCandidate->Phi()-positronCandidate->Phi());
+
+ if(Photon->GetPdgCode() != 22){
+ hESDTrueDalitzPsiPairDeltaPhi[fiCut]->Fill(deltaPhi,TruePhotonCandidate->GetPsiPair());
+ return; // Mother is no Photon
+ }
+
+ if(posDaughter->GetUniqueID() != 5 || negDaughter->GetUniqueID() !=5) return;// check if the daughters come from a conversion
+
+
+
+ // True Photon
+ if(fIsFromMBHeader){
+ hESDTrueConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
+ if (fDoPhotonQA > 0) hESDTrueConvGammaEta[fiCut]->Fill(TruePhotonCandidate->Eta());
+ }
+ hESDTrueGammaPsiPairDeltaPhi[fiCut]->Fill(deltaPhi,TruePhotonCandidate->GetPsiPair());
+ if(posDaughter->GetMother(0) <= fMCStack->GetNprimary()){
+ // Count just primary MC Gammas as true --> For Ratio esdtruegamma / mcconvgamma
+ if(fIsFromMBHeader){
+ iPhotonMCInfo = 6;
+ hESDTruePrimaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
+ hESDTruePrimaryConvGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt()); // Allways Filled
+
+ }
+ // (Not Filled for i6, Extra Signal Gamma (parambox) are secondary)
+ } else {
+ if(fIsFromMBHeader){
+ iPhotonMCInfo = 2;
+ hESDTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
+ if(fMCStack->Particle(Photon->GetMother(0))->GetMother(0) > -1 &&
+ fMCStack->Particle(fMCStack->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 3122){
+ hESDTrueSecondaryConvGammaFromXFromLambdaPt[fiCut]->Fill(TruePhotonCandidate->Pt());
+ iPhotonMCInfo = 5;
+ }
+ if(fMCStack->Particle(Photon->GetMother(0))->GetMother(0) > -1 &&
+ fMCStack->Particle(fMCStack->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 310){
+ hESDTrueSecondaryConvGammaFromXFromK0sPt[fiCut]->Fill(TruePhotonCandidate->Pt());
+ iPhotonMCInfo = 4;
+ }
+ if(fMCStack->Particle(Photon->GetMother(0))->GetMother(0) > -1 &&
+ fMCStack->Particle(fMCStack->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 221){
+ iPhotonMCInfo = 3;
+ }
+ }
+ }
}
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::ProcessAODMCParticles()
{
- TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
-
- // Loop over all primary MC particle
- for(Int_t i = 0; i < AODMCTrackArray->GetEntriesFast(); i++) {
-
- AliAODMCParticle* particle = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(i));
- if (!particle) continue;
- if (!particle->IsPrimary()) continue;
-
- Int_t isMCFromMBHeader = -1;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){
- isMCFromMBHeader
- = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent);
- if(isMCFromMBHeader == 0 && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
- }
-
- if(!((AliConversionCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(particle->Phi(),fEventPlaneAngle,kFALSE)) continue;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(particle,AODMCTrackArray,kFALSE)){
- hMCAllGammaPt[fiCut]->Fill(particle->Pt()); // All MC Gamma
- if(particle->GetMother() >-1){ // Meson Decay Gamma
- switch((static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetMother())))->GetPdgCode()){
- case 111: // Pi0
- hMCDecayGammaPi0Pt[fiCut]->Fill(particle->Pt());
- break;
- case 113: // Rho0
- hMCDecayGammaRhoPt[fiCut]->Fill(particle->Pt());
- break;
- case 221: // Eta
- hMCDecayGammaEtaPt[fiCut]->Fill(particle->Pt());
- break;
- case 223: // Omega
- hMCDecayGammaOmegaPt[fiCut]->Fill(particle->Pt());
- break;
- case 331: // Eta'
- hMCDecayGammaEtapPt[fiCut]->Fill(particle->Pt());
- break;
- case 333: // Phi
- hMCDecayGammaPhiPt[fiCut]->Fill(particle->Pt());
- break;
- case 3212: // Sigma
- hMCDecayGammaSigmaPt[fiCut]->Fill(particle->Pt());
- break;
- }
- }
- }
- if(((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(particle,AODMCTrackArray,kTRUE)){
- Double_t rConv = 0;
- for(Int_t daughterIndex=particle->GetDaughter(0);daughterIndex<=particle->GetDaughter(1);daughterIndex++){
- AliAODMCParticle *tmpDaughter = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(daughterIndex));
- if(!tmpDaughter) continue;
- if(abs(tmpDaughter->GetPdgCode()) == 11){
- rConv = sqrt( (tmpDaughter->Xv()*tmpDaughter->Xv()) + (tmpDaughter->Yv()*tmpDaughter->Yv()) );
- }
- }
- hMCConvGammaPt[fiCut]->Fill(particle->Pt());
- if (fDoPhotonQA > 0){
- hMCConvGammaR[fiCut]->Fill(rConv);
- hMCConvGammaEta[fiCut]->Fill(particle->Eta());
- }
- }
- // Converted MC Gamma
- if(fDoMesonAnalysis){
- if(particle->GetPdgCode() == 310 && fDoMesonQA > 0){
- Double_t mesonY = 10.;
- if(particle->E() - particle->Pz() == 0 || particle->E() + particle->Pz() == 0){
- mesonY=10.-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift();
- } else{
- mesonY = 0.5*(TMath::Log((particle->E()+particle->Pz()) / (particle->E()-particle->Pz())))
- -((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift();
- }
- Float_t weightedK0s= 1;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
- if (particle->Pt()>0.005){
- weightedK0s= ((AliConversionCuts*)fCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, 0x0, fInputEvent);
- //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
- }
- }
- hMCK0sPt[fiCut]->Fill(particle->Pt(),weightedK0s);
- hMCK0sWOWeightPt[fiCut]->Fill(particle->Pt());
- hMCK0sPtY[fiCut]->Fill(particle->Pt(),mesonY,weightedK0s);
- }
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
- ->MesonIsSelectedAODMC(particle,AODMCTrackArray,((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift())){
- AliAODMCParticle* daughter0 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetDaughter(0)));
- AliAODMCParticle* daughter1 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetDaughter(1)));
- Float_t weighted= 1;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
- if (particle->Pt()>0.005){
- weighted= ((AliConversionCuts*)fCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, 0x0, fInputEvent);
- //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
- }
- }
- Double_t mesonY = 10.;
- if(particle->E() - particle->Pz() == 0 || particle->E() + particle->Pz() == 0){
- mesonY=10.-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift();
- } else{
- mesonY = 0.5*(TMath::Log((particle->E()+particle->Pz()) / (particle->E()-particle->Pz())))
- -((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift();
- }
-
- if(particle->GetPdgCode() == 111){
- hMCPi0Pt[fiCut]->Fill(particle->Pt(),weighted); // All MC Pi0
- hMCPi0WOWeightPt[fiCut]->Fill(particle->Pt());
- if (fDoMesonQA > 0) hMCPi0PtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
- } else if(particle->GetPdgCode() == 221){
- hMCEtaPt[fiCut]->Fill(particle->Pt(),weighted); // All MC Eta
- if (fDoMesonQA > 0) hMCEtaPtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
- }
-
- // Check the acceptance for both gammas
- if(((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(daughter0,AODMCTrackArray,kFALSE) &&
- ((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(daughter1,AODMCTrackArray,kFALSE) &&
- ((AliConversionCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter0->Phi(),fEventPlaneAngle,kFALSE) &&
- ((AliConversionCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter1->Phi(),fEventPlaneAngle,kFALSE)){
-
- if(particle->GetPdgCode() == 111){
- hMCPi0InAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Pi0 with gamma in acc
- } else if(particle->GetPdgCode() == 221){
- hMCEtaInAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Eta with gamma in acc
- }
- }
- }
- }
- }
+ TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
+
+ if (AODMCTrackArray){
+ // Loop over all primary MC particle
+ for(Int_t i = 0; i < AODMCTrackArray->GetEntriesFast(); i++) {
+
+ AliAODMCParticle* particle = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(i));
+ if (!particle) continue;
+ if (!particle->IsPrimary()) continue;
+
+ Int_t isMCFromMBHeader = -1;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
+ isMCFromMBHeader
+ = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent);
+ if(isMCFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
+ }
+
+ if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(particle->Phi(),fEventPlaneAngle,kFALSE)) continue;
+ if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(particle,AODMCTrackArray,kFALSE)){
+ hMCAllGammaPt[fiCut]->Fill(particle->Pt()); // All MC Gamma
+ if(particle->GetMother() >-1){ // Meson Decay Gamma
+ switch((static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetMother())))->GetPdgCode()){
+ case 111: // Pi0
+ hMCDecayGammaPi0Pt[fiCut]->Fill(particle->Pt());
+ break;
+ case 113: // Rho0
+ hMCDecayGammaRhoPt[fiCut]->Fill(particle->Pt());
+ break;
+ case 221: // Eta
+ hMCDecayGammaEtaPt[fiCut]->Fill(particle->Pt());
+ break;
+ case 223: // Omega
+ hMCDecayGammaOmegaPt[fiCut]->Fill(particle->Pt());
+ break;
+ case 331: // Eta'
+ hMCDecayGammaEtapPt[fiCut]->Fill(particle->Pt());
+ break;
+ case 333: // Phi
+ hMCDecayGammaPhiPt[fiCut]->Fill(particle->Pt());
+ break;
+ case 3212: // Sigma
+ hMCDecayGammaSigmaPt[fiCut]->Fill(particle->Pt());
+ break;
+ }
+ }
+ }
+ if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(particle,AODMCTrackArray,kTRUE)){
+ Double_t rConv = 0;
+ for(Int_t daughterIndex=particle->GetDaughter(0);daughterIndex<=particle->GetDaughter(1);daughterIndex++){
+ AliAODMCParticle *tmpDaughter = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(daughterIndex));
+ if(!tmpDaughter) continue;
+ if(abs(tmpDaughter->GetPdgCode()) == 11){
+ rConv = sqrt( (tmpDaughter->Xv()*tmpDaughter->Xv()) + (tmpDaughter->Yv()*tmpDaughter->Yv()) );
+ }
+ }
+ hMCConvGammaPt[fiCut]->Fill(particle->Pt());
+ if (fDoPhotonQA > 0){
+ hMCConvGammaR[fiCut]->Fill(rConv);
+ hMCConvGammaEta[fiCut]->Fill(particle->Eta());
+ }
+ }
+ // Converted MC Gamma
+ if(fDoMesonAnalysis){
+ if(particle->GetPdgCode() == 310 && fDoMesonQA > 0){
+ Double_t mesonY = 10.;
+ if(particle->E() - particle->Pz() == 0 || particle->E() + particle->Pz() == 0){
+ mesonY=10.-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
+ } else{
+ mesonY = 0.5*(TMath::Log((particle->E()+particle->Pz()) / (particle->E()-particle->Pz())))
+ -((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
+ }
+ Float_t weightedK0s= 1;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
+ if (particle->Pt()>0.005){
+ weightedK0s= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, 0x0, fInputEvent);
+ //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
+ }
+ }
+ hMCK0sPt[fiCut]->Fill(particle->Pt(),weightedK0s);
+ hMCK0sWOWeightPt[fiCut]->Fill(particle->Pt());
+ hMCK0sPtY[fiCut]->Fill(particle->Pt(),mesonY,weightedK0s);
+ }
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelectedAODMC(particle,AODMCTrackArray,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
+ AliAODMCParticle* daughter0 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetDaughter(0)));
+ AliAODMCParticle* daughter1 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(particle->GetDaughter(1)));
+ Float_t weighted= 1;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
+ if (particle->Pt()>0.005){
+ weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, 0x0, fInputEvent);
+ // if(particle->GetPdgCode() == 221){
+ // cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
+ // }
+ }
+ }
+ Double_t mesonY = 10.;
+ if(particle->E() - particle->Pz() == 0 || particle->E() + particle->Pz() == 0){
+ mesonY=10.-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
+ } else{
+ mesonY = 0.5*(TMath::Log((particle->E()+particle->Pz()) / (particle->E()-particle->Pz())))
+ -((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
+ }
+
+ Double_t alpha = -1;
+ if (particle->GetPdgCode() == 111 || particle->GetPdgCode() == 221){
+ alpha = TMath::Abs((daughter0->E() - daughter1->E()))/(daughter0->E() + daughter1->E());
+ }
+
+ if(particle->GetPdgCode() == 111){
+ hMCPi0Pt[fiCut]->Fill(particle->Pt(),weighted); // All MC Pi0
+ hMCPi0WOWeightPt[fiCut]->Fill(particle->Pt());
+ if (fDoMesonQA > 0){
+ hMCPi0PtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
+ hMCPi0PtAlpha[fiCut]->Fill(particle->Pt(),alpha); // All MC Pi0
+ }
+ } else if(particle->GetPdgCode() == 221){
+ hMCEtaPt[fiCut]->Fill(particle->Pt(),weighted); // All MC Eta
+ hMCEtaWOWeightPt[fiCut]->Fill(particle->Pt());
+ if (fDoMesonQA > 0){
+ hMCEtaPtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
+ hMCEtaPtAlpha[fiCut]->Fill(particle->Pt(),alpha); // All MC Pi0
+ }
+ }
+
+ // Check the acceptance for both gammas
+ if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(daughter0,AODMCTrackArray,kFALSE) &&
+ ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedAODMC(daughter1,AODMCTrackArray,kFALSE) &&
+ ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter0->Phi(),fEventPlaneAngle,kFALSE) &&
+ ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter1->Phi(),fEventPlaneAngle,kFALSE)){
+
+ if(particle->GetPdgCode() == 111){
+ hMCPi0InAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Pi0 with gamma in acc
+ } else if(particle->GetPdgCode() == 221){
+ hMCEtaInAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Eta with gamma in acc
+ }
+ }
+ }
+ }
+ }
+ }
+ return;
}
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::ProcessMCParticles()
{
- // Loop over all primary MC particle
- for(Int_t i = 0; i < fMCStack->GetNprimary(); i++) {
- TParticle* particle = (TParticle *)fMCStack->Particle(i);
- if (!particle) continue;
-
- Int_t isMCFromMBHeader = -1;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){
- isMCFromMBHeader
- = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent);
- if(isMCFromMBHeader == 0 && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
- }
-
- if(!((AliConversionCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(particle->Phi(),fEventPlaneAngle,kFALSE)) continue;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(particle,fMCStack,kFALSE)){
- hMCAllGammaPt[fiCut]->Fill(particle->Pt()); // All MC Gamma
- if(particle->GetMother(0) >-1){ // Meson Decay Gamma
- switch(fMCStack->Particle(particle->GetMother(0))->GetPdgCode()){
- case 111: // Pi0
- hMCDecayGammaPi0Pt[fiCut]->Fill(particle->Pt());
- break;
- case 113: // Rho0
- hMCDecayGammaRhoPt[fiCut]->Fill(particle->Pt());
- break;
- case 221: // Eta
- hMCDecayGammaEtaPt[fiCut]->Fill(particle->Pt());
- break;
- case 223: // Omega
- hMCDecayGammaOmegaPt[fiCut]->Fill(particle->Pt());
- break;
- case 331: // Eta'
- hMCDecayGammaEtapPt[fiCut]->Fill(particle->Pt());
- break;
- case 333: // Phi
- hMCDecayGammaPhiPt[fiCut]->Fill(particle->Pt());
- break;
- case 3212: // Sigma
- hMCDecayGammaSigmaPt[fiCut]->Fill(particle->Pt());
- break;
- }
- }
- }
- if(((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(particle,fMCStack,kTRUE)){
- hMCConvGammaPt[fiCut]->Fill(particle->Pt());
- if (fDoPhotonQA > 0){
- hMCConvGammaR[fiCut]->Fill(((TParticle*)fMCStack->Particle(particle->GetFirstDaughter()))->R());
- hMCConvGammaEta[fiCut]->Fill(particle->Eta());
- }
- } // Converted MC Gamma
- if(fDoMesonAnalysis){
- if(particle->GetPdgCode() == 310 && fDoMesonQA > 0){
- Double_t mesonY = 10.;
- if(particle->Energy() - particle->Pz() == 0 || particle->Energy() + particle->Pz() == 0){
- mesonY=10.-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift();
- } else{
- mesonY = 0.5*(TMath::Log((particle->Energy()+particle->Pz()) / (particle->Energy()-particle->Pz())))
- -((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift();
- }
- Float_t weightedK0s= 1;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
- if (particle->Pt()>0.005){
- weightedK0s= ((AliConversionCuts*)fCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, fMCStack, fInputEvent);
- //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
- }
- }
- hMCK0sPt[fiCut]->Fill(particle->Pt(),weightedK0s);
- hMCK0sWOWeightPt[fiCut]->Fill(particle->Pt());
- hMCK0sPtY[fiCut]->Fill(particle->Pt(),mesonY,weightedK0s);
- }
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
- ->MesonIsSelectedMC(particle,fMCStack,((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift())){
- TParticle* daughter0 = (TParticle*)fMCStack->Particle(particle->GetFirstDaughter());
- TParticle* daughter1 = (TParticle*)fMCStack->Particle(particle->GetLastDaughter());
-
- Float_t weighted= 1;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
- if (particle->Pt()>0.005){
- weighted= ((AliConversionCuts*)fCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, fMCStack, fInputEvent);
- //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
- }
- }
- Double_t mesonY = 10.;
- if(particle->Energy() - particle->Pz() == 0 || particle->Energy() + particle->Pz() == 0){
- mesonY=10.-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift();
- } else{
- mesonY = 0.5*(TMath::Log((particle->Energy()+particle->Pz()) / (particle->Energy()-particle->Pz())))
- -((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift();
- }
-
- if(particle->GetPdgCode() == 111){
- hMCPi0Pt[fiCut]->Fill(particle->Pt(),weighted); // All MC Pi0
- hMCPi0WOWeightPt[fiCut]->Fill(particle->Pt());
- if (fDoMesonQA > 0) hMCPi0PtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
- } else if(particle->GetPdgCode() == 221){
- hMCEtaPt[fiCut]->Fill(particle->Pt(),weighted); // All MC Eta
- if (fDoMesonQA > 0) hMCEtaPtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
- }
-
- // Check the acceptance for both gammas
- if(((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(daughter0,fMCStack,kFALSE) &&
- ((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(daughter1,fMCStack,kFALSE) &&
- ((AliConversionCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter0->Phi(),fEventPlaneAngle,kFALSE) &&
- ((AliConversionCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter1->Phi(),fEventPlaneAngle,kFALSE)){
-
- if(particle->GetPdgCode() == 111){
- hMCPi0InAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Pi0 with gamma in acc
- } else if(particle->GetPdgCode() == 221){
- hMCEtaInAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Eta with gamma in acc
- }
- }
- }
- }
- }
+ // Loop over all primary MC particle
+ for(Int_t i = 0; i < fMCStack->GetNprimary(); i++) {
+ TParticle* particle = (TParticle *)fMCStack->Particle(i);
+ if (!particle) continue;
+
+ Int_t isMCFromMBHeader = -1;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
+ isMCFromMBHeader
+ = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent);
+ if(isMCFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
+ }
+
+ if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(particle->Phi(),fEventPlaneAngle,kFALSE)) continue;
+ if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(particle,fMCStack,kFALSE)){
+ hMCAllGammaPt[fiCut]->Fill(particle->Pt()); // All MC Gamma
+ if(particle->GetMother(0) >-1){ // Meson Decay Gamma
+ switch(fMCStack->Particle(particle->GetMother(0))->GetPdgCode()){
+ case 111: // Pi0
+ hMCDecayGammaPi0Pt[fiCut]->Fill(particle->Pt());
+ break;
+ case 113: // Rho0
+ hMCDecayGammaRhoPt[fiCut]->Fill(particle->Pt());
+ break;
+ case 221: // Eta
+ hMCDecayGammaEtaPt[fiCut]->Fill(particle->Pt());
+ break;
+ case 223: // Omega
+ hMCDecayGammaOmegaPt[fiCut]->Fill(particle->Pt());
+ break;
+ case 331: // Eta'
+ hMCDecayGammaEtapPt[fiCut]->Fill(particle->Pt());
+ break;
+ case 333: // Phi
+ hMCDecayGammaPhiPt[fiCut]->Fill(particle->Pt());
+ break;
+ case 3212: // Sigma
+ hMCDecayGammaSigmaPt[fiCut]->Fill(particle->Pt());
+ break;
+ }
+ }
+ }
+ if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(particle,fMCStack,kTRUE)){
+ hMCConvGammaPt[fiCut]->Fill(particle->Pt());
+ if (fDoPhotonQA > 0){
+ hMCConvGammaR[fiCut]->Fill(((TParticle*)fMCStack->Particle(particle->GetFirstDaughter()))->R());
+ hMCConvGammaEta[fiCut]->Fill(particle->Eta());
+ }
+ } // Converted MC Gamma
+ if(fDoMesonAnalysis){
+ if(particle->GetPdgCode() == 310 && fDoMesonQA > 0){
+ Double_t mesonY = 10.;
+ if(particle->Energy() - particle->Pz() == 0 || particle->Energy() + particle->Pz() == 0){
+ mesonY=10.-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
+ } else{
+ mesonY = 0.5*(TMath::Log((particle->Energy()+particle->Pz()) / (particle->Energy()-particle->Pz())))
+ -((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
+ }
+ Float_t weightedK0s= 1;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
+ if (particle->Pt()>0.005){
+ weightedK0s= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, fMCStack, fInputEvent);
+ //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
+ }
+ }
+ if (fMCStack->IsPhysicalPrimary(i)){
+ hMCK0sPt[fiCut]->Fill(particle->Pt(),weightedK0s);
+ hMCK0sWOWeightPt[fiCut]->Fill(particle->Pt());
+ hMCK0sPtY[fiCut]->Fill(particle->Pt(),mesonY,weightedK0s);
+ }
+ }
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
+ ->MesonIsSelectedMC(particle,fMCStack,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
+ TParticle* daughter0 = (TParticle*)fMCStack->Particle(particle->GetFirstDaughter());
+ TParticle* daughter1 = (TParticle*)fMCStack->Particle(particle->GetLastDaughter());
+
+ Float_t weighted= 1;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
+ if (particle->Pt()>0.005){
+ weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, fMCStack, fInputEvent);
+ // if(particle->GetPdgCode() == 221){
+ // cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
+ // }
+ }
+ }
+ Double_t mesonY = 10.;
+ if(particle->Energy() - particle->Pz() == 0 || particle->Energy() + particle->Pz() == 0){
+ mesonY=10.-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
+ } else {
+ mesonY = 0.5*(TMath::Log((particle->Energy()+particle->Pz()) / (particle->Energy()-particle->Pz())))
+ -((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift();
+ }
+ Double_t alpha = -1;
+ if (particle->GetPdgCode() == 111 || particle->GetPdgCode() == 221){
+ alpha = TMath::Abs((daughter0->Energy() - daughter1->Energy()))/(daughter0->Energy() + daughter1->Energy());
+ }
+
+ if(particle->GetPdgCode() == 111){
+ hMCPi0Pt[fiCut]->Fill(particle->Pt(),weighted); // All MC Pi0
+ hMCPi0WOWeightPt[fiCut]->Fill(particle->Pt());
+ if (fDoMesonQA > 0){
+ hMCPi0PtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
+ hMCPi0PtAlpha[fiCut]->Fill(particle->Pt(),alpha); // All MC Pi0
+ }
+ } else if(particle->GetPdgCode() == 221){
+ hMCEtaPt[fiCut]->Fill(particle->Pt(),weighted); // All MC Eta
+ hMCEtaWOWeightPt[fiCut]->Fill(particle->Pt());
+ if (fDoMesonQA > 0){
+ hMCEtaPtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0
+ hMCEtaPtAlpha[fiCut]->Fill(particle->Pt(),alpha); // All MC Pi0
+ }
+ }
+
+ // Check the acceptance for both gammas
+ if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(daughter0,fMCStack,kFALSE) &&
+ ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(daughter1,fMCStack,kFALSE) &&
+ ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter0->Phi(),fEventPlaneAngle,kFALSE) &&
+ ((AliConversionPhotonCuts*)fCutArray->At(fiCut))->InPlaneOutOfPlaneCut(daughter1->Phi(),fEventPlaneAngle,kFALSE)){
+
+ if(particle->GetPdgCode() == 111){
+ hMCPi0InAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Pi0 with gamma in acc
+ } else if(particle->GetPdgCode() == 221){
+ hMCEtaInAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Eta with gamma in acc
+ }
+ }
+ }
+ }
+ }
+
+ if (fDoMesonQA){
+ for(Int_t i = fMCStack->GetNprimary(); i < fMCStack->GetNtrack(); i++) {
+ TParticle* particle = (TParticle *)fMCStack->Particle(i);
+ if (!particle) continue;
+
+ Int_t isMCFromMBHeader = -1;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 0){
+ isMCFromMBHeader
+ = ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent);
+ if(isMCFromMBHeader == 0 && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetSignalRejection() != 3) continue;
+ }
+
+ if(fDoMesonAnalysis){
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelectedMC(particle,fMCStack,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
+ Float_t weighted= 1;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack, fInputEvent)){
+ if (particle->Pt()>0.005){
+ weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, fMCStack, fInputEvent);
+ // if(particle->GetPdgCode() == 221){
+ // cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
+ // }
+ }
+ }
+
+ if(particle->GetPdgCode() == 111){
+ Int_t pdgCode = ((TParticle*)fMCStack->Particle( particle->GetFirstMother() ))->GetPdgCode();
+ Int_t source = GetSourceClassification(111,pdgCode);
+ hMCSecPi0PtvsSource[fiCut]->Fill(particle->Pt(),source,weighted); // All MC Pi0
+ hMCSecPi0Source[fiCut]->Fill(pdgCode);
+ } else if(particle->GetPdgCode() == 221){
+ Int_t pdgCode = ((TParticle*)fMCStack->Particle( particle->GetFirstMother() ))->GetPdgCode();
+ hMCSecEtaPt[fiCut]->Fill(particle->Pt(),weighted); // All MC Pi0
+ hMCSecEtaSource[fiCut]->Fill(pdgCode);
+ }
+ }
+ }
+ }
+ }
}
+
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::CalculatePi0Candidates(){
- // Conversion Gammas
- if(fGammaCandidates->GetEntries()>1){
- for(Int_t firstGammaIndex=0;firstGammaIndex<fGammaCandidates->GetEntries()-1;firstGammaIndex++){
- AliAODConversionPhoton *gamma0=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(firstGammaIndex));
- if (gamma0==NULL) continue;
- for(Int_t secondGammaIndex=firstGammaIndex+1;secondGammaIndex<fGammaCandidates->GetEntries();secondGammaIndex++){
- AliAODConversionPhoton *gamma1=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(secondGammaIndex));
- //Check for same Electron ID
- if (gamma1==NULL) continue;
- if(gamma0->GetTrackLabelPositive() == gamma1->GetTrackLabelPositive() ||
- gamma0->GetTrackLabelNegative() == gamma1->GetTrackLabelNegative() ||
- gamma0->GetTrackLabelNegative() == gamma1->GetTrackLabelPositive() ||
- gamma0->GetTrackLabelPositive() == gamma1->GetTrackLabelNegative() ) continue;
-
- AliAODConversionMother *pi0cand = new AliAODConversionMother(gamma0,gamma1);
- pi0cand->SetLabels(firstGammaIndex,secondGammaIndex);
-
- pi0cand->CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
- if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
- ->MesonIsSelected(pi0cand,kTRUE,((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()))){
- hESDMotherInvMassPt[fiCut]->Fill(pi0cand->M(),pi0cand->Pt());
- if(pi0cand->GetAlpha()<0.1)
- hESDMotherInvMassEalpha[fiCut]->Fill(pi0cand->M(),pi0cand->E());
-
- if (fDoMesonQA > 0){
- if ( pi0cand->M() < 0.17){
- hESDMotherPi0PtY[fiCut]->Fill(pi0cand->Pt(),abs(pi0cand->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()));
- hESDMotherPi0PtAlpha[fiCut]->Fill(pi0cand->Pt(),pi0cand->GetAlpha());
- if (gamma0->Pt() < gamma1->Pt()){
- hESDMotherPi0YEtaLowPtGamma[fiCut]->Fill(abs(pi0cand->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),gamma0->Eta());
- hESDMotherPi0YEtaHighPtGamma[fiCut]->Fill(abs(pi0cand->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),gamma1->Eta());
- } else {
- hESDMotherPi0YEtaLowPtGamma[fiCut]->Fill(abs(pi0cand->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),gamma1->Eta());
- hESDMotherPi0YEtaHighPtGamma[fiCut]->Fill(abs(pi0cand->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),gamma0->Eta());
- }
- }
- if ( pi0cand->M() > 0.17 && pi0cand->M() < 0.7){
- hESDMotherEtaPtY[fiCut]->Fill(pi0cand->Pt(),abs(pi0cand->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()));
- hESDMotherEtaPtAlpha[fiCut]->Fill(pi0cand->Pt(),pi0cand->GetAlpha());
- if (gamma0->Pt() < gamma1->Pt()){
- hESDMotherEtaYEtaLowPtGamma[fiCut]->Fill(abs(pi0cand->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),gamma0->Eta());
- hESDMotherEtaYEtaHighPtGamma[fiCut]->Fill(abs(pi0cand->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),gamma1->Eta());
- } else {
- hESDMotherEtaYEtaLowPtGamma[fiCut]->Fill(abs(pi0cand->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),gamma1->Eta());
- hESDMotherEtaYEtaHighPtGamma[fiCut]->Fill(abs(pi0cand->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),gamma0->Eta());
- }
- }
- }
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->DoBGCalculation()){
- Int_t zbin = 0;
- Int_t mbin = 0;
-
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->BackgroundHandlerType() == 0){
- zbin = fBGHandler[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
- mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
- } else {
- mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
- }
- }
- else{
- zbin = fBGHandlerRP[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
- mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
- } else {
- mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
- }
- }
- Double_t sparesFill[4] = {pi0cand->M(),pi0cand->Pt(),(Double_t)zbin,(Double_t)mbin};
- sESDMotherInvMassPtZM[fiCut]->Fill(sparesFill,1);
- }
-
-
- if(fIsMC){
- if(fInputEvent->IsA()==AliESDEvent::Class())
- ProcessTrueMesonCandidates(pi0cand,gamma0,gamma1);
- if(fInputEvent->IsA()==AliAODEvent::Class())
- ProcessTrueMesonCandidatesAOD(pi0cand,gamma0,gamma1);
- }
- if (fDoMesonQA == 2){
- fInvMass = pi0cand->M();
- fPt = pi0cand->Pt();
- if (abs(gamma0->GetDCAzToPrimVtx()) < abs(gamma1->GetDCAzToPrimVtx())){
- fDCAzGammaMin = gamma0->GetDCAzToPrimVtx();
- fDCAzGammaMax = gamma1->GetDCAzToPrimVtx();
- } else {
- fDCAzGammaMin = gamma1->GetDCAzToPrimVtx();
- fDCAzGammaMax = gamma0->GetDCAzToPrimVtx();
- }
- iFlag = pi0cand->GetMesonQuality();
-// cout << "gamma 0: " << gamma0->GetV0Index()<< "\t" << gamma0->GetPx() << "\t" << gamma0->GetPy() << "\t" << gamma0->GetPz() << "\t" << endl;
-// cout << "gamma 1: " << gamma1->GetV0Index()<< "\t"<< gamma1->GetPx() << "\t" << gamma1->GetPy() << "\t" << gamma1->GetPz() << "\t" << endl;
-// cout << "pi0: "<<fInvMass << "\t" << fPt <<"\t" << fDCAzGammaMin << "\t" << fDCAzGammaMax << "\t" << (Int_t)iFlag << "\t" << (Int_t)iMesonMCInfo <<endl;
- if (fIsHeavyIon == 1 && fPt > 0.399 && fPt < 20. ) {
- if (fInvMass > 0.08 && fInvMass < 0.2) tESDMesonsInvMassPtDcazMinDcazMaxFlag[fiCut]->Fill();
- if ((fInvMass > 0.45 && fInvMass < 0.6) && (fPt > 0.999 && fPt < 20.) )tESDMesonsInvMassPtDcazMinDcazMaxFlag[fiCut]->Fill();
- } else if (fPt > 0.299 && fPt < 20. ) {
- if ( (fInvMass > 0.08 && fInvMass < 0.2) || (fInvMass > 0.45 && fInvMass < 0.6)) tESDMesonsInvMassPtDcazMinDcazMaxFlag[fiCut]->Fill();
- }
- }
- }
- delete pi0cand;
- pi0cand=0x0;
- }
- }
- }
+ // Conversion Gammas
+ if(fGammaCandidates->GetEntries()>1){
+ for(Int_t firstGammaIndex=0;firstGammaIndex<fGammaCandidates->GetEntries()-1;firstGammaIndex++){
+ AliAODConversionPhoton *gamma0=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(firstGammaIndex));
+ if (gamma0==NULL) continue;
+ for(Int_t secondGammaIndex=firstGammaIndex+1;secondGammaIndex<fGammaCandidates->GetEntries();secondGammaIndex++){
+ AliAODConversionPhoton *gamma1=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(secondGammaIndex));
+ //Check for same Electron ID
+ if (gamma1==NULL) continue;
+ if(gamma0->GetTrackLabelPositive() == gamma1->GetTrackLabelPositive() ||
+ gamma0->GetTrackLabelNegative() == gamma1->GetTrackLabelNegative() ||
+ gamma0->GetTrackLabelNegative() == gamma1->GetTrackLabelPositive() ||
+ gamma0->GetTrackLabelPositive() == gamma1->GetTrackLabelNegative() ) continue;
+
+ AliAODConversionMother *pi0cand = new AliAODConversionMother(gamma0,gamma1);
+ pi0cand->SetLabels(firstGammaIndex,secondGammaIndex);
+
+ pi0cand->CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
+ if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelected(pi0cand,kTRUE,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift()))){
+ hESDMotherInvMassPt[fiCut]->Fill(pi0cand->M(),pi0cand->Pt());
+ if(pi0cand->GetAlpha()<0.1) hESDMotherInvMassEalpha[fiCut]->Fill(pi0cand->M(),pi0cand->E());
+
+ if (fDoMesonQA > 0){
+ if ( pi0cand->M() > 0.05 && pi0cand->M() < 0.17){
+ hESDMotherPi0PtY[fiCut]->Fill(pi0cand->Pt(),pi0cand->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
+ hESDMotherPi0PtAlpha[fiCut]->Fill(pi0cand->Pt(),pi0cand->GetAlpha());
+ hESDMotherPi0PtOpenAngle[fiCut]->Fill(pi0cand->Pt(),pi0cand->GetOpeningAngle());
+
+ }
+ if ( pi0cand->M() > 0.45 && pi0cand->M() < 0.65){
+ hESDMotherEtaPtY[fiCut]->Fill(pi0cand->Pt(),pi0cand->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
+ hESDMotherEtaPtAlpha[fiCut]->Fill(pi0cand->Pt(),pi0cand->GetAlpha());
+ hESDMotherEtaPtOpenAngle[fiCut]->Fill(pi0cand->Pt(),pi0cand->GetOpeningAngle());
+ }
+ }
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->DoBGCalculation()){
+ Int_t zbin = 0;
+ Int_t mbin = 0;
+
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->BackgroundHandlerType() == 0){
+ zbin = fBGHandler[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
+ mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
+ } else {
+ mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
+ }
+ }
+ else{
+ zbin = fBGHandlerRP[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
+ mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
+ } else {
+ mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
+ }
+ }
+ Double_t sparesFill[4] = {pi0cand->M(),pi0cand->Pt(),(Double_t)zbin,(Double_t)mbin};
+ sESDMotherInvMassPtZM[fiCut]->Fill(sparesFill,1);
+ }
+
+
+ if(fIsMC){
+ if(fInputEvent->IsA()==AliESDEvent::Class())
+ ProcessTrueMesonCandidates(pi0cand,gamma0,gamma1);
+ if(fInputEvent->IsA()==AliAODEvent::Class())
+ ProcessTrueMesonCandidatesAOD(pi0cand,gamma0,gamma1);
+ }
+ if (fDoMesonQA == 2){
+ fInvMass = pi0cand->M();
+ fPt = pi0cand->Pt();
+ if (abs(gamma0->GetDCAzToPrimVtx()) < abs(gamma1->GetDCAzToPrimVtx())){
+ fDCAzGammaMin = gamma0->GetDCAzToPrimVtx();
+ fDCAzGammaMax = gamma1->GetDCAzToPrimVtx();
+ } else {
+ fDCAzGammaMin = gamma1->GetDCAzToPrimVtx();
+ fDCAzGammaMax = gamma0->GetDCAzToPrimVtx();
+ }
+ iFlag = pi0cand->GetMesonQuality();
+ // cout << "gamma 0: " << gamma0->GetV0Index()<< "\t" << gamma0->GetPx() << "\t" << gamma0->GetPy() << "\t" << gamma0->GetPz() << "\t" << endl;
+ // cout << "gamma 1: " << gamma1->GetV0Index()<< "\t"<< gamma1->GetPx() << "\t" << gamma1->GetPy() << "\t" << gamma1->GetPz() << "\t" << endl;
+ // cout << "pi0: "<<fInvMass << "\t" << fPt <<"\t" << fDCAzGammaMin << "\t" << fDCAzGammaMax << "\t" << (Int_t)iFlag << "\t" << (Int_t)iMesonMCInfo <<endl;
+ if (fIsHeavyIon == 1 && fPt > 0.399 && fPt < 20. ) {
+ if (fInvMass > 0.08 && fInvMass < 0.2) tESDMesonsInvMassPtDcazMinDcazMaxFlag[fiCut]->Fill();
+ if ((fInvMass > 0.45 && fInvMass < 0.6) && (fPt > 0.999 && fPt < 20.) )tESDMesonsInvMassPtDcazMinDcazMaxFlag[fiCut]->Fill();
+ } else if (fPt > 0.299 && fPt < 20. ) {
+ if ( (fInvMass > 0.08 && fInvMass < 0.2) || (fInvMass > 0.45 && fInvMass < 0.6)) tESDMesonsInvMassPtDcazMinDcazMaxFlag[fiCut]->Fill();
+ }
+ }
+ }
+ delete pi0cand;
+ pi0cand=0x0;
+ }
+ }
+ }
}
+
//______________________________________________________________________
void AliAnalysisTaskGammaConvV1::ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1)
{
- // Process True Mesons
- AliStack *MCStack = fMCEvent->Stack();
- iMesonMCInfo = 0;
- if(TrueGammaCandidate0->GetV0Index()<fInputEvent->GetNumberOfV0s()){
- Bool_t isTruePi0 = kFALSE;
- Bool_t isTrueEta = kFALSE;
- Bool_t isTruePi0Dalitz = kFALSE;
- Bool_t isTrueEtaDalitz = kFALSE;
- Bool_t gamma0DalitzCand = kFALSE;
- Bool_t gamma1DalitzCand = kFALSE;
- Int_t gamma0MCLabel = TrueGammaCandidate0->GetMCParticleLabel(MCStack);
- Int_t gamma0MotherLabel = -1;
- if(gamma0MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother
- // Daughters Gamma 0
- TParticle * negativeMC = (TParticle*)TrueGammaCandidate0->GetNegativeMCDaughter(MCStack);
- TParticle * positiveMC = (TParticle*)TrueGammaCandidate0->GetPositiveMCDaughter(MCStack);
- TParticle * gammaMC0 = (TParticle*)MCStack->Particle(gamma0MCLabel);
- if(abs(negativeMC->GetPdgCode())==11 && abs(positiveMC->GetPdgCode())==11){ // Electrons ...
- if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){ // ... From Conversion ...
- if(gammaMC0->GetPdgCode() == 22){ // ... with Gamma Mother
- gamma0MotherLabel=gammaMC0->GetFirstMother();
- }
- }
- if(gammaMC0->GetPdgCode() ==111){ // Dalitz candidate
- gamma0DalitzCand = kTRUE;
- gamma0MotherLabel=-111;
- }
- if(gammaMC0->GetPdgCode() ==221){ // Dalitz candidate
- gamma0DalitzCand = kTRUE;
- gamma0MotherLabel=-221;
- }
- }
- }
- if(TrueGammaCandidate1->GetV0Index()<fInputEvent->GetNumberOfV0s()){
- Int_t gamma1MCLabel = TrueGammaCandidate1->GetMCParticleLabel(MCStack);
- Int_t gamma1MotherLabel = -1;
- if(gamma1MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother
- // Daughters Gamma 1
- TParticle * negativeMC = (TParticle*)TrueGammaCandidate1->GetNegativeMCDaughter(MCStack);
- TParticle * positiveMC = (TParticle*)TrueGammaCandidate1->GetPositiveMCDaughter(MCStack);
- TParticle * gammaMC1 = (TParticle*)MCStack->Particle(gamma1MCLabel);
- if(abs(negativeMC->GetPdgCode())==11 && abs(positiveMC->GetPdgCode())==11){ // Electrons ...
- if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){ // ... From Conversion ...
- if(gammaMC1->GetPdgCode() == 22){ // ... with Gamma Mother
- gamma1MotherLabel=gammaMC1->GetFirstMother();
- }
- }
- if(gammaMC1->GetPdgCode() ==111 ){ // Dalitz candidate
- gamma1DalitzCand = kTRUE;
- gamma1MotherLabel=-111;
- }
- if(gammaMC1->GetPdgCode() ==221){ // Dalitz candidate
- gamma1DalitzCand = kTRUE;
- gamma1MotherLabel=-221;
- }
- }
- }
- if(gamma0MotherLabel>=0 && gamma0MotherLabel==gamma1MotherLabel){
- if(((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetPdgCode() == 111){
- isTruePi0=kTRUE;
- }
- if(((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetPdgCode() == 221){
- isTrueEta=kTRUE;
- }
- }
-
- //Identify Dalitz candidate
- if (gamma1DalitzCand || gamma0DalitzCand){
- if (gamma0DalitzCand && gamma0MCLabel >=0 && gamma0MCLabel==gamma1MotherLabel){
- if (gamma0MotherLabel == -111) isTruePi0Dalitz = kTRUE;
- if (gamma0MotherLabel == -221) isTrueEtaDalitz = kTRUE;
- }
- if (gamma1DalitzCand && gamma1MCLabel >=0 && gamma1MCLabel==gamma0MotherLabel){
- if (gamma1MotherLabel == -111) isTruePi0Dalitz = kTRUE;
- if (gamma1MotherLabel == -221) isTrueEtaDalitz = kTRUE;
- }
- }
-
-
- if(isTruePi0 || isTrueEta){// True Pion or Eta
- hESDTrueMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- if (fDoMesonQA > 0){
- if (isTruePi0){
- hESDTruePi0PtY[fiCut]->Fill(Pi0Candidate->Pt(),abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()));
- hESDTruePi0PtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
- if (TrueGammaCandidate0->Pt() < TrueGammaCandidate1->Pt()){
- hESDMotherPi0YEtaLowPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate0->Eta());
- hESDMotherPi0YEtaHighPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate1->Eta());
- } else {
- hESDMotherPi0YEtaLowPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate1->Eta());
- hESDMotherPi0YEtaHighPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate0->Eta());
- }
-
- } else if (isTrueEta){
- hESDTrueEtaPtY[fiCut]->Fill(Pi0Candidate->Pt(),abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()));
- hESDTrueEtaPtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
- if (TrueGammaCandidate0->Pt() < TrueGammaCandidate1->Pt()){
- hESDMotherEtaYEtaLowPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate0->Eta());
- hESDMotherEtaYEtaHighPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate1->Eta());
- } else {
- hESDMotherEtaYEtaLowPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate1->Eta());
- hESDMotherEtaYEtaHighPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate0->Eta());
- }
- }
- }
- if(gamma0MotherLabel >= MCStack->GetNprimary()){ // Secondary Meson
- Int_t secMotherLabel = ((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetMother(0);
- Float_t weightedSec= 1;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(secMotherLabel, fMCStack, fInputEvent) && MCStack->Particle(secMotherLabel)->GetPdgCode()==310){
- weightedSec= ((AliConversionCuts*)fCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),secMotherLabel, fMCStack, fInputEvent)/2.; //invariant mass is additive thus the weight for the daughters has to be devide by two for the K0s at a certain pt
- //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
- }
- hESDTrueSecondaryMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
- iMesonMCInfo = 2;
- if (secMotherLabel >-1){
- if(MCStack->Particle(secMotherLabel)->GetPdgCode()==310){
- iMesonMCInfo = 4;
- hESDTrueSecondaryMotherFromK0sInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
- if (fDoMesonQA > 0)hESDTrueK0sWithPi0DaughterMCPt[fiCut]
- ->Fill(MCStack->Particle(secMotherLabel)->Pt());
- }
- if(MCStack->Particle(secMotherLabel)->GetPdgCode()==221){
- iMesonMCInfo = 3;
- hESDTrueSecondaryMotherFromEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
- if (fDoMesonQA > 0)hESDTrueEtaWithPi0DaughterMCPt[fiCut]
- ->Fill(MCStack->Particle(secMotherLabel)->Pt());
- }
- }
- }else{ // Only primary pi0 for efficiency calculation
- iMesonMCInfo = 6;
- Float_t weighted= 1;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(gamma1MotherLabel, fMCStack, fInputEvent)){
- if (((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt()>0.005){
- weighted= ((AliConversionCuts*)fCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),gamma1MotherLabel, fMCStack, fInputEvent);
-// cout << "rec \t " <<gamma1MotherLabel << "\t" << weighted << endl;
- }
- }
- hESDTruePrimaryMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
- hESDTruePrimaryMotherW0WeightingInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- pESDTruePrimaryMotherWeightsInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
-
-
- if (fDoMesonQA > 0){
- if(isTruePi0){ // Only primary pi0 for resolution
- hESDTruePrimaryPi0MCPtResolPt[fiCut]->Fill(((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),(Pi0Candidate->Pt()-((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt())/((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),weighted);
- }
- if (isTrueEta){ // Only primary eta for resolution
- hESDTruePrimaryEtaMCPtResolPt[fiCut]->Fill(((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),(Pi0Candidate->Pt()-((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt())/((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),weighted);
- }
- }
- }
- } else if(!isTruePi0 && !isTrueEta){ // Background
- if (fDoMesonQA > 0){
- if(gamma0MotherLabel>-1 && gamma1MotherLabel>-1){ // Both Tracks are Photons and have a mother but not Pi0 or Eta
- hESDTrueBckGGInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- iMesonMCInfo = 1;
- } else { // No photon or without mother
- hESDTrueBckContInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- }
- }
- if( isTruePi0Dalitz || isTrueEtaDalitz ){
- // Dalitz
- iMesonMCInfo = 5;
- hESDTrueMotherDalitzInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- } else if (gamma0DalitzCand || gamma1DalitzCand){
- if (fDoMesonQA > 0)hESDTrueBckContInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- }
- }
- }
- }
+ // Process True Mesons
+ AliStack *MCStack = fMCEvent->Stack();
+ iMesonMCInfo = 0;
+ if(TrueGammaCandidate0->GetV0Index()<fInputEvent->GetNumberOfV0s()){
+ Bool_t isTruePi0 = kFALSE;
+ Bool_t isTrueEta = kFALSE;
+ Bool_t isTruePi0Dalitz = kFALSE;
+ Bool_t isTrueEtaDalitz = kFALSE;
+ Bool_t gamma0DalitzCand = kFALSE;
+ Bool_t gamma1DalitzCand = kFALSE;
+ Int_t gamma0MCLabel = TrueGammaCandidate0->GetMCParticleLabel(MCStack);
+ Int_t gamma0MotherLabel = -1;
+ if(gamma0MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother
+ // Daughters Gamma 0
+ TParticle * negativeMC = (TParticle*)TrueGammaCandidate0->GetNegativeMCDaughter(MCStack);
+ TParticle * positiveMC = (TParticle*)TrueGammaCandidate0->GetPositiveMCDaughter(MCStack);
+ TParticle * gammaMC0 = (TParticle*)MCStack->Particle(gamma0MCLabel);
+ if(abs(negativeMC->GetPdgCode())==11 && abs(positiveMC->GetPdgCode())==11){ // Electrons ...
+ if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){ // ... From Conversion ...
+ if(gammaMC0->GetPdgCode() == 22){ // ... with Gamma Mother
+ gamma0MotherLabel=gammaMC0->GetFirstMother();
+ }
+ }
+ if(gammaMC0->GetPdgCode() ==111){ // Dalitz candidate
+ gamma0DalitzCand = kTRUE;
+ gamma0MotherLabel=-111;
+ }
+ if(gammaMC0->GetPdgCode() ==221){ // Dalitz candidate
+ gamma0DalitzCand = kTRUE;
+ gamma0MotherLabel=-221;
+ }
+ }
+ }
+ if(TrueGammaCandidate1->GetV0Index()<fInputEvent->GetNumberOfV0s()){
+ Int_t gamma1MCLabel = TrueGammaCandidate1->GetMCParticleLabel(MCStack);
+ Int_t gamma1MotherLabel = -1;
+ if(gamma1MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother
+ // Daughters Gamma 1
+ TParticle * negativeMC = (TParticle*)TrueGammaCandidate1->GetNegativeMCDaughter(MCStack);
+ TParticle * positiveMC = (TParticle*)TrueGammaCandidate1->GetPositiveMCDaughter(MCStack);
+ TParticle * gammaMC1 = (TParticle*)MCStack->Particle(gamma1MCLabel);
+ if(abs(negativeMC->GetPdgCode())==11 && abs(positiveMC->GetPdgCode())==11){ // Electrons ...
+ if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){ // ... From Conversion ...
+ if(gammaMC1->GetPdgCode() == 22){ // ... with Gamma Mother
+ gamma1MotherLabel=gammaMC1->GetFirstMother();
+ }
+ }
+ if(gammaMC1->GetPdgCode() ==111 ){ // Dalitz candidate
+ gamma1DalitzCand = kTRUE;
+ gamma1MotherLabel=-111;
+ }
+ if(gammaMC1->GetPdgCode() ==221){ // Dalitz candidate
+ gamma1DalitzCand = kTRUE;
+ gamma1MotherLabel=-221;
+ }
+ }
+ }
+ if(gamma0MotherLabel>=0 && gamma0MotherLabel==gamma1MotherLabel){
+ if(((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetPdgCode() == 111){
+ isTruePi0=kTRUE;
+ }
+ if(((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetPdgCode() == 221){
+ isTrueEta=kTRUE;
+ }
+ }
+
+ //Identify Dalitz candidate
+ if (gamma1DalitzCand || gamma0DalitzCand){
+ if (gamma0DalitzCand && gamma0MCLabel >=0 && gamma0MCLabel==gamma1MotherLabel){
+ if (gamma0MotherLabel == -111) isTruePi0Dalitz = kTRUE;
+ if (gamma0MotherLabel == -221) isTrueEtaDalitz = kTRUE;
+ }
+ if (gamma1DalitzCand && gamma1MCLabel >=0 && gamma1MCLabel==gamma0MotherLabel){
+ if (gamma1MotherLabel == -111) isTruePi0Dalitz = kTRUE;
+ if (gamma1MotherLabel == -221) isTrueEtaDalitz = kTRUE;
+ }
+ }
+
+
+ if(isTruePi0 || isTrueEta){// True Pion or Eta
+ hESDTrueMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ if (fDoMesonQA > 0){
+ if (isTruePi0){
+ if ( Pi0Candidate->M() > 0.05 && Pi0Candidate->M() < 0.17){
+ hESDTruePi0PtY[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
+ hESDTruePi0PtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
+ hESDTruePi0PtOpenAngle[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetOpeningAngle());
+ }
+ } else if (isTrueEta){
+ if ( Pi0Candidate->M() > 0.45 && Pi0Candidate->M() < 0.65){
+ hESDTrueEtaPtY[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
+ hESDTrueEtaPtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
+ hESDTrueEtaPtOpenAngle[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetOpeningAngle());
+ }
+ }
+ }
+ if(gamma0MotherLabel >= MCStack->GetNprimary()){ // Secondary Meson
+ Int_t secMotherLabel = ((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetMother(0);
+ Float_t weightedSec= 1;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(secMotherLabel, fMCStack, fInputEvent) && MCStack->Particle(secMotherLabel)->GetPdgCode()==310){
+ weightedSec= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),secMotherLabel, fMCStack, fInputEvent)/2.; //invariant mass is additive thus the weight for the daughters has to be devide by two for the K0s at a certain pt
+ //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
+ }
+ hESDTrueSecondaryMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
+ iMesonMCInfo = 2;
+ if (secMotherLabel >-1){
+ if(MCStack->Particle(secMotherLabel)->GetPdgCode()==310){
+ iMesonMCInfo = 4;
+ hESDTrueSecondaryMotherFromK0sInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
+ if (fDoMesonQA > 0)hESDTrueK0sWithPi0DaughterMCPt[fiCut]
+ ->Fill(MCStack->Particle(secMotherLabel)->Pt());
+ }
+ if(MCStack->Particle(secMotherLabel)->GetPdgCode()==221){
+ iMesonMCInfo = 3;
+ hESDTrueSecondaryMotherFromEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
+ if (fDoMesonQA > 0)hESDTrueEtaWithPi0DaughterMCPt[fiCut]
+ ->Fill(MCStack->Particle(secMotherLabel)->Pt());
+ }
+ if(MCStack->Particle(secMotherLabel)->GetPdgCode()==3122){
+ iMesonMCInfo = 7;
+ hESDTrueSecondaryMotherFromLambdaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
+ if (fDoMesonQA > 0)hESDTrueLambdaWithPi0DaughterMCPt[fiCut]
+ ->Fill(MCStack->Particle(secMotherLabel)->Pt());
+ }
+ }
+ } else { // Only primary pi0 for efficiency calculation
+ iMesonMCInfo = 6;
+ Float_t weighted= 1;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(gamma1MotherLabel, fMCStack, fInputEvent)){
+ if (((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt()>0.005){
+ weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),gamma1MotherLabel, fMCStack, fInputEvent);
+ // cout << "rec \t " <<gamma1MotherLabel << "\t" << weighted << endl;
+ }
+ }
+ hESDTruePrimaryMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
+ hESDTruePrimaryMotherW0WeightingInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ pESDTruePrimaryMotherWeightsInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
+
+
+ if (fDoMesonQA > 0){
+ if(isTruePi0){ // Only primary pi0 for resolution
+ hESDTruePrimaryPi0MCPtResolPt[fiCut]->Fill(((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),(Pi0Candidate->Pt()-((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt())/((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),weighted);
+ }
+ if (isTrueEta){ // Only primary eta for resolution
+ hESDTruePrimaryEtaMCPtResolPt[fiCut]->Fill(((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),(Pi0Candidate->Pt()-((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt())/((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),weighted);
+ }
+ }
+ }
+ } else if(!isTruePi0 && !isTrueEta){ // Background
+ if (fDoMesonQA > 0){
+ if(gamma0MotherLabel>-1 && gamma1MotherLabel>-1){ // Both Tracks are Photons and have a mother but not Pi0 or Eta
+ hESDTrueBckGGInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ iMesonMCInfo = 1;
+ } else { // No photon or without mother
+ hESDTrueBckContInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ }
+ }
+ if( isTruePi0Dalitz || isTrueEtaDalitz ){
+ // Dalitz
+ iMesonMCInfo = 5;
+ hESDTrueMotherDalitzInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ } else if (gamma0DalitzCand || gamma1DalitzCand){
+ if (fDoMesonQA > 0)hESDTrueBckContInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ }
+ }
+ }
+ }
}
//______________________________________________________________________
void AliAnalysisTaskGammaConvV1::ProcessTrueMesonCandidatesAOD(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1)
{
- // Process True Mesons
- TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
- Bool_t isTruePi0 = kFALSE;
- Bool_t isTrueEta = kFALSE;
- Bool_t isTruePi0Dalitz = kFALSE;
- Bool_t isTrueEtaDalitz = kFALSE;
- Bool_t gamma0DalitzCand = kFALSE;
- Bool_t gamma1DalitzCand = kFALSE;
+ // Process True Mesons
+ TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
+ Bool_t isTruePi0 = kFALSE;
+ Bool_t isTrueEta = kFALSE;
+ Bool_t isTruePi0Dalitz = kFALSE;
+ Bool_t isTrueEtaDalitz = kFALSE;
+ Bool_t gamma0DalitzCand = kFALSE;
+ Bool_t gamma1DalitzCand = kFALSE;
- AliAODMCParticle *positiveMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(TrueGammaCandidate0->GetMCLabelPositive()));
- AliAODMCParticle *negativeMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(TrueGammaCandidate0->GetMCLabelNegative()));
-
- iMesonMCInfo = 0;
- Int_t gamma0MCLabel = -1;
- Int_t gamma0MotherLabel = -1;
- if(!positiveMC||!negativeMC)
- return;
-
- if(positiveMC->GetMother()>-1&&(negativeMC->GetMother() == positiveMC->GetMother())){
- gamma0MCLabel = positiveMC->GetMother();
- }
-
- if(gamma0MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother
- // Daughters Gamma 0
- AliAODMCParticle * gammaMC0 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0MCLabel));
- if(abs(negativeMC->GetPdgCode())==11 && abs(positiveMC->GetPdgCode())==11){ // Electrons ...
- if(((positiveMC->GetMCProcessCode())) == 5 && ((negativeMC->GetMCProcessCode())) == 5){ // ... From Conversion ...
- if(gammaMC0->GetPdgCode() == 22){ // ... with Gamma Mother
- gamma0MotherLabel=gammaMC0->GetMother();
- }
- }
- if(gammaMC0->GetPdgCode() ==111){ // Dalitz candidate
- gamma0DalitzCand = kTRUE;
- gamma0MotherLabel=-111;
- }
- if(gammaMC0->GetPdgCode() ==221){ // Dalitz candidate
- gamma0DalitzCand = kTRUE;
- gamma0MotherLabel=-221;
- }
- }
- }
- positiveMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(TrueGammaCandidate1->GetMCLabelPositive()));
- negativeMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(TrueGammaCandidate1->GetMCLabelNegative()));
-
- Int_t gamma1MCLabel = -1;
- Int_t gamma1MotherLabel = -1;
- if(!positiveMC||!negativeMC)
- return;
-
- if(positiveMC->GetMother()>-1&&(negativeMC->GetMother() == positiveMC->GetMother())){
- gamma1MCLabel = positiveMC->GetMother();
- }
- if(gamma1MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother
- // Daughters Gamma 1
- AliAODMCParticle * gammaMC1 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MCLabel));
- if(abs(negativeMC->GetPdgCode())==11 && abs(positiveMC->GetPdgCode())==11){ // Electrons ...
- if(((positiveMC->GetMCProcessCode())) == 5 && ((negativeMC->GetMCProcessCode())) == 5){ // ... From Conversion ...
- if(gammaMC1->GetPdgCode() == 22){ // ... with Gamma Mother
- gamma1MotherLabel=gammaMC1->GetMother();
- }
- }
- if(gammaMC1->GetPdgCode() ==111 ){ // Dalitz candidate
- gamma1DalitzCand = kTRUE;
- gamma1MotherLabel=-111;
- }
- if(gammaMC1->GetPdgCode() ==221){ // Dalitz candidate
- gamma1DalitzCand = kTRUE;
- gamma1MotherLabel=-221;
- }
- }
- }
- if(gamma0MotherLabel>=0 && gamma0MotherLabel==gamma1MotherLabel){
- if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->GetPdgCode() == 111){
- isTruePi0=kTRUE;
- }
- if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->GetPdgCode() == 221){
- isTrueEta=kTRUE;
- }
- }
-
- //Identify Dalitz candidate
- if (gamma1DalitzCand || gamma0DalitzCand){
- if (gamma0DalitzCand && gamma0MCLabel >=0 && gamma0MCLabel==gamma1MotherLabel){
- if (gamma0MotherLabel == -111) isTruePi0Dalitz = kTRUE;
- if (gamma0MotherLabel == -221) isTrueEtaDalitz = kTRUE;
- }
- if (gamma1DalitzCand && gamma1MCLabel >=0 && gamma1MCLabel==gamma0MotherLabel){
- if (gamma1MotherLabel == -111) isTruePi0Dalitz = kTRUE;
- if (gamma1MotherLabel == -221) isTrueEtaDalitz = kTRUE;
- }
- }
-
- if(isTruePi0 || isTrueEta){// True Pion or Eta
- hESDTrueMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- if (fDoMesonQA > 0){
- if (isTruePi0){
- hESDTruePi0PtY[fiCut]->Fill(Pi0Candidate->Pt(),abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()));
- hESDTruePi0PtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
- if (TrueGammaCandidate0->Pt() < TrueGammaCandidate1->Pt()){
- hESDMotherPi0YEtaLowPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate0->Eta());
- hESDMotherPi0YEtaHighPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate1->Eta());
- } else {
- hESDMotherPi0YEtaLowPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate1->Eta());
- hESDMotherPi0YEtaHighPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate0->Eta());
- }
- } else if (isTrueEta){
- hESDTrueEtaPtY[fiCut]->Fill(Pi0Candidate->Pt(),abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()));
- hESDTrueEtaPtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
- if (TrueGammaCandidate0->Pt() < TrueGammaCandidate1->Pt()){
- hESDMotherEtaYEtaLowPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate0->Eta());
- hESDMotherEtaYEtaHighPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate1->Eta());
- } else {
- hESDMotherEtaYEtaLowPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate1->Eta());
- hESDMotherEtaYEtaHighPtGamma[fiCut]->Fill(abs(Pi0Candidate->Rapidity()-((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()),TrueGammaCandidate0->Eta());
- }
-
- }
- }
- if(!(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0MotherLabel))->IsPrimary())){ // Secondary Meson
- Int_t secMotherLabel = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->GetMother();
- Float_t weightedSec= 1;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(secMotherLabel, 0x0, fInputEvent) && static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==310){
- weightedSec= ((AliConversionCuts*)fCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),secMotherLabel, 0x0, fInputEvent)/2.; //invariant mass is additive thus the weight for the daughters has to be devide by two for the K0s at a certain pt
- //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
- }
- hESDTrueSecondaryMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
- iMesonMCInfo = 2;
- if (secMotherLabel >-1){
- if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==310){
- iMesonMCInfo = 4;
- hESDTrueSecondaryMotherFromK0sInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
- if (fDoMesonQA > 0)hESDTrueK0sWithPi0DaughterMCPt[fiCut]
- ->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->Pt());
- }
- if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==221){
- iMesonMCInfo = 3;
- hESDTrueSecondaryMotherFromEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
- if (fDoMesonQA > 0)hESDTrueEtaWithPi0DaughterMCPt[fiCut]
- ->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->Pt());
- }
- }
- }else{ // Only primary pi0 for efficiency calculation
- Float_t weighted= 1;
- iMesonMCInfo = 6;
- if(((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(gamma1MotherLabel, 0x0, fInputEvent)){
- if (static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt()>0.005){
- weighted= ((AliConversionCuts*)fCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),gamma1MotherLabel, 0x0, fInputEvent);
- // cout << "rec \t " <<gamma1MotherLabel << "\t" << weighted << endl;
- }
- }
- hESDTruePrimaryMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
- hESDTruePrimaryMotherW0WeightingInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- pESDTruePrimaryMotherWeightsInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
-
- if (fDoMesonQA > 0){
- if(isTruePi0){ // Only primary pi0 for resolution
- hESDTruePrimaryPi0MCPtResolPt[fiCut]->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),
- (Pi0Candidate->Pt()-static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt())/static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),weighted);
-
- }
- if (isTrueEta){ // Only primary eta for resolution
- hESDTruePrimaryEtaMCPtResolPt[fiCut]->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),
- (Pi0Candidate->Pt()-static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt())/static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),weighted);
- }
- }
- }
- } else if(!isTruePi0 && !isTrueEta) { // Background
- if (fDoMesonQA > 0){
- if(gamma0MotherLabel>-1 && gamma1MotherLabel>-1){ // Both Tracks are Photons and have a mother but not Pi0 or Eta
- hESDTrueBckGGInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- iMesonMCInfo = 1;
- } else { // No photon or without mother
- hESDTrueBckContInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- }
- }
- if( isTruePi0Dalitz || isTrueEtaDalitz ){
- // Dalitz
- iMesonMCInfo = 5;
- hESDTrueMotherDalitzInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- } else if (gamma0DalitzCand || gamma1DalitzCand){
- if (fDoMesonQA > 0)hESDTrueBckContInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
- }
- }
+ if (AODMCTrackArray!=NULL && TrueGammaCandidate0 != NULL){
+ AliAODMCParticle *positiveMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(TrueGammaCandidate0->GetMCLabelPositive()));
+ AliAODMCParticle *negativeMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(TrueGammaCandidate0->GetMCLabelNegative()));
+
+ iMesonMCInfo = 0;
+ Int_t gamma0MCLabel = -1;
+ Int_t gamma0MotherLabel = -1;
+ if(!positiveMC||!negativeMC)
+ return;
+
+ if(positiveMC->GetMother()>-1&&(negativeMC->GetMother() == positiveMC->GetMother())){
+ gamma0MCLabel = positiveMC->GetMother();
+ }
+
+ if(gamma0MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother
+ // Daughters Gamma 0
+ AliAODMCParticle * gammaMC0 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0MCLabel));
+ if(abs(negativeMC->GetPdgCode())==11 && abs(positiveMC->GetPdgCode())==11){ // Electrons ...
+ if(((positiveMC->GetMCProcessCode())) == 5 && ((negativeMC->GetMCProcessCode())) == 5){ // ... From Conversion ...
+ if(gammaMC0->GetPdgCode() == 22){ // ... with Gamma Mother
+ gamma0MotherLabel=gammaMC0->GetMother();
+ }
+ }
+ if(gammaMC0->GetPdgCode() ==111){ // Dalitz candidate
+ gamma0DalitzCand = kTRUE;
+ gamma0MotherLabel=-111;
+ }
+ if(gammaMC0->GetPdgCode() ==221){ // Dalitz candidate
+ gamma0DalitzCand = kTRUE;
+ gamma0MotherLabel=-221;
+ }
+ }
+ }
+ positiveMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(TrueGammaCandidate1->GetMCLabelPositive()));
+ negativeMC = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(TrueGammaCandidate1->GetMCLabelNegative()));
+
+ Int_t gamma1MCLabel = -1;
+ Int_t gamma1MotherLabel = -1;
+ if(!positiveMC||!negativeMC)
+ return;
+
+ if(positiveMC->GetMother()>-1&&(negativeMC->GetMother() == positiveMC->GetMother())){
+ gamma1MCLabel = positiveMC->GetMother();
+ }
+ if(gamma1MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother
+ // Daughters Gamma 1
+ AliAODMCParticle * gammaMC1 = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MCLabel));
+ if(abs(negativeMC->GetPdgCode())==11 && abs(positiveMC->GetPdgCode())==11){ // Electrons ...
+ if(((positiveMC->GetMCProcessCode())) == 5 && ((negativeMC->GetMCProcessCode())) == 5){ // ... From Conversion ...
+ if(gammaMC1->GetPdgCode() == 22){ // ... with Gamma Mother
+ gamma1MotherLabel=gammaMC1->GetMother();
+ }
+ }
+ if(gammaMC1->GetPdgCode() ==111 ){ // Dalitz candidate
+ gamma1DalitzCand = kTRUE;
+ gamma1MotherLabel=-111;
+ }
+ if(gammaMC1->GetPdgCode() ==221){ // Dalitz candidate
+ gamma1DalitzCand = kTRUE;
+ gamma1MotherLabel=-221;
+ }
+ }
+ }
+ if(gamma0MotherLabel>=0 && gamma0MotherLabel==gamma1MotherLabel){
+ if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->GetPdgCode() == 111){
+ isTruePi0=kTRUE;
+ }
+ if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->GetPdgCode() == 221){
+ isTrueEta=kTRUE;
+ }
+ }
+
+ //Identify Dalitz candidate
+ if (gamma1DalitzCand || gamma0DalitzCand){
+ if (gamma0DalitzCand && gamma0MCLabel >=0 && gamma0MCLabel==gamma1MotherLabel){
+ if (gamma0MotherLabel == -111) isTruePi0Dalitz = kTRUE;
+ if (gamma0MotherLabel == -221) isTrueEtaDalitz = kTRUE;
+ }
+ if (gamma1DalitzCand && gamma1MCLabel >=0 && gamma1MCLabel==gamma0MotherLabel){
+ if (gamma1MotherLabel == -111) isTruePi0Dalitz = kTRUE;
+ if (gamma1MotherLabel == -221) isTrueEtaDalitz = kTRUE;
+ }
+ }
+
+ if(isTruePi0 || isTrueEta){// True Pion or Eta
+ hESDTrueMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ if (fDoMesonQA > 0){
+ if (isTruePi0){
+ if ( Pi0Candidate->M() > 0.05 && Pi0Candidate->M() < 0.17){
+ hESDTruePi0PtY[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
+ hESDTruePi0PtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
+ hESDTruePi0PtOpenAngle[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetOpeningAngle());
+ }
+ } else if (isTrueEta){
+ if ( Pi0Candidate->M() > 0.45 && Pi0Candidate->M() < 0.65){
+ hESDTrueEtaPtY[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->Rapidity()-((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift());
+ hESDTrueEtaPtAlpha[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetAlpha());
+ hESDTrueEtaPtOpenAngle[fiCut]->Fill(Pi0Candidate->Pt(),Pi0Candidate->GetOpeningAngle());
+ }
+ }
+ }
+ if(!(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma0MotherLabel))->IsPrimary())){ // Secondary Meson
+ Int_t secMotherLabel = static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->GetMother();
+ Float_t weightedSec= 1;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(secMotherLabel, 0x0, fInputEvent) && static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==310){
+ weightedSec= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),secMotherLabel, 0x0, fInputEvent)/2.; //invariant mass is additive thus the weight for the daughters has to be devide by two for the K0s at a certain pt
+ //cout << "MC input \t"<<i << "\t" << particle->Pt()<<"\t"<<weighted << endl;
+ }
+ hESDTrueSecondaryMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
+ iMesonMCInfo = 2;
+ if (secMotherLabel >-1){
+ if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==310){
+ iMesonMCInfo = 4;
+ hESDTrueSecondaryMotherFromK0sInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
+ if (fDoMesonQA > 0)hESDTrueK0sWithPi0DaughterMCPt[fiCut]
+ ->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->Pt());
+ }
+ if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==221){
+ iMesonMCInfo = 3;
+ hESDTrueSecondaryMotherFromEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
+ if (fDoMesonQA > 0)hESDTrueEtaWithPi0DaughterMCPt[fiCut]
+ ->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->Pt());
+ }
+ if(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==3122){
+ iMesonMCInfo = 7;
+ hESDTrueSecondaryMotherFromLambdaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);
+ if (fDoMesonQA > 0)hESDTrueLambdaWithPi0DaughterMCPt[fiCut]
+ ->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(secMotherLabel))->Pt());
+ }
+ }
+ }else{ // Only primary pi0 for efficiency calculation
+ Float_t weighted= 1;
+ iMesonMCInfo = 6;
+ if(((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(gamma1MotherLabel, 0x0, fInputEvent)){
+ if (static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt()>0.005){
+ weighted= ((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),gamma1MotherLabel, 0x0, fInputEvent);
+ // cout << "rec \t " <<gamma1MotherLabel << "\t" << weighted << endl;
+ }
+ }
+ hESDTruePrimaryMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
+ hESDTruePrimaryMotherW0WeightingInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ pESDTruePrimaryMotherWeightsInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted);
+
+ if (fDoMesonQA > 0){
+ if(isTruePi0){ // Only primary pi0 for resolution
+ hESDTruePrimaryPi0MCPtResolPt[fiCut]->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),
+ (Pi0Candidate->Pt()-static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt())/static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),weighted);
+
+ }
+ if (isTrueEta){ // Only primary eta for resolution
+ hESDTruePrimaryEtaMCPtResolPt[fiCut]->Fill(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),
+ (Pi0Candidate->Pt()-static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt())/static_cast<AliAODMCParticle*>(AODMCTrackArray->At(gamma1MotherLabel))->Pt(),weighted);
+ }
+ }
+ }
+ } else if(!isTruePi0 && !isTrueEta) { // Background
+ if (fDoMesonQA > 0){
+ if(gamma0MotherLabel>-1 && gamma1MotherLabel>-1){ // Both Tracks are Photons and have a mother but not Pi0 or Eta
+ hESDTrueBckGGInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ iMesonMCInfo = 1;
+ } else { // No photon or without mother
+ hESDTrueBckContInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ }
+ }
+ if( isTruePi0Dalitz || isTrueEtaDalitz ){
+ // Dalitz
+ iMesonMCInfo = 5;
+ hESDTrueMotherDalitzInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ } else if (gamma0DalitzCand || gamma1DalitzCand){
+ if (fDoMesonQA > 0)hESDTrueBckContInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt());
+ }
+ }
+ }
+ return;
}
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::CalculateBackground(){
- Int_t zbin= fBGHandler[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
- Int_t mbin = 0;
-
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
- mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
- } else {
- mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
- }
-
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseRotationMethod()){
-
- for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){
- AliAODConversionPhoton currentEventGoodV0 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent));
- for(Int_t iCurrent2=iCurrent+1;iCurrent2<fGammaCandidates->GetEntries();iCurrent2++){
- for(Int_t nRandom=0;nRandom<((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetNumberOfBGEvents();nRandom++){
- AliAODConversionPhoton currentEventGoodV02 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent2));
-
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->DoBGProbability()){
- AliAODConversionMother *backgroundCandidateProb = new AliAODConversionMother(¤tEventGoodV0,¤tEventGoodV02);
- Double_t massBGprob = backgroundCandidateProb->M();
- if(massBGprob>0.1 && massBGprob<0.14){
- if(fRandom.Rndm()>fBGHandler[fiCut]->GetBGProb(zbin,mbin)){
- delete backgroundCandidateProb;
- continue;
- }
- }
- delete backgroundCandidateProb;
- backgroundCandidateProb = 0x0;
- }
-
- RotateParticle(¤tEventGoodV02);
- AliAODConversionMother *backgroundCandidate = new AliAODConversionMother(¤tEventGoodV0,¤tEventGoodV02);
- backgroundCandidate->CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
- if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
- ->MesonIsSelected(backgroundCandidate,kFALSE,((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()))){
- hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate->M(),backgroundCandidate->Pt());
- Double_t sparesFill[4] = {backgroundCandidate->M(),backgroundCandidate->Pt(),(Double_t)zbin,(Double_t)mbin};
- sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,1);
- }
- delete backgroundCandidate;
- backgroundCandidate = 0x0;
- }
- }
- }
- }else{
- AliGammaConversionAODBGHandler::GammaConversionVertex *bgEventVertex = NULL;
-
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
- for(Int_t nEventsInBG=0;nEventsInBG<fBGHandler[fiCut]->GetNBGEvents();nEventsInBG++){
- AliGammaConversionAODVector *previousEventV0s = fBGHandler[fiCut]->GetBGGoodV0s(zbin,mbin,nEventsInBG);
- if(fMoveParticleAccordingToVertex == kTRUE){
- bgEventVertex = fBGHandler[fiCut]->GetBGEventVertex(zbin,mbin,nEventsInBG);
- }
-
- for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){
- AliAODConversionPhoton currentEventGoodV0 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent));
- for(UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
- AliAODConversionPhoton previousGoodV0 = (AliAODConversionPhoton)(*(previousEventV0s->at(iPrevious)));
- if(fMoveParticleAccordingToVertex == kTRUE){
- MoveParticleAccordingToVertex(&previousGoodV0,bgEventVertex);
- }
- if(fIsHeavyIon){
- RotateParticleAccordingToEP(&previousGoodV0,bgEventVertex->fEP,fEventPlaneAngle);
- }
-
- AliAODConversionMother *backgroundCandidate = new AliAODConversionMother(¤tEventGoodV0,&previousGoodV0);
- backgroundCandidate->CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
- if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
- ->MesonIsSelected(backgroundCandidate,kFALSE,((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()))){
- hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate->M(),backgroundCandidate->Pt());
- Double_t sparesFill[4] = {backgroundCandidate->M(),backgroundCandidate->Pt(),(Double_t)zbin,(Double_t)mbin};
- sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,1);
- }
- delete backgroundCandidate;
- backgroundCandidate = 0x0;
- }
- }
- }
- }
- else{
- for(Int_t nEventsInBG=0;nEventsInBG <fBGHandler[fiCut]->GetNBGEvents();nEventsInBG++){
- AliGammaConversionAODVector *previousEventV0s = fBGHandler[fiCut]->GetBGGoodV0s(zbin,mbin,nEventsInBG);
- if(previousEventV0s){
- if(fMoveParticleAccordingToVertex == kTRUE){
- bgEventVertex = fBGHandler[fiCut]->GetBGEventVertex(zbin,mbin,nEventsInBG);
- }
- for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){
- AliAODConversionPhoton currentEventGoodV0 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent));
- for(UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
-
- AliAODConversionPhoton previousGoodV0 = (AliAODConversionPhoton)(*(previousEventV0s->at(iPrevious)));
-
- if(fMoveParticleAccordingToVertex == kTRUE){
- MoveParticleAccordingToVertex(&previousGoodV0,bgEventVertex);
- }
- if(fIsHeavyIon){
- RotateParticleAccordingToEP(&previousGoodV0,bgEventVertex->fEP,fEventPlaneAngle);
- }
-
-
- AliAODConversionMother *backgroundCandidate = new AliAODConversionMother(¤tEventGoodV0,&previousGoodV0);
- backgroundCandidate->CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
- if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
- ->MesonIsSelected(backgroundCandidate,kFALSE,((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift()))){
- hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate->M(),backgroundCandidate->Pt());
- Double_t sparesFill[4] = {backgroundCandidate->M(),backgroundCandidate->Pt(),(Double_t)zbin,(Double_t)mbin};
- sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,1);
- }
- delete backgroundCandidate;
- backgroundCandidate = 0x0;
- }
- }
- }
- }
- }
- }
+ Int_t zbin= fBGHandler[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
+ Int_t mbin = 0;
+
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
+ mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
+ } else {
+ mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
+ }
+
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseRotationMethod()){
+
+ for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){
+ AliAODConversionPhoton currentEventGoodV0 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent));
+ for(Int_t iCurrent2=iCurrent+1;iCurrent2<fGammaCandidates->GetEntries();iCurrent2++){
+ for(Int_t nRandom=0;nRandom<((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetNumberOfBGEvents();nRandom++){
+ AliAODConversionPhoton currentEventGoodV02 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent2));
+
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->DoBGProbability()){
+ AliAODConversionMother *backgroundCandidateProb = new AliAODConversionMother(¤tEventGoodV0,¤tEventGoodV02);
+ Double_t massBGprob = backgroundCandidateProb->M();
+ if(massBGprob>0.1 && massBGprob<0.14){
+ if(fRandom.Rndm()>fBGHandler[fiCut]->GetBGProb(zbin,mbin)){
+ delete backgroundCandidateProb;
+ continue;
+ }
+ }
+ delete backgroundCandidateProb;
+ backgroundCandidateProb = 0x0;
+ }
+
+ RotateParticle(¤tEventGoodV02);
+ AliAODConversionMother *backgroundCandidate = new AliAODConversionMother(¤tEventGoodV0,¤tEventGoodV02);
+ backgroundCandidate->CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
+ if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
+ ->MesonIsSelected(backgroundCandidate,kFALSE,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift()))){
+ hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate->M(),backgroundCandidate->Pt());
+ Double_t sparesFill[4] = {backgroundCandidate->M(),backgroundCandidate->Pt(),(Double_t)zbin,(Double_t)mbin};
+ sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,1);
+ }
+ delete backgroundCandidate;
+ backgroundCandidate = 0x0;
+ }
+ }
+ }
+ }else{
+ AliGammaConversionAODBGHandler::GammaConversionVertex *bgEventVertex = NULL;
+
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
+ for(Int_t nEventsInBG=0;nEventsInBG<fBGHandler[fiCut]->GetNBGEvents();nEventsInBG++){
+ AliGammaConversionAODVector *previousEventV0s = fBGHandler[fiCut]->GetBGGoodV0s(zbin,mbin,nEventsInBG);
+ if(fMoveParticleAccordingToVertex == kTRUE){
+ bgEventVertex = fBGHandler[fiCut]->GetBGEventVertex(zbin,mbin,nEventsInBG);
+ }
+
+ for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){
+ AliAODConversionPhoton currentEventGoodV0 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent));
+ for(UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
+ AliAODConversionPhoton previousGoodV0 = (AliAODConversionPhoton)(*(previousEventV0s->at(iPrevious)));
+ if(fMoveParticleAccordingToVertex == kTRUE){
+ MoveParticleAccordingToVertex(&previousGoodV0,bgEventVertex);
+ }
+ if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->GetInPlaneOutOfPlaneCut() != 0){
+ RotateParticleAccordingToEP(&previousGoodV0,bgEventVertex->fEP,fEventPlaneAngle);
+ }
+
+ AliAODConversionMother *backgroundCandidate = new AliAODConversionMother(¤tEventGoodV0,&previousGoodV0);
+ backgroundCandidate->CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
+ if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
+ ->MesonIsSelected(backgroundCandidate,kFALSE,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift()))){
+ hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate->M(),backgroundCandidate->Pt());
+ Double_t sparesFill[4] = {backgroundCandidate->M(),backgroundCandidate->Pt(),(Double_t)zbin,(Double_t)mbin};
+ sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,1);
+ }
+ delete backgroundCandidate;
+ backgroundCandidate = 0x0;
+ }
+ }
+ }
+ }
+ else{
+ for(Int_t nEventsInBG=0;nEventsInBG <fBGHandler[fiCut]->GetNBGEvents();nEventsInBG++){
+ AliGammaConversionAODVector *previousEventV0s = fBGHandler[fiCut]->GetBGGoodV0s(zbin,mbin,nEventsInBG);
+ if(previousEventV0s){
+ if(fMoveParticleAccordingToVertex == kTRUE){
+ bgEventVertex = fBGHandler[fiCut]->GetBGEventVertex(zbin,mbin,nEventsInBG);
+ }
+ for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){
+ AliAODConversionPhoton currentEventGoodV0 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent));
+ for(UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
+
+ AliAODConversionPhoton previousGoodV0 = (AliAODConversionPhoton)(*(previousEventV0s->at(iPrevious)));
+
+ if(fMoveParticleAccordingToVertex == kTRUE){
+ MoveParticleAccordingToVertex(&previousGoodV0,bgEventVertex);
+ }
+ if(((AliConversionPhotonCuts*)fCutArray->At(fiCut))->GetInPlaneOutOfPlaneCut() != 0){
+ RotateParticleAccordingToEP(&previousGoodV0,bgEventVertex->fEP,fEventPlaneAngle);
+ }
+
+
+ AliAODConversionMother *backgroundCandidate = new AliAODConversionMother(¤tEventGoodV0,&previousGoodV0);
+ backgroundCandidate->CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
+ if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
+ ->MesonIsSelected(backgroundCandidate,kFALSE,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift()))){
+ hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate->M(),backgroundCandidate->Pt());
+ Double_t sparesFill[4] = {backgroundCandidate->M(),backgroundCandidate->Pt(),(Double_t)zbin,(Double_t)mbin};
+ sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,1);
+ }
+ delete backgroundCandidate;
+ backgroundCandidate = 0x0;
+ }
+ }
+ }
+ }
+ }
+ }
}
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::CalculateBackgroundRP(){
- Int_t zbin= fBGHandlerRP[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
- Int_t mbin = 0;
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
- mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
- } else {
- mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
- }
-
-
- //Rotation Method
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseRotationMethod()){
- // Correct for the number of rotations
- // BG is for rotation the same, except for factor NRotations
- Double_t weight=1./Double_t(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetNumberOfBGEvents());
-
- for(Int_t firstGammaIndex=0;firstGammaIndex<fGammaCandidates->GetEntries();firstGammaIndex++){
-
- AliAODConversionPhoton *gamma0=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(firstGammaIndex));
- if (gamma0==NULL) continue;
- for(Int_t secondGammaIndex=firstGammaIndex+1;secondGammaIndex<fGammaCandidates->GetEntries();secondGammaIndex++){
- AliAODConversionPhoton *gamma1=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(secondGammaIndex));
- if (gamma1 == NULL) continue;
- if(!((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelected(gamma1,fInputEvent))continue;
- for(Int_t nRandom=0;nRandom<((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetNumberOfBGEvents();nRandom++){
-
- RotateParticle(gamma1);
-
- AliAODConversionMother backgroundCandidate(gamma0,gamma1);
- backgroundCandidate.CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
- ->MesonIsSelected(&backgroundCandidate,kFALSE,((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift())){
- hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate.M(),backgroundCandidate.Pt());
- Double_t sparesFill[4] = {backgroundCandidate.M(),backgroundCandidate.Pt(),(Double_t)zbin,(Double_t)mbin};
- sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,weight);
- }
- }
- }
- }
- }
- else{
- // Do Event Mixing
- for(Int_t nEventsInBG=0;nEventsInBG <fBGHandlerRP[fiCut]->GetNBGEvents(fGammaCandidates,fInputEvent);nEventsInBG++){
-
- AliGammaConversionPhotonVector *previousEventGammas = fBGHandlerRP[fiCut]->GetBGGoodGammas(fGammaCandidates,fInputEvent,nEventsInBG);
-
- if(previousEventGammas){
- // test weighted background
- Double_t weight=1.0;
- // Correct for the number of eventmixing:
- // N gammas -> (N-1) + (N-2) +(N-3) ...+ (N-(N-1)) using sum formula sum(i)=N*(N-1)/2 -> N*(N-1)/2
- // real combinations (since you cannot combine a photon with its own)
- // but BG leads to N_{a}*N_{b} combinations
- weight*=0.5*(Double_t(fGammaCandidates->GetEntries()-1))/Double_t(previousEventGammas->size());
-
- for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){
-
- AliAODConversionPhoton *gamma0 = (AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent));
-
- for(UInt_t iPrevious=0;iPrevious<previousEventGammas->size();iPrevious++){
-
- AliAODConversionPhoton *gamma1 = (AliAODConversionPhoton*)(previousEventGammas->at(iPrevious));
-
- AliAODConversionMother backgroundCandidate(gamma0,gamma1);
- backgroundCandidate.CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
- ->MesonIsSelected(&backgroundCandidate,kFALSE,((AliConversionCuts*)fCutArray->At(fiCut))->GetEtaShift())){
- hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate.M(),backgroundCandidate.Pt());
- Double_t sparesFill[4] = {backgroundCandidate.M(),backgroundCandidate.Pt(),(Double_t)zbin,(Double_t)mbin};
- sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,weight);
- }
- }
- }
- }
- }
- }
+ Int_t zbin= fBGHandlerRP[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ());
+ Int_t mbin = 0;
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
+ mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fV0Reader->GetNumberOfPrimaryTracks());
+ } else {
+ mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries());
+ }
+
+
+ //Rotation Method
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseRotationMethod()){
+ // Correct for the number of rotations
+ // BG is for rotation the same, except for factor NRotations
+ Double_t weight=1./Double_t(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetNumberOfBGEvents());
+
+ for(Int_t firstGammaIndex=0;firstGammaIndex<fGammaCandidates->GetEntries();firstGammaIndex++){
+
+ AliAODConversionPhoton *gamma0=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(firstGammaIndex));
+ if (gamma0==NULL) continue;
+ for(Int_t secondGammaIndex=firstGammaIndex+1;secondGammaIndex<fGammaCandidates->GetEntries();secondGammaIndex++){
+ AliAODConversionPhoton *gamma1=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(secondGammaIndex));
+ if (gamma1 == NULL) continue;
+ if(!((AliConversionPhotonCuts*)fCutArray->At(fiCut))->PhotonIsSelected(gamma1,fInputEvent))continue;
+ for(Int_t nRandom=0;nRandom<((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetNumberOfBGEvents();nRandom++){
+ RotateParticle(gamma1);
+ AliAODConversionMother backgroundCandidate(gamma0,gamma1);
+ backgroundCandidate.CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelected(&backgroundCandidate,kFALSE,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
+ hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate.M(),backgroundCandidate.Pt());
+ Double_t sparesFill[4] = {backgroundCandidate.M(),backgroundCandidate.Pt(),(Double_t)zbin,(Double_t)mbin};
+ sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,weight);
+ }
+ }
+ }
+ }
+
+ } else {
+ // Do Event Mixing
+ for(Int_t nEventsInBG=0;nEventsInBG <fBGHandlerRP[fiCut]->GetNBGEvents(fGammaCandidates,fInputEvent);nEventsInBG++){
+
+ AliGammaConversionPhotonVector *previousEventGammas = fBGHandlerRP[fiCut]->GetBGGoodGammas(fGammaCandidates,fInputEvent,nEventsInBG);
+
+ if(previousEventGammas){
+ // test weighted background
+ Double_t weight=1.0;
+ // Correct for the number of eventmixing:
+ // N gammas -> (N-1) + (N-2) +(N-3) ...+ (N-(N-1)) using sum formula sum(i)=N*(N-1)/2 -> N*(N-1)/2
+ // real combinations (since you cannot combine a photon with its own)
+ // but BG leads to N_{a}*N_{b} combinations
+ weight*=0.5*(Double_t(fGammaCandidates->GetEntries()-1))/Double_t(previousEventGammas->size());
+
+ for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){
+
+ AliAODConversionPhoton *gamma0 = (AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent));
+
+ for(UInt_t iPrevious=0;iPrevious<previousEventGammas->size();iPrevious++){
+
+ AliAODConversionPhoton *gamma1 = (AliAODConversionPhoton*)(previousEventGammas->at(iPrevious));
+
+ AliAODConversionMother backgroundCandidate(gamma0,gamma1);
+ backgroundCandidate.CalculateDistanceOfClossetApproachToPrimVtx(fInputEvent->GetPrimaryVertex());
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))
+ ->MesonIsSelected(&backgroundCandidate,kFALSE,((AliConvEventCuts*)fEventCutArray->At(fiCut))->GetEtaShift())){
+ hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate.M(),backgroundCandidate.Pt());
+ Double_t sparesFill[4] = {backgroundCandidate.M(),backgroundCandidate.Pt(),(Double_t)zbin,(Double_t)mbin};
+ sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,weight);
+ }
+ }
+ }
+ }
+ }
+ }
}
+
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::RotateParticle(AliAODConversionPhoton *gamma){
- Int_t fNDegreesPMBackground= ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->NDegreesRotation();
- Double_t nRadiansPM = fNDegreesPMBackground*TMath::Pi()/180;
- Double_t rotationValue = fRandom.Rndm()*2*nRadiansPM + TMath::Pi()-nRadiansPM;
- gamma->RotateZ(rotationValue);
+ Int_t fNDegreesPMBackground= ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->NDegreesRotation();
+ Double_t nRadiansPM = fNDegreesPMBackground*TMath::Pi()/180;
+ Double_t rotationValue = fRandom.Rndm()*2*nRadiansPM + TMath::Pi()-nRadiansPM;
+ gamma->RotateZ(rotationValue);
}
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::RotateParticleAccordingToEP(AliAODConversionPhoton *gamma, Double_t previousEventEP, Double_t thisEventEP){
- previousEventEP=previousEventEP+TMath::Pi();
- thisEventEP=thisEventEP+TMath::Pi();
- Double_t rotationValue= thisEventEP-previousEventEP;
- gamma->RotateZ(rotationValue);
+ previousEventEP=previousEventEP+TMath::Pi();
+ thisEventEP=thisEventEP+TMath::Pi();
+ Double_t rotationValue= thisEventEP-previousEventEP;
+ gamma->RotateZ(rotationValue);
}
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::MoveParticleAccordingToVertex(AliAODConversionPhoton* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex){
- //see header file for documentation
+ //see header file for documentation
- Double_t dx = vertex->fX - fInputEvent->GetPrimaryVertex()->GetX();
- Double_t dy = vertex->fY - fInputEvent->GetPrimaryVertex()->GetY();
- Double_t dz = vertex->fZ - fInputEvent->GetPrimaryVertex()->GetZ();
+ Double_t dx = vertex->fX - fInputEvent->GetPrimaryVertex()->GetX();
+ Double_t dy = vertex->fY - fInputEvent->GetPrimaryVertex()->GetY();
+ Double_t dz = vertex->fZ - fInputEvent->GetPrimaryVertex()->GetZ();
- Double_t movedPlace[3] = {particle->GetConversionX() - dx,particle->GetConversionY() - dy,particle->GetConversionZ() - dz};
- particle->SetConversionPoint(movedPlace);
+ Double_t movedPlace[3] = {particle->GetConversionX() - dx,particle->GetConversionY() - dy,particle->GetConversionZ() - dz};
+ particle->SetConversionPoint(movedPlace);
}
+
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::UpdateEventByEventData(){
- //see header file for documentation
- if(fGammaCandidates->GetEntries() >0 ){
- if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
- fBGHandler[fiCut]->AddEvent(fGammaCandidates,fInputEvent->GetPrimaryVertex()->GetX(),fInputEvent->GetPrimaryVertex()->GetY(),fInputEvent->GetPrimaryVertex()->GetZ(),fV0Reader->GetNumberOfPrimaryTracks(),fEventPlaneAngle);
- }
- else{ // means we use #V0s for multiplicity
- fBGHandler[fiCut]->AddEvent(fGammaCandidates,fInputEvent->GetPrimaryVertex()->GetX(),fInputEvent->GetPrimaryVertex()->GetY(),fInputEvent->GetPrimaryVertex()->GetZ(),fGammaCandidates->GetEntries(),fEventPlaneAngle);
- }
- }
+ //see header file for documentation
+ if(fGammaCandidates->GetEntries() >0 ){
+ if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){
+ fBGHandler[fiCut]->AddEvent(fGammaCandidates,fInputEvent->GetPrimaryVertex()->GetX(),fInputEvent->GetPrimaryVertex()->GetY(),fInputEvent->GetPrimaryVertex()->GetZ(),fV0Reader->GetNumberOfPrimaryTracks(),fEventPlaneAngle);
+ }
+ else{ // means we use #V0s for multiplicity
+ fBGHandler[fiCut]->AddEvent(fGammaCandidates,fInputEvent->GetPrimaryVertex()->GetX(),fInputEvent->GetPrimaryVertex()->GetY(),fInputEvent->GetPrimaryVertex()->GetZ(),fGammaCandidates->GetEntries(),fEventPlaneAngle);
+ }
+ }
}
-
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::FillPhotonCombinatorialBackgroundHist(AliAODConversionPhoton *TruePhotonCandidate, Int_t pdgCode[])
{
- // Combinatorial Bck = 0 ee, 1 ep,i 2 ek, 3 ep, 4 emu, 5 pipi, 6 pik, 7 pip, 8 pimu, 9 kk, 10 kp, 11 kmu, 12 pp, 13 pmu, 14 mumu, 15 Rest
- if(pdgCode[0]==11 && pdgCode[1]==11){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),0);}
- else if( (pdgCode[0]==11 && pdgCode[1]==211) || (pdgCode[0]==211 && pdgCode[1]==11) )
- {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),1);}
- else if( (pdgCode[0]==11 && pdgCode[1]==321) || (pdgCode[0]==321 && pdgCode[1]==11) )
- {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),2);}
- else if( (pdgCode[0]==11 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==11) )
- {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),3);}
- else if( (pdgCode[0]==11 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==11) )
- {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),4);}
- else if( pdgCode[0]==211 && pdgCode[1]==211 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),5);}
- else if( (pdgCode[0]==211 && pdgCode[1]==321) || (pdgCode[0]==321 && pdgCode[1]==211) )
- {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),6);}
- else if( (pdgCode[0]==211 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==211) )
- {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),7);}
- else if( (pdgCode[0]==211 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==211) )
- {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),8);}
- else if( pdgCode[0]==321 && pdgCode[1]==321 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),9);}
- else if( (pdgCode[0]==321 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==321) )
- {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),10);}
- else if( (pdgCode[0]==321 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==321) )
- {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),11);}
- else if( pdgCode[0]==2212 && pdgCode[1]==2212 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),12);}
- else if( (pdgCode[0]==2212 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==2212) )
- {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),13);}
- else if( pdgCode[0]==13 && pdgCode[1]==13 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),14);}
- else {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),15);}
+ // Combinatorial Bck = 0 ee, 1 ep,i 2 ek, 3 ep, 4 emu, 5 pipi, 6 pik, 7 pip, 8 pimu, 9 kk, 10 kp, 11 kmu, 12 pp, 13 pmu, 14 mumu, 15 Rest
+ if(pdgCode[0]==11 && pdgCode[1]==11){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),0);}
+ else if( (pdgCode[0]==11 && pdgCode[1]==211) || (pdgCode[0]==211 && pdgCode[1]==11) )
+ {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),1);}
+ else if( (pdgCode[0]==11 && pdgCode[1]==321) || (pdgCode[0]==321 && pdgCode[1]==11) )
+ {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),2);}
+ else if( (pdgCode[0]==11 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==11) )
+ {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),3);}
+ else if( (pdgCode[0]==11 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==11) )
+ {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),4);}
+ else if( pdgCode[0]==211 && pdgCode[1]==211 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),5);}
+ else if( (pdgCode[0]==211 && pdgCode[1]==321) || (pdgCode[0]==321 && pdgCode[1]==211) )
+ {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),6);}
+ else if( (pdgCode[0]==211 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==211) )
+ {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),7);}
+ else if( (pdgCode[0]==211 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==211) )
+ {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),8);}
+ else if( pdgCode[0]==321 && pdgCode[1]==321 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),9);}
+ else if( (pdgCode[0]==321 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==321) )
+ {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),10);}
+ else if( (pdgCode[0]==321 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==321) )
+ {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),11);}
+ else if( pdgCode[0]==2212 && pdgCode[1]==2212 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),12);}
+ else if( (pdgCode[0]==2212 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==2212) )
+ {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),13);}
+ else if( pdgCode[0]==13 && pdgCode[1]==13 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),14);}
+ else {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),15);}
}
+
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::RelabelAODPhotonCandidates(Bool_t mode){
- // Relabeling For AOD Event
- // ESDiD -> AODiD
- // MCLabel -> AODMCLabel
-
- if(mode){
- fMCStackPos = new Int_t[fReaderGammas->GetEntries()];
- fMCStackNeg = new Int_t[fReaderGammas->GetEntries()];
- fESDArrayPos = new Int_t[fReaderGammas->GetEntries()];
- fESDArrayNeg = new Int_t[fReaderGammas->GetEntries()];
- }
-
- for(Int_t iGamma = 0;iGamma<fReaderGammas->GetEntries();iGamma++){
- AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) fReaderGammas->At(iGamma);
- if(!PhotonCandidate) continue;
- if(!mode){// Back to ESD Labels
- PhotonCandidate->SetMCLabelPositive(fMCStackPos[iGamma]);
- PhotonCandidate->SetMCLabelNegative(fMCStackNeg[iGamma]);
- PhotonCandidate->SetLabelPositive(fESDArrayPos[iGamma]);
- PhotonCandidate->SetLabelNegative(fESDArrayNeg[iGamma]);
- continue;
- }
- fMCStackPos[iGamma] = PhotonCandidate->GetMCLabelPositive();
- fMCStackNeg[iGamma] = PhotonCandidate->GetMCLabelNegative();
- fESDArrayPos[iGamma] = PhotonCandidate->GetTrackLabelPositive();
- fESDArrayNeg[iGamma] = PhotonCandidate->GetTrackLabelNegative();
-
- Bool_t AODLabelPos = kFALSE;
- Bool_t AODLabelNeg = kFALSE;
-
- for(Int_t i = 0; i<fInputEvent->GetNumberOfTracks();i++){
- AliAODTrack *tempDaughter = static_cast<AliAODTrack*>(fInputEvent->GetTrack(i));
- if(!AODLabelPos){
- if( tempDaughter->GetID() == PhotonCandidate->GetTrackLabelPositive() ){
- PhotonCandidate->SetMCLabelPositive(abs(tempDaughter->GetLabel()));
- PhotonCandidate->SetLabelPositive(i);
- AODLabelPos = kTRUE;
- }
- }
- if(!AODLabelNeg){
- if( tempDaughter->GetID() == PhotonCandidate->GetTrackLabelNegative()){
- PhotonCandidate->SetMCLabelNegative(abs(tempDaughter->GetLabel()));
- PhotonCandidate->SetLabelNegative(i);
- AODLabelNeg = kTRUE;
- }
- }
- if(AODLabelNeg && AODLabelPos){
- break;
- }
- }
- if(!AODLabelPos || !AODLabelNeg){
- cout<<"WARNING!!! AOD TRACKS NOT FOUND FOR"<<endl;
- }
- }
-
-
- if(!mode){
- delete[] fMCStackPos;
- delete[] fMCStackNeg;
- delete[] fESDArrayPos;
- delete[] fESDArrayNeg;
- }
+ // Relabeling For AOD Event
+ // ESDiD -> AODiD
+ // MCLabel -> AODMCLabel
+
+ if(mode){
+ fMCStackPos = new Int_t[fReaderGammas->GetEntries()];
+ fMCStackNeg = new Int_t[fReaderGammas->GetEntries()];
+ fESDArrayPos = new Int_t[fReaderGammas->GetEntries()];
+ fESDArrayNeg = new Int_t[fReaderGammas->GetEntries()];
+ }
+
+ for(Int_t iGamma = 0;iGamma<fReaderGammas->GetEntries();iGamma++){
+ AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) fReaderGammas->At(iGamma);
+ if(!PhotonCandidate) continue;
+ if(!mode){// Back to ESD Labels
+ PhotonCandidate->SetMCLabelPositive(fMCStackPos[iGamma]);
+ PhotonCandidate->SetMCLabelNegative(fMCStackNeg[iGamma]);
+ PhotonCandidate->SetLabelPositive(fESDArrayPos[iGamma]);
+ PhotonCandidate->SetLabelNegative(fESDArrayNeg[iGamma]);
+ continue;
+ }
+ fMCStackPos[iGamma] = PhotonCandidate->GetMCLabelPositive();
+ fMCStackNeg[iGamma] = PhotonCandidate->GetMCLabelNegative();
+ fESDArrayPos[iGamma] = PhotonCandidate->GetTrackLabelPositive();
+ fESDArrayNeg[iGamma] = PhotonCandidate->GetTrackLabelNegative();
+
+ Bool_t AODLabelPos = kFALSE;
+ Bool_t AODLabelNeg = kFALSE;
+
+ for(Int_t i = 0; i<fInputEvent->GetNumberOfTracks();i++){
+ AliAODTrack *tempDaughter = static_cast<AliAODTrack*>(fInputEvent->GetTrack(i));
+ if(!AODLabelPos){
+ if( tempDaughter->GetID() == PhotonCandidate->GetTrackLabelPositive() ){
+ PhotonCandidate->SetMCLabelPositive(abs(tempDaughter->GetLabel()));
+ PhotonCandidate->SetLabelPositive(i);
+ AODLabelPos = kTRUE;
+ }
+ }
+ if(!AODLabelNeg){
+ if( tempDaughter->GetID() == PhotonCandidate->GetTrackLabelNegative()){
+ PhotonCandidate->SetMCLabelNegative(abs(tempDaughter->GetLabel()));
+ PhotonCandidate->SetLabelNegative(i);
+ AODLabelNeg = kTRUE;
+ }
+ }
+ if(AODLabelNeg && AODLabelPos){
+ break;
+ }
+ }
+ if(!AODLabelPos || !AODLabelNeg){
+ cout<<"WARNING!!! AOD TRACKS NOT FOUND FOR"<<endl;
+ }
+ }
+
+
+ if(!mode){
+ delete[] fMCStackPos;
+ delete[] fMCStackNeg;
+ delete[] fESDArrayPos;
+ delete[] fESDArrayNeg;
+ }
}
+
+//________________________________________________________________________
+void AliAnalysisTaskGammaConvV1::SetLogBinningXTH2(TH2* histoRebin){
+ TAxis *axisafter = histoRebin->GetXaxis();
+ Int_t bins = axisafter->GetNbins();
+ Double_t from = axisafter->GetXmin();
+ Double_t to = axisafter->GetXmax();
+ Double_t *newbins = new Double_t[bins+1];
+ newbins[0] = from;
+ Double_t factor = TMath::Power(to/from, 1./bins);
+ for(Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
+ axisafter->Set(bins, newbins);
+ delete [] newbins;
+}
+
//________________________________________________________________________
void AliAnalysisTaskGammaConvV1::Terminate(const Option_t *)
{
//fOutputContainer->Print(); // Will crash on GRID
}
+
+//________________________________________________________________________
+Int_t AliAnalysisTaskGammaConvV1::GetSourceClassification(Int_t daughter, Int_t pdgCode){
+
+ if (daughter == 111) {
+ if (abs(pdgCode) == 310) return 1; // k0s
+ else if (abs(pdgCode) == 3122) return 2; // Lambda
+ else if (abs(pdgCode) == 130) return 3; // K0L
+ else if (abs(pdgCode) == 2212) return 4; // proton
+ else if (abs(pdgCode) == 2112) return 5; // neutron
+ else if (abs(pdgCode) == 211) return 6; // pion
+ else if (abs(pdgCode) == 321) return 7; // kaon
+ else if (abs(pdgCode) == 113 || abs(pdgCode) == 213 ) return 8; // rho 0,+,-
+ else if (abs(pdgCode) == 3222 || abs(pdgCode) == 3212 || abs(pdgCode) == 3112 ) return 9; // Sigma
+ else if (abs(pdgCode) == 2224 || abs(pdgCode) == 2214 || abs(pdgCode) == 2114 || abs(pdgCode) == 1114 ) return 10; // Delta
+ else if (abs(pdgCode) == 313 || abs(pdgCode) == 323 ) return 11; // K*
+ else return 15;
+ }
+ return 15;
+
+}
\ No newline at end of file