\r
// Process reconstructed gammas\r
ProcessGammasForNeutralMesonAnalysis();\r
+\r
+ CheckV0Efficiency();\r
\r
PostData(1, fOutputContainer);\r
\r
fHistograms->FillHistogram("ESD_Mother_ZR", twoGammaCandidate->GetZ(), spaceVectorTwoGammaCandidate.Pt());\r
fHistograms->FillHistogram("ESD_Mother_XY", twoGammaCandidate->GetX(), twoGammaCandidate->GetY());\r
fHistograms->FillHistogram("ESD_Mother_InvMass_vs_Pt",massTwoGammaCandidate ,momentumVectorTwoGammaCandidate.Pt());\r
+ fHistograms->FillHistogram("ESD_Mother_InvMass",massTwoGammaCandidate);\r
}\r
}\r
delete twoGammaCandidate;\r
fHistograms->FillHistogram("ESD_Background_ZR", backgroundCandidate->GetZ(), SpaceVectorbackgroundCandidate.Pt());\r
fHistograms->FillHistogram("ESD_Background_XY", backgroundCandidate->GetX(), backgroundCandidate->GetY());\r
fHistograms->FillHistogram("ESD_Background_InvMass_vs_Pt",massBG,MomentumVectorbackgroundCandidate.Pt());\r
+ fHistograms->FillHistogram("ESD_Background_InvMass",massBG);\r
}\r
}\r
delete backgroundCandidate; \r
TVector3 v3D1(daughter1->Px(),daughter1->Py(),daughter1->Pz());\r
return v3D0.Angle(v3D1);\r
}\r
+\r
+void AliAnalysisTaskGammaConversion::CheckV0Efficiency(){\r
+\r
+ vector<Int_t> indexOfGammaParticle;\r
+\r
+ fStack = fV0Reader->GetMCStack();\r
+\r
+ if(fV0Reader->CheckForPrimaryVertex() == kFALSE){\r
+ return; // aborts if the primary vertex does not have contributors.\r
+ }\r
+\r
+ for (Int_t iTracks = 0; iTracks < fStack->GetNprimary(); iTracks++) {\r
+ TParticle* particle = (TParticle *)fStack->Particle(iTracks);\r
+ if(particle->GetPdgCode()==22){ //Gamma\r
+ if(particle->GetNDaughters() >= 2){\r
+ TParticle* electron=NULL;\r
+ TParticle* positron=NULL; \r
+ for(Int_t daughterIndex=particle->GetFirstDaughter();daughterIndex<=particle->GetLastDaughter();daughterIndex++){\r
+ TParticle *tmpDaughter = fStack->Particle(daughterIndex);\r
+ if(tmpDaughter->GetUniqueID() == 5){\r
+ if(tmpDaughter->GetPdgCode() == 11){\r
+ electron = tmpDaughter;\r
+ }\r
+ else if(tmpDaughter->GetPdgCode() == -11){\r
+ positron = tmpDaughter;\r
+ }\r
+ }\r
+ }\r
+ if(electron!=NULL && positron!=0){\r
+ if(electron->R()<160){\r
+ indexOfGammaParticle.push_back(iTracks);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ Int_t nFoundGammas=0;\r
+ Int_t nNotFoundGammas=0;\r
+\r
+ Int_t numberOfV0s = fV0Reader->GetNumberOfV0s();\r
+ for(Int_t i=0;i<numberOfV0s;i++){\r
+ fV0Reader->GetV0(i);\r
+ \r
+ if(fV0Reader->HasSameMCMother() == kFALSE){\r
+ continue;\r
+ }\r
+ \r
+ TParticle * negativeMC = (TParticle*)fV0Reader->GetNegativeMCParticle();\r
+ TParticle * positiveMC = (TParticle*)fV0Reader->GetPositiveMCParticle();\r
+ \r
+ if(TMath::Abs(negativeMC->GetPdgCode())!=11 || TMath::Abs(positiveMC->GetPdgCode())!=11){\r
+ continue;\r
+ }\r
+ if(negativeMC->GetPdgCode()==positiveMC->GetPdgCode()){\r
+ continue;\r
+ }\r
+ \r
+ if(fV0Reader->GetMotherMCParticle()->GetPdgCode() == 22){\r
+ //TParticle * v0Gamma = fV0Reader->GetMotherMCParticle();\r
+ for(UInt_t mcIndex=0;mcIndex<indexOfGammaParticle.size();mcIndex++){\r
+ if(negativeMC->GetFirstMother()==indexOfGammaParticle[mcIndex]){\r
+ nFoundGammas++;\r
+ }\r
+ else{\r
+ nNotFoundGammas++;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ // cout<<"Found: "<<nFoundGammas<<" of: "<<indexOfGammaParticle.size()<<endl;\r
+}\r