1 // *************************************************************************
3 // * Task for Fragmentation Function Analysis in PWG4 Jet Task Force Train *
5 // *************************************************************************
8 /**************************************************************************
9 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
11 * Author: The ALICE Off-line Project. *
12 * Contributors are mentioned in the code where appropriate. *
14 * Permission to use, copy, modify and distribute this software and its *
15 * documentation strictly for non-commercial purposes is hereby granted *
16 * without fee, provided that the above copyright notice appears in all *
17 * copies and that both the copyright notice and this permission notice *
18 * appear in the supporting documentation. The authors make no claims *
19 * about the suitability of this software for any purpose. It is *
20 * provided "as is" without express or implied warranty. *
21 **************************************************************************/
30 #include "THnSparse.h"
36 #include "AliAODInputHandler.h"
37 #include "AliAODHandler.h"
38 #include "AliESDEvent.h"
39 #include "AliAODMCParticle.h"
40 #include "AliAODJet.h"
41 #include "AliAODJetEventBackground.h"
42 #include "AliGenPythiaEventHeader.h"
43 #include "AliGenHijingEventHeader.h"
44 #include "AliInputEventHandler.h"
46 #include "AliAnalysisHelperJetTasks.h"
47 #include "AliAnalysisManager.h"
48 #include "AliAnalysisTaskSE.h"
49 #include "AliVParticle.h"
50 #include "AliVEvent.h"
52 #include "AliAnalysisTaskFragmentationFunction.h"
54 ClassImp(AliAnalysisTaskFragmentationFunction)
56 //____________________________________________________________________________
57 AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction()
64 ,fBranchRecJets("jets")
65 ,fBranchRecBackJets("")
66 ,fBranchRecBckgClusters("")
68 ,fBranchEmbeddedJets("")
72 ,fUseAODInputJets(kTRUE)
74 ,fUsePhysicsSelection(kTRUE)
84 ,fUseExtraTracksBgr(0)
85 ,fCutFractionPtEmbedded(0)
86 ,fUseEmbeddedJetAxis(0)
95 ,fDiJetPtFractionCut(0)
109 ,fUseRecEffRecJetPtBins(0)
110 ,fUseResponseRecJetPtBins(1)
115 ,fTracksAODMCCharged(0)
116 ,fTracksAODMCChargedSec(0)
117 ,fTracksRecQualityCuts(0)
126 ,fQATrackHistosRec(0)
127 ,fQATrackHistosRecCuts(0)
128 ,fQATrackHistosGen(0)
130 ,fQAJetHistosRecCuts(0)
131 ,fQAJetHistosRecCutsLeading(0)
133 ,fQAJetHistosGenLeading(0)
134 ,fQAJetHistosRecEffLeading(0)
136 ,fFFHistosRecLeading(0)
137 ,fFFHistosRecLeadingTrack(0)
139 ,fFFHistosGenLeading(0)
140 ,fFFHistosGenLeadingTrack(0)
142 ,fIJHistosRecLeading(0)
143 ,fIJHistosRecLeadingTrack(0)
145 ,fIJHistosGenLeading(0)
146 ,fIJHistosGenLeadingTrack(0)
147 ,fFFDiJetHistosRecCuts(0)
148 ,fFFDiJetHistosRecLeading(0)
149 ,fFFDiJetHistosRecLeadingTrack(0)
150 ,fFFDiJetHistosGen(0)
151 ,fFFDiJetHistosGenLeading(0)
152 ,fFFDiJetHistosGenLeadingTrack(0)
153 ,fQADiJetHistosRecCuts(0)
154 ,fQADiJetHistosGen(0)
155 ,fPhiCorrHistosJetArea(0)
156 ,fPhiCorrHistosTransverseArea(0)
157 ,fPhiCorrHistosAwayArea(0)
158 ,fQATrackHighPtThreshold(0)
208 ,fDiJetNBinsJetInvMass(0)
209 ,fDiJetJetInvMassMin(0)
210 ,fDiJetJetInvMassMax(0)
223 ,fQADiJetNBinsInvMass(0)
224 ,fQADiJetInvMassMin(0)
225 ,fQADiJetInvMassMax(0)
226 ,fQADiJetNBinsJetPt(0)
229 ,fQADiJetNBinsDeltaPhi(0)
230 ,fQADiJetDeltaPhiMin(0)
231 ,fQADiJetDeltaPhiMax(0)
232 ,fQADiJetNBinsDeltaEta(0)
233 ,fQADiJetDeltaEtaMin(0)
234 ,fQADiJetDeltaEtaMax(0)
235 ,fQADiJetNBinsDeltaPt(0)
236 ,fQADiJetDeltaPtMin(0)
237 ,fQADiJetDeltaPtMax(0)
238 ,fQADiJetNBinsInBal(0)
252 ,fh1VertexNContributors(0)
256 ,fh2TrackPtVsDCAXY(0)
266 ,fh1nRecBckgJetsCuts(0)
268 ,fh2PtRecVsGenPrim(0)
270 ,fQATrackHistosRecEffGen(0)
271 ,fQATrackHistosRecEffRec(0)
272 ,fQATrackHistosSecRec(0)
273 ,fFFHistosRecEffGen(0)
274 ,fFFHistosRecEffRec(0)
276 ,fhnResponseSinglePt(0)
277 ,fh2SingleInvPtRecMnGenVsPtGen(0)
278 ,fhnResponseJetTrackPt(0)
282 ,fh1OutLeadingMult(0)
283 ,fh1OutLeadingStatMult(0)
286 ,fh1ASideWindowMult(0)
287 ,fh1PerpWindowMult(0)
290 ,fh1MedianClustersMult(0)
291 ,fh1OutClustersMult(0)
292 ,fh1FractionPtEmbedded(0)
294 ,fh2DeltaPtVsJetPtEmbedded(0)
295 ,fh2DeltaPtVsRecJetPtEmbedded(0)
296 ,fh1DeltaREmbedded(0)
297 ,fh2ptVsDistNN_pt50_rec(0)
298 ,fh2ptVsDistNN_pt50_nonRec(0)
299 ,fh2ptVsDistNN_pt10_rec(0)
300 ,fh2ptVsDistNN_pt10_nonRec(0)
301 ,fQABckgHisto0RecCuts(0)
303 ,fQABckgHisto1RecCuts(0)
305 ,fQABckgHisto2RecCuts(0)
307 ,fQABckgHisto3RecCuts(0)
309 ,fQABckgHisto4RecCuts(0)
311 ,fFFBckgHisto0RecCuts(0)
312 ,fFFBckgHisto0RecLeading(0)
314 ,fFFBckgHisto0GenLeading(0)
315 ,fFFBckgHisto1RecCuts(0)
316 ,fFFBckgHisto1RecLeading(0)
318 ,fFFBckgHisto1GenLeading(0)
319 ,fFFBckgHisto2RecCuts(0)
320 ,fFFBckgHisto2RecLeading(0)
322 ,fFFBckgHisto2GenLeading(0)
323 ,fFFBckgHisto3RecCuts(0)
324 ,fFFBckgHisto3RecLeading(0)
326 ,fFFBckgHisto3GenLeading(0)
327 ,fFFBckgHisto4RecCuts(0)
328 ,fFFBckgHisto4RecLeading(0)
330 ,fFFBckgHisto4GenLeading(0)
331 ,fIJBckgHisto0RecCuts(0)
332 ,fIJBckgHisto0RecLeading(0)
334 ,fIJBckgHisto0GenLeading(0)
335 ,fIJBckgHisto1RecCuts(0)
336 ,fIJBckgHisto1RecLeading(0)
338 ,fIJBckgHisto1GenLeading(0)
339 ,fIJBckgHisto2RecCuts(0)
340 ,fIJBckgHisto2RecLeading(0)
342 ,fIJBckgHisto2GenLeading(0)
343 ,fIJBckgHisto3RecCuts(0)
344 ,fIJBckgHisto3RecLeading(0)
346 ,fIJBckgHisto3GenLeading(0)
347 ,fIJBckgHisto4RecCuts(0)
348 ,fIJBckgHisto4RecLeading(0)
350 ,fIJBckgHisto4GenLeading(0)
354 // default constructor
362 //__________________________________________________________________________________________
363 AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const char *name)
364 : AliAnalysisTaskSE(name)
370 ,fBranchRecJets("jets")
371 ,fBranchRecBackJets("")
372 ,fBranchRecBckgClusters("")
374 ,fBranchEmbeddedJets("")
378 ,fUseAODInputJets(kTRUE)
380 ,fUsePhysicsSelection(kTRUE)
381 ,fEvtSelectionMask(0)
390 ,fUseExtraTracksBgr(0)
391 ,fCutFractionPtEmbedded(0)
392 ,fUseEmbeddedJetAxis(0)
393 ,fUseEmbeddedJetPt(0)
400 ,fDiJetDeltaPhiCut(0)
401 ,fDiJetPtFractionCut(0)
415 ,fUseRecEffRecJetPtBins(0)
416 ,fUseResponseRecJetPtBins(1)
421 ,fTracksAODMCCharged(0)
422 ,fTracksAODMCChargedSec(0)
423 ,fTracksRecQualityCuts(0)
432 ,fQATrackHistosRec(0)
433 ,fQATrackHistosRecCuts(0)
434 ,fQATrackHistosGen(0)
436 ,fQAJetHistosRecCuts(0)
437 ,fQAJetHistosRecCutsLeading(0)
439 ,fQAJetHistosGenLeading(0)
440 ,fQAJetHistosRecEffLeading(0)
442 ,fFFHistosRecLeading(0)
443 ,fFFHistosRecLeadingTrack(0)
445 ,fFFHistosGenLeading(0)
446 ,fFFHistosGenLeadingTrack(0)
448 ,fIJHistosRecLeading(0)
449 ,fIJHistosRecLeadingTrack(0)
451 ,fIJHistosGenLeading(0)
452 ,fIJHistosGenLeadingTrack(0)
453 ,fFFDiJetHistosRecCuts(0)
454 ,fFFDiJetHistosRecLeading(0)
455 ,fFFDiJetHistosRecLeadingTrack(0)
456 ,fFFDiJetHistosGen(0)
457 ,fFFDiJetHistosGenLeading(0)
458 ,fFFDiJetHistosGenLeadingTrack(0)
459 ,fQADiJetHistosRecCuts(0)
460 ,fQADiJetHistosGen(0)
461 ,fPhiCorrHistosJetArea(0)
462 ,fPhiCorrHistosTransverseArea(0)
463 ,fPhiCorrHistosAwayArea(0)
464 ,fQATrackHighPtThreshold(0)
514 ,fDiJetNBinsJetInvMass(0)
515 ,fDiJetJetInvMassMin(0)
516 ,fDiJetJetInvMassMax(0)
529 ,fQADiJetNBinsInvMass(0)
530 ,fQADiJetInvMassMin(0)
531 ,fQADiJetInvMassMax(0)
532 ,fQADiJetNBinsJetPt(0)
535 ,fQADiJetNBinsDeltaPhi(0)
536 ,fQADiJetDeltaPhiMin(0)
537 ,fQADiJetDeltaPhiMax(0)
538 ,fQADiJetNBinsDeltaEta(0)
539 ,fQADiJetDeltaEtaMin(0)
540 ,fQADiJetDeltaEtaMax(0)
541 ,fQADiJetNBinsDeltaPt(0)
542 ,fQADiJetDeltaPtMin(0)
543 ,fQADiJetDeltaPtMax(0)
544 ,fQADiJetNBinsInBal(0)
558 ,fh1VertexNContributors(0)
562 ,fh2TrackPtVsDCAXY(0)
572 ,fh1nRecBckgJetsCuts(0)
574 ,fh2PtRecVsGenPrim(0)
576 ,fQATrackHistosRecEffGen(0)
577 ,fQATrackHistosRecEffRec(0)
578 ,fQATrackHistosSecRec(0)
579 ,fFFHistosRecEffGen(0)
580 ,fFFHistosRecEffRec(0)
582 ,fhnResponseSinglePt(0)
583 ,fh2SingleInvPtRecMnGenVsPtGen(0)
584 ,fhnResponseJetTrackPt(0)
588 ,fh1OutLeadingMult(0)
589 ,fh1OutLeadingStatMult(0)
592 ,fh1ASideWindowMult(0)
593 ,fh1PerpWindowMult(0)
596 ,fh1MedianClustersMult(0)
597 ,fh1OutClustersMult(0)
598 ,fh1FractionPtEmbedded(0)
600 ,fh2DeltaPtVsJetPtEmbedded(0)
601 ,fh2DeltaPtVsRecJetPtEmbedded(0)
602 ,fh1DeltaREmbedded(0)
603 ,fh2ptVsDistNN_pt50_rec(0)
604 ,fh2ptVsDistNN_pt50_nonRec(0)
605 ,fh2ptVsDistNN_pt10_rec(0)
606 ,fh2ptVsDistNN_pt10_nonRec(0)
607 ,fQABckgHisto0RecCuts(0)
609 ,fQABckgHisto1RecCuts(0)
611 ,fQABckgHisto2RecCuts(0)
613 ,fQABckgHisto3RecCuts(0)
615 ,fQABckgHisto4RecCuts(0)
617 ,fFFBckgHisto0RecCuts(0)
618 ,fFFBckgHisto0RecLeading(0)
620 ,fFFBckgHisto0GenLeading(0)
621 ,fFFBckgHisto1RecCuts(0)
622 ,fFFBckgHisto1RecLeading(0)
624 ,fFFBckgHisto1GenLeading(0)
625 ,fFFBckgHisto2RecCuts(0)
626 ,fFFBckgHisto2RecLeading(0)
628 ,fFFBckgHisto2GenLeading(0)
629 ,fFFBckgHisto3RecCuts(0)
630 ,fFFBckgHisto3RecLeading(0)
632 ,fFFBckgHisto3GenLeading(0)
633 ,fFFBckgHisto4RecCuts(0)
634 ,fFFBckgHisto4RecLeading(0)
636 ,fFFBckgHisto4GenLeading(0)
637 ,fIJBckgHisto0RecCuts(0)
638 ,fIJBckgHisto0RecLeading(0)
640 ,fIJBckgHisto0GenLeading(0)
641 ,fIJBckgHisto1RecCuts(0)
642 ,fIJBckgHisto1RecLeading(0)
644 ,fIJBckgHisto1GenLeading(0)
645 ,fIJBckgHisto2RecCuts(0)
646 ,fIJBckgHisto2RecLeading(0)
648 ,fIJBckgHisto2GenLeading(0)
649 ,fIJBckgHisto3RecCuts(0)
650 ,fIJBckgHisto3RecLeading(0)
652 ,fIJBckgHisto3GenLeading(0)
653 ,fIJBckgHisto4RecCuts(0)
654 ,fIJBckgHisto4RecLeading(0)
656 ,fIJBckgHisto4GenLeading(0)
667 DefineOutput(1,TList::Class());
672 //__________________________________________________________________________________________________________________________
673 AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const AliAnalysisTaskFragmentationFunction ©)
674 : AliAnalysisTaskSE()
677 ,fAODJets(copy.fAODJets)
678 ,fAODExtension(copy.fAODExtension)
679 ,fNonStdFile(copy.fNonStdFile)
680 ,fBranchRecJets(copy.fBranchRecJets)
681 ,fBranchRecBackJets(copy.fBranchRecBackJets)
682 ,fBranchRecBckgClusters(copy.fBranchRecBckgClusters)
683 ,fBranchGenJets(copy.fBranchGenJets)
684 ,fBranchEmbeddedJets(copy.fBranchEmbeddedJets)
685 ,fTrackTypeGen(copy.fTrackTypeGen)
686 ,fJetTypeGen(copy.fJetTypeGen)
687 ,fJetTypeRecEff(copy.fJetTypeRecEff)
688 ,fUseAODInputJets(copy.fUseAODInputJets)
689 ,fFilterMask(copy.fFilterMask)
690 ,fUsePhysicsSelection(copy.fUsePhysicsSelection)
691 ,fEvtSelectionMask(copy.fEvtSelectionMask)
692 ,fEventClass(copy.fEventClass)
693 ,fMaxVertexZ(copy.fMaxVertexZ)
694 ,fTrackPtCut(copy.fTrackPtCut)
695 ,fTrackEtaMin(copy.fTrackEtaMin)
696 ,fTrackEtaMax(copy.fTrackEtaMax)
697 ,fTrackPhiMin(copy.fTrackPhiMin)
698 ,fTrackPhiMax(copy.fTrackPhiMax)
699 ,fUseExtraTracks(copy.fUseExtraTracks)
700 ,fUseExtraTracksBgr(copy.fUseExtraTracksBgr)
701 ,fCutFractionPtEmbedded(copy.fCutFractionPtEmbedded)
702 ,fUseEmbeddedJetAxis(copy.fUseEmbeddedJetAxis)
703 ,fUseEmbeddedJetPt(copy.fUseEmbeddedJetPt)
704 ,fJetPtCut(copy.fJetPtCut)
705 ,fJetEtaMin(copy.fJetEtaMin)
706 ,fJetEtaMax(copy.fJetEtaMax)
707 ,fJetPhiMin(copy.fJetPhiMin)
708 ,fJetPhiMax(copy.fJetPhiMax)
709 ,fDiJetCut(copy.fDiJetCut)
710 ,fDiJetDeltaPhiCut(copy.fDiJetDeltaPhiCut)
711 ,fDiJetPtFractionCut(copy.fDiJetPtFractionCut)
712 ,fDiJetCDFCut(copy.fDiJetCDFCut)
713 ,fDiJetKindBins(copy.fDiJetKindBins)
714 ,fFFRadius(copy.fFFRadius)
715 ,fFFMaxTrackPt(copy.fFFMaxTrackPt)
716 ,fFFMinnTracks(copy.fFFMinnTracks)
717 ,fFFBckgRadius(copy.fFFBckgRadius)
718 ,fBckgMode(copy.fBckgMode)
719 ,fIJMode(copy.fIJMode)
720 ,fQAMode(copy.fQAMode)
721 ,fFFMode(copy.fFFMode)
722 ,fDJMode(copy.fDJMode)
723 ,fEffMode(copy.fEffMode)
724 ,fPhiCorrMode(copy.fPhiCorrMode)
725 ,fUseRecEffRecJetPtBins(copy.fUseRecEffRecJetPtBins)
726 ,fUseResponseRecJetPtBins(copy.fUseResponseRecJetPtBins)
727 ,fAvgTrials(copy.fAvgTrials)
728 ,fTracksRec(copy.fTracksRec)
729 ,fTracksRecCuts(copy.fTracksRecCuts)
730 ,fTracksGen(copy.fTracksGen)
731 ,fTracksAODMCCharged(copy.fTracksAODMCCharged)
732 ,fTracksAODMCChargedSec(copy.fTracksAODMCChargedSec)
733 ,fTracksRecQualityCuts(copy.fTracksRecQualityCuts)
734 ,fJetsRec(copy.fJetsRec)
735 ,fJetsRecCuts(copy.fJetsRecCuts)
736 ,fJetsGen(copy.fJetsGen)
737 ,fJetsRecEff(copy.fJetsRecEff)
738 ,fJetsEmbedded(copy.fJetsEmbedded)
739 ,fBckgJetsRec(copy.fBckgJetsRec)
740 ,fBckgJetsRecCuts(copy.fBckgJetsRecCuts)
741 ,fBckgJetsGen(copy.fBckgJetsGen)
742 ,fQATrackHistosRec(copy.fQATrackHistosRec)
743 ,fQATrackHistosRecCuts(copy.fQATrackHistosRecCuts)
744 ,fQATrackHistosGen(copy.fQATrackHistosGen)
745 ,fQAJetHistosRec(copy.fQAJetHistosRec)
746 ,fQAJetHistosRecCuts(copy.fQAJetHistosRecCuts)
747 ,fQAJetHistosRecCutsLeading(copy.fQAJetHistosRecCutsLeading)
748 ,fQAJetHistosGen(copy.fQAJetHistosGen)
749 ,fQAJetHistosGenLeading(copy.fQAJetHistosGenLeading)
750 ,fQAJetHistosRecEffLeading(copy.fQAJetHistosRecEffLeading)
751 ,fFFHistosRecCuts(copy.fFFHistosRecCuts)
752 ,fFFHistosRecLeading(copy.fFFHistosRecLeading)
753 ,fFFHistosRecLeadingTrack(copy.fFFHistosRecLeadingTrack)
754 ,fFFHistosGen(copy.fFFHistosGen)
755 ,fFFHistosGenLeading(copy.fFFHistosGenLeading)
756 ,fFFHistosGenLeadingTrack(copy.fFFHistosGenLeadingTrack)
757 ,fIJHistosRecCuts(copy.fIJHistosRecCuts)
758 ,fIJHistosRecLeading(copy.fIJHistosRecLeading)
759 ,fIJHistosRecLeadingTrack(copy.fIJHistosRecLeadingTrack)
760 ,fIJHistosGen(copy.fIJHistosGen)
761 ,fIJHistosGenLeading(copy.fIJHistosGenLeading)
762 ,fIJHistosGenLeadingTrack(copy.fIJHistosGenLeadingTrack)
763 ,fFFDiJetHistosRecCuts(copy.fFFDiJetHistosRecCuts)
764 ,fFFDiJetHistosRecLeading(copy.fFFDiJetHistosRecLeading)
765 ,fFFDiJetHistosRecLeadingTrack(copy.fFFDiJetHistosRecLeadingTrack)
766 ,fFFDiJetHistosGen(copy.fFFDiJetHistosGen)
767 ,fFFDiJetHistosGenLeading(copy.fFFDiJetHistosGenLeading)
768 ,fFFDiJetHistosGenLeadingTrack(copy.fFFDiJetHistosGenLeadingTrack)
769 ,fQADiJetHistosRecCuts(copy.fQADiJetHistosRecCuts)
770 ,fQADiJetHistosGen(copy.fQADiJetHistosGen)
771 ,fPhiCorrHistosJetArea(copy.fPhiCorrHistosJetArea)
772 ,fPhiCorrHistosTransverseArea(copy.fPhiCorrHistosTransverseArea)
773 ,fPhiCorrHistosAwayArea(copy.fPhiCorrHistosAwayArea)
774 ,fQATrackHighPtThreshold(copy.fQATrackHighPtThreshold)
775 ,fFFNBinsJetPt(copy.fFFNBinsJetPt)
776 ,fFFJetPtMin(copy.fFFJetPtMin)
777 ,fFFJetPtMax(copy.fFFJetPtMax)
778 ,fFFNBinsPt(copy.fFFNBinsPt)
779 ,fFFPtMin(copy.fFFPtMin)
780 ,fFFPtMax(copy.fFFPtMax)
781 ,fFFNBinsXi(copy.fFFNBinsXi)
782 ,fFFXiMin(copy.fFFXiMin)
783 ,fFFXiMax(copy.fFFXiMax)
784 ,fFFNBinsZ(copy.fFFNBinsZ)
785 ,fFFZMin(copy.fFFZMin)
786 ,fFFZMax(copy.fFFZMax)
787 ,fFFLogZBins(copy.fFFLogZBins)
788 ,fQAJetNBinsPt(copy.fQAJetNBinsPt)
789 ,fQAJetPtMin(copy.fQAJetPtMin)
790 ,fQAJetPtMax(copy.fQAJetPtMax)
791 ,fQAJetNBinsEta(copy.fQAJetNBinsEta)
792 ,fQAJetEtaMin(copy.fQAJetEtaMin)
793 ,fQAJetEtaMax(copy.fQAJetEtaMax)
794 ,fQAJetNBinsPhi(copy.fQAJetNBinsPhi)
795 ,fQAJetPhiMin(copy.fQAJetPhiMin)
796 ,fQAJetPhiMax(copy.fQAJetPhiMax)
797 ,fQATrackNBinsPt(copy.fQATrackNBinsPt)
798 ,fQATrackPtMin(copy.fQATrackPtMin)
799 ,fQATrackPtMax(copy.fQATrackPtMax)
800 ,fQATrackNBinsEta(copy.fQATrackNBinsEta)
801 ,fQATrackEtaMin(copy.fQATrackEtaMin)
802 ,fQATrackEtaMax(copy.fQATrackEtaMax)
803 ,fQATrackNBinsPhi(copy.fQATrackNBinsPhi)
804 ,fQATrackPhiMin(copy.fQATrackPhiMin)
805 ,fQATrackPhiMax(copy.fQATrackPhiMax)
806 ,fIJNBinsJetPt(copy.fIJNBinsJetPt)
807 ,fIJJetPtMin(copy.fIJJetPtMin)
808 ,fIJJetPtMax(copy.fIJJetPtMax)
809 ,fIJNBinsPt(copy.fIJNBinsPt)
810 ,fIJPtMin(copy.fIJPtMin)
811 ,fIJPtMax(copy.fIJPtMax)
812 ,fIJNBinsZ(copy.fIJNBinsZ)
813 ,fIJZMin(copy.fIJZMin)
814 ,fIJZMax(copy.fIJZMax)
815 ,fIJNBinsCosTheta(copy.fIJNBinsCosTheta)
816 ,fIJCosThetaMin(copy.fIJCosThetaMin)
817 ,fIJCosThetaMax(copy.fIJCosThetaMax)
818 ,fIJNBinsTheta(copy.fIJNBinsTheta)
819 ,fIJThetaMin(copy.fIJThetaMin)
820 ,fIJThetaMax(copy.fIJThetaMax)
821 ,fIJNBinsJt(copy.fIJNBinsJt)
822 ,fIJJtMin(copy.fIJJtMin)
823 ,fIJJtMax(copy.fIJJtMax)
824 ,fDiJetNBinsJetInvMass(copy.fDiJetNBinsJetInvMass)
825 ,fDiJetJetInvMassMin(copy.fDiJetJetInvMassMin)
826 ,fDiJetJetInvMassMax(copy.fDiJetJetInvMassMax)
827 ,fDiJetNBinsJetPt(copy.fDiJetNBinsJetPt)
828 ,fDiJetJetPtMin(copy.fDiJetJetPtMin)
829 ,fDiJetJetPtMax(copy.fDiJetJetPtMax)
830 ,fDiJetNBinsPt(copy.fDiJetNBinsPt)
831 ,fDiJetPtMin(copy.fDiJetPtMin)
832 ,fDiJetPtMax(copy.fDiJetPtMax)
833 ,fDiJetNBinsXi(copy.fDiJetNBinsXi)
834 ,fDiJetXiMin(copy.fDiJetXiMin)
835 ,fDiJetXiMax(copy.fDiJetXiMax)
836 ,fDiJetNBinsZ(copy.fDiJetNBinsZ)
837 ,fDiJetZMin(copy.fDiJetZMin)
838 ,fDiJetZMax(copy.fDiJetZMax)
839 ,fQADiJetNBinsInvMass(copy.fQADiJetNBinsInvMass)
840 ,fQADiJetInvMassMin(copy.fQADiJetInvMassMin)
841 ,fQADiJetInvMassMax(copy.fQADiJetInvMassMax)
842 ,fQADiJetNBinsJetPt(copy.fQADiJetNBinsJetPt)
843 ,fQADiJetJetPtMin(copy.fQADiJetJetPtMin)
844 ,fQADiJetJetPtMax(copy.fQADiJetJetPtMax)
845 ,fQADiJetNBinsDeltaPhi(copy.fQADiJetNBinsDeltaPhi)
846 ,fQADiJetDeltaPhiMin(copy.fQADiJetDeltaPhiMin)
847 ,fQADiJetDeltaPhiMax(copy.fQADiJetDeltaPhiMax)
848 ,fQADiJetNBinsDeltaEta(copy.fQADiJetNBinsDeltaEta)
849 ,fQADiJetDeltaEtaMin(copy.fQADiJetDeltaEtaMin)
850 ,fQADiJetDeltaEtaMax(copy.fQADiJetDeltaEtaMax)
851 ,fQADiJetNBinsDeltaPt(copy.fQADiJetNBinsDeltaPt)
852 ,fQADiJetDeltaPtMin(copy.fQADiJetDeltaPtMin)
853 ,fQADiJetDeltaPtMax(copy.fQADiJetDeltaPtMax)
854 ,fQADiJetNBinsInBal(copy.fQADiJetNBinsInBal)
855 ,fQADiJetInBalMin(copy.fQADiJetInBalMin)
856 ,fQADiJetInBalMax(copy.fQADiJetInBalMax)
857 ,fPhiCorrNBinsPt(copy.fPhiCorrNBinsPt)
858 ,fPhiCorrPtMin(copy.fPhiCorrPtMin)
859 ,fPhiCorrPtMax(copy.fPhiCorrPtMax)
860 ,fPhiCorrNBinsEta(copy.fPhiCorrNBinsEta)
861 ,fPhiCorrEtaMin(copy.fPhiCorrEtaMin)
862 ,fPhiCorrEtaMax(copy.fPhiCorrEtaMax)
863 ,fPhiCorrNBinsPhi(copy.fPhiCorrNBinsPhi)
864 ,fPhiCorrPhiMin(copy.fPhiCorrPhiMin)
865 ,fPhiCorrPhiMax(copy.fPhiCorrPhiMax)
866 ,fCommonHistList(copy.fCommonHistList)
867 ,fh1EvtSelection(copy.fh1EvtSelection)
868 ,fh1VertexNContributors(copy.fh1VertexNContributors)
869 ,fh1VertexZ(copy.fh1VertexZ)
870 ,fh1EvtMult(copy.fh1EvtMult)
871 ,fh1EvtCent(copy.fh1EvtCent)
872 ,fh2TrackPtVsDCAXY(copy.fh2TrackPtVsDCAXY)
873 ,fh2TrackPtVsDCAZ(copy.fh2TrackPtVsDCAXY)
874 ,fh1Xsec(copy.fh1Xsec)
875 ,fh1Trials(copy.fh1Trials)
876 ,fh1PtHard(copy.fh1PtHard)
877 ,fh1PtHardTrials(copy.fh1PtHardTrials)
878 ,fh1nRecJetsCuts(copy.fh1nRecJetsCuts)
879 ,fh1nGenJets(copy.fh1nGenJets)
880 ,fh1nRecEffJets(copy.fh1nRecEffJets)
881 ,fh1nEmbeddedJets(copy.fh1nEmbeddedJets)
882 ,fh1nRecBckgJetsCuts(copy.fh1nRecBckgJetsCuts)
883 ,fh1nGenBckgJets(copy.fh1nGenBckgJets)
884 ,fh2PtRecVsGenPrim(copy.fh2PtRecVsGenPrim)
885 ,fh2PtRecVsGenSec(copy.fh2PtRecVsGenSec)
886 ,fQATrackHistosRecEffGen(copy.fQATrackHistosRecEffGen)
887 ,fQATrackHistosRecEffRec(copy.fQATrackHistosRecEffRec)
888 ,fQATrackHistosSecRec(copy.fQATrackHistosSecRec)
889 ,fFFHistosRecEffGen(copy.fFFHistosRecEffGen)
890 ,fFFHistosRecEffRec(copy.fFFHistosRecEffRec)
891 ,fFFHistosSecRec(copy.fFFHistosSecRec)
892 ,fhnResponseSinglePt(copy.fhnResponseSinglePt)
893 ,fh2SingleInvPtRecMnGenVsPtGen(copy.fh2SingleInvPtRecMnGenVsPtGen)
894 ,fhnResponseJetTrackPt(copy.fhnResponseJetTrackPt)
895 ,fhnResponseJetZ(copy.fhnResponseJetZ)
896 ,fhnResponseJetXi(copy.fhnResponseJetXi)
898 ,fh1OutLeadingMult(copy.fh1OutLeadingMult)
899 ,fh1OutLeadingStatMult(copy.fh1OutLeadingStatMult)
900 ,fh1PerpMult(copy.fh1PerpMult)
901 ,fh1ASideMult(copy.fh1ASideMult)
902 ,fh1ASideWindowMult(copy.fh1ASideWindowMult)
903 ,fh1PerpWindowMult(copy.fh1PerpWindowMult)
904 ,fh1Out2JetsMult(copy.fh1Out2JetsMult)
905 ,fh1Out3JetsMult(copy.fh1Out3JetsMult)
906 ,fh1MedianClustersMult(copy.fh1MedianClustersMult)
907 ,fh1OutClustersMult(copy.fh1OutClustersMult)
908 ,fh1FractionPtEmbedded(copy.fh1FractionPtEmbedded)
909 ,fh1IndexEmbedded(copy.fh1IndexEmbedded)
910 ,fh2DeltaPtVsJetPtEmbedded(copy.fh2DeltaPtVsJetPtEmbedded)
911 ,fh2DeltaPtVsRecJetPtEmbedded(copy.fh2DeltaPtVsRecJetPtEmbedded)
912 ,fh1DeltaREmbedded(copy.fh1DeltaREmbedded)
913 ,fh2ptVsDistNN_pt50_rec(copy.fh2ptVsDistNN_pt50_rec)
914 ,fh2ptVsDistNN_pt50_nonRec(copy.fh2ptVsDistNN_pt50_nonRec)
915 ,fh2ptVsDistNN_pt10_rec(copy.fh2ptVsDistNN_pt10_rec)
916 ,fh2ptVsDistNN_pt10_nonRec(copy.fh2ptVsDistNN_pt10_nonRec)
917 ,fQABckgHisto0RecCuts(copy.fQABckgHisto0RecCuts)
918 ,fQABckgHisto0Gen(copy.fQABckgHisto0Gen)
919 ,fQABckgHisto1RecCuts(copy.fQABckgHisto1RecCuts)
920 ,fQABckgHisto1Gen(copy.fQABckgHisto1Gen)
921 ,fQABckgHisto2RecCuts(copy.fQABckgHisto2RecCuts)
922 ,fQABckgHisto2Gen(copy.fQABckgHisto2Gen)
923 ,fQABckgHisto3RecCuts(copy.fQABckgHisto3RecCuts)
924 ,fQABckgHisto3Gen(copy.fQABckgHisto3Gen)
925 ,fQABckgHisto4RecCuts(copy.fQABckgHisto4RecCuts)
926 ,fQABckgHisto4Gen(copy.fQABckgHisto4Gen)
927 ,fFFBckgHisto0RecCuts(copy.fFFBckgHisto0RecCuts)
928 ,fFFBckgHisto0RecLeading(copy.fFFBckgHisto0RecLeading)
929 ,fFFBckgHisto0Gen(copy.fFFBckgHisto0Gen)
930 ,fFFBckgHisto0GenLeading(copy.fFFBckgHisto0GenLeading)
931 ,fFFBckgHisto1RecCuts(copy.fFFBckgHisto1RecCuts)
932 ,fFFBckgHisto1RecLeading(copy.fFFBckgHisto1RecLeading)
933 ,fFFBckgHisto1Gen(copy.fFFBckgHisto1Gen)
934 ,fFFBckgHisto1GenLeading(copy.fFFBckgHisto1GenLeading)
935 ,fFFBckgHisto2RecCuts(copy.fFFBckgHisto2RecCuts)
936 ,fFFBckgHisto2RecLeading(copy.fFFBckgHisto2RecLeading)
937 ,fFFBckgHisto2Gen(copy.fFFBckgHisto2Gen)
938 ,fFFBckgHisto2GenLeading(copy.fFFBckgHisto2GenLeading)
939 ,fFFBckgHisto3RecCuts(copy.fFFBckgHisto3RecCuts)
940 ,fFFBckgHisto3RecLeading(copy.fFFBckgHisto3RecLeading)
941 ,fFFBckgHisto3Gen(copy.fFFBckgHisto3Gen)
942 ,fFFBckgHisto3GenLeading(copy.fFFBckgHisto3GenLeading)
943 ,fFFBckgHisto4RecCuts(copy.fFFBckgHisto4RecCuts)
944 ,fFFBckgHisto4RecLeading(copy.fFFBckgHisto4RecLeading)
945 ,fFFBckgHisto4Gen(copy.fFFBckgHisto4Gen)
946 ,fFFBckgHisto4GenLeading(copy.fFFBckgHisto4GenLeading)
947 ,fIJBckgHisto0RecCuts(copy.fIJBckgHisto0RecCuts)
948 ,fIJBckgHisto0RecLeading(copy.fIJBckgHisto0RecLeading)
949 ,fIJBckgHisto0Gen(copy.fIJBckgHisto0Gen)
950 ,fIJBckgHisto0GenLeading(copy.fIJBckgHisto0GenLeading)
951 ,fIJBckgHisto1RecCuts(copy.fIJBckgHisto1RecCuts)
952 ,fIJBckgHisto1RecLeading(copy.fIJBckgHisto1RecLeading)
953 ,fIJBckgHisto1Gen(copy.fIJBckgHisto1Gen)
954 ,fIJBckgHisto1GenLeading(copy.fIJBckgHisto1GenLeading)
955 ,fIJBckgHisto2RecCuts(copy.fIJBckgHisto2RecCuts)
956 ,fIJBckgHisto2RecLeading(copy.fIJBckgHisto2RecLeading)
957 ,fIJBckgHisto2Gen(copy.fIJBckgHisto2Gen)
958 ,fIJBckgHisto2GenLeading(copy.fIJBckgHisto2GenLeading)
959 ,fIJBckgHisto3RecCuts(copy.fIJBckgHisto3RecCuts)
960 ,fIJBckgHisto3RecLeading(copy.fIJBckgHisto3RecLeading)
961 ,fIJBckgHisto3Gen(copy.fIJBckgHisto3Gen)
962 ,fIJBckgHisto3GenLeading(copy.fIJBckgHisto3GenLeading)
963 ,fIJBckgHisto4RecCuts(copy.fIJBckgHisto4RecCuts)
964 ,fIJBckgHisto4RecLeading(copy.fIJBckgHisto4RecLeading)
965 ,fIJBckgHisto4Gen(copy.fIJBckgHisto4Gen)
966 ,fIJBckgHisto4GenLeading(copy.fIJBckgHisto4GenLeading)
967 ,fRandom(copy.fRandom)
968 ,fBckgSubMethod(copy.fBckgSubMethod)
971 fBckgType[0] = copy.fBckgType[0];
972 fBckgType[1] = copy.fBckgType[1];
973 fBckgType[2] = copy.fBckgType[2];
974 fBckgType[3] = copy.fBckgType[3];
975 fBckgType[4] = copy.fBckgType[4];
978 // _________________________________________________________________________________________________________________________________
979 AliAnalysisTaskFragmentationFunction& AliAnalysisTaskFragmentationFunction::operator=(const AliAnalysisTaskFragmentationFunction& o)
985 AliAnalysisTaskSE::operator=(o);
988 fAODJets = o.fAODJets;
989 fAODExtension = o.fAODExtension;
990 fNonStdFile = o.fNonStdFile;
991 fBranchRecJets = o.fBranchRecJets;
992 fBranchRecBackJets = o.fBranchRecBackJets;
993 fBranchRecBckgClusters = o.fBranchRecBckgClusters;
994 fBranchGenJets = o.fBranchGenJets;
995 fBranchEmbeddedJets = o.fBranchEmbeddedJets;
996 fTrackTypeGen = o.fTrackTypeGen;
997 fJetTypeGen = o.fJetTypeGen;
998 fJetTypeRecEff = o.fJetTypeRecEff;
999 fUseAODInputJets = o.fUseAODInputJets;
1000 fFilterMask = o.fFilterMask;
1001 fUsePhysicsSelection = o.fUsePhysicsSelection;
1002 fEvtSelectionMask = o.fEvtSelectionMask;
1003 fEventClass = o.fEventClass;
1004 fMaxVertexZ = o.fMaxVertexZ;
1005 fTrackPtCut = o.fTrackPtCut;
1006 fTrackEtaMin = o.fTrackEtaMin;
1007 fTrackEtaMax = o.fTrackEtaMax;
1008 fTrackPhiMin = o.fTrackPhiMin;
1009 fTrackPhiMax = o.fTrackPhiMax;
1010 fUseExtraTracks = o.fUseExtraTracks;
1011 fUseExtraTracksBgr = o.fUseExtraTracksBgr;
1012 fCutFractionPtEmbedded = o.fCutFractionPtEmbedded;
1013 fUseEmbeddedJetAxis = o.fUseEmbeddedJetAxis;
1014 fUseEmbeddedJetPt = o.fUseEmbeddedJetPt;
1015 fJetPtCut = o.fJetPtCut;
1016 fJetEtaMin = o.fJetEtaMin;
1017 fJetEtaMax = o.fJetEtaMax;
1018 fJetPhiMin = o.fJetPhiMin;
1019 fJetPhiMax = o.fJetPhiMin;
1020 fDiJetCut = o.fDiJetCut;
1021 fDiJetDeltaPhiCut = o.fDiJetDeltaPhiCut;
1022 fDiJetPtFractionCut = o.fDiJetPtFractionCut;
1023 fDiJetCDFCut = o.fDiJetCDFCut;
1024 fDiJetKindBins = o.fDiJetKindBins;
1025 fFFRadius = o.fFFRadius;
1026 fFFMaxTrackPt = o.fFFMaxTrackPt;
1027 fFFMinnTracks = o.fFFMinnTracks;
1028 fFFBckgRadius = o.fFFBckgRadius;
1029 fBckgMode = o.fBckgMode;
1030 fIJMode = o.fIJMode;
1031 fQAMode = o.fQAMode;
1032 fFFMode = o.fFFMode;
1033 fDJMode = o.fDJMode;
1034 fEffMode = o.fEffMode;
1035 fPhiCorrMode = o.fPhiCorrMode;
1036 fBckgType[0] = o.fBckgType[0];
1037 fBckgType[1] = o.fBckgType[1];
1038 fBckgType[2] = o.fBckgType[2];
1039 fBckgType[3] = o.fBckgType[3];
1040 fBckgType[4] = o.fBckgType[4];
1041 fUseRecEffRecJetPtBins = o.fUseRecEffRecJetPtBins;
1042 fUseResponseRecJetPtBins = o.fUseResponseRecJetPtBins;
1043 fAvgTrials = o.fAvgTrials;
1044 fTracksRec = o.fTracksRec;
1045 fTracksRecCuts = o.fTracksRecCuts;
1046 fTracksGen = o.fTracksGen;
1047 fTracksAODMCCharged = o.fTracksAODMCCharged;
1048 fTracksAODMCChargedSec = o.fTracksAODMCChargedSec;
1049 fTracksRecQualityCuts = o.fTracksRecQualityCuts;
1050 fJetsRec = o.fJetsRec;
1051 fJetsRecCuts = o.fJetsRecCuts;
1052 fJetsGen = o.fJetsGen;
1053 fJetsRecEff = o.fJetsRecEff;
1054 fJetsEmbedded = o.fJetsEmbedded;
1055 fBckgJetsRec = o.fBckgJetsRec;
1056 fBckgJetsRecCuts = o.fBckgJetsRecCuts;
1057 fBckgJetsGen = o.fBckgJetsGen;
1058 fQATrackHistosRec = o.fQATrackHistosRec;
1059 fQATrackHistosRecCuts = o.fQATrackHistosRecCuts;
1060 fQATrackHistosGen = o.fQATrackHistosGen;
1061 fQAJetHistosRec = o.fQAJetHistosRec;
1062 fQAJetHistosRecCuts = o.fQAJetHistosRecCuts;
1063 fQAJetHistosRecCutsLeading = o.fQAJetHistosRecCutsLeading;
1064 fQAJetHistosGen = o.fQAJetHistosGen;
1065 fQAJetHistosGenLeading = o.fQAJetHistosGenLeading;
1066 fQAJetHistosRecEffLeading = o.fQAJetHistosRecEffLeading;
1067 fFFHistosRecCuts = o.fFFHistosRecCuts;
1068 fFFHistosRecLeading = o.fFFHistosRecLeading;
1069 fFFHistosRecLeadingTrack = o.fFFHistosRecLeadingTrack;
1070 fFFHistosGen = o.fFFHistosGen;
1071 fFFHistosGenLeading = o.fFFHistosGenLeading;
1072 fFFHistosGenLeadingTrack = o.fFFHistosGenLeadingTrack;
1073 fIJHistosRecCuts = o.fIJHistosRecCuts;
1074 fIJHistosRecLeading = o.fIJHistosRecLeading;
1075 fIJHistosRecLeadingTrack = o.fIJHistosRecLeadingTrack;
1076 fIJHistosGen = o.fIJHistosGen;
1077 fIJHistosGenLeading = o.fIJHistosGenLeading;
1078 fIJHistosGenLeadingTrack = o.fIJHistosGenLeadingTrack;
1079 fFFDiJetHistosRecCuts = o.fFFDiJetHistosRecCuts;
1080 fFFDiJetHistosRecLeading = o.fFFDiJetHistosRecLeading;
1081 fFFDiJetHistosRecLeadingTrack = o.fFFDiJetHistosRecLeadingTrack;
1082 fFFDiJetHistosGen = o.fFFDiJetHistosGen;
1083 fFFDiJetHistosGenLeading = o.fFFDiJetHistosGenLeading;
1084 fFFDiJetHistosGenLeadingTrack = o.fFFDiJetHistosGenLeadingTrack;
1085 fQADiJetHistosRecCuts = o.fQADiJetHistosRecCuts;
1086 fQADiJetHistosGen = o.fQADiJetHistosGen;
1087 fPhiCorrHistosJetArea = o.fPhiCorrHistosJetArea;
1088 fPhiCorrHistosTransverseArea = o.fPhiCorrHistosTransverseArea;
1089 fPhiCorrHistosAwayArea = o.fPhiCorrHistosAwayArea;
1090 fQATrackHighPtThreshold = o.fQATrackHighPtThreshold;
1091 fFFNBinsJetPt = o.fFFNBinsJetPt;
1092 fFFJetPtMin = o.fFFJetPtMin;
1093 fFFJetPtMax = o.fFFJetPtMax;
1094 fFFNBinsPt = o.fFFNBinsPt;
1095 fFFPtMin = o.fFFPtMin;
1096 fFFPtMax = o.fFFPtMax;
1097 fFFNBinsXi = o.fFFNBinsXi;
1098 fFFXiMin = o.fFFXiMin;
1099 fFFXiMax = o.fFFXiMax;
1100 fFFNBinsZ = o.fFFNBinsZ;
1101 fFFZMin = o.fFFZMin;
1102 fFFZMax = o.fFFZMax;
1103 fFFLogZBins = o.fFFLogZBins;
1104 fQAJetNBinsPt = o.fQAJetNBinsPt;
1105 fQAJetPtMin = o.fQAJetPtMin;
1106 fQAJetPtMax = o.fQAJetPtMax;
1107 fQAJetNBinsEta = o.fQAJetNBinsEta;
1108 fQAJetEtaMin = o.fQAJetEtaMin;
1109 fQAJetEtaMax = o.fQAJetEtaMax;
1110 fQAJetNBinsPhi = o.fQAJetNBinsPhi;
1111 fQAJetPhiMin = o.fQAJetPhiMin;
1112 fQAJetPhiMax = o.fQAJetPhiMax;
1113 fQATrackNBinsPt = o.fQATrackNBinsPt;
1114 fQATrackPtMin = o.fQATrackPtMin;
1115 fQATrackPtMax = o.fQATrackPtMax;
1116 fQATrackNBinsEta = o.fQATrackNBinsEta;
1117 fQATrackEtaMin = o.fQATrackEtaMin;
1118 fQATrackEtaMax = o.fQATrackEtaMax;
1119 fQATrackNBinsPhi = o.fQATrackNBinsPhi;
1120 fQATrackPhiMin = o.fQATrackPhiMin;
1121 fQATrackPhiMax = o.fQATrackPhiMax;
1122 fIJNBinsJetPt = o.fIJNBinsJetPt;
1123 fIJJetPtMin = o.fIJJetPtMin;
1124 fIJJetPtMax = o.fIJJetPtMax;
1125 fIJNBinsPt = o.fIJNBinsPt;
1126 fIJPtMin = o.fIJPtMin;
1127 fIJPtMax = o.fIJPtMax;
1128 fIJNBinsZ = o.fIJNBinsZ;
1129 fIJZMin = o.fIJZMin;
1130 fIJZMax = o.fIJZMax;
1131 fIJNBinsCosTheta = o.fIJNBinsCosTheta;
1132 fIJCosThetaMin = o.fIJCosThetaMin;
1133 fIJCosThetaMax = o.fIJCosThetaMax;
1134 fIJNBinsTheta = o.fIJNBinsTheta;
1135 fIJThetaMin = o.fIJThetaMin;
1136 fIJThetaMax = o.fIJThetaMax;
1137 fIJNBinsJt = o.fIJNBinsJt;
1138 fIJJtMin = o.fIJJtMin;
1139 fIJJtMax = o.fIJJtMax;
1140 fDiJetNBinsJetInvMass = o.fDiJetNBinsJetInvMass;
1141 fDiJetJetInvMassMin = o.fDiJetJetInvMassMin;
1142 fDiJetJetInvMassMax = o.fDiJetJetInvMassMax;
1143 fDiJetNBinsJetPt = o.fDiJetNBinsJetPt;
1144 fDiJetJetPtMin = o.fDiJetJetPtMin;
1145 fDiJetJetPtMax = o.fDiJetJetPtMax;
1146 fDiJetNBinsPt = o.fDiJetNBinsPt;
1147 fDiJetPtMin = o.fDiJetPtMin;
1148 fDiJetPtMax = o.fDiJetPtMax;
1149 fDiJetNBinsXi = o.fDiJetNBinsXi;
1150 fDiJetXiMin = o.fDiJetXiMin;
1151 fDiJetXiMax = o.fDiJetXiMax;
1152 fDiJetNBinsZ = o.fDiJetNBinsZ;
1153 fDiJetZMin = o.fDiJetZMin;
1154 fDiJetZMax = o.fDiJetZMax;
1155 fQADiJetNBinsInvMass = o.fQADiJetNBinsInvMass;
1156 fQADiJetInvMassMin = o.fQADiJetInvMassMin;
1157 fQADiJetInvMassMax = o.fQADiJetInvMassMax;
1158 fQADiJetNBinsJetPt = o.fQADiJetNBinsJetPt;
1159 fQADiJetJetPtMin = o.fQADiJetJetPtMin;
1160 fQADiJetJetPtMax = o.fQADiJetJetPtMax;
1161 fQADiJetNBinsDeltaPhi = o.fQADiJetNBinsDeltaPhi;
1162 fQADiJetDeltaPhiMin = o.fQADiJetDeltaPhiMin;
1163 fQADiJetDeltaPhiMax = o.fQADiJetDeltaPhiMax;
1164 fQADiJetNBinsDeltaEta = o.fQADiJetNBinsDeltaEta;
1165 fQADiJetDeltaEtaMin = o.fQADiJetDeltaEtaMin;
1166 fQADiJetDeltaEtaMax = o.fQADiJetDeltaEtaMax;
1167 fQADiJetNBinsDeltaPt = o.fQADiJetNBinsDeltaPt;
1168 fQADiJetDeltaPtMin = o.fQADiJetDeltaPtMin;
1169 fQADiJetDeltaPtMax = o.fQADiJetDeltaPtMax;
1170 fQADiJetNBinsInBal = o.fQADiJetNBinsInBal;
1171 fQADiJetInBalMin = o.fQADiJetInBalMin;
1172 fQADiJetInBalMax = o.fQADiJetInBalMax;
1173 fPhiCorrNBinsPt = o.fPhiCorrNBinsPt;
1174 fPhiCorrPtMin = o.fPhiCorrPtMin;
1175 fPhiCorrPtMax = o.fPhiCorrPtMax;
1176 fPhiCorrNBinsEta = o.fPhiCorrNBinsEta;
1177 fPhiCorrEtaMin = o.fPhiCorrEtaMin;
1178 fPhiCorrEtaMax = o.fPhiCorrEtaMax;
1179 fPhiCorrNBinsPhi = o.fPhiCorrNBinsPhi;
1180 fPhiCorrPhiMin = o.fPhiCorrPhiMin;
1181 fPhiCorrPhiMax = o.fPhiCorrPhiMax;
1182 fCommonHistList = o.fCommonHistList;
1183 fh1EvtSelection = o.fh1EvtSelection;
1184 fh1VertexNContributors = o.fh1VertexNContributors;
1185 fh1VertexZ = o.fh1VertexZ;
1186 fh1EvtMult = o.fh1EvtMult;
1187 fh1EvtCent = o.fh1EvtCent;
1188 fh2TrackPtVsDCAXY = o.fh2TrackPtVsDCAXY;
1189 fh2TrackPtVsDCAZ = o.fh2TrackPtVsDCAXY;
1190 fh1Xsec = o.fh1Xsec;
1191 fh1Trials = o.fh1Trials;
1192 fh1PtHard = o.fh1PtHard;
1193 fh1PtHardTrials = o.fh1PtHardTrials;
1194 fh1nRecJetsCuts = o.fh1nRecJetsCuts;
1195 fh1nGenJets = o.fh1nGenJets;
1196 fh1nRecEffJets = o.fh1nRecEffJets;
1197 fh1nEmbeddedJets = o.fh1nEmbeddedJets;
1198 fh2PtRecVsGenPrim = o.fh2PtRecVsGenPrim;
1199 fh2PtRecVsGenSec = o.fh2PtRecVsGenSec;
1200 fQATrackHistosRecEffGen = o.fQATrackHistosRecEffGen;
1201 fQATrackHistosRecEffRec = o.fQATrackHistosRecEffRec;
1202 fQATrackHistosSecRec = o.fQATrackHistosSecRec;
1203 fFFHistosRecEffGen = o.fFFHistosRecEffGen;
1204 fFFHistosRecEffRec = o.fFFHistosRecEffRec;
1205 fFFHistosSecRec = o.fFFHistosSecRec;
1206 fhnResponseSinglePt = o.fhnResponseSinglePt;
1207 fh2SingleInvPtRecMnGenVsPtGen = o.fh2SingleInvPtRecMnGenVsPtGen;
1208 fhnResponseJetTrackPt = o.fhnResponseJetTrackPt;
1209 fhnResponseJetZ = o.fhnResponseJetZ;
1210 fhnResponseJetXi = o.fhnResponseJetXi;
1212 fh1OutLeadingMult = o.fh1OutLeadingMult;
1213 fh1OutLeadingStatMult = o.fh1OutLeadingStatMult;
1214 fh1PerpMult = o.fh1PerpMult;
1215 fh1ASideMult = o.fh1ASideMult;
1216 fh1ASideWindowMult = o.fh1ASideWindowMult;
1217 fh1PerpWindowMult = o.fh1PerpWindowMult;
1218 fh1Out2JetsMult = o.fh1Out2JetsMult;
1219 fh1Out3JetsMult = o.fh1Out3JetsMult;
1220 fh1MedianClustersMult = o.fh1MedianClustersMult;
1221 fh1OutClustersMult = o.fh1OutClustersMult;
1222 fh1FractionPtEmbedded = o.fh1FractionPtEmbedded;
1223 fh1IndexEmbedded = o.fh1IndexEmbedded;
1224 fh2DeltaPtVsJetPtEmbedded = o.fh2DeltaPtVsJetPtEmbedded;
1225 fh2DeltaPtVsRecJetPtEmbedded = o.fh2DeltaPtVsRecJetPtEmbedded;
1226 fh1DeltaREmbedded = o.fh1DeltaREmbedded;
1227 fh2ptVsDistNN_pt50_rec = o.fh2ptVsDistNN_pt50_rec;
1228 fh2ptVsDistNN_pt50_nonRec = o.fh2ptVsDistNN_pt50_nonRec;
1229 fh2ptVsDistNN_pt10_rec = o.fh2ptVsDistNN_pt10_rec;
1230 fh2ptVsDistNN_pt10_nonRec = o.fh2ptVsDistNN_pt10_nonRec;
1231 fQABckgHisto0RecCuts = o.fQABckgHisto0RecCuts;
1232 fQABckgHisto0Gen = o.fQABckgHisto0Gen;
1233 fQABckgHisto1RecCuts = o.fQABckgHisto1RecCuts;
1234 fQABckgHisto1Gen = o.fQABckgHisto1Gen;
1235 fQABckgHisto2RecCuts = o.fQABckgHisto2RecCuts;
1236 fQABckgHisto2Gen = o.fQABckgHisto2Gen;
1237 fQABckgHisto3RecCuts = o.fQABckgHisto3RecCuts;
1238 fQABckgHisto3Gen = o.fQABckgHisto3Gen;
1239 fQABckgHisto4RecCuts = o.fQABckgHisto4RecCuts;
1240 fQABckgHisto4Gen = o.fQABckgHisto4Gen;
1241 fFFBckgHisto0RecCuts = o.fFFBckgHisto0RecCuts;
1242 fFFBckgHisto0RecLeading = o.fFFBckgHisto0RecLeading;
1243 fFFBckgHisto0Gen = o.fFFBckgHisto0Gen;
1244 fFFBckgHisto0GenLeading = o.fFFBckgHisto0GenLeading;
1245 fFFBckgHisto1RecCuts = o.fFFBckgHisto1RecCuts;
1246 fFFBckgHisto1RecLeading = o.fFFBckgHisto1RecLeading;
1247 fFFBckgHisto1Gen = o.fFFBckgHisto1Gen;
1248 fFFBckgHisto1GenLeading = o.fFFBckgHisto1GenLeading;
1249 fFFBckgHisto2RecCuts = o.fFFBckgHisto2RecCuts;
1250 fFFBckgHisto2RecLeading = o.fFFBckgHisto2RecLeading;
1251 fFFBckgHisto2Gen = o.fFFBckgHisto2Gen;
1252 fFFBckgHisto2GenLeading = o.fFFBckgHisto2GenLeading;
1253 fFFBckgHisto3RecCuts = o.fFFBckgHisto3RecCuts;
1254 fFFBckgHisto3RecLeading = o.fFFBckgHisto3RecLeading;
1255 fFFBckgHisto3Gen = o.fFFBckgHisto3Gen;
1256 fFFBckgHisto3GenLeading = o.fFFBckgHisto3GenLeading;
1257 fFFBckgHisto4RecCuts = o.fFFBckgHisto4RecCuts;
1258 fFFBckgHisto4RecLeading = o.fFFBckgHisto4RecLeading;
1259 fFFBckgHisto4Gen = o.fFFBckgHisto4Gen;
1260 fFFBckgHisto4GenLeading = o.fFFBckgHisto4GenLeading;
1261 fIJBckgHisto0RecCuts = o.fIJBckgHisto0RecCuts;
1262 fIJBckgHisto0RecLeading = o.fIJBckgHisto0RecLeading;
1263 fIJBckgHisto0Gen = o.fIJBckgHisto0Gen;
1264 fIJBckgHisto0GenLeading = o.fIJBckgHisto0GenLeading;
1265 fIJBckgHisto1RecCuts = o.fIJBckgHisto1RecCuts;
1266 fIJBckgHisto1RecLeading = o.fIJBckgHisto1RecLeading;
1267 fIJBckgHisto1Gen = o.fIJBckgHisto1Gen;
1268 fIJBckgHisto1GenLeading = o.fIJBckgHisto1GenLeading;
1269 fIJBckgHisto2RecCuts = o.fIJBckgHisto2RecCuts;
1270 fIJBckgHisto2RecLeading = o.fIJBckgHisto2RecLeading;
1271 fIJBckgHisto2Gen = o.fIJBckgHisto2Gen;
1272 fIJBckgHisto2GenLeading = o.fIJBckgHisto2GenLeading;
1273 fIJBckgHisto3Gen = o.fIJBckgHisto3Gen;
1274 fIJBckgHisto3GenLeading = o.fIJBckgHisto3GenLeading;
1275 fIJBckgHisto4Gen = o.fIJBckgHisto4Gen;
1276 fIJBckgHisto4GenLeading = o.fIJBckgHisto4GenLeading;
1277 fRandom = o.fRandom;
1278 fBckgSubMethod = o.fBckgSubMethod;
1284 //___________________________________________________________________________
1285 AliAnalysisTaskFragmentationFunction::~AliAnalysisTaskFragmentationFunction()
1289 if(fTracksRec) delete fTracksRec;
1290 if(fTracksRecCuts) delete fTracksRecCuts;
1291 if(fTracksGen) delete fTracksGen;
1292 if(fTracksAODMCCharged) delete fTracksAODMCCharged;
1293 if(fTracksAODMCChargedSec) delete fTracksAODMCChargedSec;
1294 if(fTracksRecQualityCuts) delete fTracksRecQualityCuts;
1295 if(fJetsRec) delete fJetsRec;
1296 if(fJetsRecCuts) delete fJetsRecCuts;
1297 if(fJetsGen) delete fJetsGen;
1298 if(fJetsRecEff) delete fJetsRecEff;
1299 if(fJetsEmbedded) delete fJetsEmbedded;
1302 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
1303 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
1304 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
1306 if(fBckgJetsRec) delete fBckgJetsRec;
1307 if(fBckgJetsRecCuts) delete fBckgJetsRecCuts;
1308 if(fBckgJetsGen) delete fBckgJetsGen;
1310 if(fRandom) delete fRandom;
1313 //______________________________________________________________________________________________________
1314 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const char* name,
1315 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1316 Int_t nPt, Float_t ptMin, Float_t ptMax,
1317 Int_t nXi, Float_t xiMin, Float_t xiMax,
1318 Int_t nZ , Float_t zMin , Float_t zMax, Bool_t useLogZBins)
1320 ,fNBinsJetPt(nJetPt)
1321 ,fJetPtMin(jetPtMin)
1322 ,fJetPtMax(jetPtMax)
1332 ,fLogZBins(useLogZBins)
1339 // default constructor
1343 //___________________________________________________________________________
1344 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const AliFragFuncHistos& copy)
1346 ,fNBinsJetPt(copy.fNBinsJetPt)
1347 ,fJetPtMin(copy.fJetPtMin)
1348 ,fJetPtMax(copy.fJetPtMax)
1349 ,fNBinsPt(copy.fNBinsPt)
1350 ,fPtMin(copy.fPtMin)
1351 ,fPtMax(copy.fPtMax)
1352 ,fNBinsXi(copy.fNBinsXi)
1353 ,fXiMin(copy.fXiMin)
1354 ,fXiMax(copy.fXiMax)
1355 ,fNBinsZ(copy.fNBinsZ)
1358 ,fLogZBins(copy.fLogZBins)
1359 ,fh2TrackPt(copy.fh2TrackPt)
1362 ,fh1JetPt(copy.fh1JetPt)
1363 ,fNameFF(copy.fNameFF)
1368 //_______________________________________________________________________________________________________________________________________________________________
1369 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& o)
1374 TObject::operator=(o);
1375 fNBinsJetPt = o.fNBinsJetPt;
1376 fJetPtMin = o.fJetPtMin;
1377 fJetPtMax = o.fJetPtMax;
1378 fNBinsPt = o.fNBinsPt;
1381 fNBinsXi = o.fNBinsXi;
1384 fNBinsZ = o.fNBinsZ;
1387 fLogZBins = o.fLogZBins;
1388 fh2TrackPt = o.fh2TrackPt;
1391 fh1JetPt = o.fh1JetPt;
1392 fNameFF = o.fNameFF;
1398 //_________________________________________________________
1399 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::~AliFragFuncHistos()
1403 if(fh1JetPt) delete fh1JetPt;
1404 if(fh2TrackPt) delete fh2TrackPt;
1405 if(fh2Xi) delete fh2Xi;
1406 if(fh2Z) delete fh2Z;
1409 //_________________________________________________________________
1410 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::DefineHistos()
1414 fh1JetPt = new TH1F(Form("fh1FFJetPt%s", fNameFF.Data()),"",fNBinsJetPt,fJetPtMin,fJetPtMax);
1415 fh2TrackPt = new TH2F(Form("fh2FFTrackPt%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsPt, fPtMin, fPtMax);
1416 fh2Xi = new TH2F(Form("fh2FFXi%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsXi, fXiMin, fXiMax);
1418 if(!fLogZBins) fh2Z = new TH2F(Form("fh2FFZ%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, fZMin, fZMax);
1419 else{ // logarithmic z binning
1422 Double_t binLimsZ[fNBinsXi+1];
1424 CalcLogZBins(fNBinsXi,fXiMin,fXiMax,binLimsZ);
1426 fh2Z = new TH2F(Form("fh2FFZ%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, binLimsZ);
1429 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
1430 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPt,"jet p_{T} [GeV/c]","p_{T} [GeV/c]","entries");
1431 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi,"jet p_{T} [GeV/c]","#xi", "entries");
1432 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z,"jet p_{T} [GeV/c]","z","entries");
1435 //_______________________________________________________________________________________________________________________________________
1436 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::CalcLogZBins(const Int_t nBinsXi,const Double_t xiMin,const Double_t xiMax,Double_t* binLims){
1438 // calculate logarithmic binning corresponding to equidistant xi bins
1439 // expect binLims vector of size nBinsXi+1
1442 Printf("%s:%d nBinsXi == 0",(char*)__FILE__,__LINE__);
1446 Double_t step = (xiMax-xiMin)/nBinsXi;
1448 for(Int_t binZ = 0; binZ<nBinsXi; binZ++){
1450 Double_t xiUp = xiMax - binZ*step;
1451 Double_t xiLo = xiMax - (binZ+1)*step;
1453 Double_t zUp = TMath::Exp(-1*xiLo);
1454 Double_t zLo = TMath::Exp(-1*xiUp);
1456 if(binZ == 0) binLims[0] = zLo;
1457 binLims[binZ+1] = zUp;
1461 //_______________________________________________________________________________________________________________
1462 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::FillFF(Float_t trackPt, Float_t jetPt, Bool_t incrementJetPt, Float_t norm)
1466 if(incrementJetPt && norm) fh1JetPt->Fill(jetPt,1/norm);
1467 else if(incrementJetPt) fh1JetPt->Fill(jetPt);
1469 // Added for proper normalization of FF background estimation
1470 // when zero track are found in the background region
1471 if((int)trackPt==-1) return;
1473 if(norm)fh2TrackPt->Fill(jetPt,trackPt,1/norm);
1474 else fh2TrackPt->Fill(jetPt,trackPt);
1477 if(jetPt>0) z = trackPt / jetPt;
1479 if(z>0) xi = TMath::Log(1/z);
1482 fh2Xi->Fill(jetPt,xi,1/norm);
1483 fh2Z->Fill(jetPt,z,1/norm);
1486 fh2Xi->Fill(jetPt,xi);
1487 fh2Z->Fill(jetPt,z);
1491 //_________________________________________________________________________________
1492 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AddToOutput(TList* list) const
1494 // add histos to list
1496 list->Add(fh1JetPt);
1498 list->Add(fh2TrackPt);
1503 //_________________________________________________________________________________________________________
1504 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const char* name,
1505 Int_t nPt, Float_t ptMin, Float_t ptMax,
1506 Int_t nEta, Float_t etaMin, Float_t etaMax,
1507 Int_t nPhi, Float_t phiMin, Float_t phiMax)
1522 // default constructor
1525 //____________________________________________________________________________________
1526 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const AliFragFuncQAJetHistos& copy)
1528 ,fNBinsPt(copy.fNBinsPt)
1529 ,fPtMin(copy.fPtMin)
1530 ,fPtMax(copy.fPtMax)
1531 ,fNBinsEta(copy.fNBinsEta)
1532 ,fEtaMin(copy.fEtaMin)
1533 ,fEtaMax(copy.fEtaMax)
1534 ,fNBinsPhi(copy.fNBinsPhi)
1535 ,fPhiMin(copy.fPhiMin)
1536 ,fPhiMax(copy.fPhiMax)
1537 ,fh2EtaPhi(copy.fh2EtaPhi)
1539 ,fNameQAJ(copy.fNameQAJ)
1544 //________________________________________________________________________________________________________________________________________________________________________
1545 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& o)
1550 TObject::operator=(o);
1551 fNBinsPt = o.fNBinsPt;
1554 fNBinsEta = o.fNBinsEta;
1555 fEtaMin = o.fEtaMin;
1556 fEtaMax = o.fEtaMax;
1557 fNBinsPhi = o.fNBinsPhi;
1558 fPhiMin = o.fPhiMin;
1559 fPhiMax = o.fPhiMax;
1560 fh2EtaPhi = o.fh2EtaPhi;
1562 fNameQAJ = o.fNameQAJ;
1568 //______________________________________________________________
1569 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::~AliFragFuncQAJetHistos()
1573 if(fh2EtaPhi) delete fh2EtaPhi;
1574 if(fh1Pt) delete fh1Pt;
1577 //____________________________________________________________________
1578 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::DefineHistos()
1580 // book jet QA histos
1582 fh2EtaPhi = new TH2F(Form("fh2JetQAEtaPhi%s", fNameQAJ.Data()), Form("%s: #eta - #phi distribution", fNameQAJ.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1583 fh1Pt = new TH1F(Form("fh1JetQAPt%s", fNameQAJ.Data()), Form("%s: p_{T} distribution", fNameQAJ.Data()), fNBinsPt, fPtMin, fPtMax);
1585 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
1586 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
1589 //____________________________________________________________________________________________________
1590 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::FillJetQA(Float_t eta, Float_t phi, Float_t pt)
1592 // fill jet QA histos
1594 fh2EtaPhi->Fill( eta, phi);
1598 //____________________________________________________________________________________
1599 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AddToOutput(TList* list) const
1601 // add histos to list
1603 list->Add(fh2EtaPhi);
1607 //___________________________________________________________________________________________________________
1608 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const char* name,
1609 Int_t nPt, Float_t ptMin, Float_t ptMax,
1610 Int_t nEta, Float_t etaMin, Float_t etaMax,
1611 Int_t nPhi, Float_t phiMin, Float_t phiMax,
1623 ,fHighPtThreshold(ptThresh)
1630 // default constructor
1633 //__________________________________________________________________________________________
1634 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const AliFragFuncQATrackHistos& copy)
1636 ,fNBinsPt(copy.fNBinsPt)
1637 ,fPtMin(copy.fPtMin)
1638 ,fPtMax(copy.fPtMax)
1639 ,fNBinsEta(copy.fNBinsEta)
1640 ,fEtaMin(copy.fEtaMin)
1641 ,fEtaMax(copy.fEtaMax)
1642 ,fNBinsPhi(copy.fNBinsPhi)
1643 ,fPhiMin(copy.fPhiMin)
1644 ,fPhiMax(copy.fPhiMax)
1645 ,fHighPtThreshold(copy.fHighPtThreshold)
1646 ,fh2EtaPhi(copy.fh2EtaPhi)
1648 ,fh2HighPtEtaPhi(copy.fh2HighPtEtaPhi)
1649 ,fh2PhiPt(copy.fh2PhiPt)
1650 ,fNameQAT(copy.fNameQAT)
1655 // _____________________________________________________________________________________________________________________________________________________________________________
1656 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& o)
1661 TObject::operator=(o);
1662 fNBinsPt = o.fNBinsPt;
1665 fNBinsEta = o.fNBinsEta;
1666 fEtaMin = o.fEtaMin;
1667 fEtaMax = o.fEtaMax;
1668 fNBinsPhi = o.fNBinsPhi;
1669 fPhiMin = o.fPhiMin;
1670 fPhiMax = o.fPhiMax;
1671 fHighPtThreshold = o.fHighPtThreshold;
1672 fh2EtaPhi = o.fh2EtaPhi;
1674 fh2HighPtEtaPhi = o.fh2HighPtEtaPhi;
1675 fh2PhiPt = o.fh2PhiPt;
1676 fNameQAT = o.fNameQAT;
1682 //___________________________________________________________________
1683 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::~AliFragFuncQATrackHistos()
1687 if(fh2EtaPhi) delete fh2EtaPhi;
1688 if(fh2HighPtEtaPhi) delete fh2HighPtEtaPhi;
1689 if(fh1Pt) delete fh1Pt;
1690 if(fh2PhiPt) delete fh2PhiPt;
1693 //______________________________________________________________________
1694 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::DefineHistos()
1696 // book track QA histos
1698 fh2EtaPhi = new TH2F(Form("fh2TrackQAEtaPhi%s", fNameQAT.Data()), Form("%s: #eta - #phi distribution", fNameQAT.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1699 fh2HighPtEtaPhi = new TH2F(Form("fh2TrackQAHighPtEtaPhi%s", fNameQAT.Data()), Form("%s: #eta - #phi distribution for high-p_{T}", fNameQAT.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1700 fh1Pt = new TH1F(Form("fh1TrackQAPt%s", fNameQAT.Data()), Form("%s: p_{T} distribution", fNameQAT.Data()), fNBinsPt, fPtMin, fPtMax);
1701 fh2PhiPt = new TH2F(Form("fh2TrackQAPhiPt%s", fNameQAT.Data()), Form("%s: #phi - p_{T} distribution", fNameQAT.Data()), fNBinsPhi, fPhiMin, fPhiMax, fNBinsPt, fPtMin, fPtMax);
1703 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
1704 AliAnalysisTaskFragmentationFunction::SetProperties(fh2HighPtEtaPhi, "#eta", "#phi");
1705 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
1706 AliAnalysisTaskFragmentationFunction::SetProperties(fh2PhiPt, "#phi", "p_{T} [GeV/c]");
1709 //________________________________________________________________________________________________________
1710 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::FillTrackQA(Float_t eta, Float_t phi, Float_t pt, Bool_t weightPt, Float_t norm)
1712 // fill track QA histos
1713 Float_t weight = 1.;
1714 if(weightPt) weight = pt;
1715 fh2EtaPhi->Fill( eta, phi, weight);
1716 if(pt > fHighPtThreshold) fh2HighPtEtaPhi->Fill( eta, phi, weight);
1717 if(norm) fh1Pt->Fill( pt, 1/norm );
1718 else fh1Pt->Fill( pt );
1719 fh2PhiPt->Fill(phi, pt);
1722 //______________________________________________________________________________________
1723 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AddToOutput(TList* list) const
1725 // add histos to list
1727 list->Add(fh2EtaPhi);
1728 list->Add(fh2HighPtEtaPhi);
1730 list->Add(fh2PhiPt);
1733 //______________________________________________________________________________________________________
1734 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const char* name,
1735 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1736 Int_t nPt, Float_t ptMin, Float_t ptMax,
1737 Int_t nZ , Float_t zMin , Float_t zMax,
1738 Int_t nCosTheta , Float_t costhetaMin , Float_t costhetaMax,
1739 Int_t nTheta , Float_t thetaMin , Float_t thetaMax,
1740 Int_t nJt , Float_t jtMin , Float_t jtMax)
1742 ,fNBinsJetPt(nJetPt)
1743 ,fJetPtMin(jetPtMin)
1744 ,fJetPtMax(jetPtMax)
1754 ,fNBinsTheta(nTheta)
1755 ,fThetaMin(thetaMin)
1756 ,fThetaMax(thetaMax)
1757 ,fNBinsCosTheta(nCosTheta)
1758 ,fCosThetaMin(costhetaMin)
1759 ,fCosThetaMax(costhetaMax)
1767 // default constructor
1771 //___________________________________________________________________________
1772 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const AliFragFuncIntraJetHistos& copy)
1774 ,fNBinsJetPt(copy.fNBinsJetPt)
1775 ,fJetPtMin(copy.fJetPtMin)
1776 ,fJetPtMax(copy.fJetPtMax)
1777 ,fNBinsPt(copy.fNBinsPt)
1778 ,fPtMin(copy.fPtMin)
1779 ,fPtMax(copy.fPtMax)
1780 ,fNBinsZ(copy.fNBinsZ)
1783 ,fNBinsJt(copy.fNBinsJt)
1784 ,fJtMin(copy.fJtMin)
1785 ,fJtMax(copy.fJtMax)
1786 ,fNBinsTheta(copy.fNBinsTheta)
1787 ,fThetaMin(copy.fThetaMin)
1788 ,fThetaMax(copy.fThetaMax)
1789 ,fNBinsCosTheta(copy.fNBinsCosTheta)
1790 ,fCosThetaMin(copy.fCosThetaMin)
1791 ,fCosThetaMax(copy.fCosThetaMax)
1792 ,fh2CosTheta(copy.fh2CosTheta)
1793 ,fh2PtZ(copy.fh2PtZ)
1794 ,fh3ThetaZ(copy.fh3ThetaZ)
1795 ,fh3JtTheta(copy.fh3JtTheta)
1796 ,fh3JtZ(copy.fh3JtZ)
1797 ,fNameIJ(copy.fNameIJ)
1802 //_______________________________________________________________________________________________________________________________________________________________
1803 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& o)
1808 TObject::operator=(o);
1809 fNBinsJetPt = o.fNBinsJetPt;
1810 fJetPtMin = o.fJetPtMin;
1811 fJetPtMax = o.fJetPtMax;
1812 fNBinsPt = o.fNBinsPt;
1815 fNBinsZ = o.fNBinsZ;
1818 fNBinsJt = o.fNBinsJt;
1821 fNBinsTheta = o.fNBinsTheta;
1822 fThetaMin = o.fThetaMin;
1823 fThetaMax = o.fThetaMax;
1824 fNBinsCosTheta = o.fNBinsCosTheta;
1825 fCosThetaMin = o.fCosThetaMin;
1826 fCosThetaMax = o.fCosThetaMax;
1827 fh2CosTheta = o.fh2CosTheta;
1829 fh3ThetaZ = o.fh3ThetaZ;
1830 fh3JtTheta = o.fh3JtTheta;
1832 fNameIJ = o.fNameIJ;
1838 //_________________________________________________________
1839 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::~AliFragFuncIntraJetHistos()
1844 if(fh2CosTheta) delete fh2CosTheta;
1845 if(fh2PtZ) delete fh2PtZ;
1846 if(fh3ThetaZ) delete fh3ThetaZ;
1847 if(fh3JtTheta) delete fh3JtTheta;
1848 if(fh3JtZ) delete fh3JtZ;
1852 //_________________________________________________________________
1853 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::DefineHistos()
1857 fh2CosTheta = new TH2F(Form("fh2IJcosTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsCosTheta, fCosThetaMin, fCosThetaMax);
1858 fh2PtZ = new TH2F(Form("fh2IJPtZ%s",fNameIJ.Data()),"",fNBinsPt, fPtMin, fPtMax, fNBinsZ, fZMin, fZMax);
1859 fh3ThetaZ = new TH3F(Form("fh3IJThetaZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsTheta, fThetaMin, fThetaMax, fNBinsZ, fZMin, fZMax);
1860 fh3JtTheta = new TH3F(Form("fh3IJJtTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsTheta, fThetaMin, fThetaMax);
1861 fh3JtZ = new TH3F(Form("fh3IJJtZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsZ, fZMin, fZMax);
1863 AliAnalysisTaskFragmentationFunction::SetProperties(fh2CosTheta,"jet p_{T} [GeV/c]","cos(#Theta)", "entries");
1864 AliAnalysisTaskFragmentationFunction::SetProperties(fh2PtZ,"had p_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}","entries");
1865 AliAnalysisTaskFragmentationFunction::SetProperties(fh3ThetaZ,"jet p_{T} [GeV/c]","#Theta [rad]","z=p_{T}^{had}/p_{T}^{jet}");
1866 AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtTheta,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","#Theta [rad]");
1867 AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtZ,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}");
1871 //_______________________________________________________________________________________________________________
1872 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::FillIntraJet(const TLorentzVector* trackV, const TLorentzVector* jetV, Float_t norm)
1874 // fill IntraJet histos
1876 Float_t cosTheta = 0.; Float_t theta = 0.;
1877 Float_t jt = 0.; Float_t z = 0.;
1878 // For Theta distribution
1879 Float_t pxT = trackV->Px();
1880 Float_t pyT = trackV->Py();
1881 Float_t pzT = trackV->Pz();
1882 Float_t ptT = trackV->Pt();
1883 Float_t pT = trackV->P();
1884 Float_t etaT = trackV->Eta();
1885 Float_t phiT = trackV->Phi(); // Check the value returned
1886 Float_t pxJ = jetV->Px();
1887 Float_t pyJ = jetV->Py();
1888 Float_t pzJ = jetV->Pz();
1889 Float_t ptJ = jetV->Pt();
1890 Float_t pJ = jetV->P();
1893 if(ptJ>0) z = (Float_t)(ptT/ptJ);
1896 cosTheta = (pxT*pxJ+pyT*pyJ+pzT*pzJ)/(pT*pJ);
1897 theta = TMath::ACos(cosTheta);
1900 TVector3 trackP; TVector3 jetP;
1904 trackP.SetPtEtaPhi(ptT,etaT,phiT);
1905 jt = TMath::Sin(trackP.Angle(jetP))*trackP.Mag();
1909 fh2CosTheta->Fill(ptJ,cosTheta,1/norm);
1910 fh2PtZ->Fill(ptT,z,1/norm);
1911 fh3ThetaZ->Fill(ptJ,theta,z,1/norm);
1912 fh3JtTheta->Fill(ptJ,jt,theta,1/norm);
1913 fh3JtZ->Fill(ptJ,jt,z,1/norm);
1916 fh2CosTheta->Fill(ptJ,cosTheta);
1917 fh2PtZ->Fill(ptT,z);
1918 fh3ThetaZ->Fill(ptJ,theta,z);
1919 fh3JtTheta->Fill(ptJ,jt,theta);
1920 fh3JtZ->Fill(ptJ,jt,z);
1925 //______________________________________________________________________________________________________
1926 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const char* name, Int_t kindSlices,
1927 Int_t nJetInvMass, Float_t jetInvMassMin, Float_t jetInvMassMax,
1928 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1929 Int_t nPt, Float_t ptMin, Float_t ptMax,
1930 Int_t nXi, Float_t xiMin, Float_t xiMax,
1931 Int_t nZ , Float_t zMin , Float_t zMax)
1933 ,fKindSlices(kindSlices)
1934 ,fNBinsJetInvMass(nJetInvMass)
1935 ,fJetInvMassMin(jetInvMassMin)
1936 ,fJetInvMassMax(jetInvMassMax)
1937 ,fNBinsJetPt(nJetPt)
1938 ,fJetPtMin(jetPtMin)
1939 ,fJetPtMax(jetPtMax)
1966 // default constructor
1970 //______________________________________________________________________________________________________
1971 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const AliFragFuncDiJetHistos& copy)
1973 ,fKindSlices(copy.fKindSlices)
1974 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
1975 ,fJetInvMassMin(copy.fJetInvMassMin)
1976 ,fJetInvMassMax(copy.fJetInvMassMax)
1977 ,fNBinsJetPt(copy.fNBinsJetPt)
1978 ,fJetPtMin(copy.fJetPtMin)
1979 ,fJetPtMax(copy.fJetPtMax)
1980 ,fNBinsPt(copy.fNBinsPt)
1981 ,fPtMin(copy.fPtMin)
1982 ,fPtMax(copy.fPtMax)
1983 ,fNBinsXi(copy.fNBinsXi)
1984 ,fXiMin(copy.fXiMin)
1985 ,fXiMax(copy.fXiMax)
1986 ,fNBinsZ(copy.fNBinsZ)
1989 ,fh2TrackPtJet1(copy.fh2TrackPtJet1)
1990 ,fh2TrackPtJet2(copy.fh2TrackPtJet2)
1991 ,fh2TrackPtJet(copy.fh2TrackPtJet)
1992 ,fh1Jet1Pt(copy.fh1Jet1Pt)
1993 ,fh1Jet2Pt(copy.fh1Jet2Pt)
1994 ,fh1JetPt(copy.fh1JetPt)
1995 ,fh2Xi1(copy.fh2Xi1)
1996 ,fh2Xi2(copy.fh2Xi2)
2001 ,fh2Pt1(copy.fh2Pt1)
2002 ,fh2Pt2(copy.fh2Pt2)
2004 ,fNameDJ(copy.fNameDJ)
2006 // default constructor
2010 //_______________________________________________________________________________________________________________________________________________________________
2011 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& o)
2016 TObject::operator=(o);
2017 fKindSlices = o.fKindSlices;
2018 fNBinsJetInvMass = o.fNBinsJetInvMass;
2019 fJetInvMassMin = o.fJetInvMassMin;
2020 fJetInvMassMax = o.fJetInvMassMax;
2021 fNBinsJetPt = o.fNBinsJetPt;
2022 fJetPtMin = o.fJetPtMin;
2023 fJetPtMax = o.fJetPtMax;
2024 fNBinsPt = o.fNBinsPt;
2027 fNBinsXi = o.fNBinsXi;
2030 fNBinsZ = o.fNBinsZ;
2033 fh2TrackPtJet1 = o.fh2TrackPtJet1;
2034 fh2TrackPtJet2 = o.fh2TrackPtJet2;
2035 fh2TrackPtJet = o.fh2TrackPtJet;
2036 fh1Jet1Pt = o.fh1Jet1Pt;
2037 fh1Jet2Pt = o.fh1Jet2Pt;
2038 fh1JetPt = o.fh1JetPt;
2048 fNameDJ = o.fNameDJ;
2054 //_________________________________________________________
2055 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::~AliFragFuncDiJetHistos()
2059 if(fh2TrackPtJet1) delete fh2TrackPtJet1;
2060 if(fh2TrackPtJet2) delete fh2TrackPtJet2;
2061 if(fh2TrackPtJet ) delete fh2TrackPtJet;
2062 if(fh1Jet1Pt) delete fh1Jet1Pt;
2063 if(fh1Jet2Pt) delete fh1Jet2Pt;
2064 if(fh1JetPt) delete fh1JetPt;
2065 if(fh2Xi1) delete fh2Xi1;
2066 if(fh2Xi2) delete fh2Xi2;
2067 if(fh2Xi) delete fh2Xi;
2068 if(fh2Z1) delete fh2Z1;
2069 if(fh2Z2) delete fh2Z2;
2070 if(fh2Z) delete fh2Z;
2071 if(fh2Pt1) delete fh2Pt1;
2072 if(fh2Pt2) delete fh2Pt2;
2073 if(fh2Pt) delete fh2Pt;
2076 //________________________________________________________________________
2077 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::DefineDiJetHistos()
2079 // book DiJet histos
2084 const char *xaxis = "";
2085 if(fKindSlices == 1)
2087 nBins = fNBinsJetInvMass;
2088 min = fJetInvMassMin;
2089 max = fJetInvMassMax;
2090 xaxis = "M_{JJ} [GeV]";
2092 if(fKindSlices == 2 || fKindSlices == 3)
2094 nBins = fNBinsJetPt;
2097 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
2098 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
2101 fh1Jet1Pt = new TH1F(Form("fh1DJJet1Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
2102 fh1Jet2Pt = new TH1F(Form("fh1DJJet2Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
2103 fh1JetPt = new TH1F(Form("fh1DJJetPt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
2105 fh2TrackPtJet1 = new TH2F(Form("fh2DJTrackPtJet1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2106 fh2TrackPtJet2 = new TH2F(Form("fh2DJTrackPtJet2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2107 fh2TrackPtJet = new TH2F(Form("fh2DJTrackPtJet%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2109 fh2Xi1 = new TH2F(Form("fh2DJXi1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
2110 fh2Xi2 = new TH2F(Form("fh2DJXi2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
2111 fh2Xi = new TH2F(Form("fh2DJXi%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
2113 fh2Z1 = new TH2F(Form("fh2DJZ1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
2114 fh2Z2 = new TH2F(Form("fh2DJZ2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
2115 fh2Z = new TH2F(Form("fh2DJZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
2117 fh2Pt1 = new TH2F(Form("fh2DJPt1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2118 fh2Pt2 = new TH2F(Form("fh2DJPt2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2119 fh2Pt = new TH2F(Form("fh2DJPtZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2121 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet1Pt, "p_{T} [GeV/c]", "entries");
2122 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet2Pt, "p_{T} [GeV/c]", "entries");
2123 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
2125 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet1, xaxis, "p_{T} [GeV/c]", "Entries");
2126 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet2, xaxis, "p_{T} [GeV/c]", "Entries");
2127 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet, xaxis, "p_{T} [GeV/c]", "Entries");
2128 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi1, xaxis, "#xi", "Entries");
2129 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi2, xaxis, "#xi", "Entries");
2130 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi, xaxis, "#xi", "Entries");
2131 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z1, xaxis, "z", "Entries");
2132 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z2, xaxis, "z", "Entries");
2133 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z, xaxis, "z", "Entries");
2134 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt1, xaxis, "p_{T} [GeV/c]", "Entries");
2135 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt2, xaxis, "p_{T} [GeV/c]", "Entries");
2136 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt, xaxis, "p_{T} [GeV/c]", "Entries");
2139 //________________________________________________________________________
2140 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::FillDiJetFF(Int_t jetType, Float_t trackPt, Float_t jetPt, Double_t jetBin, Bool_t incrementJetPt)
2146 if(incrementJetPt) fh1JetPt->Fill(jetPt);
2148 fh2TrackPtJet->Fill(jetBin, trackPt);
2150 Double_t z = trackPt / jetPt;
2152 if(z>0) xi = TMath::Log(1/z);
2154 fh2Xi->Fill(jetBin, xi);
2155 fh2Z->Fill(jetBin, z);
2159 if(incrementJetPt) fh1Jet1Pt->Fill(jetPt);
2161 fh2TrackPtJet1->Fill(jetBin, trackPt);
2163 Double_t z = trackPt / jetPt;
2165 if(z>0) xi = TMath::Log(1/z);
2167 fh2Xi1->Fill(jetBin, xi);
2168 fh2Z1->Fill(jetBin, z);
2172 if(incrementJetPt) fh1Jet2Pt->Fill(jetPt);
2174 fh2TrackPtJet2->Fill(jetBin, trackPt);
2176 Double_t z = trackPt / jetPt;
2178 if(z>0) xi = TMath::Log(1/z);
2180 fh2Xi2->Fill(jetBin, xi);
2181 fh2Z2->Fill(jetBin, z);
2187 //________________________________________________________________________
2188 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AddToOutput(TList* list)const
2190 // add histos to list
2192 list->Add(fh1Jet1Pt);
2193 list->Add(fh1Jet2Pt);
2194 list->Add(fh1JetPt);
2195 list->Add(fh2TrackPtJet1);
2196 list->Add(fh2TrackPtJet2);
2197 list->Add(fh2TrackPtJet);
2206 //______________________________________________________________________________________________________
2207 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const char* name, Int_t kindSlices,
2208 Int_t nInvMass, Float_t invMassMin, Float_t invMassMax,
2209 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
2210 Int_t nDeltaPhi, Float_t deltaPhiMin, Float_t deltaPhiMax,
2211 Int_t nDeltaEta, Float_t deltaEtaMin, Float_t deltaEtaMax,
2212 Int_t nDeltaPt, Float_t deltaPtMin, Float_t deltaPtMax,
2213 Int_t nInBal, Float_t inBalMin, Float_t inBalMax)
2215 ,fKindSlices(kindSlices)
2216 ,fNBinsJetInvMass(nInvMass)
2217 ,fJetInvMassMin(invMassMin)
2218 ,fJetInvMassMax(invMassMax)
2219 ,fNBinsJetPt(nJetPt)
2220 ,fJetPtMin(jetPtMin)
2221 ,fJetPtMax(jetPtMax)
2222 ,fNBinsDeltaPhi(nDeltaPhi)
2223 ,fDeltaPhiMin(deltaPhiMin)
2224 ,fDeltaPhiMax(deltaPhiMax)
2225 ,fNBinsDeltaEta(nDeltaEta)
2226 ,fDeltaEtaMin(deltaEtaMin)
2227 ,fDeltaEtaMax(deltaEtaMax)
2228 ,fNBinsDeltaPt(nDeltaPt)
2229 ,fDeltaPtMin(deltaPtMin)
2230 ,fDeltaPtMax(deltaPtMax)
2231 ,fNBinsInBal(nInBal)
2232 ,fInBalMin(inBalMin)
2233 ,fInBalMax(inBalMax)
2241 // default constructor
2245 //______________________________________________________________________________________________________
2246 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const AliFragFuncQADiJetHistos& copy)
2248 ,fKindSlices(copy.fKindSlices)
2249 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
2250 ,fJetInvMassMin(copy.fJetInvMassMin)
2251 ,fJetInvMassMax(copy.fJetInvMassMax)
2252 ,fNBinsJetPt(copy.fNBinsJetPt)
2253 ,fJetPtMin(copy.fJetPtMin)
2254 ,fJetPtMax(copy.fJetPtMax)
2255 ,fNBinsDeltaPhi(copy.fNBinsDeltaPhi)
2256 ,fDeltaPhiMin(copy.fDeltaPhiMin)
2257 ,fDeltaPhiMax(copy.fDeltaPhiMax)
2258 ,fNBinsDeltaEta(copy.fNBinsDeltaEta)
2259 ,fDeltaEtaMin(copy.fDeltaEtaMin)
2260 ,fDeltaEtaMax(copy.fDeltaEtaMax)
2261 ,fNBinsDeltaPt(copy.fNBinsDeltaPt)
2262 ,fDeltaPtMin(copy.fDeltaPtMin)
2263 ,fDeltaPtMax(copy.fDeltaPtMax)
2264 ,fNBinsInBal(copy.fNBinsInBal)
2265 ,fInBalMin(copy.fInBalMin)
2266 ,fInBalMax(copy.fInBalMax)
2267 ,fh2InvMass(copy.fh2InvMass)
2268 ,fh2DeltaPhi(copy.fh2DeltaPhi)
2269 ,fh2DeltaEta(copy.fh2DeltaEta)
2270 ,fh2DeltaPt(copy.fh2DeltaPt)
2271 ,fh2InBal(copy.fh2InBal)
2272 ,fNameQADJ(copy.fNameQADJ)
2274 // default constructor
2278 //_______________________________________________________________________________________________________________________________________________________________
2279 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& o)
2284 TObject::operator=(o);
2285 fKindSlices = o.fKindSlices;
2286 fNBinsJetInvMass = o.fNBinsJetInvMass;
2287 fJetInvMassMin = o.fJetInvMassMin;
2288 fJetInvMassMax = o.fJetInvMassMax;
2289 fNBinsJetPt = o.fNBinsJetPt;
2290 fJetPtMin = o.fJetPtMin;
2291 fJetPtMax = o.fJetPtMax;
2292 fNBinsDeltaPhi = o.fNBinsDeltaPhi;
2293 fDeltaPhiMin = o.fDeltaPhiMin;
2294 fDeltaPhiMax = o.fDeltaPhiMax;
2295 fNBinsDeltaEta = o.fNBinsDeltaEta;
2296 fDeltaEtaMin = o.fDeltaEtaMin;
2297 fDeltaEtaMax = o.fDeltaEtaMax;
2298 fNBinsDeltaPt = o.fNBinsDeltaPt;
2299 fDeltaPtMin = o.fDeltaPtMin;
2300 fDeltaPtMax = o.fDeltaPtMax;
2301 fNBinsInBal = o.fNBinsInBal;
2302 fInBalMin = o.fInBalMin;
2303 fInBalMax = o.fInBalMax;
2304 fh2InvMass = o.fh2InvMass;
2305 fh2DeltaPhi = o.fh2DeltaPhi;
2306 fh2DeltaEta = o.fh2DeltaEta;
2307 fh2DeltaPt = o.fh2DeltaPt;
2308 fh2InBal = o.fh2InBal;
2309 fNameQADJ = o.fNameQADJ;
2315 //_________________________________________________________
2316 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::~AliFragFuncQADiJetHistos()
2320 if(fh2InvMass) delete fh2InvMass;
2321 if(fh2DeltaPhi) delete fh2DeltaPhi;
2322 if(fh2DeltaEta) delete fh2DeltaEta;
2323 if(fh2DeltaPt) delete fh2DeltaPt;
2324 if(fh2InBal) delete fh2InBal;
2327 //________________________________________________________________________
2328 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::DefineQADiJetHistos()
2335 const char *xaxis = "";
2336 if(fKindSlices == 1)
2338 nBins = fNBinsJetInvMass;
2339 min = fJetInvMassMin;
2340 max = fJetInvMassMax;
2341 xaxis = "M_{JJ} [GeV]";
2343 if(fKindSlices == 2 || fKindSlices == 3)
2345 nBins = fNBinsJetPt;
2348 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
2349 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
2353 fh2InvMass = new TH2F(Form("fh2DJInvMassPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsJetInvMass, fJetInvMassMin, fJetInvMassMax);
2354 fh2DeltaPhi = new TH2F(Form("fh2DJDeltaPhiPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPhi, fDeltaPhiMin, fDeltaPhiMax);
2355 fh2DeltaEta = new TH2F(Form("fh2DJDeltaEtaPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaEta, fDeltaEtaMin, fDeltaEtaMax);
2356 fh2DeltaPt = new TH2F(Form("fh2DJDeltaPtPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPt, fDeltaPtMin, fDeltaPtMax);
2357 fh2InBal = new TH2F(Form("fh2DJInBalPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsInBal, fInBalMin, fInBalMax);
2359 AliAnalysisTaskFragmentationFunction::SetProperties(fh2InvMass, xaxis, "Invariant Mass", "Entries");
2360 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPhi, xaxis, "#Delta #phi", "Entries");
2361 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaEta, xaxis, "#Delta #eta", "Entries");
2362 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPt, xaxis, "#Delta p_{T}", "Entries");
2363 AliAnalysisTaskFragmentationFunction::SetProperties(fh2InBal, xaxis, "(p_{T}^{1}-p_{T}^{2})/(p_{T}^{1}+p_{T}^{2})", "Entries");
2367 //________________________________________________________________________
2368 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::FillDiJetQA(Double_t invMass, Double_t deltaPhi, Double_t deltaEta,Double_t deltaPt, Double_t inbal, Double_t jetBin)
2372 fh2InvMass->Fill(jetBin, invMass);
2373 fh2DeltaPhi->Fill(jetBin, deltaPhi);
2374 fh2DeltaEta->Fill(jetBin, deltaEta);
2375 fh2DeltaPt->Fill(jetBin, deltaPt);
2376 fh2InBal->Fill(jetBin, inbal);
2379 //________________________________________________________________________
2380 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AddToOutput(TList* list)const
2382 // add histos to list
2384 list->Add(fh2InvMass);
2385 list->Add(fh2DeltaPhi);
2386 list->Add(fh2DeltaEta);
2387 list->Add(fh2DeltaPt);
2388 list->Add(fh2InBal);
2391 //_________________________________________________________________________________
2392 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AddToOutput(TList* list) const
2394 // add histos to list
2396 list->Add(fh2CosTheta);
2398 list->Add(fh3ThetaZ);
2399 list->Add(fh3JtTheta);
2404 //_________________________________________________________________________________
2405 Bool_t AliAnalysisTaskFragmentationFunction::Notify()
2408 // Implemented Notify() to read the cross sections
2409 // and number of trials from pyxsec.root
2410 // (taken from AliAnalysisTaskJetSpectrum2)
2412 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
2413 Float_t xsection = 0;
2414 Float_t ftrials = 1;
2418 TFile *curfile = tree->GetCurrentFile();
2420 Error("Notify","No current file");
2423 if(!fh1Xsec||!fh1Trials){
2424 Printf("%s%d No Histogram fh1Xsec",(char*)__FILE__,__LINE__);
2427 AliAnalysisHelperJetTasks::PythiaInfoFromFile(curfile->GetName(),xsection,ftrials);
2428 fh1Xsec->Fill("<#sigma>",xsection);
2429 // construct a poor man average trials
2430 Float_t nEntries = (Float_t)tree->GetTree()->GetEntries();
2431 if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries;
2434 // Set seed for backg study
2435 fRandom = new TRandom3();
2436 fRandom->SetSeed(0);
2441 //__________________________________________________________________
2442 void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()
2444 // create output objects
2446 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()");
2448 // create list of tracks and jets
2450 fTracksRec = new TList();
2451 fTracksRec->SetOwner(kFALSE);
2453 fTracksRecCuts = new TList();
2454 fTracksRecCuts->SetOwner(kFALSE);
2456 fTracksGen = new TList();
2457 fTracksGen->SetOwner(kFALSE);
2459 fTracksAODMCCharged = new TList();
2460 fTracksAODMCCharged->SetOwner(kFALSE);
2462 fTracksAODMCChargedSec = new TList();
2463 fTracksAODMCChargedSec->SetOwner(kFALSE);
2465 fTracksRecQualityCuts = new TList();
2466 fTracksRecQualityCuts->SetOwner(kFALSE);
2468 fJetsRec = new TList();
2469 fJetsRec->SetOwner(kFALSE);
2470 if(fBranchRecJets.Contains("KT") && fBckgSubMethod) fJetsRec->SetOwner(kTRUE);
2472 fJetsRecCuts = new TList();
2473 fJetsRecCuts->SetOwner(kFALSE);
2474 if(fBranchRecJets.Contains("KT") && fBckgSubMethod) fJetsRecCuts->SetOwner(kTRUE);
2476 fJetsGen = new TList();
2477 fJetsGen->SetOwner(kFALSE);
2479 fJetsRecEff = new TList();
2480 fJetsRecEff->SetOwner(kFALSE);
2482 fJetsEmbedded = new TList();
2483 fJetsEmbedded->SetOwner(kFALSE);
2487 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
2488 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
2489 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
2491 fBckgJetsRec = new TList();
2492 fBckgJetsRec->SetOwner(kFALSE);
2494 fBckgJetsRecCuts = new TList();
2495 fBckgJetsRecCuts->SetOwner(kFALSE);
2497 fBckgJetsGen = new TList();
2498 fBckgJetsGen->SetOwner(kFALSE);
2502 // Create histograms / output container
2506 fCommonHistList = new TList();
2507 fCommonHistList->SetOwner(kTRUE);
2509 Bool_t oldStatus = TH1::AddDirectoryStatus();
2510 TH1::AddDirectory(kFALSE);
2514 fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 6, -0.5, 5.5);
2515 fh1EvtSelection->GetXaxis()->SetBinLabel(1,"ACCEPTED");
2516 fh1EvtSelection->GetXaxis()->SetBinLabel(2,"event selection: rejected");
2517 fh1EvtSelection->GetXaxis()->SetBinLabel(3,"event class: rejected");
2518 fh1EvtSelection->GetXaxis()->SetBinLabel(4,"vertex Ncontr: rejected");
2519 fh1EvtSelection->GetXaxis()->SetBinLabel(5,"vertex z: rejected");
2520 fh1EvtSelection->GetXaxis()->SetBinLabel(6,"vertex type: rejected");
2522 fh1VertexNContributors = new TH1F("fh1VertexNContributors", "Vertex N contributors", 2500,-.5, 2499.5);
2523 fh1VertexZ = new TH1F("fh1VertexZ", "Vertex z distribution", 30, -15., 15.);
2524 fh1EvtMult = new TH1F("fh1EvtMult","Event multiplicity, track pT cut > 150 MeV/c, |#eta| < 0.9",120,0.,12000.);
2525 fh1EvtCent = new TH1F("fh1EvtCent","centrality",100,0.,100.);
2526 fh2TrackPtVsDCAXY = new TH2F("fh2TrackPtVsDCAXY","",400,-0.02,0.02,100,0.,10.);
2527 fh2TrackPtVsDCAZ = new TH2F("fh2TrackPtVsDCAZ","",100,-0.050,0.050,100,0.,10.);
2529 fh1Xsec = new TProfile("fh1Xsec","xsec from pyxsec.root",1,0,1);
2530 fh1Xsec->GetXaxis()->SetBinLabel(1,"<#sigma>");
2531 fh1Trials = new TH1F("fh1Trials","trials from pyxsec.root",1,0,1);
2532 fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}");
2533 fh1PtHard = new TH1F("fh1PtHard","PYTHIA Pt hard;p_{T,hard}",350,-.5,349.5);
2534 fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",350,-.5,349.5);
2536 fh1nRecJetsCuts = new TH1F("fh1nRecJetsCuts","reconstructed jets per event",10,-0.5,9.5);
2537 fh1nGenJets = new TH1F("fh1nGenJets","generated jets per event",10,-0.5,9.5);
2538 fh1nRecEffJets = new TH1F("fh1nRecEffJets","reconstruction effiency: jets per event",10,-0.5,9.5);
2539 fh1nEmbeddedJets = new TH1F("fh1nEmbeddedJets","embedded jets per event",10,-0.5,9.5);
2541 fh2PtRecVsGenPrim = new TH2F("fh2PtRecVsGenPrim","rec vs gen pt",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax);
2542 fh2PtRecVsGenSec = new TH2F("fh2PtRecVsGenSec","rec vs gen pt",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax);
2547 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
2548 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
2549 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading){
2551 fh1nRecBckgJetsCuts = new TH1F("fh1nRecBckgJetsCuts","reconstructed background jets per event",10,-0.5,9.5);
2552 fh1nGenBckgJets = new TH1F("fh1nGenBckgJets","generated background jets per event",10,-0.5,9.5);
2555 if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp || fBckgType[3]==kBckgPerp || fBckgType[4]==kBckgPerp )
2556 fh1PerpMult = new TH1F("fh1PerpMult","Background multiplicity - Cone perpendicular to leading jet axis",500,0.,500.);
2557 if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide || fBckgType[3]==kBckgASide || fBckgType[4]==kBckgASide)
2558 fh1ASideMult = new TH1F("fh1ASideMult","Background multiplicity - Cone in the away side of leading jet axis",500,0.,500.);
2559 if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow || fBckgType[3]==kBckgASideWindow || fBckgType[4]==kBckgASideWindow)
2560 fh1ASideWindowMult = new TH1F("fh1ASideWindowMult","Background multiplicity - Cone in the away side of leading jet axis",500,0.,500.);
2561 if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow || fBckgType[3]==kBckgPerpWindow || fBckgType[4]==kBckgPerpWindow)
2562 fh1PerpWindowMult = new TH1F("fh1PerpWindowMult","Background multiplicity - Cone in the perp direction of leading jet axis",500,0.,500.);
2563 if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ || fBckgType[3]==kBckgOutLJ || fBckgType[4]==kBckgOutLJ)
2564 fh1OutLeadingMult = new TH1F("fh1OutLeadingMult","Background multiplicity - Cone outside leading jet",500,0,500.);
2565 if(fBckgType[0]==kBckgOutLJStat || fBckgType[1]==kBckgOutLJStat || fBckgType[2]==kBckgOutLJStat || fBckgType[3]==kBckgOutLJStat || fBckgType[4]==kBckgOutLJStat)
2566 fh1OutLeadingStatMult = new TH1F("fh1OutLeadingStatMult","Background multiplicity - Cone outside leading jet",3000,0,3000.);
2567 if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J || fBckgType[3]==kBckgOut2J || fBckgType[4]==kBckgOut2J)
2568 fh1Out2JetsMult = new TH1F("fh1Out2JetsMult","Background multiplicity - Cone outside 2 jets",500,0.,500.);
2569 if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J || fBckgType[3]==kBckgOut3J || fBckgType[4]==kBckgOut3J)
2570 fh1Out3JetsMult = new TH1F("fh1Out3JetsMult","Background multiplicity - Cone outside 3 jets",500,0.,500.);
2571 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters)
2572 fh1MedianClustersMult = new TH1F("fh1MedianClustersMult","Background multiplicity - median cluster",500,0.,500.);
2573 if(fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading || fBckgType[3]==kBckgClustersOutLeading
2574 || fBckgType[4]==kBckgClustersOutLeading)
2575 fh1OutClustersMult = new TH1F("fh1OutClustersMult","Background multiplicity - clusters outside leading jet",3000,0.,3000.);
2579 if(fBranchEmbeddedJets.Length()){
2580 fh1FractionPtEmbedded = new TH1F("fh1FractionPtEmbedded","",200,0,2);
2581 fh1IndexEmbedded = new TH1F("fh1IndexEmbedded","",11,-1,10);
2582 fh2DeltaPtVsJetPtEmbedded = new TH2F("fh2DeltaPtVsJetPtEmbedded","",250,0,250,200,-100,100);
2583 fh2DeltaPtVsRecJetPtEmbedded = new TH2F("fh2DeltaPtVsRecJetPtEmbedded","",250,0,250,200,-100,100);
2584 fh1DeltaREmbedded = new TH1F("fh1DeltaREmbedded","",50,0,0.5);
2585 fh1nEmbeddedJets = new TH1F("fh1nEmbeddedJets","embedded jets per event",10,-0.5,9.5);
2589 fh2ptVsDistNN_pt50_rec = new TH2F("fh2ptVsDistNN_pt50_rec","",200,0,0.2,500,0.,100);
2590 fh2ptVsDistNN_pt50_nonRec = new TH2F("fh2ptVsDistNN_pt50_nonRec","",200,0,0.2,500,0.,100);
2591 fh2ptVsDistNN_pt10_rec = new TH2F("fh2ptVsDistNN_pt10_rec","",200,0,0.2,500,0.,100);
2592 fh2ptVsDistNN_pt10_nonRec = new TH2F("fh2ptVsDistNN_pt10_nonRec","",200,0,0.2,500,0.,100);
2596 if(fQAMode&1){ // track QA
2597 fQATrackHistosRec = new AliFragFuncQATrackHistos("Rec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2598 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2599 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2600 fQATrackHighPtThreshold);
2601 fQATrackHistosRecCuts = new AliFragFuncQATrackHistos("RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2602 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2603 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2604 fQATrackHighPtThreshold);
2605 fQATrackHistosGen = new AliFragFuncQATrackHistos("Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2606 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2607 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2608 fQATrackHighPtThreshold);
2611 if(fQAMode&2){ // jet QA
2612 fQAJetHistosRec = new AliFragFuncQAJetHistos("Rec", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2613 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2614 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2615 fQAJetHistosRecCuts = new AliFragFuncQAJetHistos("RecCuts", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2616 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2617 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2618 fQAJetHistosRecCutsLeading = new AliFragFuncQAJetHistos("RecCutsLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2619 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2620 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2621 fQAJetHistosGen = new AliFragFuncQAJetHistos("Gen", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2622 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2623 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2624 fQAJetHistosGenLeading = new AliFragFuncQAJetHistos("GenLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2625 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2626 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2627 if(fEffMode) fQAJetHistosRecEffLeading = new AliFragFuncQAJetHistos("RecEffLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2628 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2634 fFFHistosRecCuts = new AliFragFuncHistos("RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2635 fFFNBinsPt, fFFPtMin, fFFPtMax,
2636 fFFNBinsXi, fFFXiMin, fFFXiMax,
2637 fFFNBinsZ , fFFZMin , fFFZMax , fFFLogZBins);
2638 fFFHistosRecLeading = new AliFragFuncHistos("RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2639 fFFNBinsPt, fFFPtMin, fFFPtMax,
2640 fFFNBinsXi, fFFXiMin, fFFXiMax,
2641 fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins);
2642 fFFHistosRecLeadingTrack = new AliFragFuncHistos("RecLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2643 fFFNBinsPt, fFFPtMin, fFFPtMax,
2644 fFFNBinsXi, fFFXiMin, fFFXiMax,
2645 fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins);
2646 fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2647 fFFNBinsPt, fFFPtMin, fFFPtMax,
2648 fFFNBinsXi, fFFXiMin, fFFXiMax,
2649 fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins);
2650 fFFHistosGenLeading = new AliFragFuncHistos("GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2651 fFFNBinsPt, fFFPtMin, fFFPtMax,
2652 fFFNBinsXi, fFFXiMin, fFFXiMax,
2653 fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins);
2654 fFFHistosGenLeadingTrack = new AliFragFuncHistos("GenLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2655 fFFNBinsPt, fFFPtMin, fFFPtMax,
2656 fFFNBinsXi, fFFXiMin, fFFXiMax,
2657 fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins);
2662 fIJHistosRecCuts = new AliFragFuncIntraJetHistos("RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2663 fIJNBinsPt, fIJPtMin, fIJPtMax,
2664 fIJNBinsZ, fIJZMin, fIJZMax,
2665 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2666 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2667 fIJNBinsJt , fIJJtMin , fIJJtMax);
2668 fIJHistosRecLeading = new AliFragFuncIntraJetHistos("RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2669 fIJNBinsPt, fIJPtMin, fIJPtMax,
2670 fIJNBinsZ, fIJZMin, fIJZMax,
2671 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2672 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2673 fIJNBinsJt , fIJJtMin , fIJJtMax);
2674 fIJHistosRecLeadingTrack = new AliFragFuncIntraJetHistos("RecLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2675 fIJNBinsPt, fIJPtMin, fIJPtMax,
2676 fIJNBinsZ, fIJZMin, fIJZMax,
2677 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2678 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2679 fIJNBinsJt , fIJJtMin , fIJJtMax);
2680 fIJHistosGen = new AliFragFuncIntraJetHistos("Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2681 fIJNBinsPt, fIJPtMin, fIJPtMax,
2682 fIJNBinsZ, fIJZMin, fIJZMax,
2683 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2684 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2685 fIJNBinsJt , fIJJtMin , fIJJtMax);
2686 fIJHistosGenLeading = new AliFragFuncIntraJetHistos("GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2687 fIJNBinsPt, fIJPtMin, fIJPtMax,
2688 fIJNBinsZ, fIJZMin, fIJZMax,
2689 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2690 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2691 fIJNBinsJt , fIJJtMin , fIJJtMax);
2692 fIJHistosGenLeadingTrack = new AliFragFuncIntraJetHistos("GenLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2693 fIJNBinsPt, fIJPtMin, fIJPtMax,
2694 fIJNBinsZ, fIJZMin, fIJZMax,
2695 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2696 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2697 fIJNBinsJt , fIJJtMin , fIJJtMax);
2702 fFFDiJetHistosRecCuts = new AliFragFuncDiJetHistos("RecCuts", fDiJetKindBins,
2703 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2704 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2705 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2706 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2707 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2708 fFFDiJetHistosRecLeading = new AliFragFuncDiJetHistos("RecLeading", fDiJetKindBins,
2709 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2710 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2711 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2712 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2713 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2714 fFFDiJetHistosRecLeadingTrack = new AliFragFuncDiJetHistos("RecLeadingTrack", fDiJetKindBins,
2715 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2716 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2717 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2718 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2719 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2721 fFFDiJetHistosGen = new AliFragFuncDiJetHistos("Gen", fDiJetKindBins,
2722 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2723 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2724 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2725 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2726 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2727 fFFDiJetHistosGenLeading = new AliFragFuncDiJetHistos("GenLeading", fDiJetKindBins,
2728 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2729 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2730 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2731 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2732 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2733 fFFDiJetHistosGenLeadingTrack = new AliFragFuncDiJetHistos("GenLeadingTrack", fDiJetKindBins,
2734 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2735 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2736 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2737 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2738 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2742 fQADiJetHistosRecCuts = new AliFragFuncQADiJetHistos("RecCuts", fDiJetKindBins,
2743 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2744 fQADiJetNBinsJetPt, fQADiJetJetPtMin, fQADiJetJetPtMax,
2745 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax ,
2746 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax ,
2747 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax,
2748 fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax);
2749 fQADiJetHistosGen = new AliFragFuncQADiJetHistos("Gen", fDiJetKindBins,
2750 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2751 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2752 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax,
2753 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax,
2754 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax,
2755 fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax);
2763 fQATrackHistosRecEffGen = new AliFragFuncQATrackHistos("RecEffGen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2764 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2765 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2766 fQATrackHighPtThreshold);
2768 fQATrackHistosRecEffRec = new AliFragFuncQATrackHistos("RecEffRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2769 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2770 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2771 fQATrackHighPtThreshold);
2773 fQATrackHistosSecRec = new AliFragFuncQATrackHistos("SecRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2774 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2775 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2776 fQATrackHighPtThreshold);
2779 Int_t nBinsResponseSinglePt[2] = {fFFNBinsPt, fFFNBinsPt};
2780 Double_t binMinResponseSinglePt[2] = {fFFPtMin, fFFPtMin};
2781 Double_t binMaxResponseSinglePt[2] = {fFFPtMax, fFFPtMax};
2782 const char* labelsResponseSinglePt[2] = {"rec p_{T} [GeV/c]", "gen p_{T} [GeV/c]"};
2784 fhnResponseSinglePt = new THnSparseF("fhnResponseSinglePt","track pt gen : track pt rec",2,
2785 nBinsResponseSinglePt,binMinResponseSinglePt,binMaxResponseSinglePt);
2787 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseSinglePt,2,labelsResponseSinglePt);
2790 fh2SingleInvPtRecMnGenVsPtGen = new TH2F("fh2SingleInvPtRecMnGenVsPtGen","",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,200,-1,1);
2793 fFFHistosRecEffGen = new AliFragFuncHistos("RecEffGen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2794 fFFNBinsPt, fFFPtMin, fFFPtMax,
2795 fFFNBinsXi, fFFXiMin, fFFXiMax,
2796 fFFNBinsZ , fFFZMin , fFFZMax);
2798 fFFHistosRecEffRec = new AliFragFuncHistos("RecEffRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2799 fFFNBinsPt, fFFPtMin, fFFPtMax,
2800 fFFNBinsXi, fFFXiMin, fFFXiMax,
2801 fFFNBinsZ , fFFZMin , fFFZMax);
2803 fFFHistosSecRec = new AliFragFuncHistos("SecRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2804 fFFNBinsPt, fFFPtMin, fFFPtMax,
2805 fFFNBinsXi, fFFXiMin, fFFXiMax,
2806 fFFNBinsZ , fFFZMin , fFFZMax);
2809 Int_t nBinsResponseJetTrackPt[3] = {fFFNBinsJetPt,fFFNBinsPt,fFFNBinsPt};
2810 Double_t binMinResponseJetTrackPt[3] = {fFFJetPtMin,fFFPtMin, fFFPtMin};
2811 Double_t binMaxResponseJetTrackPt[3] = {fFFJetPtMax,fFFPtMax,fFFPtMax};
2812 const char* labelsResponseJetTrackPt[3] = { "jet p_{T} [GeV/c]","rec p_{T} [GeV/c]", "gen p_{T} [GeV/c]"};
2814 fhnResponseJetTrackPt = new THnSparseF("fhnResponseJetTrackPt","jet pt:track pt rec:track pt gen",3,
2815 nBinsResponseJetTrackPt,binMinResponseJetTrackPt,binMaxResponseJetTrackPt);
2817 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetTrackPt,3,labelsResponseJetTrackPt);
2821 Int_t nBinsResponseJetZ[3] = {fFFNBinsJetPt, fFFNBinsZ,fFFNBinsZ};
2822 Double_t binMinResponseJetZ[3] = {fFFJetPtMin, fFFZMin, fFFZMin};
2823 Double_t binMaxResponseJetZ[3] = {fFFJetPtMax, fFFZMax, fFFZMax};
2825 fhnResponseJetZ = new THnSparseF("fhnResponseJetZ","jet pt:rec z rec:gen z",3,
2826 nBinsResponseJetZ,binMinResponseJetZ,binMaxResponseJetZ);
2830 Double_t binLims[fFFNBinsXi+1];
2831 fFFHistosRecEffGen->CalcLogZBins(fFFNBinsXi,fFFXiMin,fFFXiMax,binLims);
2833 Int_t binsZ = fFFNBinsXi;
2834 Double_t zMin = binLims[0];
2835 Double_t zMax = binLims[fFFNBinsXi];
2837 Int_t nBinsResponseJetZ[3] = {fFFNBinsJetPt, binsZ, binsZ};
2838 Double_t binMinResponseJetZ[3] = {fFFJetPtMin, zMin, zMin};
2839 Double_t binMaxResponseJetZ[3] = {fFFJetPtMax, zMax, zMax};
2840 // const char* labelsResponseJetZ[3] = { "jet p_{T} [GeV/c]","rec z","gen z"};
2842 fhnResponseJetZ = new THnSparseF("fhnResponseJetZ","jet pt:rec z rec:gen z",3,
2843 nBinsResponseJetZ,binMinResponseJetZ,binMaxResponseJetZ);
2845 fhnResponseJetZ->SetBinEdges(1,binLims);
2846 fhnResponseJetZ->SetBinEdges(2,binLims);
2849 const char* labelsResponseJetZ[3] = { "jet p_{T} [GeV/c]","rec z","gen z"};
2850 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetZ,3,labelsResponseJetZ);
2852 Int_t nBinsResponseJetXi[3] = {fFFNBinsJetPt, fFFNBinsXi,fFFNBinsXi};
2853 Double_t binMinResponseJetXi[3] = {fFFJetPtMin, fFFXiMin, fFFXiMin};
2854 Double_t binMaxResponseJetXi[3] = {fFFJetPtMax, fFFXiMax, fFFXiMax};
2855 const char* labelsResponseJetXi[3] = { "jet p_{T} [GeV/c]","rec xi","gen xi"};
2857 fhnResponseJetXi = new THnSparseF("fhnResponseJetXi","jet pt:track xi rec:track xi gen",3,
2858 nBinsResponseJetXi,binMinResponseJetXi,binMaxResponseJetXi);
2860 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetXi,3,labelsResponseJetXi);
2863 } // end: efficiency
2869 for(Int_t i=0; i<5; i++){
2870 if(fBckgType[i]==kBckgPerp) title[i]="Perp";
2871 else if(fBckgType[i]==kBckgPerpWindow) title[i]="PerpW";
2872 else if(fBckgType[i]==kBckgASide) title[i]="ASide";
2873 else if(fBckgType[i]==kBckgASideWindow) title[i]="ASideW";
2874 else if(fBckgType[i]==kBckgOutLJ) title[i]="OutLeadingJet";
2875 else if(fBckgType[i]==kBckgOut2J) title[i]="Out2Jets";
2876 else if(fBckgType[i]==kBckgOut3J) title[i]="Out3Jets";
2877 else if(fBckgType[i]==kBckgOutAJ) title[i]="AllJets";
2878 else if(fBckgType[i]==kBckgOutLJStat) title[i]="OutLeadingJetStat";
2879 else if(fBckgType[i]==kBckgOut2JStat) title[i]="Out2JetsStat";
2880 else if(fBckgType[i]==kBckgOut3JStat) title[i]="Out3JetsStat";
2881 else if(fBckgType[i]==kBckgOutAJStat) title[i]="AllJetsStat";
2882 else if(fBckgType[i]==kBckgClustersOutLeading) title[i]="OutClusters";
2883 else if(fBckgType[i]==kBckgClusters) title[i]="MedianClusters";
2884 else printf("Please chose background method number %d!",i);
2888 fQABckgHisto0RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[0]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2889 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2890 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2891 fQATrackHighPtThreshold);
2892 fQABckgHisto0Gen = new AliFragFuncQATrackHistos("Bckg"+title[0]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2893 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2894 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2895 fQATrackHighPtThreshold);
2896 fQABckgHisto1RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[1]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2897 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2898 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2899 fQATrackHighPtThreshold);
2900 fQABckgHisto1Gen = new AliFragFuncQATrackHistos("Bckg"+title[1]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2901 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2902 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2903 fQATrackHighPtThreshold);
2904 fQABckgHisto2RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[2]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2905 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2906 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2907 fQATrackHighPtThreshold);
2908 fQABckgHisto2Gen = new AliFragFuncQATrackHistos("Bckg"+title[2]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2909 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2910 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2911 fQATrackHighPtThreshold);
2912 fQABckgHisto3RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[3]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2913 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2914 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2915 fQATrackHighPtThreshold);
2916 fQABckgHisto3Gen = new AliFragFuncQATrackHistos("Bckg"+title[3]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2917 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2918 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2919 fQATrackHighPtThreshold);
2920 fQABckgHisto4RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[4]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2921 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2922 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2923 fQATrackHighPtThreshold);
2924 fQABckgHisto4Gen = new AliFragFuncQATrackHistos("Bckg"+title[4]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2925 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2926 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2927 fQATrackHighPtThreshold);
2930 } // end: background QA
2933 // outside leading jet or 2 jets or more
2934 fFFBckgHisto0RecCuts = new AliFragFuncHistos("Bckg"+title[0]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2935 fFFNBinsPt, fFFPtMin, fFFPtMax,
2936 fFFNBinsXi, fFFXiMin, fFFXiMax,
2937 fFFNBinsZ , fFFZMin , fFFZMax);
2938 fFFBckgHisto0RecLeading = new AliFragFuncHistos("Bckg"+title[0]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2939 fFFNBinsPt, fFFPtMin, fFFPtMax,
2940 fFFNBinsXi, fFFXiMin, fFFXiMax,
2941 fFFNBinsZ , fFFZMin , fFFZMax);
2942 fFFBckgHisto0Gen = new AliFragFuncHistos("Bckg"+title[0]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2943 fFFNBinsPt, fFFPtMin, fFFPtMax,
2944 fFFNBinsXi, fFFXiMin, fFFXiMax,
2945 fFFNBinsZ , fFFZMin , fFFZMax);
2946 fFFBckgHisto0GenLeading = new AliFragFuncHistos("Bckg"+title[0]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2947 fFFNBinsPt, fFFPtMin, fFFPtMax,
2948 fFFNBinsXi, fFFXiMin, fFFXiMax,
2949 fFFNBinsZ , fFFZMin , fFFZMax);
2951 fFFBckgHisto1RecCuts = new AliFragFuncHistos("Bckg"+title[1]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2952 fFFNBinsPt, fFFPtMin, fFFPtMax,
2953 fFFNBinsXi, fFFXiMin, fFFXiMax,
2954 fFFNBinsZ , fFFZMin , fFFZMax);
2955 fFFBckgHisto1RecLeading = new AliFragFuncHistos("Bckg"+title[1]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2956 fFFNBinsPt, fFFPtMin, fFFPtMax,
2957 fFFNBinsXi, fFFXiMin, fFFXiMax,
2958 fFFNBinsZ , fFFZMin , fFFZMax);
2959 fFFBckgHisto1Gen = new AliFragFuncHistos("Bckg"+title[1]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2960 fFFNBinsPt, fFFPtMin, fFFPtMax,
2961 fFFNBinsXi, fFFXiMin, fFFXiMax,
2962 fFFNBinsZ , fFFZMin , fFFZMax);
2963 fFFBckgHisto1GenLeading = new AliFragFuncHistos("Bckg"+title[1]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2964 fFFNBinsPt, fFFPtMin, fFFPtMax,
2965 fFFNBinsXi, fFFXiMin, fFFXiMax,
2966 fFFNBinsZ , fFFZMin , fFFZMax);
2968 fFFBckgHisto2RecCuts = new AliFragFuncHistos("Bckg"+title[2]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2969 fFFNBinsPt, fFFPtMin, fFFPtMax,
2970 fFFNBinsXi, fFFXiMin, fFFXiMax,
2971 fFFNBinsZ , fFFZMin , fFFZMax);
2972 fFFBckgHisto2RecLeading = new AliFragFuncHistos("Bckg"+title[2]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2973 fFFNBinsPt, fFFPtMin, fFFPtMax,
2974 fFFNBinsXi, fFFXiMin, fFFXiMax,
2975 fFFNBinsZ , fFFZMin , fFFZMax);
2976 fFFBckgHisto2Gen = new AliFragFuncHistos("Bckg"+title[2]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2977 fFFNBinsPt, fFFPtMin, fFFPtMax,
2978 fFFNBinsXi, fFFXiMin, fFFXiMax,
2979 fFFNBinsZ , fFFZMin , fFFZMax);
2980 fFFBckgHisto2GenLeading = new AliFragFuncHistos("Bckg"+title[2]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2981 fFFNBinsPt, fFFPtMin, fFFPtMax,
2982 fFFNBinsXi, fFFXiMin, fFFXiMax,
2983 fFFNBinsZ , fFFZMin , fFFZMax);
2984 fFFBckgHisto3RecCuts = new AliFragFuncHistos("Bckg"+title[3]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2985 fFFNBinsPt, fFFPtMin, fFFPtMax,
2986 fFFNBinsXi, fFFXiMin, fFFXiMax,
2987 fFFNBinsZ , fFFZMin , fFFZMax);
2988 fFFBckgHisto3RecLeading = new AliFragFuncHistos("Bckg"+title[3]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2989 fFFNBinsPt, fFFPtMin, fFFPtMax,
2990 fFFNBinsXi, fFFXiMin, fFFXiMax,
2991 fFFNBinsZ , fFFZMin , fFFZMax);
2992 fFFBckgHisto3Gen = new AliFragFuncHistos("Bckg"+title[3]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2993 fFFNBinsPt, fFFPtMin, fFFPtMax,
2994 fFFNBinsXi, fFFXiMin, fFFXiMax,
2995 fFFNBinsZ , fFFZMin , fFFZMax);
2996 fFFBckgHisto3GenLeading = new AliFragFuncHistos("Bckg"+title[3]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2997 fFFNBinsPt, fFFPtMin, fFFPtMax,
2998 fFFNBinsXi, fFFXiMin, fFFXiMax,
2999 fFFNBinsZ , fFFZMin , fFFZMax);
3000 fFFBckgHisto4RecCuts = new AliFragFuncHistos("Bckg"+title[4]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
3001 fFFNBinsPt, fFFPtMin, fFFPtMax,
3002 fFFNBinsXi, fFFXiMin, fFFXiMax,
3003 fFFNBinsZ , fFFZMin , fFFZMax);
3004 fFFBckgHisto4RecLeading = new AliFragFuncHistos("Bckg"+title[4]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
3005 fFFNBinsPt, fFFPtMin, fFFPtMax,
3006 fFFNBinsXi, fFFXiMin, fFFXiMax,
3007 fFFNBinsZ , fFFZMin , fFFZMax);
3008 fFFBckgHisto4Gen = new AliFragFuncHistos("Bckg"+title[4]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
3009 fFFNBinsPt, fFFPtMin, fFFPtMax,
3010 fFFNBinsXi, fFFXiMin, fFFXiMax,
3011 fFFNBinsZ , fFFZMin , fFFZMax);
3012 fFFBckgHisto4GenLeading = new AliFragFuncHistos("Bckg"+title[4]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
3013 fFFNBinsPt, fFFPtMin, fFFPtMax,
3014 fFFNBinsXi, fFFXiMin, fFFXiMax,
3015 fFFNBinsZ , fFFZMin , fFFZMax);
3017 } // end: background FF
3020 fIJBckgHisto0RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3021 fIJNBinsPt, fIJPtMin, fIJPtMax,
3022 fIJNBinsZ, fIJZMin, fIJZMax,
3023 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3024 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3025 fIJNBinsJt , fIJJtMin , fIJJtMax);
3026 fIJBckgHisto0RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3027 fIJNBinsPt, fIJPtMin, fIJPtMax,
3028 fIJNBinsZ, fIJZMin, fIJZMax,
3029 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3030 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3031 fIJNBinsJt , fIJJtMin , fIJJtMax);
3032 fIJBckgHisto0Gen = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3033 fIJNBinsPt, fIJPtMin, fIJPtMax,
3034 fIJNBinsZ, fIJZMin, fIJZMax,
3035 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3036 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3037 fIJNBinsJt , fIJJtMin , fIJJtMax);
3038 fIJBckgHisto0GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3039 fIJNBinsPt, fIJPtMin, fIJPtMax,
3040 fIJNBinsZ, fIJZMin, fIJZMax,
3041 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3042 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3043 fIJNBinsJt , fIJJtMin , fIJJtMax);
3046 fIJBckgHisto1RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3047 fIJNBinsPt, fIJPtMin, fIJPtMax,
3048 fIJNBinsZ, fIJZMin, fIJZMax,
3049 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3050 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3051 fIJNBinsJt , fIJJtMin , fIJJtMax);
3052 fIJBckgHisto1RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3053 fIJNBinsPt, fIJPtMin, fIJPtMax,
3054 fIJNBinsZ, fIJZMin, fIJZMax,
3055 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3056 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3057 fIJNBinsJt , fIJJtMin , fIJJtMax);
3058 fIJBckgHisto1Gen = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3059 fIJNBinsPt, fIJPtMin, fIJPtMax,
3060 fIJNBinsZ, fIJZMin, fIJZMax,
3061 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3062 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3063 fIJNBinsJt , fIJJtMin , fIJJtMax);
3064 fIJBckgHisto1GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3065 fIJNBinsPt, fIJPtMin, fIJPtMax,
3066 fIJNBinsZ, fIJZMin, fIJZMax,
3067 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3068 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3069 fIJNBinsJt , fIJJtMin , fIJJtMax);
3071 fIJBckgHisto2RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3072 fIJNBinsPt, fIJPtMin, fIJPtMax,
3073 fIJNBinsZ, fIJZMin, fIJZMax,
3074 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3075 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3076 fIJNBinsJt , fIJJtMin , fIJJtMax);
3077 fIJBckgHisto2RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3078 fIJNBinsPt, fIJPtMin, fIJPtMax,
3079 fIJNBinsZ, fIJZMin, fIJZMax,
3080 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3081 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3082 fIJNBinsJt , fIJJtMin , fIJJtMax);
3083 fIJBckgHisto2Gen = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3084 fIJNBinsPt, fIJPtMin, fIJPtMax,
3085 fIJNBinsZ, fIJZMin, fIJZMax,
3086 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3087 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3088 fIJNBinsJt , fIJJtMin , fIJJtMax);
3089 fIJBckgHisto2GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3090 fIJNBinsPt, fIJPtMin, fIJPtMax,
3091 fIJNBinsZ, fIJZMin, fIJZMax,
3092 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3093 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3094 fIJNBinsJt , fIJJtMin , fIJJtMax);
3095 } // end: background intra-jet
3096 } // end: background
3099 fPhiCorrHistosJetArea = new AliFragFuncQATrackHistos("JetArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3100 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3101 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3102 fQATrackHighPtThreshold);
3104 fPhiCorrHistosTransverseArea = new AliFragFuncQATrackHistos("TransverseArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3105 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3106 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3107 fQATrackHighPtThreshold);
3109 fPhiCorrHistosAwayArea = new AliFragFuncQATrackHistos("AwayArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3110 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3111 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3112 fQATrackHighPtThreshold);
3113 } // end: phi correlation
3116 // ____________ define histograms ____________________
3119 if(fQAMode&1){ // track QA
3120 fQATrackHistosRec->DefineHistos();
3121 fQATrackHistosRecCuts->DefineHistos();
3122 fQATrackHistosGen->DefineHistos();
3125 if(fQAMode&2){ // jet QA
3126 fQAJetHistosRec->DefineHistos();
3127 fQAJetHistosRecCuts->DefineHistos();
3128 fQAJetHistosRecCutsLeading->DefineHistos();
3129 fQAJetHistosGen->DefineHistos();
3130 fQAJetHistosGenLeading->DefineHistos();
3131 if(fEffMode) fQAJetHistosRecEffLeading->DefineHistos();
3136 fFFHistosRecCuts->DefineHistos();
3137 fFFHistosRecLeading->DefineHistos();
3138 fFFHistosRecLeadingTrack->DefineHistos();
3139 fFFHistosGen->DefineHistos();
3140 fFFHistosGenLeading->DefineHistos();
3141 fFFHistosGenLeadingTrack->DefineHistos();
3145 fIJHistosRecCuts->DefineHistos();
3146 fIJHistosRecLeading->DefineHistos();
3147 fIJHistosRecLeadingTrack->DefineHistos();
3148 fIJHistosGen->DefineHistos();
3149 fIJHistosGenLeading->DefineHistos();
3150 fIJHistosGenLeadingTrack->DefineHistos();
3155 fFFDiJetHistosRecCuts->DefineDiJetHistos();
3156 fFFDiJetHistosRecLeading->DefineDiJetHistos();
3157 fFFDiJetHistosRecLeadingTrack->DefineDiJetHistos();
3158 fFFDiJetHistosGen->DefineDiJetHistos();
3159 fFFDiJetHistosGenLeading->DefineDiJetHistos();
3160 fFFDiJetHistosGenLeadingTrack->DefineDiJetHistos();
3164 fQADiJetHistosRecCuts->DefineQADiJetHistos();
3165 fQADiJetHistosGen->DefineQADiJetHistos();
3171 fQATrackHistosRecEffGen->DefineHistos();
3172 fQATrackHistosRecEffRec->DefineHistos();
3173 fQATrackHistosSecRec->DefineHistos();
3176 fFFHistosRecEffGen->DefineHistos();
3177 fFFHistosRecEffRec->DefineHistos();
3178 fFFHistosSecRec->DefineHistos();
3180 } // end: efficiency
3185 fFFBckgHisto0RecCuts->DefineHistos();
3186 fFFBckgHisto0RecLeading->DefineHistos();
3187 fFFBckgHisto0Gen->DefineHistos();
3188 fFFBckgHisto0GenLeading->DefineHistos();
3189 fFFBckgHisto1RecCuts->DefineHistos();
3190 fFFBckgHisto1RecLeading->DefineHistos();
3191 fFFBckgHisto1Gen->DefineHistos();
3192 fFFBckgHisto1GenLeading->DefineHistos();
3193 fFFBckgHisto2RecCuts->DefineHistos();
3194 fFFBckgHisto2RecLeading->DefineHistos();
3195 fFFBckgHisto2Gen->DefineHistos();
3196 fFFBckgHisto2GenLeading->DefineHistos();
3197 fFFBckgHisto3RecCuts->DefineHistos();
3198 fFFBckgHisto3RecLeading->DefineHistos();
3199 fFFBckgHisto3Gen->DefineHistos();
3200 fFFBckgHisto3GenLeading->DefineHistos();
3201 fFFBckgHisto4RecCuts->DefineHistos();
3202 fFFBckgHisto4RecLeading->DefineHistos();
3203 fFFBckgHisto4Gen->DefineHistos();
3204 fFFBckgHisto4GenLeading->DefineHistos();
3208 fIJBckgHisto0RecCuts->DefineHistos();
3209 fIJBckgHisto0RecLeading->DefineHistos();
3210 fIJBckgHisto0Gen->DefineHistos();
3211 fIJBckgHisto0GenLeading->DefineHistos();
3212 fIJBckgHisto1RecCuts->DefineHistos();
3213 fIJBckgHisto1RecLeading->DefineHistos();
3214 fIJBckgHisto1Gen->DefineHistos();
3215 fIJBckgHisto1GenLeading->DefineHistos();
3216 fIJBckgHisto2RecCuts->DefineHistos();
3217 fIJBckgHisto2RecLeading->DefineHistos();
3218 fIJBckgHisto2Gen->DefineHistos();
3219 fIJBckgHisto2GenLeading->DefineHistos();
3223 fQABckgHisto0RecCuts->DefineHistos();
3224 fQABckgHisto0Gen->DefineHistos();
3225 fQABckgHisto1RecCuts->DefineHistos();
3226 fQABckgHisto1Gen->DefineHistos();
3227 fQABckgHisto2RecCuts->DefineHistos();
3228 fQABckgHisto2Gen->DefineHistos();
3229 fQABckgHisto3RecCuts->DefineHistos();
3230 fQABckgHisto3Gen->DefineHistos();
3231 fQABckgHisto4RecCuts->DefineHistos();
3232 fQABckgHisto4Gen->DefineHistos();
3234 } // end: background
3237 fPhiCorrHistosJetArea->DefineHistos();
3238 fPhiCorrHistosTransverseArea->DefineHistos();
3239 fPhiCorrHistosAwayArea->DefineHistos();
3242 Bool_t genJets = (fJetTypeGen != kJetsUndef) ? kTRUE : kFALSE;
3243 Bool_t genTracks = (fTrackTypeGen != kTrackUndef) ? kTRUE : kFALSE;
3244 Bool_t recJetsEff = (fJetTypeRecEff != kJetsUndef) ? kTRUE : kFALSE;
3246 fCommonHistList->Add(fh1EvtSelection);
3247 fCommonHistList->Add(fh1EvtMult);
3248 fCommonHistList->Add(fh1EvtCent);
3249 fCommonHistList->Add(fh2TrackPtVsDCAXY);
3250 fCommonHistList->Add(fh2TrackPtVsDCAZ);
3251 fCommonHistList->Add(fh1VertexNContributors);
3252 fCommonHistList->Add(fh1VertexZ);
3253 fCommonHistList->Add(fh1nRecJetsCuts);
3254 fCommonHistList->Add(fh1Xsec);
3255 fCommonHistList->Add(fh1Trials);
3256 fCommonHistList->Add(fh1PtHard);
3257 fCommonHistList->Add(fh1PtHardTrials);
3258 if(genJets) fCommonHistList->Add(fh1nGenJets);
3262 fFFHistosRecCuts->AddToOutput(fCommonHistList);
3263 fFFHistosRecLeading->AddToOutput(fCommonHistList);
3264 fFFHistosRecLeadingTrack->AddToOutput(fCommonHistList);
3265 if(genJets && genTracks){
3266 fFFHistosGen->AddToOutput(fCommonHistList);
3267 fFFHistosGenLeading->AddToOutput(fCommonHistList);
3268 fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList);
3275 fFFBckgHisto0RecCuts->AddToOutput(fCommonHistList);
3276 fFFBckgHisto0RecLeading->AddToOutput(fCommonHistList);
3277 fFFBckgHisto1RecCuts->AddToOutput(fCommonHistList);
3278 fFFBckgHisto1RecLeading->AddToOutput(fCommonHistList);
3279 fFFBckgHisto2RecCuts->AddToOutput(fCommonHistList);
3280 fFFBckgHisto2RecLeading->AddToOutput(fCommonHistList);
3281 fFFBckgHisto3RecCuts->AddToOutput(fCommonHistList);
3282 fFFBckgHisto3RecLeading->AddToOutput(fCommonHistList);
3283 fFFBckgHisto4RecCuts->AddToOutput(fCommonHistList);
3284 fFFBckgHisto4RecLeading->AddToOutput(fCommonHistList);
3286 if(genJets && genTracks){
3287 fFFBckgHisto0Gen->AddToOutput(fCommonHistList);
3288 fFFBckgHisto0GenLeading->AddToOutput(fCommonHistList);
3289 fFFBckgHisto1Gen->AddToOutput(fCommonHistList);
3290 fFFBckgHisto1GenLeading->AddToOutput(fCommonHistList);
3291 fFFBckgHisto2Gen->AddToOutput(fCommonHistList);
3292 fFFBckgHisto2GenLeading->AddToOutput(fCommonHistList);
3293 fFFBckgHisto3Gen->AddToOutput(fCommonHistList);
3294 fFFBckgHisto3GenLeading->AddToOutput(fCommonHistList);
3295 fFFBckgHisto4Gen->AddToOutput(fCommonHistList);
3296 fFFBckgHisto4GenLeading->AddToOutput(fCommonHistList);
3301 fQABckgHisto0RecCuts->AddToOutput(fCommonHistList);
3302 fQABckgHisto1RecCuts->AddToOutput(fCommonHistList);
3303 fQABckgHisto2RecCuts->AddToOutput(fCommonHistList);
3304 fQABckgHisto3RecCuts->AddToOutput(fCommonHistList);
3305 fQABckgHisto4RecCuts->AddToOutput(fCommonHistList);
3306 if(genJets && genTracks){
3307 fQABckgHisto0Gen->AddToOutput(fCommonHistList);
3308 fQABckgHisto1Gen->AddToOutput(fCommonHistList);
3309 fQABckgHisto2Gen->AddToOutput(fCommonHistList);
3310 fQABckgHisto3Gen->AddToOutput(fCommonHistList);
3311 fQABckgHisto4Gen->AddToOutput(fCommonHistList);
3315 if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ || fBckgType[3]==kBckgOutLJ || fBckgType[4]==kBckgOutLJ)
3316 fCommonHistList->Add(fh1OutLeadingMult);
3317 if(fBckgType[0]==kBckgOutLJStat || fBckgType[1]==kBckgOutLJStat || fBckgType[2]==kBckgOutLJStat || fBckgType[3]==kBckgOutLJStat || fBckgType[4]==kBckgOutLJStat)
3318 fCommonHistList->Add(fh1OutLeadingStatMult);
3319 if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp || fBckgType[3]==kBckgPerp || fBckgType[4]==kBckgPerp)
3320 fCommonHistList->Add(fh1PerpMult);
3321 if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide || fBckgType[3]==kBckgASide || fBckgType[4]==kBckgASide)
3322 fCommonHistList->Add(fh1ASideMult);
3323 if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow || fBckgType[3]==kBckgASideWindow || fBckgType[4]==kBckgASideWindow)
3324 fCommonHistList->Add(fh1ASideWindowMult);
3325 if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow || fBckgType[3]==kBckgPerpWindow || fBckgType[4]==kBckgPerpWindow)
3326 fCommonHistList->Add(fh1PerpWindowMult);
3327 if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J || fBckgType[3]==kBckgOut2J || fBckgType[4]==kBckgOut2J)
3328 fCommonHistList->Add(fh1Out2JetsMult);
3329 if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J || fBckgType[3]==kBckgOut3J || fBckgType[4]==kBckgOut3J)
3330 fCommonHistList->Add(fh1Out3JetsMult);
3331 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters)
3332 fCommonHistList->Add(fh1MedianClustersMult);
3333 if(fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading
3334 || fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)
3335 fCommonHistList->Add(fh1OutClustersMult);
3339 if(fBranchEmbeddedJets.Length()){
3340 fCommonHistList->Add(fh1FractionPtEmbedded);
3341 fCommonHistList->Add(fh1IndexEmbedded);
3342 fCommonHistList->Add(fh2DeltaPtVsJetPtEmbedded);
3343 fCommonHistList->Add(fh2DeltaPtVsRecJetPtEmbedded);
3344 fCommonHistList->Add(fh1DeltaREmbedded);
3345 fCommonHistList->Add(fh1nEmbeddedJets);
3349 fCommonHistList->Add(fh2ptVsDistNN_pt50_rec);
3350 fCommonHistList->Add(fh2ptVsDistNN_pt50_nonRec);
3351 fCommonHistList->Add(fh2ptVsDistNN_pt10_rec);
3352 fCommonHistList->Add(fh2ptVsDistNN_pt10_nonRec);
3357 if(fQAMode&1){ // track QA
3358 fQATrackHistosRec->AddToOutput(fCommonHistList);
3359 fQATrackHistosRecCuts->AddToOutput(fCommonHistList);
3360 if(genTracks) fQATrackHistosGen->AddToOutput(fCommonHistList);
3363 if(fQAMode&2){ // jet QA
3364 fQAJetHistosRec->AddToOutput(fCommonHistList);
3365 fQAJetHistosRecCuts->AddToOutput(fCommonHistList);
3366 fQAJetHistosRecCutsLeading->AddToOutput(fCommonHistList);
3367 if(recJetsEff && fEffMode) fQAJetHistosRecEffLeading->AddToOutput(fCommonHistList);
3369 fQAJetHistosGen->AddToOutput(fCommonHistList);
3370 fQAJetHistosGenLeading->AddToOutput(fCommonHistList);
3376 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
3377 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
3378 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)) {
3379 fCommonHistList->Add(fh1nRecBckgJetsCuts);
3380 if(genJets) fCommonHistList->Add(fh1nGenBckgJets);
3385 fPhiCorrHistosJetArea->AddToOutput(fCommonHistList);
3386 fPhiCorrHistosTransverseArea->AddToOutput(fCommonHistList);
3387 fPhiCorrHistosAwayArea->AddToOutput(fCommonHistList);
3392 fIJHistosRecCuts->AddToOutput(fCommonHistList);
3393 fIJHistosRecLeading->AddToOutput(fCommonHistList);
3394 fIJHistosRecLeadingTrack->AddToOutput(fCommonHistList);
3398 fIJBckgHisto0RecCuts->AddToOutput(fCommonHistList);
3399 fIJBckgHisto0RecLeading->AddToOutput(fCommonHistList);
3400 fIJBckgHisto1RecCuts->AddToOutput(fCommonHistList);
3401 fIJBckgHisto1RecLeading->AddToOutput(fCommonHistList);
3402 fIJBckgHisto2RecCuts->AddToOutput(fCommonHistList);
3403 fIJBckgHisto2RecLeading->AddToOutput(fCommonHistList);
3406 if(genJets && genTracks){
3407 fIJHistosGen->AddToOutput(fCommonHistList);
3408 fIJHistosGenLeading->AddToOutput(fCommonHistList);
3409 fIJHistosGenLeadingTrack->AddToOutput(fCommonHistList);
3413 fIJBckgHisto0Gen->AddToOutput(fCommonHistList);
3414 fIJBckgHisto0GenLeading->AddToOutput(fCommonHistList);
3415 fIJBckgHisto1Gen->AddToOutput(fCommonHistList);
3416 fIJBckgHisto1GenLeading->AddToOutput(fCommonHistList);
3417 fIJBckgHisto2Gen->AddToOutput(fCommonHistList);
3418 fIJBckgHisto2GenLeading->AddToOutput(fCommonHistList);
3425 fFFDiJetHistosRecCuts->AddToOutput(fCommonHistList);
3426 fFFDiJetHistosRecLeading->AddToOutput(fCommonHistList);
3427 fFFDiJetHistosRecLeadingTrack->AddToOutput(fCommonHistList);
3428 if(genJets && genTracks){
3429 fFFDiJetHistosGen->AddToOutput(fCommonHistList);
3430 fFFDiJetHistosGenLeading->AddToOutput(fCommonHistList);
3431 fFFDiJetHistosGenLeadingTrack->AddToOutput(fCommonHistList);
3435 fQADiJetHistosRecCuts->AddToOutput(fCommonHistList);
3436 if(genJets && genTracks){
3437 fQADiJetHistosGen->AddToOutput(fCommonHistList);
3442 if(fEffMode && recJetsEff && genTracks){
3444 fQATrackHistosRecEffGen->AddToOutput(fCommonHistList);
3445 fQATrackHistosRecEffRec->AddToOutput(fCommonHistList);
3446 fQATrackHistosSecRec->AddToOutput(fCommonHistList);
3447 fCommonHistList->Add(fhnResponseSinglePt);
3448 fCommonHistList->Add(fh2SingleInvPtRecMnGenVsPtGen);
3451 fFFHistosRecEffGen->AddToOutput(fCommonHistList);
3452 fFFHistosRecEffRec->AddToOutput(fCommonHistList);
3453 fFFHistosSecRec->AddToOutput(fCommonHistList);
3454 fCommonHistList->Add(fhnResponseJetTrackPt);
3455 fCommonHistList->Add(fhnResponseJetZ);
3456 fCommonHistList->Add(fhnResponseJetXi);
3458 fCommonHistList->Add(fh1nRecEffJets);
3459 fCommonHistList->Add(fh2PtRecVsGenPrim);
3460 fCommonHistList->Add(fh2PtRecVsGenSec);
3464 // =========== Switch on Sumw2 for all histos ===========
3465 for (Int_t i=0; i<fCommonHistList->GetEntries(); ++i){
3466 TH1 *h1 = dynamic_cast<TH1*>(fCommonHistList->At(i));
3467 if (h1) h1->Sumw2();
3469 THnSparse *hnSparse = dynamic_cast<THnSparse*>(fCommonHistList->At(i));
3470 if(hnSparse) hnSparse->Sumw2();
3474 TH1::AddDirectory(oldStatus);
3476 PostData(1, fCommonHistList);
3480 //_______________________________________________
3481 void AliAnalysisTaskFragmentationFunction::Init()
3484 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::Init()");
3488 //_____________________________________________________________
3489 void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *)
3492 // Called for each event
3493 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserExec()");
3496 if(fDebug > 1) Printf("Analysis event #%5d", (Int_t) fEntry);
3498 // Trigger selection
3499 AliInputEventHandler* inputHandler = (AliInputEventHandler*)
3500 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
3502 if(!(inputHandler->IsEventSelected() & fEvtSelectionMask)){
3503 fh1EvtSelection->Fill(1.);
3504 if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... ");
3505 PostData(1, fCommonHistList);
3509 fESD = dynamic_cast<AliESDEvent*>(InputEvent());
3511 if(fDebug>3) Printf("%s:%d ESDEvent not found in the input", (char*)__FILE__,__LINE__);
3514 fMCEvent = MCEvent();
3516 if(fDebug>3) Printf("%s:%d MCEvent not found in the input", (char*)__FILE__,__LINE__);
3519 // get AOD event from input/ouput
3520 TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
3521 if( handler && handler->InheritsFrom("AliAODInputHandler") ) {
3522 fAOD = ((AliAODInputHandler*)handler)->GetEvent();
3523 if(fUseAODInputJets) fAODJets = fAOD;
3524 if (fDebug > 1) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__);
3527 handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
3528 if( handler && handler->InheritsFrom("AliAODHandler") ) {
3529 fAOD = ((AliAODHandler*)handler)->GetAOD();
3531 if (fDebug > 1) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__);
3535 if(!fAODJets && !fUseAODInputJets){ // case we have AOD in input & output and want jets from output
3536 TObject* outHandler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
3537 if( outHandler && outHandler->InheritsFrom("AliAODHandler") ) {
3538 fAODJets = ((AliAODHandler*)outHandler)->GetAOD();
3539 if (fDebug > 1) Printf("%s:%d jets from output AOD", (char*)__FILE__,__LINE__);
3543 if(fNonStdFile.Length()!=0){
3544 // case we have an AOD extension - fetch the jets from the extended output
3546 AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
3547 fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
3549 if(fDebug>1)Printf("AODExtension not found for %s",fNonStdFile.Data());
3554 Printf("%s:%d AODEvent not found", (char*)__FILE__,__LINE__);
3558 Printf("%s:%d AODEvent with jet branch not found", (char*)__FILE__,__LINE__);
3563 // event selection **************************************************
3564 // *** event class ***
3565 Double_t centPercent = -1;
3568 if(handler->InheritsFrom("AliAODInputHandler")){
3569 // since it is not supported by the helper task define own classes
3570 centPercent = fAOD->GetHeader()->GetCentrality();
3572 if(centPercent>10) cl = 2;
3573 if(centPercent>30) cl = 3;
3574 if(centPercent>50) cl = 4;
3577 cl = AliAnalysisHelperJetTasks::EventClass();
3578 if(fESD) centPercent = fESD->GetCentrality()->GetCentralityPercentile("V0M"); // retrieve value 'by hand'
3581 if(cl!=fEventClass){
3582 // event not in selected event class, reject event
3583 if (fDebug > 1) Printf("%s:%d event not in selected event class: event REJECTED ...",(char*)__FILE__,__LINE__);
3584 fh1EvtSelection->Fill(2.);
3585 PostData(1, fCommonHistList);
3590 // *** vertex cut ***
3591 AliAODVertex* primVtx = fAOD->GetPrimaryVertex();
3592 Int_t nTracksPrim = primVtx->GetNContributors();
3593 fh1VertexNContributors->Fill(nTracksPrim);
3596 if (fDebug > 1) Printf("%s:%d primary vertex selection: %d", (char*)__FILE__,__LINE__,nTracksPrim);
3598 if (fDebug > 1) Printf("%s:%d primary vertex selection: event REJECTED...",(char*)__FILE__,__LINE__);
3599 fh1EvtSelection->Fill(3.);
3600 PostData(1, fCommonHistList);
3604 fh1VertexZ->Fill(primVtx->GetZ());
3606 if(TMath::Abs(primVtx->GetZ())>fMaxVertexZ){
3607 if (fDebug > 1) Printf("%s:%d primary vertex z = %f: event REJECTED...",(char*)__FILE__,__LINE__,primVtx->GetZ());
3608 fh1EvtSelection->Fill(4.);
3609 PostData(1, fCommonHistList);
3613 TString primVtxName(primVtx->GetName());
3615 if(primVtxName.CompareTo("TPCVertex",TString::kIgnoreCase) == 1){
3616 if (fDebug > 1) Printf("%s:%d primary vertex selection: TPC vertex, event REJECTED...",(char*)__FILE__,__LINE__);
3617 fh1EvtSelection->Fill(5.);
3618 PostData(1, fCommonHistList);
3622 if (fDebug > 1) Printf("%s:%d event ACCEPTED ...",(char*)__FILE__,__LINE__);
3623 fh1EvtSelection->Fill(0.);
3624 fh1EvtCent->Fill(centPercent);
3627 //___ get MC information __________________________________________________________________
3629 fh1Trials->Fill("#sum{ntrials}",fAvgTrials);
3631 Double_t ptHard = 0.;
3632 Double_t nTrials = 1; // trials for MC trigger weight for real data
3635 AliGenEventHeader* genHeader = fMCEvent->GenEventHeader();
3639 AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
3640 AliGenHijingEventHeader* hijingGenHeader = 0x0;
3642 if(pythiaGenHeader){
3643 if(fDebug>3) Printf("%s:%d pythiaGenHeader found", (char*)__FILE__,__LINE__);
3644 nTrials = pythiaGenHeader->Trials();
3645 ptHard = pythiaGenHeader->GetPtHard();
3647 fh1PtHard->Fill(ptHard);
3648 fh1PtHardTrials->Fill(ptHard,nTrials);
3651 } else { // no pythia, hijing?
3653 if(fDebug>3) Printf("%s:%d no pythiaGenHeader found", (char*)__FILE__,__LINE__);
3655 hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader);
3656 if(!hijingGenHeader){
3657 Printf("%s:%d no pythiaGenHeader or hjingGenHeader found", (char*)__FILE__,__LINE__);
3659 if(fDebug>3) Printf("%s:%d hijingGenHeader found", (char*)__FILE__,__LINE__);
3663 //fh1Trials->Fill("#sum{ntrials}",fAvgTrials);
3668 //___ fetch jets __________________________________________________________________________
3670 Int_t nJ = GetListOfJets(fJetsRec, kJetsRec);
3672 if(nJ>=0) nRecJets = fJetsRec->GetEntries();
3673 if(fDebug>2)Printf("%s:%d Selected Rec jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
3674 if(nJ != nRecJets) Printf("%s:%d Mismatch Selected Rec Jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
3676 Int_t nJCuts = GetListOfJets(fJetsRecCuts, kJetsRecAcceptance);
3677 Int_t nRecJetsCuts = 0;
3678 if(nJCuts>=0) nRecJetsCuts = fJetsRecCuts->GetEntries();
3679 if(fDebug>2)Printf("%s:%d Selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3680 if(nRecJetsCuts != nJCuts) Printf("%s:%d Mismatch selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3681 fh1nRecJetsCuts->Fill(nRecJetsCuts);
3683 if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
3685 Int_t nJGen = GetListOfJets(fJetsGen, fJetTypeGen);
3687 if(nJGen>=0) nGenJets = fJetsGen->GetEntries();
3688 if(fDebug>2)Printf("%s:%d Selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
3690 if(nJGen != nGenJets) Printf("%s:%d Mismatch selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
3691 fh1nGenJets->Fill(nGenJets);
3694 if(fJetTypeRecEff==kJetsKine || fJetTypeRecEff == kJetsKineAcceptance) fJetsRecEff->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
3695 Int_t nJRecEff = GetListOfJets(fJetsRecEff, fJetTypeRecEff);
3696 Int_t nRecEffJets = 0;
3697 if(nJRecEff>=0) nRecEffJets = fJetsRecEff->GetEntries();
3698 if(fDebug>2)Printf("%s:%d Selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
3699 if(nJRecEff != nRecEffJets) Printf("%s:%d Mismatch selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
3700 fh1nRecEffJets->Fill(nRecEffJets);
3703 Int_t nEmbeddedJets = 0;
3704 TArrayI iEmbeddedMatchIndex;
3705 TArrayF fEmbeddedPtFraction;
3708 if(fBranchEmbeddedJets.Length()){
3709 Int_t nJEmbedded = GetListOfJets(fJetsEmbedded, kJetsEmbedded);
3710 if(nJEmbedded>=0) nEmbeddedJets = fJetsEmbedded->GetEntries();
3711 if(fDebug>2)Printf("%s:%d Selected Embedded jets: %d %d",(char*)__FILE__,__LINE__,nJEmbedded,nEmbeddedJets);
3712 if(nJEmbedded != nEmbeddedJets) Printf("%s:%d Mismatch Selected Embedded Jets: %d %d",(char*)__FILE__,__LINE__,nJEmbedded,nEmbeddedJets);
3713 fh1nEmbeddedJets->Fill(nEmbeddedJets);
3715 Float_t maxDist = 0.3;
3717 iEmbeddedMatchIndex.Set(nEmbeddedJets);
3718 fEmbeddedPtFraction.Set(nEmbeddedJets);
3720 iEmbeddedMatchIndex.Reset(-1);
3721 fEmbeddedPtFraction.Reset(0);
3723 AliAnalysisHelperJetTasks::GetJetMatching(fJetsEmbedded, nEmbeddedJets,
3724 fJetsRecCuts, nRecJetsCuts,
3725 iEmbeddedMatchIndex, fEmbeddedPtFraction,
3730 //____ fetch background jets ___________________________________________________
3732 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
3733 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
3734 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
3736 Int_t nBJ = GetListOfBckgJets(fBckgJetsRec, kJetsRec);
3737 Int_t nRecBckgJets = 0;
3738 if(nBJ>=0) nRecBckgJets = fBckgJetsRec->GetEntries();
3739 if(fDebug>2)Printf("%s:%d Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
3740 if(nBJ != nRecBckgJets) Printf("%s:%d Mismatch Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
3742 Int_t nBJCuts = GetListOfBckgJets(fBckgJetsRecCuts, kJetsRecAcceptance);
3743 Int_t nRecBckgJetsCuts = 0;
3744 if(nBJCuts>=0) nRecBckgJetsCuts = fBckgJetsRecCuts->GetEntries();
3745 if(fDebug>2)Printf("%s:%d Selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3746 if(nRecBckgJetsCuts != nBJCuts) Printf("%s:%d Mismatch selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nBJCuts,nRecBckgJetsCuts);
3747 fh1nRecBckgJetsCuts->Fill(nRecBckgJetsCuts);
3749 if(0){ // protection OB - not yet implemented
3750 if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fBckgJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
3751 Int_t nBJGen = GetListOfBckgJets(fBckgJetsGen, fJetTypeGen);
3752 Int_t nGenBckgJets = 0;
3753 if(nBJGen>=0) nGenBckgJets = fBckgJetsGen->GetEntries();
3754 if(fDebug>2)Printf("%s:%d Selected Gen background jets: %d %d",(char*)__FILE__,__LINE__,nBJGen,nGenBckgJets);
3755 if(nBJGen != nGenBckgJets) Printf("%s:%d Mismatch selected Gen background jets: %d %d",(char*)__FILE__,__LINE__,nBJGen,nGenBckgJets);
3756 fh1nGenBckgJets->Fill(nGenBckgJets);
3761 //____ fetch particles __________________________________________________________
3764 if(fUseExtraTracks == 1) nT = GetListOfTracks(fTracksRec, kTrackAODExtra);
3765 else if(fUseExtraTracks == -1) nT = GetListOfTracks(fTracksRec, kTrackAODExtraonly);
3766 else nT = GetListOfTracks(fTracksRec, kTrackAOD);
3769 if(nT>=0) nRecPart = fTracksRec->GetEntries();
3770 if(fDebug>2)Printf("%s:%d Selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
3771 if(nRecPart != nT) Printf("%s:%d Mismatch selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
3775 if(fUseExtraTracks == 1) nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODExtraCuts);
3776 else if(fUseExtraTracks == -1) nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODExtraonlyCuts);
3777 else nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODCuts);
3779 Int_t nRecPartCuts = 0;
3780 if(nTCuts>=0) nRecPartCuts = fTracksRecCuts->GetEntries();
3781 if(fDebug>2)Printf("%s:%d Selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
3782 if(nRecPartCuts != nTCuts) Printf("%s:%d Mismatch selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
3783 fh1EvtMult->Fill(nRecPartCuts);
3787 Int_t nTGen = GetListOfTracks(fTracksGen,fTrackTypeGen);
3789 if(nTGen>=0) nGenPart = fTracksGen->GetEntries();
3790 if(fDebug>2)Printf("%s:%d Selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
3791 if(nGenPart != nTGen) Printf("%s:%d Mismatch selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
3794 //____ analysis, fill histos ___________________________________________________
3799 for(Int_t it=0; it<nRecPart; ++it){
3800 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRec->At(it));
3801 if(part)fQATrackHistosRec->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
3803 for(Int_t it=0; it<nRecPartCuts; ++it){
3804 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRecCuts->At(it));
3805 if(part)fQATrackHistosRecCuts->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt() );
3807 for(Int_t it=0; it<nGenPart; ++it){
3808 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksGen->At(it));
3809 if(part)fQATrackHistosGen->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
3812 // fill DCA to prim vertex
3813 for(Int_t it=0; it<nRecPartCuts; ++it){
3814 AliAODTrack *aodtr = dynamic_cast<AliAODTrack*>(fTracksRecCuts->At(it));
3816 if(!aodtr) continue;
3817 if(!primVtx) continue;
3819 Double_t bfield = fAOD->GetMagneticField();
3823 AliAODTrack tmp(*aodtr);
3824 tmp.PropagateToDCA(primVtx, bfield, 5., dz, cov);
3826 Double_t dcaXY = dz[0];
3827 Double_t dcaZ = dz[1];
3829 fh2TrackPtVsDCAXY->Fill(dcaXY,tmp.Pt());
3830 fh2TrackPtVsDCAZ->Fill(dcaZ,tmp.Pt());
3837 for(Int_t ij=0; ij<nRecJets; ++ij){
3838 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRec->At(ij));
3839 if(jet)fQAJetHistosRec->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3844 if(fQAMode || fFFMode || fIJMode || fPhiCorrMode){
3845 for(Int_t ij=0; ij<nRecJetsCuts; ++ij){
3847 AliAODJet* jet = (AliAODJet*)(fJetsRecCuts->At(ij));
3848 if(fQAMode&2) fQAJetHistosRecCuts->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3850 if(ij==0){ // leading jet
3852 if(fQAMode&2) fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );
3855 Double_t ptFractionEmbedded = 0;
3856 AliAODJet* embeddedJet = 0;
3858 if(fBranchEmbeddedJets.Length()){ // find embedded jet
3860 Int_t indexEmbedded = -1;
3861 for(Int_t i=0; i<nEmbeddedJets; i++){
3862 if(iEmbeddedMatchIndex[i] == ij){
3864 ptFractionEmbedded = fEmbeddedPtFraction[i];
3868 fh1IndexEmbedded->Fill(indexEmbedded);
3869 fh1FractionPtEmbedded->Fill(ptFractionEmbedded);
3871 if(indexEmbedded>-1){
3873 embeddedJet = dynamic_cast<AliAODJet*>(fJetsEmbedded->At(indexEmbedded));
3874 if(!embeddedJet) continue;
3876 Double_t deltaPt = jet->Pt() - embeddedJet->Pt();
3877 Double_t deltaR = jet->DeltaR((AliVParticle*) (embeddedJet));
3879 fh2DeltaPtVsJetPtEmbedded->Fill(embeddedJet->Pt(),deltaPt);
3880 fh2DeltaPtVsRecJetPtEmbedded->Fill(jet->Pt(),deltaPt);
3881 fh1DeltaREmbedded->Fill(deltaR);
3885 // get tracks in jet
3886 TList* jettracklist = new TList();
3887 Double_t sumPt = 0.;
3888 Bool_t isBadJet = kFALSE;
3889 Float_t leadTrackPt = 0.;
3890 TLorentzVector* leadTrackV = new TLorentzVector();
3893 if(GetFFRadius()<=0){
3894 GetJetTracksTrackrefs(jettracklist, jet, GetFFMaxTrackPt(), isBadJet);
3896 if(fUseEmbeddedJetAxis){
3897 if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
3899 else GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
3902 if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;
3904 if(isBadJet) continue;
3906 if(ptFractionEmbedded>=fCutFractionPtEmbedded){ // if no embedding: ptFraction = cutFraction = 0
3908 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
3910 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
3911 if(!trackVP)continue;
3912 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3914 Float_t jetPt = jet->Pt();
3915 if(fUseEmbeddedJetPt){
3916 if(embeddedJet) jetPt = embeddedJet->Pt();
3919 Float_t trackPt = trackV->Pt();
3922 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3924 if(fFFMode) fFFHistosRecCuts->FillFF( trackPt, jetPt, incrementJetPt);
3925 if(fIJMode) fIJHistosRecCuts->FillIntraJet( trackV, jet->MomentumVector() );
3927 if(it==0){ // leading track
3928 leadTrackPt = trackPt;
3929 leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3931 if(fFFMode) fFFHistosRecLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE);
3932 if(fIJMode) fIJHistosRecLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
3934 if(fFFMode) fFFHistosRecLeading->FillFF( trackPt, leadTrackPt , incrementJetPt);
3935 if(fIJMode) fIJHistosRecLeading->FillIntraJet( trackV, leadTrackV );
3940 // ff and ij for background study
3942 if(fBckgType[0]!=-1)
3943 FillBckgHistos(fBckgType[0], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3944 fFFBckgHisto0RecCuts, fFFBckgHisto0RecLeading,
3945 fIJBckgHisto0RecCuts, fIJBckgHisto0RecLeading,
3946 fQABckgHisto0RecCuts);
3947 if(fBckgType[1]!=-1)
3948 FillBckgHistos(fBckgType[1], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3949 fFFBckgHisto1RecCuts, fFFBckgHisto1RecLeading,
3950 fIJBckgHisto1RecCuts, fIJBckgHisto1RecLeading,
3951 fQABckgHisto1RecCuts);
3952 if(fBckgType[2]!=-1)
3953 FillBckgHistos(fBckgType[2], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3954 fFFBckgHisto2RecCuts, fFFBckgHisto2RecLeading,
3955 fIJBckgHisto2RecCuts, fIJBckgHisto2RecLeading,
3956 fQABckgHisto2RecCuts);
3957 if(fBckgType[3]!=-1)
3958 FillBckgHistos(fBckgType[3], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3959 fFFBckgHisto3RecCuts, fFFBckgHisto3RecLeading,
3960 fIJBckgHisto3RecCuts, fIJBckgHisto3RecLeading,
3961 fQABckgHisto3RecCuts);
3962 if(fBckgType[4]!=-1)
3963 FillBckgHistos(fBckgType[4], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3964 fFFBckgHisto4RecCuts, fFFBckgHisto4RecLeading,
3965 fIJBckgHisto4RecCuts, fIJBckgHisto4RecLeading,
3966 fQABckgHisto4RecCuts);
3967 } // end if(fBckgMode)
3972 for(Int_t it=0; it<nRecPartCuts; ++it){
3973 AliVParticle *part = (AliVParticle*)(fTracksRecCuts->At(it));
3975 Float_t partEta = part->Eta();
3976 Float_t partPhi = part->Phi();
3977 Float_t partPt = part->Pt();
3979 fPhiCorrHistosJetArea->FillTrackQA( partEta,
3980 TVector2::Phi_mpi_pi( jet->Phi() - partPhi ),
3984 fPhiCorrHistosTransverseArea->FillTrackQA( partEta,
3985 TVector2::Phi_mpi_pi( jet->Phi() - partPhi + TMath::Pi()/2),
3989 fPhiCorrHistosAwayArea->FillTrackQA( partEta,
3990 TVector2::Phi_mpi_pi( jet->Phi() - partPhi + TMath::Pi()),
3994 } // end: phi-correlation
3997 delete jettracklist;
3999 } // end: cut embedded ratio
4000 } // end: leading jet
4001 } // end: rec. jets after cuts
4004 for(Int_t ij=0; ij<nGenJets; ++ij){
4006 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));
4008 if(fQAMode&2) fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
4010 if(ij==0){ // leading jet
4012 if(fQAMode&2) fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
4014 TList* jettracklist = new TList();
4015 Double_t sumPt = 0.;
4016 Bool_t isBadJet = kFALSE;
4017 Float_t leadTrackPt = 0.;
4018 TLorentzVector* leadTrackV = new TLorentzVector();
4020 if(GetFFRadius()<=0){
4021 GetJetTracksTrackrefs(jettracklist, jet, GetFFMaxTrackPt(), isBadJet);
4023 GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
4026 if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;;
4027 if(isBadJet) continue;
4029 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
4031 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
4032 if(!trackVP)continue;
4033 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
4035 Float_t jetPt = jet->Pt();
4036 Float_t trackPt = trackV->Pt();
4038 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4040 if(fFFMode) fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt );
4041 if(fIJMode) fIJHistosGen->FillIntraJet( trackV, jet->MomentumVector() );
4043 if(it==0){ // leading track
4044 leadTrackPt = trackPt;
4045 leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
4047 if(fFFMode) fFFHistosGenLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE );
4048 if(fIJMode) fIJHistosGenLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
4050 if(fFFMode) fFFHistosGenLeading->FillFF( trackPt, leadTrackPt, incrementJetPt );
4051 if(fIJMode) fIJHistosGenLeading->FillIntraJet( trackV, leadTrackV );
4057 delete jettracklist;
4060 } // end: QA, FF and intra-jet
4062 //_______ DiJet part _____________________________________________________
4064 if (nRecJetsCuts > 1)
4066 AliAODJet* jet1 = (AliAODJet*)(fJetsRecCuts->At(0));
4067 AliAODJet* jet2 = (AliAODJet*)(fJetsRecCuts->At(1));
4069 // DiJet deltaphi calculation
4070 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
4071 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
4072 Double_t deltaPhi = TMath::Abs(phi1-phi2);
4073 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
4075 // DiJet CDF cut calculation
4076 Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
4077 Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
4078 Double_t sumEt = et1 + et2;
4079 Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
4080 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
4082 // DiJet events selection
4083 Bool_t positionCut = 0;
4084 Bool_t positionEnergyCut = 0;
4088 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
4089 // Position-Energy cut :
4090 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
4092 if (ratio < fDiJetCDFCut) cdfCut = 1;
4096 if (fDiJetCut == 1 && positionCut == 1) go = 1;
4097 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
4098 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
4102 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
4103 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
4104 Double_t inbal = (jet1->Pt()-jet2->Pt())/(jet1->Pt()+jet2->Pt());
4105 Double_t meanEt = (Double_t)((et1+et2)/2.);
4106 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
4108 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
4112 if(fDJMode&2) fQADiJetHistosRecCuts->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, inbal, jetBin);
4115 TList* jettracklist1 = new TList();
4116 Double_t sumPt1 = 0.;
4117 Bool_t isBadJet1 = kFALSE;
4118 Float_t leadTrackPt1 = 0;
4121 TList* jettracklist2 = new TList();
4122 Double_t sumPt2 = 0.;
4123 Bool_t isBadJet2 = kFALSE;
4124 Float_t leadTrackPt2 = 0;
4126 if(GetFFRadius()<=0)
4128 GetJetTracksTrackrefs(jettracklist1, jet1, GetFFMaxTrackPt(), isBadJet1);
4129 GetJetTracksTrackrefs(jettracklist2, jet2, GetFFMaxTrackPt(), isBadJet2);
4133 GetJetTracksPointing(fTracksRecCuts, jettracklist1, jet1, GetFFRadius(), sumPt1, GetFFMaxTrackPt(), isBadJet1);
4134 GetJetTracksPointing(fTracksRecCuts, jettracklist2, jet2, GetFFRadius(), sumPt2, GetFFMaxTrackPt(), isBadJet2);
4138 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet1 = kTRUE;
4139 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet2 = kTRUE;
4141 if(!(isBadJet1 || isBadJet2)){ // good jets
4143 Int_t nTracks = jettracklist1->GetSize();
4144 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
4146 for(Int_t it=0; it<nTracks; ++it)
4148 if (it < jettracklist1->GetSize())
4150 AliVParticle *vp = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)));
4151 Float_t trackPt1 = (vp?vp->Pt():0);
4152 Float_t jetPt1 = jet1->Pt();
4154 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4156 fFFDiJetHistosRecCuts->FillDiJetFF(1, trackPt1, jetPt1, jetBin, incrementJetPt);
4157 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt1, jetPt1, jetBin, incrementJetPt);
4161 leadTrackPt1 = trackPt1;
4163 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(1, leadTrackPt1, jetPt1, jetBin, kTRUE);
4164 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt1, jetPt1, jetBin, kTRUE);
4167 fFFDiJetHistosRecLeading->FillDiJetFF(1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4168 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4171 if (it < jettracklist2->GetSize())
4173 Float_t trackPt2 = ((AliVParticle*)(jettracklist2->At(it)))->Pt();
4174 Float_t jetPt2 = jet2->Pt();
4176 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4178 fFFDiJetHistosRecCuts->FillDiJetFF(2, trackPt2, jetPt2, jetBin, incrementJetPt);
4179 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt2, jetPt2, jetBin, incrementJetPt);
4183 leadTrackPt2 = trackPt2;
4185 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(2, leadTrackPt2, jetPt2, jetBin, kTRUE);
4186 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt2, jetPt2, jetBin, kTRUE);
4189 fFFDiJetHistosRecLeading->FillDiJetFF(2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4190 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4192 } // End loop on tracks
4195 delete jettracklist1;
4196 delete jettracklist2;
4198 } // End if(jetBin > 0)
4199 else { Printf("Jet bins for di-jet studies not set !");}
4201 } // End if(nRecJets > 1)
4205 AliAODJet* jet1 = dynamic_cast<AliAODJet*>(fJetsGen->At(0));
4206 AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsGen->At(1));
4209 Double_t deltaPhi = 0;
4210 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
4211 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
4212 deltaPhi = TMath::Abs(phi1-phi2);
4213 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
4215 Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
4216 Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
4217 Double_t sumEt = et1 + et2;
4218 Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
4219 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
4221 // DiJet events selection
4222 Bool_t positionCut = 0;
4223 Bool_t positionEnergyCut = 0;
4227 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
4228 // Position-Energy cut :
4229 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
4231 if (ratio < fDiJetCDFCut) cdfCut = 1;
4235 if (fDiJetCut == 1 && positionCut == 1) go = 1;
4236 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
4237 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
4241 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
4242 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
4243 Double_t inbal = (jet1->Pt()-jet2->Pt())/(jet1->Pt()+jet2->Pt());
4244 Double_t meanEt = (Double_t)((et1+et2)/2.);
4245 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
4247 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
4251 if(fDJMode&2) fQADiJetHistosGen->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, inbal, jetBin);
4254 TList* jettracklist1 = new TList();
4255 Double_t sumPt1 = 0.;
4256 Bool_t isBadJet1 = kFALSE;
4257 Float_t leadTrackPt1 = 0.;
4259 TList* jettracklist2 = new TList();
4260 Double_t sumPt2 = 0.;
4261 Bool_t isBadJet2 = kFALSE;
4262 Float_t leadTrackPt2 = 0.;
4264 if(GetFFRadius()<=0)
4266 GetJetTracksTrackrefs(jettracklist1, jet1, GetFFMaxTrackPt(), isBadJet1);
4267 GetJetTracksTrackrefs(jettracklist2, jet2, GetFFMaxTrackPt(), isBadJet2);
4271 GetJetTracksPointing(fTracksGen, jettracklist1, jet1, GetFFRadius(), sumPt1, GetFFMaxTrackPt(), isBadJet1);
4272 GetJetTracksPointing(fTracksGen, jettracklist2, jet2, GetFFRadius(), sumPt2, GetFFMaxTrackPt(), isBadJet2);
4276 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet1 = kTRUE;
4277 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet2 = kTRUE;
4279 if(!(isBadJet1 || isBadJet2)){ // good jets
4281 Int_t nTracks = jettracklist1->GetSize();
4282 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
4284 for(Int_t it=0; it<nTracks; ++it)
4286 if (it < jettracklist1->GetSize())
4288 Float_t trackPt1 = ((AliVParticle*)jettracklist1->At(it))->Pt();
4289 Float_t jetPt1 = jet1->Pt();
4291 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4293 fFFDiJetHistosGen->FillDiJetFF( 1, trackPt1, jetPt1, jetBin, incrementJetPt);
4294 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt1, jetPt1, jetBin, incrementJetPt);
4298 leadTrackPt1 = trackPt1;
4300 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 1, leadTrackPt1, jetPt1, jetBin, kTRUE);
4301 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt1, jetPt1, jetBin, kTRUE);
4304 fFFDiJetHistosGenLeading->FillDiJetFF( 1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4305 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4308 if (it < jettracklist2->GetSize())
4310 Float_t trackPt2 = ((AliVParticle*)jettracklist2->At(it))->Pt();
4311 Float_t jetPt2 = jet2->Pt();
4313 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4315 fFFDiJetHistosGen->FillDiJetFF( 2, trackPt2, jetPt2, jetBin, incrementJetPt);
4316 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt2, jetPt2, jetBin, incrementJetPt);
4320 leadTrackPt2 = trackPt2;
4322 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 2, leadTrackPt2, jetPt2, jetBin, kTRUE);
4323 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt2, jetPt2, jetBin, kTRUE);
4326 fFFDiJetHistosGenLeading->FillDiJetFF( 2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4327 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4329 } // End loop on tracks
4332 delete jettracklist1;
4333 delete jettracklist2;
4335 } // End if(jetBin > 0)
4336 else { Printf("Jet bins for di-jet studies not set !");}
4338 }// end if jet1 and jet2
4339 } // End if(nGenJets > 1)
4342 // ____ efficiency _______________________________
4344 if(fEffMode && (fJetTypeRecEff != kJetsUndef)){
4346 // arrays holding for each generated particle the reconstructed AOD track index & isPrimary flag, are initialized in AssociateGenRec(...) function
4350 // array holding for each reconstructed AOD track generated particle index, initialized in AssociateGenRec(...) function
4353 // ... and another set for secondaries (secondary MC tracks are stored in a different list)
4354 TArrayI indexAODTrSec;
4356 TArrayI indexMCTrSec;
4358 Int_t nTracksAODMCCharged = GetListOfTracks(fTracksAODMCCharged, kTrackAODMCCharged);
4359 if(fDebug>2)Printf("%s:%d selected AODMC tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCCharged);
4361 Int_t nTracksAODMCChargedSec = GetListOfTracks(fTracksAODMCChargedSec, kTrackAODMCChargedSec);
4362 if(fDebug>2)Printf("%s:%d selected AODMC secondary tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCChargedSec);
4364 Int_t nTracksRecQualityCuts = GetListOfTracks(fTracksRecQualityCuts, kTrackAODQualityCuts);
4365 if(fDebug>2)Printf("%s:%d selected rec tracks quality after cuts, full acceptance/pt : %d ",(char*)__FILE__,__LINE__,nTracksRecQualityCuts);
4367 // associate gen and rec tracks, store indices in TArrays
4368 AssociateGenRec(fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,indexMCTr,isGenPrim,fh2PtRecVsGenPrim);
4369 AssociateGenRec(fTracksAODMCChargedSec,fTracksRecQualityCuts,indexAODTrSec,indexMCTrSec,isGenSec,fh2PtRecVsGenSec);
4372 if(fQAMode&1) FillSingleTrackHistosRecGen(fQATrackHistosRecEffGen,fQATrackHistosRecEffRec,fTracksAODMCCharged,indexAODTr,isGenPrim);
4373 if(fQAMode&1) FillSingleTrackResponse(fhnResponseSinglePt,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim);
4376 if(fQAMode&1) FillSingleTrackHistosRecGen(0x0,fQATrackHistosSecRec,fTracksAODMCChargedSec,indexAODTrSec,isGenSec);
4378 // high-pt occupancy effect
4379 FillTwoTrackHistosRecGen(fTracksAODMCCharged, /*fTracksRecQualityCuts,indexAODTr,*/ isGenPrim);
4383 Double_t sumPtGenLeadingJetRecEff = 0;
4384 Double_t sumPtGenLeadingJetSec = 0;
4385 Double_t sumPtRecLeadingJetRecEff = 0;
4387 for(Int_t ij=0; ij<nRecEffJets; ++ij){
4389 AliAODJet* jet = (AliAODJet*)(fJetsRecEff->At(ij));
4390 Bool_t isBadJetGenPrim = kFALSE;
4391 Bool_t isBadJetGenSec = kFALSE;
4392 Bool_t isBadJetRec = kFALSE;
4395 if(ij==0){ // leading jet
4397 // for efficiency: gen tracks from pointing with gen/rec jet
4398 TList* jettracklistGenPrim = new TList();
4399 GetJetTracksPointing(fTracksAODMCCharged, jettracklistGenPrim, jet, GetFFRadius(), sumPtGenLeadingJetRecEff, GetFFMaxTrackPt(), isBadJetGenPrim);
4401 TList* jettracklistGenSec = new TList();
4402 GetJetTracksPointing(fTracksAODMCChargedSec, jettracklistGenSec, jet, GetFFRadius(), sumPtGenLeadingJetSec, GetFFMaxTrackPt(), isBadJetGenSec);
4404 // bin efficiency in jet pt bins using rec tracks
4405 TList* jettracklistRec = new TList();
4406 GetJetTracksPointing(fTracksRecCuts,jettracklistRec, jet, GetFFRadius(), sumPtRecLeadingJetRecEff, GetFFMaxTrackPt(), isBadJetRec);
4408 Double_t jetEta = jet->Eta();
4409 Double_t jetPhi = TVector2::Phi_0_2pi(jet->Phi());
4411 if(GetFFMinNTracks()>0 && jettracklistGenPrim->GetSize()<=GetFFMinNTracks()) isBadJetGenPrim = kTRUE;
4412 if(GetFFMinNTracks()>0 && jettracklistGenSec->GetSize()<=GetFFMinNTracks()) isBadJetGenSec = kTRUE;
4413 if(GetFFMinNTracks()>0 && jettracklistRec->GetSize()<=GetFFMinNTracks()) isBadJetRec = kTRUE;
4415 if(isBadJetRec) continue;
4417 if(fQAMode&2) fQAJetHistosRecEffLeading->FillJetQA( jetEta, jetPhi, sumPtGenLeadingJetRecEff );
4419 if(fFFMode) FillJetTrackHistosRecGen(fFFHistosRecEffGen,fFFHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4420 jettracklistGenPrim,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
4422 if(fFFMode) FillJetTrackResponse(fhnResponseJetTrackPt,fhnResponseJetZ,fhnResponseJetXi,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4423 jettracklistGenPrim,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim,fUseResponseRecJetPtBins);
4425 // secondaries: use jet pt from primaries
4426 if(fFFMode) FillJetTrackHistosRecGen(0x0,fFFHistosSecRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4427 jettracklistGenSec,fTracksAODMCChargedSec,indexAODTrSec,isGenSec,fUseRecEffRecJetPtBins);
4429 delete jettracklistGenPrim;
4430 delete jettracklistGenSec;
4431 delete jettracklistRec;
4436 // bckgr eff: complementary cones
4440 for(Int_t ij=0; ij<nRecEffJets; ++ij){
4442 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecEff->At(ij));
4444 if(ij==0){ // leading jet
4446 TList* perpjettracklistGen = new TList();
4447 Double_t sumPtGen = 0.;
4449 GetTracksTiltedwrpJetAxis(TMath::Pi()/2.,fTracksGen, perpjettracklistGen, jet, GetFFRadius() , sumPtGen); // for efficiency: gen tracks perp to gen/rec jet
4451 // here could be your histos !!!
4452 // FillJetTrackRecEffHisto(fFFBckgrPerpHistosRecEffGen,fFFBckgrPerpHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,perpjettracklistGen,
4453 // fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
4455 delete perpjettracklistGen;
4460 // bgr eff: outside N leading jets
4466 TList* outjettracklistGen = new TList();
4467 Double_t sumPtGen = 0.;
4469 GetTracksOutOfNJets(nCases, fTracksGen, outjettracklistGen, fJetsRecEff, sumPtGen); // for efficiency: gen tracks outide n gen/rec jets
4471 // here could be your histos !!!
4472 // FillJetTrackRecEffHisto(fFFBckgrOutHistosRecEffGen,fFFBckgrOutHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4473 // outjettracklistGen,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
4475 delete outjettracklistGen;
4479 //___________________
4481 fTracksRec->Clear();
4482 fTracksRecCuts->Clear();
4483 fTracksGen->Clear();
4484 fTracksAODMCCharged->Clear();
4485 fTracksAODMCChargedSec->Clear();
4486 fTracksRecQualityCuts->Clear();
4489 fJetsRecCuts->Clear();
4491 fJetsRecEff->Clear();
4492 fJetsEmbedded->Clear();
4496 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
4497 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
4498 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
4500 fBckgJetsRec->Clear();
4501 fBckgJetsRecCuts->Clear();
4502 fBckgJetsGen->Clear();
4507 PostData(1, fCommonHistList);
4510 //________________________________________________________________________________________
4511 Double_t AliAnalysisTaskFragmentationFunction::InvMass(const AliAODJet* jet1, const AliAODJet* jet2)
4513 // cald DiJet inv mass
4515 Double_t invMass = 0.;
4516 invMass = TMath::Sqrt(pow(jet1->E()+jet2->E(),2) - pow(jet1->Px()+jet2->Px(),2) -
4517 pow(jet1->Py()+jet2->Py(),2) - pow(jet1->Pz()+jet2->Pz(),2));
4523 //________________________________________________________________________________________
4524 Double_t AliAnalysisTaskFragmentationFunction::GetDiJetBin(Double_t invMass, Double_t leadingJetPt, Double_t EtMean, Int_t kindBins)
4526 // calc DiJet bin according to kindBins parameter
4528 Double_t jetBinOk = 0.;
4529 Double_t jetBin = 0.;
4531 Float_t stepInvMass = (fDiJetJetInvMassMax - fDiJetJetInvMassMin)/fDiJetNBinsJetInvMass;
4532 Float_t stepPt = (fDiJetJetPtMax - fDiJetJetPtMin)/fDiJetNBinsJetPt;
4536 for(Int_t i=0; i<fDiJetNBinsJetInvMass; ++i)
4538 jetBin = fDiJetJetInvMassMin + i*stepInvMass + stepInvMass/2.;
4539 if(((fDiJetJetInvMassMin+i*stepInvMass) <= invMass) &&
4540 (fDiJetJetInvMassMin + (i+1)*stepInvMass) > invMass) {jetBinOk = jetBin; break;}
4541 else jetBinOk = -1.;
4544 else if (kindBins == 3)
4546 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
4548 jetBin = fDiJetJetPtMin + i*stepPt + stepPt/2.;
4549 if(((fDiJetJetPtMin+i*stepPt) <= EtMean) &&
4550 (fDiJetJetPtMin + (i+1)*stepPt) > EtMean) {jetBinOk = jetBin; break;}
4551 else jetBinOk = -1.;
4554 else if (kindBins == 2)
4556 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
4558 jetBin = fDiJetJetPtMin + i*stepPt + stepPt/2.;
4559 if(((fDiJetJetPtMin+i*stepPt) <= leadingJetPt) &&
4560 (fDiJetJetPtMin + (i+1)*stepPt) > leadingJetPt) {jetBinOk = jetBin; break;}
4561 else jetBinOk = -1.;
4564 else {Printf("WARNING: kindBins wrongly set ! Please make sure to call SetKindSlices() and set the kind parameter to 1, 2 or 3.\n");}
4571 //______________________________________________________________
4572 void AliAnalysisTaskFragmentationFunction::Terminate(Option_t *)
4576 if(fDebug > 1) printf("AliAnalysisTaskFragmentationFunction::Terminate() \n");
4579 //_________________________________________________________________________________
4580 Int_t AliAnalysisTaskFragmentationFunction::GetListOfTracks(TList *list, Int_t type)
4582 // fill list of tracks selected according to type
4584 if(fDebug > 2) Printf("%s:%d Selecting tracks with %d", (char*)__FILE__,__LINE__,type);
4587 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
4591 if(!fAOD) return -1;
4593 if(!fAOD->GetTracks()) return 0;
4595 if(type==kTrackUndef) return 0;
4599 if(type==kTrackAODExtraCuts || type==kTrackAODExtraonlyCuts || type==kTrackAODExtra || type==kTrackAODExtraonly){
4601 TClonesArray *aodExtraTracks = dynamic_cast<TClonesArray*>(fAOD->FindListObject("aodExtraTracks"));
4602 if(!aodExtraTracks)return iCount;
4603 for(int it =0; it<aodExtraTracks->GetEntries(); it++) {
4604 AliVParticle *track = dynamic_cast<AliVParticle*> ((*aodExtraTracks)[it]);
4605 if (!track) continue;
4607 AliAODTrack *tr = dynamic_cast<AliAODTrack*> (track);
4610 if(type==kTrackAODExtraCuts || type==kTrackAODExtraonlyCuts){
4612 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask))) continue;
4614 if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue;
4615 if(tr->Phi() < fTrackPhiMin || tr->Phi() > fTrackPhiMax) continue;
4616 if(tr->Pt() < fTrackPtCut) continue;
4624 if(type==kTrackAODCuts || type==kTrackAODQualityCuts || type==kTrackAOD || type==kTrackAODExtraCuts || type==kTrackAODExtra){
4626 // all rec. tracks, esd filter mask, eta range
4628 for(Int_t it=0; it<fAOD->GetNumberOfTracks(); ++it){
4629 AliAODTrack *tr = fAOD->GetTrack(it);
4631 if(type == kTrackAODCuts || type==kTrackAODQualityCuts || type==kTrackAODExtraCuts){
4633 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask))) continue;
4634 if(type == kTrackAODCuts){
4635 if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue;
4636 if(tr->Phi() < fTrackPhiMin || tr->Phi() > fTrackPhiMax) continue;
4637 if(tr->Pt() < fTrackPtCut) continue;
4644 else if (type==kTrackKineAll || type==kTrackKineCharged || type==kTrackKineChargedAcceptance){
4645 // kine particles, all or rather charged
4646 if(!fMCEvent) return iCount;
4648 for(Int_t it=0; it<fMCEvent->GetNumberOfTracks(); ++it){
4649 AliMCParticle* part = (AliMCParticle*) fMCEvent->GetTrack(it);
4651 if(type == kTrackKineCharged || type == kTrackKineChargedAcceptance){
4652 if(part->Charge()==0) continue;
4654 if(type == kTrackKineChargedAcceptance &&
4655 ( part->Eta() < fTrackEtaMin
4656 || part->Eta() > fTrackEtaMax
4657 || part->Phi() < fTrackPhiMin
4658 || part->Phi() > fTrackPhiMax
4659 || part->Pt() < fTrackPtCut)) continue;
4666 else if (type==kTrackAODMCCharged || type==kTrackAODMCAll || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSec) {
4667 // MC particles (from AOD), physical primaries, all or rather charged or rather charged within acceptance
4668 if(!fAOD) return -1;
4670 TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
4671 if(!tca)return iCount;
4673 for(int it=0; it<tca->GetEntriesFast(); ++it){
4674 AliAODMCParticle *part = dynamic_cast<AliAODMCParticle*>(tca->At(it));
4676 if(type != kTrackAODMCChargedSec && !part->IsPhysicalPrimary())continue;
4677 if(type == kTrackAODMCChargedSec && part->IsPhysicalPrimary())continue;
4679 if (type==kTrackAODMCCharged || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSec){
4680 if(part->Charge()==0) continue;
4681 if(type==kTrackAODMCChargedAcceptance &&
4682 ( part->Eta() > fTrackEtaMax
4683 || part->Eta() < fTrackEtaMin
4684 || part->Phi() > fTrackPhiMax
4685 || part->Phi() < fTrackPhiMin
4686 || part->Pt() < fTrackPtCut)) continue;
4698 // _______________________________________________________________________________
4699 Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t type)
4701 // fill list of jets selected according to type
4704 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
4708 if(type == kJetsRec || type == kJetsRecAcceptance){ // reconstructed jets
4710 if(fBranchRecJets.Length()==0){
4711 Printf("%s:%d no rec jet branch specified", (char*)__FILE__,__LINE__);
4712 if(fDebug>1)fAOD->Print();
4716 TClonesArray *aodRecJets = 0;
4717 if(fBranchRecJets.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchRecJets.Data()));
4718 if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchRecJets.Data()));
4719 if(fAODExtension&&!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchRecJets.Data()));
4722 if(fBranchRecJets.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchRecJets.Data());
4723 if(fDebug>1)fAOD->Print();
4727 // Reorder jet pt and fill new temporary AliAODJet objects
4730 for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){
4732 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));
4735 if( tmp->Pt() < fJetPtCut ) continue;
4736 if( type == kJetsRecAcceptance &&
4737 ( tmp->Eta() < fJetEtaMin
4738 || tmp->Eta() > fJetEtaMax
4739 || tmp->Phi() < fJetPhiMin
4740 || tmp->Phi() > fJetPhiMax )) continue;
4742 if(fBckgSubMethod && fBranchRecJets.Contains("B0") &&
4743 fBranchRecJets.Contains("KT")) {
4745 AliAODJet *tmpJet = GetAODBckgSubJet(tmp, fBckgSubMethod);
4747 if(!tmpJet) continue;
4764 else if(type == kJetsKine || type == kJetsKineAcceptance){
4770 if(fDebug>1) Printf("%s:%d no mcEvent",(char*)__FILE__,__LINE__);
4774 AliGenEventHeader* genHeader = fMCEvent->GenEventHeader();
4775 AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
4776 AliGenHijingEventHeader* hijingGenHeader = 0x0;
4778 if(!pythiaGenHeader){
4779 hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader);
4781 if(!hijingGenHeader){
4782 Printf("%s:%d no pythiaGenHeader or hijingGenHeader found", (char*)__FILE__,__LINE__);
4785 TLorentzVector mom[4];
4787 hijingGenHeader->GetJets(mom[0], mom[1], mom[2], mom[3]);
4789 for(Int_t i=0; i<2; ++i){
4790 if(!mom[i].Pt()) continue;
4791 jet[i] = new AliAODJet(mom[i]);
4793 if( type == kJetsKineAcceptance &&
4794 ( jet[i]->Eta() < fJetEtaMin
4795 || jet[i]->Eta() > fJetEtaMax
4796 || jet[i]->Phi() < fJetPhiMin
4797 || jet[i]->Phi() > fJetPhiMax )) continue;
4807 // fetch the pythia generated jets
4808 for(int ip=0; ip<pythiaGenHeader->NTriggerJets(); ++ip){
4811 AliAODJet *jet = new AliAODJet();
4812 pythiaGenHeader->TriggerJet(ip, p);
4813 jet->SetPxPyPzE(p[0], p[1], p[2], p[3]);
4815 if( type == kJetsKineAcceptance &&
4816 ( jet->Eta() < fJetEtaMin
4817 || jet->Eta() > fJetEtaMax
4818 || jet->Phi() < fJetPhiMin
4819 || jet->Phi() > fJetPhiMax )) continue;
4827 else if(type == kJetsGen || type == kJetsGenAcceptance ){
4829 if(fBranchGenJets.Length()==0){
4830 if(fDebug>1) Printf("%s:%d no gen jet branch specified", (char*)__FILE__,__LINE__);
4834 TClonesArray *aodGenJets = 0;
4835 if(fBranchGenJets.Length()) aodGenJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchGenJets.Data()));
4836 if(!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchGenJets.Data()));
4837 if(fAODExtension&&!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchGenJets.Data()));
4841 if(fBranchGenJets.Length()) Printf("%s:%d Generated jet branch %s not found",(char*)__FILE__,__LINE__,fBranchGenJets.Data());
4843 if(fDebug>1)fAOD->Print();
4849 for(Int_t ig=0; ig<aodGenJets->GetEntries(); ++ig){
4851 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodGenJets->At(ig));
4854 if( tmp->Pt() < fJetPtCut ) continue;
4855 if( type == kJetsGenAcceptance &&
4856 ( tmp->Eta() < fJetEtaMin
4857 || tmp->Eta() > fJetEtaMax
4858 || tmp->Phi() < fJetPhiMin
4859 || tmp->Phi() > fJetPhiMax )) continue;
4867 else if(type == kJetsEmbedded){ // embedded jets
4869 if(fBranchEmbeddedJets.Length()==0){
4870 Printf("%s:%d no embedded jet branch specified", (char*)__FILE__,__LINE__);
4871 if(fDebug>1)fAOD->Print();
4875 TClonesArray *aodEmbeddedJets = 0;
4876 if(fBranchEmbeddedJets.Length()) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchEmbeddedJets.Data()));
4877 if(!aodEmbeddedJets) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchEmbeddedJets.Data()));
4878 if(fAODExtension&&!aodEmbeddedJets) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchEmbeddedJets.Data()));
4880 if(!aodEmbeddedJets){
4881 if(fBranchEmbeddedJets.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchEmbeddedJets.Data());
4882 if(fDebug>1)fAOD->Print();
4886 // Reorder jet pt and fill new temporary AliAODJet objects
4887 Int_t nEmbeddedJets = 0;
4889 for(Int_t ij=0; ij<aodEmbeddedJets->GetEntries(); ++ij){
4891 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodEmbeddedJets->At(ij));
4894 if( tmp->Pt() < fJetPtCut ) continue;
4895 if( tmp->Eta() < fJetEtaMin
4896 || tmp->Eta() > fJetEtaMax
4897 || tmp->Phi() < fJetPhiMin
4898 || tmp->Phi() > fJetPhiMax ) continue;
4906 return nEmbeddedJets;
4909 if(fDebug>0)Printf("%s:%d no such type %d",(char*)__FILE__,__LINE__,type);
4914 // ___________________________________________________________________________________
4915 Int_t AliAnalysisTaskFragmentationFunction::GetListOfBckgJets(TList *list, Int_t type)
4917 // fill list of bgr clusters selected according to type
4919 if(type == kJetsRec || type == kJetsRecAcceptance){ // reconstructed jets
4921 if(fBranchRecBckgClusters.Length()==0){
4922 Printf("%s:%d no rec jet branch specified", (char*)__FILE__,__LINE__);
4923 if(fDebug>1)fAOD->Print();
4927 TClonesArray *aodRecJets = 0;
4928 if(fBranchRecBckgClusters.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchRecBckgClusters.Data()));
4929 if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchRecBckgClusters.Data()));
4930 if(fAODExtension&&!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchRecBckgClusters.Data()));
4933 if(fBranchRecBckgClusters.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchRecBckgClusters.Data());
4934 if(fDebug>1)fAOD->Print();
4938 // Reorder jet pt and fill new temporary AliAODJet objects
4941 for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){
4943 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));
4946 // if( tmp->Pt() < fJetPtCut ) continue; // no pt cut on bckg clusters !
4947 if( type == kJetsRecAcceptance &&
4948 ( tmp->Eta() < fJetEtaMin
4949 || tmp->Eta() > fJetEtaMax
4950 || tmp->Phi() < fJetPhiMin
4951 || tmp->Phi() > fJetPhiMax )) continue;
4965 // MC clusters still Under construction
4971 // _________________________________________________________________________________________________________
4972 void AliAnalysisTaskFragmentationFunction::SetProperties(THnSparse* h,const Int_t dim, const char** labels)
4974 // Set properties of THnSparse
4976 for(Int_t i=0; i<dim; i++){
4977 h->GetAxis(i)->SetTitle(labels[i]);
4978 h->GetAxis(i)->SetTitleColor(1);
4982 // __________________________________________________________________________________________
4983 void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y)
4985 //Set properties of histos (x and y title)
4989 h->GetXaxis()->SetTitleColor(1);
4990 h->GetYaxis()->SetTitleColor(1);
4993 // _________________________________________________________________________________________________________
4994 void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y, const char* z)
4996 //Set properties of histos (x,y and z title)
5001 h->GetXaxis()->SetTitleColor(1);
5002 h->GetYaxis()->SetTitleColor(1);
5003 h->GetZaxis()->SetTitleColor(1);
5006 // ________________________________________________________________________________________________________________________________________________________
5007 void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist, TList* outputlist, const AliAODJet* jet,
5008 const Double_t radius, Double_t& sumPt, const Double_t maxPt, Bool_t& isBadMaxPt)
5010 // fill list of tracks in cone around jet axis
5013 isBadMaxPt = kFALSE;
5016 jet->PxPyPz(jetMom);
5017 TVector3 jet3mom(jetMom);
5019 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5021 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5023 Double_t trackMom[3];
5024 track->PxPyPz(trackMom);
5025 TVector3 track3mom(trackMom);
5027 Double_t dR = jet3mom.DeltaR(track3mom);
5031 outputlist->Add(track);
5033 sumPt += track->Pt();
5035 if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE;
5042 // ___________________________________________________________________________________________
5043 void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet, const Double_t maxPt, Bool_t& isBadMaxPt)
5045 // list of jet tracks from trackrefs
5047 Int_t nTracks = jet->GetRefTracks()->GetEntriesFast();
5049 for (Int_t itrack=0; itrack<nTracks; itrack++) {
5051 AliVParticle* track = dynamic_cast<AliVParticle*>(jet->GetRefTracks()->At(itrack));
5053 AliError("expected ref track not found ");
5057 if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE;
5064 // _ ________________________________________________________________________________________________________________________________
5065 void AliAnalysisTaskFragmentationFunction::AssociateGenRec(TList* tracksAODMCCharged,TList* tracksRec, TArrayI& indexAODTr,TArrayI& indexMCTr,
5066 TArrayS& isRefGen,TH2F* fh2PtRecVsGen)
5068 // associate generated and reconstructed tracks, fill TArrays of list indices
5070 Int_t nTracksRec = tracksRec->GetSize();
5071 Int_t nTracksGen = tracksAODMCCharged->GetSize();
5072 TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
5075 if(!nTracksGen) return;
5079 indexAODTr.Set(nTracksGen);
5080 indexMCTr.Set(nTracksRec);
5081 isRefGen.Set(nTracksGen);
5083 indexAODTr.Reset(-1);
5084 indexMCTr.Reset(-1);
5087 // loop over reconstructed tracks, get generated track
5089 for(Int_t iRec=0; iRec<nTracksRec; iRec++){
5091 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5092 if(!rectrack)continue;
5093 Int_t label = TMath::Abs(rectrack->GetLabel());
5095 // find MC track in our list
5096 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tca->At(label));
5098 Int_t listIndex = -1;
5099 if(gentrack) listIndex = tracksAODMCCharged->IndexOf(gentrack);
5103 indexAODTr[listIndex] = iRec;
5104 indexMCTr[iRec] = listIndex;
5109 // define reference sample of primaries/secondaries (for reconstruction efficiency / contamination)
5111 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5113 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksAODMCCharged->At(iGen));
5114 if(!gentrack)continue;
5115 Int_t pdg = gentrack->GetPdgCode();
5117 // 211 - pi, 2212 - proton, 321 - Kaon, 11 - electron, 13 - muon
5118 if(TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 2212 || TMath::Abs(pdg) == 321 ||
5119 TMath::Abs(pdg) == 11 || TMath::Abs(pdg) == 13){
5121 isRefGen[iGen] = kTRUE;
5123 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5126 Float_t genPt = gentrack->Pt();
5127 AliAODTrack* vt = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5129 Float_t recPt = vt->Pt();
5130 fh2PtRecVsGen->Fill(genPt,recPt);
5137 // _____________________________________________________________________________________________________________________________________________
5138 void AliAnalysisTaskFragmentationFunction::FillSingleTrackHistosRecGen(AliFragFuncQATrackHistos* trackQAGen, AliFragFuncQATrackHistos* trackQARec, TList* tracksGen,
5139 const TArrayI& indexAODTr, const TArrayS& isRefGen){
5141 // fill QA for single track reconstruction efficiency
5143 Int_t nTracksGen = tracksGen->GetSize();
5145 if(!nTracksGen) return;
5147 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5149 if(isRefGen[iGen] != 1) continue; // select primaries
5151 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5152 if(!gentrack) continue;
5153 Double_t ptGen = gentrack->Pt();
5154 Double_t etaGen = gentrack->Eta();
5155 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5157 // apply same acc & pt cuts as for FF
5159 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5160 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5161 if(ptGen < fTrackPtCut) continue;
5163 if(trackQAGen) trackQAGen->FillTrackQA(etaGen, phiGen, ptGen);
5166 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5167 if(iRec>=0 && trackQARec) trackQARec->FillTrackQA(etaGen, phiGen, ptGen);
5171 // ______________________________________________________________________________________________________________________________________________________
5173 void AliAnalysisTaskFragmentationFunction::FillJetTrackHistosRecGen(TObject* histGen,TObject* histRec,Double_t jetPtGen,Double_t jetPtRec, TList* jetTrackList, const TList* tracksGen,
5174 const TArrayI& indexAODTr,const TArrayS& isRefGen, const Bool_t useRecJetPt)
5176 // fill objects for jet track reconstruction efficiency or secondaries contamination
5177 // arguments histGen/histRec can be of different type: AliFragFuncHistos*, AliFragFuncIntraJetHistos*, ...
5179 Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks
5181 if(!nTracksJet) return;
5183 Bool_t incrementJetPtGenFF = kTRUE; // needed in case we fill FFHistos
5184 Bool_t incrementJetPtRecFF = kTRUE; // needed in case we fill FFHistos
5186 for(Int_t iTr=0; iTr<nTracksJet; iTr++){
5188 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
5189 if(!gentrack)continue;
5190 // find jet track in gen tracks list
5191 Int_t iGen = tracksGen->IndexOf(gentrack);
5194 if(fDebug>0) Printf("%s:%d gen jet track not found ",(char*)__FILE__,__LINE__);
5199 if(isRefGen[iGen] != 1) continue; // select primaries
5201 Double_t ptGen = gentrack->Pt();
5202 Double_t etaGen = gentrack->Eta();
5203 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5205 // apply same acc & pt cuts as for FF
5207 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5208 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5209 if(ptGen < fTrackPtCut) continue;
5211 Double_t z = ptGen / jetPtGen;
5213 if(z>0) xi = TMath::Log(1/z);
5215 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5216 Bool_t isRec = (iRec>=0) ? kTRUE : kFALSE;
5218 if(dynamic_cast<AliFragFuncHistos*>(histGen) || dynamic_cast<AliFragFuncHistos*>(histRec)){ // histGen can be NULL for secondaries -> ||
5220 // after checking can afford normal cast
5221 AliFragFuncHistos* ffhistGen = (AliFragFuncHistos*) (histGen);
5222 AliFragFuncHistos* ffhistRec = (AliFragFuncHistos*) (histRec);
5225 if(useRecJetPt) ffhistGen->FillFF( ptGen, jetPtRec, incrementJetPtGenFF );
5226 else ffhistGen->FillFF( ptGen, jetPtGen, incrementJetPtGenFF );
5228 incrementJetPtGenFF = kFALSE;
5232 if(ffhistRec && isRec){
5234 if(useRecJetPt) ffhistRec->FillFF( ptGen, jetPtRec, incrementJetPtRecFF );
5235 else ffhistRec->FillFF( ptGen, jetPtGen, incrementJetPtRecFF );
5237 incrementJetPtRecFF = kFALSE;
5240 else if(dynamic_cast<AliFragFuncIntraJetHistos*>(histGen) && dynamic_cast<AliFragFuncIntraJetHistos*>(histRec)){
5242 // eff for IJ histos ...
5248 // _____________________________________________________________________________________________________________________________________________
5249 void AliAnalysisTaskFragmentationFunction::FillTwoTrackHistosRecGen(TList* tracksGen, /*TList* tracksRec, const TArrayI& indexAODTr, */ const TArrayS& isRefGen){
5251 Int_t nTracksGen = tracksGen->GetSize();
5253 if(!nTracksGen) return;
5255 Int_t highPtIndices[nTracksGen];
5258 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5260 if(isRefGen[iGen] != 1) continue; // select primaries
5262 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5263 if(!gentrack) continue;
5264 Double_t ptGen = gentrack->Pt();
5265 Double_t etaGen = gentrack->Eta();
5266 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5268 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5269 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5272 highPtIndices[nHighPt++] = iGen;
5277 for(Int_t nHPT = 0; nHPT<nHighPt; nHPT++){ // high pt tracks loop
5279 Int_t indexHPT = highPtIndices[nHPT];
5281 AliAODMCParticle* genHPTtrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(indexHPT));
5282 if(!genHPTtrack) continue;
5284 Double_t trackMomHPT[3];
5285 genHPTtrack->PxPyPz(trackMomHPT);
5286 TVector3 track3MomHPT(trackMomHPT);
5289 Double_t distNN = 10;
5293 for(Int_t iGen=0; iGen<nTracksGen; iGen++){ // all gen tracks loop
5295 if(isRefGen[iGen] != 1) continue; // select primaries
5297 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5298 if(!gentrack) continue;
5300 Double_t ptGen = gentrack->Pt();
5301 Double_t etaGen = gentrack->Eta();
5302 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5304 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5305 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5306 if(ptGen < fTrackPtCut) continue;
5309 Double_t gentrackMom[3];
5310 gentrack->PxPyPz(gentrackMom);
5311 TVector3 gentrack3Mom(gentrackMom);
5313 Double_t dR = gentrack3Mom.DeltaR(track3MomHPT);
5315 if(iGen != indexHPT && dR<distNN){
5324 // _____________________________________________________________________________________________________________________________________________
5325 void AliAnalysisTaskFragmentationFunction::FillSingleTrackResponse(THnSparse* hnResponse, TList* tracksGen, TList* tracksRec,
5326 const TArrayI& indexAODTr, const TArrayS& isGenPrim)
5328 // fill response matrix for single tracks
5331 Int_t nTracksGen = tracksGen->GetSize();
5333 if(!nTracksGen) return;
5335 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5337 if(isGenPrim[iGen] != 1) continue; // select primaries
5339 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5340 if(!gentrack)continue;
5341 Double_t ptGen = gentrack->Pt();
5342 Double_t etaGen = gentrack->Eta();
5343 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5345 // apply same acc & pt cuts as for FF
5346 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5347 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5348 if(ptGen < fTrackPtCut) continue;
5350 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5352 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5353 if(!rectrack)continue;
5354 Double_t ptRec = rectrack->Pt();
5356 Double_t entries[2] = {ptRec,ptGen}; // AliCorrFW convention: gen vs rec
5357 hnResponse->Fill(entries);
5359 Double_t invPtGen = 0;
5360 if(ptGen) invPtGen = 1/ptGen;
5362 Double_t invPtRec = 0;
5363 if(ptRec) invPtRec = 1/ptRec;
5365 fh2SingleInvPtRecMnGenVsPtGen->Fill(ptGen,invPtRec - invPtGen);
5371 // ______________________________________________________________________________________________________________________________________________________
5372 void AliAnalysisTaskFragmentationFunction::FillJetTrackResponse(THnSparse* hnResponsePt, THnSparse* hnResponseZ, THnSparse* hnResponseXi,
5373 Double_t jetPtGen, Double_t jetPtRec, TList* jetTrackList,
5374 const TList* tracksGen, TList* tracksRec, const TArrayI& indexAODTr, const TArrayS& isGenPrim,const Bool_t useRecJetPt)
5376 // fill response matrix for tracks in jets
5378 Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks
5380 if(!nTracksJet) return;
5382 for(Int_t iTr=0; iTr<nTracksJet; iTr++){
5384 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
5385 if(!gentrack)continue;
5386 // find jet track in gen tracks list
5387 Int_t iGen = tracksGen->IndexOf(gentrack);
5390 if(fDebug>0) Printf("%s:%d gen jet track not found ",(char*)__FILE__,__LINE__);
5394 if(isGenPrim[iGen] != 1) continue; // select primaries
5396 Double_t ptGen = gentrack->Pt();
5397 Double_t etaGen = gentrack->Eta();
5398 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5400 // apply same acc & pt cuts as for FF
5402 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5403 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5404 if(ptGen < fTrackPtCut) continue;
5406 Double_t zGen = ptGen / jetPtRec;
5408 if(zGen>0) xiGen = TMath::Log(1/zGen);
5410 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5414 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5416 Double_t ptRec = rectrack->Pt();
5418 Double_t zRec = ptRec / jetPtRec;
5420 if(zRec>0) xiRec = TMath::Log(1/zRec);
5422 Double_t jetPt = useRecJetPt ? jetPtRec : jetPtGen;
5424 Double_t entriesPt[3] = {jetPt,ptRec,ptGen}; // AliCorrFW convention: gen vs rec
5425 Double_t entriesZ[3] = {jetPt,zRec,zGen};
5426 Double_t entriesXi[3] = {jetPt,xiRec,xiGen};
5428 hnResponsePt->Fill(entriesPt);
5429 hnResponseZ->Fill(entriesZ);
5430 hnResponseXi->Fill(entriesXi);
5436 // _____________________________________________________________________________________________________________________________________________________________________
5437 void AliAnalysisTaskFragmentationFunction::GetTracksTiltedwrpJetAxis(Float_t alpha, TList* inputlist, TList* outputlist, const AliAODJet* jet, Double_t radius,Double_t& sumPt)
5439 // List of tracks in cone perpendicular to the jet azimuthal direction
5442 jet->PxPyPz(jetMom);
5444 TVector3 jet3mom(jetMom);
5445 // Rotate phi and keep eta unchanged
5446 Double_t etaTilted = jet3mom.Eta();
5447 Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha;
5448 if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi();
5450 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5453 if( fUseExtraTracksBgr != 1){
5454 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5455 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5456 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5460 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5462 Double_t trackMom[3];
5463 track->PxPyPz(trackMom);
5464 TVector3 track3mom(trackMom);
5466 Double_t deta = track3mom.Eta() - etaTilted;
5467 Double_t dphi = TMath::Abs(track3mom.Phi() - phiTilted);
5468 if (dphi > TMath::Pi()) dphi = 2. * TMath::Pi() - dphi;
5469 Double_t dR = TMath::Sqrt(deta * deta + dphi * dphi);
5472 outputlist->Add(track);
5473 sumPt += track->Pt();
5479 // ________________________________________________________________________________________________________________________________________________________
5480 void AliAnalysisTaskFragmentationFunction::GetTracksTiltedwrpJetAxisWindow(Float_t alpha, TList* inputlist, TList* outputlist, const AliAODJet* jet, Double_t radius,Double_t& sumPt,Double_t &normFactor)
5482 // List of tracks in cone perpendicular to the jet azimuthal direction
5485 jet->PxPyPz(jetMom);
5487 TVector3 jet3mom(jetMom);
5488 // Rotate phi and keep eta unchanged
5489 Double_t etaTilted = jet3mom.Eta();
5490 Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha;
5491 if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi();
5493 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++)
5497 if( fUseExtraTracksBgr != 1){
5498 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5499 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5500 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5504 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5506 Float_t trackEta = track->Eta();
5507 Float_t trackPhi = track->Phi();
5509 if( ( phiTilted-radius >= 0 ) && ( phiTilted+radius <= 2*TMath::Pi()))
5511 if((trackPhi<=phiTilted+radius) &&
5512 (trackPhi>=phiTilted-radius) &&
5513 (trackEta<=fTrackEtaMax)&&(trackEta>=fTrackEtaMin)) // 0.9 and - 0.9
5515 outputlist->Add(track);
5516 sumPt += track->Pt();
5519 else if( phiTilted-radius < 0 )
5521 if((( trackPhi < phiTilted+radius ) ||
5522 ( trackPhi > 2*TMath::Pi()-(radius-phiTilted) )) &&
5523 (( trackEta <= fTrackEtaMax ) && ( trackEta >= fTrackEtaMin )))
5525 outputlist->Add(track);
5526 sumPt += track->Pt();
5529 else if( phiTilted+radius > 2*TMath::Pi() )
5531 if((( trackPhi > phiTilted-radius ) ||
5532 ( trackPhi < phiTilted+radius-2*TMath::Pi() )) &&
5533 (( trackEta <= fTrackEtaMax ) && ( trackEta >= fTrackEtaMin )))
5535 outputlist->Add(track);
5536 sumPt += track->Pt();
5541 // Jet area - Temporarily added should be modified with the proper jet area value
5542 Float_t areaJet = CalcJetArea(etaTilted,radius);
5543 Float_t areaTilted = 2*radius*(fTrackEtaMax-fTrackEtaMin);
5545 normFactor = (Float_t) 1. / (areaJet / areaTilted);
5550 // ________________________________________________________________________________________________________________________________________________________
5551 void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJets(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt)
5553 // List of tracks outside cone around N jet axis
5554 // Particles taken randomly
5557 // Int_t nj = jetlist->GetSize();
5558 Float_t rc = GetFFRadius();
5559 Float_t rcl = GetFFBckgRadius();
5561 // Estimate jet and background areas
5562 Float_t* areaJet = new Float_t[nCases];
5563 memset(areaJet, 0, sizeof(Float_t) * nCases);
5564 Float_t* areaJetLarge = new Float_t[nCases];
5565 memset(areaJetLarge, 0, sizeof(Float_t) * nCases);
5566 Float_t areaFull = (fTrackEtaMax-fTrackEtaMin)*(fTrackPhiMax-fTrackPhiMin);
5567 Float_t areaOut = areaFull;
5569 //estimate jets and background areas
5572 TList* templist = new TList();
5573 TClonesArray *vect3Jet = new TClonesArray("TVector3",nCases);
5575 for(Int_t ij=0; ij<nCases; ++ij)
5577 // Get jet information
5578 AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
5581 jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
5582 new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
5583 Float_t etaJet = (Float_t)((TVector3*) vect3Jet->At(ij))->Eta();
5586 areaJet[ij] = CalcJetArea(etaJet,rc);
5588 // Area jet larger angle
5589 areaJetLarge[ij] = CalcJetArea(etaJet,rcl);
5592 areaOut = areaOut - areaJetLarge[ij];
5596 // List of all tracks outside jet areas
5597 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5600 if( fUseExtraTracksBgr != 1){
5601 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5602 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5603 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5607 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5609 Double_t trackMom[3];
5610 track->PxPyPz(trackMom);
5611 TVector3 track3mom(trackMom);
5613 Double_t *dR = new Double_t[nCases];
5614 for(Int_t ij=0; ij<nCases; ij++)
5615 dR[ij] = (Double_t)((TVector3*) vect3Jet->At(ij))->DeltaR(track3mom);
5617 if((nCases==1 && (dR[0]>rcl)) ||
5618 (nCases==2 && (dR[0]>rcl && dR[1]>rcl)) ||
5619 (nCases==3 && (dR[0]>rcl && dR[1]>rcl && dR[2]>rcl)))
5621 templist->Add(track);
5627 // Take tracks randomly
5628 Int_t nScaled = (Int_t) (nOut * areaJet[0] / areaOut + 0.5);
5629 TArrayI* ar = new TArrayI(nOut);
5631 for(Int_t init=0; init<nOut; init++)
5634 Int_t *randIndex = new Int_t[nScaled];
5635 for(Int_t init2=0; init2<nScaled; init2++)
5636 randIndex[init2] = -1;
5638 // Select nScaled different random numbers in nOut
5639 for(Int_t i=0; i<nScaled; i++)
5641 Int_t* tmpArr = new Int_t[nOut-i];
5642 Int_t temp = fRandom->Integer(nOut-i);
5643 for(Int_t ind = 0; ind< ar->GetSize()-1; ind++)
5645 if(ind<temp) tmpArr[ind] = (*ar)[ind];
5646 else tmpArr[ind] = (*ar)[ind+1];
5648 randIndex[i] = (*ar)[temp];
5650 ar->Set(nOut-i-1,tmpArr);
5656 for(Int_t ipart=0; ipart<nScaled; ipart++)
5658 AliVParticle* track = (AliVParticle*)(templist->At(randIndex[ipart]));
5659 outputlist->Add(track);
5660 sumPt += track->Pt();
5667 delete [] areaJetLarge;
5670 delete [] randIndex;
5674 // ________________________________________________________________________________________________________________________________________________________
5675 void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJetsStat(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt, Double_t &normFactor)
5677 // List of tracks outside cone around N jet axis
5678 // All particles taken + final scaling factor
5681 Float_t rc = GetFFRadius();
5682 Float_t rcl = GetFFBckgRadius();
5684 // Estimate jet and background areas
5685 Float_t* areaJet = new Float_t[nCases];
5686 memset(areaJet, 0, sizeof(Float_t) * nCases);
5687 Float_t* areaJetLarge = new Float_t[nCases];
5688 memset(areaJetLarge, 0, sizeof(Float_t) * nCases);
5689 Float_t areaFull = (fTrackEtaMax-fTrackEtaMin)*(fTrackPhiMax-fTrackPhiMin);
5690 Float_t areaOut = areaFull;
5692 //estimate jets and background areas
5695 TClonesArray *vect3Jet = new TClonesArray("TVector3",nCases);
5697 for(Int_t ij=0; ij<nCases; ++ij)
5699 // Get jet information
5700 AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
5703 jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
5704 new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
5705 Float_t etaJet = (Float_t)((TVector3*) vect3Jet->At(ij))->Eta();
5708 areaJet[ij] = CalcJetArea(etaJet,rc);
5710 // Area jet larger angle
5711 areaJetLarge[ij] = CalcJetArea(etaJet,rcl);
5713 // Outside jets area
5714 areaOut = areaOut - areaJetLarge[ij];
5718 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5721 if( fUseExtraTracksBgr != 1){
5722 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5723 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5724 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5728 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5730 Double_t trackMom[3];
5731 track->PxPyPz(trackMom);
5732 TVector3 track3mom(trackMom);
5734 Double_t *dR = new Double_t[nCases];
5735 for(Int_t ij=0; ij<nCases; ij++)
5736 dR[ij] = (Double_t)((TVector3*) vect3Jet->At(ij))->DeltaR(track3mom);
5739 (nCases==1 && (dR[0]>rcl)) ||
5740 (nCases==2 && (dR[0]>rcl && dR[1]>rcl)) ||
5741 (nCases==3 && (dR[0]>rcl && dR[1]>rcl && dR[2]>rcl)))
5743 outputlist->Add(track);
5744 sumPt += track->Pt();
5750 if(nCases==0) areaJet[0] = TMath::Pi()*rc*rc;
5751 normFactor = (Float_t) 1./(areaJet[0] / areaOut);
5756 delete [] areaJetLarge;
5761 // ______________________________________________________________________________________________________________________________________________________
5762 Float_t AliAnalysisTaskFragmentationFunction::CalcJetArea(const Float_t etaJet, const Float_t rc) const
5764 // calculate area of jet with eta etaJet and radius rc
5766 Float_t detamax = etaJet + rc;
5767 Float_t detamin = etaJet - rc;
5768 Float_t accmax = 0.0; Float_t accmin = 0.0;
5769 if(detamax > fTrackEtaMax){ // sector outside etamax
5770 Float_t h = fTrackEtaMax - etaJet;
5771 accmax = rc*rc*TMath::ACos(h/rc) - h*TMath::Sqrt(rc*rc - h*h);
5773 if(detamin < fTrackEtaMin){ // sector outside etamin
5774 Float_t h = fTrackEtaMax + etaJet;
5775 accmin = rc*rc*TMath::ACos(h/rc) - h*TMath::Sqrt(rc*rc - h*h);
5777 Float_t areaJet = rc*rc*TMath::Pi() - accmax - accmin;
5783 // ___________________________________________________________________________________________________________________________
5784 void AliAnalysisTaskFragmentationFunction::GetClusterTracksOutOf1Jet(AliAODJet* jet, TList* outputlist, Double_t &normFactor)
5786 // fill tracks from bckgCluster branch in list,
5787 // for all clusters outside jet cone
5788 // sum up total area of clusters
5790 Double_t rc = GetFFRadius();
5791 Double_t rcl = GetFFBckgRadius();
5793 Double_t areaTotal = 0;
5794 Double_t sumPtTotal = 0;
5796 for(Int_t ij=0; ij<fBckgJetsRec->GetEntries(); ++ij){
5798 AliAODJet* bgrCluster = (AliAODJet*)(fBckgJetsRec->At(ij)); // not 'recCuts': use all clusters in full eta range
5800 Double_t dR = jet->DeltaR(bgrCluster);
5802 if(dR<rcl) continue;
5804 Double_t clusterPt = bgrCluster->Pt();
5805 Double_t area = bgrCluster->EffectiveAreaCharged();
5807 sumPtTotal += clusterPt;
5809 Int_t nTracksJet = bgrCluster->GetRefTracks()->GetEntries();
5811 for(Int_t it = 0; it<nTracksJet; it++){
5813 // embedded tracks - note: using ref tracks here, fBranchRecBckgClusters has to be consistent
5814 if( fUseExtraTracksBgr != 1){
5815 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (bgrCluster->GetTrack(it))){
5816 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5817 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5821 AliVParticle* track = dynamic_cast<AliVParticle*>(bgrCluster->GetTrack(it));
5822 if(!track) continue;
5824 Float_t trackPt = track->Pt();
5825 Float_t trackEta = track->Eta();
5826 Float_t trackPhi = TVector2::Phi_0_2pi(track->Phi());
5828 if(trackEta < fTrackEtaMin || trackEta > fTrackEtaMax) continue;
5829 if(trackPhi < fTrackPhiMin || trackPhi > fTrackPhiMax) continue;
5830 if(trackPt < fTrackPtCut) continue;
5832 outputlist->Add(track);
5836 Double_t areaJet = TMath::Pi()*rc*rc;
5837 if(areaTotal) normFactor = (Float_t) 1./(areaJet / areaTotal);
5842 // _______________________________________________________________________________________________________________________
5843 void AliAnalysisTaskFragmentationFunction::GetClusterTracksMedian(TList* outputlist, Double_t &normFactor)
5845 // fill tracks from bckgCluster branch,
5846 // using cluster with median density (odd number of clusters)
5847 // or picking randomly one of the two closest to median (even number)
5851 Int_t nBckgClusters = fBckgJetsRec->GetEntries(); // not 'recCuts': use all clusters in full eta range
5853 if(nBckgClusters<3) return; // need at least 3 clusters (skipping 2 highest)
5855 Double_t* bgrDensity = new Double_t[nBckgClusters];
5856 Int_t* indices = new Int_t[nBckgClusters];
5858 for(Int_t ij=0; ij<nBckgClusters; ++ij){
5860 AliAODJet* bgrCluster = (AliAODJet*)(fBckgJetsRec->At(ij));
5861 Double_t clusterPt = bgrCluster->Pt();
5862 Double_t area = bgrCluster->EffectiveAreaCharged();
5864 Double_t density = 0;
5865 if(area>0) density = clusterPt/area;
5867 bgrDensity[ij] = density;
5871 TMath::Sort(nBckgClusters, bgrDensity, indices);
5873 // get median cluster
5875 AliAODJet* medianCluster = 0;
5876 Double_t medianDensity = 0;
5878 if(TMath::Odd(nBckgClusters)){
5880 Int_t medianIndex = indices[(Int_t) (0.5*(nBckgClusters-1))];
5881 medianCluster = (AliAODJet*)(fBckgJetsRec->At(medianIndex));
5883 Double_t clusterPt = medianCluster->Pt();
5884 Double_t area = medianCluster->EffectiveAreaCharged();
5886 if(area>0) medianDensity = clusterPt/area;
5890 Int_t medianIndex1 = indices[(Int_t) (0.5*nBckgClusters-1)];
5891 Int_t medianIndex2 = indices[(Int_t) (0.5*nBckgClusters)];
5893 AliAODJet* medianCluster1 = (AliAODJet*)(fBckgJetsRec->At(medianIndex1));
5894 AliAODJet* medianCluster2 = (AliAODJet*)(fBckgJetsRec->At(medianIndex2));
5896 Double_t density1 = 0;
5897 Double_t clusterPt1 = medianCluster1->Pt();
5898 Double_t area1 = medianCluster1->EffectiveAreaCharged();
5899 if(area1>0) density1 = clusterPt1/area1;
5901 Double_t density2 = 0;
5902 Double_t clusterPt2 = medianCluster2->Pt();
5903 Double_t area2 = medianCluster2->EffectiveAreaCharged();
5904 if(area2>0) density2 = clusterPt2/area2;
5906 medianDensity = 0.5*(density1+density2);
5908 medianCluster = ( (fRandom->Rndm()>0.5) ? medianCluster1 : medianCluster2 ); // select one randomly to avoid adding areas
5911 Int_t nTracksJet = medianCluster->GetRefTracks()->GetEntries();
5913 for(Int_t it = 0; it<nTracksJet; it++){
5915 // embedded tracks - note: using ref tracks here, fBranchRecBckgClusters has to be consistent
5916 if( fUseExtraTracksBgr != 1){
5917 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (medianCluster->GetTrack(it))){
5918 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5919 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5923 AliVParticle* track = dynamic_cast<AliVParticle*>(medianCluster->GetTrack(it));
5924 if(!track) continue;
5926 Float_t trackPt = track->Pt();
5927 Float_t trackEta = track->Eta();
5928 Float_t trackPhi = TVector2::Phi_0_2pi(track->Phi());
5930 if(trackEta < fTrackEtaMin || trackEta > fTrackEtaMax) continue;
5931 if(trackPhi < fTrackPhiMin || trackPhi > fTrackPhiMax) continue;
5932 if(trackPt < fTrackPtCut) continue;
5934 outputlist->Add(track);
5937 Double_t areaMedian = medianCluster->EffectiveAreaCharged();
5938 Double_t areaJet = TMath::Pi()*GetFFRadius()*GetFFRadius();
5940 if(areaMedian) normFactor = (Float_t) 1./(areaJet / areaMedian);
5944 delete[] bgrDensity;
5948 // ______________________________________________________________________________________________________________________________________________________
5949 void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inputtracklist, TList* inputjetlist, AliAODJet* jet, Float_t leadTrackPt, TLorentzVector* leadTrackV,
5950 AliFragFuncHistos* ffbckghistocuts, AliFragFuncHistos* ffbckghistoleading,
5951 AliFragFuncIntraJetHistos* ijbckghistocuts, AliFragFuncIntraJetHistos* ijbckghistoleading,
5952 AliFragFuncQATrackHistos* qabckghistocuts){
5954 // List of tracks outside jets for background study
5955 TList* tracklistout2jets = new TList();
5956 TList* tracklistout3jets = new TList();
5957 TList* tracklistout2jetsStat = new TList();
5958 TList* tracklistout3jetsStat = new TList();
5959 Double_t sumPtOut2Jets = 0.;
5960 Double_t sumPtOut3Jets = 0.;
5961 Double_t sumPtOut2JetsStat = 0.;
5962 Double_t sumPtOut3JetsStat = 0.;
5963 Double_t normFactor2Jets = 0.;
5964 Double_t normFactor3Jets = 0.;
5966 Int_t nRecJetsCuts = fJetsRecCuts->GetEntries();
5968 if(nRecJetsCuts>1) {
5969 GetTracksOutOfNJets(2,inputtracklist, tracklistout2jets, inputjetlist, sumPtOut2Jets);
5970 GetTracksOutOfNJetsStat(2,inputtracklist, tracklistout2jetsStat, inputjetlist,sumPtOut2JetsStat, normFactor2Jets);
5973 if(nRecJetsCuts>2) {
5974 GetTracksOutOfNJets(3,inputtracklist, tracklistout3jets, inputjetlist, sumPtOut3Jets);
5975 GetTracksOutOfNJetsStat(3,inputtracklist, tracklistout3jetsStat, inputjetlist, sumPtOut3JetsStat, normFactor3Jets);
5978 if(type==kBckgOutLJ || type==kBckgOutAJ)
5980 TList* tracklistoutleading = new TList();
5981 Double_t sumPtOutLeading = 0.;
5982 GetTracksOutOfNJets(1,inputtracklist, tracklistoutleading, inputjetlist, sumPtOutLeading);
5983 if(type==kBckgOutLJ) fh1OutLeadingMult->Fill(tracklistoutleading->GetSize());
5985 for(Int_t it=0; it<tracklistoutleading->GetSize(); ++it){
5987 AliVParticle* trackVP = (AliVParticle*)(tracklistoutleading->At(it));
5988 if(!trackVP) continue;
5989 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
5991 Float_t jetPt = jet->Pt();
5992 Float_t trackPt = trackV->Pt();
5994 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
5996 if(type==kBckgOutLJ)
5998 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt);
5999 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6001 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt);
6002 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6004 // Fill track QA for background
6005 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6008 // All cases included
6009 if(nRecJetsCuts==1 && type==kBckgOutAJ)
6011 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6012 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6014 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6015 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6019 // Increment jet pt with one entry in case #tracks outside jets = 0
6020 if(tracklistoutleading->GetSize()==0) {
6021 Float_t jetPt = jet->Pt();
6022 Bool_t incrementJetPt = kTRUE;
6023 if(type==kBckgOutLJ)
6025 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6026 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6028 // All cases included
6029 if(nRecJetsCuts==1 && type==kBckgOutAJ)
6031 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6032 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6035 delete tracklistoutleading;
6037 if(type==kBckgOutLJStat || type==kBckgOutAJStat)
6039 TList* tracklistoutleadingStat = new TList();
6040 Double_t sumPtOutLeadingStat = 0.;
6041 Double_t normFactorLeading = 0.;
6043 GetTracksOutOfNJetsStat(1,inputtracklist, tracklistoutleadingStat, inputjetlist, sumPtOutLeadingStat, normFactorLeading);
6044 if(type==kBckgOutLJStat) fh1OutLeadingStatMult->Fill(tracklistoutleadingStat->GetSize());
6046 for(Int_t it=0; it<tracklistoutleadingStat->GetSize(); ++it){
6048 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistoutleadingStat->At(it));
6049 if(!trackVP) continue;
6050 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6052 Float_t jetPt = jet->Pt();
6053 Float_t trackPt = trackV->Pt();
6054 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6057 if(type==kBckgOutLJStat)
6059 if(fFFMode)ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
6060 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading);
6062 if(fFFMode)ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
6063 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading);
6065 // Fill track QA for background
6066 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt); // OB added bgr QA
6069 // All cases included
6070 if(nRecJetsCuts==1 && type==kBckgOutAJStat)
6072 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
6073 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading );
6075 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
6076 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading );
6078 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6083 // Increment jet pt with one entry in case #tracks outside jets = 0
6084 if(tracklistoutleadingStat->GetSize()==0) {
6085 Float_t jetPt = jet->Pt();
6086 Bool_t incrementJetPt = kTRUE;
6087 if(type==kBckgOutLJStat)
6089 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorLeading);
6090 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorLeading);
6092 // All cases included
6093 if(nRecJetsCuts==1 && type==kBckgOutLJStat)
6095 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorLeading);
6096 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorLeading );
6100 delete tracklistoutleadingStat;
6105 Double_t sumPtPerp = 0.;
6106 TList* tracklistperp = new TList();
6107 GetTracksTiltedwrpJetAxis(TMath::Pi()/2., inputtracklist,tracklistperp,jet,GetFFRadius(),sumPtPerp);
6108 fh1PerpMult->Fill(tracklistperp->GetSize());
6110 for(Int_t it=0; it<tracklistperp->GetSize(); ++it){
6112 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistperp->At(it));
6113 if(!trackVP)continue;
6114 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6116 Float_t jetPt = jet->Pt();
6117 Float_t trackPt = trackV->Pt();
6119 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6121 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6122 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6124 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6125 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6127 // Fill track QA for background
6128 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6132 // Increment jet pt with one entry in case #tracks outside jets = 0
6133 if(tracklistperp->GetSize()==0) {
6134 Float_t jetPt = jet->Pt();
6135 Bool_t incrementJetPt = kTRUE;
6136 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6137 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6140 delete tracklistperp;
6143 if(type==kBckgASide)
6145 Double_t sumPtASide = 0.;
6146 TList* tracklistaside = new TList();
6147 GetTracksTiltedwrpJetAxis(TMath::Pi(),inputtracklist,tracklistaside,jet,GetFFRadius(),sumPtASide);
6148 fh1ASideMult->Fill(tracklistaside->GetSize());
6150 for(Int_t it=0; it<tracklistaside->GetSize(); ++it){
6152 AliVParticle* trackVP = (AliVParticle*)(tracklistaside->At(it));
6153 if(!trackVP) continue;
6154 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6156 Float_t jetPt = jet->Pt();
6157 Float_t trackPt = trackV->Pt();
6159 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6161 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6162 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6164 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6165 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6167 // Fill track QA for background
6168 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6172 if(tracklistaside->GetSize()==0) {
6173 Float_t jetPt = jet->Pt();
6174 Bool_t incrementJetPt = kTRUE;
6175 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6176 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6179 delete tracklistaside;
6182 if(type==kBckgASideWindow)
6184 Double_t normFactorASide = 0.;
6185 Double_t sumPtASideW = 0.;
6186 TList* tracklistasidew = new TList();
6187 GetTracksTiltedwrpJetAxisWindow(TMath::Pi(),inputtracklist,tracklistasidew,jet,GetFFRadius(),sumPtASideW,normFactorASide);
6188 fh1ASideWindowMult->Fill(tracklistasidew->GetSize());
6190 for(Int_t it=0; it<tracklistasidew->GetSize(); ++it){
6192 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistasidew->At(it));
6193 if(!trackVP) continue;
6194 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6196 Float_t jetPt = jet->Pt();
6197 Float_t trackPt = trackV->Pt();
6198 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6200 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorASide);
6201 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorASide);
6203 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorASide );
6204 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorASide );
6206 // Fill track QA for background
6207 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt, kFALSE, normFactorASide);
6211 if(tracklistasidew->GetSize()==0) {
6212 Float_t jetPt = jet->Pt();
6213 Bool_t incrementJetPt = kTRUE;
6214 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorASide);
6215 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorASide);
6218 delete tracklistasidew;
6221 if(type==kBckgPerpWindow)
6223 Double_t normFactorPerp = 0.;
6224 Double_t sumPtPerpW = 0.;
6225 TList* tracklistperpw = new TList();
6226 GetTracksTiltedwrpJetAxisWindow(TMath::Pi()/2.,inputtracklist,tracklistperpw,jet,GetFFRadius(),sumPtPerpW,normFactorPerp);
6227 fh1PerpWindowMult->Fill(tracklistperpw->GetSize());
6229 for(Int_t it=0; it<tracklistperpw->GetSize(); ++it){
6231 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistperpw->At(it));
6232 if(!trackVP) continue;
6233 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6235 Float_t jetPt = jet->Pt();
6236 Float_t trackPt = trackV->Pt();
6237 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6239 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorPerp);
6240 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorPerp);
6242 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorPerp );
6243 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorPerp );
6245 // Fill track QA for background
6246 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt, kFALSE, normFactorPerp);
6250 if(tracklistperpw->GetSize()==0) {
6251 Float_t jetPt = jet->Pt();
6252 Bool_t incrementJetPt = kTRUE;
6253 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorPerp);
6254 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorPerp);
6257 delete tracklistperpw;
6261 if(type==kBckgOut2J || type==kBckgOutAJ)
6263 if(type==kBckgOut2J) fh1Out2JetsMult->Fill(tracklistout2jets->GetSize());
6264 for(Int_t it=0; it<tracklistout2jets->GetSize(); ++it){
6266 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout2jets->At(it));
6267 if(!trackVP) continue;
6268 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6270 Float_t jetPt = jet->Pt();
6271 Float_t trackPt = trackV->Pt();
6273 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6275 if(type==kBckgOut2J)
6277 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6278 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6280 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6281 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6283 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6286 // All cases included
6287 if(nRecJetsCuts==2 && type==kBckgOutAJ)
6289 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6290 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6292 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6293 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6297 // Increment jet pt with one entry in case #tracks outside jets = 0
6298 if(tracklistout2jets->GetSize()==0) {
6299 Float_t jetPt = jet->Pt();
6300 Bool_t incrementJetPt = kTRUE;
6301 if(type==kBckgOut2J)
6303 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6304 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6306 // All cases included
6307 if(nRecJetsCuts==2 && type==kBckgOutAJ)
6309 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6310 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6316 if(type==kBckgOut2JStat || type==kBckgOutAJStat)
6318 for(Int_t it=0; it<tracklistout2jetsStat->GetSize(); ++it){
6320 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout2jetsStat->At(it));
6321 if(!trackVP) continue;
6322 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6324 Float_t jetPt = jet->Pt();
6325 Float_t trackPt = trackV->Pt();
6326 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6328 if(type==kBckgOut2JStat)
6330 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
6331 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
6333 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
6334 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
6336 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6339 // All cases included
6340 if(nRecJetsCuts==2 && type==kBckgOutAJStat)
6342 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
6343 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
6345 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
6346 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
6348 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6352 // Increment jet pt with one entry in case #tracks outside jets = 0
6353 if(tracklistout2jetsStat->GetSize()==0) {
6354 Float_t jetPt = jet->Pt();
6355 Bool_t incrementJetPt = kTRUE;
6356 if(type==kBckgOut2JStat)
6358 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor2Jets);
6359 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor2Jets);
6361 // All cases included
6362 if(nRecJetsCuts==2 && type==kBckgOutAJStat)
6364 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor2Jets);
6365 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor2Jets );
6371 if(type==kBckgOut3J || type==kBckgOutAJ)
6373 if(type==kBckgOut3J) fh1Out3JetsMult->Fill(tracklistout3jets->GetSize());
6375 for(Int_t it=0; it<tracklistout3jets->GetSize(); ++it){
6377 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout3jets->At(it));
6378 if(!trackVP) continue;
6379 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6381 Float_t jetPt = jet->Pt();
6382 Float_t trackPt = trackV->Pt();
6384 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6386 if(type==kBckgOut3J)
6388 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6389 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6391 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6392 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6394 qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6397 // All cases included
6398 if(nRecJetsCuts==3 && type==kBckgOutAJ)
6400 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6401 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6403 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6404 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6408 // Increment jet pt with one entry in case #tracks outside jets = 0
6409 if(tracklistout3jets->GetSize()==0) {
6410 Float_t jetPt = jet->Pt();
6411 Bool_t incrementJetPt = kTRUE;
6412 if(type==kBckgOut3J)
6414 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6415 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6417 // All cases included
6418 if(nRecJetsCuts==3 && type==kBckgOutAJ)
6420 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6421 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6426 if(type==kBckgOut3JStat || type==kBckgOutAJStat)
6428 for(Int_t it=0; it<tracklistout3jetsStat->GetSize(); ++it){
6430 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout3jetsStat->At(it));
6431 if(!trackVP) continue;
6432 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6434 Float_t jetPt = jet->Pt();
6435 Float_t trackPt = trackV->Pt();
6436 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6438 if(type==kBckgOut3JStat)
6440 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets);
6441 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
6443 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets);
6444 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets);
6446 //if(fQAMode&1) qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
6449 // All cases included
6450 if(nRecJetsCuts==3 && type==kBckgOutAJStat)
6452 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets );
6453 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
6455 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets );
6456 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets );
6458 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6463 // Increment jet pt with one entry in case #tracks outside jets = 0
6464 if(tracklistout3jetsStat->GetSize()==0) {
6465 Float_t jetPt = jet->Pt();
6466 Bool_t incrementJetPt = kTRUE;
6467 if(type==kBckgOut3JStat)
6469 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor3Jets);
6470 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor3Jets);
6472 // All cases included
6473 if(nRecJetsCuts==3 && type==kBckgOutAJStat)
6475 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor3Jets);
6476 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor3Jets );
6482 if(type==kBckgClustersOutLeading){ // clusters bgr: all tracks in clusters out of leading jet
6484 TList* tracklistClustersOutLeading = new TList();
6485 Double_t normFactorClusters = 0;
6486 Float_t jetPt = jet->Pt();
6488 GetClusterTracksOutOf1Jet(jet, tracklistClustersOutLeading, normFactorClusters);
6489 fh1OutClustersMult->Fill(tracklistClustersOutLeading->GetSize());
6491 for(Int_t it=0; it<tracklistClustersOutLeading->GetSize(); ++it){
6493 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistClustersOutLeading->At(it));
6494 if(!trackVP) continue;
6495 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6497 Float_t trackPt = trackVP->Pt();
6499 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6501 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorClusters );
6502 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt );
6507 delete tracklistClustersOutLeading;
6511 if(type == kBckgClusters){ // clusters bgr: all tracks in 'median cluster'
6513 TList* tracklistClustersMedian = new TList();
6514 Double_t normFactorClusters = 0;
6515 Float_t jetPt = jet->Pt();
6517 GetClusterTracksMedian(tracklistClustersMedian, normFactorClusters);
6518 fh1MedianClustersMult->Fill(tracklistClustersMedian->GetSize());
6520 for(Int_t it=0; it<tracklistClustersMedian->GetSize(); ++it){
6522 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistClustersMedian->At(it));
6523 if(!trackVP) continue;
6524 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6526 Float_t trackPt = trackVP->Pt();
6528 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6530 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorClusters );
6531 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt );
6536 delete tracklistClustersMedian;
6539 delete tracklistout2jets;
6540 delete tracklistout3jets;
6541 delete tracklistout2jetsStat;
6542 delete tracklistout3jetsStat;
6546 // ______________________________________________________________________________________________________________________________________________________
6547 AliAODJet* AliAnalysisTaskFragmentationFunction::GetAODBckgSubJet(AliAODJet* jet, Int_t method)
6549 // correct jet pt for (mean bgr energy density) x (jet area)
6551 if(!fBranchRecBackJets.Length()){
6552 if(fDebug>0)Printf("%s:%d background branch name not set",(char*)__FILE__,__LINE__);
6556 static AliAODJetEventBackground* externalBackground = (AliAODJetEventBackground*)(fAOD->FindListObject(fBranchRecBackJets.Data()));
6558 if(!externalBackground){
6559 if(fDebug>0)Printf("%s:%d no external background object found in %s",(char*)__FILE__,__LINE__,fBranchRecBackJets.Data());
6563 Float_t rho = externalBackground->GetBackground(method);
6565 // Calculate background and subtract it from jet pt
6566 Float_t ptBack = rho*jet->EffectiveAreaCharged();
6567 Float_t ptSub = jet->Pt()-ptBack;
6569 // Get px, py, pz from eta, phi, pt
6570 TLorentzVector vecSub;
6571 AliAODJet *tmpJet = 0;
6573 vecSub.SetPtEtaPhiM(ptSub,jet->Eta(),jet->Phi(),0.);
6574 tmpJet = new AliAODJet(vecSub.Px(),vecSub.Py(),vecSub.Pz(),vecSub.P());