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)
83 ,fUseExtraTracksBgr(0)
84 ,fCutFractionPtEmbedded(0)
85 ,fUseEmbeddedJetAxis(0)
94 ,fDiJetPtFractionCut(0)
106 ,fUseRecEffRecJetPtBins(0)
107 ,fUseResponseRecJetPtBins(1)
112 ,fTracksAODMCCharged(0)
113 ,fTracksAODMCChargedSec(0)
114 ,fTracksRecQualityCuts(0)
123 ,fQATrackHistosRec(0)
124 ,fQATrackHistosRecCuts(0)
125 ,fQATrackHistosGen(0)
127 ,fQAJetHistosRecCuts(0)
128 ,fQAJetHistosRecCutsLeading(0)
130 ,fQAJetHistosGenLeading(0)
131 ,fQAJetHistosRecEffLeading(0)
133 ,fFFHistosRecLeading(0)
134 ,fFFHistosRecLeadingTrack(0)
136 ,fFFHistosGenLeading(0)
137 ,fFFHistosGenLeadingTrack(0)
139 ,fIJHistosRecLeading(0)
140 ,fIJHistosRecLeadingTrack(0)
142 ,fIJHistosGenLeading(0)
143 ,fIJHistosGenLeadingTrack(0)
144 ,fFFDiJetHistosRecCuts(0)
145 ,fFFDiJetHistosRecLeading(0)
146 ,fFFDiJetHistosRecLeadingTrack(0)
147 ,fFFDiJetHistosGen(0)
148 ,fFFDiJetHistosGenLeading(0)
149 ,fFFDiJetHistosGenLeadingTrack(0)
150 ,fQADiJetHistosRecCuts(0)
151 ,fQADiJetHistosGen(0)
152 ,fPhiCorrHistosJetArea(0)
153 ,fPhiCorrHistosTransverseArea(0)
154 ,fPhiCorrHistosAwayArea(0)
155 ,fQATrackHighPtThreshold(0)
204 ,fDiJetNBinsJetInvMass(0)
205 ,fDiJetJetInvMassMin(0)
206 ,fDiJetJetInvMassMax(0)
219 ,fQADiJetNBinsInvMass(0)
220 ,fQADiJetInvMassMin(0)
221 ,fQADiJetInvMassMax(0)
222 ,fQADiJetNBinsJetPt(0)
225 ,fQADiJetNBinsDeltaPhi(0)
226 ,fQADiJetDeltaPhiMin(0)
227 ,fQADiJetDeltaPhiMax(0)
228 ,fQADiJetNBinsDeltaEta(0)
229 ,fQADiJetDeltaEtaMin(0)
230 ,fQADiJetDeltaEtaMax(0)
231 ,fQADiJetNBinsDeltaPt(0)
232 ,fQADiJetDeltaPtMin(0)
233 ,fQADiJetDeltaPtMax(0)
234 ,fQADiJetNBinsInBal(0)
248 ,fh1VertexNContributors(0)
252 ,fh2TrackPtVsDCAXY(0)
262 ,fh1nRecBckgJetsCuts(0)
264 ,fh2PtRecVsGenPrim(0)
266 ,fQATrackHistosRecEffGen(0)
267 ,fQATrackHistosRecEffRec(0)
268 ,fQATrackHistosSecRec(0)
269 ,fFFHistosRecEffGen(0)
270 ,fFFHistosRecEffRec(0)
272 ,fhnResponseSinglePt(0)
273 ,fh2SingleInvPtRecMnGenVsPtGen(0)
274 ,fhnResponseJetTrackPt(0)
278 ,fh1OutLeadingMult(0)
279 ,fh1OutLeadingStatMult(0)
282 ,fh1ASideWindowMult(0)
283 ,fh1PerpWindowMult(0)
286 ,fh1MedianClustersMult(0)
287 ,fh1OutClustersMult(0)
288 ,fh1FractionPtEmbedded(0)
290 ,fh2DeltaPtVsJetPtEmbedded(0)
291 ,fh2DeltaPtVsRecJetPtEmbedded(0)
292 ,fh1DeltaREmbedded(0)
293 ,fh2ptVsDistNN_pt50_rec(0)
294 ,fh2ptVsDistNN_pt50_nonRec(0)
295 ,fh2ptVsDistNN_pt10_rec(0)
296 ,fh2ptVsDistNN_pt10_nonRec(0)
297 ,fQABckgHisto0RecCuts(0)
299 ,fQABckgHisto1RecCuts(0)
301 ,fQABckgHisto2RecCuts(0)
303 ,fQABckgHisto3RecCuts(0)
305 ,fQABckgHisto4RecCuts(0)
307 ,fFFBckgHisto0RecCuts(0)
308 ,fFFBckgHisto0RecLeading(0)
310 ,fFFBckgHisto0GenLeading(0)
311 ,fFFBckgHisto1RecCuts(0)
312 ,fFFBckgHisto1RecLeading(0)
314 ,fFFBckgHisto1GenLeading(0)
315 ,fFFBckgHisto2RecCuts(0)
316 ,fFFBckgHisto2RecLeading(0)
318 ,fFFBckgHisto2GenLeading(0)
319 ,fFFBckgHisto3RecCuts(0)
320 ,fFFBckgHisto3RecLeading(0)
322 ,fFFBckgHisto3GenLeading(0)
323 ,fFFBckgHisto4RecCuts(0)
324 ,fFFBckgHisto4RecLeading(0)
326 ,fFFBckgHisto4GenLeading(0)
327 ,fIJBckgHisto0RecCuts(0)
328 ,fIJBckgHisto0RecLeading(0)
330 ,fIJBckgHisto0GenLeading(0)
331 ,fIJBckgHisto1RecCuts(0)
332 ,fIJBckgHisto1RecLeading(0)
334 ,fIJBckgHisto1GenLeading(0)
335 ,fIJBckgHisto2RecCuts(0)
336 ,fIJBckgHisto2RecLeading(0)
338 ,fIJBckgHisto2GenLeading(0)
339 ,fIJBckgHisto3RecCuts(0)
340 ,fIJBckgHisto3RecLeading(0)
342 ,fIJBckgHisto3GenLeading(0)
343 ,fIJBckgHisto4RecCuts(0)
344 ,fIJBckgHisto4RecLeading(0)
346 ,fIJBckgHisto4GenLeading(0)
350 // default constructor
358 //__________________________________________________________________________________________
359 AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const char *name)
360 : AliAnalysisTaskSE(name)
366 ,fBranchRecJets("jets")
367 ,fBranchRecBackJets("")
368 ,fBranchRecBckgClusters("")
370 ,fBranchEmbeddedJets("")
374 ,fUseAODInputJets(kTRUE)
376 ,fUsePhysicsSelection(kTRUE)
385 ,fUseExtraTracksBgr(0)
386 ,fCutFractionPtEmbedded(0)
387 ,fUseEmbeddedJetAxis(0)
388 ,fUseEmbeddedJetPt(0)
395 ,fDiJetDeltaPhiCut(0)
396 ,fDiJetPtFractionCut(0)
408 ,fUseRecEffRecJetPtBins(0)
409 ,fUseResponseRecJetPtBins(1)
414 ,fTracksAODMCCharged(0)
415 ,fTracksAODMCChargedSec(0)
416 ,fTracksRecQualityCuts(0)
425 ,fQATrackHistosRec(0)
426 ,fQATrackHistosRecCuts(0)
427 ,fQATrackHistosGen(0)
429 ,fQAJetHistosRecCuts(0)
430 ,fQAJetHistosRecCutsLeading(0)
432 ,fQAJetHistosGenLeading(0)
433 ,fQAJetHistosRecEffLeading(0)
435 ,fFFHistosRecLeading(0)
436 ,fFFHistosRecLeadingTrack(0)
438 ,fFFHistosGenLeading(0)
439 ,fFFHistosGenLeadingTrack(0)
441 ,fIJHistosRecLeading(0)
442 ,fIJHistosRecLeadingTrack(0)
444 ,fIJHistosGenLeading(0)
445 ,fIJHistosGenLeadingTrack(0)
446 ,fFFDiJetHistosRecCuts(0)
447 ,fFFDiJetHistosRecLeading(0)
448 ,fFFDiJetHistosRecLeadingTrack(0)
449 ,fFFDiJetHistosGen(0)
450 ,fFFDiJetHistosGenLeading(0)
451 ,fFFDiJetHistosGenLeadingTrack(0)
452 ,fQADiJetHistosRecCuts(0)
453 ,fQADiJetHistosGen(0)
454 ,fPhiCorrHistosJetArea(0)
455 ,fPhiCorrHistosTransverseArea(0)
456 ,fPhiCorrHistosAwayArea(0)
457 ,fQATrackHighPtThreshold(0)
506 ,fDiJetNBinsJetInvMass(0)
507 ,fDiJetJetInvMassMin(0)
508 ,fDiJetJetInvMassMax(0)
521 ,fQADiJetNBinsInvMass(0)
522 ,fQADiJetInvMassMin(0)
523 ,fQADiJetInvMassMax(0)
524 ,fQADiJetNBinsJetPt(0)
527 ,fQADiJetNBinsDeltaPhi(0)
528 ,fQADiJetDeltaPhiMin(0)
529 ,fQADiJetDeltaPhiMax(0)
530 ,fQADiJetNBinsDeltaEta(0)
531 ,fQADiJetDeltaEtaMin(0)
532 ,fQADiJetDeltaEtaMax(0)
533 ,fQADiJetNBinsDeltaPt(0)
534 ,fQADiJetDeltaPtMin(0)
535 ,fQADiJetDeltaPtMax(0)
536 ,fQADiJetNBinsInBal(0)
550 ,fh1VertexNContributors(0)
554 ,fh2TrackPtVsDCAXY(0)
564 ,fh1nRecBckgJetsCuts(0)
566 ,fh2PtRecVsGenPrim(0)
568 ,fQATrackHistosRecEffGen(0)
569 ,fQATrackHistosRecEffRec(0)
570 ,fQATrackHistosSecRec(0)
571 ,fFFHistosRecEffGen(0)
572 ,fFFHistosRecEffRec(0)
574 ,fhnResponseSinglePt(0)
575 ,fh2SingleInvPtRecMnGenVsPtGen(0)
576 ,fhnResponseJetTrackPt(0)
580 ,fh1OutLeadingMult(0)
581 ,fh1OutLeadingStatMult(0)
584 ,fh1ASideWindowMult(0)
585 ,fh1PerpWindowMult(0)
588 ,fh1MedianClustersMult(0)
589 ,fh1OutClustersMult(0)
590 ,fh1FractionPtEmbedded(0)
592 ,fh2DeltaPtVsJetPtEmbedded(0)
593 ,fh2DeltaPtVsRecJetPtEmbedded(0)
594 ,fh1DeltaREmbedded(0)
595 ,fh2ptVsDistNN_pt50_rec(0)
596 ,fh2ptVsDistNN_pt50_nonRec(0)
597 ,fh2ptVsDistNN_pt10_rec(0)
598 ,fh2ptVsDistNN_pt10_nonRec(0)
599 ,fQABckgHisto0RecCuts(0)
601 ,fQABckgHisto1RecCuts(0)
603 ,fQABckgHisto2RecCuts(0)
605 ,fQABckgHisto3RecCuts(0)
607 ,fQABckgHisto4RecCuts(0)
609 ,fFFBckgHisto0RecCuts(0)
610 ,fFFBckgHisto0RecLeading(0)
612 ,fFFBckgHisto0GenLeading(0)
613 ,fFFBckgHisto1RecCuts(0)
614 ,fFFBckgHisto1RecLeading(0)
616 ,fFFBckgHisto1GenLeading(0)
617 ,fFFBckgHisto2RecCuts(0)
618 ,fFFBckgHisto2RecLeading(0)
620 ,fFFBckgHisto2GenLeading(0)
621 ,fFFBckgHisto3RecCuts(0)
622 ,fFFBckgHisto3RecLeading(0)
624 ,fFFBckgHisto3GenLeading(0)
625 ,fFFBckgHisto4RecCuts(0)
626 ,fFFBckgHisto4RecLeading(0)
628 ,fFFBckgHisto4GenLeading(0)
629 ,fIJBckgHisto0RecCuts(0)
630 ,fIJBckgHisto0RecLeading(0)
632 ,fIJBckgHisto0GenLeading(0)
633 ,fIJBckgHisto1RecCuts(0)
634 ,fIJBckgHisto1RecLeading(0)
636 ,fIJBckgHisto1GenLeading(0)
637 ,fIJBckgHisto2RecCuts(0)
638 ,fIJBckgHisto2RecLeading(0)
640 ,fIJBckgHisto2GenLeading(0)
641 ,fIJBckgHisto3RecCuts(0)
642 ,fIJBckgHisto3RecLeading(0)
644 ,fIJBckgHisto3GenLeading(0)
645 ,fIJBckgHisto4RecCuts(0)
646 ,fIJBckgHisto4RecLeading(0)
648 ,fIJBckgHisto4GenLeading(0)
659 DefineOutput(1,TList::Class());
664 //__________________________________________________________________________________________________________________________
665 AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const AliAnalysisTaskFragmentationFunction ©)
666 : AliAnalysisTaskSE()
669 ,fAODJets(copy.fAODJets)
670 ,fAODExtension(copy.fAODExtension)
671 ,fNonStdFile(copy.fNonStdFile)
672 ,fBranchRecJets(copy.fBranchRecJets)
673 ,fBranchRecBackJets(copy.fBranchRecBackJets)
674 ,fBranchRecBckgClusters(copy.fBranchRecBckgClusters)
675 ,fBranchGenJets(copy.fBranchGenJets)
676 ,fBranchEmbeddedJets(copy.fBranchEmbeddedJets)
677 ,fTrackTypeGen(copy.fTrackTypeGen)
678 ,fJetTypeGen(copy.fJetTypeGen)
679 ,fJetTypeRecEff(copy.fJetTypeRecEff)
680 ,fUseAODInputJets(copy.fUseAODInputJets)
681 ,fFilterMask(copy.fFilterMask)
682 ,fUsePhysicsSelection(copy.fUsePhysicsSelection)
683 ,fEventClass(copy.fEventClass)
684 ,fMaxVertexZ(copy.fMaxVertexZ)
685 ,fTrackPtCut(copy.fTrackPtCut)
686 ,fTrackEtaMin(copy.fTrackEtaMin)
687 ,fTrackEtaMax(copy.fTrackEtaMax)
688 ,fTrackPhiMin(copy.fTrackPhiMin)
689 ,fTrackPhiMax(copy.fTrackPhiMax)
690 ,fUseExtraTracks(copy.fUseExtraTracks)
691 ,fUseExtraTracksBgr(copy.fUseExtraTracksBgr)
692 ,fCutFractionPtEmbedded(copy.fCutFractionPtEmbedded)
693 ,fUseEmbeddedJetAxis(copy.fUseEmbeddedJetAxis)
694 ,fUseEmbeddedJetPt(copy.fUseEmbeddedJetPt)
695 ,fJetPtCut(copy.fJetPtCut)
696 ,fJetEtaMin(copy.fJetEtaMin)
697 ,fJetEtaMax(copy.fJetEtaMax)
698 ,fJetPhiMin(copy.fJetPhiMin)
699 ,fJetPhiMax(copy.fJetPhiMax)
700 ,fDiJetCut(copy.fDiJetCut)
701 ,fDiJetDeltaPhiCut(copy.fDiJetDeltaPhiCut)
702 ,fDiJetPtFractionCut(copy.fDiJetPtFractionCut)
703 ,fDiJetCDFCut(copy.fDiJetCDFCut)
704 ,fDiJetKindBins(copy.fDiJetKindBins)
705 ,fFFRadius(copy.fFFRadius)
706 ,fFFBckgRadius(copy.fFFBckgRadius)
707 ,fBckgMode(copy.fBckgMode)
708 ,fIJMode(copy.fIJMode)
709 ,fQAMode(copy.fQAMode)
710 ,fFFMode(copy.fFFMode)
711 ,fDJMode(copy.fDJMode)
712 ,fEffMode(copy.fEffMode)
713 ,fPhiCorrMode(copy.fPhiCorrMode)
714 ,fUseRecEffRecJetPtBins(copy.fUseRecEffRecJetPtBins)
715 ,fUseResponseRecJetPtBins(copy.fUseResponseRecJetPtBins)
716 ,fAvgTrials(copy.fAvgTrials)
717 ,fTracksRec(copy.fTracksRec)
718 ,fTracksRecCuts(copy.fTracksRecCuts)
719 ,fTracksGen(copy.fTracksGen)
720 ,fTracksAODMCCharged(copy.fTracksAODMCCharged)
721 ,fTracksAODMCChargedSec(copy.fTracksAODMCChargedSec)
722 ,fTracksRecQualityCuts(copy.fTracksRecQualityCuts)
723 ,fJetsRec(copy.fJetsRec)
724 ,fJetsRecCuts(copy.fJetsRecCuts)
725 ,fJetsGen(copy.fJetsGen)
726 ,fJetsRecEff(copy.fJetsRecEff)
727 ,fJetsEmbedded(copy.fJetsEmbedded)
728 ,fBckgJetsRec(copy.fBckgJetsRec)
729 ,fBckgJetsRecCuts(copy.fBckgJetsRecCuts)
730 ,fBckgJetsGen(copy.fBckgJetsGen)
731 ,fQATrackHistosRec(copy.fQATrackHistosRec)
732 ,fQATrackHistosRecCuts(copy.fQATrackHistosRecCuts)
733 ,fQATrackHistosGen(copy.fQATrackHistosGen)
734 ,fQAJetHistosRec(copy.fQAJetHistosRec)
735 ,fQAJetHistosRecCuts(copy.fQAJetHistosRecCuts)
736 ,fQAJetHistosRecCutsLeading(copy.fQAJetHistosRecCutsLeading)
737 ,fQAJetHistosGen(copy.fQAJetHistosGen)
738 ,fQAJetHistosGenLeading(copy.fQAJetHistosGenLeading)
739 ,fQAJetHistosRecEffLeading(copy.fQAJetHistosRecEffLeading)
740 ,fFFHistosRecCuts(copy.fFFHistosRecCuts)
741 ,fFFHistosRecLeading(copy.fFFHistosRecLeading)
742 ,fFFHistosRecLeadingTrack(copy.fFFHistosRecLeadingTrack)
743 ,fFFHistosGen(copy.fFFHistosGen)
744 ,fFFHistosGenLeading(copy.fFFHistosGenLeading)
745 ,fFFHistosGenLeadingTrack(copy.fFFHistosGenLeadingTrack)
746 ,fIJHistosRecCuts(copy.fIJHistosRecCuts)
747 ,fIJHistosRecLeading(copy.fIJHistosRecLeading)
748 ,fIJHistosRecLeadingTrack(copy.fIJHistosRecLeadingTrack)
749 ,fIJHistosGen(copy.fIJHistosGen)
750 ,fIJHistosGenLeading(copy.fIJHistosGenLeading)
751 ,fIJHistosGenLeadingTrack(copy.fIJHistosGenLeadingTrack)
752 ,fFFDiJetHistosRecCuts(copy.fFFDiJetHistosRecCuts)
753 ,fFFDiJetHistosRecLeading(copy.fFFDiJetHistosRecLeading)
754 ,fFFDiJetHistosRecLeadingTrack(copy.fFFDiJetHistosRecLeadingTrack)
755 ,fFFDiJetHistosGen(copy.fFFDiJetHistosGen)
756 ,fFFDiJetHistosGenLeading(copy.fFFDiJetHistosGenLeading)
757 ,fFFDiJetHistosGenLeadingTrack(copy.fFFDiJetHistosGenLeadingTrack)
758 ,fQADiJetHistosRecCuts(copy.fQADiJetHistosRecCuts)
759 ,fQADiJetHistosGen(copy.fQADiJetHistosGen)
760 ,fPhiCorrHistosJetArea(copy.fPhiCorrHistosJetArea)
761 ,fPhiCorrHistosTransverseArea(copy.fPhiCorrHistosTransverseArea)
762 ,fPhiCorrHistosAwayArea(copy.fPhiCorrHistosAwayArea)
763 ,fQATrackHighPtThreshold(copy.fQATrackHighPtThreshold)
764 ,fFFNBinsJetPt(copy.fFFNBinsJetPt)
765 ,fFFJetPtMin(copy.fFFJetPtMin)
766 ,fFFJetPtMax(copy.fFFJetPtMax)
767 ,fFFNBinsPt(copy.fFFNBinsPt)
768 ,fFFPtMin(copy.fFFPtMin)
769 ,fFFPtMax(copy.fFFPtMax)
770 ,fFFNBinsXi(copy.fFFNBinsXi)
771 ,fFFXiMin(copy.fFFXiMin)
772 ,fFFXiMax(copy.fFFXiMax)
773 ,fFFNBinsZ(copy.fFFNBinsZ)
774 ,fFFZMin(copy.fFFZMin)
775 ,fFFZMax(copy.fFFZMax)
776 ,fQAJetNBinsPt(copy.fQAJetNBinsPt)
777 ,fQAJetPtMin(copy.fQAJetPtMin)
778 ,fQAJetPtMax(copy.fQAJetPtMax)
779 ,fQAJetNBinsEta(copy.fQAJetNBinsEta)
780 ,fQAJetEtaMin(copy.fQAJetEtaMin)
781 ,fQAJetEtaMax(copy.fQAJetEtaMax)
782 ,fQAJetNBinsPhi(copy.fQAJetNBinsPhi)
783 ,fQAJetPhiMin(copy.fQAJetPhiMin)
784 ,fQAJetPhiMax(copy.fQAJetPhiMax)
785 ,fQATrackNBinsPt(copy.fQATrackNBinsPt)
786 ,fQATrackPtMin(copy.fQATrackPtMin)
787 ,fQATrackPtMax(copy.fQATrackPtMax)
788 ,fQATrackNBinsEta(copy.fQATrackNBinsEta)
789 ,fQATrackEtaMin(copy.fQATrackEtaMin)
790 ,fQATrackEtaMax(copy.fQATrackEtaMax)
791 ,fQATrackNBinsPhi(copy.fQATrackNBinsPhi)
792 ,fQATrackPhiMin(copy.fQATrackPhiMin)
793 ,fQATrackPhiMax(copy.fQATrackPhiMax)
794 ,fIJNBinsJetPt(copy.fIJNBinsJetPt)
795 ,fIJJetPtMin(copy.fIJJetPtMin)
796 ,fIJJetPtMax(copy.fIJJetPtMax)
797 ,fIJNBinsPt(copy.fIJNBinsPt)
798 ,fIJPtMin(copy.fIJPtMin)
799 ,fIJPtMax(copy.fIJPtMax)
800 ,fIJNBinsZ(copy.fIJNBinsZ)
801 ,fIJZMin(copy.fIJZMin)
802 ,fIJZMax(copy.fIJZMax)
803 ,fIJNBinsCosTheta(copy.fIJNBinsCosTheta)
804 ,fIJCosThetaMin(copy.fIJCosThetaMin)
805 ,fIJCosThetaMax(copy.fIJCosThetaMax)
806 ,fIJNBinsTheta(copy.fIJNBinsTheta)
807 ,fIJThetaMin(copy.fIJThetaMin)
808 ,fIJThetaMax(copy.fIJThetaMax)
809 ,fIJNBinsJt(copy.fIJNBinsJt)
810 ,fIJJtMin(copy.fIJJtMin)
811 ,fIJJtMax(copy.fIJJtMax)
812 ,fDiJetNBinsJetInvMass(copy.fDiJetNBinsJetInvMass)
813 ,fDiJetJetInvMassMin(copy.fDiJetJetInvMassMin)
814 ,fDiJetJetInvMassMax(copy.fDiJetJetInvMassMax)
815 ,fDiJetNBinsJetPt(copy.fDiJetNBinsJetPt)
816 ,fDiJetJetPtMin(copy.fDiJetJetPtMin)
817 ,fDiJetJetPtMax(copy.fDiJetJetPtMax)
818 ,fDiJetNBinsPt(copy.fDiJetNBinsPt)
819 ,fDiJetPtMin(copy.fDiJetPtMin)
820 ,fDiJetPtMax(copy.fDiJetPtMax)
821 ,fDiJetNBinsXi(copy.fDiJetNBinsXi)
822 ,fDiJetXiMin(copy.fDiJetXiMin)
823 ,fDiJetXiMax(copy.fDiJetXiMax)
824 ,fDiJetNBinsZ(copy.fDiJetNBinsZ)
825 ,fDiJetZMin(copy.fDiJetZMin)
826 ,fDiJetZMax(copy.fDiJetZMax)
827 ,fQADiJetNBinsInvMass(copy.fQADiJetNBinsInvMass)
828 ,fQADiJetInvMassMin(copy.fQADiJetInvMassMin)
829 ,fQADiJetInvMassMax(copy.fQADiJetInvMassMax)
830 ,fQADiJetNBinsJetPt(copy.fQADiJetNBinsJetPt)
831 ,fQADiJetJetPtMin(copy.fQADiJetJetPtMin)
832 ,fQADiJetJetPtMax(copy.fQADiJetJetPtMax)
833 ,fQADiJetNBinsDeltaPhi(copy.fQADiJetNBinsDeltaPhi)
834 ,fQADiJetDeltaPhiMin(copy.fQADiJetDeltaPhiMin)
835 ,fQADiJetDeltaPhiMax(copy.fQADiJetDeltaPhiMax)
836 ,fQADiJetNBinsDeltaEta(copy.fQADiJetNBinsDeltaEta)
837 ,fQADiJetDeltaEtaMin(copy.fQADiJetDeltaEtaMin)
838 ,fQADiJetDeltaEtaMax(copy.fQADiJetDeltaEtaMax)
839 ,fQADiJetNBinsDeltaPt(copy.fQADiJetNBinsDeltaPt)
840 ,fQADiJetDeltaPtMin(copy.fQADiJetDeltaPtMin)
841 ,fQADiJetDeltaPtMax(copy.fQADiJetDeltaPtMax)
842 ,fQADiJetNBinsInBal(copy.fQADiJetNBinsInBal)
843 ,fQADiJetInBalMin(copy.fQADiJetInBalMin)
844 ,fQADiJetInBalMax(copy.fQADiJetInBalMax)
845 ,fPhiCorrNBinsPt(copy.fPhiCorrNBinsPt)
846 ,fPhiCorrPtMin(copy.fPhiCorrPtMin)
847 ,fPhiCorrPtMax(copy.fPhiCorrPtMax)
848 ,fPhiCorrNBinsEta(copy.fPhiCorrNBinsEta)
849 ,fPhiCorrEtaMin(copy.fPhiCorrEtaMin)
850 ,fPhiCorrEtaMax(copy.fPhiCorrEtaMax)
851 ,fPhiCorrNBinsPhi(copy.fPhiCorrNBinsPhi)
852 ,fPhiCorrPhiMin(copy.fPhiCorrPhiMin)
853 ,fPhiCorrPhiMax(copy.fPhiCorrPhiMax)
854 ,fCommonHistList(copy.fCommonHistList)
855 ,fh1EvtSelection(copy.fh1EvtSelection)
856 ,fh1VertexNContributors(copy.fh1VertexNContributors)
857 ,fh1VertexZ(copy.fh1VertexZ)
858 ,fh1EvtMult(copy.fh1EvtMult)
859 ,fh1EvtCent(copy.fh1EvtCent)
860 ,fh2TrackPtVsDCAXY(copy.fh2TrackPtVsDCAXY)
861 ,fh2TrackPtVsDCAZ(copy.fh2TrackPtVsDCAXY)
862 ,fh1Xsec(copy.fh1Xsec)
863 ,fh1Trials(copy.fh1Trials)
864 ,fh1PtHard(copy.fh1PtHard)
865 ,fh1PtHardTrials(copy.fh1PtHardTrials)
866 ,fh1nRecJetsCuts(copy.fh1nRecJetsCuts)
867 ,fh1nGenJets(copy.fh1nGenJets)
868 ,fh1nRecEffJets(copy.fh1nRecEffJets)
869 ,fh1nEmbeddedJets(copy.fh1nEmbeddedJets)
870 ,fh1nRecBckgJetsCuts(copy.fh1nRecBckgJetsCuts)
871 ,fh1nGenBckgJets(copy.fh1nGenBckgJets)
872 ,fh2PtRecVsGenPrim(copy.fh2PtRecVsGenPrim)
873 ,fh2PtRecVsGenSec(copy.fh2PtRecVsGenSec)
874 ,fQATrackHistosRecEffGen(copy.fQATrackHistosRecEffGen)
875 ,fQATrackHistosRecEffRec(copy.fQATrackHistosRecEffRec)
876 ,fQATrackHistosSecRec(copy.fQATrackHistosSecRec)
877 ,fFFHistosRecEffGen(copy.fFFHistosRecEffGen)
878 ,fFFHistosRecEffRec(copy.fFFHistosRecEffRec)
879 ,fFFHistosSecRec(copy.fFFHistosSecRec)
880 ,fhnResponseSinglePt(copy.fhnResponseSinglePt)
881 ,fh2SingleInvPtRecMnGenVsPtGen(copy.fh2SingleInvPtRecMnGenVsPtGen)
882 ,fhnResponseJetTrackPt(copy.fhnResponseJetTrackPt)
883 ,fhnResponseJetZ(copy.fhnResponseJetZ)
884 ,fhnResponseJetXi(copy.fhnResponseJetXi)
886 ,fh1OutLeadingMult(copy.fh1OutLeadingMult)
887 ,fh1OutLeadingStatMult(copy.fh1OutLeadingStatMult)
888 ,fh1PerpMult(copy.fh1PerpMult)
889 ,fh1ASideMult(copy.fh1ASideMult)
890 ,fh1ASideWindowMult(copy.fh1ASideWindowMult)
891 ,fh1PerpWindowMult(copy.fh1PerpWindowMult)
892 ,fh1Out2JetsMult(copy.fh1Out2JetsMult)
893 ,fh1Out3JetsMult(copy.fh1Out3JetsMult)
894 ,fh1MedianClustersMult(copy.fh1MedianClustersMult)
895 ,fh1OutClustersMult(copy.fh1OutClustersMult)
896 ,fh1FractionPtEmbedded(copy.fh1FractionPtEmbedded)
897 ,fh1IndexEmbedded(copy.fh1IndexEmbedded)
898 ,fh2DeltaPtVsJetPtEmbedded(copy.fh2DeltaPtVsJetPtEmbedded)
899 ,fh2DeltaPtVsRecJetPtEmbedded(copy.fh2DeltaPtVsRecJetPtEmbedded)
900 ,fh1DeltaREmbedded(copy.fh1DeltaREmbedded)
901 ,fh2ptVsDistNN_pt50_rec(copy.fh2ptVsDistNN_pt50_rec)
902 ,fh2ptVsDistNN_pt50_nonRec(copy.fh2ptVsDistNN_pt50_nonRec)
903 ,fh2ptVsDistNN_pt10_rec(copy.fh2ptVsDistNN_pt10_rec)
904 ,fh2ptVsDistNN_pt10_nonRec(copy.fh2ptVsDistNN_pt10_nonRec)
905 ,fQABckgHisto0RecCuts(copy.fQABckgHisto0RecCuts)
906 ,fQABckgHisto0Gen(copy.fQABckgHisto0Gen)
907 ,fQABckgHisto1RecCuts(copy.fQABckgHisto1RecCuts)
908 ,fQABckgHisto1Gen(copy.fQABckgHisto1Gen)
909 ,fQABckgHisto2RecCuts(copy.fQABckgHisto2RecCuts)
910 ,fQABckgHisto2Gen(copy.fQABckgHisto2Gen)
911 ,fQABckgHisto3RecCuts(copy.fQABckgHisto3RecCuts)
912 ,fQABckgHisto3Gen(copy.fQABckgHisto3Gen)
913 ,fQABckgHisto4RecCuts(copy.fQABckgHisto4RecCuts)
914 ,fQABckgHisto4Gen(copy.fQABckgHisto4Gen)
915 ,fFFBckgHisto0RecCuts(copy.fFFBckgHisto0RecCuts)
916 ,fFFBckgHisto0RecLeading(copy.fFFBckgHisto0RecLeading)
917 ,fFFBckgHisto0Gen(copy.fFFBckgHisto0Gen)
918 ,fFFBckgHisto0GenLeading(copy.fFFBckgHisto0GenLeading)
919 ,fFFBckgHisto1RecCuts(copy.fFFBckgHisto1RecCuts)
920 ,fFFBckgHisto1RecLeading(copy.fFFBckgHisto1RecLeading)
921 ,fFFBckgHisto1Gen(copy.fFFBckgHisto1Gen)
922 ,fFFBckgHisto1GenLeading(copy.fFFBckgHisto1GenLeading)
923 ,fFFBckgHisto2RecCuts(copy.fFFBckgHisto2RecCuts)
924 ,fFFBckgHisto2RecLeading(copy.fFFBckgHisto2RecLeading)
925 ,fFFBckgHisto2Gen(copy.fFFBckgHisto2Gen)
926 ,fFFBckgHisto2GenLeading(copy.fFFBckgHisto2GenLeading)
927 ,fFFBckgHisto3RecCuts(copy.fFFBckgHisto3RecCuts)
928 ,fFFBckgHisto3RecLeading(copy.fFFBckgHisto3RecLeading)
929 ,fFFBckgHisto3Gen(copy.fFFBckgHisto3Gen)
930 ,fFFBckgHisto3GenLeading(copy.fFFBckgHisto3GenLeading)
931 ,fFFBckgHisto4RecCuts(copy.fFFBckgHisto4RecCuts)
932 ,fFFBckgHisto4RecLeading(copy.fFFBckgHisto4RecLeading)
933 ,fFFBckgHisto4Gen(copy.fFFBckgHisto4Gen)
934 ,fFFBckgHisto4GenLeading(copy.fFFBckgHisto4GenLeading)
935 ,fIJBckgHisto0RecCuts(copy.fIJBckgHisto0RecCuts)
936 ,fIJBckgHisto0RecLeading(copy.fIJBckgHisto0RecLeading)
937 ,fIJBckgHisto0Gen(copy.fIJBckgHisto0Gen)
938 ,fIJBckgHisto0GenLeading(copy.fIJBckgHisto0GenLeading)
939 ,fIJBckgHisto1RecCuts(copy.fIJBckgHisto1RecCuts)
940 ,fIJBckgHisto1RecLeading(copy.fIJBckgHisto1RecLeading)
941 ,fIJBckgHisto1Gen(copy.fIJBckgHisto1Gen)
942 ,fIJBckgHisto1GenLeading(copy.fIJBckgHisto1GenLeading)
943 ,fIJBckgHisto2RecCuts(copy.fIJBckgHisto2RecCuts)
944 ,fIJBckgHisto2RecLeading(copy.fIJBckgHisto2RecLeading)
945 ,fIJBckgHisto2Gen(copy.fIJBckgHisto2Gen)
946 ,fIJBckgHisto2GenLeading(copy.fIJBckgHisto2GenLeading)
947 ,fIJBckgHisto3RecCuts(copy.fIJBckgHisto3RecCuts)
948 ,fIJBckgHisto3RecLeading(copy.fIJBckgHisto3RecLeading)
949 ,fIJBckgHisto3Gen(copy.fIJBckgHisto3Gen)
950 ,fIJBckgHisto3GenLeading(copy.fIJBckgHisto3GenLeading)
951 ,fIJBckgHisto4RecCuts(copy.fIJBckgHisto4RecCuts)
952 ,fIJBckgHisto4RecLeading(copy.fIJBckgHisto4RecLeading)
953 ,fIJBckgHisto4Gen(copy.fIJBckgHisto4Gen)
954 ,fIJBckgHisto4GenLeading(copy.fIJBckgHisto4GenLeading)
955 ,fRandom(copy.fRandom)
956 ,fBckgSubMethod(copy.fBckgSubMethod)
959 fBckgType[0] = copy.fBckgType[0];
960 fBckgType[1] = copy.fBckgType[1];
961 fBckgType[2] = copy.fBckgType[2];
962 fBckgType[3] = copy.fBckgType[3];
963 fBckgType[4] = copy.fBckgType[4];
966 // _________________________________________________________________________________________________________________________________
967 AliAnalysisTaskFragmentationFunction& AliAnalysisTaskFragmentationFunction::operator=(const AliAnalysisTaskFragmentationFunction& o)
973 AliAnalysisTaskSE::operator=(o);
976 fAODJets = o.fAODJets;
977 fAODExtension = o.fAODExtension;
978 fNonStdFile = o.fNonStdFile;
979 fBranchRecJets = o.fBranchRecJets;
980 fBranchRecBackJets = o.fBranchRecBackJets;
981 fBranchRecBckgClusters = o.fBranchRecBckgClusters;
982 fBranchGenJets = o.fBranchGenJets;
983 fBranchEmbeddedJets = o.fBranchEmbeddedJets;
984 fTrackTypeGen = o.fTrackTypeGen;
985 fJetTypeGen = o.fJetTypeGen;
986 fJetTypeRecEff = o.fJetTypeRecEff;
987 fUseAODInputJets = o.fUseAODInputJets;
988 fFilterMask = o.fFilterMask;
989 fUsePhysicsSelection = o.fUsePhysicsSelection;
990 fEventClass = o.fEventClass;
991 fMaxVertexZ = o.fMaxVertexZ;
992 fTrackPtCut = o.fTrackPtCut;
993 fTrackEtaMin = o.fTrackEtaMin;
994 fTrackEtaMax = o.fTrackEtaMax;
995 fTrackPhiMin = o.fTrackPhiMin;
996 fTrackPhiMax = o.fTrackPhiMax;
997 fUseExtraTracks = o.fUseExtraTracks;
998 fUseExtraTracksBgr = o.fUseExtraTracksBgr;
999 fCutFractionPtEmbedded = o.fCutFractionPtEmbedded;
1000 fUseEmbeddedJetAxis = o.fUseEmbeddedJetAxis;
1001 fUseEmbeddedJetPt = o.fUseEmbeddedJetPt;
1002 fJetPtCut = o.fJetPtCut;
1003 fJetEtaMin = o.fJetEtaMin;
1004 fJetEtaMax = o.fJetEtaMax;
1005 fJetPhiMin = o.fJetPhiMin;
1006 fJetPhiMax = o.fJetPhiMin;
1007 fDiJetCut = o.fDiJetCut;
1008 fDiJetDeltaPhiCut = o.fDiJetDeltaPhiCut;
1009 fDiJetPtFractionCut = o.fDiJetPtFractionCut;
1010 fDiJetCDFCut = o.fDiJetCDFCut;
1011 fDiJetKindBins = o.fDiJetKindBins;
1012 fFFRadius = o.fFFRadius;
1013 fFFBckgRadius = o.fFFBckgRadius;
1014 fBckgMode = o.fBckgMode;
1015 fIJMode = o.fIJMode;
1016 fQAMode = o.fQAMode;
1017 fFFMode = o.fFFMode;
1018 fDJMode = o.fDJMode;
1019 fEffMode = o.fEffMode;
1020 fPhiCorrMode = o.fPhiCorrMode;
1021 fBckgType[0] = o.fBckgType[0];
1022 fBckgType[1] = o.fBckgType[1];
1023 fBckgType[2] = o.fBckgType[2];
1024 fBckgType[3] = o.fBckgType[3];
1025 fBckgType[4] = o.fBckgType[4];
1026 fUseRecEffRecJetPtBins = o.fUseRecEffRecJetPtBins;
1027 fUseResponseRecJetPtBins = o.fUseResponseRecJetPtBins;
1028 fAvgTrials = o.fAvgTrials;
1029 fTracksRec = o.fTracksRec;
1030 fTracksRecCuts = o.fTracksRecCuts;
1031 fTracksGen = o.fTracksGen;
1032 fTracksAODMCCharged = o.fTracksAODMCCharged;
1033 fTracksAODMCChargedSec = o.fTracksAODMCChargedSec;
1034 fTracksRecQualityCuts = o.fTracksRecQualityCuts;
1035 fJetsRec = o.fJetsRec;
1036 fJetsRecCuts = o.fJetsRecCuts;
1037 fJetsGen = o.fJetsGen;
1038 fJetsRecEff = o.fJetsRecEff;
1039 fJetsEmbedded = o.fJetsEmbedded;
1040 fBckgJetsRec = o.fBckgJetsRec;
1041 fBckgJetsRecCuts = o.fBckgJetsRecCuts;
1042 fBckgJetsGen = o.fBckgJetsGen;
1043 fQATrackHistosRec = o.fQATrackHistosRec;
1044 fQATrackHistosRecCuts = o.fQATrackHistosRecCuts;
1045 fQATrackHistosGen = o.fQATrackHistosGen;
1046 fQAJetHistosRec = o.fQAJetHistosRec;
1047 fQAJetHistosRecCuts = o.fQAJetHistosRecCuts;
1048 fQAJetHistosRecCutsLeading = o.fQAJetHistosRecCutsLeading;
1049 fQAJetHistosGen = o.fQAJetHistosGen;
1050 fQAJetHistosGenLeading = o.fQAJetHistosGenLeading;
1051 fQAJetHistosRecEffLeading = o.fQAJetHistosRecEffLeading;
1052 fFFHistosRecCuts = o.fFFHistosRecCuts;
1053 fFFHistosRecLeading = o.fFFHistosRecLeading;
1054 fFFHistosRecLeadingTrack = o.fFFHistosRecLeadingTrack;
1055 fFFHistosGen = o.fFFHistosGen;
1056 fFFHistosGenLeading = o.fFFHistosGenLeading;
1057 fFFHistosGenLeadingTrack = o.fFFHistosGenLeadingTrack;
1058 fIJHistosRecCuts = o.fIJHistosRecCuts;
1059 fIJHistosRecLeading = o.fIJHistosRecLeading;
1060 fIJHistosRecLeadingTrack = o.fIJHistosRecLeadingTrack;
1061 fIJHistosGen = o.fIJHistosGen;
1062 fIJHistosGenLeading = o.fIJHistosGenLeading;
1063 fIJHistosGenLeadingTrack = o.fIJHistosGenLeadingTrack;
1064 fFFDiJetHistosRecCuts = o.fFFDiJetHistosRecCuts;
1065 fFFDiJetHistosRecLeading = o.fFFDiJetHistosRecLeading;
1066 fFFDiJetHistosRecLeadingTrack = o.fFFDiJetHistosRecLeadingTrack;
1067 fFFDiJetHistosGen = o.fFFDiJetHistosGen;
1068 fFFDiJetHistosGenLeading = o.fFFDiJetHistosGenLeading;
1069 fFFDiJetHistosGenLeadingTrack = o.fFFDiJetHistosGenLeadingTrack;
1070 fQADiJetHistosRecCuts = o.fQADiJetHistosRecCuts;
1071 fQADiJetHistosGen = o.fQADiJetHistosGen;
1072 fPhiCorrHistosJetArea = o.fPhiCorrHistosJetArea;
1073 fPhiCorrHistosTransverseArea = o.fPhiCorrHistosTransverseArea;
1074 fPhiCorrHistosAwayArea = o.fPhiCorrHistosAwayArea;
1075 fQATrackHighPtThreshold = o.fQATrackHighPtThreshold;
1076 fFFNBinsJetPt = o.fFFNBinsJetPt;
1077 fFFJetPtMin = o.fFFJetPtMin;
1078 fFFJetPtMax = o.fFFJetPtMax;
1079 fFFNBinsPt = o.fFFNBinsPt;
1080 fFFPtMin = o.fFFPtMin;
1081 fFFPtMax = o.fFFPtMax;
1082 fFFNBinsXi = o.fFFNBinsXi;
1083 fFFXiMin = o.fFFXiMin;
1084 fFFXiMax = o.fFFXiMax;
1085 fFFNBinsZ = o.fFFNBinsZ;
1086 fFFZMin = o.fFFZMin;
1087 fFFZMax = o.fFFZMax;
1088 fQAJetNBinsPt = o.fQAJetNBinsPt;
1089 fQAJetPtMin = o.fQAJetPtMin;
1090 fQAJetPtMax = o.fQAJetPtMax;
1091 fQAJetNBinsEta = o.fQAJetNBinsEta;
1092 fQAJetEtaMin = o.fQAJetEtaMin;
1093 fQAJetEtaMax = o.fQAJetEtaMax;
1094 fQAJetNBinsPhi = o.fQAJetNBinsPhi;
1095 fQAJetPhiMin = o.fQAJetPhiMin;
1096 fQAJetPhiMax = o.fQAJetPhiMax;
1097 fQATrackNBinsPt = o.fQATrackNBinsPt;
1098 fQATrackPtMin = o.fQATrackPtMin;
1099 fQATrackPtMax = o.fQATrackPtMax;
1100 fQATrackNBinsEta = o.fQATrackNBinsEta;
1101 fQATrackEtaMin = o.fQATrackEtaMin;
1102 fQATrackEtaMax = o.fQATrackEtaMax;
1103 fQATrackNBinsPhi = o.fQATrackNBinsPhi;
1104 fQATrackPhiMin = o.fQATrackPhiMin;
1105 fQATrackPhiMax = o.fQATrackPhiMax;
1106 fIJNBinsJetPt = o.fIJNBinsJetPt;
1107 fIJJetPtMin = o.fIJJetPtMin;
1108 fIJJetPtMax = o.fIJJetPtMax;
1109 fIJNBinsPt = o.fIJNBinsPt;
1110 fIJPtMin = o.fIJPtMin;
1111 fIJPtMax = o.fIJPtMax;
1112 fIJNBinsZ = o.fIJNBinsZ;
1113 fIJZMin = o.fIJZMin;
1114 fIJZMax = o.fIJZMax;
1115 fIJNBinsCosTheta = o.fIJNBinsCosTheta;
1116 fIJCosThetaMin = o.fIJCosThetaMin;
1117 fIJCosThetaMax = o.fIJCosThetaMax;
1118 fIJNBinsTheta = o.fIJNBinsTheta;
1119 fIJThetaMin = o.fIJThetaMin;
1120 fIJThetaMax = o.fIJThetaMax;
1121 fIJNBinsJt = o.fIJNBinsJt;
1122 fIJJtMin = o.fIJJtMin;
1123 fIJJtMax = o.fIJJtMax;
1124 fDiJetNBinsJetInvMass = o.fDiJetNBinsJetInvMass;
1125 fDiJetJetInvMassMin = o.fDiJetJetInvMassMin;
1126 fDiJetJetInvMassMax = o.fDiJetJetInvMassMax;
1127 fDiJetNBinsJetPt = o.fDiJetNBinsJetPt;
1128 fDiJetJetPtMin = o.fDiJetJetPtMin;
1129 fDiJetJetPtMax = o.fDiJetJetPtMax;
1130 fDiJetNBinsPt = o.fDiJetNBinsPt;
1131 fDiJetPtMin = o.fDiJetPtMin;
1132 fDiJetPtMax = o.fDiJetPtMax;
1133 fDiJetNBinsXi = o.fDiJetNBinsXi;
1134 fDiJetXiMin = o.fDiJetXiMin;
1135 fDiJetXiMax = o.fDiJetXiMax;
1136 fDiJetNBinsZ = o.fDiJetNBinsZ;
1137 fDiJetZMin = o.fDiJetZMin;
1138 fDiJetZMax = o.fDiJetZMax;
1139 fQADiJetNBinsInvMass = o.fQADiJetNBinsInvMass;
1140 fQADiJetInvMassMin = o.fQADiJetInvMassMin;
1141 fQADiJetInvMassMax = o.fQADiJetInvMassMax;
1142 fQADiJetNBinsJetPt = o.fQADiJetNBinsJetPt;
1143 fQADiJetJetPtMin = o.fQADiJetJetPtMin;
1144 fQADiJetJetPtMax = o.fQADiJetJetPtMax;
1145 fQADiJetNBinsDeltaPhi = o.fQADiJetNBinsDeltaPhi;
1146 fQADiJetDeltaPhiMin = o.fQADiJetDeltaPhiMin;
1147 fQADiJetDeltaPhiMax = o.fQADiJetDeltaPhiMax;
1148 fQADiJetNBinsDeltaEta = o.fQADiJetNBinsDeltaEta;
1149 fQADiJetDeltaEtaMin = o.fQADiJetDeltaEtaMin;
1150 fQADiJetDeltaEtaMax = o.fQADiJetDeltaEtaMax;
1151 fQADiJetNBinsDeltaPt = o.fQADiJetNBinsDeltaPt;
1152 fQADiJetDeltaPtMin = o.fQADiJetDeltaPtMin;
1153 fQADiJetDeltaPtMax = o.fQADiJetDeltaPtMax;
1154 fQADiJetNBinsInBal = o.fQADiJetNBinsInBal;
1155 fQADiJetInBalMin = o.fQADiJetInBalMin;
1156 fQADiJetInBalMax = o.fQADiJetInBalMax;
1157 fPhiCorrNBinsPt = o.fPhiCorrNBinsPt;
1158 fPhiCorrPtMin = o.fPhiCorrPtMin;
1159 fPhiCorrPtMax = o.fPhiCorrPtMax;
1160 fPhiCorrNBinsEta = o.fPhiCorrNBinsEta;
1161 fPhiCorrEtaMin = o.fPhiCorrEtaMin;
1162 fPhiCorrEtaMax = o.fPhiCorrEtaMax;
1163 fPhiCorrNBinsPhi = o.fPhiCorrNBinsPhi;
1164 fPhiCorrPhiMin = o.fPhiCorrPhiMin;
1165 fPhiCorrPhiMax = o.fPhiCorrPhiMax;
1166 fCommonHistList = o.fCommonHistList;
1167 fh1EvtSelection = o.fh1EvtSelection;
1168 fh1VertexNContributors = o.fh1VertexNContributors;
1169 fh1VertexZ = o.fh1VertexZ;
1170 fh1EvtMult = o.fh1EvtMult;
1171 fh1EvtCent = o.fh1EvtCent;
1172 fh2TrackPtVsDCAXY = o.fh2TrackPtVsDCAXY;
1173 fh2TrackPtVsDCAZ = o.fh2TrackPtVsDCAXY;
1174 fh1Xsec = o.fh1Xsec;
1175 fh1Trials = o.fh1Trials;
1176 fh1PtHard = o.fh1PtHard;
1177 fh1PtHardTrials = o.fh1PtHardTrials;
1178 fh1nRecJetsCuts = o.fh1nRecJetsCuts;
1179 fh1nGenJets = o.fh1nGenJets;
1180 fh1nRecEffJets = o.fh1nRecEffJets;
1181 fh1nEmbeddedJets = o.fh1nEmbeddedJets;
1182 fh2PtRecVsGenPrim = o.fh2PtRecVsGenPrim;
1183 fh2PtRecVsGenSec = o.fh2PtRecVsGenSec;
1184 fQATrackHistosRecEffGen = o.fQATrackHistosRecEffGen;
1185 fQATrackHistosRecEffRec = o.fQATrackHistosRecEffRec;
1186 fQATrackHistosSecRec = o.fQATrackHistosSecRec;
1187 fFFHistosRecEffGen = o.fFFHistosRecEffGen;
1188 fFFHistosRecEffRec = o.fFFHistosRecEffRec;
1189 fFFHistosSecRec = o.fFFHistosSecRec;
1190 fhnResponseSinglePt = o.fhnResponseSinglePt;
1191 fh2SingleInvPtRecMnGenVsPtGen = o.fh2SingleInvPtRecMnGenVsPtGen;
1192 fhnResponseJetTrackPt = o.fhnResponseJetTrackPt;
1193 fhnResponseJetZ = o.fhnResponseJetZ;
1194 fhnResponseJetXi = o.fhnResponseJetXi;
1196 fh1OutLeadingMult = o.fh1OutLeadingMult;
1197 fh1OutLeadingStatMult = o.fh1OutLeadingStatMult;
1198 fh1PerpMult = o.fh1PerpMult;
1199 fh1ASideMult = o.fh1ASideMult;
1200 fh1ASideWindowMult = o.fh1ASideWindowMult;
1201 fh1PerpWindowMult = o.fh1PerpWindowMult;
1202 fh1Out2JetsMult = o.fh1Out2JetsMult;
1203 fh1Out3JetsMult = o.fh1Out3JetsMult;
1204 fh1MedianClustersMult = o.fh1MedianClustersMult;
1205 fh1OutClustersMult = o.fh1OutClustersMult;
1206 fh1FractionPtEmbedded = o.fh1FractionPtEmbedded;
1207 fh1IndexEmbedded = o.fh1IndexEmbedded;
1208 fh2DeltaPtVsJetPtEmbedded = o.fh2DeltaPtVsJetPtEmbedded;
1209 fh2DeltaPtVsRecJetPtEmbedded = o.fh2DeltaPtVsRecJetPtEmbedded;
1210 fh1DeltaREmbedded = o.fh1DeltaREmbedded;
1211 fh2ptVsDistNN_pt50_rec = o.fh2ptVsDistNN_pt50_rec;
1212 fh2ptVsDistNN_pt50_nonRec = o.fh2ptVsDistNN_pt50_nonRec;
1213 fh2ptVsDistNN_pt10_rec = o.fh2ptVsDistNN_pt10_rec;
1214 fh2ptVsDistNN_pt10_nonRec = o.fh2ptVsDistNN_pt10_nonRec;
1215 fQABckgHisto0RecCuts = o.fQABckgHisto0RecCuts;
1216 fQABckgHisto0Gen = o.fQABckgHisto0Gen;
1217 fQABckgHisto1RecCuts = o.fQABckgHisto1RecCuts;
1218 fQABckgHisto1Gen = o.fQABckgHisto1Gen;
1219 fQABckgHisto2RecCuts = o.fQABckgHisto2RecCuts;
1220 fQABckgHisto2Gen = o.fQABckgHisto2Gen;
1221 fQABckgHisto3RecCuts = o.fQABckgHisto3RecCuts;
1222 fQABckgHisto3Gen = o.fQABckgHisto3Gen;
1223 fQABckgHisto4RecCuts = o.fQABckgHisto4RecCuts;
1224 fQABckgHisto4Gen = o.fQABckgHisto4Gen;
1225 fFFBckgHisto0RecCuts = o.fFFBckgHisto0RecCuts;
1226 fFFBckgHisto0RecLeading = o.fFFBckgHisto0RecLeading;
1227 fFFBckgHisto0Gen = o.fFFBckgHisto0Gen;
1228 fFFBckgHisto0GenLeading = o.fFFBckgHisto0GenLeading;
1229 fFFBckgHisto1RecCuts = o.fFFBckgHisto1RecCuts;
1230 fFFBckgHisto1RecLeading = o.fFFBckgHisto1RecLeading;
1231 fFFBckgHisto1Gen = o.fFFBckgHisto1Gen;
1232 fFFBckgHisto1GenLeading = o.fFFBckgHisto1GenLeading;
1233 fFFBckgHisto2RecCuts = o.fFFBckgHisto2RecCuts;
1234 fFFBckgHisto2RecLeading = o.fFFBckgHisto2RecLeading;
1235 fFFBckgHisto2Gen = o.fFFBckgHisto2Gen;
1236 fFFBckgHisto2GenLeading = o.fFFBckgHisto2GenLeading;
1237 fFFBckgHisto3RecCuts = o.fFFBckgHisto3RecCuts;
1238 fFFBckgHisto3RecLeading = o.fFFBckgHisto3RecLeading;
1239 fFFBckgHisto3Gen = o.fFFBckgHisto3Gen;
1240 fFFBckgHisto3GenLeading = o.fFFBckgHisto3GenLeading;
1241 fFFBckgHisto4RecCuts = o.fFFBckgHisto4RecCuts;
1242 fFFBckgHisto4RecLeading = o.fFFBckgHisto4RecLeading;
1243 fFFBckgHisto4Gen = o.fFFBckgHisto4Gen;
1244 fFFBckgHisto4GenLeading = o.fFFBckgHisto4GenLeading;
1245 fIJBckgHisto0RecCuts = o.fIJBckgHisto0RecCuts;
1246 fIJBckgHisto0RecLeading = o.fIJBckgHisto0RecLeading;
1247 fIJBckgHisto0Gen = o.fIJBckgHisto0Gen;
1248 fIJBckgHisto0GenLeading = o.fIJBckgHisto0GenLeading;
1249 fIJBckgHisto1RecCuts = o.fIJBckgHisto1RecCuts;
1250 fIJBckgHisto1RecLeading = o.fIJBckgHisto1RecLeading;
1251 fIJBckgHisto1Gen = o.fIJBckgHisto1Gen;
1252 fIJBckgHisto1GenLeading = o.fIJBckgHisto1GenLeading;
1253 fIJBckgHisto2RecCuts = o.fIJBckgHisto2RecCuts;
1254 fIJBckgHisto2RecLeading = o.fIJBckgHisto2RecLeading;
1255 fIJBckgHisto2Gen = o.fIJBckgHisto2Gen;
1256 fIJBckgHisto2GenLeading = o.fIJBckgHisto2GenLeading;
1257 fIJBckgHisto3Gen = o.fIJBckgHisto3Gen;
1258 fIJBckgHisto3GenLeading = o.fIJBckgHisto3GenLeading;
1259 fIJBckgHisto4Gen = o.fIJBckgHisto4Gen;
1260 fIJBckgHisto4GenLeading = o.fIJBckgHisto4GenLeading;
1261 fRandom = o.fRandom;
1262 fBckgSubMethod = o.fBckgSubMethod;
1268 //___________________________________________________________________________
1269 AliAnalysisTaskFragmentationFunction::~AliAnalysisTaskFragmentationFunction()
1273 if(fTracksRec) delete fTracksRec;
1274 if(fTracksRecCuts) delete fTracksRecCuts;
1275 if(fTracksGen) delete fTracksGen;
1276 if(fTracksAODMCCharged) delete fTracksAODMCCharged;
1277 if(fTracksAODMCChargedSec) delete fTracksAODMCChargedSec;
1278 if(fTracksRecQualityCuts) delete fTracksRecQualityCuts;
1279 if(fJetsRec) delete fJetsRec;
1280 if(fJetsRecCuts) delete fJetsRecCuts;
1281 if(fJetsGen) delete fJetsGen;
1282 if(fJetsRecEff) delete fJetsRecEff;
1283 if(fJetsEmbedded) delete fJetsEmbedded;
1286 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
1287 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
1288 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
1290 if(fBckgJetsRec) delete fBckgJetsRec;
1291 if(fBckgJetsRecCuts) delete fBckgJetsRecCuts;
1292 if(fBckgJetsGen) delete fBckgJetsGen;
1294 if(fRandom) delete fRandom;
1297 //______________________________________________________________________________________________________
1298 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const char* name,
1299 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1300 Int_t nPt, Float_t ptMin, Float_t ptMax,
1301 Int_t nXi, Float_t xiMin, Float_t xiMax,
1302 Int_t nZ , Float_t zMin , Float_t zMax )
1304 ,fNBinsJetPt(nJetPt)
1305 ,fJetPtMin(jetPtMin)
1306 ,fJetPtMax(jetPtMax)
1322 // default constructor
1326 //___________________________________________________________________________
1327 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const AliFragFuncHistos& copy)
1329 ,fNBinsJetPt(copy.fNBinsJetPt)
1330 ,fJetPtMin(copy.fJetPtMin)
1331 ,fJetPtMax(copy.fJetPtMax)
1332 ,fNBinsPt(copy.fNBinsPt)
1333 ,fPtMin(copy.fPtMin)
1334 ,fPtMax(copy.fPtMax)
1335 ,fNBinsXi(copy.fNBinsXi)
1336 ,fXiMin(copy.fXiMin)
1337 ,fXiMax(copy.fXiMax)
1338 ,fNBinsZ(copy.fNBinsZ)
1341 ,fh2TrackPt(copy.fh2TrackPt)
1344 ,fh1JetPt(copy.fh1JetPt)
1345 ,fNameFF(copy.fNameFF)
1350 //_______________________________________________________________________________________________________________________________________________________________
1351 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& o)
1356 TObject::operator=(o);
1357 fNBinsJetPt = o.fNBinsJetPt;
1358 fJetPtMin = o.fJetPtMin;
1359 fJetPtMax = o.fJetPtMax;
1360 fNBinsPt = o.fNBinsPt;
1363 fNBinsXi = o.fNBinsXi;
1366 fNBinsZ = o.fNBinsZ;
1369 fh2TrackPt = o.fh2TrackPt;
1372 fh1JetPt = o.fh1JetPt;
1373 fNameFF = o.fNameFF;
1379 //_________________________________________________________
1380 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::~AliFragFuncHistos()
1384 if(fh1JetPt) delete fh1JetPt;
1385 if(fh2TrackPt) delete fh2TrackPt;
1386 if(fh2Xi) delete fh2Xi;
1387 if(fh2Z) delete fh2Z;
1390 //_________________________________________________________________
1391 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::DefineHistos()
1395 fh1JetPt = new TH1F(Form("fh1FFJetPt%s", fNameFF.Data()),"",fNBinsJetPt,fJetPtMin,fJetPtMax);
1396 fh2TrackPt = new TH2F(Form("fh2FFTrackPt%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsPt, fPtMin, fPtMax);
1397 fh2Xi = new TH2F(Form("fh2FFXi%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsXi, fXiMin, fXiMax);
1398 fh2Z = new TH2F(Form("fh2FFZ%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, fZMin, fZMax);
1400 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
1401 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPt,"jet p_{T} [GeV/c]","p_{T} [GeV/c]","entries");
1402 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi,"jet p_{T} [GeV/c]","#xi", "entries");
1403 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z,"jet p_{T} [GeV/c]","z","entries");
1406 //_______________________________________________________________________________________________________________
1407 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::FillFF(Float_t trackPt, Float_t jetPt, Bool_t incrementJetPt, Float_t norm)
1411 if(incrementJetPt && norm) fh1JetPt->Fill(jetPt,1/norm);
1412 else if(incrementJetPt) fh1JetPt->Fill(jetPt);
1414 // Added for proper normalization of FF background estimation
1415 // when zero track are found in the background region
1416 if((int)trackPt==-1) return;
1418 if(norm)fh2TrackPt->Fill(jetPt,trackPt,1/norm);
1419 else fh2TrackPt->Fill(jetPt,trackPt);
1422 if(jetPt>0) z = trackPt / jetPt;
1424 if(z>0) xi = TMath::Log(1/z);
1427 fh2Xi->Fill(jetPt,xi,1/norm);
1428 fh2Z->Fill(jetPt,z,1/norm);
1431 fh2Xi->Fill(jetPt,xi);
1432 fh2Z->Fill(jetPt,z);
1436 //_________________________________________________________________________________
1437 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AddToOutput(TList* list) const
1439 // add histos to list
1441 list->Add(fh1JetPt);
1443 list->Add(fh2TrackPt);
1448 //_________________________________________________________________________________________________________
1449 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const char* name,
1450 Int_t nPt, Float_t ptMin, Float_t ptMax,
1451 Int_t nEta, Float_t etaMin, Float_t etaMax,
1452 Int_t nPhi, Float_t phiMin, Float_t phiMax)
1467 // default constructor
1470 //____________________________________________________________________________________
1471 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const AliFragFuncQAJetHistos& copy)
1473 ,fNBinsPt(copy.fNBinsPt)
1474 ,fPtMin(copy.fPtMin)
1475 ,fPtMax(copy.fPtMax)
1476 ,fNBinsEta(copy.fNBinsEta)
1477 ,fEtaMin(copy.fEtaMin)
1478 ,fEtaMax(copy.fEtaMax)
1479 ,fNBinsPhi(copy.fNBinsPhi)
1480 ,fPhiMin(copy.fPhiMin)
1481 ,fPhiMax(copy.fPhiMax)
1482 ,fh2EtaPhi(copy.fh2EtaPhi)
1484 ,fNameQAJ(copy.fNameQAJ)
1489 //________________________________________________________________________________________________________________________________________________________________________
1490 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& o)
1495 TObject::operator=(o);
1496 fNBinsPt = o.fNBinsPt;
1499 fNBinsEta = o.fNBinsEta;
1500 fEtaMin = o.fEtaMin;
1501 fEtaMax = o.fEtaMax;
1502 fNBinsPhi = o.fNBinsPhi;
1503 fPhiMin = o.fPhiMin;
1504 fPhiMax = o.fPhiMax;
1505 fh2EtaPhi = o.fh2EtaPhi;
1507 fNameQAJ = o.fNameQAJ;
1513 //______________________________________________________________
1514 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::~AliFragFuncQAJetHistos()
1518 if(fh2EtaPhi) delete fh2EtaPhi;
1519 if(fh1Pt) delete fh1Pt;
1522 //____________________________________________________________________
1523 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::DefineHistos()
1525 // book jet QA histos
1527 fh2EtaPhi = new TH2F(Form("fh2JetQAEtaPhi%s", fNameQAJ.Data()), Form("%s: #eta - #phi distribution", fNameQAJ.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1528 fh1Pt = new TH1F(Form("fh1JetQAPt%s", fNameQAJ.Data()), Form("%s: p_{T} distribution", fNameQAJ.Data()), fNBinsPt, fPtMin, fPtMax);
1530 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
1531 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
1534 //____________________________________________________________________________________________________
1535 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::FillJetQA(Float_t eta, Float_t phi, Float_t pt)
1537 // fill jet QA histos
1539 fh2EtaPhi->Fill( eta, phi);
1543 //____________________________________________________________________________________
1544 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AddToOutput(TList* list) const
1546 // add histos to list
1548 list->Add(fh2EtaPhi);
1552 //___________________________________________________________________________________________________________
1553 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const char* name,
1554 Int_t nPt, Float_t ptMin, Float_t ptMax,
1555 Int_t nEta, Float_t etaMin, Float_t etaMax,
1556 Int_t nPhi, Float_t phiMin, Float_t phiMax,
1568 ,fHighPtThreshold(ptThresh)
1575 // default constructor
1578 //__________________________________________________________________________________________
1579 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const AliFragFuncQATrackHistos& copy)
1581 ,fNBinsPt(copy.fNBinsPt)
1582 ,fPtMin(copy.fPtMin)
1583 ,fPtMax(copy.fPtMax)
1584 ,fNBinsEta(copy.fNBinsEta)
1585 ,fEtaMin(copy.fEtaMin)
1586 ,fEtaMax(copy.fEtaMax)
1587 ,fNBinsPhi(copy.fNBinsPhi)
1588 ,fPhiMin(copy.fPhiMin)
1589 ,fPhiMax(copy.fPhiMax)
1590 ,fHighPtThreshold(copy.fHighPtThreshold)
1591 ,fh2EtaPhi(copy.fh2EtaPhi)
1593 ,fh2HighPtEtaPhi(copy.fh2HighPtEtaPhi)
1594 ,fh2PhiPt(copy.fh2PhiPt)
1595 ,fNameQAT(copy.fNameQAT)
1600 // _____________________________________________________________________________________________________________________________________________________________________________
1601 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& o)
1606 TObject::operator=(o);
1607 fNBinsPt = o.fNBinsPt;
1610 fNBinsEta = o.fNBinsEta;
1611 fEtaMin = o.fEtaMin;
1612 fEtaMax = o.fEtaMax;
1613 fNBinsPhi = o.fNBinsPhi;
1614 fPhiMin = o.fPhiMin;
1615 fPhiMax = o.fPhiMax;
1616 fHighPtThreshold = o.fHighPtThreshold;
1617 fh2EtaPhi = o.fh2EtaPhi;
1619 fh2HighPtEtaPhi = o.fh2HighPtEtaPhi;
1620 fh2PhiPt = o.fh2PhiPt;
1621 fNameQAT = o.fNameQAT;
1627 //___________________________________________________________________
1628 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::~AliFragFuncQATrackHistos()
1632 if(fh2EtaPhi) delete fh2EtaPhi;
1633 if(fh2HighPtEtaPhi) delete fh2HighPtEtaPhi;
1634 if(fh1Pt) delete fh1Pt;
1635 if(fh2PhiPt) delete fh2PhiPt;
1638 //______________________________________________________________________
1639 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::DefineHistos()
1641 // book track QA histos
1643 fh2EtaPhi = new TH2F(Form("fh2TrackQAEtaPhi%s", fNameQAT.Data()), Form("%s: #eta - #phi distribution", fNameQAT.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1644 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);
1645 fh1Pt = new TH1F(Form("fh1TrackQAPt%s", fNameQAT.Data()), Form("%s: p_{T} distribution", fNameQAT.Data()), fNBinsPt, fPtMin, fPtMax);
1646 fh2PhiPt = new TH2F(Form("fh2TrackQAPhiPt%s", fNameQAT.Data()), Form("%s: #phi - p_{T} distribution", fNameQAT.Data()), fNBinsPhi, fPhiMin, fPhiMax, fNBinsPt, fPtMin, fPtMax);
1648 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
1649 AliAnalysisTaskFragmentationFunction::SetProperties(fh2HighPtEtaPhi, "#eta", "#phi");
1650 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
1651 AliAnalysisTaskFragmentationFunction::SetProperties(fh2PhiPt, "#phi", "p_{T} [GeV/c]");
1654 //________________________________________________________________________________________________________
1655 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::FillTrackQA(Float_t eta, Float_t phi, Float_t pt, Bool_t weightPt, Float_t norm)
1657 // fill track QA histos
1658 Float_t weight = 1.;
1659 if(weightPt) weight = pt;
1660 fh2EtaPhi->Fill( eta, phi, weight);
1661 if(pt > fHighPtThreshold) fh2HighPtEtaPhi->Fill( eta, phi, weight);
1662 if(norm) fh1Pt->Fill( pt, 1/norm );
1663 else fh1Pt->Fill( pt );
1664 fh2PhiPt->Fill(phi, pt);
1667 //______________________________________________________________________________________
1668 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AddToOutput(TList* list) const
1670 // add histos to list
1672 list->Add(fh2EtaPhi);
1673 list->Add(fh2HighPtEtaPhi);
1675 list->Add(fh2PhiPt);
1678 //______________________________________________________________________________________________________
1679 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const char* name,
1680 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1681 Int_t nPt, Float_t ptMin, Float_t ptMax,
1682 Int_t nZ , Float_t zMin , Float_t zMax,
1683 Int_t nCosTheta , Float_t costhetaMin , Float_t costhetaMax,
1684 Int_t nTheta , Float_t thetaMin , Float_t thetaMax,
1685 Int_t nJt , Float_t jtMin , Float_t jtMax)
1687 ,fNBinsJetPt(nJetPt)
1688 ,fJetPtMin(jetPtMin)
1689 ,fJetPtMax(jetPtMax)
1699 ,fNBinsTheta(nTheta)
1700 ,fThetaMin(thetaMin)
1701 ,fThetaMax(thetaMax)
1702 ,fNBinsCosTheta(nCosTheta)
1703 ,fCosThetaMin(costhetaMin)
1704 ,fCosThetaMax(costhetaMax)
1712 // default constructor
1716 //___________________________________________________________________________
1717 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const AliFragFuncIntraJetHistos& copy)
1719 ,fNBinsJetPt(copy.fNBinsJetPt)
1720 ,fJetPtMin(copy.fJetPtMin)
1721 ,fJetPtMax(copy.fJetPtMax)
1722 ,fNBinsPt(copy.fNBinsPt)
1723 ,fPtMin(copy.fPtMin)
1724 ,fPtMax(copy.fPtMax)
1725 ,fNBinsZ(copy.fNBinsZ)
1728 ,fNBinsJt(copy.fNBinsJt)
1729 ,fJtMin(copy.fJtMin)
1730 ,fJtMax(copy.fJtMax)
1731 ,fNBinsTheta(copy.fNBinsTheta)
1732 ,fThetaMin(copy.fThetaMin)
1733 ,fThetaMax(copy.fThetaMax)
1734 ,fNBinsCosTheta(copy.fNBinsCosTheta)
1735 ,fCosThetaMin(copy.fCosThetaMin)
1736 ,fCosThetaMax(copy.fCosThetaMax)
1737 ,fh2CosTheta(copy.fh2CosTheta)
1738 ,fh2PtZ(copy.fh2PtZ)
1739 ,fh3ThetaZ(copy.fh3ThetaZ)
1740 ,fh3JtTheta(copy.fh3JtTheta)
1741 ,fh3JtZ(copy.fh3JtZ)
1742 ,fNameIJ(copy.fNameIJ)
1747 //_______________________________________________________________________________________________________________________________________________________________
1748 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& o)
1753 TObject::operator=(o);
1754 fNBinsJetPt = o.fNBinsJetPt;
1755 fJetPtMin = o.fJetPtMin;
1756 fJetPtMax = o.fJetPtMax;
1757 fNBinsPt = o.fNBinsPt;
1760 fNBinsZ = o.fNBinsZ;
1763 fNBinsJt = o.fNBinsJt;
1766 fNBinsTheta = o.fNBinsTheta;
1767 fThetaMin = o.fThetaMin;
1768 fThetaMax = o.fThetaMax;
1769 fNBinsCosTheta = o.fNBinsCosTheta;
1770 fCosThetaMin = o.fCosThetaMin;
1771 fCosThetaMax = o.fCosThetaMax;
1772 fh2CosTheta = o.fh2CosTheta;
1774 fh3ThetaZ = o.fh3ThetaZ;
1775 fh3JtTheta = o.fh3JtTheta;
1777 fNameIJ = o.fNameIJ;
1783 //_________________________________________________________
1784 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::~AliFragFuncIntraJetHistos()
1789 if(fh2CosTheta) delete fh2CosTheta;
1790 if(fh2PtZ) delete fh2PtZ;
1791 if(fh3ThetaZ) delete fh3ThetaZ;
1792 if(fh3JtTheta) delete fh3JtTheta;
1793 if(fh3JtZ) delete fh3JtZ;
1797 //_________________________________________________________________
1798 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::DefineHistos()
1802 fh2CosTheta = new TH2F(Form("fh2IJcosTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsCosTheta, fCosThetaMin, fCosThetaMax);
1803 fh2PtZ = new TH2F(Form("fh2IJPtZ%s",fNameIJ.Data()),"",fNBinsPt, fPtMin, fPtMax, fNBinsZ, fZMin, fZMax);
1804 fh3ThetaZ = new TH3F(Form("fh3IJThetaZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsTheta, fThetaMin, fThetaMax, fNBinsZ, fZMin, fZMax);
1805 fh3JtTheta = new TH3F(Form("fh3IJJtTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsTheta, fThetaMin, fThetaMax);
1806 fh3JtZ = new TH3F(Form("fh3IJJtZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsZ, fZMin, fZMax);
1808 AliAnalysisTaskFragmentationFunction::SetProperties(fh2CosTheta,"jet p_{T} [GeV/c]","cos(#Theta)", "entries");
1809 AliAnalysisTaskFragmentationFunction::SetProperties(fh2PtZ,"had p_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}","entries");
1810 AliAnalysisTaskFragmentationFunction::SetProperties(fh3ThetaZ,"jet p_{T} [GeV/c]","#Theta [rad]","z=p_{T}^{had}/p_{T}^{jet}");
1811 AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtTheta,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","#Theta [rad]");
1812 AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtZ,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}");
1816 //_______________________________________________________________________________________________________________
1817 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::FillIntraJet(const TLorentzVector* trackV, const TLorentzVector* jetV, Float_t norm)
1819 // fill IntraJet histos
1821 Float_t cosTheta = 0.; Float_t theta = 0.;
1822 Float_t jt = 0.; Float_t z = 0.;
1823 // For Theta distribution
1824 Float_t pxT = trackV->Px();
1825 Float_t pyT = trackV->Py();
1826 Float_t pzT = trackV->Pz();
1827 Float_t ptT = trackV->Pt();
1828 Float_t pT = trackV->P();
1829 Float_t etaT = trackV->Eta();
1830 Float_t phiT = trackV->Phi(); // Check the value returned
1831 Float_t pxJ = jetV->Px();
1832 Float_t pyJ = jetV->Py();
1833 Float_t pzJ = jetV->Pz();
1834 Float_t ptJ = jetV->Pt();
1835 Float_t pJ = jetV->P();
1838 if(ptJ>0) z = (Float_t)(ptT/ptJ);
1841 cosTheta = (pxT*pxJ+pyT*pyJ+pzT*pzJ)/(pT*pJ);
1842 theta = TMath::ACos(cosTheta);
1845 TVector3 trackP; TVector3 jetP;
1849 trackP.SetPtEtaPhi(ptT,etaT,phiT);
1850 jt = TMath::Sin(trackP.Angle(jetP))*trackP.Mag();
1854 fh2CosTheta->Fill(ptJ,cosTheta,1/norm);
1855 fh2PtZ->Fill(ptT,z,1/norm);
1856 fh3ThetaZ->Fill(ptJ,theta,z,1/norm);
1857 fh3JtTheta->Fill(ptJ,jt,theta,1/norm);
1858 fh3JtZ->Fill(ptJ,jt,z,1/norm);
1861 fh2CosTheta->Fill(ptJ,cosTheta);
1862 fh2PtZ->Fill(ptT,z);
1863 fh3ThetaZ->Fill(ptJ,theta,z);
1864 fh3JtTheta->Fill(ptJ,jt,theta);
1865 fh3JtZ->Fill(ptJ,jt,z);
1870 //______________________________________________________________________________________________________
1871 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const char* name, Int_t kindSlices,
1872 Int_t nJetInvMass, Float_t jetInvMassMin, Float_t jetInvMassMax,
1873 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1874 Int_t nPt, Float_t ptMin, Float_t ptMax,
1875 Int_t nXi, Float_t xiMin, Float_t xiMax,
1876 Int_t nZ , Float_t zMin , Float_t zMax)
1878 ,fKindSlices(kindSlices)
1879 ,fNBinsJetInvMass(nJetInvMass)
1880 ,fJetInvMassMin(jetInvMassMin)
1881 ,fJetInvMassMax(jetInvMassMax)
1882 ,fNBinsJetPt(nJetPt)
1883 ,fJetPtMin(jetPtMin)
1884 ,fJetPtMax(jetPtMax)
1911 // default constructor
1915 //______________________________________________________________________________________________________
1916 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const AliFragFuncDiJetHistos& copy)
1918 ,fKindSlices(copy.fKindSlices)
1919 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
1920 ,fJetInvMassMin(copy.fJetInvMassMin)
1921 ,fJetInvMassMax(copy.fJetInvMassMax)
1922 ,fNBinsJetPt(copy.fNBinsJetPt)
1923 ,fJetPtMin(copy.fJetPtMin)
1924 ,fJetPtMax(copy.fJetPtMax)
1925 ,fNBinsPt(copy.fNBinsPt)
1926 ,fPtMin(copy.fPtMin)
1927 ,fPtMax(copy.fPtMax)
1928 ,fNBinsXi(copy.fNBinsXi)
1929 ,fXiMin(copy.fXiMin)
1930 ,fXiMax(copy.fXiMax)
1931 ,fNBinsZ(copy.fNBinsZ)
1934 ,fh2TrackPtJet1(copy.fh2TrackPtJet1)
1935 ,fh2TrackPtJet2(copy.fh2TrackPtJet2)
1936 ,fh2TrackPtJet(copy.fh2TrackPtJet)
1937 ,fh1Jet1Pt(copy.fh1Jet1Pt)
1938 ,fh1Jet2Pt(copy.fh1Jet2Pt)
1939 ,fh1JetPt(copy.fh1JetPt)
1940 ,fh2Xi1(copy.fh2Xi1)
1941 ,fh2Xi2(copy.fh2Xi2)
1946 ,fh2Pt1(copy.fh2Pt1)
1947 ,fh2Pt2(copy.fh2Pt2)
1949 ,fNameDJ(copy.fNameDJ)
1951 // default constructor
1955 //_______________________________________________________________________________________________________________________________________________________________
1956 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& o)
1961 TObject::operator=(o);
1962 fKindSlices = o.fKindSlices;
1963 fNBinsJetInvMass = o.fNBinsJetInvMass;
1964 fJetInvMassMin = o.fJetInvMassMin;
1965 fJetInvMassMax = o.fJetInvMassMax;
1966 fNBinsJetPt = o.fNBinsJetPt;
1967 fJetPtMin = o.fJetPtMin;
1968 fJetPtMax = o.fJetPtMax;
1969 fNBinsPt = o.fNBinsPt;
1972 fNBinsXi = o.fNBinsXi;
1975 fNBinsZ = o.fNBinsZ;
1978 fh2TrackPtJet1 = o.fh2TrackPtJet1;
1979 fh2TrackPtJet2 = o.fh2TrackPtJet2;
1980 fh2TrackPtJet = o.fh2TrackPtJet;
1981 fh1Jet1Pt = o.fh1Jet1Pt;
1982 fh1Jet2Pt = o.fh1Jet2Pt;
1983 fh1JetPt = o.fh1JetPt;
1993 fNameDJ = o.fNameDJ;
1999 //_________________________________________________________
2000 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::~AliFragFuncDiJetHistos()
2004 if(fh2TrackPtJet1) delete fh2TrackPtJet1;
2005 if(fh2TrackPtJet2) delete fh2TrackPtJet2;
2006 if(fh2TrackPtJet ) delete fh2TrackPtJet;
2007 if(fh1Jet1Pt) delete fh1Jet1Pt;
2008 if(fh1Jet2Pt) delete fh1Jet2Pt;
2009 if(fh1JetPt) delete fh1JetPt;
2010 if(fh2Xi1) delete fh2Xi1;
2011 if(fh2Xi2) delete fh2Xi2;
2012 if(fh2Xi) delete fh2Xi;
2013 if(fh2Z1) delete fh2Z1;
2014 if(fh2Z2) delete fh2Z2;
2015 if(fh2Z) delete fh2Z;
2016 if(fh2Pt1) delete fh2Pt1;
2017 if(fh2Pt2) delete fh2Pt2;
2018 if(fh2Pt) delete fh2Pt;
2021 //________________________________________________________________________
2022 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::DefineDiJetHistos()
2024 // book DiJet histos
2029 const char *xaxis = "";
2030 if(fKindSlices == 1)
2032 nBins = fNBinsJetInvMass;
2033 min = fJetInvMassMin;
2034 max = fJetInvMassMax;
2035 xaxis = "M_{JJ} [GeV]";
2037 if(fKindSlices == 2 || fKindSlices == 3)
2039 nBins = fNBinsJetPt;
2042 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
2043 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
2046 fh1Jet1Pt = new TH1F(Form("fh1DJJet1Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
2047 fh1Jet2Pt = new TH1F(Form("fh1DJJet2Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
2048 fh1JetPt = new TH1F(Form("fh1DJJetPt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
2050 fh2TrackPtJet1 = new TH2F(Form("fh2DJTrackPtJet1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2051 fh2TrackPtJet2 = new TH2F(Form("fh2DJTrackPtJet2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2052 fh2TrackPtJet = new TH2F(Form("fh2DJTrackPtJet%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2054 fh2Xi1 = new TH2F(Form("fh2DJXi1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
2055 fh2Xi2 = new TH2F(Form("fh2DJXi2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
2056 fh2Xi = new TH2F(Form("fh2DJXi%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
2058 fh2Z1 = new TH2F(Form("fh2DJZ1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
2059 fh2Z2 = new TH2F(Form("fh2DJZ2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
2060 fh2Z = new TH2F(Form("fh2DJZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
2062 fh2Pt1 = new TH2F(Form("fh2DJPt1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2063 fh2Pt2 = new TH2F(Form("fh2DJPt2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2064 fh2Pt = new TH2F(Form("fh2DJPtZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2066 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet1Pt, "p_{T} [GeV/c]", "entries");
2067 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet2Pt, "p_{T} [GeV/c]", "entries");
2068 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
2070 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet1, xaxis, "p_{T} [GeV/c]", "Entries");
2071 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet2, xaxis, "p_{T} [GeV/c]", "Entries");
2072 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet, xaxis, "p_{T} [GeV/c]", "Entries");
2073 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi1, xaxis, "#xi", "Entries");
2074 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi2, xaxis, "#xi", "Entries");
2075 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi, xaxis, "#xi", "Entries");
2076 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z1, xaxis, "z", "Entries");
2077 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z2, xaxis, "z", "Entries");
2078 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z, xaxis, "z", "Entries");
2079 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt1, xaxis, "p_{T} [GeV/c]", "Entries");
2080 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt2, xaxis, "p_{T} [GeV/c]", "Entries");
2081 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt, xaxis, "p_{T} [GeV/c]", "Entries");
2084 //________________________________________________________________________
2085 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::FillDiJetFF(Int_t jetType, Float_t trackPt, Float_t jetPt, Double_t jetBin, Bool_t incrementJetPt)
2091 if(incrementJetPt) fh1JetPt->Fill(jetPt);
2093 fh2TrackPtJet->Fill(jetBin, trackPt);
2095 Double_t z = trackPt / jetPt;
2097 if(z>0) xi = TMath::Log(1/z);
2099 fh2Xi->Fill(jetBin, xi);
2100 fh2Z->Fill(jetBin, z);
2104 if(incrementJetPt) fh1Jet1Pt->Fill(jetPt);
2106 fh2TrackPtJet1->Fill(jetBin, trackPt);
2108 Double_t z = trackPt / jetPt;
2110 if(z>0) xi = TMath::Log(1/z);
2112 fh2Xi1->Fill(jetBin, xi);
2113 fh2Z1->Fill(jetBin, z);
2117 if(incrementJetPt) fh1Jet2Pt->Fill(jetPt);
2119 fh2TrackPtJet2->Fill(jetBin, trackPt);
2121 Double_t z = trackPt / jetPt;
2123 if(z>0) xi = TMath::Log(1/z);
2125 fh2Xi2->Fill(jetBin, xi);
2126 fh2Z2->Fill(jetBin, z);
2132 //________________________________________________________________________
2133 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AddToOutput(TList* list)const
2135 // add histos to list
2137 list->Add(fh1Jet1Pt);
2138 list->Add(fh1Jet2Pt);
2139 list->Add(fh1JetPt);
2140 list->Add(fh2TrackPtJet1);
2141 list->Add(fh2TrackPtJet2);
2142 list->Add(fh2TrackPtJet);
2151 //______________________________________________________________________________________________________
2152 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const char* name, Int_t kindSlices,
2153 Int_t nInvMass, Float_t invMassMin, Float_t invMassMax,
2154 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
2155 Int_t nDeltaPhi, Float_t deltaPhiMin, Float_t deltaPhiMax,
2156 Int_t nDeltaEta, Float_t deltaEtaMin, Float_t deltaEtaMax,
2157 Int_t nDeltaPt, Float_t deltaPtMin, Float_t deltaPtMax,
2158 Int_t nInBal, Float_t inBalMin, Float_t inBalMax)
2160 ,fKindSlices(kindSlices)
2161 ,fNBinsJetInvMass(nInvMass)
2162 ,fJetInvMassMin(invMassMin)
2163 ,fJetInvMassMax(invMassMax)
2164 ,fNBinsJetPt(nJetPt)
2165 ,fJetPtMin(jetPtMin)
2166 ,fJetPtMax(jetPtMax)
2167 ,fNBinsDeltaPhi(nDeltaPhi)
2168 ,fDeltaPhiMin(deltaPhiMin)
2169 ,fDeltaPhiMax(deltaPhiMax)
2170 ,fNBinsDeltaEta(nDeltaEta)
2171 ,fDeltaEtaMin(deltaEtaMin)
2172 ,fDeltaEtaMax(deltaEtaMax)
2173 ,fNBinsDeltaPt(nDeltaPt)
2174 ,fDeltaPtMin(deltaPtMin)
2175 ,fDeltaPtMax(deltaPtMax)
2176 ,fNBinsInBal(nInBal)
2177 ,fInBalMin(inBalMin)
2178 ,fInBalMax(inBalMax)
2186 // default constructor
2190 //______________________________________________________________________________________________________
2191 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const AliFragFuncQADiJetHistos& copy)
2193 ,fKindSlices(copy.fKindSlices)
2194 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
2195 ,fJetInvMassMin(copy.fJetInvMassMin)
2196 ,fJetInvMassMax(copy.fJetInvMassMax)
2197 ,fNBinsJetPt(copy.fNBinsJetPt)
2198 ,fJetPtMin(copy.fJetPtMin)
2199 ,fJetPtMax(copy.fJetPtMax)
2200 ,fNBinsDeltaPhi(copy.fNBinsDeltaPhi)
2201 ,fDeltaPhiMin(copy.fDeltaPhiMin)
2202 ,fDeltaPhiMax(copy.fDeltaPhiMax)
2203 ,fNBinsDeltaEta(copy.fNBinsDeltaEta)
2204 ,fDeltaEtaMin(copy.fDeltaEtaMin)
2205 ,fDeltaEtaMax(copy.fDeltaEtaMax)
2206 ,fNBinsDeltaPt(copy.fNBinsDeltaPt)
2207 ,fDeltaPtMin(copy.fDeltaPtMin)
2208 ,fDeltaPtMax(copy.fDeltaPtMax)
2209 ,fNBinsInBal(copy.fNBinsInBal)
2210 ,fInBalMin(copy.fInBalMin)
2211 ,fInBalMax(copy.fInBalMax)
2212 ,fh2InvMass(copy.fh2InvMass)
2213 ,fh2DeltaPhi(copy.fh2DeltaPhi)
2214 ,fh2DeltaEta(copy.fh2DeltaEta)
2215 ,fh2DeltaPt(copy.fh2DeltaPt)
2216 ,fh2InBal(copy.fh2InBal)
2217 ,fNameQADJ(copy.fNameQADJ)
2219 // default constructor
2223 //_______________________________________________________________________________________________________________________________________________________________
2224 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& o)
2229 TObject::operator=(o);
2230 fKindSlices = o.fKindSlices;
2231 fNBinsJetInvMass = o.fNBinsJetInvMass;
2232 fJetInvMassMin = o.fJetInvMassMin;
2233 fJetInvMassMax = o.fJetInvMassMax;
2234 fNBinsJetPt = o.fNBinsJetPt;
2235 fJetPtMin = o.fJetPtMin;
2236 fJetPtMax = o.fJetPtMax;
2237 fNBinsDeltaPhi = o.fNBinsDeltaPhi;
2238 fDeltaPhiMin = o.fDeltaPhiMin;
2239 fDeltaPhiMax = o.fDeltaPhiMax;
2240 fNBinsDeltaEta = o.fNBinsDeltaEta;
2241 fDeltaEtaMin = o.fDeltaEtaMin;
2242 fDeltaEtaMax = o.fDeltaEtaMax;
2243 fNBinsDeltaPt = o.fNBinsDeltaPt;
2244 fDeltaPtMin = o.fDeltaPtMin;
2245 fDeltaPtMax = o.fDeltaPtMax;
2246 fNBinsInBal = o.fNBinsInBal;
2247 fInBalMin = o.fInBalMin;
2248 fInBalMax = o.fInBalMax;
2249 fh2InvMass = o.fh2InvMass;
2250 fh2DeltaPhi = o.fh2DeltaPhi;
2251 fh2DeltaEta = o.fh2DeltaEta;
2252 fh2DeltaPt = o.fh2DeltaPt;
2253 fh2InBal = o.fh2InBal;
2254 fNameQADJ = o.fNameQADJ;
2260 //_________________________________________________________
2261 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::~AliFragFuncQADiJetHistos()
2265 if(fh2InvMass) delete fh2InvMass;
2266 if(fh2DeltaPhi) delete fh2DeltaPhi;
2267 if(fh2DeltaEta) delete fh2DeltaEta;
2268 if(fh2DeltaPt) delete fh2DeltaPt;
2269 if(fh2InBal) delete fh2InBal;
2272 //________________________________________________________________________
2273 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::DefineQADiJetHistos()
2280 const char *xaxis = "";
2281 if(fKindSlices == 1)
2283 nBins = fNBinsJetInvMass;
2284 min = fJetInvMassMin;
2285 max = fJetInvMassMax;
2286 xaxis = "M_{JJ} [GeV]";
2288 if(fKindSlices == 2 || fKindSlices == 3)
2290 nBins = fNBinsJetPt;
2293 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
2294 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
2298 fh2InvMass = new TH2F(Form("fh2DJInvMassPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsJetInvMass, fJetInvMassMin, fJetInvMassMax);
2299 fh2DeltaPhi = new TH2F(Form("fh2DJDeltaPhiPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPhi, fDeltaPhiMin, fDeltaPhiMax);
2300 fh2DeltaEta = new TH2F(Form("fh2DJDeltaEtaPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaEta, fDeltaEtaMin, fDeltaEtaMax);
2301 fh2DeltaPt = new TH2F(Form("fh2DJDeltaPtPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPt, fDeltaPtMin, fDeltaPtMax);
2302 fh2InBal = new TH2F(Form("fh2DJInBalPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsInBal, fInBalMin, fInBalMax);
2304 AliAnalysisTaskFragmentationFunction::SetProperties(fh2InvMass, xaxis, "Invariant Mass", "Entries");
2305 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPhi, xaxis, "#Delta #phi", "Entries");
2306 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaEta, xaxis, "#Delta #eta", "Entries");
2307 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPt, xaxis, "#Delta p_{T}", "Entries");
2308 AliAnalysisTaskFragmentationFunction::SetProperties(fh2InBal, xaxis, "(p_{T}^{1}-p_{T}^{2})/(p_{T}^{1}+p_{T}^{2})", "Entries");
2312 //________________________________________________________________________
2313 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::FillDiJetQA(Double_t invMass, Double_t deltaPhi, Double_t deltaEta,Double_t deltaPt, Double_t inbal, Double_t jetBin)
2317 fh2InvMass->Fill(jetBin, invMass);
2318 fh2DeltaPhi->Fill(jetBin, deltaPhi);
2319 fh2DeltaEta->Fill(jetBin, deltaEta);
2320 fh2DeltaPt->Fill(jetBin, deltaPt);
2321 fh2InBal->Fill(jetBin, inbal);
2324 //________________________________________________________________________
2325 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AddToOutput(TList* list)const
2327 // add histos to list
2329 list->Add(fh2InvMass);
2330 list->Add(fh2DeltaPhi);
2331 list->Add(fh2DeltaEta);
2332 list->Add(fh2DeltaPt);
2333 list->Add(fh2InBal);
2336 //_________________________________________________________________________________
2337 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AddToOutput(TList* list) const
2339 // add histos to list
2341 list->Add(fh2CosTheta);
2343 list->Add(fh3ThetaZ);
2344 list->Add(fh3JtTheta);
2349 //_________________________________________________________________________________
2350 Bool_t AliAnalysisTaskFragmentationFunction::Notify()
2353 // Implemented Notify() to read the cross sections
2354 // and number of trials from pyxsec.root
2355 // (taken from AliAnalysisTaskJetSpectrum2)
2357 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
2358 Float_t xsection = 0;
2359 Float_t ftrials = 1;
2363 TFile *curfile = tree->GetCurrentFile();
2365 Error("Notify","No current file");
2368 if(!fh1Xsec||!fh1Trials){
2369 Printf("%s%d No Histogram fh1Xsec",(char*)__FILE__,__LINE__);
2372 AliAnalysisHelperJetTasks::PythiaInfoFromFile(curfile->GetName(),xsection,ftrials);
2373 fh1Xsec->Fill("<#sigma>",xsection);
2374 // construct a poor man average trials
2375 Float_t nEntries = (Float_t)tree->GetTree()->GetEntries();
2376 if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries;
2379 // Set seed for backg study
2380 fRandom = new TRandom3();
2381 fRandom->SetSeed(0);
2388 //__________________________________________________________________
2389 void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()
2391 // create output objects
2393 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()");
2395 // create list of tracks and jets
2397 fTracksRec = new TList();
2398 fTracksRec->SetOwner(kFALSE);
2400 fTracksRecCuts = new TList();
2401 fTracksRecCuts->SetOwner(kFALSE);
2403 fTracksGen = new TList();
2404 fTracksGen->SetOwner(kFALSE);
2406 fTracksAODMCCharged = new TList();
2407 fTracksAODMCCharged->SetOwner(kFALSE);
2409 fTracksAODMCChargedSec = new TList();
2410 fTracksAODMCChargedSec->SetOwner(kFALSE);
2412 fTracksRecQualityCuts = new TList();
2413 fTracksRecQualityCuts->SetOwner(kFALSE);
2415 fJetsRec = new TList();
2416 fJetsRec->SetOwner(kFALSE);
2417 if(fBranchRecJets.Contains("KT") && fBckgSubMethod) fJetsRec->SetOwner(kTRUE);
2419 fJetsRecCuts = new TList();
2420 fJetsRecCuts->SetOwner(kFALSE);
2421 if(fBranchRecJets.Contains("KT") && fBckgSubMethod) fJetsRecCuts->SetOwner(kTRUE);
2423 fJetsGen = new TList();
2424 fJetsGen->SetOwner(kFALSE);
2426 fJetsRecEff = new TList();
2427 fJetsRecEff->SetOwner(kFALSE);
2429 fJetsEmbedded = new TList();
2430 fJetsEmbedded->SetOwner(kFALSE);
2432 // fJetsKine = new TList();
2433 // fJetsKine->SetOwner(kTRUE); // delete AOD jets using mom from Kine Tree via TList::Clear()
2436 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
2437 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
2438 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
2440 fBckgJetsRec = new TList();
2441 fBckgJetsRec->SetOwner(kFALSE);
2443 fBckgJetsRecCuts = new TList();
2444 fBckgJetsRecCuts->SetOwner(kFALSE);
2446 fBckgJetsGen = new TList();
2447 fBckgJetsGen->SetOwner(kFALSE);
2451 // Create histograms / output container
2455 fCommonHistList = new TList();
2457 Bool_t oldStatus = TH1::AddDirectoryStatus();
2458 TH1::AddDirectory(kFALSE);
2462 fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 6, -0.5, 5.5);
2463 fh1EvtSelection->GetXaxis()->SetBinLabel(1,"ACCEPTED");
2464 fh1EvtSelection->GetXaxis()->SetBinLabel(2,"event selection: rejected");
2465 fh1EvtSelection->GetXaxis()->SetBinLabel(3,"event class: rejected");
2466 fh1EvtSelection->GetXaxis()->SetBinLabel(4,"vertex Ncontr: rejected");
2467 fh1EvtSelection->GetXaxis()->SetBinLabel(5,"vertex z: rejected");
2468 fh1EvtSelection->GetXaxis()->SetBinLabel(6,"vertex type: rejected");
2470 fh1VertexNContributors = new TH1F("fh1VertexNContributors", "Vertex N contributors", 2500,-.5, 2499.5);
2471 fh1VertexZ = new TH1F("fh1VertexZ", "Vertex z distribution", 30, -15., 15.);
2472 fh1EvtMult = new TH1F("fh1EvtMult","Event multiplicity, track pT cut > 150 MeV/c, |#eta| < 0.9",120,0.,12000.);
2473 fh1EvtCent = new TH1F("fh1EvtCent","centrality",100,0.,100.);
2474 fh2TrackPtVsDCAXY = new TH2F("fh2TrackPtVsDCAXY","",400,-0.02,0.02,100,0.,10.);
2475 fh2TrackPtVsDCAZ = new TH2F("fh2TrackPtVsDCAZ","",100,-0.050,0.050,100,0.,10.);
2477 fh1Xsec = new TProfile("fh1Xsec","xsec from pyxsec.root",1,0,1);
2478 fh1Xsec->GetXaxis()->SetBinLabel(1,"<#sigma>");
2479 fh1Trials = new TH1F("fh1Trials","trials from pyxsec.root",1,0,1);
2480 fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}");
2481 fh1PtHard = new TH1F("fh1PtHard","PYTHIA Pt hard;p_{T,hard}",350,-.5,349.5);
2482 fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",350,-.5,349.5);
2484 fh1nRecJetsCuts = new TH1F("fh1nRecJetsCuts","reconstructed jets per event",10,-0.5,9.5);
2485 fh1nGenJets = new TH1F("fh1nGenJets","generated jets per event",10,-0.5,9.5);
2486 fh1nRecEffJets = new TH1F("fh1nRecEffJets","reconstruction effiency: jets per event",10,-0.5,9.5);
2487 fh1nEmbeddedJets = new TH1F("fh1nEmbeddedJets","embedded jets per event",10,-0.5,9.5);
2489 fh2PtRecVsGenPrim = new TH2F("fh2PtRecVsGenPrim","rec vs gen pt",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax);
2490 fh2PtRecVsGenSec = new TH2F("fh2PtRecVsGenSec","rec vs gen pt",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax);
2495 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
2496 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
2497 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading){
2499 fh1nRecBckgJetsCuts = new TH1F("fh1nRecBckgJetsCuts","reconstructed background jets per event",10,-0.5,9.5);
2500 fh1nGenBckgJets = new TH1F("fh1nGenBckgJets","generated background jets per event",10,-0.5,9.5);
2503 if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp || fBckgType[3]==kBckgPerp || fBckgType[4]==kBckgPerp )
2504 fh1PerpMult = new TH1F("fh1PerpMult","Background multiplicity - Cone perpendicular to leading jet axis",500,0.,500.);
2505 if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide || fBckgType[3]==kBckgASide || fBckgType[4]==kBckgASide)
2506 fh1ASideMult = new TH1F("fh1ASideMult","Background multiplicity - Cone in the away side of leading jet axis",500,0.,500.);
2507 if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow || fBckgType[3]==kBckgASideWindow || fBckgType[4]==kBckgASideWindow)
2508 fh1ASideWindowMult = new TH1F("fh1ASideWindowMult","Background multiplicity - Cone in the away side of leading jet axis",500,0.,500.);
2509 if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow || fBckgType[3]==kBckgPerpWindow || fBckgType[4]==kBckgPerpWindow)
2510 fh1PerpWindowMult = new TH1F("fh1PerpWindowMult","Background multiplicity - Cone in the perp direction of leading jet axis",500,0.,500.);
2511 if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ || fBckgType[3]==kBckgOutLJ || fBckgType[4]==kBckgOutLJ)
2512 fh1OutLeadingMult = new TH1F("fh1OutLeadingMult","Background multiplicity - Cone outside leading jet",500,0,500.);
2513 if(fBckgType[0]==kBckgOutLJStat || fBckgType[1]==kBckgOutLJStat || fBckgType[2]==kBckgOutLJStat || fBckgType[3]==kBckgOutLJStat || fBckgType[4]==kBckgOutLJStat)
2514 fh1OutLeadingStatMult = new TH1F("fh1OutLeadingStatMult","Background multiplicity - Cone outside leading jet",3000,0,3000.);
2515 if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J || fBckgType[3]==kBckgOut2J || fBckgType[4]==kBckgOut2J)
2516 fh1Out2JetsMult = new TH1F("fh1Out2JetsMult","Background multiplicity - Cone outside 2 jets",500,0.,500.);
2517 if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J || fBckgType[3]==kBckgOut3J || fBckgType[4]==kBckgOut3J)
2518 fh1Out3JetsMult = new TH1F("fh1Out3JetsMult","Background multiplicity - Cone outside 3 jets",500,0.,500.);
2519 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters)
2520 fh1MedianClustersMult = new TH1F("fh1MedianClustersMult","Background multiplicity - median cluster",500,0.,500.);
2521 if(fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading || fBckgType[3]==kBckgClustersOutLeading
2522 || fBckgType[4]==kBckgClustersOutLeading)
2523 fh1OutClustersMult = new TH1F("fh1OutClustersMult","Background multiplicity - clusters outside leading jet",3000,0.,3000.);
2527 if(fBranchEmbeddedJets.Length()){
2528 fh1FractionPtEmbedded = new TH1F("fh1FractionPtEmbedded","",200,0,2);
2529 fh1IndexEmbedded = new TH1F("fh1IndexEmbedded","",11,-1,10);
2530 fh2DeltaPtVsJetPtEmbedded = new TH2F("fh2DeltaPtVsJetPtEmbedded","",250,0,250,200,-100,100);
2531 fh2DeltaPtVsRecJetPtEmbedded = new TH2F("fh2DeltaPtVsRecJetPtEmbedded","",250,0,250,200,-100,100);
2532 fh1DeltaREmbedded = new TH1F("fh1DeltaREmbedded","",50,0,0.5);
2533 fh1nEmbeddedJets = new TH1F("fh1nEmbeddedJets","embedded jets per event",10,-0.5,9.5);
2537 fh2ptVsDistNN_pt50_rec = new TH2F("fh2ptVsDistNN_pt50_rec","",200,0,0.2,500,0.,100);
2538 fh2ptVsDistNN_pt50_nonRec = new TH2F("fh2ptVsDistNN_pt50_nonRec","",200,0,0.2,500,0.,100);
2539 fh2ptVsDistNN_pt10_rec = new TH2F("fh2ptVsDistNN_pt10_rec","",200,0,0.2,500,0.,100);
2540 fh2ptVsDistNN_pt10_nonRec = new TH2F("fh2ptVsDistNN_pt10_nonRec","",200,0,0.2,500,0.,100);
2544 if(fQAMode&1){ // track QA
2545 fQATrackHistosRec = new AliFragFuncQATrackHistos("Rec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2546 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2547 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2548 fQATrackHighPtThreshold);
2549 fQATrackHistosRecCuts = new AliFragFuncQATrackHistos("RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2550 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2551 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2552 fQATrackHighPtThreshold);
2553 fQATrackHistosGen = new AliFragFuncQATrackHistos("Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2554 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2555 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2556 fQATrackHighPtThreshold);
2559 if(fQAMode&2){ // jet QA
2560 fQAJetHistosRec = new AliFragFuncQAJetHistos("Rec", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2561 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2562 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2563 fQAJetHistosRecCuts = new AliFragFuncQAJetHistos("RecCuts", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2564 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2565 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2566 fQAJetHistosRecCutsLeading = new AliFragFuncQAJetHistos("RecCutsLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2567 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2568 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2569 fQAJetHistosGen = new AliFragFuncQAJetHistos("Gen", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2570 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2571 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2572 fQAJetHistosGenLeading = new AliFragFuncQAJetHistos("GenLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2573 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2574 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2575 if(fEffMode) fQAJetHistosRecEffLeading = new AliFragFuncQAJetHistos("RecEffLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2576 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2581 fFFHistosRecCuts = new AliFragFuncHistos("RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2582 fFFNBinsPt, fFFPtMin, fFFPtMax,
2583 fFFNBinsXi, fFFXiMin, fFFXiMax,
2584 fFFNBinsZ , fFFZMin , fFFZMax);
2585 fFFHistosRecLeading = new AliFragFuncHistos("RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2586 fFFNBinsPt, fFFPtMin, fFFPtMax,
2587 fFFNBinsXi, fFFXiMin, fFFXiMax,
2588 fFFNBinsZ , fFFZMin , fFFZMax);
2589 fFFHistosRecLeadingTrack = new AliFragFuncHistos("RecLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2590 fFFNBinsPt, fFFPtMin, fFFPtMax,
2591 fFFNBinsXi, fFFXiMin, fFFXiMax,
2592 fFFNBinsZ , fFFZMin , fFFZMax);
2593 fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2594 fFFNBinsPt, fFFPtMin, fFFPtMax,
2595 fFFNBinsXi, fFFXiMin, fFFXiMax,
2596 fFFNBinsZ , fFFZMin , fFFZMax);
2597 fFFHistosGenLeading = new AliFragFuncHistos("GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2598 fFFNBinsPt, fFFPtMin, fFFPtMax,
2599 fFFNBinsXi, fFFXiMin, fFFXiMax,
2600 fFFNBinsZ , fFFZMin , fFFZMax);
2601 fFFHistosGenLeadingTrack = new AliFragFuncHistos("GenLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2602 fFFNBinsPt, fFFPtMin, fFFPtMax,
2603 fFFNBinsXi, fFFXiMin, fFFXiMax,
2604 fFFNBinsZ , fFFZMin , fFFZMax);
2609 fIJHistosRecCuts = new AliFragFuncIntraJetHistos("RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2610 fIJNBinsPt, fIJPtMin, fIJPtMax,
2611 fIJNBinsZ, fIJZMin, fIJZMax,
2612 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2613 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2614 fIJNBinsJt , fIJJtMin , fIJJtMax);
2615 fIJHistosRecLeading = new AliFragFuncIntraJetHistos("RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2616 fIJNBinsPt, fIJPtMin, fIJPtMax,
2617 fIJNBinsZ, fIJZMin, fIJZMax,
2618 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2619 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2620 fIJNBinsJt , fIJJtMin , fIJJtMax);
2621 fIJHistosRecLeadingTrack = new AliFragFuncIntraJetHistos("RecLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2622 fIJNBinsPt, fIJPtMin, fIJPtMax,
2623 fIJNBinsZ, fIJZMin, fIJZMax,
2624 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2625 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2626 fIJNBinsJt , fIJJtMin , fIJJtMax);
2627 fIJHistosGen = new AliFragFuncIntraJetHistos("Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2628 fIJNBinsPt, fIJPtMin, fIJPtMax,
2629 fIJNBinsZ, fIJZMin, fIJZMax,
2630 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2631 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2632 fIJNBinsJt , fIJJtMin , fIJJtMax);
2633 fIJHistosGenLeading = new AliFragFuncIntraJetHistos("GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2634 fIJNBinsPt, fIJPtMin, fIJPtMax,
2635 fIJNBinsZ, fIJZMin, fIJZMax,
2636 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2637 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2638 fIJNBinsJt , fIJJtMin , fIJJtMax);
2639 fIJHistosGenLeadingTrack = new AliFragFuncIntraJetHistos("GenLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2640 fIJNBinsPt, fIJPtMin, fIJPtMax,
2641 fIJNBinsZ, fIJZMin, fIJZMax,
2642 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2643 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2644 fIJNBinsJt , fIJJtMin , fIJJtMax);
2649 fFFDiJetHistosRecCuts = new AliFragFuncDiJetHistos("RecCuts", fDiJetKindBins,
2650 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2651 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2652 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2653 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2654 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2655 fFFDiJetHistosRecLeading = new AliFragFuncDiJetHistos("RecLeading", fDiJetKindBins,
2656 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2657 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2658 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2659 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2660 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2661 fFFDiJetHistosRecLeadingTrack = new AliFragFuncDiJetHistos("RecLeadingTrack", fDiJetKindBins,
2662 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2663 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2664 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2665 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2666 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2668 fFFDiJetHistosGen = new AliFragFuncDiJetHistos("Gen", fDiJetKindBins,
2669 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2670 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2671 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2672 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2673 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2674 fFFDiJetHistosGenLeading = new AliFragFuncDiJetHistos("GenLeading", fDiJetKindBins,
2675 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2676 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2677 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2678 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2679 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2680 fFFDiJetHistosGenLeadingTrack = new AliFragFuncDiJetHistos("GenLeadingTrack", fDiJetKindBins,
2681 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2682 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2683 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2684 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2685 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2689 fQADiJetHistosRecCuts = new AliFragFuncQADiJetHistos("RecCuts", fDiJetKindBins,
2690 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2691 fQADiJetNBinsJetPt, fQADiJetJetPtMin, fQADiJetJetPtMax,
2692 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax ,
2693 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax ,
2694 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax,
2695 fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax);
2696 fQADiJetHistosGen = new AliFragFuncQADiJetHistos("Gen", fDiJetKindBins,
2697 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2698 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2699 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax,
2700 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax,
2701 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax,
2702 fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax);
2710 fQATrackHistosRecEffGen = new AliFragFuncQATrackHistos("RecEffGen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2711 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2712 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2713 fQATrackHighPtThreshold);
2715 fQATrackHistosRecEffRec = new AliFragFuncQATrackHistos("RecEffRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2716 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2717 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2718 fQATrackHighPtThreshold);
2720 fQATrackHistosSecRec = new AliFragFuncQATrackHistos("SecRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2721 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2722 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2723 fQATrackHighPtThreshold);
2726 Int_t nBinsResponseSinglePt[2] = {fFFNBinsPt, fFFNBinsPt};
2727 Double_t binMinResponseSinglePt[2] = {fFFPtMin, fFFPtMin};
2728 Double_t binMaxResponseSinglePt[2] = {fFFPtMax, fFFPtMax};
2729 const char* labelsResponseSinglePt[2] = {"rec p_{T} [GeV/c]", "gen p_{T} [GeV/c]"};
2731 fhnResponseSinglePt = new THnSparseF("fhnResponseSinglePt","track pt gen : track pt rec",2,
2732 nBinsResponseSinglePt,binMinResponseSinglePt,binMaxResponseSinglePt);
2734 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseSinglePt,2,labelsResponseSinglePt);
2737 fh2SingleInvPtRecMnGenVsPtGen = new TH2F("fh2SingleInvPtRecMnGenVsPtGen","",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,200,-1,1);
2740 fFFHistosRecEffGen = new AliFragFuncHistos("RecEffGen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2741 fFFNBinsPt, fFFPtMin, fFFPtMax,
2742 fFFNBinsXi, fFFXiMin, fFFXiMax,
2743 fFFNBinsZ , fFFZMin , fFFZMax);
2745 fFFHistosRecEffRec = new AliFragFuncHistos("RecEffRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2746 fFFNBinsPt, fFFPtMin, fFFPtMax,
2747 fFFNBinsXi, fFFXiMin, fFFXiMax,
2748 fFFNBinsZ , fFFZMin , fFFZMax);
2750 fFFHistosSecRec = new AliFragFuncHistos("SecRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2751 fFFNBinsPt, fFFPtMin, fFFPtMax,
2752 fFFNBinsXi, fFFXiMin, fFFXiMax,
2753 fFFNBinsZ , fFFZMin , fFFZMax);
2756 Int_t nBinsResponseJetTrackPt[3] = {fFFNBinsJetPt,fFFNBinsPt,fFFNBinsPt};
2757 Double_t binMinResponseJetTrackPt[3] = {fFFJetPtMin,fFFPtMin, fFFPtMin};
2758 Double_t binMaxResponseJetTrackPt[3] = {fFFJetPtMax,fFFPtMax,fFFPtMax};
2759 const char* labelsResponseJetTrackPt[3] = { "jet p_{T} [GeV/c]","rec p_{T} [GeV/c]", "gen p_{T} [GeV/c]"};
2761 fhnResponseJetTrackPt = new THnSparseF("fhnResponseJetTrackPt","jet pt:track pt rec:track pt gen",3,
2762 nBinsResponseJetTrackPt,binMinResponseJetTrackPt,binMaxResponseJetTrackPt);
2764 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetTrackPt,3,labelsResponseJetTrackPt);
2766 Int_t nBinsResponseJetZ[3] = {fFFNBinsJetPt, fFFNBinsZ,fFFNBinsZ};
2767 Double_t binMinResponseJetZ[3] = {fFFJetPtMin, fFFZMin, fFFZMin};
2768 Double_t binMaxResponseJetZ[3] = {fFFJetPtMax, fFFZMax, fFFZMax};
2769 const char* labelsResponseJetZ[3] = { "jet p_{T} [GeV/c]","rec z","gen z"};
2771 fhnResponseJetZ = new THnSparseF("fhnResponseJetZ","jet pt:track pt rec:track pt gen",3,
2772 nBinsResponseJetZ,binMinResponseJetZ,binMaxResponseJetZ);
2774 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetZ,3,labelsResponseJetZ);
2776 Int_t nBinsResponseJetXi[3] = {fFFNBinsJetPt, fFFNBinsXi,fFFNBinsXi};
2777 Double_t binMinResponseJetXi[3] = {fFFJetPtMin, fFFXiMin, fFFXiMin};
2778 Double_t binMaxResponseJetXi[3] = {fFFJetPtMax, fFFXiMax, fFFXiMax};
2779 const char* labelsResponseJetXi[3] = { "jet p_{T} [GeV/c]","rec xi","gen xi"};
2781 fhnResponseJetXi = new THnSparseF("fhnResponseJetXi","jet pt:track xi rec:track xi gen",3,
2782 nBinsResponseJetXi,binMinResponseJetXi,binMaxResponseJetXi);
2784 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetXi,3,labelsResponseJetXi);
2787 } // end: efficiency
2793 for(Int_t i=0; i<5; i++){
2794 if(fBckgType[i]==kBckgPerp) title[i]="Perp";
2795 else if(fBckgType[i]==kBckgPerpWindow) title[i]="PerpW";
2796 else if(fBckgType[i]==kBckgASide) title[i]="ASide";
2797 else if(fBckgType[i]==kBckgASideWindow) title[i]="ASideW";
2798 else if(fBckgType[i]==kBckgOutLJ) title[i]="OutLeadingJet";
2799 else if(fBckgType[i]==kBckgOut2J) title[i]="Out2Jets";
2800 else if(fBckgType[i]==kBckgOut3J) title[i]="Out3Jets";
2801 else if(fBckgType[i]==kBckgOutAJ) title[i]="AllJets";
2802 else if(fBckgType[i]==kBckgOutLJStat) title[i]="OutLeadingJetStat";
2803 else if(fBckgType[i]==kBckgOut2JStat) title[i]="Out2JetsStat";
2804 else if(fBckgType[i]==kBckgOut3JStat) title[i]="Out3JetsStat";
2805 else if(fBckgType[i]==kBckgOutAJStat) title[i]="AllJetsStat";
2806 else if(fBckgType[i]==kBckgClustersOutLeading) title[i]="OutClusters";
2807 else if(fBckgType[i]==kBckgClusters) title[i]="MedianClusters";
2808 else printf("Please chose background method number %d!",i);
2812 fQABckgHisto0RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[0]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2813 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2814 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2815 fQATrackHighPtThreshold);
2816 fQABckgHisto0Gen = new AliFragFuncQATrackHistos("Bckg"+title[0]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2817 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2818 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2819 fQATrackHighPtThreshold);
2820 fQABckgHisto1RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[1]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2821 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2822 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2823 fQATrackHighPtThreshold);
2824 fQABckgHisto1Gen = new AliFragFuncQATrackHistos("Bckg"+title[1]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2825 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2826 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2827 fQATrackHighPtThreshold);
2828 fQABckgHisto2RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[2]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2829 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2830 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2831 fQATrackHighPtThreshold);
2832 fQABckgHisto2Gen = new AliFragFuncQATrackHistos("Bckg"+title[2]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2833 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2834 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2835 fQATrackHighPtThreshold);
2836 fQABckgHisto3RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[3]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2837 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2838 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2839 fQATrackHighPtThreshold);
2840 fQABckgHisto3Gen = new AliFragFuncQATrackHistos("Bckg"+title[3]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2841 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2842 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2843 fQATrackHighPtThreshold);
2844 fQABckgHisto4RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[4]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2845 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2846 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2847 fQATrackHighPtThreshold);
2848 fQABckgHisto4Gen = new AliFragFuncQATrackHistos("Bckg"+title[4]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2849 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2850 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2851 fQATrackHighPtThreshold);
2854 } // end: background QA
2857 // outside leading jet or 2 jets or more
2858 fFFBckgHisto0RecCuts = new AliFragFuncHistos("Bckg"+title[0]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2859 fFFNBinsPt, fFFPtMin, fFFPtMax,
2860 fFFNBinsXi, fFFXiMin, fFFXiMax,
2861 fFFNBinsZ , fFFZMin , fFFZMax);
2862 fFFBckgHisto0RecLeading = new AliFragFuncHistos("Bckg"+title[0]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2863 fFFNBinsPt, fFFPtMin, fFFPtMax,
2864 fFFNBinsXi, fFFXiMin, fFFXiMax,
2865 fFFNBinsZ , fFFZMin , fFFZMax);
2866 fFFBckgHisto0Gen = new AliFragFuncHistos("Bckg"+title[0]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2867 fFFNBinsPt, fFFPtMin, fFFPtMax,
2868 fFFNBinsXi, fFFXiMin, fFFXiMax,
2869 fFFNBinsZ , fFFZMin , fFFZMax);
2870 fFFBckgHisto0GenLeading = new AliFragFuncHistos("Bckg"+title[0]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2871 fFFNBinsPt, fFFPtMin, fFFPtMax,
2872 fFFNBinsXi, fFFXiMin, fFFXiMax,
2873 fFFNBinsZ , fFFZMin , fFFZMax);
2875 fFFBckgHisto1RecCuts = new AliFragFuncHistos("Bckg"+title[1]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2876 fFFNBinsPt, fFFPtMin, fFFPtMax,
2877 fFFNBinsXi, fFFXiMin, fFFXiMax,
2878 fFFNBinsZ , fFFZMin , fFFZMax);
2879 fFFBckgHisto1RecLeading = new AliFragFuncHistos("Bckg"+title[1]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2880 fFFNBinsPt, fFFPtMin, fFFPtMax,
2881 fFFNBinsXi, fFFXiMin, fFFXiMax,
2882 fFFNBinsZ , fFFZMin , fFFZMax);
2883 fFFBckgHisto1Gen = new AliFragFuncHistos("Bckg"+title[1]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2884 fFFNBinsPt, fFFPtMin, fFFPtMax,
2885 fFFNBinsXi, fFFXiMin, fFFXiMax,
2886 fFFNBinsZ , fFFZMin , fFFZMax);
2887 fFFBckgHisto1GenLeading = new AliFragFuncHistos("Bckg"+title[1]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2888 fFFNBinsPt, fFFPtMin, fFFPtMax,
2889 fFFNBinsXi, fFFXiMin, fFFXiMax,
2890 fFFNBinsZ , fFFZMin , fFFZMax);
2892 fFFBckgHisto2RecCuts = new AliFragFuncHistos("Bckg"+title[2]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2893 fFFNBinsPt, fFFPtMin, fFFPtMax,
2894 fFFNBinsXi, fFFXiMin, fFFXiMax,
2895 fFFNBinsZ , fFFZMin , fFFZMax);
2896 fFFBckgHisto2RecLeading = new AliFragFuncHistos("Bckg"+title[2]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2897 fFFNBinsPt, fFFPtMin, fFFPtMax,
2898 fFFNBinsXi, fFFXiMin, fFFXiMax,
2899 fFFNBinsZ , fFFZMin , fFFZMax);
2900 fFFBckgHisto2Gen = new AliFragFuncHistos("Bckg"+title[2]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2901 fFFNBinsPt, fFFPtMin, fFFPtMax,
2902 fFFNBinsXi, fFFXiMin, fFFXiMax,
2903 fFFNBinsZ , fFFZMin , fFFZMax);
2904 fFFBckgHisto2GenLeading = new AliFragFuncHistos("Bckg"+title[2]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2905 fFFNBinsPt, fFFPtMin, fFFPtMax,
2906 fFFNBinsXi, fFFXiMin, fFFXiMax,
2907 fFFNBinsZ , fFFZMin , fFFZMax);
2908 fFFBckgHisto3RecCuts = new AliFragFuncHistos("Bckg"+title[3]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2909 fFFNBinsPt, fFFPtMin, fFFPtMax,
2910 fFFNBinsXi, fFFXiMin, fFFXiMax,
2911 fFFNBinsZ , fFFZMin , fFFZMax);
2912 fFFBckgHisto3RecLeading = new AliFragFuncHistos("Bckg"+title[3]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2913 fFFNBinsPt, fFFPtMin, fFFPtMax,
2914 fFFNBinsXi, fFFXiMin, fFFXiMax,
2915 fFFNBinsZ , fFFZMin , fFFZMax);
2916 fFFBckgHisto3Gen = new AliFragFuncHistos("Bckg"+title[3]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2917 fFFNBinsPt, fFFPtMin, fFFPtMax,
2918 fFFNBinsXi, fFFXiMin, fFFXiMax,
2919 fFFNBinsZ , fFFZMin , fFFZMax);
2920 fFFBckgHisto3GenLeading = new AliFragFuncHistos("Bckg"+title[3]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2921 fFFNBinsPt, fFFPtMin, fFFPtMax,
2922 fFFNBinsXi, fFFXiMin, fFFXiMax,
2923 fFFNBinsZ , fFFZMin , fFFZMax);
2924 fFFBckgHisto4RecCuts = new AliFragFuncHistos("Bckg"+title[4]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2925 fFFNBinsPt, fFFPtMin, fFFPtMax,
2926 fFFNBinsXi, fFFXiMin, fFFXiMax,
2927 fFFNBinsZ , fFFZMin , fFFZMax);
2928 fFFBckgHisto4RecLeading = new AliFragFuncHistos("Bckg"+title[4]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2929 fFFNBinsPt, fFFPtMin, fFFPtMax,
2930 fFFNBinsXi, fFFXiMin, fFFXiMax,
2931 fFFNBinsZ , fFFZMin , fFFZMax);
2932 fFFBckgHisto4Gen = new AliFragFuncHistos("Bckg"+title[4]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2933 fFFNBinsPt, fFFPtMin, fFFPtMax,
2934 fFFNBinsXi, fFFXiMin, fFFXiMax,
2935 fFFNBinsZ , fFFZMin , fFFZMax);
2936 fFFBckgHisto4GenLeading = new AliFragFuncHistos("Bckg"+title[4]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2937 fFFNBinsPt, fFFPtMin, fFFPtMax,
2938 fFFNBinsXi, fFFXiMin, fFFXiMax,
2939 fFFNBinsZ , fFFZMin , fFFZMax);
2941 } // end: background FF
2944 fIJBckgHisto0RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2945 fIJNBinsPt, fIJPtMin, fIJPtMax,
2946 fIJNBinsZ, fIJZMin, fIJZMax,
2947 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2948 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2949 fIJNBinsJt , fIJJtMin , fIJJtMax);
2950 fIJBckgHisto0RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2951 fIJNBinsPt, fIJPtMin, fIJPtMax,
2952 fIJNBinsZ, fIJZMin, fIJZMax,
2953 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2954 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2955 fIJNBinsJt , fIJJtMin , fIJJtMax);
2956 fIJBckgHisto0Gen = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2957 fIJNBinsPt, fIJPtMin, fIJPtMax,
2958 fIJNBinsZ, fIJZMin, fIJZMax,
2959 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2960 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2961 fIJNBinsJt , fIJJtMin , fIJJtMax);
2962 fIJBckgHisto0GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2963 fIJNBinsPt, fIJPtMin, fIJPtMax,
2964 fIJNBinsZ, fIJZMin, fIJZMax,
2965 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2966 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2967 fIJNBinsJt , fIJJtMin , fIJJtMax);
2970 fIJBckgHisto1RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2971 fIJNBinsPt, fIJPtMin, fIJPtMax,
2972 fIJNBinsZ, fIJZMin, fIJZMax,
2973 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2974 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2975 fIJNBinsJt , fIJJtMin , fIJJtMax);
2976 fIJBckgHisto1RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2977 fIJNBinsPt, fIJPtMin, fIJPtMax,
2978 fIJNBinsZ, fIJZMin, fIJZMax,
2979 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2980 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2981 fIJNBinsJt , fIJJtMin , fIJJtMax);
2982 fIJBckgHisto1Gen = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2983 fIJNBinsPt, fIJPtMin, fIJPtMax,
2984 fIJNBinsZ, fIJZMin, fIJZMax,
2985 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2986 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2987 fIJNBinsJt , fIJJtMin , fIJJtMax);
2988 fIJBckgHisto1GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2989 fIJNBinsPt, fIJPtMin, fIJPtMax,
2990 fIJNBinsZ, fIJZMin, fIJZMax,
2991 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2992 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2993 fIJNBinsJt , fIJJtMin , fIJJtMax);
2995 fIJBckgHisto2RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2996 fIJNBinsPt, fIJPtMin, fIJPtMax,
2997 fIJNBinsZ, fIJZMin, fIJZMax,
2998 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2999 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3000 fIJNBinsJt , fIJJtMin , fIJJtMax);
3001 fIJBckgHisto2RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3002 fIJNBinsPt, fIJPtMin, fIJPtMax,
3003 fIJNBinsZ, fIJZMin, fIJZMax,
3004 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3005 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3006 fIJNBinsJt , fIJJtMin , fIJJtMax);
3007 fIJBckgHisto2Gen = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3008 fIJNBinsPt, fIJPtMin, fIJPtMax,
3009 fIJNBinsZ, fIJZMin, fIJZMax,
3010 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3011 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3012 fIJNBinsJt , fIJJtMin , fIJJtMax);
3013 fIJBckgHisto2GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3014 fIJNBinsPt, fIJPtMin, fIJPtMax,
3015 fIJNBinsZ, fIJZMin, fIJZMax,
3016 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3017 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3018 fIJNBinsJt , fIJJtMin , fIJJtMax);
3019 } // end: background intra-jet
3020 } // end: background
3023 fPhiCorrHistosJetArea = new AliFragFuncQATrackHistos("JetArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3024 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3025 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3026 fQATrackHighPtThreshold);
3028 fPhiCorrHistosTransverseArea = new AliFragFuncQATrackHistos("TransverseArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3029 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3030 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3031 fQATrackHighPtThreshold);
3033 fPhiCorrHistosAwayArea = new AliFragFuncQATrackHistos("AwayArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3034 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3035 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3036 fQATrackHighPtThreshold);
3037 } // end: phi correlation
3040 // ____________ define histograms ____________________
3043 if(fQAMode&1){ // track QA
3044 fQATrackHistosRec->DefineHistos();
3045 fQATrackHistosRecCuts->DefineHistos();
3046 fQATrackHistosGen->DefineHistos();
3049 if(fQAMode&2){ // jet QA
3050 fQAJetHistosRec->DefineHistos();
3051 fQAJetHistosRecCuts->DefineHistos();
3052 fQAJetHistosRecCutsLeading->DefineHistos();
3053 fQAJetHistosGen->DefineHistos();
3054 fQAJetHistosGenLeading->DefineHistos();
3055 if(fEffMode) fQAJetHistosRecEffLeading->DefineHistos();
3060 fFFHistosRecCuts->DefineHistos();
3061 fFFHistosRecLeading->DefineHistos();
3062 fFFHistosRecLeadingTrack->DefineHistos();
3063 fFFHistosGen->DefineHistos();
3064 fFFHistosGenLeading->DefineHistos();
3065 fFFHistosGenLeadingTrack->DefineHistos();
3069 fIJHistosRecCuts->DefineHistos();
3070 fIJHistosRecLeading->DefineHistos();
3071 fIJHistosRecLeadingTrack->DefineHistos();
3072 fIJHistosGen->DefineHistos();
3073 fIJHistosGenLeading->DefineHistos();
3074 fIJHistosGenLeadingTrack->DefineHistos();
3079 fFFDiJetHistosRecCuts->DefineDiJetHistos();
3080 fFFDiJetHistosRecLeading->DefineDiJetHistos();
3081 fFFDiJetHistosRecLeadingTrack->DefineDiJetHistos();
3082 fFFDiJetHistosGen->DefineDiJetHistos();
3083 fFFDiJetHistosGenLeading->DefineDiJetHistos();
3084 fFFDiJetHistosGenLeadingTrack->DefineDiJetHistos();
3088 fQADiJetHistosRecCuts->DefineQADiJetHistos();
3089 fQADiJetHistosGen->DefineQADiJetHistos();
3095 fQATrackHistosRecEffGen->DefineHistos();
3096 fQATrackHistosRecEffRec->DefineHistos();
3097 fQATrackHistosSecRec->DefineHistos();
3100 fFFHistosRecEffGen->DefineHistos();
3101 fFFHistosRecEffRec->DefineHistos();
3102 fFFHistosSecRec->DefineHistos();
3104 } // end: efficiency
3109 fFFBckgHisto0RecCuts->DefineHistos();
3110 fFFBckgHisto0RecLeading->DefineHistos();
3111 fFFBckgHisto0Gen->DefineHistos();
3112 fFFBckgHisto0GenLeading->DefineHistos();
3113 fFFBckgHisto1RecCuts->DefineHistos();
3114 fFFBckgHisto1RecLeading->DefineHistos();
3115 fFFBckgHisto1Gen->DefineHistos();
3116 fFFBckgHisto1GenLeading->DefineHistos();
3117 fFFBckgHisto2RecCuts->DefineHistos();
3118 fFFBckgHisto2RecLeading->DefineHistos();
3119 fFFBckgHisto2Gen->DefineHistos();
3120 fFFBckgHisto2GenLeading->DefineHistos();
3121 fFFBckgHisto3RecCuts->DefineHistos();
3122 fFFBckgHisto3RecLeading->DefineHistos();
3123 fFFBckgHisto3Gen->DefineHistos();
3124 fFFBckgHisto3GenLeading->DefineHistos();
3125 fFFBckgHisto4RecCuts->DefineHistos();
3126 fFFBckgHisto4RecLeading->DefineHistos();
3127 fFFBckgHisto4Gen->DefineHistos();
3128 fFFBckgHisto4GenLeading->DefineHistos();
3132 fIJBckgHisto0RecCuts->DefineHistos();
3133 fIJBckgHisto0RecLeading->DefineHistos();
3134 fIJBckgHisto0Gen->DefineHistos();
3135 fIJBckgHisto0GenLeading->DefineHistos();
3136 fIJBckgHisto1RecCuts->DefineHistos();
3137 fIJBckgHisto1RecLeading->DefineHistos();
3138 fIJBckgHisto1Gen->DefineHistos();
3139 fIJBckgHisto1GenLeading->DefineHistos();
3140 fIJBckgHisto2RecCuts->DefineHistos();
3141 fIJBckgHisto2RecLeading->DefineHistos();
3142 fIJBckgHisto2Gen->DefineHistos();
3143 fIJBckgHisto2GenLeading->DefineHistos();
3147 fQABckgHisto0RecCuts->DefineHistos();
3148 fQABckgHisto0Gen->DefineHistos();
3149 fQABckgHisto1RecCuts->DefineHistos();
3150 fQABckgHisto1Gen->DefineHistos();
3151 fQABckgHisto2RecCuts->DefineHistos();
3152 fQABckgHisto2Gen->DefineHistos();
3153 fQABckgHisto3RecCuts->DefineHistos();
3154 fQABckgHisto3Gen->DefineHistos();
3155 fQABckgHisto4RecCuts->DefineHistos();
3156 fQABckgHisto4Gen->DefineHistos();
3158 } // end: background
3161 fPhiCorrHistosJetArea->DefineHistos();
3162 fPhiCorrHistosTransverseArea->DefineHistos();
3163 fPhiCorrHistosAwayArea->DefineHistos();
3166 Bool_t genJets = (fJetTypeGen != kJetsUndef) ? kTRUE : kFALSE;
3167 Bool_t genTracks = (fTrackTypeGen != kTrackUndef) ? kTRUE : kFALSE;
3168 Bool_t recJetsEff = (fJetTypeRecEff != kJetsUndef) ? kTRUE : kFALSE;
3170 fCommonHistList->Add(fh1EvtSelection);
3171 fCommonHistList->Add(fh1EvtMult);
3172 fCommonHistList->Add(fh1EvtCent);
3173 fCommonHistList->Add(fh2TrackPtVsDCAXY);
3174 fCommonHistList->Add(fh2TrackPtVsDCAZ);
3175 fCommonHistList->Add(fh1VertexNContributors);
3176 fCommonHistList->Add(fh1VertexZ);
3177 fCommonHistList->Add(fh1nRecJetsCuts);
3178 if(genJets && genTracks){
3179 fCommonHistList->Add(fh1Xsec);
3180 fCommonHistList->Add(fh1Trials);
3181 fCommonHistList->Add(fh1PtHard);
3182 fCommonHistList->Add(fh1PtHardTrials);
3183 if(genJets) fCommonHistList->Add(fh1nGenJets);
3188 fFFHistosRecCuts->AddToOutput(fCommonHistList);
3189 fFFHistosRecLeading->AddToOutput(fCommonHistList);
3190 fFFHistosRecLeadingTrack->AddToOutput(fCommonHistList);
3191 if(genJets && genTracks){
3192 fCommonHistList->Add(fh1Xsec);
3193 fCommonHistList->Add(fh1Trials);
3194 fCommonHistList->Add(fh1PtHard);
3195 fCommonHistList->Add(fh1PtHardTrials);
3196 if(genJets) fCommonHistList->Add(fh1nGenJets);
3198 fFFHistosGen->AddToOutput(fCommonHistList);
3199 fFFHistosGenLeading->AddToOutput(fCommonHistList);
3200 fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList);
3207 fFFBckgHisto0RecCuts->AddToOutput(fCommonHistList);
3208 fFFBckgHisto0RecLeading->AddToOutput(fCommonHistList);
3209 fFFBckgHisto1RecCuts->AddToOutput(fCommonHistList);
3210 fFFBckgHisto1RecLeading->AddToOutput(fCommonHistList);
3211 fFFBckgHisto2RecCuts->AddToOutput(fCommonHistList);
3212 fFFBckgHisto2RecLeading->AddToOutput(fCommonHistList);
3213 fFFBckgHisto3RecCuts->AddToOutput(fCommonHistList);
3214 fFFBckgHisto3RecLeading->AddToOutput(fCommonHistList);
3215 fFFBckgHisto4RecCuts->AddToOutput(fCommonHistList);
3216 fFFBckgHisto4RecLeading->AddToOutput(fCommonHistList);
3218 if(genJets && genTracks){
3219 fFFBckgHisto0Gen->AddToOutput(fCommonHistList);
3220 fFFBckgHisto0GenLeading->AddToOutput(fCommonHistList);
3221 fFFBckgHisto1Gen->AddToOutput(fCommonHistList);
3222 fFFBckgHisto1GenLeading->AddToOutput(fCommonHistList);
3223 fFFBckgHisto2Gen->AddToOutput(fCommonHistList);
3224 fFFBckgHisto2GenLeading->AddToOutput(fCommonHistList);
3225 fFFBckgHisto3Gen->AddToOutput(fCommonHistList);
3226 fFFBckgHisto3GenLeading->AddToOutput(fCommonHistList);
3227 fFFBckgHisto4Gen->AddToOutput(fCommonHistList);
3228 fFFBckgHisto4GenLeading->AddToOutput(fCommonHistList);
3233 fQABckgHisto0RecCuts->AddToOutput(fCommonHistList);
3234 fQABckgHisto1RecCuts->AddToOutput(fCommonHistList);
3235 fQABckgHisto2RecCuts->AddToOutput(fCommonHistList);
3236 fQABckgHisto3RecCuts->AddToOutput(fCommonHistList);
3237 fQABckgHisto4RecCuts->AddToOutput(fCommonHistList);
3238 if(genJets && genTracks){
3239 fQABckgHisto0Gen->AddToOutput(fCommonHistList);
3240 fQABckgHisto1Gen->AddToOutput(fCommonHistList);
3241 fQABckgHisto2Gen->AddToOutput(fCommonHistList);
3242 fQABckgHisto3Gen->AddToOutput(fCommonHistList);
3243 fQABckgHisto4Gen->AddToOutput(fCommonHistList);
3247 if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ || fBckgType[3]==kBckgOutLJ || fBckgType[4]==kBckgOutLJ)
3248 fCommonHistList->Add(fh1OutLeadingMult);
3249 if(fBckgType[0]==kBckgOutLJStat || fBckgType[1]==kBckgOutLJStat || fBckgType[2]==kBckgOutLJStat || fBckgType[3]==kBckgOutLJStat || fBckgType[4]==kBckgOutLJStat)
3250 fCommonHistList->Add(fh1OutLeadingStatMult);
3251 if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp || fBckgType[3]==kBckgPerp || fBckgType[4]==kBckgPerp)
3252 fCommonHistList->Add(fh1PerpMult);
3253 if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide || fBckgType[3]==kBckgASide || fBckgType[4]==kBckgASide)
3254 fCommonHistList->Add(fh1ASideMult);
3255 if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow || fBckgType[3]==kBckgASideWindow || fBckgType[4]==kBckgASideWindow)
3256 fCommonHistList->Add(fh1ASideWindowMult);
3257 if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow || fBckgType[3]==kBckgPerpWindow || fBckgType[4]==kBckgPerpWindow)
3258 fCommonHistList->Add(fh1PerpWindowMult);
3259 if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J || fBckgType[3]==kBckgOut2J || fBckgType[4]==kBckgOut2J)
3260 fCommonHistList->Add(fh1Out2JetsMult);
3261 if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J || fBckgType[3]==kBckgOut3J || fBckgType[4]==kBckgOut3J)
3262 fCommonHistList->Add(fh1Out3JetsMult);
3263 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters)
3264 fCommonHistList->Add(fh1MedianClustersMult);
3265 if(fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading
3266 || fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)
3267 fCommonHistList->Add(fh1OutClustersMult);
3271 if(fBranchEmbeddedJets.Length()){
3272 fCommonHistList->Add(fh1FractionPtEmbedded);
3273 fCommonHistList->Add(fh1IndexEmbedded);
3274 fCommonHistList->Add(fh2DeltaPtVsJetPtEmbedded);
3275 fCommonHistList->Add(fh2DeltaPtVsRecJetPtEmbedded);
3276 fCommonHistList->Add(fh1DeltaREmbedded);
3277 fCommonHistList->Add(fh1nEmbeddedJets);
3281 fCommonHistList->Add(fh2ptVsDistNN_pt50_rec);
3282 fCommonHistList->Add(fh2ptVsDistNN_pt50_nonRec);
3283 fCommonHistList->Add(fh2ptVsDistNN_pt10_rec);
3284 fCommonHistList->Add(fh2ptVsDistNN_pt10_nonRec);
3289 if(fQAMode&1){ // track QA
3290 fQATrackHistosRec->AddToOutput(fCommonHistList);
3291 fQATrackHistosRecCuts->AddToOutput(fCommonHistList);
3292 if(genTracks) fQATrackHistosGen->AddToOutput(fCommonHistList);
3295 if(fQAMode&2){ // jet QA
3296 fQAJetHistosRec->AddToOutput(fCommonHistList);
3297 fQAJetHistosRecCuts->AddToOutput(fCommonHistList);
3298 fQAJetHistosRecCutsLeading->AddToOutput(fCommonHistList);
3299 if(recJetsEff && fEffMode) fQAJetHistosRecEffLeading->AddToOutput(fCommonHistList);
3301 fQAJetHistosGen->AddToOutput(fCommonHistList);
3302 fQAJetHistosGenLeading->AddToOutput(fCommonHistList);
3308 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
3309 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
3310 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)) {
3311 fCommonHistList->Add(fh1nRecBckgJetsCuts);
3312 if(genJets) fCommonHistList->Add(fh1nGenBckgJets);
3317 fPhiCorrHistosJetArea->AddToOutput(fCommonHistList);
3318 fPhiCorrHistosTransverseArea->AddToOutput(fCommonHistList);
3319 fPhiCorrHistosAwayArea->AddToOutput(fCommonHistList);
3324 fIJHistosRecCuts->AddToOutput(fCommonHistList);
3325 fIJHistosRecLeading->AddToOutput(fCommonHistList);
3326 fIJHistosRecLeadingTrack->AddToOutput(fCommonHistList);
3330 fIJBckgHisto0RecCuts->AddToOutput(fCommonHistList);
3331 fIJBckgHisto0RecLeading->AddToOutput(fCommonHistList);
3332 fIJBckgHisto1RecCuts->AddToOutput(fCommonHistList);
3333 fIJBckgHisto1RecLeading->AddToOutput(fCommonHistList);
3334 fIJBckgHisto2RecCuts->AddToOutput(fCommonHistList);
3335 fIJBckgHisto2RecLeading->AddToOutput(fCommonHistList);
3338 if(genJets && genTracks){
3339 fIJHistosGen->AddToOutput(fCommonHistList);
3340 fIJHistosGenLeading->AddToOutput(fCommonHistList);
3341 fIJHistosGenLeadingTrack->AddToOutput(fCommonHistList);
3345 fIJBckgHisto0Gen->AddToOutput(fCommonHistList);
3346 fIJBckgHisto0GenLeading->AddToOutput(fCommonHistList);
3347 fIJBckgHisto1Gen->AddToOutput(fCommonHistList);
3348 fIJBckgHisto1GenLeading->AddToOutput(fCommonHistList);
3349 fIJBckgHisto2Gen->AddToOutput(fCommonHistList);
3350 fIJBckgHisto2GenLeading->AddToOutput(fCommonHistList);
3357 fFFDiJetHistosRecCuts->AddToOutput(fCommonHistList);
3358 fFFDiJetHistosRecLeading->AddToOutput(fCommonHistList);
3359 fFFDiJetHistosRecLeadingTrack->AddToOutput(fCommonHistList);
3360 if(genJets && genTracks){
3361 fFFDiJetHistosGen->AddToOutput(fCommonHistList);
3362 fFFDiJetHistosGenLeading->AddToOutput(fCommonHistList);
3363 fFFDiJetHistosGenLeadingTrack->AddToOutput(fCommonHistList);
3367 fQADiJetHistosRecCuts->AddToOutput(fCommonHistList);
3368 if(genJets && genTracks){
3369 fQADiJetHistosGen->AddToOutput(fCommonHistList);
3374 if(fEffMode && recJetsEff && genTracks){
3376 fQATrackHistosRecEffGen->AddToOutput(fCommonHistList);
3377 fQATrackHistosRecEffRec->AddToOutput(fCommonHistList);
3378 fQATrackHistosSecRec->AddToOutput(fCommonHistList);
3379 fCommonHistList->Add(fhnResponseSinglePt);
3380 fCommonHistList->Add(fh2SingleInvPtRecMnGenVsPtGen);
3383 fFFHistosRecEffGen->AddToOutput(fCommonHistList);
3384 fFFHistosRecEffRec->AddToOutput(fCommonHistList);
3385 fFFHistosSecRec->AddToOutput(fCommonHistList);
3386 fCommonHistList->Add(fhnResponseJetTrackPt);
3387 fCommonHistList->Add(fhnResponseJetZ);
3388 fCommonHistList->Add(fhnResponseJetXi);
3390 fCommonHistList->Add(fh1nRecEffJets);
3391 fCommonHistList->Add(fh2PtRecVsGenPrim);
3392 fCommonHistList->Add(fh2PtRecVsGenSec);
3396 // =========== Switch on Sumw2 for all histos ===========
3397 for (Int_t i=0; i<fCommonHistList->GetEntries(); ++i){
3398 TH1 *h1 = dynamic_cast<TH1*>(fCommonHistList->At(i));
3399 if (h1) h1->Sumw2();
3401 THnSparse *hnSparse = dynamic_cast<THnSparse*>(fCommonHistList->At(i));
3402 if(hnSparse) hnSparse->Sumw2();
3406 TH1::AddDirectory(oldStatus);
3408 PostData(1, fCommonHistList);
3411 //_______________________________________________
3412 void AliAnalysisTaskFragmentationFunction::Init()
3415 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::Init()");
3419 //_____________________________________________________________
3420 void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *)
3423 // Called for each event
3424 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserExec()");
3427 if(fDebug > 1) Printf("Analysis event #%5d", (Int_t) fEntry);
3428 // Trigger selection
3430 AliInputEventHandler* inputHandler = (AliInputEventHandler*)
3431 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
3432 if(!(inputHandler->IsEventSelected() & AliVEvent::kMB)){
3433 if(inputHandler->InheritsFrom("AliESDInputHandler") && fUsePhysicsSelection){ // PhysicsSelection only with ESD input
3434 fh1EvtSelection->Fill(1.);
3435 if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... ");
3436 PostData(1, fCommonHistList);
3441 fESD = dynamic_cast<AliESDEvent*>(InputEvent());
3443 if(fDebug>3) Printf("%s:%d ESDEvent not found in the input", (char*)__FILE__,__LINE__);
3446 fMCEvent = MCEvent();
3448 if(fDebug>3) Printf("%s:%d MCEvent not found in the input", (char*)__FILE__,__LINE__);
3451 // get AOD event from input/ouput
3452 TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
3453 if( handler && handler->InheritsFrom("AliAODInputHandler") ) {
3454 fAOD = ((AliAODInputHandler*)handler)->GetEvent();
3455 if(fUseAODInputJets) fAODJets = fAOD;
3456 if (fDebug > 1) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__);
3459 handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
3460 if( handler && handler->InheritsFrom("AliAODHandler") ) {
3461 fAOD = ((AliAODHandler*)handler)->GetAOD();
3463 if (fDebug > 1) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__);
3467 if(!fAODJets && !fUseAODInputJets){ // case we have AOD in input & output and want jets from output
3468 TObject* outHandler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
3469 if( outHandler && outHandler->InheritsFrom("AliAODHandler") ) {
3470 fAODJets = ((AliAODHandler*)outHandler)->GetAOD();
3471 if (fDebug > 1) Printf("%s:%d jets from output AOD", (char*)__FILE__,__LINE__);
3475 if(fNonStdFile.Length()!=0){
3476 // case we have an AOD extension - fetch the jets from the extended output
3478 AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
3479 fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
3481 if(fDebug>1)Printf("AODExtension not found for %s",fNonStdFile.Data());
3486 Printf("%s:%d AODEvent not found", (char*)__FILE__,__LINE__);
3490 Printf("%s:%d AODEvent with jet branch not found", (char*)__FILE__,__LINE__);
3495 // event selection **************************************************
3496 // *** event class ***
3497 Double_t centPercent = -1;
3500 if(handler->InheritsFrom("AliAODInputHandler")){
3501 // since it is not supported by the helper task define own classes
3502 centPercent = fAOD->GetHeader()->GetCentrality();
3504 if(centPercent>10) cl = 2;
3505 if(centPercent>30) cl = 3;
3506 if(centPercent>50) cl = 4;
3509 cl = AliAnalysisHelperJetTasks::EventClass();
3510 if(fESD) centPercent = fESD->GetCentrality()->GetCentralityPercentile("V0M"); // retrieve value 'by hand'
3513 if(cl!=fEventClass){
3514 // event not in selected event class, reject event
3515 if (fDebug > 1) Printf("%s:%d event not in selected event class: event REJECTED ...",(char*)__FILE__,__LINE__);
3516 fh1EvtSelection->Fill(2.);
3517 PostData(1, fCommonHistList);
3522 // *** vertex cut ***
3523 AliAODVertex* primVtx = fAOD->GetPrimaryVertex();
3524 Int_t nTracksPrim = primVtx->GetNContributors();
3525 fh1VertexNContributors->Fill(nTracksPrim);
3528 if (fDebug > 1) Printf("%s:%d primary vertex selection: %d", (char*)__FILE__,__LINE__,nTracksPrim);
3530 if (fDebug > 1) Printf("%s:%d primary vertex selection: event REJECTED...",(char*)__FILE__,__LINE__);
3531 fh1EvtSelection->Fill(3.);
3532 PostData(1, fCommonHistList);
3536 fh1VertexZ->Fill(primVtx->GetZ());
3538 if(TMath::Abs(primVtx->GetZ())>fMaxVertexZ){
3539 if (fDebug > 1) Printf("%s:%d primary vertex z = %f: event REJECTED...",(char*)__FILE__,__LINE__,primVtx->GetZ());
3540 fh1EvtSelection->Fill(4.);
3541 PostData(1, fCommonHistList);
3545 TString primVtxName(primVtx->GetName());
3547 if(primVtxName.CompareTo("TPCVertex",TString::kIgnoreCase) == 1){
3548 if (fDebug > 1) Printf("%s:%d primary vertex selection: TPC vertex, event REJECTED...",(char*)__FILE__,__LINE__);
3549 fh1EvtSelection->Fill(5.);
3550 PostData(1, fCommonHistList);
3554 if (fDebug > 1) Printf("%s:%d event ACCEPTED ...",(char*)__FILE__,__LINE__);
3555 fh1EvtSelection->Fill(0.);
3556 fh1EvtCent->Fill(centPercent);
3559 //___ get MC information __________________________________________________________________
3561 Double_t ptHard = 0.;
3562 Double_t nTrials = 1; // trials for MC trigger weight for real data
3565 AliGenEventHeader* genHeader = fMCEvent->GenEventHeader();
3569 AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
3570 AliGenHijingEventHeader* hijingGenHeader = 0x0;
3572 if(pythiaGenHeader){
3573 if(fDebug>3) Printf("%s:%d pythiaGenHeader found", (char*)__FILE__,__LINE__);
3574 nTrials = pythiaGenHeader->Trials();
3575 ptHard = pythiaGenHeader->GetPtHard();
3577 fh1PtHard->Fill(ptHard);
3578 fh1PtHardTrials->Fill(ptHard,nTrials);
3581 } else { // no pythia, hijing?
3583 if(fDebug>3) Printf("%s:%d no pythiaGenHeader found", (char*)__FILE__,__LINE__);
3585 hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader);
3586 if(!hijingGenHeader){
3587 Printf("%s:%d no pythiaGenHeader or hjingGenHeader found", (char*)__FILE__,__LINE__);
3589 if(fDebug>3) Printf("%s:%d hijingGenHeader found", (char*)__FILE__,__LINE__);
3593 fh1Trials->Fill("#sum{ntrials}",fAvgTrials);
3598 //___ fetch jets __________________________________________________________________________
3600 Int_t nJ = GetListOfJets(fJetsRec, kJetsRec);
3602 if(nJ>=0) nRecJets = fJetsRec->GetEntries();
3603 if(fDebug>2)Printf("%s:%d Selected Rec jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
3604 if(nJ != nRecJets) Printf("%s:%d Mismatch Selected Rec Jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
3606 Int_t nJCuts = GetListOfJets(fJetsRecCuts, kJetsRecAcceptance);
3607 Int_t nRecJetsCuts = 0;
3608 if(nJCuts>=0) nRecJetsCuts = fJetsRecCuts->GetEntries();
3609 if(fDebug>2)Printf("%s:%d Selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3610 if(nRecJetsCuts != nJCuts) Printf("%s:%d Mismatch selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3611 fh1nRecJetsCuts->Fill(nRecJetsCuts);
3613 if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
3615 Int_t nJGen = GetListOfJets(fJetsGen, fJetTypeGen);
3617 if(nJGen>=0) nGenJets = fJetsGen->GetEntries();
3618 if(fDebug>2)Printf("%s:%d Selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
3620 if(nJGen != nGenJets) Printf("%s:%d Mismatch selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
3621 fh1nGenJets->Fill(nGenJets);
3624 if(fJetTypeRecEff==kJetsKine || fJetTypeRecEff == kJetsKineAcceptance) fJetsRecEff->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
3625 Int_t nJRecEff = GetListOfJets(fJetsRecEff, fJetTypeRecEff);
3626 Int_t nRecEffJets = 0;
3627 if(nJRecEff>=0) nRecEffJets = fJetsRecEff->GetEntries();
3628 if(fDebug>2)Printf("%s:%d Selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
3629 if(nJRecEff != nRecEffJets) Printf("%s:%d Mismatch selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
3630 fh1nRecEffJets->Fill(nRecEffJets);
3633 Int_t nEmbeddedJets = 0;
3634 TArrayI iEmbeddedMatchIndex;
3635 TArrayF fEmbeddedPtFraction;
3638 if(fBranchEmbeddedJets.Length()){
3639 Int_t nJEmbedded = GetListOfJets(fJetsEmbedded, kJetsEmbedded);
3640 if(nJEmbedded>=0) nEmbeddedJets = fJetsEmbedded->GetEntries();
3641 if(fDebug>2)Printf("%s:%d Selected Embedded jets: %d %d",(char*)__FILE__,__LINE__,nJEmbedded,nEmbeddedJets);
3642 if(nJEmbedded != nEmbeddedJets) Printf("%s:%d Mismatch Selected Embedded Jets: %d %d",(char*)__FILE__,__LINE__,nJEmbedded,nEmbeddedJets);
3643 fh1nEmbeddedJets->Fill(nEmbeddedJets);
3645 Float_t maxDist = 0.3;
3647 iEmbeddedMatchIndex.Set(nEmbeddedJets);
3648 fEmbeddedPtFraction.Set(nEmbeddedJets);
3650 iEmbeddedMatchIndex.Reset(-1);
3651 fEmbeddedPtFraction.Reset(0);
3653 AliAnalysisHelperJetTasks::GetJetMatching(fJetsEmbedded, nEmbeddedJets,
3654 fJetsRecCuts, nRecJetsCuts,
3655 iEmbeddedMatchIndex, fEmbeddedPtFraction,
3660 //____ fetch background jets ___________________________________________________
3662 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
3663 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
3664 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
3666 Int_t nBJ = GetListOfBckgJets(fBckgJetsRec, kJetsRec);
3667 Int_t nRecBckgJets = 0;
3668 if(nBJ>=0) nRecBckgJets = fBckgJetsRec->GetEntries();
3669 if(fDebug>2)Printf("%s:%d Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
3670 if(nBJ != nRecBckgJets) Printf("%s:%d Mismatch Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
3672 Int_t nBJCuts = GetListOfBckgJets(fBckgJetsRecCuts, kJetsRecAcceptance);
3673 Int_t nRecBckgJetsCuts = 0;
3674 if(nBJCuts>=0) nRecBckgJetsCuts = fBckgJetsRecCuts->GetEntries();
3675 if(fDebug>2)Printf("%s:%d Selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3676 if(nRecBckgJetsCuts != nBJCuts) Printf("%s:%d Mismatch selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nBJCuts,nRecBckgJetsCuts);
3677 fh1nRecBckgJetsCuts->Fill(nRecBckgJetsCuts);
3679 if(0){ // protection OB - not yet implemented
3680 if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fBckgJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
3681 Int_t nBJGen = GetListOfBckgJets(fBckgJetsGen, fJetTypeGen);
3682 Int_t nGenBckgJets = 0;
3683 if(nBJGen>=0) nGenBckgJets = fBckgJetsGen->GetEntries();
3684 if(fDebug>2)Printf("%s:%d Selected Gen background jets: %d %d",(char*)__FILE__,__LINE__,nBJGen,nGenBckgJets);
3685 if(nBJGen != nGenBckgJets) Printf("%s:%d Mismatch selected Gen background jets: %d %d",(char*)__FILE__,__LINE__,nBJGen,nGenBckgJets);
3686 fh1nGenBckgJets->Fill(nGenBckgJets);
3691 //____ fetch particles __________________________________________________________
3694 if(fUseExtraTracks == 1) nT = GetListOfTracks(fTracksRec, kTrackAODExtra);
3695 else if(fUseExtraTracks == -1) nT = GetListOfTracks(fTracksRec, kTrackAODExtraonly);
3696 else nT = GetListOfTracks(fTracksRec, kTrackAOD);
3699 if(nT>=0) nRecPart = fTracksRec->GetEntries();
3700 if(fDebug>2)Printf("%s:%d Selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
3701 if(nRecPart != nT) Printf("%s:%d Mismatch selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
3705 if(fUseExtraTracks == 1) nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODExtraCuts);
3706 else if(fUseExtraTracks == -1) nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODExtraonlyCuts);
3707 else nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODCuts);
3709 Int_t nRecPartCuts = 0;
3710 if(nTCuts>=0) nRecPartCuts = fTracksRecCuts->GetEntries();
3711 if(fDebug>2)Printf("%s:%d Selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
3712 if(nRecPartCuts != nTCuts) Printf("%s:%d Mismatch selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
3713 fh1EvtMult->Fill(nRecPartCuts);
3717 Int_t nTGen = GetListOfTracks(fTracksGen,fTrackTypeGen);
3719 if(nTGen>=0) nGenPart = fTracksGen->GetEntries();
3720 if(fDebug>2)Printf("%s:%d Selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
3721 if(nGenPart != nTGen) Printf("%s:%d Mismatch selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
3724 //____ analysis, fill histos ___________________________________________________
3729 for(Int_t it=0; it<nRecPart; ++it){
3730 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRec->At(it));
3731 if(part)fQATrackHistosRec->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
3733 for(Int_t it=0; it<nGenPart; ++it){
3734 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksGen->At(it));
3735 if(part)fQATrackHistosGen->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
3738 // fill DCA to prim vertex
3739 for(Int_t it=0; it<nRecPartCuts; ++it){
3740 AliAODTrack *aodtr = dynamic_cast<AliAODTrack*>(fTracksRecCuts->At(it));
3742 if(!aodtr) continue;
3743 if(!primVtx) continue;
3745 Double_t bfield = fAOD->GetMagneticField();
3749 AliAODTrack tmp(*aodtr);
3750 tmp.PropagateToDCA(primVtx, bfield, 5., dz, cov);
3752 Double_t dcaXY = dz[0];
3753 Double_t dcaZ = dz[1];
3755 fh2TrackPtVsDCAXY->Fill(dcaXY,tmp.Pt());
3756 fh2TrackPtVsDCAZ->Fill(dcaZ,tmp.Pt());
3763 for(Int_t ij=0; ij<nRecJets; ++ij){
3764 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRec->At(ij));
3765 if(jet)fQAJetHistosRec->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3770 if(fQAMode || fFFMode || fIJMode || fPhiCorrMode){
3771 for(Int_t ij=0; ij<nRecJetsCuts; ++ij){
3773 AliAODJet* jet = (AliAODJet*)(fJetsRecCuts->At(ij));
3774 if(fQAMode&2) fQAJetHistosRecCuts->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3776 if(ij==0){ // leading jet
3778 if(fQAMode&2) fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );
3781 Double_t ptFractionEmbedded = 0;
3782 AliAODJet* embeddedJet = 0;
3784 if(fBranchEmbeddedJets.Length()){ // find embedded jet
3786 Int_t indexEmbedded = -1;
3787 for(Int_t i=0; i<nEmbeddedJets; i++){
3788 if(iEmbeddedMatchIndex[i] == ij){
3790 ptFractionEmbedded = fEmbeddedPtFraction[i];
3794 fh1IndexEmbedded->Fill(indexEmbedded);
3795 fh1FractionPtEmbedded->Fill(ptFractionEmbedded);
3797 if(indexEmbedded>-1){
3799 embeddedJet = dynamic_cast<AliAODJet*>(fJetsEmbedded->At(indexEmbedded));
3800 if(!embeddedJet) continue;
3802 Double_t deltaPt = jet->Pt() - embeddedJet->Pt();
3803 Double_t deltaR = jet->DeltaR((AliVParticle*) (embeddedJet));
3805 fh2DeltaPtVsJetPtEmbedded->Fill(embeddedJet->Pt(),deltaPt);
3806 fh2DeltaPtVsRecJetPtEmbedded->Fill(jet->Pt(),deltaPt);
3807 fh1DeltaREmbedded->Fill(deltaR);
3811 // get tracks in jet
3812 TList* jettracklist = new TList();
3813 Double_t sumPt = 0.;
3814 Float_t leadTrackPt = 0.;
3815 TLorentzVector* leadTrackV = new TLorentzVector();
3817 if(GetFFRadius()<=0){
3818 GetJetTracksTrackrefs(jettracklist, jet);
3820 if(fUseEmbeddedJetAxis){
3821 if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet, GetFFRadius(), sumPt);
3823 else GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt);
3827 if(ptFractionEmbedded>=fCutFractionPtEmbedded){ // if no embedding: ptFraction = cutFraction = 0
3829 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
3831 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
3832 if(!trackVP)continue;
3833 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3835 Float_t jetPt = jet->Pt();
3836 if(fUseEmbeddedJetPt){
3837 if(embeddedJet) jetPt = embeddedJet->Pt();
3840 Float_t trackPt = trackV->Pt();
3843 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3845 if(fFFMode) fFFHistosRecCuts->FillFF( trackPt, jetPt, incrementJetPt);
3846 if(fIJMode) fIJHistosRecCuts->FillIntraJet( trackV, jet->MomentumVector() );
3848 if(it==0){ // leading track
3849 leadTrackPt = trackPt;
3850 leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3852 if(fFFMode) fFFHistosRecLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE);
3853 if(fIJMode) fIJHistosRecLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
3855 if(fFFMode) fFFHistosRecLeading->FillFF( trackPt, leadTrackPt , incrementJetPt);
3856 if(fIJMode) fIJHistosRecLeading->FillIntraJet( trackV, leadTrackV );
3861 // ff and ij for background study
3863 if(fBckgType[0]!=-1)
3864 FillBckgHistos(fBckgType[0], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3865 fFFBckgHisto0RecCuts, fFFBckgHisto0RecLeading,
3866 fIJBckgHisto0RecCuts, fIJBckgHisto0RecLeading,
3867 fQABckgHisto0RecCuts);
3868 if(fBckgType[1]!=-1)
3869 FillBckgHistos(fBckgType[1], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3870 fFFBckgHisto1RecCuts, fFFBckgHisto1RecLeading,
3871 fIJBckgHisto1RecCuts, fIJBckgHisto1RecLeading,
3872 fQABckgHisto1RecCuts);
3873 if(fBckgType[2]!=-1)
3874 FillBckgHistos(fBckgType[2], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3875 fFFBckgHisto2RecCuts, fFFBckgHisto2RecLeading,
3876 fIJBckgHisto2RecCuts, fIJBckgHisto2RecLeading,
3877 fQABckgHisto2RecCuts);
3878 if(fBckgType[3]!=-1)
3879 FillBckgHistos(fBckgType[3], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3880 fFFBckgHisto3RecCuts, fFFBckgHisto3RecLeading,
3881 fIJBckgHisto3RecCuts, fIJBckgHisto3RecLeading,
3882 fQABckgHisto3RecCuts);
3883 if(fBckgType[4]!=-1)
3884 FillBckgHistos(fBckgType[4], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3885 fFFBckgHisto4RecCuts, fFFBckgHisto4RecLeading,
3886 fIJBckgHisto4RecCuts, fIJBckgHisto4RecLeading,
3887 fQABckgHisto4RecCuts);
3888 } // end if(fBckgMode)
3893 for(Int_t it=0; it<nRecPartCuts; ++it){
3894 AliVParticle *part = (AliVParticle*)(fTracksRecCuts->At(it));
3896 Float_t partEta = part->Eta();
3897 Float_t partPhi = part->Phi();
3898 Float_t partPt = part->Pt();
3900 fPhiCorrHistosJetArea->FillTrackQA( partEta,
3901 TVector2::Phi_mpi_pi( jet->Phi() - partPhi ),
3905 fPhiCorrHistosTransverseArea->FillTrackQA( partEta,
3906 TVector2::Phi_mpi_pi( jet->Phi() - partPhi + TMath::Pi()/2),
3910 fPhiCorrHistosAwayArea->FillTrackQA( partEta,
3911 TVector2::Phi_mpi_pi( jet->Phi() - partPhi + TMath::Pi()),
3915 } // end: phi-correlation
3918 delete jettracklist;
3920 } // end: cut embedded ratio
3921 } // end: leading jet
3922 } // end: rec. jets after cuts
3925 for(Int_t ij=0; ij<nGenJets; ++ij){
3927 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));
3929 if(fQAMode&2) fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3931 if(ij==0){ // leading jet
3933 if(fQAMode&2) fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3935 TList* jettracklist = new TList();
3936 Double_t sumPt = 0.;
3937 Float_t leadTrackPt = 0.;
3938 TLorentzVector* leadTrackV = new TLorentzVector();
3940 if(GetFFRadius()<=0){
3941 GetJetTracksTrackrefs(jettracklist, jet);
3943 GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt);
3946 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
3948 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
3949 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3951 Float_t jetPt = jet->Pt();
3952 Float_t trackPt = trackV->Pt();
3954 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3956 if(fFFMode) fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt );
3957 if(fIJMode) fIJHistosGen->FillIntraJet( trackV, jet->MomentumVector() );
3959 if(it==0){ // leading track
3960 leadTrackPt = trackPt;
3961 leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3963 if(fFFMode) fFFHistosGenLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE );
3964 if(fIJMode) fIJHistosGenLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
3966 if(fFFMode) fFFHistosGenLeading->FillFF( trackPt, leadTrackPt, incrementJetPt );
3967 if(fIJMode) fIJHistosGenLeading->FillIntraJet( trackV, leadTrackV );
3973 delete jettracklist;
3976 } // end: QA, FF and intra-jet
3978 //_______ DiJet part _____________________________________________________
3980 if (nRecJetsCuts > 1)
3982 AliAODJet* jet1 = (AliAODJet*)(fJetsRecCuts->At(0));
3983 AliAODJet* jet2 = (AliAODJet*)(fJetsRecCuts->At(1));
3985 // DiJet deltaphi calculation
3986 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
3987 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
3988 Double_t deltaPhi = TMath::Abs(phi1-phi2);
3989 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
3991 // DiJet CDF cut calculation
3992 Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
3993 Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
3994 Double_t sumEt = et1 + et2;
3995 Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
3996 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
3998 // DiJet events selection
3999 Bool_t positionCut = 0;
4000 Bool_t positionEnergyCut = 0;
4004 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
4005 // Position-Energy cut :
4006 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
4008 if (ratio < fDiJetCDFCut) cdfCut = 1;
4012 if (fDiJetCut == 1 && positionCut == 1) go = 1;
4013 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
4014 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
4018 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
4019 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
4020 Double_t inbal = (jet1->Pt()-jet2->Pt())/(jet1->Pt()+jet2->Pt());
4021 Double_t meanEt = (Double_t)((et1+et2)/2.);
4022 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
4024 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
4028 if(fDJMode&2) fQADiJetHistosRecCuts->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, inbal, jetBin);
4031 TList* jettracklist1 = new TList();
4032 Double_t sumPt1 = 0.;
4033 Float_t leadTrackPt1 = 0;
4035 TList* jettracklist2 = new TList();
4036 Double_t sumPt2 = 0.;
4037 Float_t leadTrackPt2 = 0;
4039 if(GetFFRadius()<=0)
4041 GetJetTracksTrackrefs(jettracklist1, jet1);
4042 GetJetTracksTrackrefs(jettracklist2, jet2);
4046 GetJetTracksPointing(fTracksRecCuts, jettracklist1, jet1, GetFFRadius(), sumPt1);
4047 GetJetTracksPointing(fTracksRecCuts, jettracklist2, jet2, GetFFRadius(), sumPt2);
4050 Int_t nTracks = jettracklist1->GetSize();
4051 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
4053 for(Int_t it=0; it<nTracks; ++it)
4055 if (it < jettracklist1->GetSize())
4057 AliVParticle *vp = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)));
4058 Float_t trackPt1 = (vp?vp->Pt():0);
4059 Float_t jetPt1 = jet1->Pt();
4061 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4063 fFFDiJetHistosRecCuts->FillDiJetFF(1, trackPt1, jetPt1, jetBin, incrementJetPt);
4064 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt1, jetPt1, jetBin, incrementJetPt);
4068 leadTrackPt1 = trackPt1;
4070 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(1, leadTrackPt1, jetPt1, jetBin, kTRUE);
4071 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt1, jetPt1, jetBin, kTRUE);
4074 fFFDiJetHistosRecLeading->FillDiJetFF(1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4075 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4078 if (it < jettracklist2->GetSize())
4080 Float_t trackPt2 = ((AliVParticle*)(jettracklist2->At(it)))->Pt();
4081 Float_t jetPt2 = jet2->Pt();
4083 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4085 fFFDiJetHistosRecCuts->FillDiJetFF(2, trackPt2, jetPt2, jetBin, incrementJetPt);
4086 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt2, jetPt2, jetBin, incrementJetPt);
4090 leadTrackPt2 = trackPt2;
4092 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(2, leadTrackPt2, jetPt2, jetBin, kTRUE);
4093 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt2, jetPt2, jetBin, kTRUE);
4096 fFFDiJetHistosRecLeading->FillDiJetFF(2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4097 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4099 } // End loop on tracks
4101 delete jettracklist1;
4102 delete jettracklist2;
4104 } // End if(jetBin > 0)
4105 else { Printf("Jet bins for di-jet studies not set !");}
4107 } // End if(nRecJets > 1)
4111 AliAODJet* jet1 = dynamic_cast<AliAODJet*>(fJetsGen->At(0));
4112 AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsGen->At(1));
4115 Double_t deltaPhi = 0;
4116 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
4117 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
4118 deltaPhi = TMath::Abs(phi1-phi2);
4119 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
4121 Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
4122 Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
4123 Double_t sumEt = et1 + et2;
4124 Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
4125 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
4127 // DiJet events selection
4128 Bool_t positionCut = 0;
4129 Bool_t positionEnergyCut = 0;
4133 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
4134 // Position-Energy cut :
4135 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
4137 if (ratio < fDiJetCDFCut) cdfCut = 1;
4141 if (fDiJetCut == 1 && positionCut == 1) go = 1;
4142 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
4143 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
4147 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
4148 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
4149 Double_t inbal = (jet1->Pt()-jet2->Pt())/(jet1->Pt()+jet2->Pt());
4150 Double_t meanEt = (Double_t)((et1+et2)/2.);
4151 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
4153 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
4157 if(fDJMode&2) fQADiJetHistosGen->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, inbal, jetBin);
4160 TList* jettracklist1 = new TList();
4161 Double_t sumPt1 = 0.;
4162 Float_t leadTrackPt1 = 0.;
4164 TList* jettracklist2 = new TList();
4165 Double_t sumPt2 = 0.;
4166 Float_t leadTrackPt2 = 0.;
4168 if(GetFFRadius()<=0)
4170 GetJetTracksTrackrefs(jettracklist1, jet1);
4171 GetJetTracksTrackrefs(jettracklist2, jet2);
4175 GetJetTracksPointing(fTracksGen, jettracklist1, jet1, GetFFRadius(), sumPt1);
4176 GetJetTracksPointing(fTracksGen, jettracklist2, jet2, GetFFRadius(), sumPt2);
4179 Int_t nTracks = jettracklist1->GetSize();
4180 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
4182 for(Int_t it=0; it<nTracks; ++it)
4184 if (it < jettracklist1->GetSize())
4186 Float_t trackPt1 = ((AliVParticle*)jettracklist1->At(it))->Pt();
4187 Float_t jetPt1 = jet1->Pt();
4189 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4191 fFFDiJetHistosGen->FillDiJetFF( 1, trackPt1, jetPt1, jetBin, incrementJetPt);
4192 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt1, jetPt1, jetBin, incrementJetPt);
4196 leadTrackPt1 = trackPt1;
4198 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 1, leadTrackPt1, jetPt1, jetBin, kTRUE);
4199 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt1, jetPt1, jetBin, kTRUE);
4202 fFFDiJetHistosGenLeading->FillDiJetFF( 1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4203 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4206 if (it < jettracklist2->GetSize())
4208 Float_t trackPt2 = ((AliVParticle*)jettracklist2->At(it))->Pt();
4209 Float_t jetPt2 = jet2->Pt();
4211 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4213 fFFDiJetHistosGen->FillDiJetFF( 2, trackPt2, jetPt2, jetBin, incrementJetPt);
4214 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt2, jetPt2, jetBin, incrementJetPt);
4218 leadTrackPt2 = trackPt2;
4220 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 2, leadTrackPt2, jetPt2, jetBin, kTRUE);
4221 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt2, jetPt2, jetBin, kTRUE);
4224 fFFDiJetHistosGenLeading->FillDiJetFF( 2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4225 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4227 } // End loop on tracks
4229 delete jettracklist1;
4230 delete jettracklist2;
4232 } // End if(jetBin > 0)
4233 else { Printf("Jet bins for di-jet studies not set !");}
4235 }// end if jet1 and jet2
4236 } // End if(nGenJets > 1)
4239 // ____ efficiency _______________________________
4241 if(fEffMode && (fJetTypeRecEff != kJetsUndef)){
4243 // arrays holding for each generated particle the reconstructed AOD track index & isPrimary flag, are initialized in AssociateGenRec(...) function
4247 // array holding for each reconstructed AOD track generated particle index, initialized in AssociateGenRec(...) function
4250 // ... and another set for secondaries (secondary MC tracks are stored in a different list)
4251 TArrayI indexAODTrSec;
4253 TArrayI indexMCTrSec;
4255 Int_t nTracksAODMCCharged = GetListOfTracks(fTracksAODMCCharged, kTrackAODMCCharged);
4256 if(fDebug>2)Printf("%s:%d selected AODMC tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCCharged);
4258 Int_t nTracksAODMCChargedSec = GetListOfTracks(fTracksAODMCChargedSec, kTrackAODMCChargedSec);
4259 if(fDebug>2)Printf("%s:%d selected AODMC secondary tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCChargedSec);
4261 Int_t nTracksRecQualityCuts = GetListOfTracks(fTracksRecQualityCuts, kTrackAODQualityCuts);
4262 if(fDebug>2)Printf("%s:%d selected rec tracks quality after cuts, full acceptance/pt : %d ",(char*)__FILE__,__LINE__,nTracksRecQualityCuts);
4264 // associate gen and rec tracks, store indices in TArrays
4265 AssociateGenRec(fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,indexMCTr,isGenPrim,fh2PtRecVsGenPrim);
4266 AssociateGenRec(fTracksAODMCChargedSec,fTracksRecQualityCuts,indexAODTrSec,indexMCTrSec,isGenSec,fh2PtRecVsGenSec);
4269 if(fQAMode&1) FillSingleTrackHistosRecGen(fQATrackHistosRecEffGen,fQATrackHistosRecEffRec,fTracksAODMCCharged,indexAODTr,isGenPrim);
4270 if(fQAMode&1) FillSingleTrackResponse(fhnResponseSinglePt,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim);
4273 if(fQAMode&1) FillSingleTrackHistosRecGen(0x0,fQATrackHistosSecRec,fTracksAODMCChargedSec,indexAODTrSec,isGenSec);
4275 // high-pt occupancy effect
4276 FillTwoTrackHistosRecGen(fTracksAODMCCharged, /*fTracksRecQualityCuts,indexAODTr,*/ isGenPrim);
4280 Double_t sumPtGenLeadingJetRecEff = 0;
4281 Double_t sumPtGenLeadingJetSec = 0;
4282 Double_t sumPtRecLeadingJetRecEff = 0;
4284 for(Int_t ij=0; ij<nRecEffJets; ++ij){
4286 AliAODJet* jet = (AliAODJet*)(fJetsRecEff->At(ij));
4288 if(ij==0){ // leading jet
4290 TList* jettracklistGenPrim = new TList();
4291 GetJetTracksPointing(fTracksAODMCCharged, jettracklistGenPrim, jet, GetFFRadius(), sumPtGenLeadingJetRecEff); // for efficiency: gen tracks from pointing with gen/rec jet
4293 TList* jettracklistGenSec = new TList();
4294 GetJetTracksPointing(fTracksAODMCChargedSec, jettracklistGenSec, jet, GetFFRadius(), sumPtGenLeadingJetSec); // for efficiency: gen tracks from pointing with gen/rec jet
4296 TList* jettracklistRec = new TList();
4297 GetJetTracksPointing(fTracksRecCuts,jettracklistRec, jet, GetFFRadius(), sumPtRecLeadingJetRecEff); // bin efficiency in jet pt bins using rec tracks
4299 Double_t jetEta = jet->Eta();
4300 Double_t jetPhi = TVector2::Phi_0_2pi(jet->Phi());
4302 if(fQAMode&2) fQAJetHistosRecEffLeading->FillJetQA( jetEta, jetPhi, sumPtGenLeadingJetRecEff );
4304 if(fFFMode) FillJetTrackHistosRecGen(fFFHistosRecEffGen,fFFHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4305 jettracklistGenPrim,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
4307 if(fFFMode) FillJetTrackResponse(fhnResponseJetTrackPt,fhnResponseJetZ,fhnResponseJetXi,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4308 jettracklistGenPrim,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim,fUseResponseRecJetPtBins);
4310 // secondaries: use jet pt from primaries
4311 if(fFFMode) FillJetTrackHistosRecGen(0x0,fFFHistosSecRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4312 jettracklistGenSec,fTracksAODMCChargedSec,indexAODTrSec,isGenSec,fUseRecEffRecJetPtBins);
4314 delete jettracklistGenPrim;
4315 delete jettracklistGenSec;
4316 delete jettracklistRec;
4321 // bckgr eff: complementary cones
4325 for(Int_t ij=0; ij<nRecEffJets; ++ij){
4327 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecEff->At(ij));
4329 if(ij==0){ // leading jet
4331 TList* perpjettracklistGen = new TList();
4332 Double_t sumPtGen = 0.;
4334 GetTracksTiltedwrpJetAxis(TMath::Pi()/2.,fTracksGen, perpjettracklistGen, jet, GetFFRadius() , sumPtGen); // for efficiency: gen tracks perp to gen/rec jet
4336 // here could be your histos !!!
4337 // FillJetTrackRecEffHisto(fFFBckgrPerpHistosRecEffGen,fFFBckgrPerpHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,perpjettracklistGen,
4338 // fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
4340 delete perpjettracklistGen;
4345 // bgr eff: outside N leading jets
4351 TList* outjettracklistGen = new TList();
4352 Double_t sumPtGen = 0.;
4354 GetTracksOutOfNJets(nCases, fTracksGen, outjettracklistGen, fJetsRecEff, sumPtGen); // for efficiency: gen tracks outide n gen/rec jets
4356 // here could be your histos !!!
4357 // FillJetTrackRecEffHisto(fFFBckgrOutHistosRecEffGen,fFFBckgrOutHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4358 // outjettracklistGen,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
4360 delete outjettracklistGen;
4364 //___________________
4366 fTracksRec->Clear();
4367 fTracksRecCuts->Clear();
4368 fTracksGen->Clear();
4369 fTracksAODMCCharged->Clear();
4370 fTracksAODMCChargedSec->Clear();
4371 fTracksRecQualityCuts->Clear();
4374 fJetsRecCuts->Clear();
4376 fJetsRecEff->Clear();
4377 fJetsEmbedded->Clear();
4381 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
4382 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
4383 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
4385 fBckgJetsRec->Clear();
4386 fBckgJetsRecCuts->Clear();
4387 fBckgJetsGen->Clear();
4392 PostData(1, fCommonHistList);
4395 //________________________________________________________________________________________
4396 Double_t AliAnalysisTaskFragmentationFunction::InvMass(const AliAODJet* jet1, const AliAODJet* jet2)
4398 // cald DiJet inv mass
4400 Double_t invMass = 0.;
4401 invMass = TMath::Sqrt(pow(jet1->E()+jet2->E(),2) - pow(jet1->Px()+jet2->Px(),2) -
4402 pow(jet1->Py()+jet2->Py(),2) - pow(jet1->Pz()+jet2->Pz(),2));
4408 //________________________________________________________________________________________
4409 Double_t AliAnalysisTaskFragmentationFunction::GetDiJetBin(Double_t invMass, Double_t leadingJetPt, Double_t EtMean, Int_t kindBins)
4411 // calc DiJet bin according to kindBins parameter
4413 Double_t jetBinOk = 0.;
4414 Double_t jetBin = 0.;
4416 Float_t stepInvMass = (fDiJetJetInvMassMax - fDiJetJetInvMassMin)/fDiJetNBinsJetInvMass;
4417 Float_t stepPt = (fDiJetJetPtMax - fDiJetJetPtMin)/fDiJetNBinsJetPt;
4421 for(Int_t i=0; i<fDiJetNBinsJetInvMass; ++i)
4423 jetBin = fDiJetJetInvMassMin + i*stepInvMass + stepInvMass/2.;
4424 if(((fDiJetJetInvMassMin+i*stepInvMass) <= invMass) &&
4425 (fDiJetJetInvMassMin + (i+1)*stepInvMass) > invMass) {jetBinOk = jetBin; break;}
4426 else jetBinOk = -1.;
4429 else if (kindBins == 3)
4431 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
4433 jetBin = fDiJetJetPtMin + i*stepPt + stepPt/2.;
4434 if(((fDiJetJetPtMin+i*stepPt) <= EtMean) &&
4435 (fDiJetJetPtMin + (i+1)*stepPt) > EtMean) {jetBinOk = jetBin; break;}
4436 else jetBinOk = -1.;
4439 else if (kindBins == 2)
4441 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
4443 jetBin = fDiJetJetPtMin + i*stepPt + stepPt/2.;
4444 if(((fDiJetJetPtMin+i*stepPt) <= leadingJetPt) &&
4445 (fDiJetJetPtMin + (i+1)*stepPt) > leadingJetPt) {jetBinOk = jetBin; break;}
4446 else jetBinOk = -1.;
4449 else {Printf("WARNING: kindBins wrongly set ! Please make sure to call SetKindSlices() and set the kind parameter to 1, 2 or 3.\n");}
4456 //______________________________________________________________
4457 void AliAnalysisTaskFragmentationFunction::Terminate(Option_t *)
4461 if(fDebug > 1) printf("AliAnalysisTaskFragmentationFunction::Terminate() \n");
4464 //_________________________________________________________________________________
4465 Int_t AliAnalysisTaskFragmentationFunction::GetListOfTracks(TList *list, Int_t type)
4467 // fill list of tracks selected according to type
4469 if(fDebug > 2) Printf("%s:%d Selecting tracks with %d", (char*)__FILE__,__LINE__,type);
4472 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
4476 if(!fAOD) return -1;
4478 if(!fAOD->GetTracks()) return 0;
4480 if(type==kTrackUndef) return 0;
4484 if(type==kTrackAODExtraCuts || type==kTrackAODExtraonlyCuts || type==kTrackAODExtra || type==kTrackAODExtraonly){
4486 TClonesArray *aodExtraTracks = dynamic_cast<TClonesArray*>(fAOD->FindListObject("aodExtraTracks"));
4487 if(!aodExtraTracks)return iCount;
4488 for(int it =0; it<aodExtraTracks->GetEntries(); it++) {
4489 AliVParticle *track = dynamic_cast<AliVParticle*> ((*aodExtraTracks)[it]);
4490 if (!track) continue;
4492 AliAODTrack *tr = dynamic_cast<AliAODTrack*> (track);
4495 if(type==kTrackAODExtraCuts || type==kTrackAODExtraonlyCuts){
4497 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask))) continue;
4499 if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue;
4500 if(tr->Phi() < fTrackPhiMin || tr->Phi() > fTrackPhiMax) continue;
4501 if(tr->Pt() < fTrackPtCut) continue;
4509 if(type==kTrackAODCuts || type==kTrackAODQualityCuts || type==kTrackAOD || type==kTrackAODExtraCuts || type==kTrackAODExtra){
4511 // all rec. tracks, esd filter mask, eta range
4513 for(Int_t it=0; it<fAOD->GetNumberOfTracks(); ++it){
4514 AliAODTrack *tr = fAOD->GetTrack(it);
4516 if(type == kTrackAODCuts || type==kTrackAODQualityCuts || type==kTrackAODExtraCuts){
4518 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask))) continue;
4519 if(type == kTrackAODCuts){
4520 if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue;
4521 if(tr->Phi() < fTrackPhiMin || tr->Phi() > fTrackPhiMax) continue;
4522 if(tr->Pt() < fTrackPtCut) continue;
4529 else if (type==kTrackKineAll || type==kTrackKineCharged || type==kTrackKineChargedAcceptance){
4530 // kine particles, all or rather charged
4531 if(!fMCEvent) return iCount;
4533 for(Int_t it=0; it<fMCEvent->GetNumberOfTracks(); ++it){
4534 AliMCParticle* part = (AliMCParticle*) fMCEvent->GetTrack(it);
4536 if(type == kTrackKineCharged || type == kTrackKineChargedAcceptance){
4537 if(part->Charge()==0) continue;
4539 if(type == kTrackKineChargedAcceptance &&
4540 ( part->Eta() < fTrackEtaMin
4541 || part->Eta() > fTrackEtaMax
4542 || part->Phi() < fTrackPhiMin
4543 || part->Phi() > fTrackPhiMax
4544 || part->Pt() < fTrackPtCut)) continue;
4551 else if (type==kTrackAODMCCharged || type==kTrackAODMCAll || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSec) {
4552 // MC particles (from AOD), physical primaries, all or rather charged or rather charged within acceptance
4553 if(!fAOD) return -1;
4555 TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
4556 if(!tca)return iCount;
4558 for(int it=0; it<tca->GetEntriesFast(); ++it){
4559 AliAODMCParticle *part = dynamic_cast<AliAODMCParticle*>(tca->At(it));
4561 if(type != kTrackAODMCChargedSec && !part->IsPhysicalPrimary())continue;
4562 if(type == kTrackAODMCChargedSec && part->IsPhysicalPrimary())continue;
4564 if (type==kTrackAODMCCharged || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSec){
4565 if(part->Charge()==0) continue;
4566 if(type==kTrackAODMCChargedAcceptance &&
4567 ( part->Eta() > fTrackEtaMax
4568 || part->Eta() < fTrackEtaMin
4569 || part->Phi() > fTrackPhiMax
4570 || part->Phi() < fTrackPhiMin
4571 || part->Pt() < fTrackPtCut)) continue;
4583 // _______________________________________________________________________________
4584 Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t type)
4586 // fill list of jets selected according to type
4589 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
4593 if(type == kJetsRec || type == kJetsRecAcceptance){ // reconstructed jets
4595 if(fBranchRecJets.Length()==0){
4596 Printf("%s:%d no rec jet branch specified", (char*)__FILE__,__LINE__);
4597 if(fDebug>1)fAOD->Print();
4601 TClonesArray *aodRecJets = 0;
4602 if(fBranchRecJets.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchRecJets.Data()));
4603 if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchRecJets.Data()));
4604 if(fAODExtension&&!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchRecJets.Data()));
4607 if(fBranchRecJets.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchRecJets.Data());
4608 if(fDebug>1)fAOD->Print();
4612 // Reorder jet pt and fill new temporary AliAODJet objects
4615 for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){
4617 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));
4620 if( tmp->Pt() < fJetPtCut ) continue;
4621 if( type == kJetsRecAcceptance &&
4622 ( tmp->Eta() < fJetEtaMin
4623 || tmp->Eta() > fJetEtaMax
4624 || tmp->Phi() < fJetPhiMin
4625 || tmp->Phi() > fJetPhiMax )) continue;
4627 if(fBckgSubMethod && fBranchRecJets.Contains("B0") &&
4628 fBranchRecJets.Contains("KT")) {
4630 AliAODJet *tmpJet = GetAODBckgSubJet(tmp, fBckgSubMethod);
4632 if(!tmpJet) continue;
4649 else if(type == kJetsKine || type == kJetsKineAcceptance){
4655 if(fDebug>1) Printf("%s:%d no mcEvent",(char*)__FILE__,__LINE__);
4659 AliGenEventHeader* genHeader = fMCEvent->GenEventHeader();
4660 AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
4661 AliGenHijingEventHeader* hijingGenHeader = 0x0;
4663 if(!pythiaGenHeader){
4664 hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader);
4666 if(!hijingGenHeader){
4667 Printf("%s:%d no pythiaGenHeader or hijingGenHeader found", (char*)__FILE__,__LINE__);
4670 TLorentzVector mom[4];
4672 hijingGenHeader->GetJets(mom[0], mom[1], mom[2], mom[3]);
4674 for(Int_t i=0; i<2; ++i){
4675 if(!mom[i].Pt()) continue;
4676 jet[i] = new AliAODJet(mom[i]);
4678 if( type == kJetsKineAcceptance &&
4679 ( jet[i]->Eta() < fJetEtaMin
4680 || jet[i]->Eta() > fJetEtaMax
4681 || jet[i]->Phi() < fJetPhiMin
4682 || jet[i]->Phi() > fJetPhiMax )) continue;
4692 // fetch the pythia generated jets
4693 for(int ip=0; ip<pythiaGenHeader->NTriggerJets(); ++ip){
4696 AliAODJet *jet = new AliAODJet();
4697 pythiaGenHeader->TriggerJet(ip, p);
4698 jet->SetPxPyPzE(p[0], p[1], p[2], p[3]);
4700 if( type == kJetsKineAcceptance &&
4701 ( jet->Eta() < fJetEtaMin
4702 || jet->Eta() > fJetEtaMax
4703 || jet->Phi() < fJetPhiMin
4704 || jet->Phi() > fJetPhiMax )) continue;
4712 else if(type == kJetsGen || type == kJetsGenAcceptance ){
4714 if(fBranchGenJets.Length()==0){
4715 if(fDebug>1) Printf("%s:%d no gen jet branch specified", (char*)__FILE__,__LINE__);
4719 TClonesArray *aodGenJets = 0;
4720 if(fBranchGenJets.Length()) aodGenJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchGenJets.Data()));
4721 if(!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchGenJets.Data()));
4722 if(fAODExtension&&!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchGenJets.Data()));
4726 if(fBranchGenJets.Length()) Printf("%s:%d Generated jet branch %s not found",(char*)__FILE__,__LINE__,fBranchGenJets.Data());
4728 if(fDebug>1)fAOD->Print();
4734 for(Int_t ig=0; ig<aodGenJets->GetEntries(); ++ig){
4736 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodGenJets->At(ig));
4739 if( tmp->Pt() < fJetPtCut ) continue;
4740 if( type == kJetsGenAcceptance &&
4741 ( tmp->Eta() < fJetEtaMin
4742 || tmp->Eta() > fJetEtaMax
4743 || tmp->Phi() < fJetPhiMin
4744 || tmp->Phi() > fJetPhiMax )) continue;
4752 else if(type == kJetsEmbedded){ // embedded jets
4754 if(fBranchEmbeddedJets.Length()==0){
4755 Printf("%s:%d no embedded jet branch specified", (char*)__FILE__,__LINE__);
4756 if(fDebug>1)fAOD->Print();
4760 TClonesArray *aodEmbeddedJets = 0;
4761 if(fBranchEmbeddedJets.Length()) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchEmbeddedJets.Data()));
4762 if(!aodEmbeddedJets) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchEmbeddedJets.Data()));
4763 if(fAODExtension&&!aodEmbeddedJets) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchEmbeddedJets.Data()));
4765 if(!aodEmbeddedJets){
4766 if(fBranchEmbeddedJets.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchEmbeddedJets.Data());
4767 if(fDebug>1)fAOD->Print();
4771 // Reorder jet pt and fill new temporary AliAODJet objects
4772 Int_t nEmbeddedJets = 0;
4774 for(Int_t ij=0; ij<aodEmbeddedJets->GetEntries(); ++ij){
4776 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodEmbeddedJets->At(ij));
4779 if( tmp->Pt() < fJetPtCut ) continue;
4780 if( tmp->Eta() < fJetEtaMin
4781 || tmp->Eta() > fJetEtaMax
4782 || tmp->Phi() < fJetPhiMin
4783 || tmp->Phi() > fJetPhiMax ) continue;
4791 return nEmbeddedJets;
4794 if(fDebug>0)Printf("%s:%d no such type %d",(char*)__FILE__,__LINE__,type);
4799 // ___________________________________________________________________________________
4800 Int_t AliAnalysisTaskFragmentationFunction::GetListOfBckgJets(TList *list, Int_t type)
4802 // fill list of bgr clusters selected according to type
4804 if(type == kJetsRec || type == kJetsRecAcceptance){ // reconstructed jets
4806 if(fBranchRecBckgClusters.Length()==0){
4807 Printf("%s:%d no rec jet branch specified", (char*)__FILE__,__LINE__);
4808 if(fDebug>1)fAOD->Print();
4812 TClonesArray *aodRecJets = 0;
4813 if(fBranchRecBckgClusters.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchRecBckgClusters.Data()));
4814 if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchRecBckgClusters.Data()));
4815 if(fAODExtension&&!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchRecBckgClusters.Data()));
4818 if(fBranchRecBckgClusters.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchRecBckgClusters.Data());
4819 if(fDebug>1)fAOD->Print();
4823 // Reorder jet pt and fill new temporary AliAODJet objects
4826 for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){
4828 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));
4831 // if( tmp->Pt() < fJetPtCut ) continue; // no pt cut on bckg clusters !
4832 if( type == kJetsRecAcceptance &&
4833 ( tmp->Eta() < fJetEtaMin
4834 || tmp->Eta() > fJetEtaMax
4835 || tmp->Phi() < fJetPhiMin
4836 || tmp->Phi() > fJetPhiMax )) continue;
4850 // MC clusters still Under construction
4856 // _________________________________________________________________________________________________________
4857 void AliAnalysisTaskFragmentationFunction::SetProperties(THnSparse* h,const Int_t dim, const char** labels)
4859 // Set properties of THnSparse
4861 for(Int_t i=0; i<dim; i++){
4862 h->GetAxis(i)->SetTitle(labels[i]);
4863 h->GetAxis(i)->SetTitleColor(1);
4867 // __________________________________________________________________________________________
4868 void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y)
4870 //Set properties of histos (x and y title)
4874 h->GetXaxis()->SetTitleColor(1);
4875 h->GetYaxis()->SetTitleColor(1);
4878 // _________________________________________________________________________________________________________
4879 void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y, const char* z)
4881 //Set properties of histos (x,y and z title)
4886 h->GetXaxis()->SetTitleColor(1);
4887 h->GetYaxis()->SetTitleColor(1);
4888 h->GetZaxis()->SetTitleColor(1);
4891 // ________________________________________________________________________________________________________________________________________________________
4892 void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist, TList* outputlist, const AliAODJet* jet, const Double_t radius,Double_t& sumPt)
4894 // fill list of tracks in cone around jet axis
4899 jet->PxPyPz(jetMom);
4900 TVector3 jet3mom(jetMom);
4902 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
4904 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
4906 Double_t trackMom[3];
4907 track->PxPyPz(trackMom);
4908 TVector3 track3mom(trackMom);
4910 Double_t dR = jet3mom.DeltaR(track3mom);
4914 outputlist->Add(track);
4916 sumPt += track->Pt();
4923 // ___________________________________________________________________________________________
4924 void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet)
4926 // list of jet tracks from trackrefs
4928 Int_t nTracks = jet->GetRefTracks()->GetEntriesFast();
4930 for (Int_t itrack=0; itrack<nTracks; itrack++) {
4932 AliVParticle* track = dynamic_cast<AliVParticle*>(jet->GetRefTracks()->At(itrack));
4934 AliError("expected ref track not found ");
4944 // _ ________________________________________________________________________________________________________________________________
4945 void AliAnalysisTaskFragmentationFunction::AssociateGenRec(TList* tracksAODMCCharged,TList* tracksRec, TArrayI& indexAODTr,TArrayI& indexMCTr,
4946 TArrayS& isRefGen,TH2F* fh2PtRecVsGen)
4948 // associate generated and reconstructed tracks, fill TArrays of list indices
4950 Int_t nTracksRec = tracksRec->GetSize();
4951 Int_t nTracksGen = tracksAODMCCharged->GetSize();
4952 TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
4955 if(!nTracksGen) return;
4959 indexAODTr.Set(nTracksGen);
4960 indexMCTr.Set(nTracksRec);
4961 isRefGen.Set(nTracksGen);
4963 indexAODTr.Reset(-1);
4964 indexMCTr.Reset(-1);
4967 // loop over reconstructed tracks, get generated track
4969 for(Int_t iRec=0; iRec<nTracksRec; iRec++){
4971 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
4972 if(!rectrack)continue;
4973 Int_t label = TMath::Abs(rectrack->GetLabel());
4975 // find MC track in our list
4976 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tca->At(label));
4978 Int_t listIndex = -1;
4979 if(gentrack) listIndex = tracksAODMCCharged->IndexOf(gentrack);
4983 indexAODTr[listIndex] = iRec;
4984 indexMCTr[iRec] = listIndex;
4989 // define reference sample of primaries/secondaries (for reconstruction efficiency / contamination)
4991 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
4993 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksAODMCCharged->At(iGen));
4994 if(!gentrack)continue;
4995 Int_t pdg = gentrack->GetPdgCode();
4997 // 211 - pi, 2212 - proton, 321 - Kaon, 11 - electron, 13 - muon
4998 if(TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 2212 || TMath::Abs(pdg) == 321 ||
4999 TMath::Abs(pdg) == 11 || TMath::Abs(pdg) == 13){
5001 isRefGen[iGen] = kTRUE;
5003 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5006 Float_t genPt = gentrack->Pt();
5007 AliAODTrack* vt = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5009 Float_t recPt = vt->Pt();
5010 fh2PtRecVsGen->Fill(genPt,recPt);
5017 // _____________________________________________________________________________________________________________________________________________
5018 void AliAnalysisTaskFragmentationFunction::FillSingleTrackHistosRecGen(AliFragFuncQATrackHistos* trackQAGen, AliFragFuncQATrackHistos* trackQARec, TList* tracksGen,
5019 const TArrayI& indexAODTr, const TArrayS& isRefGen){
5021 // fill QA for single track reconstruction efficiency
5023 Int_t nTracksGen = tracksGen->GetSize();
5025 if(!nTracksGen) return;
5027 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5029 if(isRefGen[iGen] != 1) continue; // select primaries
5031 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5032 if(!gentrack) continue;
5033 Double_t ptGen = gentrack->Pt();
5034 Double_t etaGen = gentrack->Eta();
5035 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5037 // apply same acc & pt cuts as for FF
5039 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5040 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5041 if(ptGen < fTrackPtCut) continue;
5043 if(trackQAGen) trackQAGen->FillTrackQA(etaGen, phiGen, ptGen);
5046 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5047 if(iRec>=0 && trackQARec) trackQARec->FillTrackQA(etaGen, phiGen, ptGen);
5051 // ______________________________________________________________________________________________________________________________________________________
5053 void AliAnalysisTaskFragmentationFunction::FillJetTrackHistosRecGen(TObject* histGen,TObject* histRec,Double_t jetPtGen,Double_t jetPtRec, TList* jetTrackList, const TList* tracksGen,
5054 const TArrayI& indexAODTr,const TArrayS& isRefGen, const Bool_t useRecJetPt)
5056 // fill objects for jet track reconstruction efficiency or secondaries contamination
5057 // arguments histGen/histRec can be of different type: AliFragFuncHistos*, AliFragFuncIntraJetHistos*, ...
5059 Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks
5061 if(!nTracksJet) return;
5063 Bool_t incrementJetPtGenFF = kTRUE; // needed in case we fill FFHistos
5064 Bool_t incrementJetPtRecFF = kTRUE; // needed in case we fill FFHistos
5066 for(Int_t iTr=0; iTr<nTracksJet; iTr++){
5068 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
5069 if(!gentrack)continue;
5070 // find jet track in gen tracks list
5071 Int_t iGen = tracksGen->IndexOf(gentrack);
5074 if(fDebug>0) Printf("%s:%d gen jet track not found ",(char*)__FILE__,__LINE__);
5079 if(isRefGen[iGen] != 1) continue; // select primaries
5081 Double_t ptGen = gentrack->Pt();
5082 Double_t etaGen = gentrack->Eta();
5083 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5085 // apply same acc & pt cuts as for FF
5087 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5088 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5089 if(ptGen < fTrackPtCut) continue;
5091 Double_t z = ptGen / jetPtGen;
5093 if(z>0) xi = TMath::Log(1/z);
5095 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5096 Bool_t isRec = (iRec>=0) ? kTRUE : kFALSE;
5098 if(dynamic_cast<AliFragFuncHistos*>(histGen) || dynamic_cast<AliFragFuncHistos*>(histRec)){ // histGen can be NULL for secondaries -> ||
5100 // after checking can afford normal cast
5101 AliFragFuncHistos* ffhistGen = (AliFragFuncHistos*) (histGen);
5102 AliFragFuncHistos* ffhistRec = (AliFragFuncHistos*) (histRec);
5105 if(useRecJetPt) ffhistGen->FillFF( ptGen, jetPtRec, incrementJetPtGenFF );
5106 else ffhistGen->FillFF( ptGen, jetPtGen, incrementJetPtGenFF );
5108 incrementJetPtGenFF = kFALSE;
5112 if(ffhistRec && isRec){
5114 if(useRecJetPt) ffhistRec->FillFF( ptGen, jetPtRec, incrementJetPtRecFF );
5115 else ffhistRec->FillFF( ptGen, jetPtGen, incrementJetPtRecFF );
5117 incrementJetPtRecFF = kFALSE;
5120 else if(dynamic_cast<AliFragFuncIntraJetHistos*>(histGen) && dynamic_cast<AliFragFuncIntraJetHistos*>(histRec)){
5122 // eff for IJ histos ...
5128 // _____________________________________________________________________________________________________________________________________________
5129 void AliAnalysisTaskFragmentationFunction::FillTwoTrackHistosRecGen(TList* tracksGen, /*TList* tracksRec, const TArrayI& indexAODTr, */ const TArrayS& isRefGen){
5131 Int_t nTracksGen = tracksGen->GetSize();
5133 if(!nTracksGen) return;
5135 Int_t highPtIndices[nTracksGen];
5138 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5140 if(isRefGen[iGen] != 1) continue; // select primaries
5142 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5143 if(!gentrack) continue;
5144 Double_t ptGen = gentrack->Pt();
5145 Double_t etaGen = gentrack->Eta();
5146 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5148 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5149 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5152 highPtIndices[nHighPt++] = iGen;
5157 for(Int_t nHPT = 0; nHPT<nHighPt; nHPT++){ // high pt tracks loop
5159 Int_t indexHPT = highPtIndices[nHPT];
5161 AliAODMCParticle* genHPTtrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(indexHPT));
5162 if(!genHPTtrack) continue;
5164 Double_t trackMomHPT[3];
5165 genHPTtrack->PxPyPz(trackMomHPT);
5166 TVector3 track3MomHPT(trackMomHPT);
5169 Double_t distNN = 10;
5173 for(Int_t iGen=0; iGen<nTracksGen; iGen++){ // all gen tracks loop
5175 if(isRefGen[iGen] != 1) continue; // select primaries
5177 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5178 if(!gentrack) continue;
5180 Double_t ptGen = gentrack->Pt();
5181 Double_t etaGen = gentrack->Eta();
5182 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5184 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5185 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5186 if(ptGen < fTrackPtCut) continue;
5189 Double_t gentrackMom[3];
5190 gentrack->PxPyPz(gentrackMom);
5191 TVector3 gentrack3Mom(gentrackMom);
5193 Double_t dR = gentrack3Mom.DeltaR(track3MomHPT);
5195 if(iGen != indexHPT && dR<distNN){
5204 // _____________________________________________________________________________________________________________________________________________
5205 void AliAnalysisTaskFragmentationFunction::FillSingleTrackResponse(THnSparse* hnResponse, TList* tracksGen, TList* tracksRec,
5206 const TArrayI& indexAODTr, const TArrayS& isGenPrim)
5208 // fill response matrix for single tracks
5211 Int_t nTracksGen = tracksGen->GetSize();
5213 if(!nTracksGen) return;
5215 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5217 if(isGenPrim[iGen] != 1) continue; // select primaries
5219 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5220 if(!gentrack)continue;
5221 Double_t ptGen = gentrack->Pt();
5222 Double_t etaGen = gentrack->Eta();
5223 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5225 // apply same acc & pt cuts as for FF
5226 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5227 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5228 if(ptGen < fTrackPtCut) continue;
5230 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5232 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5233 if(!rectrack)continue;
5234 Double_t ptRec = rectrack->Pt();
5236 Double_t entries[2] = {ptRec,ptGen}; // AliCorrFW convention: gen vs rec
5237 hnResponse->Fill(entries);
5239 Double_t invPtGen = 0;
5240 if(ptGen) invPtGen = 1/ptGen;
5242 Double_t invPtRec = 0;
5243 if(ptRec) invPtRec = 1/ptRec;
5245 fh2SingleInvPtRecMnGenVsPtGen->Fill(ptGen,invPtRec - invPtGen);
5251 // ______________________________________________________________________________________________________________________________________________________
5252 void AliAnalysisTaskFragmentationFunction::FillJetTrackResponse(THnSparse* hnResponsePt, THnSparse* hnResponseZ, THnSparse* hnResponseXi,
5253 Double_t jetPtGen, Double_t jetPtRec, TList* jetTrackList,
5254 const TList* tracksGen, TList* tracksRec, const TArrayI& indexAODTr, const TArrayS& isGenPrim,const Bool_t useRecJetPt)
5256 // fill response matrix for tracks in jets
5258 Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks
5260 if(!nTracksJet) return;
5262 for(Int_t iTr=0; iTr<nTracksJet; iTr++){
5264 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
5265 if(!gentrack)continue;
5266 // find jet track in gen tracks list
5267 Int_t iGen = tracksGen->IndexOf(gentrack);
5270 if(fDebug>0) Printf("%s:%d gen jet track not found ",(char*)__FILE__,__LINE__);
5274 if(isGenPrim[iGen] != 1) continue; // select primaries
5276 Double_t ptGen = gentrack->Pt();
5277 Double_t etaGen = gentrack->Eta();
5278 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5280 // apply same acc & pt cuts as for FF
5282 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5283 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5284 if(ptGen < fTrackPtCut) continue;
5286 Double_t zGen = ptGen / jetPtRec;
5288 if(zGen>0) xiGen = TMath::Log(1/zGen);
5290 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5294 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5296 Double_t ptRec = rectrack->Pt();
5298 Double_t zRec = ptRec / jetPtRec;
5300 if(zRec>0) xiRec = TMath::Log(1/zRec);
5302 Double_t jetPt = useRecJetPt ? jetPtRec : jetPtGen;
5304 Double_t entriesPt[3] = {jetPt,ptRec,ptGen}; // AliCorrFW convention: gen vs rec
5305 Double_t entriesZ[3] = {jetPt,zRec,zGen};
5306 Double_t entriesXi[3] = {jetPt,xiRec,xiGen};
5308 hnResponsePt->Fill(entriesPt);
5309 hnResponseZ->Fill(entriesZ);
5310 hnResponseXi->Fill(entriesXi);
5316 // _____________________________________________________________________________________________________________________________________________________________________
5317 void AliAnalysisTaskFragmentationFunction::GetTracksTiltedwrpJetAxis(Float_t alpha, TList* inputlist, TList* outputlist, const AliAODJet* jet, Double_t radius,Double_t& sumPt)
5319 // List of tracks in cone perpendicular to the jet azimuthal direction
5322 jet->PxPyPz(jetMom);
5324 TVector3 jet3mom(jetMom);
5325 // Rotate phi and keep eta unchanged
5326 Double_t etaTilted = jet3mom.Eta();
5327 Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha;
5328 if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi();
5330 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5333 if( fUseExtraTracksBgr != 1){
5334 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5335 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5336 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5340 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5342 Double_t trackMom[3];
5343 track->PxPyPz(trackMom);
5344 TVector3 track3mom(trackMom);
5346 Double_t deta = track3mom.Eta() - etaTilted;
5347 Double_t dphi = TMath::Abs(track3mom.Phi() - phiTilted);
5348 if (dphi > TMath::Pi()) dphi = 2. * TMath::Pi() - dphi;
5349 Double_t dR = TMath::Sqrt(deta * deta + dphi * dphi);
5352 outputlist->Add(track);
5353 sumPt += track->Pt();
5359 // ________________________________________________________________________________________________________________________________________________________
5360 void AliAnalysisTaskFragmentationFunction::GetTracksTiltedwrpJetAxisWindow(Float_t alpha, TList* inputlist, TList* outputlist, const AliAODJet* jet, Double_t radius,Double_t& sumPt,Double_t &normFactor)
5362 // List of tracks in cone perpendicular to the jet azimuthal direction
5365 jet->PxPyPz(jetMom);
5367 TVector3 jet3mom(jetMom);
5368 // Rotate phi and keep eta unchanged
5369 Double_t etaTilted = jet3mom.Eta();
5370 Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha;
5371 if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi();
5373 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++)
5377 if( fUseExtraTracksBgr != 1){
5378 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5379 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5380 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5384 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5386 Float_t trackEta = track->Eta();
5387 Float_t trackPhi = track->Phi();
5389 if( ( phiTilted-radius >= 0 ) && ( phiTilted+radius <= 2*TMath::Pi()))
5391 if((trackPhi<=phiTilted+radius) &&
5392 (trackPhi>=phiTilted-radius) &&
5393 (trackEta<=fTrackEtaMax)&&(trackEta>=fTrackEtaMin)) // 0.9 and - 0.9
5395 outputlist->Add(track);
5396 sumPt += track->Pt();
5399 else if( phiTilted-radius < 0 )
5401 if((( trackPhi < phiTilted+radius ) ||
5402 ( trackPhi > 2*TMath::Pi()-(radius-phiTilted) )) &&
5403 (( trackEta <= fTrackEtaMax ) && ( trackEta >= fTrackEtaMin )))
5405 outputlist->Add(track);
5406 sumPt += track->Pt();
5409 else if( phiTilted+radius > 2*TMath::Pi() )
5411 if((( trackPhi > phiTilted-radius ) ||
5412 ( trackPhi < phiTilted+radius-2*TMath::Pi() )) &&
5413 (( trackEta <= fTrackEtaMax ) && ( trackEta >= fTrackEtaMin )))
5415 outputlist->Add(track);
5416 sumPt += track->Pt();
5421 // Jet area - Temporarily added should be modified with the proper jet area value
5422 Float_t areaJet = CalcJetArea(etaTilted,radius);
5423 Float_t areaTilted = 2*radius*(fTrackEtaMax-fTrackEtaMin);
5425 normFactor = (Float_t) 1. / (areaJet / areaTilted);
5430 // ________________________________________________________________________________________________________________________________________________________
5431 void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJets(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt)
5433 // List of tracks outside cone around N jet axis
5434 // Particles taken randomly
5437 // Int_t nj = jetlist->GetSize();
5438 Float_t rc = GetFFRadius();
5439 Float_t rcl = GetFFBckgRadius();
5441 // Estimate jet and background areas
5442 Float_t* areaJet = new Float_t[nCases];
5443 memset(areaJet, 0, sizeof(Float_t) * nCases);
5444 Float_t* areaJetLarge = new Float_t[nCases];
5445 memset(areaJetLarge, 0, sizeof(Float_t) * nCases);
5446 Float_t areaFull = (fTrackEtaMax-fTrackEtaMin)*(fTrackPhiMax-fTrackPhiMin);
5447 Float_t areaOut = areaFull;
5449 //estimate jets and background areas
5452 TList* templist = new TList();
5453 TClonesArray *vect3Jet = new TClonesArray("TVector3",nCases);
5455 for(Int_t ij=0; ij<nCases; ++ij)
5457 // Get jet information
5458 AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
5461 jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
5462 new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
5463 Float_t etaJet = (Float_t)((TVector3*) vect3Jet->At(ij))->Eta();
5466 areaJet[ij] = CalcJetArea(etaJet,rc);
5468 // Area jet larger angle
5469 areaJetLarge[ij] = CalcJetArea(etaJet,rcl);
5472 areaOut = areaOut - areaJetLarge[ij];
5476 // List of all tracks outside jet areas
5477 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5480 if( fUseExtraTracksBgr != 1){
5481 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5482 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5483 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5487 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5489 Double_t trackMom[3];
5490 track->PxPyPz(trackMom);
5491 TVector3 track3mom(trackMom);
5493 Double_t *dR = new Double_t[nCases];
5494 for(Int_t ij=0; ij<nCases; ij++)
5495 dR[ij] = (Double_t)((TVector3*) vect3Jet->At(ij))->DeltaR(track3mom);
5497 if((nCases==1 && (dR[0]>rcl)) ||
5498 (nCases==2 && (dR[0]>rcl && dR[1]>rcl)) ||
5499 (nCases==3 && (dR[0]>rcl && dR[1]>rcl && dR[2]>rcl)))
5501 templist->Add(track);
5507 // Take tracks randomly
5508 Int_t nScaled = (Int_t) (nOut * areaJet[0] / areaOut + 0.5);
5509 TArrayI* ar = new TArrayI(nOut);
5511 for(Int_t init=0; init<nOut; init++)
5514 Int_t *randIndex = new Int_t[nScaled];
5515 for(Int_t init2=0; init2<nScaled; init2++)
5516 randIndex[init2] = -1;
5518 // Select nScaled different random numbers in nOut
5519 for(Int_t i=0; i<nScaled; i++)
5521 Int_t* tmpArr = new Int_t[nOut-i];
5522 Int_t temp = fRandom->Integer(nOut-i);
5523 for(Int_t ind = 0; ind< ar->GetSize()-1; ind++)
5525 if(ind<temp) tmpArr[ind] = (*ar)[ind];
5526 else tmpArr[ind] = (*ar)[ind+1];
5528 randIndex[i] = (*ar)[temp];
5530 ar->Set(nOut-i-1,tmpArr);
5536 for(Int_t ipart=0; ipart<nScaled; ipart++)
5538 AliVParticle* track = (AliVParticle*)(templist->At(randIndex[ipart]));
5539 outputlist->Add(track);
5540 sumPt += track->Pt();
5547 delete [] areaJetLarge;
5550 delete [] randIndex;
5554 // ________________________________________________________________________________________________________________________________________________________
5555 void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJetsStat(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt, Double_t &normFactor)
5557 // List of tracks outside cone around N jet axis
5558 // All particles taken + final scaling factor
5561 Float_t rc = GetFFRadius();
5562 Float_t rcl = GetFFBckgRadius();
5564 // Estimate jet and background areas
5565 Float_t* areaJet = new Float_t[nCases];
5566 memset(areaJet, 0, sizeof(Float_t) * nCases);
5567 Float_t* areaJetLarge = new Float_t[nCases];
5568 memset(areaJetLarge, 0, sizeof(Float_t) * nCases);
5569 Float_t areaFull = (fTrackEtaMax-fTrackEtaMin)*(fTrackPhiMax-fTrackPhiMin);
5570 Float_t areaOut = areaFull;
5572 //estimate jets and background areas
5575 TClonesArray *vect3Jet = new TClonesArray("TVector3",nCases);
5577 for(Int_t ij=0; ij<nCases; ++ij)
5579 // Get jet information
5580 AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
5583 jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
5584 new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
5585 Float_t etaJet = (Float_t)((TVector3*) vect3Jet->At(ij))->Eta();
5588 areaJet[ij] = CalcJetArea(etaJet,rc);
5590 // Area jet larger angle
5591 areaJetLarge[ij] = CalcJetArea(etaJet,rcl);
5593 // Outside jets area
5594 areaOut = areaOut - areaJetLarge[ij];
5598 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5601 if( fUseExtraTracksBgr != 1){
5602 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5603 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5604 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5608 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5610 Double_t trackMom[3];
5611 track->PxPyPz(trackMom);
5612 TVector3 track3mom(trackMom);
5614 Double_t *dR = new Double_t[nCases];
5615 for(Int_t ij=0; ij<nCases; ij++)
5616 dR[ij] = (Double_t)((TVector3*) vect3Jet->At(ij))->DeltaR(track3mom);
5619 (nCases==1 && (dR[0]>rcl)) ||
5620 (nCases==2 && (dR[0]>rcl && dR[1]>rcl)) ||
5621 (nCases==3 && (dR[0]>rcl && dR[1]>rcl && dR[2]>rcl)))
5623 outputlist->Add(track);
5624 sumPt += track->Pt();
5630 if(nCases==0) areaJet[0] = TMath::Pi()*rc*rc;
5631 normFactor = (Float_t) 1./(areaJet[0] / areaOut);
5636 delete [] areaJetLarge;
5641 // ______________________________________________________________________________________________________________________________________________________
5642 Float_t AliAnalysisTaskFragmentationFunction::CalcJetArea(const Float_t etaJet, const Float_t rc) const
5644 // calculate area of jet with eta etaJet and radius rc
5646 Float_t detamax = etaJet + rc;
5647 Float_t detamin = etaJet - rc;
5648 Float_t accmax = 0.0; Float_t accmin = 0.0;
5649 if(detamax > fTrackEtaMax){ // sector outside etamax
5650 Float_t h = fTrackEtaMax - etaJet;
5651 accmax = rc*rc*TMath::ACos(h/rc) - h*TMath::Sqrt(rc*rc - h*h);
5653 if(detamin < fTrackEtaMin){ // sector outside etamin
5654 Float_t h = fTrackEtaMax + etaJet;
5655 accmin = rc*rc*TMath::ACos(h/rc) - h*TMath::Sqrt(rc*rc - h*h);
5657 Float_t areaJet = rc*rc*TMath::Pi() - accmax - accmin;
5663 // ___________________________________________________________________________________________________________________________
5664 void AliAnalysisTaskFragmentationFunction::GetClusterTracksOutOf1Jet(AliAODJet* jet, TList* outputlist, Double_t &normFactor)
5666 // fill tracks from bckgCluster branch in list,
5667 // for all clusters outside jet cone
5668 // sum up total area of clusters
5670 Double_t rc = GetFFRadius();
5671 Double_t rcl = GetFFBckgRadius();
5673 Double_t areaTotal = 0;
5674 Double_t sumPtTotal = 0;
5676 for(Int_t ij=0; ij<fBckgJetsRec->GetEntries(); ++ij){
5678 AliAODJet* bgrCluster = (AliAODJet*)(fBckgJetsRec->At(ij)); // not 'recCuts': use all clusters in full eta range
5680 Double_t dR = jet->DeltaR(bgrCluster);
5682 if(dR<rcl) continue;
5684 Double_t clusterPt = bgrCluster->Pt();
5685 Double_t area = bgrCluster->EffectiveAreaCharged();
5687 sumPtTotal += clusterPt;
5689 Int_t nTracksJet = bgrCluster->GetRefTracks()->GetEntries();
5691 for(Int_t it = 0; it<nTracksJet; it++){
5693 // embedded tracks - note: using ref tracks here, fBranchRecBckgClusters has to be consistent
5694 if( fUseExtraTracksBgr != 1){
5695 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (bgrCluster->GetTrack(it))){
5696 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5697 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5701 AliVParticle* track = dynamic_cast<AliVParticle*>(bgrCluster->GetTrack(it));
5702 if(!track) continue;
5704 Float_t trackPt = track->Pt();
5705 Float_t trackEta = track->Eta();
5706 Float_t trackPhi = TVector2::Phi_0_2pi(track->Phi());
5708 if(trackEta < fTrackEtaMin || trackEta > fTrackEtaMax) continue;
5709 if(trackPhi < fTrackPhiMin || trackPhi > fTrackPhiMax) continue;
5710 if(trackPt < fTrackPtCut) continue;
5712 outputlist->Add(track);
5716 Double_t areaJet = TMath::Pi()*rc*rc;
5717 if(areaTotal) normFactor = (Float_t) 1./(areaJet / areaTotal);
5722 // _______________________________________________________________________________________________________________________
5723 void AliAnalysisTaskFragmentationFunction::GetClusterTracksMedian(TList* outputlist, Double_t &normFactor)
5725 // fill tracks from bckgCluster branch,
5726 // using cluster with median density (odd number of clusters)
5727 // or picking randomly one of the two closest to median (even number)
5731 Int_t nBckgClusters = fBckgJetsRec->GetEntries(); // not 'recCuts': use all clusters in full eta range
5733 if(nBckgClusters<3) return; // need at least 3 clusters (skipping 2 highest)
5735 Double_t* bgrDensity = new Double_t[nBckgClusters];
5736 Int_t* indices = new Int_t[nBckgClusters];
5738 for(Int_t ij=0; ij<nBckgClusters; ++ij){
5740 AliAODJet* bgrCluster = (AliAODJet*)(fBckgJetsRec->At(ij));
5741 Double_t clusterPt = bgrCluster->Pt();
5742 Double_t area = bgrCluster->EffectiveAreaCharged();
5744 Double_t density = 0;
5745 if(area>0) density = clusterPt/area;
5747 bgrDensity[ij] = density;
5751 TMath::Sort(nBckgClusters, bgrDensity, indices);
5753 // get median cluster
5755 AliAODJet* medianCluster = 0;
5756 Double_t medianDensity = 0;
5758 if(TMath::Odd(nBckgClusters)){
5760 Int_t medianIndex = indices[(Int_t) (0.5*(nBckgClusters-1))];
5761 medianCluster = (AliAODJet*)(fBckgJetsRec->At(medianIndex));
5763 Double_t clusterPt = medianCluster->Pt();
5764 Double_t area = medianCluster->EffectiveAreaCharged();
5766 if(area>0) medianDensity = clusterPt/area;
5770 Int_t medianIndex1 = indices[(Int_t) (0.5*nBckgClusters-1)];
5771 Int_t medianIndex2 = indices[(Int_t) (0.5*nBckgClusters)];
5773 AliAODJet* medianCluster1 = (AliAODJet*)(fBckgJetsRec->At(medianIndex1));
5774 AliAODJet* medianCluster2 = (AliAODJet*)(fBckgJetsRec->At(medianIndex2));
5776 Double_t density1 = 0;
5777 Double_t clusterPt1 = medianCluster1->Pt();
5778 Double_t area1 = medianCluster1->EffectiveAreaCharged();
5779 if(area1>0) density1 = clusterPt1/area1;
5781 Double_t density2 = 0;
5782 Double_t clusterPt2 = medianCluster2->Pt();
5783 Double_t area2 = medianCluster2->EffectiveAreaCharged();
5784 if(area2>0) density2 = clusterPt2/area2;
5786 medianDensity = 0.5*(density1+density2);
5788 medianCluster = ( (fRandom->Rndm()>0.5) ? medianCluster1 : medianCluster2 ); // select one randomly to avoid adding areas
5791 Int_t nTracksJet = medianCluster->GetRefTracks()->GetEntries();
5793 for(Int_t it = 0; it<nTracksJet; it++){
5795 // embedded tracks - note: using ref tracks here, fBranchRecBckgClusters has to be consistent
5796 if( fUseExtraTracksBgr != 1){
5797 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (medianCluster->GetTrack(it))){
5798 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5799 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5803 AliVParticle* track = dynamic_cast<AliVParticle*>(medianCluster->GetTrack(it));
5804 if(!track) continue;
5806 Float_t trackPt = track->Pt();
5807 Float_t trackEta = track->Eta();
5808 Float_t trackPhi = TVector2::Phi_0_2pi(track->Phi());
5810 if(trackEta < fTrackEtaMin || trackEta > fTrackEtaMax) continue;
5811 if(trackPhi < fTrackPhiMin || trackPhi > fTrackPhiMax) continue;
5812 if(trackPt < fTrackPtCut) continue;
5814 outputlist->Add(track);
5817 Double_t areaMedian = medianCluster->EffectiveAreaCharged();
5818 Double_t areaJet = TMath::Pi()*GetFFRadius()*GetFFRadius();
5820 if(areaMedian) normFactor = (Float_t) 1./(areaJet / areaMedian);
5824 delete[] bgrDensity;
5828 // ______________________________________________________________________________________________________________________________________________________
5829 void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inputtracklist, TList* inputjetlist, AliAODJet* jet, Float_t leadTrackPt, TLorentzVector* leadTrackV,
5830 AliFragFuncHistos* ffbckghistocuts, AliFragFuncHistos* ffbckghistoleading,
5831 AliFragFuncIntraJetHistos* ijbckghistocuts, AliFragFuncIntraJetHistos* ijbckghistoleading,
5832 AliFragFuncQATrackHistos* qabckghistocuts){
5834 // List of tracks outside jets for background study
5835 TList* tracklistout2jets = new TList();
5836 TList* tracklistout3jets = new TList();
5837 TList* tracklistout2jetsStat = new TList();
5838 TList* tracklistout3jetsStat = new TList();
5839 Double_t sumPtOut2Jets = 0.;
5840 Double_t sumPtOut3Jets = 0.;
5841 Double_t sumPtOut2JetsStat = 0.;
5842 Double_t sumPtOut3JetsStat = 0.;
5843 Double_t normFactor2Jets = 0.;
5844 Double_t normFactor3Jets = 0.;
5846 Int_t nRecJetsCuts = fJetsRecCuts->GetEntries();
5848 if(nRecJetsCuts>1) {
5849 GetTracksOutOfNJets(2,inputtracklist, tracklistout2jets, inputjetlist, sumPtOut2Jets);
5850 GetTracksOutOfNJetsStat(2,inputtracklist, tracklistout2jetsStat, inputjetlist,sumPtOut2JetsStat, normFactor2Jets);
5853 if(nRecJetsCuts>2) {
5854 GetTracksOutOfNJets(3,inputtracklist, tracklistout3jets, inputjetlist, sumPtOut3Jets);
5855 GetTracksOutOfNJetsStat(3,inputtracklist, tracklistout3jetsStat, inputjetlist, sumPtOut3JetsStat, normFactor3Jets);
5858 if(type==kBckgOutLJ || type==kBckgOutAJ)
5860 TList* tracklistoutleading = new TList();
5861 Double_t sumPtOutLeading = 0.;
5862 GetTracksOutOfNJets(1,inputtracklist, tracklistoutleading, inputjetlist, sumPtOutLeading);
5863 if(type==kBckgOutLJ) fh1OutLeadingMult->Fill(tracklistoutleading->GetSize());
5865 for(Int_t it=0; it<tracklistoutleading->GetSize(); ++it){
5867 AliVParticle* trackVP = (AliVParticle*)(tracklistoutleading->At(it));
5868 if(!trackVP) continue;
5869 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
5871 Float_t jetPt = jet->Pt();
5872 Float_t trackPt = trackV->Pt();
5874 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
5876 if(type==kBckgOutLJ)
5878 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt);
5879 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
5881 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt);
5882 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
5884 // Fill track QA for background
5885 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
5888 // All cases included
5889 if(nRecJetsCuts==1 && type==kBckgOutAJ)
5891 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
5892 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
5894 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
5895 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
5899 // Increment jet pt with one entry in case #tracks outside jets = 0
5900 if(tracklistoutleading->GetSize()==0) {
5901 Float_t jetPt = jet->Pt();
5902 Bool_t incrementJetPt = kTRUE;
5903 if(type==kBckgOutLJ)
5905 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
5906 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
5908 // All cases included
5909 if(nRecJetsCuts==1 && type==kBckgOutAJ)
5911 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
5912 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
5915 delete tracklistoutleading;
5917 if(type==kBckgOutLJStat || type==kBckgOutAJStat)
5919 TList* tracklistoutleadingStat = new TList();
5920 Double_t sumPtOutLeadingStat = 0.;
5921 Double_t normFactorLeading = 0.;
5923 GetTracksOutOfNJetsStat(1,inputtracklist, tracklistoutleadingStat, inputjetlist, sumPtOutLeadingStat, normFactorLeading);
5924 if(type==kBckgOutLJStat) fh1OutLeadingStatMult->Fill(tracklistoutleadingStat->GetSize());
5926 for(Int_t it=0; it<tracklistoutleadingStat->GetSize(); ++it){
5928 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistoutleadingStat->At(it));
5929 if(!trackVP) continue;
5930 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
5932 Float_t jetPt = jet->Pt();
5933 Float_t trackPt = trackV->Pt();
5934 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
5937 if(type==kBckgOutLJStat)
5939 if(fFFMode)ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
5940 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading);
5942 if(fFFMode)ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
5943 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading);
5945 // Fill track QA for background
5946 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt); // OB added bgr QA
5949 // All cases included
5950 if(nRecJetsCuts==1 && type==kBckgOutAJStat)
5952 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
5953 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading );
5955 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
5956 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading );
5958 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
5963 // Increment jet pt with one entry in case #tracks outside jets = 0
5964 if(tracklistoutleadingStat->GetSize()==0) {
5965 Float_t jetPt = jet->Pt();
5966 Bool_t incrementJetPt = kTRUE;
5967 if(type==kBckgOutLJStat)
5969 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorLeading);
5970 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorLeading);
5972 // All cases included
5973 if(nRecJetsCuts==1 && type==kBckgOutLJStat)
5975 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorLeading);
5976 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorLeading );
5980 delete tracklistoutleadingStat;
5985 Double_t sumPtPerp = 0.;
5986 TList* tracklistperp = new TList();
5987 GetTracksTiltedwrpJetAxis(TMath::Pi()/2., inputtracklist,tracklistperp,jet,GetFFRadius(),sumPtPerp);
5988 fh1PerpMult->Fill(tracklistperp->GetSize());
5990 for(Int_t it=0; it<tracklistperp->GetSize(); ++it){
5992 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistperp->At(it));
5993 if(!trackVP)continue;
5994 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
5996 Float_t jetPt = jet->Pt();
5997 Float_t trackPt = trackV->Pt();
5999 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6001 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6002 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6004 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6005 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6007 // Fill track QA for background
6008 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6012 // Increment jet pt with one entry in case #tracks outside jets = 0
6013 if(tracklistperp->GetSize()==0) {
6014 Float_t jetPt = jet->Pt();
6015 Bool_t incrementJetPt = kTRUE;
6016 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6017 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6020 delete tracklistperp;
6023 if(type==kBckgASide)
6025 Double_t sumPtASide = 0.;
6026 TList* tracklistaside = new TList();
6027 GetTracksTiltedwrpJetAxis(TMath::Pi(),inputtracklist,tracklistaside,jet,GetFFRadius(),sumPtASide);
6028 fh1ASideMult->Fill(tracklistaside->GetSize());
6030 for(Int_t it=0; it<tracklistaside->GetSize(); ++it){
6032 AliVParticle* trackVP = (AliVParticle*)(tracklistaside->At(it));
6033 if(!trackVP) continue;
6034 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6036 Float_t jetPt = jet->Pt();
6037 Float_t trackPt = trackV->Pt();
6039 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6041 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6042 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6044 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6045 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6047 // Fill track QA for background
6048 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6052 if(tracklistaside->GetSize()==0) {
6053 Float_t jetPt = jet->Pt();
6054 Bool_t incrementJetPt = kTRUE;
6055 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6056 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6059 delete tracklistaside;
6062 if(type==kBckgASideWindow)
6064 Double_t normFactorASide = 0.;
6065 Double_t sumPtASideW = 0.;
6066 TList* tracklistasidew = new TList();
6067 GetTracksTiltedwrpJetAxisWindow(TMath::Pi(),inputtracklist,tracklistasidew,jet,GetFFRadius(),sumPtASideW,normFactorASide);
6068 fh1ASideWindowMult->Fill(tracklistasidew->GetSize());
6070 for(Int_t it=0; it<tracklistasidew->GetSize(); ++it){
6072 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistasidew->At(it));
6073 if(!trackVP) continue;
6074 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6076 Float_t jetPt = jet->Pt();
6077 Float_t trackPt = trackV->Pt();
6078 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6080 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorASide);
6081 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorASide);
6083 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorASide );
6084 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorASide );
6086 // Fill track QA for background
6087 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt, kFALSE, normFactorASide);
6091 if(tracklistasidew->GetSize()==0) {
6092 Float_t jetPt = jet->Pt();
6093 Bool_t incrementJetPt = kTRUE;
6094 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorASide);
6095 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorASide);
6098 delete tracklistasidew;
6101 if(type==kBckgPerpWindow)
6103 Double_t normFactorPerp = 0.;
6104 Double_t sumPtPerpW = 0.;
6105 TList* tracklistperpw = new TList();
6106 GetTracksTiltedwrpJetAxisWindow(TMath::Pi()/2.,inputtracklist,tracklistperpw,jet,GetFFRadius(),sumPtPerpW,normFactorPerp);
6107 fh1PerpWindowMult->Fill(tracklistperpw->GetSize());
6109 for(Int_t it=0; it<tracklistperpw->GetSize(); ++it){
6111 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistperpw->At(it));
6112 if(!trackVP) continue;
6113 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6115 Float_t jetPt = jet->Pt();
6116 Float_t trackPt = trackV->Pt();
6117 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6119 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorPerp);
6120 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorPerp);
6122 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorPerp );
6123 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorPerp );
6125 // Fill track QA for background
6126 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt, kFALSE, normFactorPerp);
6130 if(tracklistperpw->GetSize()==0) {
6131 Float_t jetPt = jet->Pt();
6132 Bool_t incrementJetPt = kTRUE;
6133 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorPerp);
6134 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorPerp);
6137 delete tracklistperpw;
6141 if(type==kBckgOut2J || type==kBckgOutAJ)
6143 if(type==kBckgOut2J) fh1Out2JetsMult->Fill(tracklistout2jets->GetSize());
6144 for(Int_t it=0; it<tracklistout2jets->GetSize(); ++it){
6146 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout2jets->At(it));
6147 if(!trackVP) continue;
6148 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6150 Float_t jetPt = jet->Pt();
6151 Float_t trackPt = trackV->Pt();
6153 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6155 if(type==kBckgOut2J)
6157 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6158 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6160 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6161 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6163 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6166 // All cases included
6167 if(nRecJetsCuts==2 && type==kBckgOutAJ)
6169 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6170 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6172 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6173 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6177 // Increment jet pt with one entry in case #tracks outside jets = 0
6178 if(tracklistout2jets->GetSize()==0) {
6179 Float_t jetPt = jet->Pt();
6180 Bool_t incrementJetPt = kTRUE;
6181 if(type==kBckgOut2J)
6183 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6184 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6186 // All cases included
6187 if(nRecJetsCuts==2 && type==kBckgOutAJ)
6189 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6190 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6196 if(type==kBckgOut2JStat || type==kBckgOutAJStat)
6198 for(Int_t it=0; it<tracklistout2jetsStat->GetSize(); ++it){
6200 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout2jetsStat->At(it));
6201 if(!trackVP) continue;
6202 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6204 Float_t jetPt = jet->Pt();
6205 Float_t trackPt = trackV->Pt();
6206 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6208 if(type==kBckgOut2JStat)
6210 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
6211 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
6213 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
6214 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
6216 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6219 // All cases included
6220 if(nRecJetsCuts==2 && type==kBckgOutAJStat)
6222 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
6223 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
6225 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
6226 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
6228 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6232 // Increment jet pt with one entry in case #tracks outside jets = 0
6233 if(tracklistout2jetsStat->GetSize()==0) {
6234 Float_t jetPt = jet->Pt();
6235 Bool_t incrementJetPt = kTRUE;
6236 if(type==kBckgOut2JStat)
6238 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor2Jets);
6239 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor2Jets);
6241 // All cases included
6242 if(nRecJetsCuts==2 && type==kBckgOutAJStat)
6244 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor2Jets);
6245 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor2Jets );
6251 if(type==kBckgOut3J || type==kBckgOutAJ)
6253 if(type==kBckgOut3J) fh1Out3JetsMult->Fill(tracklistout3jets->GetSize());
6255 for(Int_t it=0; it<tracklistout3jets->GetSize(); ++it){
6257 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout3jets->At(it));
6258 if(!trackVP) continue;
6259 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6261 Float_t jetPt = jet->Pt();
6262 Float_t trackPt = trackV->Pt();
6264 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6266 if(type==kBckgOut3J)
6268 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6269 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6271 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6272 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6274 qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6277 // All cases included
6278 if(nRecJetsCuts==3 && type==kBckgOutAJ)
6280 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6281 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6283 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6284 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6288 // Increment jet pt with one entry in case #tracks outside jets = 0
6289 if(tracklistout3jets->GetSize()==0) {
6290 Float_t jetPt = jet->Pt();
6291 Bool_t incrementJetPt = kTRUE;
6292 if(type==kBckgOut3J)
6294 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6295 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6297 // All cases included
6298 if(nRecJetsCuts==3 && type==kBckgOutAJ)
6300 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6301 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6306 if(type==kBckgOut3JStat || type==kBckgOutAJStat)
6308 for(Int_t it=0; it<tracklistout3jetsStat->GetSize(); ++it){
6310 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout3jetsStat->At(it));
6311 if(!trackVP) continue;
6312 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6314 Float_t jetPt = jet->Pt();
6315 Float_t trackPt = trackV->Pt();
6316 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6318 if(type==kBckgOut3JStat)
6320 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets);
6321 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
6323 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets);
6324 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets);
6326 //if(fQAMode&1) qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
6329 // All cases included
6330 if(nRecJetsCuts==3 && type==kBckgOutAJStat)
6332 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets );
6333 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
6335 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets );
6336 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets );
6338 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6343 // Increment jet pt with one entry in case #tracks outside jets = 0
6344 if(tracklistout3jetsStat->GetSize()==0) {
6345 Float_t jetPt = jet->Pt();
6346 Bool_t incrementJetPt = kTRUE;
6347 if(type==kBckgOut3JStat)
6349 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor3Jets);
6350 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor3Jets);
6352 // All cases included
6353 if(nRecJetsCuts==3 && type==kBckgOutAJStat)
6355 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor3Jets);
6356 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor3Jets );
6362 if(type==kBckgClustersOutLeading){ // clusters bgr: all tracks in clusters out of leading jet
6364 TList* tracklistClustersOutLeading = new TList();
6365 Double_t normFactorClusters = 0;
6366 Float_t jetPt = jet->Pt();
6368 GetClusterTracksOutOf1Jet(jet, tracklistClustersOutLeading, normFactorClusters);
6369 fh1OutClustersMult->Fill(tracklistClustersOutLeading->GetSize());
6371 for(Int_t it=0; it<tracklistClustersOutLeading->GetSize(); ++it){
6373 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistClustersOutLeading->At(it));
6374 if(!trackVP) continue;
6375 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6377 Float_t trackPt = trackVP->Pt();
6379 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6381 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorClusters );
6382 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt );
6387 delete tracklistClustersOutLeading;
6391 if(type == kBckgClusters){ // clusters bgr: all tracks in 'median cluster'
6393 TList* tracklistClustersMedian = new TList();
6394 Double_t normFactorClusters = 0;
6395 Float_t jetPt = jet->Pt();
6397 GetClusterTracksMedian(tracklistClustersMedian, normFactorClusters);
6398 fh1MedianClustersMult->Fill(tracklistClustersMedian->GetSize());
6400 for(Int_t it=0; it<tracklistClustersMedian->GetSize(); ++it){
6402 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistClustersMedian->At(it));
6403 if(!trackVP) continue;
6404 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6406 Float_t trackPt = trackVP->Pt();
6408 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6410 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorClusters );
6411 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt );
6416 delete tracklistClustersMedian;
6419 delete tracklistout2jets;
6420 delete tracklistout3jets;
6421 delete tracklistout2jetsStat;
6422 delete tracklistout3jetsStat;
6426 // ______________________________________________________________________________________________________________________________________________________
6427 AliAODJet* AliAnalysisTaskFragmentationFunction::GetAODBckgSubJet(AliAODJet* jet, Int_t method)
6429 // correct jet pt for (mean bgr energy density) x (jet area)
6431 if(!fBranchRecBackJets.Length()){
6432 if(fDebug>0)Printf("%s:%d background branch name not set",(char*)__FILE__,__LINE__);
6436 static AliAODJetEventBackground* externalBackground = (AliAODJetEventBackground*)(fAOD->FindListObject(fBranchRecBackJets.Data()));
6438 if(!externalBackground){
6439 if(fDebug>0)Printf("%s:%d no external background object found in %s",(char*)__FILE__,__LINE__,fBranchRecBackJets.Data());
6443 Float_t rho = externalBackground->GetBackground(method);
6445 // Calculate background and subtract it from jet pt
6446 Float_t ptBack = rho*jet->EffectiveAreaCharged();
6447 Float_t ptSub = jet->Pt()-ptBack;
6449 // Get px, py, pz from eta, phi, pt
6450 TLorentzVector vecSub;
6451 AliAODJet *tmpJet = 0;
6453 vecSub.SetPtEtaPhiM(ptSub,jet->Eta(),jet->Phi(),0.);
6454 tmpJet = new AliAODJet(vecSub.Px(),vecSub.Py(),vecSub.Pz(),vecSub.P());