20 #include "TParticle.h" 22 #include "TMCProcess.h" 23 #include "TDatabasePDG.h" 26 #include "TDirectory.h" 30 #include "THnSparse.h" 32 #include "AliAnalysisManager.h" 33 #include "AliESDInputHandler.h" 34 #include "AliESDtrack.h" 35 #include "AliMCEvent.h" 36 #include "AliMCEventHandler.h" 39 #include "AliESDtrackCuts.h" 40 #include "AliESDpidCuts.h" 41 #include "AliMCEvent.h" 43 #include "AliESDEvent.h" 44 #include "AliESDpid.h" 45 #include "AliKFParticle.h" 46 #include "AliMCEventHandler.h" 47 #include "AliKFVertex.h" 48 #include "AliTriggerAnalysis.h" 49 #include "AliCentrality.h" 50 #include "AliMultiplicity.h" 60 fV0ReaderName("V0ReaderV1"),
73 fSelectorNegPionIndex(0),
74 fSelectorPosPionIndex(0),
76 fGoodVirtualParticles(NULL),
82 fConversionCuts(NULL),
83 fHistoConvGammaPt(NULL),
84 fHistoConvGammaEta(NULL),
85 fHistoNegPionPt(NULL),
86 fHistoPosPionPt(NULL),
87 fHistoNegPionPhi(NULL),
88 fHistoPosPionPhi(NULL),
89 fHistoNegPionEta(NULL),
90 fHistoPosPionEta(NULL),
91 fHistoNegPionClsTPC(NULL),
92 fHistoPosPionClsTPC(NULL),
93 fHistoPionDCAxy(NULL),
95 fHistoPionTPCdEdxNSigma(NULL),
96 fHistoPionTPCdEdx(NULL),
97 fHistoPionPionInvMassPt(NULL),
98 fHistoMotherInvMassPt(NULL),
99 fTHnSparseMotherInvMassPtZM(NULL),
100 fHistoMotherBackInvMassPt(NULL),
101 fTHnSparseMotherBackInvMassPtZM(NULL),
102 fHistoMCAllGammaPt(NULL),
103 fHistoMCConvGammaPt(NULL),
104 fHistoMCAllPosPionsPt(NULL),
105 fHistoMCAllNegPionsPt(NULL),
106 fHistoMCGammaFromEtaPt(NULL),
107 fHistoMCPosPionsFromEtaPt(NULL),
108 fHistoMCNegPionsFromEtaPt(NULL),
109 fHistoMCEtaPiPlPiMiGammaPt(NULL),
110 fHistoMCEtaGGPt(NULL),
111 fHistoMCEtaDalitzPt(NULL),
112 fHistoMCEtaPiPlPiMiGammaInAccPt(NULL),
113 fHistoTrueMotherPiPlPiMiGammaInvMassPt(NULL),
114 fHistoTrueMotherGammaGammaInvMassPt(NULL),
115 fHistoTrueMotherDalitzInvMassPt(NULL),
116 fHistoTrueConvGammaPt(NULL),
117 fHistoTrueConvGammaFromEtaPt(NULL),
118 fHistoTruePosPionPt(NULL),
119 fHistoTruePosPionFromEtaPt(NULL),
120 fHistoTrueNegPionPt(NULL),
121 fHistoTrueNegPionFromEtaPt(NULL),
122 fHistoTruePionPionInvMassPt(NULL),
123 fHistoTruePionPionFromEtaInvMassPt(NULL),
124 fHistoDoubleCountTrueEtaInvMassPt(NULL),
125 fHistoDoubleCountTrueConvGammaRPt(NULL),
126 fVectorDoubleCountTrueEtas(0),
127 fVectorDoubleCountTrueConvGammas(0),
129 fHistoNGoodESDTracks(NULL),
130 fProfileEtaShift(NULL),
131 fHistoSPDClusterTrackletBackground(NULL),
135 fNumberOfESDTracks(0),
136 fMoveParticleAccordingToVertex(kFALSE),
138 fDoMesonAnalysis(kTRUE),
140 fIsFromMBHeader(kTRUE),
142 fIsGammaEtaCand(kFALSE)
151 fV0ReaderName(
"V0ReaderV1"),
164 fSelectorNegPionIndex(0),
165 fSelectorPosPionIndex(0),
167 fGoodVirtualParticles(NULL),
168 fEventCutArray(NULL),
169 fGammaCutArray(NULL),
171 fMesonCutArray(NULL),
173 fConversionCuts(NULL),
174 fHistoConvGammaPt(NULL),
175 fHistoConvGammaEta(NULL),
176 fHistoNegPionPt(NULL),
177 fHistoPosPionPt(NULL),
178 fHistoNegPionPhi(NULL),
179 fHistoPosPionPhi(NULL),
180 fHistoNegPionEta(NULL),
181 fHistoPosPionEta(NULL),
182 fHistoNegPionClsTPC(NULL),
183 fHistoPosPionClsTPC(NULL),
184 fHistoPionDCAxy(NULL),
185 fHistoPionDCAz(NULL),
186 fHistoPionTPCdEdxNSigma(NULL),
187 fHistoPionTPCdEdx(NULL),
188 fHistoPionPionInvMassPt(NULL),
189 fHistoMotherInvMassPt(NULL),
190 fTHnSparseMotherInvMassPtZM(NULL),
191 fHistoMotherBackInvMassPt(NULL),
192 fTHnSparseMotherBackInvMassPtZM(NULL),
193 fHistoMCAllGammaPt(NULL),
194 fHistoMCConvGammaPt(NULL),
195 fHistoMCAllPosPionsPt(NULL),
196 fHistoMCAllNegPionsPt(NULL),
197 fHistoMCGammaFromEtaPt(NULL),
198 fHistoMCPosPionsFromEtaPt(NULL),
199 fHistoMCNegPionsFromEtaPt(NULL),
200 fHistoMCEtaPiPlPiMiGammaPt(NULL),
201 fHistoMCEtaGGPt(NULL),
202 fHistoMCEtaDalitzPt(NULL),
203 fHistoMCEtaPiPlPiMiGammaInAccPt(NULL),
204 fHistoTrueMotherPiPlPiMiGammaInvMassPt(NULL),
205 fHistoTrueMotherGammaGammaInvMassPt(NULL),
206 fHistoTrueMotherDalitzInvMassPt(NULL),
207 fHistoTrueConvGammaPt(NULL),
208 fHistoTrueConvGammaFromEtaPt(NULL),
209 fHistoTruePosPionPt(NULL),
210 fHistoTruePosPionFromEtaPt(NULL),
211 fHistoTrueNegPionPt(NULL),
212 fHistoTrueNegPionFromEtaPt(NULL),
213 fHistoTruePionPionInvMassPt(NULL),
214 fHistoTruePionPionFromEtaInvMassPt(NULL),
215 fHistoDoubleCountTrueEtaInvMassPt(NULL),
216 fHistoDoubleCountTrueConvGammaRPt(NULL),
217 fVectorDoubleCountTrueEtas(0),
218 fVectorDoubleCountTrueConvGammas(0),
220 fHistoNGoodESDTracks(NULL),
221 fProfileEtaShift(NULL),
222 fHistoSPDClusterTrackletBackground(NULL),
226 fNumberOfESDTracks(0),
227 fMoveParticleAccordingToVertex(kFALSE),
229 fDoMesonAnalysis(kTRUE),
231 fIsFromMBHeader(kTRUE),
233 fIsGammaEtaCand(kFALSE)
235 DefineOutput(1, TList::Class());
244 cout<<
"Destructor"<<endl;
261 const Int_t nDim = 4;
262 Int_t nBins[nDim] = {450,250,7,4};
264 Double_t xMax[nDim] = {0.75,25,7,4};
281 if(collisionSystem == 1 || collisionSystem == 2 ||
282 collisionSystem == 5 || collisionSystem == 8 ||
283 collisionSystem == 9){
284 centMin = centMin*10;
285 centMax = centMax*10;
287 else if(collisionSystem == 3 || collisionSystem == 6){
291 else if(collisionSystem == 4 || collisionSystem == 7){
292 centMin = ((centMin*5)+45);
293 centMax = ((centMax*5)+45);
298 fBackList[iCut]->SetName(Form(
"%s_%s_%s_%s Back histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringPion.Data(),cutstringMeson.Data()));
306 fMotherList[iCut]->SetName(Form(
"%s_%s_%s_%s Mother histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringPion.Data(),cutstringMeson.Data()));
310 fTHnSparseMotherInvMassPtZM[iCut] =
new THnSparseF(
"Back_Mother_InvMass_Pt_z_m",
"Back_Mother_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
382 fCutFolder[iCut]->SetName(Form(
"Cut Number %s_%s_%s_%s",cutstringEvent.Data(),cutstringGamma.Data(),cutstringPion.Data(),cutstringMeson.Data()));
387 fESDList[iCut]->SetName(Form(
"%s_%s_%s_%s ESD histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringPion.Data(),cutstringMeson.Data()));
392 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(2,
"Centrality");
393 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(3,
"Miss. MC or inc. ev.");
396 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(6,
"Cont. Vertex");
400 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(10,
"EMCAL problems");
401 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(12,
"SPD hits vs tracklet");
402 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(13,
"Out-of-Bunch pileup Past-Future");
403 fHistoNEvents[iCut]->GetXaxis()->SetBinLabel(14,
"Pileup V0M-TPCout Tracks");
414 fHistoConvGammaPt[iCut] =
new TH1F(
"ESD_ConvGamma_Pt",
"ESD_ConvGamma_Pt",250,0,25);
416 fHistoConvGammaEta[iCut] =
new TH1F(
"ESD_ConvGamma_Eta",
"ESD_ConvGamma_Eta",600,-1.5,1.5);
418 fHistoNegPionPt[iCut] =
new TH1F(
"ESD_PrimaryNegPions_Pt",
"ESD_PrimaryNegPions_Pt",1000,0,25);
420 fHistoPosPionPt[iCut] =
new TH1F(
"ESD_PrimaryPosPions_Pt",
"ESD_PrimaryPosPions_Pt",1000,0,25);
422 fHistoNegPionPhi[iCut] =
new TH1F(
"ESD_PrimaryNegPions_Phi",
"ESD_PrimaryNegPions_Phi",360,0,2*TMath::Pi());
424 fHistoPosPionPhi[iCut] =
new TH1F(
"ESD_PrimaryPosPions_Phi",
"ESD_PrimaryPosPions_Phi",360,0,2*TMath::Pi());
428 fHistoNegPionEta[iCut] =
new TH1F(
"ESD_PrimaryNegPions_Eta",
"ESD_PrimaryNegPions_Eta",600,-1.5,1.5);
430 fHistoPosPionEta[iCut] =
new TH1F(
"ESD_PrimaryPosPions_Eta",
"ESD_PrimaryPosPions_Eta",600,-1.5,1.5);
432 fHistoNegPionClsTPC[iCut] =
new TH2F(
"ESD_PrimaryNegPions_ClsTPC",
"ESD_PrimaryNegPions_ClsTPC",100,0,1,400,0.,10.);
434 fHistoPosPionClsTPC[iCut] =
new TH2F(
"ESD_PrimaryPosPions_ClsTPC",
"ESD_PrimaryPosPions_ClsTPC",100,0,1,400,0.,10.);
436 fHistoPionDCAxy[iCut] =
new TH2F(
"ESD_PrimaryPions_DCAxy",
"ESD_PrimaryPions_DCAxy",800,-4.0,4.0,400,0.,10.);
438 fHistoPionDCAz[iCut] =
new TH2F(
"ESD_PrimaryPions_DCAz",
"ESD_PrimaryPions_DCAz",800,-4.0,4.0,400,0.,10.);
442 fHistoPionTPCdEdx[iCut] =
new TH2F(
"ESD_PrimaryPions_TPCdEdxSignal",
"ESD_PrimaryPions_TPCdEdxSignal" ,150,0.05,20.0,800,0.0,200);
455 Int_t bins = AxisAfter->GetNbins();
456 Double_t from = AxisAfter->GetXmin();
460 Double_t factor = TMath::Power(to/from, 1./bins);
461 for(
Int_t i=1; i<=bins; ++i) newBins[i] = factor * newBins[i-1];
463 AxisAfter->Set(bins, newBins);
465 AxisAfter->Set(bins, newBins);
522 fMCList[iCut]->SetName(Form(
"%s_%s_%s_%s MC histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringPion.Data(),cutstringMeson.Data()));
523 fMCList[iCut]->SetOwner(kTRUE);
549 fHistoMCEtaGGPt[iCut] =
new TH1F(
"MC_Eta_GG_Pt",
"MC_Eta_GG_Pt",250,0,25);
558 fTrueList[iCut]->SetName(Form(
"%s_%s_%s_%s True histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringPion.Data(),cutstringMeson.Data()));
609 if(!
fV0Reader){printf(
"Error: No V0 Reader");
return;}
657 if(!
fV0Reader){printf(
"Error: No V0 Reader");
return;}
660 if(InputEvent()->IsIncompleteDAQ()==kTRUE) eventQuality = 2;
661 if(eventQuality == 2 || eventQuality == 3){
684 if(eventNotAccepted){
690 if(eventQuality != 0){
698 fHistoSPDClusterTrackletBackground[iCut]->Fill(fInputEvent->GetMultiplicity()->GetNumberOfTracklets(),(fInputEvent->GetNumberOfITSClusters(0)+fInputEvent->GetNumberOfITSClusters(1)));
751 printf(
" Eta t PiPlusPiMinus Gamma Task %s :: Eta Shift Manually Set to %f \n\n",
775 if(!PhotonCandidate)
continue;
780 Int_t isPosFromMBHeader
783 Int_t isNegFromMBHeader
786 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
807 GoodGammasStepOne->Add(PhotonCandidate);
810 GoodGammasStepTwo->Add(PhotonCandidate);
816 for(
Int_t i = 0;i<GoodGammasStepOne->GetEntries();i++){
818 if(!PhotonCandidate)
continue;
821 Int_t isPosFromMBHeader
823 Int_t isNegFromMBHeader
825 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
838 else GoodGammasStepTwo->Add(PhotonCandidate);
842 for(
Int_t i = 0;i<GoodGammasStepTwo->GetEntries();i++){
844 if(!PhotonCandidate)
continue;
847 Int_t isPosFromMBHeader
849 Int_t isNegFromMBHeader
851 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
868 delete GoodGammasStepOne;
869 GoodGammasStepOne = 0x0;
870 delete GoodGammasStepTwo;
871 GoodGammasStepTwo = 0x0;
881 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
882 Double_t mcProdVtxX = primVtxMC->GetX();
883 Double_t mcProdVtxY = primVtxMC->GetY();
884 Double_t mcProdVtxZ = primVtxMC->GetZ();
887 if(posDaughter == NULL || negDaughter == NULL)
return;
888 if(posDaughter->GetMother(0) != negDaughter->GetMother(0)){
892 else if (posDaughter->GetMother(0) == -1){
896 if(TMath::Abs(posDaughter->GetPdgCode())!=11 || TMath::Abs(negDaughter->GetPdgCode())!=11)
return;
897 if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode())
return;
898 if(posDaughter->GetUniqueID() != 5 || negDaughter->GetUniqueID() !=5)
return;
901 if(Photon->GetPdgCode() != 22)
return;
909 if( gammaIsPrimary ){
916 if( gammaIsPrimary ) {
945 Double_t magField = fInputEvent->GetMagneticField();
946 if( magField < 0.0 ){
952 vector<Int_t> lGoodNegPionIndexPrev(0);
953 vector<Int_t> lGoodPosPionIndexPrev(0);
962 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
963 Double_t mcProdVtxX = primVtxMC->GetX();
964 Double_t mcProdVtxY = primVtxMC->GetY();
965 Double_t mcProdVtxZ = primVtxMC->GetZ();
967 Int_t labelNegPion = TMath::Abs( negPionCandidate->GetLabel() );
969 if( negPionIsPrimary ){
970 TParticle* negPion =
fMCEvent->Particle(labelNegPion);
971 if( negPion->GetPdgCode() == -211 ){
990 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
991 Double_t mcProdVtxX = primVtxMC->GetX();
992 Double_t mcProdVtxY = primVtxMC->GetY();
993 Double_t mcProdVtxZ = primVtxMC->GetZ();
995 Int_t labelPosPion = TMath::Abs( posPionCandidate->GetLabel() );
997 if( posPionIsPrimary ) {
998 TParticle* posPion =
fMCEvent->Particle(labelPosPion);
999 if( posPion->GetPdgCode() == 211 ){
1011 for(
ULong_t i = 0; i < lGoodNegPionIndexPrev.size(); i++){
1013 AliESDtrack *negPionCandidate =
fESDEvent->GetTrack(lGoodNegPionIndexPrev[i]);
1014 AliKFParticle negPionCandidateKF( *negPionCandidate->GetConstrainedParam(), 211 );
1016 for(
ULong_t j = 0; j < lGoodPosPionIndexPrev.size(); j++){
1018 AliESDtrack *posPionCandidate =
fESDEvent->GetTrack(lGoodPosPionIndexPrev[j]);
1019 AliKFParticle posPionCandidateKF( *posPionCandidate->GetConstrainedParam(), 211 );
1023 AliKFVertex primaryVertexImproved(*fInputEvent->GetPrimaryVertex());
1025 virtualPhoton->SetProductionVertex(primaryVertexImproved);
1026 virtualPhoton->SetTrackLabels( lGoodPosPionIndexPrev[j], lGoodNegPionIndexPrev[i]);
1030 Int_t labeln=TMath::Abs(negPionCandidate->GetLabel());
1031 Int_t labelp=TMath::Abs(posPionCandidate->GetLabel());
1032 TParticle *fNegativeMCParticle =
fMCEvent->Particle(labeln);
1033 TParticle *fPositiveMCParticle =
fMCEvent->Particle(labelp);
1035 if( fPositiveMCParticle && fNegativeMCParticle) {
1036 virtualPhoton->SetMCLabelPositive(labelp);
1037 virtualPhoton->SetMCLabelNegative(labeln);
1049 delete virtualPhoton;
1061 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
1062 Double_t mcProdVtxX = primVtxMC->GetX();
1063 Double_t mcProdVtxY = primVtxMC->GetY();
1064 Double_t mcProdVtxZ = primVtxMC->GetZ();
1069 TParticle* particle = (TParticle *)
fMCEvent->Particle(i);
1070 if (!particle)
continue;
1072 Int_t isMCFromMBHeader = -1;
1083 if(particle->GetMother(0) >-1){
1093 if( particle->GetPdgCode() == 211){
1095 if(particle->GetMother(0) >-1){
1099 if( particle->GetPdgCode() == -211){
1101 if(particle->GetMother(0) >-1){
1113 if (particle->Pt()>0.005){
1122 Int_t labelgamma = -1;
1123 Int_t labelelectron = -1;
1124 Int_t labelpositron = -1;
1130 if (particle->Pt()>0.005){
1140 Int_t labelGamma3Body = -1;
1141 Int_t labelNegPion = -1;
1142 Int_t labelPosPion = -1;
1148 if (particle->Pt()>0.005){
1155 TParticle *gamma =
fMCEvent->Particle(labelGamma3Body);
1160 if( gammaIsPrimary && negPionIsPrimary && posPionIsPrimary &&
1181 for(
Int_t GammaIndex=0; GammaIndex<
fGoodGammas->GetEntries(); GammaIndex++){
1184 if (gamma==NULL)
continue;
1188 if (vParticle==NULL)
continue;
1196 etacand->
SetLabels(GammaIndex,virtualParticleIndex);
1220 AliESDtrack *posPionVParticle = 0;
1221 AliESDtrack *negPionVParticle = 0;
1226 Float_t dcaToVertexXYPos = -1.0;
1227 Float_t dcaToVertexZPos = -1.0;
1228 Float_t dcaToVertexXYNeg = -1.0;
1229 Float_t dcaToVertexZNeg = -1.0;
1243 posPionVParticle->GetImpactParameters(bPos,bCovPos);
1244 if (bCovPos[0]<=0 || bCovPos[2]<=0) {
1245 AliDebug(1,
"Estimated b resolution lower or equal zero!");
1246 bCovPos[0]=0; bCovPos[2]=0;
1251 posPionVParticle->GetImpactParameters(bNeg,bCovNeg);
1252 if (bCovNeg[0]<=0 || bCovNeg[2]<=0) {
1253 AliDebug(1,
"Estimated b resolution lower or equal zero!");
1254 bCovNeg[0]=0; bCovNeg[2]=0;
1257 dcaToVertexXYPos = bPos[0];
1258 dcaToVertexZPos = bPos[1];
1259 dcaToVertexXYNeg = bNeg[0];
1260 dcaToVertexZNeg = bNeg[1];
1268 if( lGoodVirtualParticle[virtualParticleIndex] == kFALSE ) {
1287 lGoodVirtualParticle[virtualParticleIndex] = kTRUE;
1329 for(
UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
1344 delete backgroundCandidate;
1345 backgroundCandidate = 0x0;
1352 if(previousEventV0s){
1360 for(
UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
1375 delete backgroundCandidate;
1376 backgroundCandidate = 0x0;
1391 Bool_t isTrueEta = kFALSE;
1393 Int_t gammaMotherLabel = -1;
1396 if(gammaMCLabel != -1){
1400 TParticle * gammaMC = (TParticle*)
fMCEvent->Particle(gammaMCLabel);
1402 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
1403 if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){
1404 if(gammaMC->GetPdgCode() == 22){
1405 gammaMotherLabel=gammaMC->GetFirstMother();
1415 Int_t virtualParticleMotherLabel = -1;
1417 Bool_t isPiPiDecay = kFALSE;
1418 Bool_t isDalitz = kFALSE;
1419 Bool_t isRealGamma = kFALSE;
1428 if(TMath::Abs(negativeMC->GetPdgCode())==211 && TMath::Abs(positiveMC->GetPdgCode())==211){
1433 if(virtualParticleMCLabel != -1){
1436 TParticle * virtualParticleMotherMC = (TParticle*)
fMCEvent->Particle(virtualParticleMCLabel);
1439 if(TMath::Abs(negativeMC->GetPdgCode())==211 && TMath::Abs(positiveMC->GetPdgCode())==211){
1440 virtualParticleMotherLabel=virtualParticleMCLabel;
1442 }
else if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
1443 if( virtualParticleMotherMC->GetPdgCode() != 22 ){
1444 virtualParticleMotherLabel=virtualParticleMCLabel;
1446 }
else if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){
1447 virtualParticleMotherLabel=virtualParticleMotherMC->GetFirstMother();
1448 isRealGamma = kTRUE;
1453 if(gammaMotherLabel >= 0 && ( gammaMotherLabel == virtualParticleMotherLabel) ){
1454 if(((TParticle*)
fMCEvent->Particle(virtualParticleMotherLabel))->GetPdgCode() == 221){
1465 if (((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->Pt()>0.005){
1472 }
else if ( isRealGamma ){
1476 if (((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->Pt()>0.005){
1483 }
else if (isDalitz) {
1487 if (((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->Pt()>0.005){
1512 }
else if ( method == 2 ){
1527 Double_t dx = vertex->
fX - fInputEvent->GetPrimaryVertex()->GetX();
1528 Double_t dy = vertex->
fY - fInputEvent->GetPrimaryVertex()->GetY();
1529 Double_t dz = vertex->
fZ - fInputEvent->GetPrimaryVertex()->GetZ();
1540 Int_t motherLabel =
fMCEvent->Particle( label )->GetMother(0);
1541 if( motherLabel < 0 || motherLabel >=
fMCEvent->GetNumberOfTracks() )
return kFALSE;
1543 TParticle* mother =
fMCEvent->Particle( motherLabel );
1544 if( mother->GetPdgCode() != 221 )
return kFALSE;
1553 if( fMCMother->GetNDaughters() != 3 )
return kFALSE;
1554 if( fMCMother->GetPdgCode() != 221 )
return kFALSE;
1557 TParticle *posPion = 0x0;
1558 TParticle *negPion = 0x0;
1559 TParticle *gamma = 0x0;
1561 for(
Int_t index= fMCMother->GetFirstDaughter();index<= fMCMother->GetLastDaughter();index++){
1562 TParticle* temp = (TParticle*)
fMCEvent->Particle( index );
1564 switch( temp->GetPdgCode() ) {
1577 if( posPion && negPion && gamma)
return kTRUE;
1585 if(tobechecked > -1)
1587 vector<Int_t>::iterator it;
1588 it = find (vec.begin(), vec.end(), tobechecked);
1589 if (it != vec.end())
return true;
1591 vec.push_back(tobechecked);
TParticle * GetMCParticle(AliMCEvent *mcEvent)
TH2F ** fHistoPionTPCdEdxNSigma
Int_t GetMCLabelPositive() const
vector< Int_t > fSelectorNegPionIndex
vector< Int_t > GetReconstructedPosPionIndex()
TH2F ** fHistoMotherBackInvMassPt
void SetLabels(Int_t label1, Int_t label2, Int_t label3=0)
TH1F ** fHistoMCEtaPiPlPiMiGammaInAccPt
TH1I ** fHistoNGoodESDTracks
GammaConversionVertex * GetBGEventVertex(Int_t zbin, Int_t mbin, Int_t event)
TH1F ** fHistoMCEtaDalitzPt
void SetConversionPoint(Double_t convpoint[3])
TH1F ** fHistoMCAllPosPionsPt
AliPrimaryPionSelector * fPionSelector
TH1F ** fHistoMCNegPionsFromEtaPt
void MoveParticleAccordingToVertex(AliAODConversionPhoton *particle, const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex)
TH1F ** fHistoMCAllNegPionsPt
Int_t GetNumberOfPrimaryTracks()
TH1F ** fHistoMCGammaFromEtaPt
TH1F ** fHistoTruePosPionFromEtaPt
void CalculateBackground()
TH2F ** fHistoTruePionPionFromEtaInvMassPt
Double_t GetConversionZ() const
TH2F ** fHistoMotherInvMassPt
TParticle * GetPositiveMCDaughter(AliMCEvent *mcEvent)
virtual void UserExec(Option_t *)
Bool_t fMoveParticleAccordingToVertex
TH2F ** fHistoNegPionClsTPC
TH1I ** fHistoNEvents
vector containing labels of validated photons
THnSparseF ** fTHnSparseMotherInvMassPtZM
void ProcessMCParticles()
TH2F ** fHistoDoubleCountTrueConvGammaRPt
array of histos with double counted etas, invMass, pT
TParticle * GetNegativeMCDaughter(AliMCEvent *mcEvent)
void ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate, AliAODConversionPhoton *TrueVirtualGammaCandidate)
std::vector< AliAODConversionPhoton * > AliGammaConversionAODVector
THnSparseF ** fTHnSparseMotherBackInvMassPtZM
void AddEvent(TList *const eventGammas, Double_t xvalue, Double_t yvalue, Double_t zvalue, Int_t multiplicity, Double_t epvalue=-100)
Int_t GetTrackLabelNegative() const
void CalculateMesonCandidates()
Bool_t CheckVectorForDoubleCount(vector< Int_t > &vec, Int_t tobechecked)
TH2F ** fHistoDoubleCountTrueEtaInvMassPt
Int_t GetTrackLabelPositive() const
TH1F ** fHistoMCPosPionsFromEtaPt
AliConversionPhotonCuts * GetConversionCuts()
TH1F ** fHistoMCConvGammaPt
void ProcessTruePhotonCandidates(AliAODConversionPhoton *)
TH2F ** fHistoPionPionInvMassPt
TH1F ** fHistoTrueConvGammaPt
Class handling all kinds of selection cuts for Gamma Conversion analysis.
void ProcessPhotonCandidates()
TH1F ** fHistoTrueNegPionPt
Int_t GetMCParticleLabel(AliMCEvent *mcEvent)
TH1F ** fHistoTrueConvGammaFromEtaPt
void ProcessPionCandidates()
TH2F ** fHistoTrueMotherGammaGammaInvMassPt
TH2F ** fHistoTrueMotherDalitzInvMassPt
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TH2F ** fHistoSPDClusterTrackletBackground
TH1F ** fHistoMCEtaPiPlPiMiGammaPt
AliV0ReaderV1 * fV0Reader
virtual void Terminate(const Option_t *)
Int_t GetMCLabelNegative() const
TH2F ** fHistoTruePionPionInvMassPt
AliAnalysisTaskEtaToPiPlPiMiGamma()
Int_t GetNBGEvents() const
AliGammaConversionAODBGHandler ** fBGHandler
Double_t GetConversionY() const
TH1F ** fHistoTrueNegPionFromEtaPt
Int_t GetZBinIndex(Double_t z) const
vector< Int_t > fSelectorPosPionIndex
AliGammaConversionAODVector * GetBGGoodV0s(Int_t zbin, Int_t mbin, Int_t event)
TH1F ** fHistoConvGammaPt
TH1F ** fHistoTruePosPionPt
TH2F ** fHistoTrueMotherPiPlPiMiGammaInvMassPt
Bool_t IsEtaPiPlPiMiGammaDaughter(Int_t label) const
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TH2F ** fHistoPosPionClsTPC
void UpdateEventByEventData()
TClonesArray * GetReconstructedGammas() const
AliPrimaryPionCuts * GetPrimaryPionCuts()
Bool_t IsPiPlPiMiGammaDecay(TParticle *fMCMother) const
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TH1F ** fHistoMCAllGammaPt
TH2F ** fHistoPionTPCdEdx
virtual void UserCreateOutputObjects()
TList * fGoodVirtualParticles
AliConvEventCuts * GetEventCuts()
vector< Int_t > fVectorDoubleCountTrueEtas
array of histos with double counted photons, R, pT
Int_t GetMultiplicityBinIndex(Int_t mult) const
vector< Int_t > GetReconstructedNegPionIndex()
vector< Int_t > fVectorDoubleCountTrueConvGammas
vector containing labels of validated eta
TH1F ** fHistoConvGammaEta
TClonesArray * fReaderGammas
Double_t GetConversionRadius() const
Double_t GetConversionX() const
virtual ~AliAnalysisTaskEtaToPiPlPiMiGamma()
TProfile ** fProfileEtaShift