X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGGA%2FGammaConv%2FAliAnalysisTaskGammaCalo.cxx;h=b42c31c8e5a0cb1df319ec63a8c1eb56fbf166bf;hb=5e5391233a23344eae2b22aa786ea5d6307a4a48;hp=9836af29664eee8eda2df5bf703df9c94bc7b987;hpb=f4b51f9aee161ef0f23a59cfcdb84690bdd48b29;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGGA/GammaConv/AliAnalysisTaskGammaCalo.cxx b/PWGGA/GammaConv/AliAnalysisTaskGammaCalo.cxx index 9836af29664..b42c31c8e5a 100644 --- a/PWGGA/GammaConv/AliAnalysisTaskGammaCalo.cxx +++ b/PWGGA/GammaConv/AliAnalysisTaskGammaCalo.cxx @@ -95,6 +95,7 @@ AliAnalysisTaskGammaCalo::AliAnalysisTaskGammaCalo(): AliAnalysisTaskSE(), fHistoMotherInvMassECalib(NULL), fHistoMotherInvMassECalibalpha(NULL), fHistoClusGammaPt(NULL), + fHistoClusOverlapHeadersGammaPt(NULL), fHistoMCHeaders(NULL), fHistoMCAllGammaPt(NULL), fHistoMCDecayGammaPi0Pt(NULL), @@ -137,6 +138,20 @@ AliAnalysisTaskGammaCalo::AliAnalysisTaskGammaCalo(): AliAnalysisTaskSE(), fHistoTrueEtaCaloMergedClusterPartConvInvMassPt(NULL), fHistoTruePi0NonMergedElectronPhotonInvMassPt(NULL), fHistoTruePi0NonMergedElectronMergedPhotonInvMassPt(NULL), + fHistoTruePi0Category1(NULL), + fHistoTrueEtaCategory1(NULL), + fHistoTruePi0Category2(NULL), + fHistoTrueEtaCategory2(NULL), + fHistoTruePi0Category3(NULL), + fHistoTrueEtaCategory3(NULL), + fHistoTruePi0Category4_6(NULL), + fHistoTrueEtaCategory4_6(NULL), + fHistoTruePi0Category5(NULL), + fHistoTrueEtaCategory5(NULL), + fHistoTruePi0Category7(NULL), + fHistoTrueEtaCategory7(NULL), + fHistoTruePi0Category8(NULL), + fHistoTrueEtaCategory8(NULL), fHistoTruePrimaryPi0InvMassPt(NULL), fHistoTruePrimaryEtaInvMassPt(NULL), fHistoTruePrimaryPi0W0WeightingInvMassPt(NULL), @@ -146,7 +161,6 @@ AliAnalysisTaskGammaCalo::AliAnalysisTaskGammaCalo(): AliAnalysisTaskSE(), fHistoTruePrimaryPi0MCPtResolPt(NULL), fHistoTruePrimaryEtaMCPtResolPt(NULL), fHistoTrueSecondaryPi0InvMassPt(NULL), - fHistoTrueSecondaryEtaInvMassPt(NULL), fHistoTrueSecondaryPi0FromK0sInvMassPt(NULL), fHistoTrueK0sWithPi0DaughterMCPt(NULL), fHistoTrueSecondaryPi0FromEtaInvMassPt(NULL), @@ -207,6 +221,7 @@ AliAnalysisTaskGammaCalo::AliAnalysisTaskGammaCalo(): AliAnalysisTaskSE(), fDoMesonQA(0), fDoClusterQA(0), fIsFromMBHeader(kTRUE), + fIsOverlappingWithOtherHeader(kFALSE), fIsMC(kFALSE) { @@ -250,6 +265,7 @@ AliAnalysisTaskGammaCalo::AliAnalysisTaskGammaCalo(const char *name): fHistoMotherInvMassECalib(NULL), fHistoMotherInvMassECalibalpha(NULL), fHistoClusGammaPt(NULL), + fHistoClusOverlapHeadersGammaPt(NULL), fHistoMCHeaders(NULL), fHistoMCAllGammaPt(NULL), fHistoMCDecayGammaPi0Pt(NULL), @@ -292,6 +308,20 @@ AliAnalysisTaskGammaCalo::AliAnalysisTaskGammaCalo(const char *name): fHistoTrueEtaCaloMergedClusterPartConvInvMassPt(NULL), fHistoTruePi0NonMergedElectronPhotonInvMassPt(NULL), fHistoTruePi0NonMergedElectronMergedPhotonInvMassPt(NULL), + fHistoTruePi0Category1(NULL), + fHistoTrueEtaCategory1(NULL), + fHistoTruePi0Category2(NULL), + fHistoTrueEtaCategory2(NULL), + fHistoTruePi0Category3(NULL), + fHistoTrueEtaCategory3(NULL), + fHistoTruePi0Category4_6(NULL), + fHistoTrueEtaCategory4_6(NULL), + fHistoTruePi0Category5(NULL), + fHistoTrueEtaCategory5(NULL), + fHistoTruePi0Category7(NULL), + fHistoTrueEtaCategory7(NULL), + fHistoTruePi0Category8(NULL), + fHistoTrueEtaCategory8(NULL), fHistoTruePrimaryPi0InvMassPt(NULL), fHistoTruePrimaryEtaInvMassPt(NULL), fHistoTruePrimaryPi0W0WeightingInvMassPt(NULL), @@ -301,7 +331,6 @@ AliAnalysisTaskGammaCalo::AliAnalysisTaskGammaCalo(const char *name): fHistoTruePrimaryPi0MCPtResolPt(NULL), fHistoTruePrimaryEtaMCPtResolPt(NULL), fHistoTrueSecondaryPi0InvMassPt(NULL), - fHistoTrueSecondaryEtaInvMassPt(NULL), fHistoTrueSecondaryPi0FromK0sInvMassPt(NULL), fHistoTrueK0sWithPi0DaughterMCPt(NULL), fHistoTrueSecondaryPi0FromEtaInvMassPt(NULL), @@ -362,6 +391,7 @@ AliAnalysisTaskGammaCalo::AliAnalysisTaskGammaCalo(const char *name): fDoMesonQA(0), fDoClusterQA(0), fIsFromMBHeader(kTRUE), + fIsOverlappingWithOtherHeader(kFALSE), fIsMC(kFALSE) { // Define output slots here @@ -490,6 +520,7 @@ void AliAnalysisTaskGammaCalo::UserCreateOutputObjects(){ } fHistoClusGammaPt = new TH1F*[fnCuts]; + fHistoClusOverlapHeadersGammaPt = new TH1F*[fnCuts]; for(Int_t iCut = 0; iCutAt(iCut))->GetCutNumber(); @@ -506,11 +537,11 @@ void AliAnalysisTaskGammaCalo::UserCreateOutputObjects(){ fESDList[iCut]->SetOwner(kTRUE); fCutFolder[iCut]->Add(fESDList[iCut]); - fHistoNEvents[iCut] = new TH1I("NEvents","NEvents",9,-0.5,8.5); + fHistoNEvents[iCut] = new TH1I("NEvents","NEvents",10,-0.5,9.5); fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(1,"Accepted"); fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(2,"Centrality"); fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(3,"Missing MC"); - if (((AliConvEventCuts*)fEventCutArray->At(iCut))->IsSpecialTrigger() == 4 ){ + if (((AliConvEventCuts*)fEventCutArray->At(iCut))->IsSpecialTrigger() > 1 ){ TString TriggerNames = "Not Trigger: "; TriggerNames = TriggerNames+ ( (AliConvEventCuts*)fEventCutArray->At(iCut))->GetSpecialTriggerName(); fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(4,TriggerNames.Data()); @@ -522,6 +553,7 @@ void AliAnalysisTaskGammaCalo::UserCreateOutputObjects(){ fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(7,"Pile-Up"); fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(8,"no SDD"); fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(9,"no V0AND"); + fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(10,"EMCAL problems"); fESDList[iCut]->Add(fHistoNEvents[iCut]); if(fIsHeavyIon == 1) fHistoNGoodESDTracks[iCut] = new TH1I("GoodESDTracks","GoodESDTracks",4000,0,4000); @@ -547,7 +579,8 @@ void AliAnalysisTaskGammaCalo::UserCreateOutputObjects(){ fHistoClusGammaPt[iCut] = new TH1F("ClusGamma_Pt","ClusGamma_Pt",250,0,25); fESDList[iCut]->Add(fHistoClusGammaPt[iCut]); - + fHistoClusOverlapHeadersGammaPt[iCut] = new TH1F("ClusGammaOverlapHeaders_Pt","ClusGammaOverlapHeaders_Pt",250,0,25); + fESDList[iCut]->Add(fHistoClusOverlapHeadersGammaPt[iCut]); if(fDoMesonAnalysis){ fHistoMotherInvMassPt[iCut] = new TH2F("ESD_Mother_InvMass_Pt","ESD_Mother_InvMass_Pt",800,0,0.8,250,0,25); @@ -578,10 +611,10 @@ void AliAnalysisTaskGammaCalo::UserCreateOutputObjects(){ fHistoMotherEtaPtAlpha[iCut] = new TH2F("ESD_MotherEta_Pt_Alpha","ESD_MotherEta_Pt_Alpha",150,0.03,15.,100,0,1); SetLogBinningXTH2(fHistoMotherEtaPtAlpha[iCut]); fESDList[iCut]->Add(fHistoMotherEtaPtAlpha[iCut]); - fHistoMotherPi0PtOpenAngle[iCut] = new TH2F("ESD_MotherPi0_Pt_OpenAngle","ESD_MotherPi0_Pt_OpenAngle",150,0.03,15.,200,0,2*TMath::Pi()); + fHistoMotherPi0PtOpenAngle[iCut] = new TH2F("ESD_MotherPi0_Pt_OpenAngle","ESD_MotherPi0_Pt_OpenAngle",150,0.03,15.,100,0,TMath::Pi()); SetLogBinningXTH2(fHistoMotherPi0PtOpenAngle[iCut]); fESDList[iCut]->Add(fHistoMotherPi0PtOpenAngle[iCut]); - fHistoMotherEtaPtOpenAngle[iCut] = new TH2F("ESD_MotherEta_Pt_OpenAngle","ESD_MotherEta_Pt_OpenAngle",150,0.03,15.,200,0,2*TMath::Pi()); + fHistoMotherEtaPtOpenAngle[iCut] = new TH2F("ESD_MotherEta_Pt_OpenAngle","ESD_MotherEta_Pt_OpenAngle",150,0.03,15.,100,0,TMath::Pi()); SetLogBinningXTH2(fHistoMotherEtaPtOpenAngle[iCut]); fESDList[iCut]->Add(fHistoMotherEtaPtOpenAngle[iCut]); } @@ -661,7 +694,6 @@ void AliAnalysisTaskGammaCalo::UserCreateOutputObjects(){ fProfileTruePrimaryPi0WeightsInvMassPt = new TProfile2D*[fnCuts]; fProfileTruePrimaryEtaWeightsInvMassPt = new TProfile2D*[fnCuts]; fHistoTrueSecondaryPi0InvMassPt = new TH2F*[fnCuts]; - fHistoTrueSecondaryEtaInvMassPt = new TH2F*[fnCuts]; fHistoTrueSecondaryPi0FromK0sInvMassPt = new TH2F*[fnCuts]; fHistoTrueSecondaryPi0FromEtaInvMassPt = new TH2F*[fnCuts]; fHistoTrueSecondaryPi0FromLambdaInvMassPt = new TH2F*[fnCuts]; @@ -705,6 +737,22 @@ void AliAnalysisTaskGammaCalo::UserCreateOutputObjects(){ fHistoTruePi0PtOpenAngle = new TH2F*[fnCuts]; fHistoTrueEtaPtOpenAngle = new TH2F*[fnCuts]; } + if (fDoMesonQA==2){ + fHistoTruePi0Category1 = new TH2F*[fnCuts]; + fHistoTrueEtaCategory1 = new TH2F*[fnCuts]; + fHistoTruePi0Category2 = new TH2F*[fnCuts]; + fHistoTrueEtaCategory2 = new TH2F*[fnCuts]; + fHistoTruePi0Category3 = new TH2F*[fnCuts]; + fHistoTrueEtaCategory3 = new TH2F*[fnCuts]; + fHistoTruePi0Category4_6 = new TH2F*[fnCuts]; + fHistoTrueEtaCategory4_6 = new TH2F*[fnCuts]; + fHistoTruePi0Category5 = new TH2F*[fnCuts]; + fHistoTrueEtaCategory5 = new TH2F*[fnCuts]; + fHistoTruePi0Category7 = new TH2F*[fnCuts]; + fHistoTrueEtaCategory7 = new TH2F*[fnCuts]; + fHistoTruePi0Category8 = new TH2F*[fnCuts]; + fHistoTrueEtaCategory8 = new TH2F*[fnCuts]; + } } @@ -920,9 +968,6 @@ void AliAnalysisTaskGammaCalo::UserCreateOutputObjects(){ fHistoTrueSecondaryPi0InvMassPt[iCut] = new TH2F("ESD_TrueSecondaryPi0_InvMass_Pt", "ESD_TrueSecondaryPi0_InvMass_Pt", 800,0,0.8,250,0,25); fHistoTrueSecondaryPi0InvMassPt[iCut]->Sumw2(); fTrueList[iCut]->Add(fHistoTrueSecondaryPi0InvMassPt[iCut]); - fHistoTrueSecondaryEtaInvMassPt[iCut] = new TH2F("ESD_TrueSecondaryEta_InvMass_Pt", "ESD_TrueSecondaryEta_InvMass_Pt", 800,0,0.8,250,0,25); - fHistoTrueSecondaryEtaInvMassPt[iCut]->Sumw2(); - fTrueList[iCut]->Add(fHistoTrueSecondaryEtaInvMassPt[iCut]); fHistoTrueSecondaryPi0FromK0sInvMassPt[iCut] = new TH2F("ESD_TrueSecondaryPi0FromK0s_InvMass_Pt","ESD_TrueSecondaryPi0FromK0s_InvMass_Pt",800,0,0.8,250,0,25); fHistoTrueSecondaryPi0FromK0sInvMassPt[iCut]->Sumw2(); @@ -1006,6 +1051,37 @@ void AliAnalysisTaskGammaCalo::UserCreateOutputObjects(){ SetLogBinningXTH2(fHistoTrueEtaPtOpenAngle[iCut]); fTrueList[iCut]->Add(fHistoTrueEtaPtOpenAngle[iCut]); } + + if (fDoMesonQA == 2){ + fHistoTruePi0Category1[iCut] = new TH2F("ESD_TruePi0Category1_InvMass_Pt","ESD_TruePi0Category1_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTruePi0Category1[iCut]); + fHistoTrueEtaCategory1[iCut] = new TH2F("ESD_TrueEtaCategory1_InvMass_Pt","ESD_TrueEtaCategory1_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTrueEtaCategory1[iCut]); + fHistoTruePi0Category2[iCut] = new TH2F("ESD_TruePi0Category2_InvMass_Pt","ESD_TruePi0Category2_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTruePi0Category2[iCut]); + fHistoTrueEtaCategory2[iCut] = new TH2F("ESD_TrueEtaCategory2_InvMass_Pt","ESD_TrueEtaCategory2_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTrueEtaCategory2[iCut]); + fHistoTruePi0Category3[iCut] = new TH2F("ESD_TruePi0Category3_InvMass_Pt","ESD_TruePi0Category3_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTruePi0Category3[iCut]); + fHistoTrueEtaCategory3[iCut] = new TH2F("ESD_TrueEtaCategory3_InvMass_Pt","ESD_TrueEtaCategory3_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTrueEtaCategory3[iCut]); + fHistoTruePi0Category4_6[iCut] = new TH2F("ESD_TruePi0Category4_6_InvMass_Pt","ESD_TruePi0Category4_6_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTruePi0Category4_6[iCut]); + fHistoTrueEtaCategory4_6[iCut] = new TH2F("ESD_TrueEtaCategory4_6_InvMass_Pt","ESD_TrueEtaCategory4_6_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTrueEtaCategory4_6[iCut]); + fHistoTruePi0Category5[iCut] = new TH2F("ESD_TruePi0Category5_InvMass_Pt","ESD_TruePi0Category5_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTruePi0Category5[iCut]); + fHistoTrueEtaCategory5[iCut] = new TH2F("ESD_TrueEtaCategory5_InvMass_Pt","ESD_TrueEtaCategory5_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTrueEtaCategory5[iCut]); + fHistoTruePi0Category7[iCut] = new TH2F("ESD_TruePi0Category7_InvMass_Pt","ESD_TruePi0Category7_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTruePi0Category7[iCut]); + fHistoTrueEtaCategory7[iCut] = new TH2F("ESD_TrueEtaCategory7_InvMass_Pt","ESD_TrueEtaCategory7_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTrueEtaCategory7[iCut]); + fHistoTruePi0Category8[iCut] = new TH2F("ESD_TruePi0Category8_InvMass_Pt","ESD_TruePi0Category8_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTruePi0Category8[iCut]); + fHistoTrueEtaCategory8[iCut] = new TH2F("ESD_TrueEtaCategory8_InvMass_Pt","ESD_TrueEtaCategory8_InvMass_Pt",800,0,0.8,250,0,25); + fTrueList[iCut]->Add(fHistoTrueEtaCategory8[iCut]); + } } } } @@ -1098,7 +1174,11 @@ void AliAnalysisTaskGammaCalo::UserExec(Option_t *) for(Int_t iCut = 0; iCutAt(iCut))->IsEventAcceptedByCut(fV0Reader->GetEventCuts(),fInputEvent,fMCEvent,fIsHeavyIon); + + Bool_t isRunningEMCALrelAna = kFALSE; + if (((AliCaloPhotonCuts*)fClusterCutArray->At(fiCut))->GetClusterType() == 1) isRunningEMCALrelAna = kTRUE; + + Int_t eventNotAccepted = ((AliConvEventCuts*)fEventCutArray->At(iCut))->IsEventAcceptedByCut(fV0Reader->GetEventCuts(),fInputEvent,fMCEvent,fIsHeavyIon, isRunningEMCALrelAna); if(eventNotAccepted){ // cout << "event rejected due to wrong trigger: " <Fill(fClusterCandidates->GetEntries()); fHistoNGoodESDTracksVsNGammaCanditates[iCut]->Fill(fV0Reader->GetNumberOfPrimaryTracks(),fClusterCandidates->GetEntries()); if(fDoMesonAnalysis){ // Meson Analysis - CalculatePi0Candidates(); // Combine Gammas from conversion and from calo - if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->DoBGCalculation()){ if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->BackgroundHandlerType() == 0){ @@ -1227,11 +1305,24 @@ void AliAnalysisTaskGammaCalo::ProcessClusters() } fIsFromMBHeader = kTRUE; + fIsOverlappingWithOtherHeader = kFALSE; // test whether largest contribution to cluster orginates in added signals if (fIsMC && ((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetCaloPhotonMCLabel(0), fMCStack, fInputEvent) == 0) fIsFromMBHeader = kFALSE; + if (fIsMC ){ + if (clus->GetNLabels()>1){ + Int_t* mclabelsCluster = clus->GetLabels(); + for (Int_t l = 1; l < (Int_t)clus->GetNLabels(); l++ ){ + if (((AliConvEventCuts*)fEventCutArray->At(fiCut))->IsParticleFromBGEvent(mclabelsCluster[l], fMCStack, fInputEvent) == 0) fIsOverlappingWithOtherHeader = kTRUE; + } + } + } - if (fIsFromMBHeader)fHistoClusGammaPt[fiCut]->Fill(PhotonCandidate->Pt()); - fClusterCandidates->Add(PhotonCandidate); // if no second loop is required add to events good gammas + if (fIsFromMBHeader && !fIsOverlappingWithOtherHeader){ + fHistoClusGammaPt[fiCut]->Fill(PhotonCandidate->Pt()); + fClusterCandidates->Add(PhotonCandidate); + } + if (fIsFromMBHeader && fIsOverlappingWithOtherHeader) fHistoClusOverlapHeadersGammaPt[fiCut]->Fill(PhotonCandidate->Pt()); + // if no second loop is required add to events good gammas if(fIsMC){ if(fInputEvent->IsA()==AliESDEvent::Class()){ @@ -1266,7 +1357,7 @@ void AliAnalysisTaskGammaCalo::ProcessTrueClusterCandidates(AliAODConversionPhot TruePhotonCandidate->SetCaloPhotonMCFlags(fMCStack); // True Photon - if(fIsFromMBHeader){ + if(fIsFromMBHeader && !fIsOverlappingWithOtherHeader){ if (TruePhotonCandidate->IsLargestComponentPhoton() || TruePhotonCandidate->IsLargestComponentElectron() )fHistoTrueClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt()); else fHistoTrueClusEMNonLeadingPt[fiCut]->Fill(TruePhotonCandidate->Pt()); if (fDoClusterQA > 0){ @@ -1368,7 +1459,7 @@ void AliAnalysisTaskGammaCalo::ProcessTrueClusterCandidatesAOD(AliAODConversionP TruePhotonCandidate->SetCaloPhotonMCFlagsAOD(fInputEvent); // True Photon - if(fIsFromMBHeader){ + if(fIsFromMBHeader && !fIsOverlappingWithOtherHeader){ if (TruePhotonCandidate->IsLargestComponentPhoton() || TruePhotonCandidate->IsLargestComponentElectron() )fHistoTrueClusGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt()); else fHistoTrueClusEMNonLeadingPt[fiCut]->Fill(TruePhotonCandidate->Pt()); if (fDoClusterQA > 0){ @@ -1819,8 +1910,12 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidates(AliAODConversionMother // Process True Mesons AliStack *MCStack = fMCEvent->Stack(); - Bool_t isTruePi0 = kFALSE; - Bool_t isTrueEta = kFALSE; + Bool_t isTruePi0 = kFALSE; + Bool_t isTrueEta = kFALSE; + Bool_t isSameConvertedGamma = kFALSE; + Int_t convertedPhotonLabel0 = -1; + Int_t convertedPhotonLabel1 = -1; + Int_t gamma0MCLabel = TrueGammaCandidate0->GetCaloPhotonMCLabel(0); // get most probable MC label Int_t gamma0MotherLabel = -1; @@ -1831,6 +1926,7 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidates(AliAODConversionMother if (TrueGammaCandidate0->IsLargestComponentPhoton()){ // for photons its the direct mother gamma0MotherLabel=gammaMC0->GetMother(0); } else if (TrueGammaCandidate0->IsLargestComponentElectron()){ // for electrons its either the direct mother or for conversions the grandmother + convertedPhotonLabel0 = gammaMC0->GetMother(0); if (TrueGammaCandidate0->IsConversion()) gamma0MotherLabel=MCStack->Particle(gammaMC0->GetMother(0))->GetMother(0); else gamma0MotherLabel=gammaMC0->GetMother(0); } @@ -1850,6 +1946,7 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidates(AliAODConversionMother if (TrueGammaCandidate1->IsLargestComponentPhoton()){ // for photons its the direct mother gamma1MotherLabel=gammaMC1->GetMother(0); } else if (TrueGammaCandidate1->IsLargestComponentElectron()){ // for electrons its either the direct mother or for conversions the grandmother + convertedPhotonLabel1 = gammaMC1->GetMother(0); if (TrueGammaCandidate1->IsConversion()) gamma1MotherLabel=MCStack->Particle(gammaMC1->GetMother(0))->GetMother(0); else gamma1MotherLabel=gammaMC1->GetMother(0); } @@ -1865,6 +1962,10 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidates(AliAODConversionMother } } + if (convertedPhotonLabel0 > -1 && convertedPhotonLabel1 > -1){ + if (convertedPhotonLabel0==convertedPhotonLabel1) isSameConvertedGamma = kTRUE; + } + if(isTruePi0 || isTrueEta){// True Pion or Eta if (isTruePi0) fHistoTruePi0InvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); if (isTrueEta) fHistoTrueEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); @@ -1916,6 +2017,71 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidates(AliAODConversionMother } } + if (fDoMesonQA == 2){ + // category 1: 2 real photons unmerged + if (TrueGammaCandidate0->IsLargestComponentPhoton() && !TrueGammaCandidate0->IsMerged() && TrueGammaCandidate1->IsLargestComponentPhoton() && !TrueGammaCandidate1->IsMerged()) { + if (isTruePi0) fHistoTruePi0Category1[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (isTrueEta) fHistoTrueEtaCategory1[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + // category 2, 3: 1 real photons unmerged, 1 electron (category 2 merged, category 3 unmerged ) + // -> photon 0 is unconverted + if ( (TrueGammaCandidate0->IsLargestComponentPhoton() && !TrueGammaCandidate0->IsMerged()) && (TrueGammaCandidate1->IsLargestComponentElectron() && TrueGammaCandidate1->IsConversion())) { + if (isTruePi0){ + if (TrueGammaCandidate1->IsMergedPartConv()) fHistoTruePi0Category2[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!TrueGammaCandidate1->IsMergedPartConv()){ + fHistoTruePi0Category3[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + } + if (isTrueEta){ + if (TrueGammaCandidate1->IsMergedPartConv()) fHistoTrueEtaCategory2[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!TrueGammaCandidate1->IsMergedPartConv()) fHistoTrueEtaCategory3[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + } + // -> photon 1 is unconverted + if ( ( TrueGammaCandidate1->IsLargestComponentPhoton() && !TrueGammaCandidate1->IsMerged()) && (TrueGammaCandidate0->IsLargestComponentElectron() && TrueGammaCandidate0->IsConversion())) { + if (isTruePi0){ + if (TrueGammaCandidate0->IsMergedPartConv()) fHistoTruePi0Category2[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!TrueGammaCandidate0->IsMergedPartConv()){ + fHistoTruePi0Category3[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + } + if (isTrueEta){ + if (TrueGammaCandidate0->IsMergedPartConv()) fHistoTrueEtaCategory2[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!TrueGammaCandidate0->IsMergedPartConv()) fHistoTrueEtaCategory3[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + } + + // category 4 & 6, 5, 7, 8 + if ( (TrueGammaCandidate0->IsLargestComponentElectron() && TrueGammaCandidate0->IsConversion()) && (TrueGammaCandidate1->IsLargestComponentElectron() && TrueGammaCandidate1->IsConversion()) ){ + if (isTruePi0){ + // category 4: both electrons are from same conversion + if (isSameConvertedGamma && !TrueGammaCandidate0->IsMergedPartConv() && !TrueGammaCandidate1->IsMergedPartConv() ) fHistoTruePi0Category4_6[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!isSameConvertedGamma ){ + if (!TrueGammaCandidate0->IsMergedPartConv() && !TrueGammaCandidate1->IsMergedPartConv()){ // category 5: both electrons from different converted photons, electrons not merged + fHistoTruePi0Category5[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } else if (TrueGammaCandidate0->IsMergedPartConv() && TrueGammaCandidate1->IsMergedPartConv()){ // category 8: both electrons from different converted photons, both electrons merged + fHistoTruePi0Category8[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } else { // category 7: both electrons from different converted photons, 1 electrons not merged, 1 electron merged + fHistoTruePi0Category7[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + } + } + if (isTrueEta){ + // category 4: both electrons are from same conversion + if (isSameConvertedGamma && !TrueGammaCandidate0->IsMergedPartConv() && !TrueGammaCandidate1->IsMergedPartConv()) fHistoTrueEtaCategory4_6[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!isSameConvertedGamma ){ + if (!TrueGammaCandidate0->IsMergedPartConv() && !TrueGammaCandidate1->IsMergedPartConv()){ // category 5: both electrons from different converted photons, electrons not merged + fHistoTrueEtaCategory5[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } else if (TrueGammaCandidate0->IsMergedPartConv() && TrueGammaCandidate1->IsMergedPartConv()){ // category 8: both electrons from different converted photons, both electrons merged + fHistoTrueEtaCategory8[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } else { // category 7: both electrons from different converted photons, 1 electrons not merged, 1 electron merged + fHistoTrueEtaCategory7[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + } + } + } + } + if (fDoMesonQA > 0){ if (isTruePi0){ if ( Pi0Candidate->M() > 0.05 && Pi0Candidate->M() < 0.17){ @@ -1940,7 +2106,6 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidates(AliAODConversionMother //cout << "MC input \t"<Pt()<<"\t"<Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec); - if (isTrueEta) fHistoTrueSecondaryEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec); if (secMotherLabel >-1){ if(MCStack->Particle(secMotherLabel)->GetPdgCode()==310 && isTruePi0){ fHistoTrueSecondaryPi0FromK0sInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec); @@ -1999,13 +2164,16 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidatesAOD(AliAODConversionMot // Process True Mesons TClonesArray *AODMCTrackArray = dynamic_cast(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName())); - Bool_t isTruePi0 = kFALSE; - Bool_t isTrueEta = kFALSE; + Bool_t isTruePi0 = kFALSE; + Bool_t isTrueEta = kFALSE; + Bool_t isSameConvertedGamma = kFALSE; + Int_t convertedPhotonLabel0 = -1; + Int_t convertedPhotonLabel1 = -1; - Int_t gamma0MCLabel = TrueGammaCandidate0->GetCaloPhotonMCLabel(0); // get most probable MC label - Int_t gamma0MotherLabel = -1; - // check if - + Int_t gamma0MCLabel = TrueGammaCandidate0->GetCaloPhotonMCLabel(0); // get most probable MC label + Int_t gamma0MotherLabel = -1; + + // check if if(gamma0MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother // Daughters Gamma 0 AliAODMCParticle * gammaMC0 = static_cast(AODMCTrackArray->At(gamma0MCLabel)); @@ -2015,6 +2183,7 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidatesAOD(AliAODConversionMot gamma0MotherLabel=gammaMC0->GetMother(); } else if (TrueGammaCandidate0->IsLargestComponentElectron()){ // for electrons its either the direct mother or for conversions the grandmother if (TrueGammaCandidate0->IsConversion()){ + convertedPhotonLabel0 = gammaMC0->GetMother(); AliAODMCParticle * gammaGrandMotherMC0 = static_cast(AODMCTrackArray->At(gammaMC0->GetMother())); gamma0MotherLabel=gammaGrandMotherMC0->GetMother(); } else gamma0MotherLabel=gammaMC0->GetMother(); @@ -2022,10 +2191,10 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidatesAOD(AliAODConversionMot } } - Int_t gamma1MCLabel = TrueGammaCandidate1->GetCaloPhotonMCLabel(0); // get most probable MC label - Int_t gamma1MotherLabel = -1; - // check if - + Int_t gamma1MCLabel = TrueGammaCandidate1->GetCaloPhotonMCLabel(0); // get most probable MC label + Int_t gamma1MotherLabel = -1; + + // check if if(gamma1MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother // Daughters Gamma 1 AliAODMCParticle * gammaMC1 = static_cast(AODMCTrackArray->At(gamma1MCLabel)); @@ -2035,6 +2204,7 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidatesAOD(AliAODConversionMot gamma1MotherLabel=gammaMC1->GetMother(); } else if (TrueGammaCandidate1->IsLargestComponentElectron()){ // for electrons its either the direct mother or for conversions the grandmother if (TrueGammaCandidate1->IsConversion()){ + convertedPhotonLabel1 = gammaMC1->GetMother(); AliAODMCParticle * gammaGrandMotherMC1 = static_cast(AODMCTrackArray->At(gammaMC1->GetMother())); gamma1MotherLabel=gammaGrandMotherMC1->GetMother(); } else gamma1MotherLabel=gammaMC1->GetMother(); @@ -2050,6 +2220,11 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidatesAOD(AliAODConversionMot isTrueEta=kTRUE; } } + + if (convertedPhotonLabel0 > -1 && convertedPhotonLabel1 > 1){ + if (convertedPhotonLabel0==convertedPhotonLabel1) isSameConvertedGamma = kTRUE; + } + if(isTruePi0 || isTrueEta){// True Pion or Eta if (isTruePi0)fHistoTruePi0InvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); @@ -2102,6 +2277,67 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidatesAOD(AliAODConversionMot } } + if (fDoMesonQA == 2){ + // category 1: 2 real photons unmerged + if (TrueGammaCandidate0->IsLargestComponentPhoton() && !TrueGammaCandidate0->IsMerged() && TrueGammaCandidate1->IsLargestComponentPhoton() && !TrueGammaCandidate1->IsMerged()) { + if (isTruePi0) fHistoTruePi0Category1[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (isTrueEta) fHistoTrueEtaCategory1[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + // category 2, 3: 1 real photons unmerged, 1 electron (category 2 merged, category 3 unmerged ) + // -> photon 0 is unconverted + if ( (TrueGammaCandidate0->IsLargestComponentPhoton() && !TrueGammaCandidate0->IsMerged()) && (TrueGammaCandidate1->IsLargestComponentElectron() && TrueGammaCandidate1->IsConversion())) { + if (isTruePi0){ + if (TrueGammaCandidate1->IsMergedPartConv()) fHistoTruePi0Category2[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!TrueGammaCandidate1->IsMergedPartConv()) fHistoTruePi0Category3[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + if (isTrueEta){ + if (TrueGammaCandidate1->IsMergedPartConv()) fHistoTrueEtaCategory2[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!TrueGammaCandidate1->IsMergedPartConv()) fHistoTrueEtaCategory3[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + } + // -> photon 1 is unconverted + if ( ( TrueGammaCandidate1->IsLargestComponentPhoton() && !TrueGammaCandidate1->IsMerged()) && (TrueGammaCandidate0->IsLargestComponentElectron() && TrueGammaCandidate0->IsConversion())) { + if (isTruePi0){ + if (TrueGammaCandidate0->IsMergedPartConv()) fHistoTruePi0Category2[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!TrueGammaCandidate0->IsMergedPartConv()) fHistoTruePi0Category3[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + if (isTrueEta){ + if (TrueGammaCandidate0->IsMergedPartConv()) fHistoTrueEtaCategory2[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!TrueGammaCandidate0->IsMergedPartConv()) fHistoTrueEtaCategory3[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + } + + // category 4 & 6, 5, 7, 8 + if ( (TrueGammaCandidate0->IsLargestComponentElectron() && TrueGammaCandidate0->IsConversion()) && (TrueGammaCandidate1->IsLargestComponentElectron() && TrueGammaCandidate1->IsConversion()) ){ + if (isTruePi0){ + // category 4: both electrons are from same conversion + if (isSameConvertedGamma && !TrueGammaCandidate0->IsMergedPartConv() && !TrueGammaCandidate1->IsMergedPartConv() ) fHistoTruePi0Category4_6[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!isSameConvertedGamma ){ + if (!TrueGammaCandidate0->IsMergedPartConv() && !TrueGammaCandidate1->IsMerged()){ // category 5: both electrons from different converted photons, electrons not merged + fHistoTruePi0Category5[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } else if (TrueGammaCandidate0->IsMergedPartConv() && TrueGammaCandidate1->IsMerged()){ // category 8: both electrons from different converted photons, both electrons merged + fHistoTruePi0Category8[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } else { // category 7: both electrons from different converted photons, 1 electrons not merged, 1 electron merged + fHistoTruePi0Category7[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + } + } + if (isTrueEta){ + // category 4: both electrons are from same conversion + if (isSameConvertedGamma && !TrueGammaCandidate0->IsMergedPartConv() && !TrueGammaCandidate1->IsMergedPartConv()) fHistoTrueEtaCategory4_6[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + if (!isSameConvertedGamma ){ + if (!TrueGammaCandidate0->IsMergedPartConv() && !TrueGammaCandidate1->IsMergedPartConv()){ // category 5: both electrons from different converted photons, electrons not merged + fHistoTrueEtaCategory5[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } else if (TrueGammaCandidate0->IsMergedPartConv() && TrueGammaCandidate1->IsMergedPartConv()){ // category 8: both electrons from different converted photons, both electrons merged + fHistoTrueEtaCategory8[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } else { // category 7: both electrons from different converted photons, 1 electrons not merged, 1 electron merged + fHistoTrueEtaCategory7[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); + } + } + } + } + } + if (fDoMesonQA > 0){ if (isTruePi0){ if ( Pi0Candidate->M() > 0.05 && Pi0Candidate->M() < 0.17){ @@ -2125,7 +2361,6 @@ void AliAnalysisTaskGammaCalo::ProcessTrueMesonCandidatesAOD(AliAODConversionMot //cout << "MC input \t"<Pt()<<"\t"<Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec); - if (isTrueEta) fHistoTrueSecondaryEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec); if (secMotherLabel >-1){ if(static_cast(AODMCTrackArray->At(secMotherLabel))->GetPdgCode()==310 && isTruePi0 ){ fHistoTrueSecondaryPi0FromK0sInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weightedSec);