18 #include "TDatabasePDG.h" 22 #include "AliMCEvent.h" 23 #include "AliGenPythiaEventHeader.h" 24 #include "AliVParticle.h" 35 fTriggerDetector(), fTriggerDetectorString(),
37 fMinChargedPt(0), fMinNeutralPt(0),
39 fParton6(), fParton7(),
40 fParton6PDG(0), fParton7PDG(0),
43 fNPrimaries(0), fPtHard(0),
44 fhPtHard(0), fhPtParton(0), fhPtJet(0),
45 fhPtPartonPtHard(0), fhPtJetPtHard(0), fhPtJetPtParton(0),
46 fhPtOtherDecayMesonId(0),
47 fhPtPi0Status(0), fhPtEtaStatus(0),
48 fhPtPi0DecayStatus(0), fhPtEtaDecayStatus(0), fhPtOtherDecayStatus(0),
49 fhPtPi0Not2Gamma(0), fhPtEtaNot2Gamma(0)
70 for(
Int_t j = 0; j < 2; j++)
108 AliDebug(1,Form(
"End, not enough partons, n primaries %d",
fNPrimaries));
115 iparton = (
GetMC()->GetTrack(indexTrig))->GetMother();
116 AliVParticle * mother =
GetMC()->GetTrack(iparton);
119 iparton = mother->GetMother();
122 AliDebug(1,
"Negative index, skip AOD event");
125 mother =
GetMC()->GetTrack(iparton);
132 AliDebug(1,Form(
"This particle is not from hard process - pdg %d, parton index %d\n",partType, iparton));
143 AliDebug(1,Form(
"Trigger pdg %d pT %2.2f, phi %2.2f, eta %2.2f", partType,ptTrig,phiTrig*TMath::RadToDeg(),etaTrig));
149 AliDebug(1,Form(
"Jet 6 pT %2.2f, phi %2.2f, eta %2.2f",jetPt,jetPhi*TMath::RadToDeg(),jetEta));
155 AliDebug(1,Form(
"Jet 7 pT %2.2f, phi %2.2f, eta %2.2f",awayJetPt,awayJetPhi*TMath::RadToDeg(),awayJetEta));
170 jetPhi =
fJet7.Phi();
171 jetEta =
fJet7.Eta();
173 awayJetPt =
fJet6.Pt();
174 awayJetEta =
fJet6.Eta();
175 awayJetPhi =
fJet6.Phi();
181 Float_t deltaPhi = TMath::Abs(phiTrig-awayJetPhi) *TMath::RadToDeg();
182 AliDebug(1,Form(
"Trigger Away jet phi %2.2f\n",deltaPhi));
189 if (nearPDG == 22) near = 0;
190 else if(nearPDG == 21) near = 1;
193 if (awayPDG == 22) away = 0;
194 else if(awayPDG == 21) away = 1;
204 if( partonPt > 0 ) zPart = ptTrig / partonPt;
205 if( jetPt > 0 ) zJet = ptTrig / jetPt ;
231 if(partType ==
kmcPrimPhoton && deltaPhi < 220 && deltaPhi > 140 && TMath::Abs(awayJetEta) < 0.6)
240 AliDebug(1,
"End TRUE");
251 outputContainer->SetName(
"GenKineHistos") ;
261 fhPtHard =
new TH1F(
"hPtHard",
" pt hard for selected triggers",nptbins,ptmin,ptmax);
262 fhPtHard->SetXTitle(
"#it{p}_{T}^{hard} (GeV/#it{c})");
265 fhPtParton =
new TH1F(
"hPtParton",
" pt parton for selected triggers",nptbins,ptmin,ptmax);
266 fhPtParton->SetXTitle(
"#it{p}_{T}^{parton} (GeV/#it{c})");
269 fhPtJet =
new TH1F(
"hPtJet",
" pt jet for selected triggers",nptbins,ptmin,ptmax);
270 fhPtJet->SetXTitle(
"#it{p}_{T}^{jet} (GeV/#it{c})");
273 fhPtPartonPtHard =
new TH2F(
"hPtPartonPtHard",
"parton pt / pt hard for selected triggers",nptbins,ptmin,ptmax,200,0,2);
278 fhPtJetPtHard =
new TH2F(
"hPtJetPtHard",
"jet pt / pt hard for selected triggers",nptbins,ptmin,ptmax,200,0,2);
280 fhPtJetPtHard->SetYTitle(
"#it{p}_{T}^{jet}/#it{p}_{T}^{hard}");
283 fhPtJetPtParton =
new TH2F(
"hPtJetPtParton",
"parton pt / pt hard for selected triggers",nptbins,ptmin,ptmax,200,0,2);
288 fhPtPi0Not2Gamma =
new TH1F(
"hPtPi0Not2Gamma",
"#pi^{0} decay other than 2 #gamma",nptbins,ptmin,ptmax);
292 fhPtEtaNot2Gamma =
new TH1F(
"hPtEtaNot2Gamma",
"#eta decay other than 2 #gamma",nptbins,ptmin,ptmax);
296 fhPtGammaFromPi0Not2Gamma =
new TH1F(
"hPtGammaFromPi0Not2Gamma",
"#gamma from #pi^{0} decay other than 2 #gamma",nptbins,ptmin,ptmax);
300 fhPtGammaFromEtaNot2Gamma =
new TH1F(
"hPtGammaFromEtaNot2Gamma",
"#gamma from #eta decay other than 2 #gamma",nptbins,ptmin,ptmax);
304 fhPtPi0Status =
new TH2F(
"hPtPi0Status",
"#pi^{0} status",nptbins,ptmin,ptmax,101,-50,50);
309 fhPtEtaStatus =
new TH2F(
"hPtEtaStatus",
"#eta status",nptbins,ptmin,ptmax,101,-50,50);
314 fhPtPi0DecayStatus =
new TH2F(
"hPtPi0DecayStatus",
"#gamma from #pi^{0}, mother status",nptbins,ptmin,ptmax,101,-50,50);
319 fhPtEtaDecayStatus =
new TH2F(
"hPtEtaStatus",
"#gamma from #eta, mother status",nptbins,ptmin,ptmax,101,-50,50);
324 fhPtOtherDecayStatus =
new TH2F(
"hPtOtherDecayStatus",
"#gamma from other decay particle, mother status",nptbins,ptmin,ptmax,101,-50,50);
341 TString name [] = {
"",
"_EMC",
"_Photon",
"_EMC_Photon"};
342 TString title [] = {
"",
", neutral in EMCal",
", neutral only #gamma-like",
", neutral in EMCal and only #gamma-like"};
343 TString leading[] = {
"NotLeading",
"Leading"};
345 TString partTitl[] = {
"#gamma_{direct}",
"#gamma_{decay}^{#pi}",
"#gamma_{decay}^{#eta}",
"#gamma_{decay}^{other}",
"#pi^{0}",
"#eta"};
346 TString particle[] = {
"DirectPhoton" ,
"Pi0DecayPhoton" ,
"EtaDecayPhoton" ,
"OtherDecayPhoton" ,
"Pi0" ,
"Eta"};
350 fhPt[p] =
new TH1F(Form(
"h%sPt",particle[p].
Data()),Form(
"Input %s p_{T}",partTitl[p].
Data()),nptbins,ptmin,ptmax);
351 fhPt[p]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
352 outputContainer->Add(
fhPt[p]);
354 fhPhi[p] =
new TH1F(Form(
"h%sPhi",particle[p].
Data()),Form(
"Input %s #phi with #it{p}_{T} > %f GeV/c",partTitl[p].
Data(),
GetMinPt()),180,0,TMath::TwoPi());
355 fhPhi[p]->SetXTitle(
"#phi (rad)");
356 outputContainer->Add(
fhPhi[p]);
358 fhEta[p] =
new TH1F(Form(
"h%sEta",particle[p].
Data()),Form(
"Input %s #eta with #it{p}_{T} > %f GeV/c",partTitl[p].
Data(),
GetMinPt()),200,-2,2);
359 fhEta[p]->SetXTitle(
"#eta");
360 outputContainer->Add(
fhEta[p]);
363 Form(
"Input %s #eta vs #phi with #it{p}_{T} > %f GeV/c",partTitl[p].
Data(),
GetMinPt()),
364 200,-2,2,180,0,TMath::TwoPi());
366 fhEtaPhi[p]->SetYTitle(
"#phi (rad)");
370 Form(
"Input %s #phi vs status code with #it{p}_{T} > %f GeV/c",partTitl[p].
Data(),
GetMinPt()),
371 180,0,TMath::TwoPi(),101,-50,50);
377 Form(
"Input %s #eta vs status code with #it{p}_{T} > %f GeV/c",partTitl[p].
Data(),
GetMinPt()),
378 200,-2,2,101,-50,50);
384 fhPtOrigin[p] =
new TH2F(Form(
"h%sPtOrigin",particle[p].
Data()),Form(
"Input %s p_{T} vs origin",partTitl[p].
Data()),nptbins,ptmin,ptmax,11,0,11) ;
385 fhPtOrigin[p]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
387 fhPtOrigin[p]->GetYaxis()->SetBinLabel(1 ,
"Status 21");
388 fhPtOrigin[p]->GetYaxis()->SetBinLabel(2 ,
"Quark");
389 fhPtOrigin[p]->GetYaxis()->SetBinLabel(3 ,
"qq Resonances ");
390 fhPtOrigin[p]->GetYaxis()->SetBinLabel(4 ,
"Resonances");
391 fhPtOrigin[p]->GetYaxis()->SetBinLabel(5 ,
"#rho");
392 fhPtOrigin[p]->GetYaxis()->SetBinLabel(6 ,
"#omega");
393 fhPtOrigin[p]->GetYaxis()->SetBinLabel(7 ,
"K");
394 fhPtOrigin[p]->GetYaxis()->SetBinLabel(8 ,
"Other");
395 fhPtOrigin[p]->GetYaxis()->SetBinLabel(9 ,
"#eta");
396 fhPtOrigin[p]->GetYaxis()->SetBinLabel(10 ,
"#eta prime");
399 fhPtOriginNotFinal[p] =
new TH2F(Form(
"h%sPtOriginNotFinal",particle[p].
Data()),Form(
"Input %s p_{T} vs origin, status 0",partTitl[p].
Data()),nptbins,ptmin,ptmax,11,0,11) ;
419 Form(
"%s: Leading of all particles%s",partTitl[p].
Data(),title[i].
Data()),
420 nptbins,ptmin,ptmax);
421 fhPtLeading[p][i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
425 Form(
"%s: Leading of all particles%s, isolated",partTitl[p].
Data(),title[i].
Data()),
426 nptbins,ptmin,ptmax);
431 Form(
"%s: Leading of all particles%s",partTitl[p].
Data(),title[i].
Data()),
432 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
444 Form(
"#gamma-jet: %s of all particles%s", leading[j].
Data(), title[i].
Data()),
445 nptbins,ptmin,ptmax,3,0,3);
456 Form(
"%s: %s of all particles%s", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
457 nptbins,ptmin,ptmax,3,0,3);
466 Form(
"%s: %s of all particles%s, isolated", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
467 nptbins,ptmin,ptmax,3,0,3);
479 Form(
"%s: %s of all particles%s", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
480 nptbins,ptmin,ptmax,3,0,3);
489 Form(
"%s: %s of all particles%s, isolated", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
490 nptbins,ptmin,ptmax,3,0,3);
501 Form(
"#it{z}_{Hard} of %s: %s of all particles%s", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
502 nptbins,ptmin,ptmax,200,0,2);
503 fhZHard[p][j][i]->SetYTitle(
"#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
504 fhZHard[p][j][i]->SetXTitle(
"#it{p}_{T}^{particle} (GeV/#it{c})");
505 outputContainer->Add(
fhZHard[p][j][i]);
508 Form(
"#it{z}_{Hard} of %s: %s of all particles%s, isolated", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
509 nptbins,ptmin,ptmax,200,0,2);
510 fhZHardIsolated[p][j][i]->SetYTitle(
"#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
511 fhZHardIsolated[p][j][i]->SetXTitle(
"#it{p}_{T}^{particle} (GeV/#it{c})");
517 Form(
"#it{z}_{Parton} of %s: %s of all particles%s", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
518 nptbins,ptmin,ptmax,200,0,2);
519 fhZParton[p][j][i]->SetYTitle(
"#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
520 fhZParton[p][j][i]->SetXTitle(
"#it{p}_{T}^{particle} (GeV/#it{c})");
521 outputContainer->Add(
fhZParton[p][j][i]);
524 Form(
"#it{z}_{Parton} of %s: %s of all particles%s, isolated", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
525 nptbins,ptmin,ptmax,200,0,2);
526 fhZPartonIsolated[p][j][i]->SetYTitle(
"#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
534 Form(
"#it{z}_{Jet} of %s: %s of all particles%s", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
535 nptbins,ptmin,ptmax,200,0,2);
536 fhZJet[p][j][i]->SetYTitle(
"#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
537 fhZJet[p][j][i]->SetXTitle(
"#it{p}_{T}^{particle} (GeV/#it{c})");
538 outputContainer->Add(
fhZJet[p][j][i]);
541 Form(
"#it{z}_{Jet} of %s: %s of all particles%s, isolated", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
542 nptbins,ptmin,ptmax,200,0,2);
543 fhZJetIsolated[p][j][i]->SetYTitle(
"#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
544 fhZJetIsolated[p][j][i]->SetXTitle(
"#it{p}_{T}^{particle} (GeV/#it{c})");
550 fhXE[p][j][i] =
new TH2F(Form(
"h%sXE%s%s", particle[p].
Data(), leading[j].
Data(), name[i].
Data()),
551 Form(
"#it{z}_{Jet} of %s: %s of all particles%s", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
552 nptbins,ptmin,ptmax,200,0,2);
553 fhXE[p][j][i]->SetYTitle(
"#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
554 fhXE[p][j][i]->SetXTitle(
"#it{p}_{T}^{particle} (GeV/#it{c})");
555 outputContainer->Add(
fhXE[p][j][i]);
558 Form(
"#it{z}_{Jet} of %s: %s of all particles%s, isolated", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
559 nptbins,ptmin,ptmax,200,0,2);
560 fhXEIsolated[p][j][i]->SetYTitle(
"#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
561 fhXEIsolated[p][j][i]->SetXTitle(
"#it{p}_{T}^{particle} (GeV/#it{c})");
568 Form(
"#it{z}_{Jet} of %s: %s of all particles%s", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
569 nptbins,ptmin,ptmax,200,0,2);
570 fhXEUE[p][j][i]->SetYTitle(
"#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
571 fhXEUE[p][j][i]->SetXTitle(
"#it{p}_{T}^{particle} (GeV/#it{c})");
572 outputContainer->Add(
fhXEUE[p][j][i]);
575 Form(
"#it{z}_{Jet} of %s: %s of all particles%s, isolated", partTitl[p].
Data(), leading[j].
Data(), title[i].
Data()),
576 nptbins,ptmin,ptmax,200,0,2);
577 fhXEUEIsolated[p][j][i]->SetYTitle(
"#it{p}_{T}^{particle}/#it{p}_{T}^{hard}");
578 fhXEUEIsolated[p][j][i]->SetXTitle(
"#it{p}_{T}^{particle} (GeV/#it{c})");
584 return outputContainer;
606 if(p6phi < 0) p6phi +=TMath::TwoPi();
618 if(p7phi < 0) p7phi +=TMath::TwoPi();
625 if(!strcmp(
GetReader()->GetGenEventHeader()->ClassName(),
"AliGenPythiaEventHeader"))
633 const Int_t nTriggerJets = pygeh->NTriggerJets();
641 for(
Int_t ijet = 0; ijet< nTriggerJets; ijet++)
643 pygeh->TriggerJet(ijet, tmpjet);
645 fLVTmp.SetPxPyPzE(tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3]);
647 if(jphi < 0) jphi +=TMath::TwoPi();
705 if(phiTrig < 0 ) phiTrig += TMath::TwoPi();
709 Int_t ipartonAway = 0;
714 if(ipr==indexTrig)
continue;
716 AliVParticle * particle =
GetMC()->GetTrack(ipr) ;
719 status = particle->MCStatusCode();
722 if( status != 1) continue ;
724 particle->Momentum(
fLVTmp);
728 charge = particle->Charge();
731 if( charge == 0 )
continue;
735 if(phi < 0 ) phi += TMath::TwoPi();
746 ipartonAway = (
GetMC()->GetTrack(ipr))->GetMother();
749 AliDebug(1,
"End, no mother index");
753 AliVParticle * mother =
GetMC()->GetTrack(ipartonAway);
754 while (ipartonAway > 7)
756 ipartonAway = mother->GetMother();
757 if(ipartonAway < 0)
break;
758 mother =
GetMC()->GetTrack(ipartonAway);
765 Float_t xe = -pt/ptTrig*TMath::Cos(phi-phiTrig);
767 if((ipartonAway==6 || ipartonAway==7) && iparton!=ipartonAway)
782 if(ipartonAway!=6 && ipartonAway!=7)
828 Float_t ptMaxNeutEMCALPhot = 0;
843 if(phiTrig < 0 ) phiTrig += TMath::TwoPi();
855 Int_t nICNeutral = 0;
856 Int_t nICNeutEMCAL = 0;
857 Int_t nICNeutPhot = 0;
858 Int_t nICNeutEMCALPhot = 0;
875 if(ipr == indexTrig)
continue;
877 AliVParticle * particle =
GetMC()->GetTrack(ipr) ;
879 imother = particle->GetMother();
880 pdg = particle->PdgCode();
881 status = particle->MCStatusCode();
884 if( status != 1) continue ;
887 particle->Momentum(
fLVTmp);
890 charge = particle->Charge();
894 if( imother == indexTrig) continue ;
899 if(phi < 0 ) phi += TMath::TwoPi();
912 if( ptMaxNeutral < pt ) ptMaxNeutral = pt;
914 if( radius < rThresIC )
916 if( pt > ptThresIC ) nICNeutral++ ;
921 if(pdg==22 || pdg==111) phPDG = kTRUE;
926 if( ptMaxNeutPhot < pt) ptMaxNeutPhot = pt;
928 if( radius < rThresIC )
930 if(pt > ptThresIC) nICNeutPhot++ ;
937 if(!inCalo)
continue;
939 if( ptMaxNeutEMCAL < pt ) ptMaxNeutEMCAL = pt;
940 if( radius < rThresIC )
942 if( pt > ptThresIC ) nICNeutEMCAL++ ;
948 if( ptMaxNeutEMCALPhot < pt ) ptMaxNeutEMCALPhot = pt;
949 if( radius < rThresIC )
951 if (pt > ptThresIC) nICNeutEMCALPhot++ ;
952 sumNePtEMCPhot += pt;
960 if( ptMaxCharged < pt ) ptMaxCharged = pt;
962 if( radius < rThresIC )
966 if( pt > ptThresIC ) nICTrack++ ;
973 if(ptTrig > ptMaxCharged)
977 if(ptTrig > ptMaxNeutral ) leading[0] = kTRUE ;
978 if(ptTrig > ptMaxNeutEMCAL ) leading[1] = kTRUE ;
979 if(ptTrig > ptMaxNeutPhot ) leading[2] = kTRUE ;
980 if(ptTrig > ptMaxNeutEMCALPhot) leading[3] = kTRUE ;
992 if(nICNeutral == 0 ) isolated[0] = kTRUE ;
993 if(nICNeutEMCAL == 0 ) isolated[1] = kTRUE ;
994 if(nICNeutPhot == 0 ) isolated[2] = kTRUE ;
995 if(nICNeutEMCALPhot == 0 ) isolated[3] = kTRUE ;
1000 if(sumChPt + sumNePt < sumThresIC ) isolated[0] = kTRUE ;
1001 if(sumChPt + sumNePtEMC < sumThresIC ) isolated[1] = kTRUE ;
1002 if(sumChPt + sumNePtPhot < sumThresIC ) isolated[2] = kTRUE ;
1003 if(sumChPt + sumNePtEMCPhot < sumThresIC ) isolated[3] = kTRUE ;
1033 AliFatal(
"MCEvent not available, is the MC handler called? STOP");
1037 AliDebug(1,
"Start");
1044 AliVParticle * primary = 0;
1052 primary =
GetMC()->GetTrack(6);
1060 primary =
GetMC()->GetTrack(7);
1070 Int_t statusTrig = 0;
1073 Int_t momStatus = 0;
1075 Int_t momNDaugh = 0;
1081 Int_t nDaughters = 0;
1085 AliVParticle* particle =
GetMC()->GetTrack(ipr) ;
1087 pdgTrig = particle->PdgCode();
1088 statusTrig = particle->MCStatusCode();
1089 imother = particle->GetMother();
1090 nDaughters = particle->GetNDaughters();
1091 id0 = particle->GetDaughterLabel(0);
1092 id1 = particle->GetDaughterLabel(1);
1105 if( pdgTrig == 22 && statusTrig != 1 ) continue ;
1107 if( pdgTrig != 111 && pdgTrig != 22 && pdgTrig !=221 ) continue ;
1114 if( ptTrig <
GetMinPt() ) continue ;
1120 Int_t partType = -1;
1126 momStatus = (
GetMC()->GetTrack(imother))->MCStatusCode();
1127 momPdg = (
GetMC()->GetTrack(imother))->PdgCode();
1128 momNDaugh = (
GetMC()->GetTrack(imother))->GetNDaughters();
1129 momImom = (
GetMC()->GetTrack(imother))->GetMother();
1131 if (imother < 8 && statusTrig == 1)
1135 else if(momPdg == 111 )
1139 else if(momPdg == 221 )
1143 else if(TMath::Abs(momStatus) > 0 )
1149 else if( (pdgTrig==111 || pdgTrig==221) && nDaughters == 2 )
1151 pdg0 = (
GetMC()->GetTrack(id0))->PdgCode();
1152 pdg1 = (
GetMC()->GetTrack(id1))->PdgCode();
1154 if( pdg0 == 22 && pdg1== 22 )
1157 else if( pdgTrig==221 ) partType =
kmcPrimEta;
1160 else if( (pdgTrig==111 || pdgTrig==221) )
1164 if(! in ) continue ;
1170 if(partType < 0 ) continue ;
1177 if(phi < 0) phi+=TMath::TwoPi();
1183 if(partType < 4 && partType!=0)
1198 if(! in ) continue ;
1201 AliDebug(1,Form(
"Select trigger particle %d: pdg %d, type %d, status %d, mother index %d, pT %2.2f, eta %2.2f, phi %2.2f",
1202 ipr, pdgTrig, partType, statusTrig, imother, ptTrig,
fTrigger.Eta(),
fTrigger.Phi()*TMath::RadToDeg()));
1235 if (momPdg > 2100 && momPdg < 2210)
1241 else if(momPdg >= 310 && momPdg <= 323)
1251 Int_t momOrgPdg = -1;
1252 Int_t momOrgStatus = -1;
1253 if(momImom >=0 || imother >=0)
1255 AliVParticle* mother = 0;
1256 if(partType < 4 && partType!=0 )
1257 mother =
GetMC()->GetTrack(momImom);
1259 mother =
GetMC()->GetTrack(imother);
1261 momOrgPdg = TMath::Abs(mother->PdgCode());
1262 momOrgStatus = mother->MCStatusCode();
1267 else if(momOrgPdg > 2100 && momOrgPdg < 2210)
1273 else if(momOrgPdg >= 310 && momOrgPdg <= 323)
1276 else if(momOrgStatus == 11 || momOrgStatus == 12 )
1286 else if(momOrgPdg > 2100 && momOrgPdg < 2210)
1292 else if(momOrgPdg >= 310 && momOrgPdg <= 323)
1295 else if(momOrgStatus == 11 || momOrgStatus == 12 )
1318 GetXE(ipr,partType,leading,isolated,iparton) ;
1322 AliDebug(1,
"End fill histograms");
1337 else AliFatal(Form(
"Detector < %s > not known!", det.Data()));
1352 else AliFatal(Form(
"Detector < %d > not known!", det));
Float_t GetHistoPtMax() const
TH1F * fhPtHard
! pt of parton
TH2F * fhPtEtaDecayStatus
! Input eta decay meson status
Float_t GetHistoPtMin() const
Int_t GetICMethod() const
TLorentzVector fParton6
! Final state Parton
virtual Int_t GetCalorimeter() const
virtual void AddToHistogramsName(TString add)
TH1F * fhPtJet
! pt of jet
TH2F * fhXEIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! xE away side
TH2F * fhPtPi0DecayStatus
! Input pi0 decay meson status
Float_t fPtHard
! Generated pT hard
TH2F * fhPtPi0Status
! Input pi0 status
virtual AliIsolationCut * GetIsolationCut()
TH2F * fhPtOriginNotFinal[fgkNmcPrimTypes]
! Input particle pt vs particle type originating it (if meson decay, its mother) if trigger is not fi...
TH2F * fhEtaPhi[fgkNmcPrimTypes]
! Input particle eta vs phi
TH2F * fhPtPartonPtHard
! pt of parton divided to pt hard, trigger is photon
TH2F * fhZJet[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! zHard
void SetTriggerDetector(TString det)
Set the calorimeter for the analysis.
TH1F * fhPhi[fgkNmcPrimTypes]
! Input particle phi
TH1F * fhPtPi0Not2Gamma
! Input pi0 not 2 gamma decay
TH1F * fhPtGammaFromPi0Not2Gamma
! Input gamma from pi0 not 2 gamma decay
Get trigger particles/partons/jets and correlations at generator level.
Int_t fParton7PDG
! Final state Parton PDG
TH2F * fhZPartonIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! isolated, zHard
TH2F * fhZHardIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! isolated, zHard
TH2F * fhPtPartonTypeAway[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! pt versus away side parton type
TH1F * fhPt[fgkNmcPrimTypes]
! Input particle pt
static const Int_t fgkNmcPrimTypes
Number of MC indeces for histograms arrays.
virtual AliGenEventHeader * GetGenEventHeader() const
TLorentzVector fJet7
! Pythia jet close to parton in position 7
TLorentzVector fParton7
! Final state Parton
Float_t GetPtThreshold() const
TLorentzVector fJet6
! Pythia jet close to parton in position 6
Base class for CaloTrackCorr analysis algorithms.
TString fTriggerDetectorString
Detector : EMCAL, PHOS, CTS.
virtual AliFiducialCut * GetFiducialCut()
virtual AliHistogramRanges * GetHistogramRanges()
TH2F * fhPtPartonTypeNearIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! pt versus originating parton type
Float_t fMinChargedPt
! Minimum energy for charged particles in correlation
void GetPartonsAndJets()
Fill data members with partons,jets and generated pt hard.
TH2F * fhXEUEIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! xE away side
TH2F * fhXE[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! xE away side
TList * GetCreateOutputObjects()
Create histograms to be saved in output file.
TH1F * fhPtLeadingIsolated[fgkNmcPrimTypes][fgkNIso]
! isolated
Bool_t IsInFiducialCut(Float_t eta, Float_t phi, Int_t det) const
TH2F * fhZHard[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! zHard
TH2F * fhPtLeadingSumPt[fgkNmcPrimTypes][fgkNIso]
! pT vs sum in cone
TH2F * fhPhiStatus[fgkNmcPrimTypes]
! Input particle phi vs status
Int_t GetHistoNPtSumBins() const
static const Int_t fgkNIso
Number of isolation cases.
virtual Double_t GetEventWeight() const
AliAnaGeneratorKine()
Default Constructor. Initialize parameters with default values.
Int_t fTriggerDetector
Detector : EMCAL, PHOS, CTS.
AliFiducialCut * GetFiducialCutForTrigger()
TH2F * fhZParton[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! zHard
Int_t fNPrimaries
! N primaries
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)
virtual AliMCEvent * GetMC() const
Float_t GetHistoPtSumMin() const
TH2F * fhXEUE[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! xE away side
void MakeAnalysisFillHistograms()
Particle-Parton/Jet/Hadron Correlation Analysis, main method.
TH2F * fhEtaStatus[fgkNmcPrimTypes]
! Input particle eta vs status
TLorentzVector fTrigger
! Trigger momentum, avoid generating TLorentzVectors per event
Int_t GetHistoPtBins() const
TH2F * fhPtOrigin[fgkNmcPrimTypes]
! Input particle pt vs particle type originating it (if meson decay, its mother)
TH1F * fhPtEtaNot2Gamma
! Input eta not 2 gamma decay
TH2F * fhPtJetPtHard
! pt of jet divided to pt hard, trigger is photon
TH2F * fhPtPartonTypeAwayIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! isolated, particle pt versus away side parton type
TH2F * fhPtAcceptedGammaJet[fgkNLead][fgkNIso]
! gamma-jet pair in acceptance (jet in good eta window)
TH2F * fhPtJetPtParton
! pt of parton divided to pt parton, trigger is photon
Int_t fParton6PDG
! Final state Parton PDG
virtual Float_t GetMinPt() const
Bool_t CorrelateWithPartonOrJet(Int_t indexTrig, Int_t pdgTrig, Bool_t leading[fgkNIso], Bool_t isolated[fgkNIso], Int_t &iparton)
Correlate trigger with partons or jets, get z.
virtual AliCaloTrackReader * GetReader() const
TH1F * fhPtParton
! pt of parton
TH1F * fhEta[fgkNmcPrimTypes]
! Input particle eta
Float_t Radius(Float_t etaCandidate, Float_t phiCandidate, Float_t eta, Float_t phi) const
TH2F * fhPtOtherDecayMesonId
! Decay photons, not originating from pi0 or eta, ID of the particle
DCal, not used so far, just in case.
void IsLeadingAndIsolated(Int_t indexTrig, Int_t pdgTrig, Bool_t leading[fgkNIso], Bool_t isolated[fgkNIso])
TH1F * fhPtGammaFromEtaNot2Gamma
! Input gamma from eta not 2 gamma decay
void InitParameters()
Initialize the parameters of the analysis.
Float_t GetHistoPtSumMax() const
void GetXE(Int_t indexTrig, Int_t pdgTrig, Bool_t leading[fgkNIso], Bool_t isolated[fgkNIso], Int_t iparton)
Calculate the real XE and the UE XE.
TH1F * fhPtLeading[fgkNmcPrimTypes][fgkNIso]
! pT
static const Int_t fgkNLead
Number of leadingness cases.
TH2F * fhPtPartonTypeNear[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! particle pt versus originating parton type
Float_t fMinNeutralPt
! Minimum energy for neutral particles in correlation
Float_t GetConeSize() const
TH2F * fhPtEtaStatus
! Input eta status
TLorentzVector fLVTmp
! Momentum, avoid generating TLorentzVectors per event
TH2F * fhPtOtherDecayStatus
! Input other decay particle status
TH2F * fhZJetIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]
! isolated, zHard