30 #include <AliAnalysisManager.h> 31 #include <AliInputEventHandler.h> 32 #include <AliESDInputHandler.h> 33 #include <AliAODInputHandler.h> 34 #include <TGeoGlobalMagField.h> 60 fSaveReaderHists(kFALSE),
62 fV0FilterPhoton(NULL),
78 fDeltaAODBranchName("AliAODGammaConversion_gamma"),
104 DefineInput(0, TChain::Class());
105 DefineOutput(1, TList::Class());
107 fGammas.SetOwner(kTRUE);
108 fTracks.SetOwner(kTRUE);
118 delete fV0FilterEvent;
119 fV0FilterEvent = NULL;
122 delete fV0FilterPhoton;
123 fV0FilterPhoton = NULL;
134 delete fPhotonFilter;
135 fPhotonFilter = NULL;
153 fAxisTrigEta.SetNameTitle(
"tEta",
"Eta");
154 fAxisTrigEta.Set(320, -0.8, 0.8);
156 fAxisAssEta.SetNameTitle(
"aEta",
"Eta");
157 fAxisAssEta.Set(360, -0.9, 0.9);
159 fAxisdEta.SetNameTitle(
"dEta",
"Eta");
160 fAxisdEta.Set(34, -1.7, 1.7);
162 fAxisdPhi.SetNameTitle(
"dPhi",
"delta Phi");
163 fAxisdPhi.Set(32, -TMath::PiOver2(), 3*TMath::PiOver2());
165 Double_t tptbins[10] = {0.1, 3.0, 4.0, 5.0, 6.0, 8.0, 10.0, 15, 50, 100}; fAxistPt.SetNameTitle(
"tPt",
"tPt");
166 fAxistPt.Set(9, tptbins);
168 Double_t cptbins[13] = {0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 8.0, 10.0, 25, 50, 100}; fAxiscPt.SetNameTitle(
"cPt",
"cPt");
169 fAxiscPt.Set(12, cptbins);
171 fAxisZ.SetNameTitle(
"vertexz",
"Z");
172 fAxisZ.Set(4, -10, 10);
174 Double_t centbins[5] = {0, 10, 30, 60, 100.1};
175 fAxisCent.SetNameTitle(
"centrality",
"Cent");
176 fAxisCent.Set(4, centbins);
178 fAxisPiM.SetNameTitle(
"InvMassPi0",
"Invariant mass");
179 Double_t mbins[7] = {0.1, 0.11, 0.12, 0.15, 0.16, 0.18, 0.2};
180 fAxisPiM.Set(6, mbins);
248 fHistograms =
new TList();
249 fHistograms->SetName(
"dPhi_histograms");
250 fHistograms->SetOwner(kTRUE);
254 fV0Reader=(
AliV0ReaderV1*)AliAnalysisManager::GetAnalysisManager()->GetTask(
"V0ReaderV1");
258 printf(
"Error: No V0 Reader");
263 if(fSaveReaderHists) {
268 AliWarning(
"initializing v0 reader hists");
273 fHistograms->Add(histograms);
278 for(
Int_t igf = 0; igf < fV0Filters[0].GetEntriesFast(); igf ++){
286 for(
Int_t igf = 0; igf < fV0Filters[1].GetEntriesFast(); igf ++){
294 for(
Int_t igf = 0; igf < fMesonFilters[0].GetEntriesFast(); igf ++){
302 for(
Int_t igf = 0; igf < fMesonFilters[1].GetEntriesFast(); igf ++){
311 fV0FilterEvent->InitCutHistograms(
"V0FilterEvent", kFALSE);
312 fHistograms->Add(fV0FilterEvent->GetCutHistograms());
314 if(fV0FilterPhoton) {
315 fV0FilterPhoton->InitCutHistograms(
"V0FilterPhoton", kFALSE);
316 fHistograms->Add(fV0FilterPhoton->GetCutHistograms());
319 fMesonFilter->InitCutHistograms(
"PionFilter", kFALSE);
320 fHistograms->Add(fMesonFilter->GetCutHistograms());
323 fPhotonFilter->InitCutHistograms(
"PhotonFilter", kFALSE);
324 fHistograms->Add(fPhotonFilter->GetCutHistograms());
343 MEHistograms->SetName(
"MEHistograms");
344 MEHistograms->SetOwner(kTRUE);
345 fHistograms->Add(MEHistograms);
347 hMEvents =
new TH2I(
"hMEvents",
"Nevents vs centrality vertexz",
348 fAxisZ.GetNbins(), fAxisZ.GetXbins()->GetArray(),
349 fAxisCent.GetNbins(), fAxisCent.GetXbins()->GetArray());
350 MEHistograms->Add(hMEvents);
352 hTrackCent =
new TH2I(
"hTrackCent",
"N accepted tracks vs centrality",
353 fAxisCent.GetNbins() > 1 ? (int) (10*(fAxisCent.GetXmax() - fAxisCent.GetXmin())) : 1,
354 fAxisCent.GetXmin(), fAxisCent.GetXmax(),
355 fAxisCent.GetNbins() > 1 ? 900 : 50,
357 fAxisCent.GetNbins() > 1 ? 1800 : 50);
358 MEHistograms->Add(hTrackCent);
360 hTrigPt =
new TH3F(
"hTrigPt",
"trigger pt", 100, 0., 10.,
363 MEHistograms->Add(hTrigPt);
364 hTrackPt =
new TH2F(
"hTrackPt",
"track pt", 100, 0, 10, 10, 0, 50);
365 MEHistograms->Add(hTrackPt);
366 hTrigPhi =
new TH1F(
"hTrigPhi",
"trigger pt", 32, 0, 2*TMath::Pi());
367 MEHistograms->Add(hTrigPhi);
371 Int_t ntrackfilters[2] = {fTrackFilters[0].GetEntriesFast(), fTrackFilters[1].GetEntriesFast()};
373 fAxisTrackFilters.SetNameTitle(
"trackCuts",
"trackCuts");
374 fAxisTrackFilters.Set(ntrackfilters[0] + ntrackfilters[1] + 1, -ntrackfilters[0] -0.5, ntrackfilters[1] + 0.5);
376 Int_t nV0filters[2] = {fV0Filters[0].GetEntriesFast(), fV0Filters[1].GetEntriesFast()};
378 fAxisV0Filters.SetNameTitle(
"V0Cuts",
"V0Cuts");
379 fAxisV0Filters.Set(nV0filters[0] + nV0filters[1] + 1, -nV0filters[0] -0.5, nV0filters[1] + 0.5);
381 Int_t nmesonfilters[2] = {fMesonFilters[0].GetEntriesFast(), fMesonFilters[1].GetEntriesFast()};
383 fAxisMesonFilters.SetNameTitle(
"mesonCuts",
"mesonCuts");
384 fAxisMesonFilters.Set(nmesonfilters[0] + nmesonfilters[1] + 1, -nmesonfilters[0] -0.5, nmesonfilters[1] + 0.5);
386 fAxesList.AddAt(&fAxisdEta, 0);
387 fAxesList.AddAt(&fAxisdPhi, 1);
388 fAxesList.AddAt(&fAxistPt, 2);
389 fAxesList.AddAt(&fAxiscPt, 3);
390 fAxesList.AddAt(&fAxisCent, 4);
391 fAxesList.AddAt(&fAxisZ, 5);
392 fAxesList.AddAt(&fAxisPiM, 6);
393 fAxesList.AddAt(&fAxisTrackFilters, 7);
394 fAxesList.AddAt(&fAxisV0Filters, 8);
395 fAxesList.AddAt(&fAxisMesonFilters, 9);
397 fTrackAxesList.AddAt(&fAxisAssEta, 0);
398 fTrackAxesList.AddAt(&fAxistPt, 1);
399 fTrackAxesList.AddAt(&fAxiscPt, 2);
400 fTrackAxesList.AddAt(&fAxisCent, 3);
401 fTrackAxesList.AddAt(&fAxisZ, 4);
403 fTrackAxesList.AddAt(&fAxisTrackFilters, 5);
404 fTrackAxesList.AddAt(&fAxisV0Filters, 6);
405 fTrackAxesList.AddAt(&fAxisMesonFilters, 7);
407 fTrigAxesList.AddAt(&fAxisTrigEta, 0);
408 fTrigAxesList.AddAt(&fAxistPt, 1);
409 fTrigAxesList.AddAt(&fAxisCent, 2);
410 fTrigAxesList.AddAt(&fAxisZ, 3);
411 fTrigAxesList.AddAt(&fAxisPiM, 4);
412 fTrigAxesList.AddAt(&fAxisV0Filters, 5);
413 fTrigAxesList.AddAt(&fAxisMesonFilters, 6);
417 massax.SetNameTitle(
"mass",
"mass");
418 massax.Set(360, 0.04, 0.4);
420 masslist.AddAt(&massax, 0);
421 masslist.AddAt(&fAxistPt, 1);
422 masslist.AddAt(&fAxisCent, 2);
423 masslist.AddAt(&fAxisV0Filters, 3);
424 masslist.AddAt(&fAxisMesonFilters, 4);
426 fCorrSparse = CreateSparse(
TString(
"pionSparse"),
TString(
"pionSparse"), &fAxesList);
427 fTrackSparse = CreateSparse(
TString(
"trackSparse"),
TString(
"trackSparse"), &fTrackAxesList);
428 fTrigSparse = CreateSparse(
TString(
"trigSparse"),
TString(
"trigSparse"), &fTrigAxesList);
429 fMassSparse = CreateSparse(
"massSparse",
"massSparse", &masslist);
431 fHistograms->Add(fCorrSparse);
432 fHistograms->Add(fTrackSparse);
433 fHistograms->Add(fTrigSparse);
434 fHistograms->Add(fMassSparse);
438 for(
Int_t i = 0; i < fV0Filters[1].GetEntriesFast() + 1; i++) {
442 for(
Int_t i = 0; i < fTrackFilters[1].GetEntriesFast() + 1; i++) {
445 PostData(1, fHistograms);
451 const Int_t dim = axesList->GetSize();
458 for(
Int_t i = 0; i<dim; i++) {
459 TAxis * axis =
dynamic_cast<TAxis*
>(axesList->At(i));
460 if(axis) axes[i] = axis;
462 cout <<
"AliAnalysisTaskdPhi::CreateSparse: Error error, all the axes are not present in axis list" << endl;
467 for(
Int_t i = 0; i<dim; i++) {
469 bins[i] = axes[i]->GetNbins();
470 min[i] = axes[i]->GetBinLowEdge(1);
471 max[i] = axes[i]->GetBinUpEdge(axes[i]->GetNbins());
474 THnSparseF * sparse =
new THnSparseF(Form(
"%s", nameString.Data()),
475 Form(
"%s", titleString.Data()),
476 dim, bins, min, max);
478 for(
Int_t i = 0; i<dim; i++) {
479 sparse->GetAxis(i)->SetNameTitle(axes[i]->GetName(), axes[i]->GetTitle() );
480 if(axes[i]->GetXbins()->GetSize() > 0) {
481 sparse->SetBinEdges(i, axes[i]->GetXbins()->GetArray() );
495 if (!TGeoGlobalMagField::Instance()->GetField()) esdEvent->InitMagneticField();
501 AliError(
"Error: No V0 Reader");
505 if(!fV0Reader->IsEventSelected()) {
509 AliDebug(5,
"Processing event");
512 for(
Int_t i = 0; i < fGammas.GetEntriesFast(); i++) {
513 static_cast<TObjArray*
>(fGammas.At(i))->Clear();
516 for(
Int_t i = 0; i < fTracks.GetEntriesFast(); i++) {
517 static_cast<TObjArray*
>(fTracks.At(i))->Clear();
523 Bool_t isAOD=man->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();
525 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
527 cout <<
"cout no input event handler"<<endl;
531 for(
Int_t igf = 0; igf < fV0Filters[0].GetEntriesFast(); igf++) {
534 if ( inputHandler->GetPIDResponse() ){
542 for(
Int_t igf = 0; igf < fV0Filters[1].GetEntriesFast(); igf++) {
545 if ( inputHandler->GetPIDResponse() ){
554 if ( fV0FilterPhoton && !fV0FilterPhoton->GetPIDResponse() ) {
555 if ( inputHandler->GetPIDResponse() ){
556 fV0FilterPhoton->SetPIDResponse( inputHandler->GetPIDResponse() );
568 for(
Int_t i = 0; i < fTrackFilters[0].GetEntriesFast(); i++){
575 for(
Int_t i = 0; i < fTrackFilters[1].GetEntriesFast(); i++){
584 Double_t vertexz = fInputEvent->GetPrimaryVertex()->GetZ();
586 AliAODHeader * header =
static_cast<AliAODHeader*
>(fInputEvent->GetHeader());
587 centrality = header->GetCentrality();
589 centrality =
static_cast<AliESDEvent*
>(fInputEvent)->GetCentrality()->GetCentralityPercentile(
"V0M");
592 const Int_t centBin = GetBin(fAxisCent, centrality);
593 const Int_t vertexBin = GetBin(fAxisZ, vertexz);
595 if(DebugLevel () > 4) {
596 cout <<
"centrality: " << centrality <<
" " << GetBin(fAxisCent, centrality) << endl;
597 cout <<
"vertexz: " << vertexz <<
" " << GetBin(fAxisZ, vertexz) << endl;
600 if(centBin < 0 || vertexBin < 0) {
607 TClonesArray * aodGammas = fV0Reader->GetReconstructedGammas();
609 AliError(
"no aod gammas found!");
616 if(DebugLevel() > 1) printf(
"Number of conversion gammas %d \n", aodGammas->GetEntriesFast());
617 for(
Int_t ig = 0; ig < aodGammas->GetEntriesFast(); ig++) {
619 if(!photon)
continue;
620 if(!fV0FilterPhoton || fV0FilterPhoton->PhotonIsSelected(photon, fInputEvent)) {
621 ggammas->Add(photon);
623 for(
Int_t igf = 0; igf < fV0Filters[1].GetEntriesFast(); igf++) {
626 static_cast<TObjArray*
>(fGammas.At(igf+1))->Add(photon);
632 Bool_t lowgmap[fV0Filters[0].GetEntriesFast()][ggammas->GetEntriesFast()];
634 for(
Int_t ig = 0; ig < ggammas->GetEntriesFast(); ig++ ) {
636 for(
Int_t igf = 0; igf < fV0Filters[0].GetEntriesFast(); igf++) {
640 lowgmap[igf][ig] = kTRUE;
642 lowgmap[igf][ig] = kFALSE;
648 if(DebugLevel() > 4) printf(
"Number of accepted gammas %d \n", ggammas->GetEntriesFast());
649 hMEvents->Fill(vertexz, centrality);
652 const Int_t ntrackfilters[2] = { fTrackFilters[0].GetEntriesFast(), fTrackFilters[1].GetEntriesFast()};
655 const Double_t aetalim[2] = { fAxisAssEta.GetXmin(), fAxisAssEta.GetXmax()};
656 const Double_t aptlim[2] = { fAxiscPt.GetXmin(), fAxiscPt.GetXmax()};
657 for(
Int_t iTrack = 0; iTrack < fInputEvent->GetNumberOfTracks(); iTrack++) {
658 AliVTrack * track =
static_cast<AliVTrack*
>(fInputEvent->GetTrack(iTrack));
659 if(track->Pt() < aptlim[0] || track->Pt() > aptlim[1])
continue;
660 if(track->Eta() < aetalim[0] || track->Eta() > aetalim[1])
continue;
661 if(fTrackFilter->IsSelected(track)) {
666 for(
Int_t itf = 1; itf < ntrackfilters[1] + 1; itf++) {
667 AliAnalysisCuts * trackCuts =
static_cast<AliAnalysisCuts*
>(fTrackFilters[1].At(itf -1));
668 if(trackCuts->IsSelected(track)) {
669 static_cast<TObjArray*
>(fTracks.At(itf))->Add(track);
676 Bool_t lowtrackmap[ntrackfilters[0]][ttracks->GetEntriesFast()];
678 for(
Int_t iTrack = 0; iTrack < ttracks->GetEntriesFast(); iTrack++ ) {
679 AliVTrack * track =
static_cast<AliVTrack*
>(ttracks->At(iTrack));
680 for(
Int_t itf = 0; itf < ntrackfilters[0]; itf++) {
681 AliAnalysisCuts * trackCuts =
static_cast<AliAnalysisCuts*
>(fTrackFilters[0].At(itf));
682 if(!trackCuts->IsSelected(track)) {
683 lowtrackmap[itf][iTrack] = kTRUE;
685 lowtrackmap[itf][iTrack] = kFALSE;
690 hTrackCent->Fill(centrality, ttracks->GetEntriesFast());
692 const Double_t etalim[2] = { fAxisTrigEta.GetXmin(), fAxisTrigEta.GetXmax()};
693 if(DebugLevel() > 4) printf(
"Number of accepted gammas, tracks %d %d \n", ggammas->GetEntriesFast(), ttracks->GetEntriesFast());
705 Double_t dphivalues[fAxesList.GetSize()];
707 dphivalues[5] = vertexz;
712 trigValues[3] = vertexz;
720 Bool_t tmap[fAxistPt.GetNbins()];
721 Bool_t lv0tmap[fAxistPt.GetNbins()][fV0Filters[0].GetEntriesFast()];
722 Bool_t uv0tmap[fAxistPt.GetNbins()][fV0Filters[1].GetEntriesFast()];
724 Bool_t lpitmap[fAxistPt.GetNbins()][fMesonFilters[0].GetEntriesFast()];
725 Bool_t upitmap[fAxistPt.GetNbins()][fMesonFilters[1].GetEntriesFast()];
727 for(
Int_t igf = 0; igf < fV0Filters[0].GetEntriesFast(); igf++) {
728 for(
Int_t ptbin = 0; ptbin < fAxistPt.GetNbins(); ptbin++) {
729 lv0tmap[ptbin][igf] = kFALSE;
733 for(
Int_t igf = 0; igf < fV0Filters[1].GetEntriesFast(); igf++) {
734 for(
Int_t ptbin = 0; ptbin < fAxistPt.GetNbins(); ptbin++) {
735 uv0tmap[ptbin][igf] = kFALSE;
739 for(
Int_t igf = 0; igf < fMesonFilters[0].GetEntriesFast(); igf++) {
740 for(
Int_t ptbin = 0; ptbin < fAxistPt.GetNbins(); ptbin++) {
741 lpitmap[ptbin][igf] = kFALSE;
745 for(
Int_t igf = 0; igf < fMesonFilters[1].GetEntriesFast(); igf++) {
746 for(
Int_t ptbin = 0; ptbin < fAxistPt.GetNbins(); ptbin++) {
747 upitmap[ptbin][igf] = kFALSE;
752 tmap[ptbin] = kFALSE;
758 for(
Int_t igf1 = 0; igf1 < fV0Filters[1].GetEntriesFast() + 1; igf1++) {
760 for(
Int_t i1 = 0; i1 < gamm1->GetEntriesFast(); i1++) {
766 for(
Int_t igf2 = 0; igf2 <= igf1; igf2++) {
772 gamm2 =
static_cast<TObjArray*
>(fGammas.At(igf2));
773 igmax = gamm2->GetEntriesFast();
776 for(
Int_t i2 = 0; i2 < igmax; i2++) {
787 if(pion->Eta() < etalim[0] || pion->Eta() > etalim[1])
continue;
794 massval[0] = pion->M();
795 massval[1] = pion->Pt();
799 dphivalues[2] = pion->Pt();
800 dphivalues[6] = pion->M();
801 dphivalues[8] = igf1;
804 trigValues[0] = pion->Eta();
805 trigValues[1] = pion->Pt();
806 trigValues[4] = pion->M();
807 trigValues[5] = igf1;
812 if(pion->Pt() > fAxistPt.GetBinLowEdge(1) && pion->Pt() < fAxistPt.GetXmax() &&
813 pion->Eta() > etalim[0] && pion->Eta() < etalim[1] &&
814 pion->M() > 0.04 && pion->M() < 0.4
818 if(fMesonFilter->MesonIsSelected(pion, kTRUE)) {
820 fMassSparse->Fill(massval);
822 Bool_t lpimap[fMesonFilters[0].GetEntriesFast()];
824 if(igf1 == 0 && igf2 == 0) {
828 for(
Int_t ilpf = 0; ilpf < fMesonFilters[0].GetEntriesFast(); ilpf++) {
829 if(!(static_cast<AliConversionMesonCuts*>(fMesonFilters[0].At(ilpf))->MesonIsSelected(pion, kTRUE))) {
830 lpimap[ilpf] = kTRUE;
831 massval[4] = -(ilpf + 1);
832 fMassSparse->Fill(massval);
834 lpimap[ilpf] = kFALSE;
839 for(
Int_t iglf = 0; iglf < fV0Filters[0].GetEntriesFast(); iglf++) {
840 if(lowgmap[iglf][i1] || lowgmap[iglf][i2]){
841 massval[3] = -(iglf+1);
842 fMassSparse->Fill(massval);
850 if(pion->Pt() > fAxistPt.GetBinLowEdge(1) && pion->Pt() < fAxistPt.GetXmax() &&
851 pion->M() > fAxisPiM.GetXmin() && pion->M() < fAxisPiM.GetXmax() &&
852 pion->Eta() > etalim[0] && pion->Eta() < etalim[1]) {
854 const Int_t tbin = fAxistPt.FindFixBin(pion->Pt());
856 fTrigSparse->Fill(trigValues);
857 if(igf1 == 0 && igf2 == 0) {
861 hTrigPt->Fill(pion->Pt(),
centrality, pion->M());
862 if(pion->M() > 0.1 && pion->M() < 0.15) {
863 hTrigPhi->Fill(pion->
Phi());
865 if (tbin > 0 && tbin < (nbins + 1)) {
866 tmap[tbin-1] = kTRUE;
869 for(
Int_t ilgf = 0; ilgf < fV0Filters[0].GetEntriesFast(); ilgf++) {
870 if(!lowgmap[ilgf][i1] || !lowgmap[ilgf][i2]) {
871 lv0tmap[tbin-1][ilgf] = kTRUE;
875 for(
Int_t ilpf = 0; ilpf < fMesonFilters[0].GetEntriesFast(); ilpf++) {
877 lpitmap[tbin-1][ilpf] = kTRUE;
882 if(pion->M() > 0.1 && pion->M() < 0.15) {
883 uv0tmap[tbin-1][igf1 - 1] = kTRUE;
889 if(igf1 == 0 && igf2 == 0) {
891 for(
Int_t iglf = 0; iglf < fV0Filters[0].GetEntriesFast(); iglf++) {
892 if(lowgmap[iglf][i1] || lowgmap[iglf][i2]){
893 trigValues[5] = -(iglf+1);
894 fTrigSparse->Fill(trigValues);
899 for(
Int_t iplf = 0; iplf < fMesonFilters[0].GetEntriesFast(); iplf ++) {
901 trigValues[6] = -(iplf + 1);
902 fTrigSparse->Fill(trigValues);
907 trigValues[5] = igf1;
915 if(igf1 == 0 && igf2 == 0) {
916 ntf = fTrackFilters[1].GetEntriesFast() + 1;
919 for(
Int_t itf = 0; itf < ntf; itf++) {
921 for(
int ij = 0; ij < tracks->GetEntriesFast(); ij++) {
922 AliVTrack * track =
static_cast<AliVTrack*
>(tracks->At(ij));
923 Int_t tid = track->GetID();
925 if(tid == tIDs[0] || tid == tIDs[1] || tid == tIDs[2] || tid == tIDs[3]) {
930 if(-tid-1 == tIDs[0]+1 || -tid-1 == tIDs[1]+1 || -tid-1 == tIDs[2]+1 || -tid-1 == tIDs[3]+1) {
935 dphivalues[0] = pion->Eta() - track->Eta();
936 dphivalues[1] = GetDPhi(pion->
Phi() - track->Phi());
937 dphivalues[3] = track->Pt();
939 dphivalues[8] = igf1;
941 fCorrSparse->Fill(dphivalues, GetTrackCorrection(vertexz, track));
943 if(itf == 0 && igf1 == 0 && igf2 == 0) {
945 for(
Int_t itlf = 0; itlf < fTrackFilters[0].GetEntriesFast(); itlf++) {
946 if(lowtrackmap[itlf][ij]){
947 dphivalues[7] = -(itlf+1);
948 fCorrSparse->Fill(dphivalues, GetTrackCorrection(vertexz, track));
953 for(
Int_t iglf = 0; iglf < fV0Filters[0].GetEntriesFast(); iglf++) {
954 if(lowgmap[iglf][i1] || lowgmap[iglf][i2]){
955 dphivalues[8] = -(iglf+1);
956 fCorrSparse->Fill(dphivalues, GetTrackCorrection(vertexz, track));
963 for(
Int_t iplf = 0; iplf < fMesonFilters[0].GetEntriesFast(); iplf ++) {
965 dphivalues[9] = -(iplf + 1);
966 fCorrSparse->Fill(dphivalues, GetTrackCorrection(vertexz, track));
980 if(igf1 == 0 && igf2 == 0) {
981 for(
Int_t ipuf = 0; ipuf < fMesonFilters[1].GetEntriesFast(); ipuf++) {
982 if(static_cast<AliConversionMesonCuts*>(fMesonFilters[1].At(ipuf))->MesonIsSelected(pion, kTRUE)) {
984 massval[4] = (ipuf + 1);
985 fMassSparse->Fill(massval);
990 if(pion->Pt() > fAxistPt.GetBinLowEdge(1) && pion->Pt() < fAxistPt.GetXmax() &&
991 pion->M() > fAxisPiM.GetXmin() && pion->M() < fAxisPiM.GetXmax() &&
992 pion->Eta() > etalim[0] && pion->Eta() < etalim[1]) {
996 if(pion->M() > 0.1 && pion->M() < 0.15) {
997 const Int_t tbin = fAxistPt.FindFixBin(pion->Pt());
998 upitmap[tbin-1][ipuf] = kTRUE;
1002 trigValues[6] = (ipuf + 1);
1003 fTrigSparse->Fill(trigValues);
1006 for(
int ij = 0; ij < ttracks->GetEntriesFast(); ij++) {
1007 AliVTrack * track =
static_cast<AliVTrack*
>(ttracks->At(ij));
1008 Int_t tid = track->GetID();
1010 if(tid == tIDs[0] || tid == tIDs[1] || tid == tIDs[2] || tid == tIDs[3] ) {
1015 if(-tid-1 == tIDs[0]+1 || -tid-1 == tIDs[1]+1 || -tid-1 == tIDs[2]+1 || -tid-1 == tIDs[3]+1) {
1020 dphivalues[0] = pion->Eta() - track->Eta();
1021 dphivalues[1] = GetDPhi(pion->
Phi() - track->Phi());
1022 dphivalues[3] = track->Pt();
1025 dphivalues[9] = ipuf + 1;
1026 fCorrSparse->Fill(dphivalues, GetTrackCorrection(vertexz, track));
1044 Double_t trackValues[fTrackAxesList.GetSize()];
1046 trackValues[4] = vertexz;
1049 for(
Int_t tbin = 0; tbin < fAxistPt.GetNbins(); tbin++) {
1050 trackValues[1] = fAxistPt.GetBinCenter(tbin+1);
1054 for(
Int_t itf = 0; itf < fTrackFilters[1].GetEntriesFast() + 1; itf++) {
1056 for(
Int_t iTrack = 0; iTrack < tracks->GetEntriesFast(); iTrack++) {
1057 AliVTrack * track =
static_cast<AliVTrack*
>(tracks->At(iTrack));
1058 trackValues[0] = track->Eta();
1059 trackValues[2] = track->Pt();
1060 trackValues[5] = itf;
1063 fTrackSparse->Fill(trackValues, GetTrackCorrection(vertexz, track));
1066 for(
Int_t itlf = 0; itlf < fTrackFilters[0].GetEntriesFast(); itlf++) {
1067 if(lowtrackmap[itlf][iTrack]) {
1068 trackValues[5] = -(itlf + 1);
1069 fTrackSparse->Fill(trackValues, GetTrackCorrection(vertexz, track) );
1075 for(
Int_t iglf = 0; iglf < fV0Filters[0].GetEntriesFast(); iglf++) {
1076 if(!lv0tmap[tbin][iglf]) {
1077 trackValues[6] = -(iglf + 1);
1078 fTrackSparse->Fill(trackValues, GetTrackCorrection(vertexz, track));
1084 for(
Int_t iplf = 0; iplf < fMesonFilters[0].GetEntriesFast(); iplf++) {
1085 if(!lpitmap[tbin][iplf]) {
1086 trackValues[7] = -(iplf + 1);
1087 fTrackSparse->Fill(trackValues, GetTrackCorrection(vertexz, track));
1096 for(
Int_t iguf = 0; iguf < fV0Filters[1].GetEntriesFast(); iguf++) {
1097 if (uv0tmap[tbin][iguf] ) {
1101 for(
Int_t iTrack = 0; iTrack < ttracks->GetEntriesFast(); iTrack++) {
1102 AliVTrack * track =
static_cast<AliVTrack*
>(ttracks->At(iTrack));
1103 trackValues[0] = track->Eta();
1104 trackValues[2] = track->Pt();
1106 trackValues[6] = iguf+1;
1108 fTrackSparse->Fill(trackValues, GetTrackCorrection(vertexz, track));
1113 for(
Int_t ipuf = 0; ipuf < fMesonFilters[1].GetEntriesFast(); ipuf++) {
1114 if (upitmap[tbin][ipuf] ) {
1116 for(
Int_t iTrack = 0; iTrack < ttracks->GetEntriesFast(); iTrack++) {
1117 AliVTrack * track =
static_cast<AliVTrack*
>(ttracks->At(iTrack));
1118 trackValues[0] = track->Eta();
1119 trackValues[2] = track->Pt();
1122 trackValues[7] = ipuf+1;
1123 fTrackSparse->Fill(trackValues, GetTrackCorrection(vertexz, track));
1134 PostData(1, fHistograms);
1205 TClonesArray * gammas =
dynamic_cast<TClonesArray*
>(fInputEvent->FindListObject(fDeltaAODBranchName.Data()));
1210 FindDeltaAODBranchName(fInputEvent);
1211 gammas =
dynamic_cast<TClonesArray*
>(fInputEvent->FindListObject(fDeltaAODBranchName.Data()));
1215 TClonesArray * gammas =
dynamic_cast<TClonesArray*
>(GetInputData(1));
1224 TList *list=
event->GetList();
1225 for(
Int_t ii=0;ii<list->GetEntries();ii++){
1226 TString name((list->At(ii))->GetName());
1227 if(name.BeginsWith(
"GammaConv")&&name.EndsWith(
"gamma")){
1228 fDeltaAODBranchName=name;
1229 AliDebug(
AliLog::kDebug + 5, Form(
"Set DeltaAOD BranchName to: %s",fDeltaAODBranchName.Data()));
1239 Int_t coord[4] = {-1, -1, -1, -1};
1240 if(fCorrectionMap) {
1241 Double_t values[4] = { vtxz, track->Pt(), track->Eta(), track->Phi() };
1242 Double_t correction = fCorrectionMap->GetBinContent(fCorrectionMap->GetBin(values, kFALSE), coord);
1243 if (fCorrectionMap->IsInRange(coord)) {
TList * GetCutHistograms()
virtual void Terminate(Option_t *)
virtual Int_t GetLabel(Int_t i) const
void InitCutHistograms(TString name="", Bool_t preCut=kTRUE)
virtual void UserCreateOutputObjects()
Int_t GetTrackLabelNegative() const
void FindDeltaAODBranchName(AliVEvent *event)
Int_t GetTrackLabelPositive() const
Double_t GetTrackCorrection(Double_t vtxz, AliVTrack *track)
Class handling all kinds of selection cuts for Gamma Conversion analysis.
void SetPIDResponse(AliPIDResponse *pidResponse)
TClonesArray * GetConversionGammas(Bool_t isAOD)
AliPIDResponse * GetPIDResponse()
TList * CreateHistograms()
Class handling all kinds of selection cuts for Gamma Conversion analysis.
virtual ~AliAnalysisTaskdPhi()
Int_t kDebug
Do the analysis with this debug level.
THnSparseF * CreateSparse(TString nameString, TString titleString, TList *axesList)
void SetEvent(AliVEvent *event)
void CalculateDistanceOfClossetApproachToPrimVtx(const AliVVertex *primVertex)
Bool_t PhotonIsSelected(AliConversionPhotonBase *photon, AliVEvent *event)
virtual void UserExec(Option_t *option)
TList * GetCutHistograms()