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)
108 ,fUseRecEffRecJetPtBins(0)
109 ,fUseResponseRecJetPtBins(1)
114 ,fTracksAODMCCharged(0)
115 ,fTracksAODMCChargedSec(0)
116 ,fTracksRecQualityCuts(0)
125 ,fQATrackHistosRec(0)
126 ,fQATrackHistosRecCuts(0)
127 ,fQATrackHistosGen(0)
129 ,fQAJetHistosRecCuts(0)
130 ,fQAJetHistosRecCutsLeading(0)
132 ,fQAJetHistosGenLeading(0)
133 ,fQAJetHistosRecEffLeading(0)
135 ,fFFHistosRecLeading(0)
136 ,fFFHistosRecLeadingTrack(0)
138 ,fFFHistosGenLeading(0)
139 ,fFFHistosGenLeadingTrack(0)
141 ,fIJHistosRecLeading(0)
142 ,fIJHistosRecLeadingTrack(0)
144 ,fIJHistosGenLeading(0)
145 ,fIJHistosGenLeadingTrack(0)
146 ,fFFDiJetHistosRecCuts(0)
147 ,fFFDiJetHistosRecLeading(0)
148 ,fFFDiJetHistosRecLeadingTrack(0)
149 ,fFFDiJetHistosGen(0)
150 ,fFFDiJetHistosGenLeading(0)
151 ,fFFDiJetHistosGenLeadingTrack(0)
152 ,fQADiJetHistosRecCuts(0)
153 ,fQADiJetHistosGen(0)
154 ,fPhiCorrHistosJetArea(0)
155 ,fPhiCorrHistosTransverseArea(0)
156 ,fPhiCorrHistosAwayArea(0)
157 ,fQATrackHighPtThreshold(0)
206 ,fDiJetNBinsJetInvMass(0)
207 ,fDiJetJetInvMassMin(0)
208 ,fDiJetJetInvMassMax(0)
221 ,fQADiJetNBinsInvMass(0)
222 ,fQADiJetInvMassMin(0)
223 ,fQADiJetInvMassMax(0)
224 ,fQADiJetNBinsJetPt(0)
227 ,fQADiJetNBinsDeltaPhi(0)
228 ,fQADiJetDeltaPhiMin(0)
229 ,fQADiJetDeltaPhiMax(0)
230 ,fQADiJetNBinsDeltaEta(0)
231 ,fQADiJetDeltaEtaMin(0)
232 ,fQADiJetDeltaEtaMax(0)
233 ,fQADiJetNBinsDeltaPt(0)
234 ,fQADiJetDeltaPtMin(0)
235 ,fQADiJetDeltaPtMax(0)
236 ,fQADiJetNBinsInBal(0)
250 ,fh1VertexNContributors(0)
254 ,fh2TrackPtVsDCAXY(0)
264 ,fh1nRecBckgJetsCuts(0)
266 ,fh2PtRecVsGenPrim(0)
268 ,fQATrackHistosRecEffGen(0)
269 ,fQATrackHistosRecEffRec(0)
270 ,fQATrackHistosSecRec(0)
271 ,fFFHistosRecEffGen(0)
272 ,fFFHistosRecEffRec(0)
274 ,fhnResponseSinglePt(0)
275 ,fh2SingleInvPtRecMnGenVsPtGen(0)
276 ,fhnResponseJetTrackPt(0)
280 ,fh1OutLeadingMult(0)
281 ,fh1OutLeadingStatMult(0)
284 ,fh1ASideWindowMult(0)
285 ,fh1PerpWindowMult(0)
288 ,fh1MedianClustersMult(0)
289 ,fh1OutClustersMult(0)
290 ,fh1FractionPtEmbedded(0)
292 ,fh2DeltaPtVsJetPtEmbedded(0)
293 ,fh2DeltaPtVsRecJetPtEmbedded(0)
294 ,fh1DeltaREmbedded(0)
295 ,fh2ptVsDistNN_pt50_rec(0)
296 ,fh2ptVsDistNN_pt50_nonRec(0)
297 ,fh2ptVsDistNN_pt10_rec(0)
298 ,fh2ptVsDistNN_pt10_nonRec(0)
299 ,fQABckgHisto0RecCuts(0)
301 ,fQABckgHisto1RecCuts(0)
303 ,fQABckgHisto2RecCuts(0)
305 ,fQABckgHisto3RecCuts(0)
307 ,fQABckgHisto4RecCuts(0)
309 ,fFFBckgHisto0RecCuts(0)
310 ,fFFBckgHisto0RecLeading(0)
312 ,fFFBckgHisto0GenLeading(0)
313 ,fFFBckgHisto1RecCuts(0)
314 ,fFFBckgHisto1RecLeading(0)
316 ,fFFBckgHisto1GenLeading(0)
317 ,fFFBckgHisto2RecCuts(0)
318 ,fFFBckgHisto2RecLeading(0)
320 ,fFFBckgHisto2GenLeading(0)
321 ,fFFBckgHisto3RecCuts(0)
322 ,fFFBckgHisto3RecLeading(0)
324 ,fFFBckgHisto3GenLeading(0)
325 ,fFFBckgHisto4RecCuts(0)
326 ,fFFBckgHisto4RecLeading(0)
328 ,fFFBckgHisto4GenLeading(0)
329 ,fIJBckgHisto0RecCuts(0)
330 ,fIJBckgHisto0RecLeading(0)
332 ,fIJBckgHisto0GenLeading(0)
333 ,fIJBckgHisto1RecCuts(0)
334 ,fIJBckgHisto1RecLeading(0)
336 ,fIJBckgHisto1GenLeading(0)
337 ,fIJBckgHisto2RecCuts(0)
338 ,fIJBckgHisto2RecLeading(0)
340 ,fIJBckgHisto2GenLeading(0)
341 ,fIJBckgHisto3RecCuts(0)
342 ,fIJBckgHisto3RecLeading(0)
344 ,fIJBckgHisto3GenLeading(0)
345 ,fIJBckgHisto4RecCuts(0)
346 ,fIJBckgHisto4RecLeading(0)
348 ,fIJBckgHisto4GenLeading(0)
352 // default constructor
360 //__________________________________________________________________________________________
361 AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const char *name)
362 : AliAnalysisTaskSE(name)
368 ,fBranchRecJets("jets")
369 ,fBranchRecBackJets("")
370 ,fBranchRecBckgClusters("")
372 ,fBranchEmbeddedJets("")
376 ,fUseAODInputJets(kTRUE)
378 ,fUsePhysicsSelection(kTRUE)
387 ,fUseExtraTracksBgr(0)
388 ,fCutFractionPtEmbedded(0)
389 ,fUseEmbeddedJetAxis(0)
390 ,fUseEmbeddedJetPt(0)
397 ,fDiJetDeltaPhiCut(0)
398 ,fDiJetPtFractionCut(0)
412 ,fUseRecEffRecJetPtBins(0)
413 ,fUseResponseRecJetPtBins(1)
418 ,fTracksAODMCCharged(0)
419 ,fTracksAODMCChargedSec(0)
420 ,fTracksRecQualityCuts(0)
429 ,fQATrackHistosRec(0)
430 ,fQATrackHistosRecCuts(0)
431 ,fQATrackHistosGen(0)
433 ,fQAJetHistosRecCuts(0)
434 ,fQAJetHistosRecCutsLeading(0)
436 ,fQAJetHistosGenLeading(0)
437 ,fQAJetHistosRecEffLeading(0)
439 ,fFFHistosRecLeading(0)
440 ,fFFHistosRecLeadingTrack(0)
442 ,fFFHistosGenLeading(0)
443 ,fFFHistosGenLeadingTrack(0)
445 ,fIJHistosRecLeading(0)
446 ,fIJHistosRecLeadingTrack(0)
448 ,fIJHistosGenLeading(0)
449 ,fIJHistosGenLeadingTrack(0)
450 ,fFFDiJetHistosRecCuts(0)
451 ,fFFDiJetHistosRecLeading(0)
452 ,fFFDiJetHistosRecLeadingTrack(0)
453 ,fFFDiJetHistosGen(0)
454 ,fFFDiJetHistosGenLeading(0)
455 ,fFFDiJetHistosGenLeadingTrack(0)
456 ,fQADiJetHistosRecCuts(0)
457 ,fQADiJetHistosGen(0)
458 ,fPhiCorrHistosJetArea(0)
459 ,fPhiCorrHistosTransverseArea(0)
460 ,fPhiCorrHistosAwayArea(0)
461 ,fQATrackHighPtThreshold(0)
510 ,fDiJetNBinsJetInvMass(0)
511 ,fDiJetJetInvMassMin(0)
512 ,fDiJetJetInvMassMax(0)
525 ,fQADiJetNBinsInvMass(0)
526 ,fQADiJetInvMassMin(0)
527 ,fQADiJetInvMassMax(0)
528 ,fQADiJetNBinsJetPt(0)
531 ,fQADiJetNBinsDeltaPhi(0)
532 ,fQADiJetDeltaPhiMin(0)
533 ,fQADiJetDeltaPhiMax(0)
534 ,fQADiJetNBinsDeltaEta(0)
535 ,fQADiJetDeltaEtaMin(0)
536 ,fQADiJetDeltaEtaMax(0)
537 ,fQADiJetNBinsDeltaPt(0)
538 ,fQADiJetDeltaPtMin(0)
539 ,fQADiJetDeltaPtMax(0)
540 ,fQADiJetNBinsInBal(0)
554 ,fh1VertexNContributors(0)
558 ,fh2TrackPtVsDCAXY(0)
568 ,fh1nRecBckgJetsCuts(0)
570 ,fh2PtRecVsGenPrim(0)
572 ,fQATrackHistosRecEffGen(0)
573 ,fQATrackHistosRecEffRec(0)
574 ,fQATrackHistosSecRec(0)
575 ,fFFHistosRecEffGen(0)
576 ,fFFHistosRecEffRec(0)
578 ,fhnResponseSinglePt(0)
579 ,fh2SingleInvPtRecMnGenVsPtGen(0)
580 ,fhnResponseJetTrackPt(0)
584 ,fh1OutLeadingMult(0)
585 ,fh1OutLeadingStatMult(0)
588 ,fh1ASideWindowMult(0)
589 ,fh1PerpWindowMult(0)
592 ,fh1MedianClustersMult(0)
593 ,fh1OutClustersMult(0)
594 ,fh1FractionPtEmbedded(0)
596 ,fh2DeltaPtVsJetPtEmbedded(0)
597 ,fh2DeltaPtVsRecJetPtEmbedded(0)
598 ,fh1DeltaREmbedded(0)
599 ,fh2ptVsDistNN_pt50_rec(0)
600 ,fh2ptVsDistNN_pt50_nonRec(0)
601 ,fh2ptVsDistNN_pt10_rec(0)
602 ,fh2ptVsDistNN_pt10_nonRec(0)
603 ,fQABckgHisto0RecCuts(0)
605 ,fQABckgHisto1RecCuts(0)
607 ,fQABckgHisto2RecCuts(0)
609 ,fQABckgHisto3RecCuts(0)
611 ,fQABckgHisto4RecCuts(0)
613 ,fFFBckgHisto0RecCuts(0)
614 ,fFFBckgHisto0RecLeading(0)
616 ,fFFBckgHisto0GenLeading(0)
617 ,fFFBckgHisto1RecCuts(0)
618 ,fFFBckgHisto1RecLeading(0)
620 ,fFFBckgHisto1GenLeading(0)
621 ,fFFBckgHisto2RecCuts(0)
622 ,fFFBckgHisto2RecLeading(0)
624 ,fFFBckgHisto2GenLeading(0)
625 ,fFFBckgHisto3RecCuts(0)
626 ,fFFBckgHisto3RecLeading(0)
628 ,fFFBckgHisto3GenLeading(0)
629 ,fFFBckgHisto4RecCuts(0)
630 ,fFFBckgHisto4RecLeading(0)
632 ,fFFBckgHisto4GenLeading(0)
633 ,fIJBckgHisto0RecCuts(0)
634 ,fIJBckgHisto0RecLeading(0)
636 ,fIJBckgHisto0GenLeading(0)
637 ,fIJBckgHisto1RecCuts(0)
638 ,fIJBckgHisto1RecLeading(0)
640 ,fIJBckgHisto1GenLeading(0)
641 ,fIJBckgHisto2RecCuts(0)
642 ,fIJBckgHisto2RecLeading(0)
644 ,fIJBckgHisto2GenLeading(0)
645 ,fIJBckgHisto3RecCuts(0)
646 ,fIJBckgHisto3RecLeading(0)
648 ,fIJBckgHisto3GenLeading(0)
649 ,fIJBckgHisto4RecCuts(0)
650 ,fIJBckgHisto4RecLeading(0)
652 ,fIJBckgHisto4GenLeading(0)
663 DefineOutput(1,TList::Class());
668 //__________________________________________________________________________________________________________________________
669 AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const AliAnalysisTaskFragmentationFunction ©)
670 : AliAnalysisTaskSE()
673 ,fAODJets(copy.fAODJets)
674 ,fAODExtension(copy.fAODExtension)
675 ,fNonStdFile(copy.fNonStdFile)
676 ,fBranchRecJets(copy.fBranchRecJets)
677 ,fBranchRecBackJets(copy.fBranchRecBackJets)
678 ,fBranchRecBckgClusters(copy.fBranchRecBckgClusters)
679 ,fBranchGenJets(copy.fBranchGenJets)
680 ,fBranchEmbeddedJets(copy.fBranchEmbeddedJets)
681 ,fTrackTypeGen(copy.fTrackTypeGen)
682 ,fJetTypeGen(copy.fJetTypeGen)
683 ,fJetTypeRecEff(copy.fJetTypeRecEff)
684 ,fUseAODInputJets(copy.fUseAODInputJets)
685 ,fFilterMask(copy.fFilterMask)
686 ,fUsePhysicsSelection(copy.fUsePhysicsSelection)
687 ,fEventClass(copy.fEventClass)
688 ,fMaxVertexZ(copy.fMaxVertexZ)
689 ,fTrackPtCut(copy.fTrackPtCut)
690 ,fTrackEtaMin(copy.fTrackEtaMin)
691 ,fTrackEtaMax(copy.fTrackEtaMax)
692 ,fTrackPhiMin(copy.fTrackPhiMin)
693 ,fTrackPhiMax(copy.fTrackPhiMax)
694 ,fUseExtraTracks(copy.fUseExtraTracks)
695 ,fUseExtraTracksBgr(copy.fUseExtraTracksBgr)
696 ,fCutFractionPtEmbedded(copy.fCutFractionPtEmbedded)
697 ,fUseEmbeddedJetAxis(copy.fUseEmbeddedJetAxis)
698 ,fUseEmbeddedJetPt(copy.fUseEmbeddedJetPt)
699 ,fJetPtCut(copy.fJetPtCut)
700 ,fJetEtaMin(copy.fJetEtaMin)
701 ,fJetEtaMax(copy.fJetEtaMax)
702 ,fJetPhiMin(copy.fJetPhiMin)
703 ,fJetPhiMax(copy.fJetPhiMax)
704 ,fDiJetCut(copy.fDiJetCut)
705 ,fDiJetDeltaPhiCut(copy.fDiJetDeltaPhiCut)
706 ,fDiJetPtFractionCut(copy.fDiJetPtFractionCut)
707 ,fDiJetCDFCut(copy.fDiJetCDFCut)
708 ,fDiJetKindBins(copy.fDiJetKindBins)
709 ,fFFRadius(copy.fFFRadius)
710 ,fFFMaxTrackPt(copy.fFFMaxTrackPt)
711 ,fFFMinnTracks(copy.fFFMinnTracks)
712 ,fFFBckgRadius(copy.fFFBckgRadius)
713 ,fBckgMode(copy.fBckgMode)
714 ,fIJMode(copy.fIJMode)
715 ,fQAMode(copy.fQAMode)
716 ,fFFMode(copy.fFFMode)
717 ,fDJMode(copy.fDJMode)
718 ,fEffMode(copy.fEffMode)
719 ,fPhiCorrMode(copy.fPhiCorrMode)
720 ,fUseRecEffRecJetPtBins(copy.fUseRecEffRecJetPtBins)
721 ,fUseResponseRecJetPtBins(copy.fUseResponseRecJetPtBins)
722 ,fAvgTrials(copy.fAvgTrials)
723 ,fTracksRec(copy.fTracksRec)
724 ,fTracksRecCuts(copy.fTracksRecCuts)
725 ,fTracksGen(copy.fTracksGen)
726 ,fTracksAODMCCharged(copy.fTracksAODMCCharged)
727 ,fTracksAODMCChargedSec(copy.fTracksAODMCChargedSec)
728 ,fTracksRecQualityCuts(copy.fTracksRecQualityCuts)
729 ,fJetsRec(copy.fJetsRec)
730 ,fJetsRecCuts(copy.fJetsRecCuts)
731 ,fJetsGen(copy.fJetsGen)
732 ,fJetsRecEff(copy.fJetsRecEff)
733 ,fJetsEmbedded(copy.fJetsEmbedded)
734 ,fBckgJetsRec(copy.fBckgJetsRec)
735 ,fBckgJetsRecCuts(copy.fBckgJetsRecCuts)
736 ,fBckgJetsGen(copy.fBckgJetsGen)
737 ,fQATrackHistosRec(copy.fQATrackHistosRec)
738 ,fQATrackHistosRecCuts(copy.fQATrackHistosRecCuts)
739 ,fQATrackHistosGen(copy.fQATrackHistosGen)
740 ,fQAJetHistosRec(copy.fQAJetHistosRec)
741 ,fQAJetHistosRecCuts(copy.fQAJetHistosRecCuts)
742 ,fQAJetHistosRecCutsLeading(copy.fQAJetHistosRecCutsLeading)
743 ,fQAJetHistosGen(copy.fQAJetHistosGen)
744 ,fQAJetHistosGenLeading(copy.fQAJetHistosGenLeading)
745 ,fQAJetHistosRecEffLeading(copy.fQAJetHistosRecEffLeading)
746 ,fFFHistosRecCuts(copy.fFFHistosRecCuts)
747 ,fFFHistosRecLeading(copy.fFFHistosRecLeading)
748 ,fFFHistosRecLeadingTrack(copy.fFFHistosRecLeadingTrack)
749 ,fFFHistosGen(copy.fFFHistosGen)
750 ,fFFHistosGenLeading(copy.fFFHistosGenLeading)
751 ,fFFHistosGenLeadingTrack(copy.fFFHistosGenLeadingTrack)
752 ,fIJHistosRecCuts(copy.fIJHistosRecCuts)
753 ,fIJHistosRecLeading(copy.fIJHistosRecLeading)
754 ,fIJHistosRecLeadingTrack(copy.fIJHistosRecLeadingTrack)
755 ,fIJHistosGen(copy.fIJHistosGen)
756 ,fIJHistosGenLeading(copy.fIJHistosGenLeading)
757 ,fIJHistosGenLeadingTrack(copy.fIJHistosGenLeadingTrack)
758 ,fFFDiJetHistosRecCuts(copy.fFFDiJetHistosRecCuts)
759 ,fFFDiJetHistosRecLeading(copy.fFFDiJetHistosRecLeading)
760 ,fFFDiJetHistosRecLeadingTrack(copy.fFFDiJetHistosRecLeadingTrack)
761 ,fFFDiJetHistosGen(copy.fFFDiJetHistosGen)
762 ,fFFDiJetHistosGenLeading(copy.fFFDiJetHistosGenLeading)
763 ,fFFDiJetHistosGenLeadingTrack(copy.fFFDiJetHistosGenLeadingTrack)
764 ,fQADiJetHistosRecCuts(copy.fQADiJetHistosRecCuts)
765 ,fQADiJetHistosGen(copy.fQADiJetHistosGen)
766 ,fPhiCorrHistosJetArea(copy.fPhiCorrHistosJetArea)
767 ,fPhiCorrHistosTransverseArea(copy.fPhiCorrHistosTransverseArea)
768 ,fPhiCorrHistosAwayArea(copy.fPhiCorrHistosAwayArea)
769 ,fQATrackHighPtThreshold(copy.fQATrackHighPtThreshold)
770 ,fFFNBinsJetPt(copy.fFFNBinsJetPt)
771 ,fFFJetPtMin(copy.fFFJetPtMin)
772 ,fFFJetPtMax(copy.fFFJetPtMax)
773 ,fFFNBinsPt(copy.fFFNBinsPt)
774 ,fFFPtMin(copy.fFFPtMin)
775 ,fFFPtMax(copy.fFFPtMax)
776 ,fFFNBinsXi(copy.fFFNBinsXi)
777 ,fFFXiMin(copy.fFFXiMin)
778 ,fFFXiMax(copy.fFFXiMax)
779 ,fFFNBinsZ(copy.fFFNBinsZ)
780 ,fFFZMin(copy.fFFZMin)
781 ,fFFZMax(copy.fFFZMax)
782 ,fQAJetNBinsPt(copy.fQAJetNBinsPt)
783 ,fQAJetPtMin(copy.fQAJetPtMin)
784 ,fQAJetPtMax(copy.fQAJetPtMax)
785 ,fQAJetNBinsEta(copy.fQAJetNBinsEta)
786 ,fQAJetEtaMin(copy.fQAJetEtaMin)
787 ,fQAJetEtaMax(copy.fQAJetEtaMax)
788 ,fQAJetNBinsPhi(copy.fQAJetNBinsPhi)
789 ,fQAJetPhiMin(copy.fQAJetPhiMin)
790 ,fQAJetPhiMax(copy.fQAJetPhiMax)
791 ,fQATrackNBinsPt(copy.fQATrackNBinsPt)
792 ,fQATrackPtMin(copy.fQATrackPtMin)
793 ,fQATrackPtMax(copy.fQATrackPtMax)
794 ,fQATrackNBinsEta(copy.fQATrackNBinsEta)
795 ,fQATrackEtaMin(copy.fQATrackEtaMin)
796 ,fQATrackEtaMax(copy.fQATrackEtaMax)
797 ,fQATrackNBinsPhi(copy.fQATrackNBinsPhi)
798 ,fQATrackPhiMin(copy.fQATrackPhiMin)
799 ,fQATrackPhiMax(copy.fQATrackPhiMax)
800 ,fIJNBinsJetPt(copy.fIJNBinsJetPt)
801 ,fIJJetPtMin(copy.fIJJetPtMin)
802 ,fIJJetPtMax(copy.fIJJetPtMax)
803 ,fIJNBinsPt(copy.fIJNBinsPt)
804 ,fIJPtMin(copy.fIJPtMin)
805 ,fIJPtMax(copy.fIJPtMax)
806 ,fIJNBinsZ(copy.fIJNBinsZ)
807 ,fIJZMin(copy.fIJZMin)
808 ,fIJZMax(copy.fIJZMax)
809 ,fIJNBinsCosTheta(copy.fIJNBinsCosTheta)
810 ,fIJCosThetaMin(copy.fIJCosThetaMin)
811 ,fIJCosThetaMax(copy.fIJCosThetaMax)
812 ,fIJNBinsTheta(copy.fIJNBinsTheta)
813 ,fIJThetaMin(copy.fIJThetaMin)
814 ,fIJThetaMax(copy.fIJThetaMax)
815 ,fIJNBinsJt(copy.fIJNBinsJt)
816 ,fIJJtMin(copy.fIJJtMin)
817 ,fIJJtMax(copy.fIJJtMax)
818 ,fDiJetNBinsJetInvMass(copy.fDiJetNBinsJetInvMass)
819 ,fDiJetJetInvMassMin(copy.fDiJetJetInvMassMin)
820 ,fDiJetJetInvMassMax(copy.fDiJetJetInvMassMax)
821 ,fDiJetNBinsJetPt(copy.fDiJetNBinsJetPt)
822 ,fDiJetJetPtMin(copy.fDiJetJetPtMin)
823 ,fDiJetJetPtMax(copy.fDiJetJetPtMax)
824 ,fDiJetNBinsPt(copy.fDiJetNBinsPt)
825 ,fDiJetPtMin(copy.fDiJetPtMin)
826 ,fDiJetPtMax(copy.fDiJetPtMax)
827 ,fDiJetNBinsXi(copy.fDiJetNBinsXi)
828 ,fDiJetXiMin(copy.fDiJetXiMin)
829 ,fDiJetXiMax(copy.fDiJetXiMax)
830 ,fDiJetNBinsZ(copy.fDiJetNBinsZ)
831 ,fDiJetZMin(copy.fDiJetZMin)
832 ,fDiJetZMax(copy.fDiJetZMax)
833 ,fQADiJetNBinsInvMass(copy.fQADiJetNBinsInvMass)
834 ,fQADiJetInvMassMin(copy.fQADiJetInvMassMin)
835 ,fQADiJetInvMassMax(copy.fQADiJetInvMassMax)
836 ,fQADiJetNBinsJetPt(copy.fQADiJetNBinsJetPt)
837 ,fQADiJetJetPtMin(copy.fQADiJetJetPtMin)
838 ,fQADiJetJetPtMax(copy.fQADiJetJetPtMax)
839 ,fQADiJetNBinsDeltaPhi(copy.fQADiJetNBinsDeltaPhi)
840 ,fQADiJetDeltaPhiMin(copy.fQADiJetDeltaPhiMin)
841 ,fQADiJetDeltaPhiMax(copy.fQADiJetDeltaPhiMax)
842 ,fQADiJetNBinsDeltaEta(copy.fQADiJetNBinsDeltaEta)
843 ,fQADiJetDeltaEtaMin(copy.fQADiJetDeltaEtaMin)
844 ,fQADiJetDeltaEtaMax(copy.fQADiJetDeltaEtaMax)
845 ,fQADiJetNBinsDeltaPt(copy.fQADiJetNBinsDeltaPt)
846 ,fQADiJetDeltaPtMin(copy.fQADiJetDeltaPtMin)
847 ,fQADiJetDeltaPtMax(copy.fQADiJetDeltaPtMax)
848 ,fQADiJetNBinsInBal(copy.fQADiJetNBinsInBal)
849 ,fQADiJetInBalMin(copy.fQADiJetInBalMin)
850 ,fQADiJetInBalMax(copy.fQADiJetInBalMax)
851 ,fPhiCorrNBinsPt(copy.fPhiCorrNBinsPt)
852 ,fPhiCorrPtMin(copy.fPhiCorrPtMin)
853 ,fPhiCorrPtMax(copy.fPhiCorrPtMax)
854 ,fPhiCorrNBinsEta(copy.fPhiCorrNBinsEta)
855 ,fPhiCorrEtaMin(copy.fPhiCorrEtaMin)
856 ,fPhiCorrEtaMax(copy.fPhiCorrEtaMax)
857 ,fPhiCorrNBinsPhi(copy.fPhiCorrNBinsPhi)
858 ,fPhiCorrPhiMin(copy.fPhiCorrPhiMin)
859 ,fPhiCorrPhiMax(copy.fPhiCorrPhiMax)
860 ,fCommonHistList(copy.fCommonHistList)
861 ,fh1EvtSelection(copy.fh1EvtSelection)
862 ,fh1VertexNContributors(copy.fh1VertexNContributors)
863 ,fh1VertexZ(copy.fh1VertexZ)
864 ,fh1EvtMult(copy.fh1EvtMult)
865 ,fh1EvtCent(copy.fh1EvtCent)
866 ,fh2TrackPtVsDCAXY(copy.fh2TrackPtVsDCAXY)
867 ,fh2TrackPtVsDCAZ(copy.fh2TrackPtVsDCAXY)
868 ,fh1Xsec(copy.fh1Xsec)
869 ,fh1Trials(copy.fh1Trials)
870 ,fh1PtHard(copy.fh1PtHard)
871 ,fh1PtHardTrials(copy.fh1PtHardTrials)
872 ,fh1nRecJetsCuts(copy.fh1nRecJetsCuts)
873 ,fh1nGenJets(copy.fh1nGenJets)
874 ,fh1nRecEffJets(copy.fh1nRecEffJets)
875 ,fh1nEmbeddedJets(copy.fh1nEmbeddedJets)
876 ,fh1nRecBckgJetsCuts(copy.fh1nRecBckgJetsCuts)
877 ,fh1nGenBckgJets(copy.fh1nGenBckgJets)
878 ,fh2PtRecVsGenPrim(copy.fh2PtRecVsGenPrim)
879 ,fh2PtRecVsGenSec(copy.fh2PtRecVsGenSec)
880 ,fQATrackHistosRecEffGen(copy.fQATrackHistosRecEffGen)
881 ,fQATrackHistosRecEffRec(copy.fQATrackHistosRecEffRec)
882 ,fQATrackHistosSecRec(copy.fQATrackHistosSecRec)
883 ,fFFHistosRecEffGen(copy.fFFHistosRecEffGen)
884 ,fFFHistosRecEffRec(copy.fFFHistosRecEffRec)
885 ,fFFHistosSecRec(copy.fFFHistosSecRec)
886 ,fhnResponseSinglePt(copy.fhnResponseSinglePt)
887 ,fh2SingleInvPtRecMnGenVsPtGen(copy.fh2SingleInvPtRecMnGenVsPtGen)
888 ,fhnResponseJetTrackPt(copy.fhnResponseJetTrackPt)
889 ,fhnResponseJetZ(copy.fhnResponseJetZ)
890 ,fhnResponseJetXi(copy.fhnResponseJetXi)
892 ,fh1OutLeadingMult(copy.fh1OutLeadingMult)
893 ,fh1OutLeadingStatMult(copy.fh1OutLeadingStatMult)
894 ,fh1PerpMult(copy.fh1PerpMult)
895 ,fh1ASideMult(copy.fh1ASideMult)
896 ,fh1ASideWindowMult(copy.fh1ASideWindowMult)
897 ,fh1PerpWindowMult(copy.fh1PerpWindowMult)
898 ,fh1Out2JetsMult(copy.fh1Out2JetsMult)
899 ,fh1Out3JetsMult(copy.fh1Out3JetsMult)
900 ,fh1MedianClustersMult(copy.fh1MedianClustersMult)
901 ,fh1OutClustersMult(copy.fh1OutClustersMult)
902 ,fh1FractionPtEmbedded(copy.fh1FractionPtEmbedded)
903 ,fh1IndexEmbedded(copy.fh1IndexEmbedded)
904 ,fh2DeltaPtVsJetPtEmbedded(copy.fh2DeltaPtVsJetPtEmbedded)
905 ,fh2DeltaPtVsRecJetPtEmbedded(copy.fh2DeltaPtVsRecJetPtEmbedded)
906 ,fh1DeltaREmbedded(copy.fh1DeltaREmbedded)
907 ,fh2ptVsDistNN_pt50_rec(copy.fh2ptVsDistNN_pt50_rec)
908 ,fh2ptVsDistNN_pt50_nonRec(copy.fh2ptVsDistNN_pt50_nonRec)
909 ,fh2ptVsDistNN_pt10_rec(copy.fh2ptVsDistNN_pt10_rec)
910 ,fh2ptVsDistNN_pt10_nonRec(copy.fh2ptVsDistNN_pt10_nonRec)
911 ,fQABckgHisto0RecCuts(copy.fQABckgHisto0RecCuts)
912 ,fQABckgHisto0Gen(copy.fQABckgHisto0Gen)
913 ,fQABckgHisto1RecCuts(copy.fQABckgHisto1RecCuts)
914 ,fQABckgHisto1Gen(copy.fQABckgHisto1Gen)
915 ,fQABckgHisto2RecCuts(copy.fQABckgHisto2RecCuts)
916 ,fQABckgHisto2Gen(copy.fQABckgHisto2Gen)
917 ,fQABckgHisto3RecCuts(copy.fQABckgHisto3RecCuts)
918 ,fQABckgHisto3Gen(copy.fQABckgHisto3Gen)
919 ,fQABckgHisto4RecCuts(copy.fQABckgHisto4RecCuts)
920 ,fQABckgHisto4Gen(copy.fQABckgHisto4Gen)
921 ,fFFBckgHisto0RecCuts(copy.fFFBckgHisto0RecCuts)
922 ,fFFBckgHisto0RecLeading(copy.fFFBckgHisto0RecLeading)
923 ,fFFBckgHisto0Gen(copy.fFFBckgHisto0Gen)
924 ,fFFBckgHisto0GenLeading(copy.fFFBckgHisto0GenLeading)
925 ,fFFBckgHisto1RecCuts(copy.fFFBckgHisto1RecCuts)
926 ,fFFBckgHisto1RecLeading(copy.fFFBckgHisto1RecLeading)
927 ,fFFBckgHisto1Gen(copy.fFFBckgHisto1Gen)
928 ,fFFBckgHisto1GenLeading(copy.fFFBckgHisto1GenLeading)
929 ,fFFBckgHisto2RecCuts(copy.fFFBckgHisto2RecCuts)
930 ,fFFBckgHisto2RecLeading(copy.fFFBckgHisto2RecLeading)
931 ,fFFBckgHisto2Gen(copy.fFFBckgHisto2Gen)
932 ,fFFBckgHisto2GenLeading(copy.fFFBckgHisto2GenLeading)
933 ,fFFBckgHisto3RecCuts(copy.fFFBckgHisto3RecCuts)
934 ,fFFBckgHisto3RecLeading(copy.fFFBckgHisto3RecLeading)
935 ,fFFBckgHisto3Gen(copy.fFFBckgHisto3Gen)
936 ,fFFBckgHisto3GenLeading(copy.fFFBckgHisto3GenLeading)
937 ,fFFBckgHisto4RecCuts(copy.fFFBckgHisto4RecCuts)
938 ,fFFBckgHisto4RecLeading(copy.fFFBckgHisto4RecLeading)
939 ,fFFBckgHisto4Gen(copy.fFFBckgHisto4Gen)
940 ,fFFBckgHisto4GenLeading(copy.fFFBckgHisto4GenLeading)
941 ,fIJBckgHisto0RecCuts(copy.fIJBckgHisto0RecCuts)
942 ,fIJBckgHisto0RecLeading(copy.fIJBckgHisto0RecLeading)
943 ,fIJBckgHisto0Gen(copy.fIJBckgHisto0Gen)
944 ,fIJBckgHisto0GenLeading(copy.fIJBckgHisto0GenLeading)
945 ,fIJBckgHisto1RecCuts(copy.fIJBckgHisto1RecCuts)
946 ,fIJBckgHisto1RecLeading(copy.fIJBckgHisto1RecLeading)
947 ,fIJBckgHisto1Gen(copy.fIJBckgHisto1Gen)
948 ,fIJBckgHisto1GenLeading(copy.fIJBckgHisto1GenLeading)
949 ,fIJBckgHisto2RecCuts(copy.fIJBckgHisto2RecCuts)
950 ,fIJBckgHisto2RecLeading(copy.fIJBckgHisto2RecLeading)
951 ,fIJBckgHisto2Gen(copy.fIJBckgHisto2Gen)
952 ,fIJBckgHisto2GenLeading(copy.fIJBckgHisto2GenLeading)
953 ,fIJBckgHisto3RecCuts(copy.fIJBckgHisto3RecCuts)
954 ,fIJBckgHisto3RecLeading(copy.fIJBckgHisto3RecLeading)
955 ,fIJBckgHisto3Gen(copy.fIJBckgHisto3Gen)
956 ,fIJBckgHisto3GenLeading(copy.fIJBckgHisto3GenLeading)
957 ,fIJBckgHisto4RecCuts(copy.fIJBckgHisto4RecCuts)
958 ,fIJBckgHisto4RecLeading(copy.fIJBckgHisto4RecLeading)
959 ,fIJBckgHisto4Gen(copy.fIJBckgHisto4Gen)
960 ,fIJBckgHisto4GenLeading(copy.fIJBckgHisto4GenLeading)
961 ,fRandom(copy.fRandom)
962 ,fBckgSubMethod(copy.fBckgSubMethod)
965 fBckgType[0] = copy.fBckgType[0];
966 fBckgType[1] = copy.fBckgType[1];
967 fBckgType[2] = copy.fBckgType[2];
968 fBckgType[3] = copy.fBckgType[3];
969 fBckgType[4] = copy.fBckgType[4];
972 // _________________________________________________________________________________________________________________________________
973 AliAnalysisTaskFragmentationFunction& AliAnalysisTaskFragmentationFunction::operator=(const AliAnalysisTaskFragmentationFunction& o)
979 AliAnalysisTaskSE::operator=(o);
982 fAODJets = o.fAODJets;
983 fAODExtension = o.fAODExtension;
984 fNonStdFile = o.fNonStdFile;
985 fBranchRecJets = o.fBranchRecJets;
986 fBranchRecBackJets = o.fBranchRecBackJets;
987 fBranchRecBckgClusters = o.fBranchRecBckgClusters;
988 fBranchGenJets = o.fBranchGenJets;
989 fBranchEmbeddedJets = o.fBranchEmbeddedJets;
990 fTrackTypeGen = o.fTrackTypeGen;
991 fJetTypeGen = o.fJetTypeGen;
992 fJetTypeRecEff = o.fJetTypeRecEff;
993 fUseAODInputJets = o.fUseAODInputJets;
994 fFilterMask = o.fFilterMask;
995 fUsePhysicsSelection = o.fUsePhysicsSelection;
996 fEventClass = o.fEventClass;
997 fMaxVertexZ = o.fMaxVertexZ;
998 fTrackPtCut = o.fTrackPtCut;
999 fTrackEtaMin = o.fTrackEtaMin;
1000 fTrackEtaMax = o.fTrackEtaMax;
1001 fTrackPhiMin = o.fTrackPhiMin;
1002 fTrackPhiMax = o.fTrackPhiMax;
1003 fUseExtraTracks = o.fUseExtraTracks;
1004 fUseExtraTracksBgr = o.fUseExtraTracksBgr;
1005 fCutFractionPtEmbedded = o.fCutFractionPtEmbedded;
1006 fUseEmbeddedJetAxis = o.fUseEmbeddedJetAxis;
1007 fUseEmbeddedJetPt = o.fUseEmbeddedJetPt;
1008 fJetPtCut = o.fJetPtCut;
1009 fJetEtaMin = o.fJetEtaMin;
1010 fJetEtaMax = o.fJetEtaMax;
1011 fJetPhiMin = o.fJetPhiMin;
1012 fJetPhiMax = o.fJetPhiMin;
1013 fDiJetCut = o.fDiJetCut;
1014 fDiJetDeltaPhiCut = o.fDiJetDeltaPhiCut;
1015 fDiJetPtFractionCut = o.fDiJetPtFractionCut;
1016 fDiJetCDFCut = o.fDiJetCDFCut;
1017 fDiJetKindBins = o.fDiJetKindBins;
1018 fFFRadius = o.fFFRadius;
1019 fFFMaxTrackPt = o.fFFMaxTrackPt;
1020 fFFMinnTracks = o.fFFMinnTracks;
1021 fFFBckgRadius = o.fFFBckgRadius;
1022 fBckgMode = o.fBckgMode;
1023 fIJMode = o.fIJMode;
1024 fQAMode = o.fQAMode;
1025 fFFMode = o.fFFMode;
1026 fDJMode = o.fDJMode;
1027 fEffMode = o.fEffMode;
1028 fPhiCorrMode = o.fPhiCorrMode;
1029 fBckgType[0] = o.fBckgType[0];
1030 fBckgType[1] = o.fBckgType[1];
1031 fBckgType[2] = o.fBckgType[2];
1032 fBckgType[3] = o.fBckgType[3];
1033 fBckgType[4] = o.fBckgType[4];
1034 fUseRecEffRecJetPtBins = o.fUseRecEffRecJetPtBins;
1035 fUseResponseRecJetPtBins = o.fUseResponseRecJetPtBins;
1036 fAvgTrials = o.fAvgTrials;
1037 fTracksRec = o.fTracksRec;
1038 fTracksRecCuts = o.fTracksRecCuts;
1039 fTracksGen = o.fTracksGen;
1040 fTracksAODMCCharged = o.fTracksAODMCCharged;
1041 fTracksAODMCChargedSec = o.fTracksAODMCChargedSec;
1042 fTracksRecQualityCuts = o.fTracksRecQualityCuts;
1043 fJetsRec = o.fJetsRec;
1044 fJetsRecCuts = o.fJetsRecCuts;
1045 fJetsGen = o.fJetsGen;
1046 fJetsRecEff = o.fJetsRecEff;
1047 fJetsEmbedded = o.fJetsEmbedded;
1048 fBckgJetsRec = o.fBckgJetsRec;
1049 fBckgJetsRecCuts = o.fBckgJetsRecCuts;
1050 fBckgJetsGen = o.fBckgJetsGen;
1051 fQATrackHistosRec = o.fQATrackHistosRec;
1052 fQATrackHistosRecCuts = o.fQATrackHistosRecCuts;
1053 fQATrackHistosGen = o.fQATrackHistosGen;
1054 fQAJetHistosRec = o.fQAJetHistosRec;
1055 fQAJetHistosRecCuts = o.fQAJetHistosRecCuts;
1056 fQAJetHistosRecCutsLeading = o.fQAJetHistosRecCutsLeading;
1057 fQAJetHistosGen = o.fQAJetHistosGen;
1058 fQAJetHistosGenLeading = o.fQAJetHistosGenLeading;
1059 fQAJetHistosRecEffLeading = o.fQAJetHistosRecEffLeading;
1060 fFFHistosRecCuts = o.fFFHistosRecCuts;
1061 fFFHistosRecLeading = o.fFFHistosRecLeading;
1062 fFFHistosRecLeadingTrack = o.fFFHistosRecLeadingTrack;
1063 fFFHistosGen = o.fFFHistosGen;
1064 fFFHistosGenLeading = o.fFFHistosGenLeading;
1065 fFFHistosGenLeadingTrack = o.fFFHistosGenLeadingTrack;
1066 fIJHistosRecCuts = o.fIJHistosRecCuts;
1067 fIJHistosRecLeading = o.fIJHistosRecLeading;
1068 fIJHistosRecLeadingTrack = o.fIJHistosRecLeadingTrack;
1069 fIJHistosGen = o.fIJHistosGen;
1070 fIJHistosGenLeading = o.fIJHistosGenLeading;
1071 fIJHistosGenLeadingTrack = o.fIJHistosGenLeadingTrack;
1072 fFFDiJetHistosRecCuts = o.fFFDiJetHistosRecCuts;
1073 fFFDiJetHistosRecLeading = o.fFFDiJetHistosRecLeading;
1074 fFFDiJetHistosRecLeadingTrack = o.fFFDiJetHistosRecLeadingTrack;
1075 fFFDiJetHistosGen = o.fFFDiJetHistosGen;
1076 fFFDiJetHistosGenLeading = o.fFFDiJetHistosGenLeading;
1077 fFFDiJetHistosGenLeadingTrack = o.fFFDiJetHistosGenLeadingTrack;
1078 fQADiJetHistosRecCuts = o.fQADiJetHistosRecCuts;
1079 fQADiJetHistosGen = o.fQADiJetHistosGen;
1080 fPhiCorrHistosJetArea = o.fPhiCorrHistosJetArea;
1081 fPhiCorrHistosTransverseArea = o.fPhiCorrHistosTransverseArea;
1082 fPhiCorrHistosAwayArea = o.fPhiCorrHistosAwayArea;
1083 fQATrackHighPtThreshold = o.fQATrackHighPtThreshold;
1084 fFFNBinsJetPt = o.fFFNBinsJetPt;
1085 fFFJetPtMin = o.fFFJetPtMin;
1086 fFFJetPtMax = o.fFFJetPtMax;
1087 fFFNBinsPt = o.fFFNBinsPt;
1088 fFFPtMin = o.fFFPtMin;
1089 fFFPtMax = o.fFFPtMax;
1090 fFFNBinsXi = o.fFFNBinsXi;
1091 fFFXiMin = o.fFFXiMin;
1092 fFFXiMax = o.fFFXiMax;
1093 fFFNBinsZ = o.fFFNBinsZ;
1094 fFFZMin = o.fFFZMin;
1095 fFFZMax = o.fFFZMax;
1096 fQAJetNBinsPt = o.fQAJetNBinsPt;
1097 fQAJetPtMin = o.fQAJetPtMin;
1098 fQAJetPtMax = o.fQAJetPtMax;
1099 fQAJetNBinsEta = o.fQAJetNBinsEta;
1100 fQAJetEtaMin = o.fQAJetEtaMin;
1101 fQAJetEtaMax = o.fQAJetEtaMax;
1102 fQAJetNBinsPhi = o.fQAJetNBinsPhi;
1103 fQAJetPhiMin = o.fQAJetPhiMin;
1104 fQAJetPhiMax = o.fQAJetPhiMax;
1105 fQATrackNBinsPt = o.fQATrackNBinsPt;
1106 fQATrackPtMin = o.fQATrackPtMin;
1107 fQATrackPtMax = o.fQATrackPtMax;
1108 fQATrackNBinsEta = o.fQATrackNBinsEta;
1109 fQATrackEtaMin = o.fQATrackEtaMin;
1110 fQATrackEtaMax = o.fQATrackEtaMax;
1111 fQATrackNBinsPhi = o.fQATrackNBinsPhi;
1112 fQATrackPhiMin = o.fQATrackPhiMin;
1113 fQATrackPhiMax = o.fQATrackPhiMax;
1114 fIJNBinsJetPt = o.fIJNBinsJetPt;
1115 fIJJetPtMin = o.fIJJetPtMin;
1116 fIJJetPtMax = o.fIJJetPtMax;
1117 fIJNBinsPt = o.fIJNBinsPt;
1118 fIJPtMin = o.fIJPtMin;
1119 fIJPtMax = o.fIJPtMax;
1120 fIJNBinsZ = o.fIJNBinsZ;
1121 fIJZMin = o.fIJZMin;
1122 fIJZMax = o.fIJZMax;
1123 fIJNBinsCosTheta = o.fIJNBinsCosTheta;
1124 fIJCosThetaMin = o.fIJCosThetaMin;
1125 fIJCosThetaMax = o.fIJCosThetaMax;
1126 fIJNBinsTheta = o.fIJNBinsTheta;
1127 fIJThetaMin = o.fIJThetaMin;
1128 fIJThetaMax = o.fIJThetaMax;
1129 fIJNBinsJt = o.fIJNBinsJt;
1130 fIJJtMin = o.fIJJtMin;
1131 fIJJtMax = o.fIJJtMax;
1132 fDiJetNBinsJetInvMass = o.fDiJetNBinsJetInvMass;
1133 fDiJetJetInvMassMin = o.fDiJetJetInvMassMin;
1134 fDiJetJetInvMassMax = o.fDiJetJetInvMassMax;
1135 fDiJetNBinsJetPt = o.fDiJetNBinsJetPt;
1136 fDiJetJetPtMin = o.fDiJetJetPtMin;
1137 fDiJetJetPtMax = o.fDiJetJetPtMax;
1138 fDiJetNBinsPt = o.fDiJetNBinsPt;
1139 fDiJetPtMin = o.fDiJetPtMin;
1140 fDiJetPtMax = o.fDiJetPtMax;
1141 fDiJetNBinsXi = o.fDiJetNBinsXi;
1142 fDiJetXiMin = o.fDiJetXiMin;
1143 fDiJetXiMax = o.fDiJetXiMax;
1144 fDiJetNBinsZ = o.fDiJetNBinsZ;
1145 fDiJetZMin = o.fDiJetZMin;
1146 fDiJetZMax = o.fDiJetZMax;
1147 fQADiJetNBinsInvMass = o.fQADiJetNBinsInvMass;
1148 fQADiJetInvMassMin = o.fQADiJetInvMassMin;
1149 fQADiJetInvMassMax = o.fQADiJetInvMassMax;
1150 fQADiJetNBinsJetPt = o.fQADiJetNBinsJetPt;
1151 fQADiJetJetPtMin = o.fQADiJetJetPtMin;
1152 fQADiJetJetPtMax = o.fQADiJetJetPtMax;
1153 fQADiJetNBinsDeltaPhi = o.fQADiJetNBinsDeltaPhi;
1154 fQADiJetDeltaPhiMin = o.fQADiJetDeltaPhiMin;
1155 fQADiJetDeltaPhiMax = o.fQADiJetDeltaPhiMax;
1156 fQADiJetNBinsDeltaEta = o.fQADiJetNBinsDeltaEta;
1157 fQADiJetDeltaEtaMin = o.fQADiJetDeltaEtaMin;
1158 fQADiJetDeltaEtaMax = o.fQADiJetDeltaEtaMax;
1159 fQADiJetNBinsDeltaPt = o.fQADiJetNBinsDeltaPt;
1160 fQADiJetDeltaPtMin = o.fQADiJetDeltaPtMin;
1161 fQADiJetDeltaPtMax = o.fQADiJetDeltaPtMax;
1162 fQADiJetNBinsInBal = o.fQADiJetNBinsInBal;
1163 fQADiJetInBalMin = o.fQADiJetInBalMin;
1164 fQADiJetInBalMax = o.fQADiJetInBalMax;
1165 fPhiCorrNBinsPt = o.fPhiCorrNBinsPt;
1166 fPhiCorrPtMin = o.fPhiCorrPtMin;
1167 fPhiCorrPtMax = o.fPhiCorrPtMax;
1168 fPhiCorrNBinsEta = o.fPhiCorrNBinsEta;
1169 fPhiCorrEtaMin = o.fPhiCorrEtaMin;
1170 fPhiCorrEtaMax = o.fPhiCorrEtaMax;
1171 fPhiCorrNBinsPhi = o.fPhiCorrNBinsPhi;
1172 fPhiCorrPhiMin = o.fPhiCorrPhiMin;
1173 fPhiCorrPhiMax = o.fPhiCorrPhiMax;
1174 fCommonHistList = o.fCommonHistList;
1175 fh1EvtSelection = o.fh1EvtSelection;
1176 fh1VertexNContributors = o.fh1VertexNContributors;
1177 fh1VertexZ = o.fh1VertexZ;
1178 fh1EvtMult = o.fh1EvtMult;
1179 fh1EvtCent = o.fh1EvtCent;
1180 fh2TrackPtVsDCAXY = o.fh2TrackPtVsDCAXY;
1181 fh2TrackPtVsDCAZ = o.fh2TrackPtVsDCAXY;
1182 fh1Xsec = o.fh1Xsec;
1183 fh1Trials = o.fh1Trials;
1184 fh1PtHard = o.fh1PtHard;
1185 fh1PtHardTrials = o.fh1PtHardTrials;
1186 fh1nRecJetsCuts = o.fh1nRecJetsCuts;
1187 fh1nGenJets = o.fh1nGenJets;
1188 fh1nRecEffJets = o.fh1nRecEffJets;
1189 fh1nEmbeddedJets = o.fh1nEmbeddedJets;
1190 fh2PtRecVsGenPrim = o.fh2PtRecVsGenPrim;
1191 fh2PtRecVsGenSec = o.fh2PtRecVsGenSec;
1192 fQATrackHistosRecEffGen = o.fQATrackHistosRecEffGen;
1193 fQATrackHistosRecEffRec = o.fQATrackHistosRecEffRec;
1194 fQATrackHistosSecRec = o.fQATrackHistosSecRec;
1195 fFFHistosRecEffGen = o.fFFHistosRecEffGen;
1196 fFFHistosRecEffRec = o.fFFHistosRecEffRec;
1197 fFFHistosSecRec = o.fFFHistosSecRec;
1198 fhnResponseSinglePt = o.fhnResponseSinglePt;
1199 fh2SingleInvPtRecMnGenVsPtGen = o.fh2SingleInvPtRecMnGenVsPtGen;
1200 fhnResponseJetTrackPt = o.fhnResponseJetTrackPt;
1201 fhnResponseJetZ = o.fhnResponseJetZ;
1202 fhnResponseJetXi = o.fhnResponseJetXi;
1204 fh1OutLeadingMult = o.fh1OutLeadingMult;
1205 fh1OutLeadingStatMult = o.fh1OutLeadingStatMult;
1206 fh1PerpMult = o.fh1PerpMult;
1207 fh1ASideMult = o.fh1ASideMult;
1208 fh1ASideWindowMult = o.fh1ASideWindowMult;
1209 fh1PerpWindowMult = o.fh1PerpWindowMult;
1210 fh1Out2JetsMult = o.fh1Out2JetsMult;
1211 fh1Out3JetsMult = o.fh1Out3JetsMult;
1212 fh1MedianClustersMult = o.fh1MedianClustersMult;
1213 fh1OutClustersMult = o.fh1OutClustersMult;
1214 fh1FractionPtEmbedded = o.fh1FractionPtEmbedded;
1215 fh1IndexEmbedded = o.fh1IndexEmbedded;
1216 fh2DeltaPtVsJetPtEmbedded = o.fh2DeltaPtVsJetPtEmbedded;
1217 fh2DeltaPtVsRecJetPtEmbedded = o.fh2DeltaPtVsRecJetPtEmbedded;
1218 fh1DeltaREmbedded = o.fh1DeltaREmbedded;
1219 fh2ptVsDistNN_pt50_rec = o.fh2ptVsDistNN_pt50_rec;
1220 fh2ptVsDistNN_pt50_nonRec = o.fh2ptVsDistNN_pt50_nonRec;
1221 fh2ptVsDistNN_pt10_rec = o.fh2ptVsDistNN_pt10_rec;
1222 fh2ptVsDistNN_pt10_nonRec = o.fh2ptVsDistNN_pt10_nonRec;
1223 fQABckgHisto0RecCuts = o.fQABckgHisto0RecCuts;
1224 fQABckgHisto0Gen = o.fQABckgHisto0Gen;
1225 fQABckgHisto1RecCuts = o.fQABckgHisto1RecCuts;
1226 fQABckgHisto1Gen = o.fQABckgHisto1Gen;
1227 fQABckgHisto2RecCuts = o.fQABckgHisto2RecCuts;
1228 fQABckgHisto2Gen = o.fQABckgHisto2Gen;
1229 fQABckgHisto3RecCuts = o.fQABckgHisto3RecCuts;
1230 fQABckgHisto3Gen = o.fQABckgHisto3Gen;
1231 fQABckgHisto4RecCuts = o.fQABckgHisto4RecCuts;
1232 fQABckgHisto4Gen = o.fQABckgHisto4Gen;
1233 fFFBckgHisto0RecCuts = o.fFFBckgHisto0RecCuts;
1234 fFFBckgHisto0RecLeading = o.fFFBckgHisto0RecLeading;
1235 fFFBckgHisto0Gen = o.fFFBckgHisto0Gen;
1236 fFFBckgHisto0GenLeading = o.fFFBckgHisto0GenLeading;
1237 fFFBckgHisto1RecCuts = o.fFFBckgHisto1RecCuts;
1238 fFFBckgHisto1RecLeading = o.fFFBckgHisto1RecLeading;
1239 fFFBckgHisto1Gen = o.fFFBckgHisto1Gen;
1240 fFFBckgHisto1GenLeading = o.fFFBckgHisto1GenLeading;
1241 fFFBckgHisto2RecCuts = o.fFFBckgHisto2RecCuts;
1242 fFFBckgHisto2RecLeading = o.fFFBckgHisto2RecLeading;
1243 fFFBckgHisto2Gen = o.fFFBckgHisto2Gen;
1244 fFFBckgHisto2GenLeading = o.fFFBckgHisto2GenLeading;
1245 fFFBckgHisto3RecCuts = o.fFFBckgHisto3RecCuts;
1246 fFFBckgHisto3RecLeading = o.fFFBckgHisto3RecLeading;
1247 fFFBckgHisto3Gen = o.fFFBckgHisto3Gen;
1248 fFFBckgHisto3GenLeading = o.fFFBckgHisto3GenLeading;
1249 fFFBckgHisto4RecCuts = o.fFFBckgHisto4RecCuts;
1250 fFFBckgHisto4RecLeading = o.fFFBckgHisto4RecLeading;
1251 fFFBckgHisto4Gen = o.fFFBckgHisto4Gen;
1252 fFFBckgHisto4GenLeading = o.fFFBckgHisto4GenLeading;
1253 fIJBckgHisto0RecCuts = o.fIJBckgHisto0RecCuts;
1254 fIJBckgHisto0RecLeading = o.fIJBckgHisto0RecLeading;
1255 fIJBckgHisto0Gen = o.fIJBckgHisto0Gen;
1256 fIJBckgHisto0GenLeading = o.fIJBckgHisto0GenLeading;
1257 fIJBckgHisto1RecCuts = o.fIJBckgHisto1RecCuts;
1258 fIJBckgHisto1RecLeading = o.fIJBckgHisto1RecLeading;
1259 fIJBckgHisto1Gen = o.fIJBckgHisto1Gen;
1260 fIJBckgHisto1GenLeading = o.fIJBckgHisto1GenLeading;
1261 fIJBckgHisto2RecCuts = o.fIJBckgHisto2RecCuts;
1262 fIJBckgHisto2RecLeading = o.fIJBckgHisto2RecLeading;
1263 fIJBckgHisto2Gen = o.fIJBckgHisto2Gen;
1264 fIJBckgHisto2GenLeading = o.fIJBckgHisto2GenLeading;
1265 fIJBckgHisto3Gen = o.fIJBckgHisto3Gen;
1266 fIJBckgHisto3GenLeading = o.fIJBckgHisto3GenLeading;
1267 fIJBckgHisto4Gen = o.fIJBckgHisto4Gen;
1268 fIJBckgHisto4GenLeading = o.fIJBckgHisto4GenLeading;
1269 fRandom = o.fRandom;
1270 fBckgSubMethod = o.fBckgSubMethod;
1276 //___________________________________________________________________________
1277 AliAnalysisTaskFragmentationFunction::~AliAnalysisTaskFragmentationFunction()
1281 if(fTracksRec) delete fTracksRec;
1282 if(fTracksRecCuts) delete fTracksRecCuts;
1283 if(fTracksGen) delete fTracksGen;
1284 if(fTracksAODMCCharged) delete fTracksAODMCCharged;
1285 if(fTracksAODMCChargedSec) delete fTracksAODMCChargedSec;
1286 if(fTracksRecQualityCuts) delete fTracksRecQualityCuts;
1287 if(fJetsRec) delete fJetsRec;
1288 if(fJetsRecCuts) delete fJetsRecCuts;
1289 if(fJetsGen) delete fJetsGen;
1290 if(fJetsRecEff) delete fJetsRecEff;
1291 if(fJetsEmbedded) delete fJetsEmbedded;
1294 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
1295 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
1296 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
1298 if(fBckgJetsRec) delete fBckgJetsRec;
1299 if(fBckgJetsRecCuts) delete fBckgJetsRecCuts;
1300 if(fBckgJetsGen) delete fBckgJetsGen;
1302 if(fRandom) delete fRandom;
1305 //______________________________________________________________________________________________________
1306 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const char* name,
1307 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1308 Int_t nPt, Float_t ptMin, Float_t ptMax,
1309 Int_t nXi, Float_t xiMin, Float_t xiMax,
1310 Int_t nZ , Float_t zMin , Float_t zMax )
1312 ,fNBinsJetPt(nJetPt)
1313 ,fJetPtMin(jetPtMin)
1314 ,fJetPtMax(jetPtMax)
1330 // default constructor
1334 //___________________________________________________________________________
1335 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const AliFragFuncHistos& copy)
1337 ,fNBinsJetPt(copy.fNBinsJetPt)
1338 ,fJetPtMin(copy.fJetPtMin)
1339 ,fJetPtMax(copy.fJetPtMax)
1340 ,fNBinsPt(copy.fNBinsPt)
1341 ,fPtMin(copy.fPtMin)
1342 ,fPtMax(copy.fPtMax)
1343 ,fNBinsXi(copy.fNBinsXi)
1344 ,fXiMin(copy.fXiMin)
1345 ,fXiMax(copy.fXiMax)
1346 ,fNBinsZ(copy.fNBinsZ)
1349 ,fh2TrackPt(copy.fh2TrackPt)
1352 ,fh1JetPt(copy.fh1JetPt)
1353 ,fNameFF(copy.fNameFF)
1358 //_______________________________________________________________________________________________________________________________________________________________
1359 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& o)
1364 TObject::operator=(o);
1365 fNBinsJetPt = o.fNBinsJetPt;
1366 fJetPtMin = o.fJetPtMin;
1367 fJetPtMax = o.fJetPtMax;
1368 fNBinsPt = o.fNBinsPt;
1371 fNBinsXi = o.fNBinsXi;
1374 fNBinsZ = o.fNBinsZ;
1377 fh2TrackPt = o.fh2TrackPt;
1380 fh1JetPt = o.fh1JetPt;
1381 fNameFF = o.fNameFF;
1387 //_________________________________________________________
1388 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::~AliFragFuncHistos()
1392 if(fh1JetPt) delete fh1JetPt;
1393 if(fh2TrackPt) delete fh2TrackPt;
1394 if(fh2Xi) delete fh2Xi;
1395 if(fh2Z) delete fh2Z;
1398 //_________________________________________________________________
1399 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::DefineHistos()
1403 fh1JetPt = new TH1F(Form("fh1FFJetPt%s", fNameFF.Data()),"",fNBinsJetPt,fJetPtMin,fJetPtMax);
1404 fh2TrackPt = new TH2F(Form("fh2FFTrackPt%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsPt, fPtMin, fPtMax);
1405 fh2Xi = new TH2F(Form("fh2FFXi%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsXi, fXiMin, fXiMax);
1406 fh2Z = new TH2F(Form("fh2FFZ%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, fZMin, fZMax);
1408 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
1409 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPt,"jet p_{T} [GeV/c]","p_{T} [GeV/c]","entries");
1410 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi,"jet p_{T} [GeV/c]","#xi", "entries");
1411 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z,"jet p_{T} [GeV/c]","z","entries");
1414 //_______________________________________________________________________________________________________________
1415 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::FillFF(Float_t trackPt, Float_t jetPt, Bool_t incrementJetPt, Float_t norm)
1419 if(incrementJetPt && norm) fh1JetPt->Fill(jetPt,1/norm);
1420 else if(incrementJetPt) fh1JetPt->Fill(jetPt);
1422 // Added for proper normalization of FF background estimation
1423 // when zero track are found in the background region
1424 if((int)trackPt==-1) return;
1426 if(norm)fh2TrackPt->Fill(jetPt,trackPt,1/norm);
1427 else fh2TrackPt->Fill(jetPt,trackPt);
1430 if(jetPt>0) z = trackPt / jetPt;
1432 if(z>0) xi = TMath::Log(1/z);
1435 fh2Xi->Fill(jetPt,xi,1/norm);
1436 fh2Z->Fill(jetPt,z,1/norm);
1439 fh2Xi->Fill(jetPt,xi);
1440 fh2Z->Fill(jetPt,z);
1444 //_________________________________________________________________________________
1445 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AddToOutput(TList* list) const
1447 // add histos to list
1449 list->Add(fh1JetPt);
1451 list->Add(fh2TrackPt);
1456 //_________________________________________________________________________________________________________
1457 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const char* name,
1458 Int_t nPt, Float_t ptMin, Float_t ptMax,
1459 Int_t nEta, Float_t etaMin, Float_t etaMax,
1460 Int_t nPhi, Float_t phiMin, Float_t phiMax)
1475 // default constructor
1478 //____________________________________________________________________________________
1479 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const AliFragFuncQAJetHistos& copy)
1481 ,fNBinsPt(copy.fNBinsPt)
1482 ,fPtMin(copy.fPtMin)
1483 ,fPtMax(copy.fPtMax)
1484 ,fNBinsEta(copy.fNBinsEta)
1485 ,fEtaMin(copy.fEtaMin)
1486 ,fEtaMax(copy.fEtaMax)
1487 ,fNBinsPhi(copy.fNBinsPhi)
1488 ,fPhiMin(copy.fPhiMin)
1489 ,fPhiMax(copy.fPhiMax)
1490 ,fh2EtaPhi(copy.fh2EtaPhi)
1492 ,fNameQAJ(copy.fNameQAJ)
1497 //________________________________________________________________________________________________________________________________________________________________________
1498 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& o)
1503 TObject::operator=(o);
1504 fNBinsPt = o.fNBinsPt;
1507 fNBinsEta = o.fNBinsEta;
1508 fEtaMin = o.fEtaMin;
1509 fEtaMax = o.fEtaMax;
1510 fNBinsPhi = o.fNBinsPhi;
1511 fPhiMin = o.fPhiMin;
1512 fPhiMax = o.fPhiMax;
1513 fh2EtaPhi = o.fh2EtaPhi;
1515 fNameQAJ = o.fNameQAJ;
1521 //______________________________________________________________
1522 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::~AliFragFuncQAJetHistos()
1526 if(fh2EtaPhi) delete fh2EtaPhi;
1527 if(fh1Pt) delete fh1Pt;
1530 //____________________________________________________________________
1531 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::DefineHistos()
1533 // book jet QA histos
1535 fh2EtaPhi = new TH2F(Form("fh2JetQAEtaPhi%s", fNameQAJ.Data()), Form("%s: #eta - #phi distribution", fNameQAJ.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1536 fh1Pt = new TH1F(Form("fh1JetQAPt%s", fNameQAJ.Data()), Form("%s: p_{T} distribution", fNameQAJ.Data()), fNBinsPt, fPtMin, fPtMax);
1538 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
1539 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
1542 //____________________________________________________________________________________________________
1543 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::FillJetQA(Float_t eta, Float_t phi, Float_t pt)
1545 // fill jet QA histos
1547 fh2EtaPhi->Fill( eta, phi);
1551 //____________________________________________________________________________________
1552 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AddToOutput(TList* list) const
1554 // add histos to list
1556 list->Add(fh2EtaPhi);
1560 //___________________________________________________________________________________________________________
1561 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const char* name,
1562 Int_t nPt, Float_t ptMin, Float_t ptMax,
1563 Int_t nEta, Float_t etaMin, Float_t etaMax,
1564 Int_t nPhi, Float_t phiMin, Float_t phiMax,
1576 ,fHighPtThreshold(ptThresh)
1583 // default constructor
1586 //__________________________________________________________________________________________
1587 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const AliFragFuncQATrackHistos& copy)
1589 ,fNBinsPt(copy.fNBinsPt)
1590 ,fPtMin(copy.fPtMin)
1591 ,fPtMax(copy.fPtMax)
1592 ,fNBinsEta(copy.fNBinsEta)
1593 ,fEtaMin(copy.fEtaMin)
1594 ,fEtaMax(copy.fEtaMax)
1595 ,fNBinsPhi(copy.fNBinsPhi)
1596 ,fPhiMin(copy.fPhiMin)
1597 ,fPhiMax(copy.fPhiMax)
1598 ,fHighPtThreshold(copy.fHighPtThreshold)
1599 ,fh2EtaPhi(copy.fh2EtaPhi)
1601 ,fh2HighPtEtaPhi(copy.fh2HighPtEtaPhi)
1602 ,fh2PhiPt(copy.fh2PhiPt)
1603 ,fNameQAT(copy.fNameQAT)
1608 // _____________________________________________________________________________________________________________________________________________________________________________
1609 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& o)
1614 TObject::operator=(o);
1615 fNBinsPt = o.fNBinsPt;
1618 fNBinsEta = o.fNBinsEta;
1619 fEtaMin = o.fEtaMin;
1620 fEtaMax = o.fEtaMax;
1621 fNBinsPhi = o.fNBinsPhi;
1622 fPhiMin = o.fPhiMin;
1623 fPhiMax = o.fPhiMax;
1624 fHighPtThreshold = o.fHighPtThreshold;
1625 fh2EtaPhi = o.fh2EtaPhi;
1627 fh2HighPtEtaPhi = o.fh2HighPtEtaPhi;
1628 fh2PhiPt = o.fh2PhiPt;
1629 fNameQAT = o.fNameQAT;
1635 //___________________________________________________________________
1636 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::~AliFragFuncQATrackHistos()
1640 if(fh2EtaPhi) delete fh2EtaPhi;
1641 if(fh2HighPtEtaPhi) delete fh2HighPtEtaPhi;
1642 if(fh1Pt) delete fh1Pt;
1643 if(fh2PhiPt) delete fh2PhiPt;
1646 //______________________________________________________________________
1647 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::DefineHistos()
1649 // book track QA histos
1651 fh2EtaPhi = new TH2F(Form("fh2TrackQAEtaPhi%s", fNameQAT.Data()), Form("%s: #eta - #phi distribution", fNameQAT.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1652 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);
1653 fh1Pt = new TH1F(Form("fh1TrackQAPt%s", fNameQAT.Data()), Form("%s: p_{T} distribution", fNameQAT.Data()), fNBinsPt, fPtMin, fPtMax);
1654 fh2PhiPt = new TH2F(Form("fh2TrackQAPhiPt%s", fNameQAT.Data()), Form("%s: #phi - p_{T} distribution", fNameQAT.Data()), fNBinsPhi, fPhiMin, fPhiMax, fNBinsPt, fPtMin, fPtMax);
1656 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
1657 AliAnalysisTaskFragmentationFunction::SetProperties(fh2HighPtEtaPhi, "#eta", "#phi");
1658 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
1659 AliAnalysisTaskFragmentationFunction::SetProperties(fh2PhiPt, "#phi", "p_{T} [GeV/c]");
1662 //________________________________________________________________________________________________________
1663 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::FillTrackQA(Float_t eta, Float_t phi, Float_t pt, Bool_t weightPt, Float_t norm)
1665 // fill track QA histos
1666 Float_t weight = 1.;
1667 if(weightPt) weight = pt;
1668 fh2EtaPhi->Fill( eta, phi, weight);
1669 if(pt > fHighPtThreshold) fh2HighPtEtaPhi->Fill( eta, phi, weight);
1670 if(norm) fh1Pt->Fill( pt, 1/norm );
1671 else fh1Pt->Fill( pt );
1672 fh2PhiPt->Fill(phi, pt);
1675 //______________________________________________________________________________________
1676 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AddToOutput(TList* list) const
1678 // add histos to list
1680 list->Add(fh2EtaPhi);
1681 list->Add(fh2HighPtEtaPhi);
1683 list->Add(fh2PhiPt);
1686 //______________________________________________________________________________________________________
1687 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const char* name,
1688 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1689 Int_t nPt, Float_t ptMin, Float_t ptMax,
1690 Int_t nZ , Float_t zMin , Float_t zMax,
1691 Int_t nCosTheta , Float_t costhetaMin , Float_t costhetaMax,
1692 Int_t nTheta , Float_t thetaMin , Float_t thetaMax,
1693 Int_t nJt , Float_t jtMin , Float_t jtMax)
1695 ,fNBinsJetPt(nJetPt)
1696 ,fJetPtMin(jetPtMin)
1697 ,fJetPtMax(jetPtMax)
1707 ,fNBinsTheta(nTheta)
1708 ,fThetaMin(thetaMin)
1709 ,fThetaMax(thetaMax)
1710 ,fNBinsCosTheta(nCosTheta)
1711 ,fCosThetaMin(costhetaMin)
1712 ,fCosThetaMax(costhetaMax)
1720 // default constructor
1724 //___________________________________________________________________________
1725 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const AliFragFuncIntraJetHistos& copy)
1727 ,fNBinsJetPt(copy.fNBinsJetPt)
1728 ,fJetPtMin(copy.fJetPtMin)
1729 ,fJetPtMax(copy.fJetPtMax)
1730 ,fNBinsPt(copy.fNBinsPt)
1731 ,fPtMin(copy.fPtMin)
1732 ,fPtMax(copy.fPtMax)
1733 ,fNBinsZ(copy.fNBinsZ)
1736 ,fNBinsJt(copy.fNBinsJt)
1737 ,fJtMin(copy.fJtMin)
1738 ,fJtMax(copy.fJtMax)
1739 ,fNBinsTheta(copy.fNBinsTheta)
1740 ,fThetaMin(copy.fThetaMin)
1741 ,fThetaMax(copy.fThetaMax)
1742 ,fNBinsCosTheta(copy.fNBinsCosTheta)
1743 ,fCosThetaMin(copy.fCosThetaMin)
1744 ,fCosThetaMax(copy.fCosThetaMax)
1745 ,fh2CosTheta(copy.fh2CosTheta)
1746 ,fh2PtZ(copy.fh2PtZ)
1747 ,fh3ThetaZ(copy.fh3ThetaZ)
1748 ,fh3JtTheta(copy.fh3JtTheta)
1749 ,fh3JtZ(copy.fh3JtZ)
1750 ,fNameIJ(copy.fNameIJ)
1755 //_______________________________________________________________________________________________________________________________________________________________
1756 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& o)
1761 TObject::operator=(o);
1762 fNBinsJetPt = o.fNBinsJetPt;
1763 fJetPtMin = o.fJetPtMin;
1764 fJetPtMax = o.fJetPtMax;
1765 fNBinsPt = o.fNBinsPt;
1768 fNBinsZ = o.fNBinsZ;
1771 fNBinsJt = o.fNBinsJt;
1774 fNBinsTheta = o.fNBinsTheta;
1775 fThetaMin = o.fThetaMin;
1776 fThetaMax = o.fThetaMax;
1777 fNBinsCosTheta = o.fNBinsCosTheta;
1778 fCosThetaMin = o.fCosThetaMin;
1779 fCosThetaMax = o.fCosThetaMax;
1780 fh2CosTheta = o.fh2CosTheta;
1782 fh3ThetaZ = o.fh3ThetaZ;
1783 fh3JtTheta = o.fh3JtTheta;
1785 fNameIJ = o.fNameIJ;
1791 //_________________________________________________________
1792 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::~AliFragFuncIntraJetHistos()
1797 if(fh2CosTheta) delete fh2CosTheta;
1798 if(fh2PtZ) delete fh2PtZ;
1799 if(fh3ThetaZ) delete fh3ThetaZ;
1800 if(fh3JtTheta) delete fh3JtTheta;
1801 if(fh3JtZ) delete fh3JtZ;
1805 //_________________________________________________________________
1806 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::DefineHistos()
1810 fh2CosTheta = new TH2F(Form("fh2IJcosTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsCosTheta, fCosThetaMin, fCosThetaMax);
1811 fh2PtZ = new TH2F(Form("fh2IJPtZ%s",fNameIJ.Data()),"",fNBinsPt, fPtMin, fPtMax, fNBinsZ, fZMin, fZMax);
1812 fh3ThetaZ = new TH3F(Form("fh3IJThetaZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsTheta, fThetaMin, fThetaMax, fNBinsZ, fZMin, fZMax);
1813 fh3JtTheta = new TH3F(Form("fh3IJJtTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsTheta, fThetaMin, fThetaMax);
1814 fh3JtZ = new TH3F(Form("fh3IJJtZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsZ, fZMin, fZMax);
1816 AliAnalysisTaskFragmentationFunction::SetProperties(fh2CosTheta,"jet p_{T} [GeV/c]","cos(#Theta)", "entries");
1817 AliAnalysisTaskFragmentationFunction::SetProperties(fh2PtZ,"had p_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}","entries");
1818 AliAnalysisTaskFragmentationFunction::SetProperties(fh3ThetaZ,"jet p_{T} [GeV/c]","#Theta [rad]","z=p_{T}^{had}/p_{T}^{jet}");
1819 AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtTheta,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","#Theta [rad]");
1820 AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtZ,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}");
1824 //_______________________________________________________________________________________________________________
1825 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::FillIntraJet(const TLorentzVector* trackV, const TLorentzVector* jetV, Float_t norm)
1827 // fill IntraJet histos
1829 Float_t cosTheta = 0.; Float_t theta = 0.;
1830 Float_t jt = 0.; Float_t z = 0.;
1831 // For Theta distribution
1832 Float_t pxT = trackV->Px();
1833 Float_t pyT = trackV->Py();
1834 Float_t pzT = trackV->Pz();
1835 Float_t ptT = trackV->Pt();
1836 Float_t pT = trackV->P();
1837 Float_t etaT = trackV->Eta();
1838 Float_t phiT = trackV->Phi(); // Check the value returned
1839 Float_t pxJ = jetV->Px();
1840 Float_t pyJ = jetV->Py();
1841 Float_t pzJ = jetV->Pz();
1842 Float_t ptJ = jetV->Pt();
1843 Float_t pJ = jetV->P();
1846 if(ptJ>0) z = (Float_t)(ptT/ptJ);
1849 cosTheta = (pxT*pxJ+pyT*pyJ+pzT*pzJ)/(pT*pJ);
1850 theta = TMath::ACos(cosTheta);
1853 TVector3 trackP; TVector3 jetP;
1857 trackP.SetPtEtaPhi(ptT,etaT,phiT);
1858 jt = TMath::Sin(trackP.Angle(jetP))*trackP.Mag();
1862 fh2CosTheta->Fill(ptJ,cosTheta,1/norm);
1863 fh2PtZ->Fill(ptT,z,1/norm);
1864 fh3ThetaZ->Fill(ptJ,theta,z,1/norm);
1865 fh3JtTheta->Fill(ptJ,jt,theta,1/norm);
1866 fh3JtZ->Fill(ptJ,jt,z,1/norm);
1869 fh2CosTheta->Fill(ptJ,cosTheta);
1870 fh2PtZ->Fill(ptT,z);
1871 fh3ThetaZ->Fill(ptJ,theta,z);
1872 fh3JtTheta->Fill(ptJ,jt,theta);
1873 fh3JtZ->Fill(ptJ,jt,z);
1878 //______________________________________________________________________________________________________
1879 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const char* name, Int_t kindSlices,
1880 Int_t nJetInvMass, Float_t jetInvMassMin, Float_t jetInvMassMax,
1881 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1882 Int_t nPt, Float_t ptMin, Float_t ptMax,
1883 Int_t nXi, Float_t xiMin, Float_t xiMax,
1884 Int_t nZ , Float_t zMin , Float_t zMax)
1886 ,fKindSlices(kindSlices)
1887 ,fNBinsJetInvMass(nJetInvMass)
1888 ,fJetInvMassMin(jetInvMassMin)
1889 ,fJetInvMassMax(jetInvMassMax)
1890 ,fNBinsJetPt(nJetPt)
1891 ,fJetPtMin(jetPtMin)
1892 ,fJetPtMax(jetPtMax)
1919 // default constructor
1923 //______________________________________________________________________________________________________
1924 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const AliFragFuncDiJetHistos& copy)
1926 ,fKindSlices(copy.fKindSlices)
1927 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
1928 ,fJetInvMassMin(copy.fJetInvMassMin)
1929 ,fJetInvMassMax(copy.fJetInvMassMax)
1930 ,fNBinsJetPt(copy.fNBinsJetPt)
1931 ,fJetPtMin(copy.fJetPtMin)
1932 ,fJetPtMax(copy.fJetPtMax)
1933 ,fNBinsPt(copy.fNBinsPt)
1934 ,fPtMin(copy.fPtMin)
1935 ,fPtMax(copy.fPtMax)
1936 ,fNBinsXi(copy.fNBinsXi)
1937 ,fXiMin(copy.fXiMin)
1938 ,fXiMax(copy.fXiMax)
1939 ,fNBinsZ(copy.fNBinsZ)
1942 ,fh2TrackPtJet1(copy.fh2TrackPtJet1)
1943 ,fh2TrackPtJet2(copy.fh2TrackPtJet2)
1944 ,fh2TrackPtJet(copy.fh2TrackPtJet)
1945 ,fh1Jet1Pt(copy.fh1Jet1Pt)
1946 ,fh1Jet2Pt(copy.fh1Jet2Pt)
1947 ,fh1JetPt(copy.fh1JetPt)
1948 ,fh2Xi1(copy.fh2Xi1)
1949 ,fh2Xi2(copy.fh2Xi2)
1954 ,fh2Pt1(copy.fh2Pt1)
1955 ,fh2Pt2(copy.fh2Pt2)
1957 ,fNameDJ(copy.fNameDJ)
1959 // default constructor
1963 //_______________________________________________________________________________________________________________________________________________________________
1964 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& o)
1969 TObject::operator=(o);
1970 fKindSlices = o.fKindSlices;
1971 fNBinsJetInvMass = o.fNBinsJetInvMass;
1972 fJetInvMassMin = o.fJetInvMassMin;
1973 fJetInvMassMax = o.fJetInvMassMax;
1974 fNBinsJetPt = o.fNBinsJetPt;
1975 fJetPtMin = o.fJetPtMin;
1976 fJetPtMax = o.fJetPtMax;
1977 fNBinsPt = o.fNBinsPt;
1980 fNBinsXi = o.fNBinsXi;
1983 fNBinsZ = o.fNBinsZ;
1986 fh2TrackPtJet1 = o.fh2TrackPtJet1;
1987 fh2TrackPtJet2 = o.fh2TrackPtJet2;
1988 fh2TrackPtJet = o.fh2TrackPtJet;
1989 fh1Jet1Pt = o.fh1Jet1Pt;
1990 fh1Jet2Pt = o.fh1Jet2Pt;
1991 fh1JetPt = o.fh1JetPt;
2001 fNameDJ = o.fNameDJ;
2007 //_________________________________________________________
2008 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::~AliFragFuncDiJetHistos()
2012 if(fh2TrackPtJet1) delete fh2TrackPtJet1;
2013 if(fh2TrackPtJet2) delete fh2TrackPtJet2;
2014 if(fh2TrackPtJet ) delete fh2TrackPtJet;
2015 if(fh1Jet1Pt) delete fh1Jet1Pt;
2016 if(fh1Jet2Pt) delete fh1Jet2Pt;
2017 if(fh1JetPt) delete fh1JetPt;
2018 if(fh2Xi1) delete fh2Xi1;
2019 if(fh2Xi2) delete fh2Xi2;
2020 if(fh2Xi) delete fh2Xi;
2021 if(fh2Z1) delete fh2Z1;
2022 if(fh2Z2) delete fh2Z2;
2023 if(fh2Z) delete fh2Z;
2024 if(fh2Pt1) delete fh2Pt1;
2025 if(fh2Pt2) delete fh2Pt2;
2026 if(fh2Pt) delete fh2Pt;
2029 //________________________________________________________________________
2030 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::DefineDiJetHistos()
2032 // book DiJet histos
2037 const char *xaxis = "";
2038 if(fKindSlices == 1)
2040 nBins = fNBinsJetInvMass;
2041 min = fJetInvMassMin;
2042 max = fJetInvMassMax;
2043 xaxis = "M_{JJ} [GeV]";
2045 if(fKindSlices == 2 || fKindSlices == 3)
2047 nBins = fNBinsJetPt;
2050 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
2051 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
2054 fh1Jet1Pt = new TH1F(Form("fh1DJJet1Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
2055 fh1Jet2Pt = new TH1F(Form("fh1DJJet2Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
2056 fh1JetPt = new TH1F(Form("fh1DJJetPt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
2058 fh2TrackPtJet1 = new TH2F(Form("fh2DJTrackPtJet1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2059 fh2TrackPtJet2 = new TH2F(Form("fh2DJTrackPtJet2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2060 fh2TrackPtJet = new TH2F(Form("fh2DJTrackPtJet%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2062 fh2Xi1 = new TH2F(Form("fh2DJXi1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
2063 fh2Xi2 = new TH2F(Form("fh2DJXi2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
2064 fh2Xi = new TH2F(Form("fh2DJXi%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
2066 fh2Z1 = new TH2F(Form("fh2DJZ1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
2067 fh2Z2 = new TH2F(Form("fh2DJZ2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
2068 fh2Z = new TH2F(Form("fh2DJZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
2070 fh2Pt1 = new TH2F(Form("fh2DJPt1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2071 fh2Pt2 = new TH2F(Form("fh2DJPt2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2072 fh2Pt = new TH2F(Form("fh2DJPtZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2074 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet1Pt, "p_{T} [GeV/c]", "entries");
2075 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet2Pt, "p_{T} [GeV/c]", "entries");
2076 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
2078 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet1, xaxis, "p_{T} [GeV/c]", "Entries");
2079 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet2, xaxis, "p_{T} [GeV/c]", "Entries");
2080 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet, xaxis, "p_{T} [GeV/c]", "Entries");
2081 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi1, xaxis, "#xi", "Entries");
2082 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi2, xaxis, "#xi", "Entries");
2083 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi, xaxis, "#xi", "Entries");
2084 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z1, xaxis, "z", "Entries");
2085 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z2, xaxis, "z", "Entries");
2086 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z, xaxis, "z", "Entries");
2087 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt1, xaxis, "p_{T} [GeV/c]", "Entries");
2088 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt2, xaxis, "p_{T} [GeV/c]", "Entries");
2089 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt, xaxis, "p_{T} [GeV/c]", "Entries");
2092 //________________________________________________________________________
2093 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::FillDiJetFF(Int_t jetType, Float_t trackPt, Float_t jetPt, Double_t jetBin, Bool_t incrementJetPt)
2099 if(incrementJetPt) fh1JetPt->Fill(jetPt);
2101 fh2TrackPtJet->Fill(jetBin, trackPt);
2103 Double_t z = trackPt / jetPt;
2105 if(z>0) xi = TMath::Log(1/z);
2107 fh2Xi->Fill(jetBin, xi);
2108 fh2Z->Fill(jetBin, z);
2112 if(incrementJetPt) fh1Jet1Pt->Fill(jetPt);
2114 fh2TrackPtJet1->Fill(jetBin, trackPt);
2116 Double_t z = trackPt / jetPt;
2118 if(z>0) xi = TMath::Log(1/z);
2120 fh2Xi1->Fill(jetBin, xi);
2121 fh2Z1->Fill(jetBin, z);
2125 if(incrementJetPt) fh1Jet2Pt->Fill(jetPt);
2127 fh2TrackPtJet2->Fill(jetBin, trackPt);
2129 Double_t z = trackPt / jetPt;
2131 if(z>0) xi = TMath::Log(1/z);
2133 fh2Xi2->Fill(jetBin, xi);
2134 fh2Z2->Fill(jetBin, z);
2140 //________________________________________________________________________
2141 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AddToOutput(TList* list)const
2143 // add histos to list
2145 list->Add(fh1Jet1Pt);
2146 list->Add(fh1Jet2Pt);
2147 list->Add(fh1JetPt);
2148 list->Add(fh2TrackPtJet1);
2149 list->Add(fh2TrackPtJet2);
2150 list->Add(fh2TrackPtJet);
2159 //______________________________________________________________________________________________________
2160 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const char* name, Int_t kindSlices,
2161 Int_t nInvMass, Float_t invMassMin, Float_t invMassMax,
2162 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
2163 Int_t nDeltaPhi, Float_t deltaPhiMin, Float_t deltaPhiMax,
2164 Int_t nDeltaEta, Float_t deltaEtaMin, Float_t deltaEtaMax,
2165 Int_t nDeltaPt, Float_t deltaPtMin, Float_t deltaPtMax,
2166 Int_t nInBal, Float_t inBalMin, Float_t inBalMax)
2168 ,fKindSlices(kindSlices)
2169 ,fNBinsJetInvMass(nInvMass)
2170 ,fJetInvMassMin(invMassMin)
2171 ,fJetInvMassMax(invMassMax)
2172 ,fNBinsJetPt(nJetPt)
2173 ,fJetPtMin(jetPtMin)
2174 ,fJetPtMax(jetPtMax)
2175 ,fNBinsDeltaPhi(nDeltaPhi)
2176 ,fDeltaPhiMin(deltaPhiMin)
2177 ,fDeltaPhiMax(deltaPhiMax)
2178 ,fNBinsDeltaEta(nDeltaEta)
2179 ,fDeltaEtaMin(deltaEtaMin)
2180 ,fDeltaEtaMax(deltaEtaMax)
2181 ,fNBinsDeltaPt(nDeltaPt)
2182 ,fDeltaPtMin(deltaPtMin)
2183 ,fDeltaPtMax(deltaPtMax)
2184 ,fNBinsInBal(nInBal)
2185 ,fInBalMin(inBalMin)
2186 ,fInBalMax(inBalMax)
2194 // default constructor
2198 //______________________________________________________________________________________________________
2199 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const AliFragFuncQADiJetHistos& copy)
2201 ,fKindSlices(copy.fKindSlices)
2202 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
2203 ,fJetInvMassMin(copy.fJetInvMassMin)
2204 ,fJetInvMassMax(copy.fJetInvMassMax)
2205 ,fNBinsJetPt(copy.fNBinsJetPt)
2206 ,fJetPtMin(copy.fJetPtMin)
2207 ,fJetPtMax(copy.fJetPtMax)
2208 ,fNBinsDeltaPhi(copy.fNBinsDeltaPhi)
2209 ,fDeltaPhiMin(copy.fDeltaPhiMin)
2210 ,fDeltaPhiMax(copy.fDeltaPhiMax)
2211 ,fNBinsDeltaEta(copy.fNBinsDeltaEta)
2212 ,fDeltaEtaMin(copy.fDeltaEtaMin)
2213 ,fDeltaEtaMax(copy.fDeltaEtaMax)
2214 ,fNBinsDeltaPt(copy.fNBinsDeltaPt)
2215 ,fDeltaPtMin(copy.fDeltaPtMin)
2216 ,fDeltaPtMax(copy.fDeltaPtMax)
2217 ,fNBinsInBal(copy.fNBinsInBal)
2218 ,fInBalMin(copy.fInBalMin)
2219 ,fInBalMax(copy.fInBalMax)
2220 ,fh2InvMass(copy.fh2InvMass)
2221 ,fh2DeltaPhi(copy.fh2DeltaPhi)
2222 ,fh2DeltaEta(copy.fh2DeltaEta)
2223 ,fh2DeltaPt(copy.fh2DeltaPt)
2224 ,fh2InBal(copy.fh2InBal)
2225 ,fNameQADJ(copy.fNameQADJ)
2227 // default constructor
2231 //_______________________________________________________________________________________________________________________________________________________________
2232 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& o)
2237 TObject::operator=(o);
2238 fKindSlices = o.fKindSlices;
2239 fNBinsJetInvMass = o.fNBinsJetInvMass;
2240 fJetInvMassMin = o.fJetInvMassMin;
2241 fJetInvMassMax = o.fJetInvMassMax;
2242 fNBinsJetPt = o.fNBinsJetPt;
2243 fJetPtMin = o.fJetPtMin;
2244 fJetPtMax = o.fJetPtMax;
2245 fNBinsDeltaPhi = o.fNBinsDeltaPhi;
2246 fDeltaPhiMin = o.fDeltaPhiMin;
2247 fDeltaPhiMax = o.fDeltaPhiMax;
2248 fNBinsDeltaEta = o.fNBinsDeltaEta;
2249 fDeltaEtaMin = o.fDeltaEtaMin;
2250 fDeltaEtaMax = o.fDeltaEtaMax;
2251 fNBinsDeltaPt = o.fNBinsDeltaPt;
2252 fDeltaPtMin = o.fDeltaPtMin;
2253 fDeltaPtMax = o.fDeltaPtMax;
2254 fNBinsInBal = o.fNBinsInBal;
2255 fInBalMin = o.fInBalMin;
2256 fInBalMax = o.fInBalMax;
2257 fh2InvMass = o.fh2InvMass;
2258 fh2DeltaPhi = o.fh2DeltaPhi;
2259 fh2DeltaEta = o.fh2DeltaEta;
2260 fh2DeltaPt = o.fh2DeltaPt;
2261 fh2InBal = o.fh2InBal;
2262 fNameQADJ = o.fNameQADJ;
2268 //_________________________________________________________
2269 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::~AliFragFuncQADiJetHistos()
2273 if(fh2InvMass) delete fh2InvMass;
2274 if(fh2DeltaPhi) delete fh2DeltaPhi;
2275 if(fh2DeltaEta) delete fh2DeltaEta;
2276 if(fh2DeltaPt) delete fh2DeltaPt;
2277 if(fh2InBal) delete fh2InBal;
2280 //________________________________________________________________________
2281 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::DefineQADiJetHistos()
2288 const char *xaxis = "";
2289 if(fKindSlices == 1)
2291 nBins = fNBinsJetInvMass;
2292 min = fJetInvMassMin;
2293 max = fJetInvMassMax;
2294 xaxis = "M_{JJ} [GeV]";
2296 if(fKindSlices == 2 || fKindSlices == 3)
2298 nBins = fNBinsJetPt;
2301 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
2302 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
2306 fh2InvMass = new TH2F(Form("fh2DJInvMassPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsJetInvMass, fJetInvMassMin, fJetInvMassMax);
2307 fh2DeltaPhi = new TH2F(Form("fh2DJDeltaPhiPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPhi, fDeltaPhiMin, fDeltaPhiMax);
2308 fh2DeltaEta = new TH2F(Form("fh2DJDeltaEtaPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaEta, fDeltaEtaMin, fDeltaEtaMax);
2309 fh2DeltaPt = new TH2F(Form("fh2DJDeltaPtPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPt, fDeltaPtMin, fDeltaPtMax);
2310 fh2InBal = new TH2F(Form("fh2DJInBalPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsInBal, fInBalMin, fInBalMax);
2312 AliAnalysisTaskFragmentationFunction::SetProperties(fh2InvMass, xaxis, "Invariant Mass", "Entries");
2313 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPhi, xaxis, "#Delta #phi", "Entries");
2314 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaEta, xaxis, "#Delta #eta", "Entries");
2315 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPt, xaxis, "#Delta p_{T}", "Entries");
2316 AliAnalysisTaskFragmentationFunction::SetProperties(fh2InBal, xaxis, "(p_{T}^{1}-p_{T}^{2})/(p_{T}^{1}+p_{T}^{2})", "Entries");
2320 //________________________________________________________________________
2321 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::FillDiJetQA(Double_t invMass, Double_t deltaPhi, Double_t deltaEta,Double_t deltaPt, Double_t inbal, Double_t jetBin)
2325 fh2InvMass->Fill(jetBin, invMass);
2326 fh2DeltaPhi->Fill(jetBin, deltaPhi);
2327 fh2DeltaEta->Fill(jetBin, deltaEta);
2328 fh2DeltaPt->Fill(jetBin, deltaPt);
2329 fh2InBal->Fill(jetBin, inbal);
2332 //________________________________________________________________________
2333 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AddToOutput(TList* list)const
2335 // add histos to list
2337 list->Add(fh2InvMass);
2338 list->Add(fh2DeltaPhi);
2339 list->Add(fh2DeltaEta);
2340 list->Add(fh2DeltaPt);
2341 list->Add(fh2InBal);
2344 //_________________________________________________________________________________
2345 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AddToOutput(TList* list) const
2347 // add histos to list
2349 list->Add(fh2CosTheta);
2351 list->Add(fh3ThetaZ);
2352 list->Add(fh3JtTheta);
2357 //_________________________________________________________________________________
2358 Bool_t AliAnalysisTaskFragmentationFunction::Notify()
2361 // Implemented Notify() to read the cross sections
2362 // and number of trials from pyxsec.root
2363 // (taken from AliAnalysisTaskJetSpectrum2)
2365 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
2366 Float_t xsection = 0;
2367 Float_t ftrials = 1;
2371 TFile *curfile = tree->GetCurrentFile();
2373 Error("Notify","No current file");
2376 if(!fh1Xsec||!fh1Trials){
2377 Printf("%s%d No Histogram fh1Xsec",(char*)__FILE__,__LINE__);
2380 AliAnalysisHelperJetTasks::PythiaInfoFromFile(curfile->GetName(),xsection,ftrials);
2381 fh1Xsec->Fill("<#sigma>",xsection);
2382 // construct a poor man average trials
2383 Float_t nEntries = (Float_t)tree->GetTree()->GetEntries();
2384 if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries;
2387 // Set seed for backg study
2388 fRandom = new TRandom3();
2389 fRandom->SetSeed(0);
2396 //__________________________________________________________________
2397 void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()
2399 // create output objects
2401 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()");
2403 // create list of tracks and jets
2405 fTracksRec = new TList();
2406 fTracksRec->SetOwner(kFALSE);
2408 fTracksRecCuts = new TList();
2409 fTracksRecCuts->SetOwner(kFALSE);
2411 fTracksGen = new TList();
2412 fTracksGen->SetOwner(kFALSE);
2414 fTracksAODMCCharged = new TList();
2415 fTracksAODMCCharged->SetOwner(kFALSE);
2417 fTracksAODMCChargedSec = new TList();
2418 fTracksAODMCChargedSec->SetOwner(kFALSE);
2420 fTracksRecQualityCuts = new TList();
2421 fTracksRecQualityCuts->SetOwner(kFALSE);
2423 fJetsRec = new TList();
2424 fJetsRec->SetOwner(kFALSE);
2425 if(fBranchRecJets.Contains("KT") && fBckgSubMethod) fJetsRec->SetOwner(kTRUE);
2427 fJetsRecCuts = new TList();
2428 fJetsRecCuts->SetOwner(kFALSE);
2429 if(fBranchRecJets.Contains("KT") && fBckgSubMethod) fJetsRecCuts->SetOwner(kTRUE);
2431 fJetsGen = new TList();
2432 fJetsGen->SetOwner(kFALSE);
2434 fJetsRecEff = new TList();
2435 fJetsRecEff->SetOwner(kFALSE);
2437 fJetsEmbedded = new TList();
2438 fJetsEmbedded->SetOwner(kFALSE);
2440 // fJetsKine = new TList();
2441 // fJetsKine->SetOwner(kTRUE); // delete AOD jets using mom from Kine Tree via TList::Clear()
2444 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
2445 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
2446 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
2448 fBckgJetsRec = new TList();
2449 fBckgJetsRec->SetOwner(kFALSE);
2451 fBckgJetsRecCuts = new TList();
2452 fBckgJetsRecCuts->SetOwner(kFALSE);
2454 fBckgJetsGen = new TList();
2455 fBckgJetsGen->SetOwner(kFALSE);
2459 // Create histograms / output container
2463 fCommonHistList = new TList();
2465 Bool_t oldStatus = TH1::AddDirectoryStatus();
2466 TH1::AddDirectory(kFALSE);
2470 fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 6, -0.5, 5.5);
2471 fh1EvtSelection->GetXaxis()->SetBinLabel(1,"ACCEPTED");
2472 fh1EvtSelection->GetXaxis()->SetBinLabel(2,"event selection: rejected");
2473 fh1EvtSelection->GetXaxis()->SetBinLabel(3,"event class: rejected");
2474 fh1EvtSelection->GetXaxis()->SetBinLabel(4,"vertex Ncontr: rejected");
2475 fh1EvtSelection->GetXaxis()->SetBinLabel(5,"vertex z: rejected");
2476 fh1EvtSelection->GetXaxis()->SetBinLabel(6,"vertex type: rejected");
2478 fh1VertexNContributors = new TH1F("fh1VertexNContributors", "Vertex N contributors", 2500,-.5, 2499.5);
2479 fh1VertexZ = new TH1F("fh1VertexZ", "Vertex z distribution", 30, -15., 15.);
2480 fh1EvtMult = new TH1F("fh1EvtMult","Event multiplicity, track pT cut > 150 MeV/c, |#eta| < 0.9",120,0.,12000.);
2481 fh1EvtCent = new TH1F("fh1EvtCent","centrality",100,0.,100.);
2482 fh2TrackPtVsDCAXY = new TH2F("fh2TrackPtVsDCAXY","",400,-0.02,0.02,100,0.,10.);
2483 fh2TrackPtVsDCAZ = new TH2F("fh2TrackPtVsDCAZ","",100,-0.050,0.050,100,0.,10.);
2485 fh1Xsec = new TProfile("fh1Xsec","xsec from pyxsec.root",1,0,1);
2486 fh1Xsec->GetXaxis()->SetBinLabel(1,"<#sigma>");
2487 fh1Trials = new TH1F("fh1Trials","trials from pyxsec.root",1,0,1);
2488 fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}");
2489 fh1PtHard = new TH1F("fh1PtHard","PYTHIA Pt hard;p_{T,hard}",350,-.5,349.5);
2490 fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",350,-.5,349.5);
2492 fh1nRecJetsCuts = new TH1F("fh1nRecJetsCuts","reconstructed jets per event",10,-0.5,9.5);
2493 fh1nGenJets = new TH1F("fh1nGenJets","generated jets per event",10,-0.5,9.5);
2494 fh1nRecEffJets = new TH1F("fh1nRecEffJets","reconstruction effiency: jets per event",10,-0.5,9.5);
2495 fh1nEmbeddedJets = new TH1F("fh1nEmbeddedJets","embedded jets per event",10,-0.5,9.5);
2497 fh2PtRecVsGenPrim = new TH2F("fh2PtRecVsGenPrim","rec vs gen pt",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax);
2498 fh2PtRecVsGenSec = new TH2F("fh2PtRecVsGenSec","rec vs gen pt",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax);
2503 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
2504 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
2505 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading){
2507 fh1nRecBckgJetsCuts = new TH1F("fh1nRecBckgJetsCuts","reconstructed background jets per event",10,-0.5,9.5);
2508 fh1nGenBckgJets = new TH1F("fh1nGenBckgJets","generated background jets per event",10,-0.5,9.5);
2511 if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp || fBckgType[3]==kBckgPerp || fBckgType[4]==kBckgPerp )
2512 fh1PerpMult = new TH1F("fh1PerpMult","Background multiplicity - Cone perpendicular to leading jet axis",500,0.,500.);
2513 if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide || fBckgType[3]==kBckgASide || fBckgType[4]==kBckgASide)
2514 fh1ASideMult = new TH1F("fh1ASideMult","Background multiplicity - Cone in the away side of leading jet axis",500,0.,500.);
2515 if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow || fBckgType[3]==kBckgASideWindow || fBckgType[4]==kBckgASideWindow)
2516 fh1ASideWindowMult = new TH1F("fh1ASideWindowMult","Background multiplicity - Cone in the away side of leading jet axis",500,0.,500.);
2517 if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow || fBckgType[3]==kBckgPerpWindow || fBckgType[4]==kBckgPerpWindow)
2518 fh1PerpWindowMult = new TH1F("fh1PerpWindowMult","Background multiplicity - Cone in the perp direction of leading jet axis",500,0.,500.);
2519 if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ || fBckgType[3]==kBckgOutLJ || fBckgType[4]==kBckgOutLJ)
2520 fh1OutLeadingMult = new TH1F("fh1OutLeadingMult","Background multiplicity - Cone outside leading jet",500,0,500.);
2521 if(fBckgType[0]==kBckgOutLJStat || fBckgType[1]==kBckgOutLJStat || fBckgType[2]==kBckgOutLJStat || fBckgType[3]==kBckgOutLJStat || fBckgType[4]==kBckgOutLJStat)
2522 fh1OutLeadingStatMult = new TH1F("fh1OutLeadingStatMult","Background multiplicity - Cone outside leading jet",3000,0,3000.);
2523 if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J || fBckgType[3]==kBckgOut2J || fBckgType[4]==kBckgOut2J)
2524 fh1Out2JetsMult = new TH1F("fh1Out2JetsMult","Background multiplicity - Cone outside 2 jets",500,0.,500.);
2525 if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J || fBckgType[3]==kBckgOut3J || fBckgType[4]==kBckgOut3J)
2526 fh1Out3JetsMult = new TH1F("fh1Out3JetsMult","Background multiplicity - Cone outside 3 jets",500,0.,500.);
2527 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters)
2528 fh1MedianClustersMult = new TH1F("fh1MedianClustersMult","Background multiplicity - median cluster",500,0.,500.);
2529 if(fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading || fBckgType[3]==kBckgClustersOutLeading
2530 || fBckgType[4]==kBckgClustersOutLeading)
2531 fh1OutClustersMult = new TH1F("fh1OutClustersMult","Background multiplicity - clusters outside leading jet",3000,0.,3000.);
2535 if(fBranchEmbeddedJets.Length()){
2536 fh1FractionPtEmbedded = new TH1F("fh1FractionPtEmbedded","",200,0,2);
2537 fh1IndexEmbedded = new TH1F("fh1IndexEmbedded","",11,-1,10);
2538 fh2DeltaPtVsJetPtEmbedded = new TH2F("fh2DeltaPtVsJetPtEmbedded","",250,0,250,200,-100,100);
2539 fh2DeltaPtVsRecJetPtEmbedded = new TH2F("fh2DeltaPtVsRecJetPtEmbedded","",250,0,250,200,-100,100);
2540 fh1DeltaREmbedded = new TH1F("fh1DeltaREmbedded","",50,0,0.5);
2541 fh1nEmbeddedJets = new TH1F("fh1nEmbeddedJets","embedded jets per event",10,-0.5,9.5);
2545 fh2ptVsDistNN_pt50_rec = new TH2F("fh2ptVsDistNN_pt50_rec","",200,0,0.2,500,0.,100);
2546 fh2ptVsDistNN_pt50_nonRec = new TH2F("fh2ptVsDistNN_pt50_nonRec","",200,0,0.2,500,0.,100);
2547 fh2ptVsDistNN_pt10_rec = new TH2F("fh2ptVsDistNN_pt10_rec","",200,0,0.2,500,0.,100);
2548 fh2ptVsDistNN_pt10_nonRec = new TH2F("fh2ptVsDistNN_pt10_nonRec","",200,0,0.2,500,0.,100);
2552 if(fQAMode&1){ // track QA
2553 fQATrackHistosRec = new AliFragFuncQATrackHistos("Rec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2554 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2555 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2556 fQATrackHighPtThreshold);
2557 fQATrackHistosRecCuts = new AliFragFuncQATrackHistos("RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2558 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2559 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2560 fQATrackHighPtThreshold);
2561 fQATrackHistosGen = new AliFragFuncQATrackHistos("Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2562 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2563 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2564 fQATrackHighPtThreshold);
2567 if(fQAMode&2){ // jet QA
2568 fQAJetHistosRec = new AliFragFuncQAJetHistos("Rec", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2569 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2570 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2571 fQAJetHistosRecCuts = new AliFragFuncQAJetHistos("RecCuts", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2572 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2573 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2574 fQAJetHistosRecCutsLeading = new AliFragFuncQAJetHistos("RecCutsLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2575 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2576 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2577 fQAJetHistosGen = new AliFragFuncQAJetHistos("Gen", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2578 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2579 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2580 fQAJetHistosGenLeading = new AliFragFuncQAJetHistos("GenLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2581 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2582 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2583 if(fEffMode) fQAJetHistosRecEffLeading = new AliFragFuncQAJetHistos("RecEffLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2584 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2589 fFFHistosRecCuts = new AliFragFuncHistos("RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2590 fFFNBinsPt, fFFPtMin, fFFPtMax,
2591 fFFNBinsXi, fFFXiMin, fFFXiMax,
2592 fFFNBinsZ , fFFZMin , fFFZMax);
2593 fFFHistosRecLeading = new AliFragFuncHistos("RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2594 fFFNBinsPt, fFFPtMin, fFFPtMax,
2595 fFFNBinsXi, fFFXiMin, fFFXiMax,
2596 fFFNBinsZ , fFFZMin , fFFZMax);
2597 fFFHistosRecLeadingTrack = new AliFragFuncHistos("RecLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2598 fFFNBinsPt, fFFPtMin, fFFPtMax,
2599 fFFNBinsXi, fFFXiMin, fFFXiMax,
2600 fFFNBinsZ , fFFZMin , fFFZMax);
2601 fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2602 fFFNBinsPt, fFFPtMin, fFFPtMax,
2603 fFFNBinsXi, fFFXiMin, fFFXiMax,
2604 fFFNBinsZ , fFFZMin , fFFZMax);
2605 fFFHistosGenLeading = new AliFragFuncHistos("GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2606 fFFNBinsPt, fFFPtMin, fFFPtMax,
2607 fFFNBinsXi, fFFXiMin, fFFXiMax,
2608 fFFNBinsZ , fFFZMin , fFFZMax);
2609 fFFHistosGenLeadingTrack = new AliFragFuncHistos("GenLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2610 fFFNBinsPt, fFFPtMin, fFFPtMax,
2611 fFFNBinsXi, fFFXiMin, fFFXiMax,
2612 fFFNBinsZ , fFFZMin , fFFZMax);
2617 fIJHistosRecCuts = new AliFragFuncIntraJetHistos("RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2618 fIJNBinsPt, fIJPtMin, fIJPtMax,
2619 fIJNBinsZ, fIJZMin, fIJZMax,
2620 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2621 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2622 fIJNBinsJt , fIJJtMin , fIJJtMax);
2623 fIJHistosRecLeading = new AliFragFuncIntraJetHistos("RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2624 fIJNBinsPt, fIJPtMin, fIJPtMax,
2625 fIJNBinsZ, fIJZMin, fIJZMax,
2626 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2627 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2628 fIJNBinsJt , fIJJtMin , fIJJtMax);
2629 fIJHistosRecLeadingTrack = new AliFragFuncIntraJetHistos("RecLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2630 fIJNBinsPt, fIJPtMin, fIJPtMax,
2631 fIJNBinsZ, fIJZMin, fIJZMax,
2632 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2633 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2634 fIJNBinsJt , fIJJtMin , fIJJtMax);
2635 fIJHistosGen = new AliFragFuncIntraJetHistos("Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2636 fIJNBinsPt, fIJPtMin, fIJPtMax,
2637 fIJNBinsZ, fIJZMin, fIJZMax,
2638 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2639 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2640 fIJNBinsJt , fIJJtMin , fIJJtMax);
2641 fIJHistosGenLeading = new AliFragFuncIntraJetHistos("GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2642 fIJNBinsPt, fIJPtMin, fIJPtMax,
2643 fIJNBinsZ, fIJZMin, fIJZMax,
2644 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2645 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2646 fIJNBinsJt , fIJJtMin , fIJJtMax);
2647 fIJHistosGenLeadingTrack = new AliFragFuncIntraJetHistos("GenLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2648 fIJNBinsPt, fIJPtMin, fIJPtMax,
2649 fIJNBinsZ, fIJZMin, fIJZMax,
2650 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2651 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2652 fIJNBinsJt , fIJJtMin , fIJJtMax);
2657 fFFDiJetHistosRecCuts = new AliFragFuncDiJetHistos("RecCuts", fDiJetKindBins,
2658 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2659 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2660 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2661 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2662 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2663 fFFDiJetHistosRecLeading = new AliFragFuncDiJetHistos("RecLeading", fDiJetKindBins,
2664 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2665 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2666 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2667 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2668 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2669 fFFDiJetHistosRecLeadingTrack = new AliFragFuncDiJetHistos("RecLeadingTrack", fDiJetKindBins,
2670 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2671 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2672 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2673 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2674 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2676 fFFDiJetHistosGen = new AliFragFuncDiJetHistos("Gen", fDiJetKindBins,
2677 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2678 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2679 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2680 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2681 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2682 fFFDiJetHistosGenLeading = new AliFragFuncDiJetHistos("GenLeading", fDiJetKindBins,
2683 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2684 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2685 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2686 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2687 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2688 fFFDiJetHistosGenLeadingTrack = new AliFragFuncDiJetHistos("GenLeadingTrack", fDiJetKindBins,
2689 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2690 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2691 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2692 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2693 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2697 fQADiJetHistosRecCuts = new AliFragFuncQADiJetHistos("RecCuts", fDiJetKindBins,
2698 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2699 fQADiJetNBinsJetPt, fQADiJetJetPtMin, fQADiJetJetPtMax,
2700 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax ,
2701 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax ,
2702 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax,
2703 fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax);
2704 fQADiJetHistosGen = new AliFragFuncQADiJetHistos("Gen", fDiJetKindBins,
2705 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2706 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2707 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax,
2708 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax,
2709 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax,
2710 fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax);
2718 fQATrackHistosRecEffGen = new AliFragFuncQATrackHistos("RecEffGen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2719 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2720 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2721 fQATrackHighPtThreshold);
2723 fQATrackHistosRecEffRec = new AliFragFuncQATrackHistos("RecEffRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2724 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2725 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2726 fQATrackHighPtThreshold);
2728 fQATrackHistosSecRec = new AliFragFuncQATrackHistos("SecRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2729 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2730 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2731 fQATrackHighPtThreshold);
2734 Int_t nBinsResponseSinglePt[2] = {fFFNBinsPt, fFFNBinsPt};
2735 Double_t binMinResponseSinglePt[2] = {fFFPtMin, fFFPtMin};
2736 Double_t binMaxResponseSinglePt[2] = {fFFPtMax, fFFPtMax};
2737 const char* labelsResponseSinglePt[2] = {"rec p_{T} [GeV/c]", "gen p_{T} [GeV/c]"};
2739 fhnResponseSinglePt = new THnSparseF("fhnResponseSinglePt","track pt gen : track pt rec",2,
2740 nBinsResponseSinglePt,binMinResponseSinglePt,binMaxResponseSinglePt);
2742 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseSinglePt,2,labelsResponseSinglePt);
2745 fh2SingleInvPtRecMnGenVsPtGen = new TH2F("fh2SingleInvPtRecMnGenVsPtGen","",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,200,-1,1);
2748 fFFHistosRecEffGen = new AliFragFuncHistos("RecEffGen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2749 fFFNBinsPt, fFFPtMin, fFFPtMax,
2750 fFFNBinsXi, fFFXiMin, fFFXiMax,
2751 fFFNBinsZ , fFFZMin , fFFZMax);
2753 fFFHistosRecEffRec = new AliFragFuncHistos("RecEffRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2754 fFFNBinsPt, fFFPtMin, fFFPtMax,
2755 fFFNBinsXi, fFFXiMin, fFFXiMax,
2756 fFFNBinsZ , fFFZMin , fFFZMax);
2758 fFFHistosSecRec = new AliFragFuncHistos("SecRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2759 fFFNBinsPt, fFFPtMin, fFFPtMax,
2760 fFFNBinsXi, fFFXiMin, fFFXiMax,
2761 fFFNBinsZ , fFFZMin , fFFZMax);
2764 Int_t nBinsResponseJetTrackPt[3] = {fFFNBinsJetPt,fFFNBinsPt,fFFNBinsPt};
2765 Double_t binMinResponseJetTrackPt[3] = {fFFJetPtMin,fFFPtMin, fFFPtMin};
2766 Double_t binMaxResponseJetTrackPt[3] = {fFFJetPtMax,fFFPtMax,fFFPtMax};
2767 const char* labelsResponseJetTrackPt[3] = { "jet p_{T} [GeV/c]","rec p_{T} [GeV/c]", "gen p_{T} [GeV/c]"};
2769 fhnResponseJetTrackPt = new THnSparseF("fhnResponseJetTrackPt","jet pt:track pt rec:track pt gen",3,
2770 nBinsResponseJetTrackPt,binMinResponseJetTrackPt,binMaxResponseJetTrackPt);
2772 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetTrackPt,3,labelsResponseJetTrackPt);
2774 Int_t nBinsResponseJetZ[3] = {fFFNBinsJetPt, fFFNBinsZ,fFFNBinsZ};
2775 Double_t binMinResponseJetZ[3] = {fFFJetPtMin, fFFZMin, fFFZMin};
2776 Double_t binMaxResponseJetZ[3] = {fFFJetPtMax, fFFZMax, fFFZMax};
2777 const char* labelsResponseJetZ[3] = { "jet p_{T} [GeV/c]","rec z","gen z"};
2779 fhnResponseJetZ = new THnSparseF("fhnResponseJetZ","jet pt:track pt rec:track pt gen",3,
2780 nBinsResponseJetZ,binMinResponseJetZ,binMaxResponseJetZ);
2782 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetZ,3,labelsResponseJetZ);
2784 Int_t nBinsResponseJetXi[3] = {fFFNBinsJetPt, fFFNBinsXi,fFFNBinsXi};
2785 Double_t binMinResponseJetXi[3] = {fFFJetPtMin, fFFXiMin, fFFXiMin};
2786 Double_t binMaxResponseJetXi[3] = {fFFJetPtMax, fFFXiMax, fFFXiMax};
2787 const char* labelsResponseJetXi[3] = { "jet p_{T} [GeV/c]","rec xi","gen xi"};
2789 fhnResponseJetXi = new THnSparseF("fhnResponseJetXi","jet pt:track xi rec:track xi gen",3,
2790 nBinsResponseJetXi,binMinResponseJetXi,binMaxResponseJetXi);
2792 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetXi,3,labelsResponseJetXi);
2795 } // end: efficiency
2801 for(Int_t i=0; i<5; i++){
2802 if(fBckgType[i]==kBckgPerp) title[i]="Perp";
2803 else if(fBckgType[i]==kBckgPerpWindow) title[i]="PerpW";
2804 else if(fBckgType[i]==kBckgASide) title[i]="ASide";
2805 else if(fBckgType[i]==kBckgASideWindow) title[i]="ASideW";
2806 else if(fBckgType[i]==kBckgOutLJ) title[i]="OutLeadingJet";
2807 else if(fBckgType[i]==kBckgOut2J) title[i]="Out2Jets";
2808 else if(fBckgType[i]==kBckgOut3J) title[i]="Out3Jets";
2809 else if(fBckgType[i]==kBckgOutAJ) title[i]="AllJets";
2810 else if(fBckgType[i]==kBckgOutLJStat) title[i]="OutLeadingJetStat";
2811 else if(fBckgType[i]==kBckgOut2JStat) title[i]="Out2JetsStat";
2812 else if(fBckgType[i]==kBckgOut3JStat) title[i]="Out3JetsStat";
2813 else if(fBckgType[i]==kBckgOutAJStat) title[i]="AllJetsStat";
2814 else if(fBckgType[i]==kBckgClustersOutLeading) title[i]="OutClusters";
2815 else if(fBckgType[i]==kBckgClusters) title[i]="MedianClusters";
2816 else printf("Please chose background method number %d!",i);
2820 fQABckgHisto0RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[0]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2821 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2822 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2823 fQATrackHighPtThreshold);
2824 fQABckgHisto0Gen = new AliFragFuncQATrackHistos("Bckg"+title[0]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2825 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2826 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2827 fQATrackHighPtThreshold);
2828 fQABckgHisto1RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[1]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2829 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2830 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2831 fQATrackHighPtThreshold);
2832 fQABckgHisto1Gen = new AliFragFuncQATrackHistos("Bckg"+title[1]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2833 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2834 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2835 fQATrackHighPtThreshold);
2836 fQABckgHisto2RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[2]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2837 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2838 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2839 fQATrackHighPtThreshold);
2840 fQABckgHisto2Gen = new AliFragFuncQATrackHistos("Bckg"+title[2]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2841 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2842 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2843 fQATrackHighPtThreshold);
2844 fQABckgHisto3RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[3]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2845 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2846 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2847 fQATrackHighPtThreshold);
2848 fQABckgHisto3Gen = new AliFragFuncQATrackHistos("Bckg"+title[3]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2849 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2850 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2851 fQATrackHighPtThreshold);
2852 fQABckgHisto4RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[4]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2853 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2854 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2855 fQATrackHighPtThreshold);
2856 fQABckgHisto4Gen = new AliFragFuncQATrackHistos("Bckg"+title[4]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2857 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2858 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2859 fQATrackHighPtThreshold);
2862 } // end: background QA
2865 // outside leading jet or 2 jets or more
2866 fFFBckgHisto0RecCuts = new AliFragFuncHistos("Bckg"+title[0]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2867 fFFNBinsPt, fFFPtMin, fFFPtMax,
2868 fFFNBinsXi, fFFXiMin, fFFXiMax,
2869 fFFNBinsZ , fFFZMin , fFFZMax);
2870 fFFBckgHisto0RecLeading = new AliFragFuncHistos("Bckg"+title[0]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2871 fFFNBinsPt, fFFPtMin, fFFPtMax,
2872 fFFNBinsXi, fFFXiMin, fFFXiMax,
2873 fFFNBinsZ , fFFZMin , fFFZMax);
2874 fFFBckgHisto0Gen = new AliFragFuncHistos("Bckg"+title[0]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2875 fFFNBinsPt, fFFPtMin, fFFPtMax,
2876 fFFNBinsXi, fFFXiMin, fFFXiMax,
2877 fFFNBinsZ , fFFZMin , fFFZMax);
2878 fFFBckgHisto0GenLeading = new AliFragFuncHistos("Bckg"+title[0]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2879 fFFNBinsPt, fFFPtMin, fFFPtMax,
2880 fFFNBinsXi, fFFXiMin, fFFXiMax,
2881 fFFNBinsZ , fFFZMin , fFFZMax);
2883 fFFBckgHisto1RecCuts = new AliFragFuncHistos("Bckg"+title[1]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2884 fFFNBinsPt, fFFPtMin, fFFPtMax,
2885 fFFNBinsXi, fFFXiMin, fFFXiMax,
2886 fFFNBinsZ , fFFZMin , fFFZMax);
2887 fFFBckgHisto1RecLeading = new AliFragFuncHistos("Bckg"+title[1]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2888 fFFNBinsPt, fFFPtMin, fFFPtMax,
2889 fFFNBinsXi, fFFXiMin, fFFXiMax,
2890 fFFNBinsZ , fFFZMin , fFFZMax);
2891 fFFBckgHisto1Gen = new AliFragFuncHistos("Bckg"+title[1]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2892 fFFNBinsPt, fFFPtMin, fFFPtMax,
2893 fFFNBinsXi, fFFXiMin, fFFXiMax,
2894 fFFNBinsZ , fFFZMin , fFFZMax);
2895 fFFBckgHisto1GenLeading = new AliFragFuncHistos("Bckg"+title[1]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2896 fFFNBinsPt, fFFPtMin, fFFPtMax,
2897 fFFNBinsXi, fFFXiMin, fFFXiMax,
2898 fFFNBinsZ , fFFZMin , fFFZMax);
2900 fFFBckgHisto2RecCuts = new AliFragFuncHistos("Bckg"+title[2]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2901 fFFNBinsPt, fFFPtMin, fFFPtMax,
2902 fFFNBinsXi, fFFXiMin, fFFXiMax,
2903 fFFNBinsZ , fFFZMin , fFFZMax);
2904 fFFBckgHisto2RecLeading = new AliFragFuncHistos("Bckg"+title[2]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2905 fFFNBinsPt, fFFPtMin, fFFPtMax,
2906 fFFNBinsXi, fFFXiMin, fFFXiMax,
2907 fFFNBinsZ , fFFZMin , fFFZMax);
2908 fFFBckgHisto2Gen = new AliFragFuncHistos("Bckg"+title[2]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2909 fFFNBinsPt, fFFPtMin, fFFPtMax,
2910 fFFNBinsXi, fFFXiMin, fFFXiMax,
2911 fFFNBinsZ , fFFZMin , fFFZMax);
2912 fFFBckgHisto2GenLeading = new AliFragFuncHistos("Bckg"+title[2]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2913 fFFNBinsPt, fFFPtMin, fFFPtMax,
2914 fFFNBinsXi, fFFXiMin, fFFXiMax,
2915 fFFNBinsZ , fFFZMin , fFFZMax);
2916 fFFBckgHisto3RecCuts = new AliFragFuncHistos("Bckg"+title[3]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2917 fFFNBinsPt, fFFPtMin, fFFPtMax,
2918 fFFNBinsXi, fFFXiMin, fFFXiMax,
2919 fFFNBinsZ , fFFZMin , fFFZMax);
2920 fFFBckgHisto3RecLeading = new AliFragFuncHistos("Bckg"+title[3]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2921 fFFNBinsPt, fFFPtMin, fFFPtMax,
2922 fFFNBinsXi, fFFXiMin, fFFXiMax,
2923 fFFNBinsZ , fFFZMin , fFFZMax);
2924 fFFBckgHisto3Gen = new AliFragFuncHistos("Bckg"+title[3]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2925 fFFNBinsPt, fFFPtMin, fFFPtMax,
2926 fFFNBinsXi, fFFXiMin, fFFXiMax,
2927 fFFNBinsZ , fFFZMin , fFFZMax);
2928 fFFBckgHisto3GenLeading = new AliFragFuncHistos("Bckg"+title[3]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2929 fFFNBinsPt, fFFPtMin, fFFPtMax,
2930 fFFNBinsXi, fFFXiMin, fFFXiMax,
2931 fFFNBinsZ , fFFZMin , fFFZMax);
2932 fFFBckgHisto4RecCuts = new AliFragFuncHistos("Bckg"+title[4]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2933 fFFNBinsPt, fFFPtMin, fFFPtMax,
2934 fFFNBinsXi, fFFXiMin, fFFXiMax,
2935 fFFNBinsZ , fFFZMin , fFFZMax);
2936 fFFBckgHisto4RecLeading = new AliFragFuncHistos("Bckg"+title[4]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2937 fFFNBinsPt, fFFPtMin, fFFPtMax,
2938 fFFNBinsXi, fFFXiMin, fFFXiMax,
2939 fFFNBinsZ , fFFZMin , fFFZMax);
2940 fFFBckgHisto4Gen = new AliFragFuncHistos("Bckg"+title[4]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2941 fFFNBinsPt, fFFPtMin, fFFPtMax,
2942 fFFNBinsXi, fFFXiMin, fFFXiMax,
2943 fFFNBinsZ , fFFZMin , fFFZMax);
2944 fFFBckgHisto4GenLeading = new AliFragFuncHistos("Bckg"+title[4]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2945 fFFNBinsPt, fFFPtMin, fFFPtMax,
2946 fFFNBinsXi, fFFXiMin, fFFXiMax,
2947 fFFNBinsZ , fFFZMin , fFFZMax);
2949 } // end: background FF
2952 fIJBckgHisto0RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2953 fIJNBinsPt, fIJPtMin, fIJPtMax,
2954 fIJNBinsZ, fIJZMin, fIJZMax,
2955 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2956 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2957 fIJNBinsJt , fIJJtMin , fIJJtMax);
2958 fIJBckgHisto0RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2959 fIJNBinsPt, fIJPtMin, fIJPtMax,
2960 fIJNBinsZ, fIJZMin, fIJZMax,
2961 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2962 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2963 fIJNBinsJt , fIJJtMin , fIJJtMax);
2964 fIJBckgHisto0Gen = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2965 fIJNBinsPt, fIJPtMin, fIJPtMax,
2966 fIJNBinsZ, fIJZMin, fIJZMax,
2967 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2968 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2969 fIJNBinsJt , fIJJtMin , fIJJtMax);
2970 fIJBckgHisto0GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2971 fIJNBinsPt, fIJPtMin, fIJPtMax,
2972 fIJNBinsZ, fIJZMin, fIJZMax,
2973 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2974 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2975 fIJNBinsJt , fIJJtMin , fIJJtMax);
2978 fIJBckgHisto1RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2979 fIJNBinsPt, fIJPtMin, fIJPtMax,
2980 fIJNBinsZ, fIJZMin, fIJZMax,
2981 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2982 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2983 fIJNBinsJt , fIJJtMin , fIJJtMax);
2984 fIJBckgHisto1RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2985 fIJNBinsPt, fIJPtMin, fIJPtMax,
2986 fIJNBinsZ, fIJZMin, fIJZMax,
2987 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2988 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2989 fIJNBinsJt , fIJJtMin , fIJJtMax);
2990 fIJBckgHisto1Gen = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2991 fIJNBinsPt, fIJPtMin, fIJPtMax,
2992 fIJNBinsZ, fIJZMin, fIJZMax,
2993 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2994 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2995 fIJNBinsJt , fIJJtMin , fIJJtMax);
2996 fIJBckgHisto1GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2997 fIJNBinsPt, fIJPtMin, fIJPtMax,
2998 fIJNBinsZ, fIJZMin, fIJZMax,
2999 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3000 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3001 fIJNBinsJt , fIJJtMin , fIJJtMax);
3003 fIJBckgHisto2RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3004 fIJNBinsPt, fIJPtMin, fIJPtMax,
3005 fIJNBinsZ, fIJZMin, fIJZMax,
3006 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3007 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3008 fIJNBinsJt , fIJJtMin , fIJJtMax);
3009 fIJBckgHisto2RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3010 fIJNBinsPt, fIJPtMin, fIJPtMax,
3011 fIJNBinsZ, fIJZMin, fIJZMax,
3012 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3013 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3014 fIJNBinsJt , fIJJtMin , fIJJtMax);
3015 fIJBckgHisto2Gen = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3016 fIJNBinsPt, fIJPtMin, fIJPtMax,
3017 fIJNBinsZ, fIJZMin, fIJZMax,
3018 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3019 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3020 fIJNBinsJt , fIJJtMin , fIJJtMax);
3021 fIJBckgHisto2GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3022 fIJNBinsPt, fIJPtMin, fIJPtMax,
3023 fIJNBinsZ, fIJZMin, fIJZMax,
3024 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3025 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3026 fIJNBinsJt , fIJJtMin , fIJJtMax);
3027 } // end: background intra-jet
3028 } // end: background
3031 fPhiCorrHistosJetArea = new AliFragFuncQATrackHistos("JetArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3032 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3033 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3034 fQATrackHighPtThreshold);
3036 fPhiCorrHistosTransverseArea = new AliFragFuncQATrackHistos("TransverseArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3037 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3038 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3039 fQATrackHighPtThreshold);
3041 fPhiCorrHistosAwayArea = new AliFragFuncQATrackHistos("AwayArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3042 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3043 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3044 fQATrackHighPtThreshold);
3045 } // end: phi correlation
3048 // ____________ define histograms ____________________
3051 if(fQAMode&1){ // track QA
3052 fQATrackHistosRec->DefineHistos();
3053 fQATrackHistosRecCuts->DefineHistos();
3054 fQATrackHistosGen->DefineHistos();
3057 if(fQAMode&2){ // jet QA
3058 fQAJetHistosRec->DefineHistos();
3059 fQAJetHistosRecCuts->DefineHistos();
3060 fQAJetHistosRecCutsLeading->DefineHistos();
3061 fQAJetHistosGen->DefineHistos();
3062 fQAJetHistosGenLeading->DefineHistos();
3063 if(fEffMode) fQAJetHistosRecEffLeading->DefineHistos();
3068 fFFHistosRecCuts->DefineHistos();
3069 fFFHistosRecLeading->DefineHistos();
3070 fFFHistosRecLeadingTrack->DefineHistos();
3071 fFFHistosGen->DefineHistos();
3072 fFFHistosGenLeading->DefineHistos();
3073 fFFHistosGenLeadingTrack->DefineHistos();
3077 fIJHistosRecCuts->DefineHistos();
3078 fIJHistosRecLeading->DefineHistos();
3079 fIJHistosRecLeadingTrack->DefineHistos();
3080 fIJHistosGen->DefineHistos();
3081 fIJHistosGenLeading->DefineHistos();
3082 fIJHistosGenLeadingTrack->DefineHistos();
3087 fFFDiJetHistosRecCuts->DefineDiJetHistos();
3088 fFFDiJetHistosRecLeading->DefineDiJetHistos();
3089 fFFDiJetHistosRecLeadingTrack->DefineDiJetHistos();
3090 fFFDiJetHistosGen->DefineDiJetHistos();
3091 fFFDiJetHistosGenLeading->DefineDiJetHistos();
3092 fFFDiJetHistosGenLeadingTrack->DefineDiJetHistos();
3096 fQADiJetHistosRecCuts->DefineQADiJetHistos();
3097 fQADiJetHistosGen->DefineQADiJetHistos();
3103 fQATrackHistosRecEffGen->DefineHistos();
3104 fQATrackHistosRecEffRec->DefineHistos();
3105 fQATrackHistosSecRec->DefineHistos();
3108 fFFHistosRecEffGen->DefineHistos();
3109 fFFHistosRecEffRec->DefineHistos();
3110 fFFHistosSecRec->DefineHistos();
3112 } // end: efficiency
3117 fFFBckgHisto0RecCuts->DefineHistos();
3118 fFFBckgHisto0RecLeading->DefineHistos();
3119 fFFBckgHisto0Gen->DefineHistos();
3120 fFFBckgHisto0GenLeading->DefineHistos();
3121 fFFBckgHisto1RecCuts->DefineHistos();
3122 fFFBckgHisto1RecLeading->DefineHistos();
3123 fFFBckgHisto1Gen->DefineHistos();
3124 fFFBckgHisto1GenLeading->DefineHistos();
3125 fFFBckgHisto2RecCuts->DefineHistos();
3126 fFFBckgHisto2RecLeading->DefineHistos();
3127 fFFBckgHisto2Gen->DefineHistos();
3128 fFFBckgHisto2GenLeading->DefineHistos();
3129 fFFBckgHisto3RecCuts->DefineHistos();
3130 fFFBckgHisto3RecLeading->DefineHistos();
3131 fFFBckgHisto3Gen->DefineHistos();
3132 fFFBckgHisto3GenLeading->DefineHistos();
3133 fFFBckgHisto4RecCuts->DefineHistos();
3134 fFFBckgHisto4RecLeading->DefineHistos();
3135 fFFBckgHisto4Gen->DefineHistos();
3136 fFFBckgHisto4GenLeading->DefineHistos();
3140 fIJBckgHisto0RecCuts->DefineHistos();
3141 fIJBckgHisto0RecLeading->DefineHistos();
3142 fIJBckgHisto0Gen->DefineHistos();
3143 fIJBckgHisto0GenLeading->DefineHistos();
3144 fIJBckgHisto1RecCuts->DefineHistos();
3145 fIJBckgHisto1RecLeading->DefineHistos();
3146 fIJBckgHisto1Gen->DefineHistos();
3147 fIJBckgHisto1GenLeading->DefineHistos();
3148 fIJBckgHisto2RecCuts->DefineHistos();
3149 fIJBckgHisto2RecLeading->DefineHistos();
3150 fIJBckgHisto2Gen->DefineHistos();
3151 fIJBckgHisto2GenLeading->DefineHistos();
3155 fQABckgHisto0RecCuts->DefineHistos();
3156 fQABckgHisto0Gen->DefineHistos();
3157 fQABckgHisto1RecCuts->DefineHistos();
3158 fQABckgHisto1Gen->DefineHistos();
3159 fQABckgHisto2RecCuts->DefineHistos();
3160 fQABckgHisto2Gen->DefineHistos();
3161 fQABckgHisto3RecCuts->DefineHistos();
3162 fQABckgHisto3Gen->DefineHistos();
3163 fQABckgHisto4RecCuts->DefineHistos();
3164 fQABckgHisto4Gen->DefineHistos();
3166 } // end: background
3169 fPhiCorrHistosJetArea->DefineHistos();
3170 fPhiCorrHistosTransverseArea->DefineHistos();
3171 fPhiCorrHistosAwayArea->DefineHistos();
3174 Bool_t genJets = (fJetTypeGen != kJetsUndef) ? kTRUE : kFALSE;
3175 Bool_t genTracks = (fTrackTypeGen != kTrackUndef) ? kTRUE : kFALSE;
3176 Bool_t recJetsEff = (fJetTypeRecEff != kJetsUndef) ? kTRUE : kFALSE;
3178 fCommonHistList->Add(fh1EvtSelection);
3179 fCommonHistList->Add(fh1EvtMult);
3180 fCommonHistList->Add(fh1EvtCent);
3181 fCommonHistList->Add(fh2TrackPtVsDCAXY);
3182 fCommonHistList->Add(fh2TrackPtVsDCAZ);
3183 fCommonHistList->Add(fh1VertexNContributors);
3184 fCommonHistList->Add(fh1VertexZ);
3185 fCommonHistList->Add(fh1nRecJetsCuts);
3186 if(genJets && genTracks){
3187 fCommonHistList->Add(fh1Xsec);
3188 fCommonHistList->Add(fh1Trials);
3189 fCommonHistList->Add(fh1PtHard);
3190 fCommonHistList->Add(fh1PtHardTrials);
3191 if(genJets) fCommonHistList->Add(fh1nGenJets);
3196 fFFHistosRecCuts->AddToOutput(fCommonHistList);
3197 fFFHistosRecLeading->AddToOutput(fCommonHistList);
3198 fFFHistosRecLeadingTrack->AddToOutput(fCommonHistList);
3199 if(genJets && genTracks){
3200 fCommonHistList->Add(fh1Xsec);
3201 fCommonHistList->Add(fh1Trials);
3202 fCommonHistList->Add(fh1PtHard);
3203 fCommonHistList->Add(fh1PtHardTrials);
3204 if(genJets) fCommonHistList->Add(fh1nGenJets);
3206 fFFHistosGen->AddToOutput(fCommonHistList);
3207 fFFHistosGenLeading->AddToOutput(fCommonHistList);
3208 fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList);
3215 fFFBckgHisto0RecCuts->AddToOutput(fCommonHistList);
3216 fFFBckgHisto0RecLeading->AddToOutput(fCommonHistList);
3217 fFFBckgHisto1RecCuts->AddToOutput(fCommonHistList);
3218 fFFBckgHisto1RecLeading->AddToOutput(fCommonHistList);
3219 fFFBckgHisto2RecCuts->AddToOutput(fCommonHistList);
3220 fFFBckgHisto2RecLeading->AddToOutput(fCommonHistList);
3221 fFFBckgHisto3RecCuts->AddToOutput(fCommonHistList);
3222 fFFBckgHisto3RecLeading->AddToOutput(fCommonHistList);
3223 fFFBckgHisto4RecCuts->AddToOutput(fCommonHistList);
3224 fFFBckgHisto4RecLeading->AddToOutput(fCommonHistList);
3226 if(genJets && genTracks){
3227 fFFBckgHisto0Gen->AddToOutput(fCommonHistList);
3228 fFFBckgHisto0GenLeading->AddToOutput(fCommonHistList);
3229 fFFBckgHisto1Gen->AddToOutput(fCommonHistList);
3230 fFFBckgHisto1GenLeading->AddToOutput(fCommonHistList);
3231 fFFBckgHisto2Gen->AddToOutput(fCommonHistList);
3232 fFFBckgHisto2GenLeading->AddToOutput(fCommonHistList);
3233 fFFBckgHisto3Gen->AddToOutput(fCommonHistList);
3234 fFFBckgHisto3GenLeading->AddToOutput(fCommonHistList);
3235 fFFBckgHisto4Gen->AddToOutput(fCommonHistList);
3236 fFFBckgHisto4GenLeading->AddToOutput(fCommonHistList);
3241 fQABckgHisto0RecCuts->AddToOutput(fCommonHistList);
3242 fQABckgHisto1RecCuts->AddToOutput(fCommonHistList);
3243 fQABckgHisto2RecCuts->AddToOutput(fCommonHistList);
3244 fQABckgHisto3RecCuts->AddToOutput(fCommonHistList);
3245 fQABckgHisto4RecCuts->AddToOutput(fCommonHistList);
3246 if(genJets && genTracks){
3247 fQABckgHisto0Gen->AddToOutput(fCommonHistList);
3248 fQABckgHisto1Gen->AddToOutput(fCommonHistList);
3249 fQABckgHisto2Gen->AddToOutput(fCommonHistList);
3250 fQABckgHisto3Gen->AddToOutput(fCommonHistList);
3251 fQABckgHisto4Gen->AddToOutput(fCommonHistList);
3255 if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ || fBckgType[3]==kBckgOutLJ || fBckgType[4]==kBckgOutLJ)
3256 fCommonHistList->Add(fh1OutLeadingMult);
3257 if(fBckgType[0]==kBckgOutLJStat || fBckgType[1]==kBckgOutLJStat || fBckgType[2]==kBckgOutLJStat || fBckgType[3]==kBckgOutLJStat || fBckgType[4]==kBckgOutLJStat)
3258 fCommonHistList->Add(fh1OutLeadingStatMult);
3259 if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp || fBckgType[3]==kBckgPerp || fBckgType[4]==kBckgPerp)
3260 fCommonHistList->Add(fh1PerpMult);
3261 if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide || fBckgType[3]==kBckgASide || fBckgType[4]==kBckgASide)
3262 fCommonHistList->Add(fh1ASideMult);
3263 if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow || fBckgType[3]==kBckgASideWindow || fBckgType[4]==kBckgASideWindow)
3264 fCommonHistList->Add(fh1ASideWindowMult);
3265 if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow || fBckgType[3]==kBckgPerpWindow || fBckgType[4]==kBckgPerpWindow)
3266 fCommonHistList->Add(fh1PerpWindowMult);
3267 if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J || fBckgType[3]==kBckgOut2J || fBckgType[4]==kBckgOut2J)
3268 fCommonHistList->Add(fh1Out2JetsMult);
3269 if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J || fBckgType[3]==kBckgOut3J || fBckgType[4]==kBckgOut3J)
3270 fCommonHistList->Add(fh1Out3JetsMult);
3271 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters)
3272 fCommonHistList->Add(fh1MedianClustersMult);
3273 if(fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading
3274 || fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)
3275 fCommonHistList->Add(fh1OutClustersMult);
3279 if(fBranchEmbeddedJets.Length()){
3280 fCommonHistList->Add(fh1FractionPtEmbedded);
3281 fCommonHistList->Add(fh1IndexEmbedded);
3282 fCommonHistList->Add(fh2DeltaPtVsJetPtEmbedded);
3283 fCommonHistList->Add(fh2DeltaPtVsRecJetPtEmbedded);
3284 fCommonHistList->Add(fh1DeltaREmbedded);
3285 fCommonHistList->Add(fh1nEmbeddedJets);
3289 fCommonHistList->Add(fh2ptVsDistNN_pt50_rec);
3290 fCommonHistList->Add(fh2ptVsDistNN_pt50_nonRec);
3291 fCommonHistList->Add(fh2ptVsDistNN_pt10_rec);
3292 fCommonHistList->Add(fh2ptVsDistNN_pt10_nonRec);
3297 if(fQAMode&1){ // track QA
3298 fQATrackHistosRec->AddToOutput(fCommonHistList);
3299 fQATrackHistosRecCuts->AddToOutput(fCommonHistList);
3300 if(genTracks) fQATrackHistosGen->AddToOutput(fCommonHistList);
3303 if(fQAMode&2){ // jet QA
3304 fQAJetHistosRec->AddToOutput(fCommonHistList);
3305 fQAJetHistosRecCuts->AddToOutput(fCommonHistList);
3306 fQAJetHistosRecCutsLeading->AddToOutput(fCommonHistList);
3307 if(recJetsEff && fEffMode) fQAJetHistosRecEffLeading->AddToOutput(fCommonHistList);
3309 fQAJetHistosGen->AddToOutput(fCommonHistList);
3310 fQAJetHistosGenLeading->AddToOutput(fCommonHistList);
3316 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
3317 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
3318 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)) {
3319 fCommonHistList->Add(fh1nRecBckgJetsCuts);
3320 if(genJets) fCommonHistList->Add(fh1nGenBckgJets);
3325 fPhiCorrHistosJetArea->AddToOutput(fCommonHistList);
3326 fPhiCorrHistosTransverseArea->AddToOutput(fCommonHistList);
3327 fPhiCorrHistosAwayArea->AddToOutput(fCommonHistList);
3332 fIJHistosRecCuts->AddToOutput(fCommonHistList);
3333 fIJHistosRecLeading->AddToOutput(fCommonHistList);
3334 fIJHistosRecLeadingTrack->AddToOutput(fCommonHistList);
3338 fIJBckgHisto0RecCuts->AddToOutput(fCommonHistList);
3339 fIJBckgHisto0RecLeading->AddToOutput(fCommonHistList);
3340 fIJBckgHisto1RecCuts->AddToOutput(fCommonHistList);
3341 fIJBckgHisto1RecLeading->AddToOutput(fCommonHistList);
3342 fIJBckgHisto2RecCuts->AddToOutput(fCommonHistList);
3343 fIJBckgHisto2RecLeading->AddToOutput(fCommonHistList);
3346 if(genJets && genTracks){
3347 fIJHistosGen->AddToOutput(fCommonHistList);
3348 fIJHistosGenLeading->AddToOutput(fCommonHistList);
3349 fIJHistosGenLeadingTrack->AddToOutput(fCommonHistList);
3353 fIJBckgHisto0Gen->AddToOutput(fCommonHistList);
3354 fIJBckgHisto0GenLeading->AddToOutput(fCommonHistList);
3355 fIJBckgHisto1Gen->AddToOutput(fCommonHistList);
3356 fIJBckgHisto1GenLeading->AddToOutput(fCommonHistList);
3357 fIJBckgHisto2Gen->AddToOutput(fCommonHistList);
3358 fIJBckgHisto2GenLeading->AddToOutput(fCommonHistList);
3365 fFFDiJetHistosRecCuts->AddToOutput(fCommonHistList);
3366 fFFDiJetHistosRecLeading->AddToOutput(fCommonHistList);
3367 fFFDiJetHistosRecLeadingTrack->AddToOutput(fCommonHistList);
3368 if(genJets && genTracks){
3369 fFFDiJetHistosGen->AddToOutput(fCommonHistList);
3370 fFFDiJetHistosGenLeading->AddToOutput(fCommonHistList);
3371 fFFDiJetHistosGenLeadingTrack->AddToOutput(fCommonHistList);
3375 fQADiJetHistosRecCuts->AddToOutput(fCommonHistList);
3376 if(genJets && genTracks){
3377 fQADiJetHistosGen->AddToOutput(fCommonHistList);
3382 if(fEffMode && recJetsEff && genTracks){
3384 fQATrackHistosRecEffGen->AddToOutput(fCommonHistList);
3385 fQATrackHistosRecEffRec->AddToOutput(fCommonHistList);
3386 fQATrackHistosSecRec->AddToOutput(fCommonHistList);
3387 fCommonHistList->Add(fhnResponseSinglePt);
3388 fCommonHistList->Add(fh2SingleInvPtRecMnGenVsPtGen);
3391 fFFHistosRecEffGen->AddToOutput(fCommonHistList);
3392 fFFHistosRecEffRec->AddToOutput(fCommonHistList);
3393 fFFHistosSecRec->AddToOutput(fCommonHistList);
3394 fCommonHistList->Add(fhnResponseJetTrackPt);
3395 fCommonHistList->Add(fhnResponseJetZ);
3396 fCommonHistList->Add(fhnResponseJetXi);
3398 fCommonHistList->Add(fh1nRecEffJets);
3399 fCommonHistList->Add(fh2PtRecVsGenPrim);
3400 fCommonHistList->Add(fh2PtRecVsGenSec);
3404 // =========== Switch on Sumw2 for all histos ===========
3405 for (Int_t i=0; i<fCommonHistList->GetEntries(); ++i){
3406 TH1 *h1 = dynamic_cast<TH1*>(fCommonHistList->At(i));
3407 if (h1) h1->Sumw2();
3409 THnSparse *hnSparse = dynamic_cast<THnSparse*>(fCommonHistList->At(i));
3410 if(hnSparse) hnSparse->Sumw2();
3414 TH1::AddDirectory(oldStatus);
3416 PostData(1, fCommonHistList);
3419 //_______________________________________________
3420 void AliAnalysisTaskFragmentationFunction::Init()
3423 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::Init()");
3427 //_____________________________________________________________
3428 void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *)
3431 // Called for each event
3432 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserExec()");
3435 if(fDebug > 1) Printf("Analysis event #%5d", (Int_t) fEntry);
3436 // Trigger selection
3438 AliInputEventHandler* inputHandler = (AliInputEventHandler*)
3439 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
3440 if(!(inputHandler->IsEventSelected() & AliVEvent::kMB)){
3441 if(inputHandler->InheritsFrom("AliESDInputHandler") && fUsePhysicsSelection){ // PhysicsSelection only with ESD input
3442 fh1EvtSelection->Fill(1.);
3443 if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... ");
3444 PostData(1, fCommonHistList);
3449 fESD = dynamic_cast<AliESDEvent*>(InputEvent());
3451 if(fDebug>3) Printf("%s:%d ESDEvent not found in the input", (char*)__FILE__,__LINE__);
3454 fMCEvent = MCEvent();
3456 if(fDebug>3) Printf("%s:%d MCEvent not found in the input", (char*)__FILE__,__LINE__);
3459 // get AOD event from input/ouput
3460 TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
3461 if( handler && handler->InheritsFrom("AliAODInputHandler") ) {
3462 fAOD = ((AliAODInputHandler*)handler)->GetEvent();
3463 if(fUseAODInputJets) fAODJets = fAOD;
3464 if (fDebug > 1) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__);
3467 handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
3468 if( handler && handler->InheritsFrom("AliAODHandler") ) {
3469 fAOD = ((AliAODHandler*)handler)->GetAOD();
3471 if (fDebug > 1) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__);
3475 if(!fAODJets && !fUseAODInputJets){ // case we have AOD in input & output and want jets from output
3476 TObject* outHandler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
3477 if( outHandler && outHandler->InheritsFrom("AliAODHandler") ) {
3478 fAODJets = ((AliAODHandler*)outHandler)->GetAOD();
3479 if (fDebug > 1) Printf("%s:%d jets from output AOD", (char*)__FILE__,__LINE__);
3483 if(fNonStdFile.Length()!=0){
3484 // case we have an AOD extension - fetch the jets from the extended output
3486 AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
3487 fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
3489 if(fDebug>1)Printf("AODExtension not found for %s",fNonStdFile.Data());
3494 Printf("%s:%d AODEvent not found", (char*)__FILE__,__LINE__);
3498 Printf("%s:%d AODEvent with jet branch not found", (char*)__FILE__,__LINE__);
3503 // event selection **************************************************
3504 // *** event class ***
3505 Double_t centPercent = -1;
3508 if(handler->InheritsFrom("AliAODInputHandler")){
3509 // since it is not supported by the helper task define own classes
3510 centPercent = fAOD->GetHeader()->GetCentrality();
3512 if(centPercent>10) cl = 2;
3513 if(centPercent>30) cl = 3;
3514 if(centPercent>50) cl = 4;
3517 cl = AliAnalysisHelperJetTasks::EventClass();
3518 if(fESD) centPercent = fESD->GetCentrality()->GetCentralityPercentile("V0M"); // retrieve value 'by hand'
3521 if(cl!=fEventClass){
3522 // event not in selected event class, reject event
3523 if (fDebug > 1) Printf("%s:%d event not in selected event class: event REJECTED ...",(char*)__FILE__,__LINE__);
3524 fh1EvtSelection->Fill(2.);
3525 PostData(1, fCommonHistList);
3530 // *** vertex cut ***
3531 AliAODVertex* primVtx = fAOD->GetPrimaryVertex();
3532 Int_t nTracksPrim = primVtx->GetNContributors();
3533 fh1VertexNContributors->Fill(nTracksPrim);
3536 if (fDebug > 1) Printf("%s:%d primary vertex selection: %d", (char*)__FILE__,__LINE__,nTracksPrim);
3538 if (fDebug > 1) Printf("%s:%d primary vertex selection: event REJECTED...",(char*)__FILE__,__LINE__);
3539 fh1EvtSelection->Fill(3.);
3540 PostData(1, fCommonHistList);
3544 fh1VertexZ->Fill(primVtx->GetZ());
3546 if(TMath::Abs(primVtx->GetZ())>fMaxVertexZ){
3547 if (fDebug > 1) Printf("%s:%d primary vertex z = %f: event REJECTED...",(char*)__FILE__,__LINE__,primVtx->GetZ());
3548 fh1EvtSelection->Fill(4.);
3549 PostData(1, fCommonHistList);
3553 TString primVtxName(primVtx->GetName());
3555 if(primVtxName.CompareTo("TPCVertex",TString::kIgnoreCase) == 1){
3556 if (fDebug > 1) Printf("%s:%d primary vertex selection: TPC vertex, event REJECTED...",(char*)__FILE__,__LINE__);
3557 fh1EvtSelection->Fill(5.);
3558 PostData(1, fCommonHistList);
3562 if (fDebug > 1) Printf("%s:%d event ACCEPTED ...",(char*)__FILE__,__LINE__);
3563 fh1EvtSelection->Fill(0.);
3564 fh1EvtCent->Fill(centPercent);
3567 //___ get MC information __________________________________________________________________
3569 Double_t ptHard = 0.;
3570 Double_t nTrials = 1; // trials for MC trigger weight for real data
3573 AliGenEventHeader* genHeader = fMCEvent->GenEventHeader();
3577 AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
3578 AliGenHijingEventHeader* hijingGenHeader = 0x0;
3580 if(pythiaGenHeader){
3581 if(fDebug>3) Printf("%s:%d pythiaGenHeader found", (char*)__FILE__,__LINE__);
3582 nTrials = pythiaGenHeader->Trials();
3583 ptHard = pythiaGenHeader->GetPtHard();
3585 fh1PtHard->Fill(ptHard);
3586 fh1PtHardTrials->Fill(ptHard,nTrials);
3589 } else { // no pythia, hijing?
3591 if(fDebug>3) Printf("%s:%d no pythiaGenHeader found", (char*)__FILE__,__LINE__);
3593 hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader);
3594 if(!hijingGenHeader){
3595 Printf("%s:%d no pythiaGenHeader or hjingGenHeader found", (char*)__FILE__,__LINE__);
3597 if(fDebug>3) Printf("%s:%d hijingGenHeader found", (char*)__FILE__,__LINE__);
3601 fh1Trials->Fill("#sum{ntrials}",fAvgTrials);
3606 //___ fetch jets __________________________________________________________________________
3608 Int_t nJ = GetListOfJets(fJetsRec, kJetsRec);
3610 if(nJ>=0) nRecJets = fJetsRec->GetEntries();
3611 if(fDebug>2)Printf("%s:%d Selected Rec jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
3612 if(nJ != nRecJets) Printf("%s:%d Mismatch Selected Rec Jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
3614 Int_t nJCuts = GetListOfJets(fJetsRecCuts, kJetsRecAcceptance);
3615 Int_t nRecJetsCuts = 0;
3616 if(nJCuts>=0) nRecJetsCuts = fJetsRecCuts->GetEntries();
3617 if(fDebug>2)Printf("%s:%d Selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3618 if(nRecJetsCuts != nJCuts) Printf("%s:%d Mismatch selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3619 fh1nRecJetsCuts->Fill(nRecJetsCuts);
3621 if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
3623 Int_t nJGen = GetListOfJets(fJetsGen, fJetTypeGen);
3625 if(nJGen>=0) nGenJets = fJetsGen->GetEntries();
3626 if(fDebug>2)Printf("%s:%d Selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
3628 if(nJGen != nGenJets) Printf("%s:%d Mismatch selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
3629 fh1nGenJets->Fill(nGenJets);
3632 if(fJetTypeRecEff==kJetsKine || fJetTypeRecEff == kJetsKineAcceptance) fJetsRecEff->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
3633 Int_t nJRecEff = GetListOfJets(fJetsRecEff, fJetTypeRecEff);
3634 Int_t nRecEffJets = 0;
3635 if(nJRecEff>=0) nRecEffJets = fJetsRecEff->GetEntries();
3636 if(fDebug>2)Printf("%s:%d Selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
3637 if(nJRecEff != nRecEffJets) Printf("%s:%d Mismatch selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
3638 fh1nRecEffJets->Fill(nRecEffJets);
3641 Int_t nEmbeddedJets = 0;
3642 TArrayI iEmbeddedMatchIndex;
3643 TArrayF fEmbeddedPtFraction;
3646 if(fBranchEmbeddedJets.Length()){
3647 Int_t nJEmbedded = GetListOfJets(fJetsEmbedded, kJetsEmbedded);
3648 if(nJEmbedded>=0) nEmbeddedJets = fJetsEmbedded->GetEntries();
3649 if(fDebug>2)Printf("%s:%d Selected Embedded jets: %d %d",(char*)__FILE__,__LINE__,nJEmbedded,nEmbeddedJets);
3650 if(nJEmbedded != nEmbeddedJets) Printf("%s:%d Mismatch Selected Embedded Jets: %d %d",(char*)__FILE__,__LINE__,nJEmbedded,nEmbeddedJets);
3651 fh1nEmbeddedJets->Fill(nEmbeddedJets);
3653 Float_t maxDist = 0.3;
3655 iEmbeddedMatchIndex.Set(nEmbeddedJets);
3656 fEmbeddedPtFraction.Set(nEmbeddedJets);
3658 iEmbeddedMatchIndex.Reset(-1);
3659 fEmbeddedPtFraction.Reset(0);
3661 AliAnalysisHelperJetTasks::GetJetMatching(fJetsEmbedded, nEmbeddedJets,
3662 fJetsRecCuts, nRecJetsCuts,
3663 iEmbeddedMatchIndex, fEmbeddedPtFraction,
3668 //____ fetch background jets ___________________________________________________
3670 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
3671 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
3672 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
3674 Int_t nBJ = GetListOfBckgJets(fBckgJetsRec, kJetsRec);
3675 Int_t nRecBckgJets = 0;
3676 if(nBJ>=0) nRecBckgJets = fBckgJetsRec->GetEntries();
3677 if(fDebug>2)Printf("%s:%d Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
3678 if(nBJ != nRecBckgJets) Printf("%s:%d Mismatch Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
3680 Int_t nBJCuts = GetListOfBckgJets(fBckgJetsRecCuts, kJetsRecAcceptance);
3681 Int_t nRecBckgJetsCuts = 0;
3682 if(nBJCuts>=0) nRecBckgJetsCuts = fBckgJetsRecCuts->GetEntries();
3683 if(fDebug>2)Printf("%s:%d Selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3684 if(nRecBckgJetsCuts != nBJCuts) Printf("%s:%d Mismatch selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nBJCuts,nRecBckgJetsCuts);
3685 fh1nRecBckgJetsCuts->Fill(nRecBckgJetsCuts);
3687 if(0){ // protection OB - not yet implemented
3688 if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fBckgJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
3689 Int_t nBJGen = GetListOfBckgJets(fBckgJetsGen, fJetTypeGen);
3690 Int_t nGenBckgJets = 0;
3691 if(nBJGen>=0) nGenBckgJets = fBckgJetsGen->GetEntries();
3692 if(fDebug>2)Printf("%s:%d Selected Gen background jets: %d %d",(char*)__FILE__,__LINE__,nBJGen,nGenBckgJets);
3693 if(nBJGen != nGenBckgJets) Printf("%s:%d Mismatch selected Gen background jets: %d %d",(char*)__FILE__,__LINE__,nBJGen,nGenBckgJets);
3694 fh1nGenBckgJets->Fill(nGenBckgJets);
3699 //____ fetch particles __________________________________________________________
3702 if(fUseExtraTracks == 1) nT = GetListOfTracks(fTracksRec, kTrackAODExtra);
3703 else if(fUseExtraTracks == -1) nT = GetListOfTracks(fTracksRec, kTrackAODExtraonly);
3704 else nT = GetListOfTracks(fTracksRec, kTrackAOD);
3707 if(nT>=0) nRecPart = fTracksRec->GetEntries();
3708 if(fDebug>2)Printf("%s:%d Selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
3709 if(nRecPart != nT) Printf("%s:%d Mismatch selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
3713 if(fUseExtraTracks == 1) nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODExtraCuts);
3714 else if(fUseExtraTracks == -1) nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODExtraonlyCuts);
3715 else nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODCuts);
3717 Int_t nRecPartCuts = 0;
3718 if(nTCuts>=0) nRecPartCuts = fTracksRecCuts->GetEntries();
3719 if(fDebug>2)Printf("%s:%d Selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
3720 if(nRecPartCuts != nTCuts) Printf("%s:%d Mismatch selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
3721 fh1EvtMult->Fill(nRecPartCuts);
3725 Int_t nTGen = GetListOfTracks(fTracksGen,fTrackTypeGen);
3727 if(nTGen>=0) nGenPart = fTracksGen->GetEntries();
3728 if(fDebug>2)Printf("%s:%d Selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
3729 if(nGenPart != nTGen) Printf("%s:%d Mismatch selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
3732 //____ analysis, fill histos ___________________________________________________
3737 for(Int_t it=0; it<nRecPart; ++it){
3738 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRec->At(it));
3739 if(part)fQATrackHistosRec->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
3741 for(Int_t it=0; it<nRecPartCuts; ++it){
3742 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRecCuts->At(it));
3743 if(part)fQATrackHistosRecCuts->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt() );
3745 for(Int_t it=0; it<nGenPart; ++it){
3746 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksGen->At(it));
3747 if(part)fQATrackHistosGen->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
3750 // fill DCA to prim vertex
3751 for(Int_t it=0; it<nRecPartCuts; ++it){
3752 AliAODTrack *aodtr = dynamic_cast<AliAODTrack*>(fTracksRecCuts->At(it));
3754 if(!aodtr) continue;
3755 if(!primVtx) continue;
3757 Double_t bfield = fAOD->GetMagneticField();
3761 AliAODTrack tmp(*aodtr);
3762 tmp.PropagateToDCA(primVtx, bfield, 5., dz, cov);
3764 Double_t dcaXY = dz[0];
3765 Double_t dcaZ = dz[1];
3767 fh2TrackPtVsDCAXY->Fill(dcaXY,tmp.Pt());
3768 fh2TrackPtVsDCAZ->Fill(dcaZ,tmp.Pt());
3775 for(Int_t ij=0; ij<nRecJets; ++ij){
3776 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRec->At(ij));
3777 if(jet)fQAJetHistosRec->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3782 if(fQAMode || fFFMode || fIJMode || fPhiCorrMode){
3783 for(Int_t ij=0; ij<nRecJetsCuts; ++ij){
3785 AliAODJet* jet = (AliAODJet*)(fJetsRecCuts->At(ij));
3786 if(fQAMode&2) fQAJetHistosRecCuts->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3788 if(ij==0){ // leading jet
3790 if(fQAMode&2) fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );
3793 Double_t ptFractionEmbedded = 0;
3794 AliAODJet* embeddedJet = 0;
3796 if(fBranchEmbeddedJets.Length()){ // find embedded jet
3798 Int_t indexEmbedded = -1;
3799 for(Int_t i=0; i<nEmbeddedJets; i++){
3800 if(iEmbeddedMatchIndex[i] == ij){
3802 ptFractionEmbedded = fEmbeddedPtFraction[i];
3806 fh1IndexEmbedded->Fill(indexEmbedded);
3807 fh1FractionPtEmbedded->Fill(ptFractionEmbedded);
3809 if(indexEmbedded>-1){
3811 embeddedJet = dynamic_cast<AliAODJet*>(fJetsEmbedded->At(indexEmbedded));
3812 if(!embeddedJet) continue;
3814 Double_t deltaPt = jet->Pt() - embeddedJet->Pt();
3815 Double_t deltaR = jet->DeltaR((AliVParticle*) (embeddedJet));
3817 fh2DeltaPtVsJetPtEmbedded->Fill(embeddedJet->Pt(),deltaPt);
3818 fh2DeltaPtVsRecJetPtEmbedded->Fill(jet->Pt(),deltaPt);
3819 fh1DeltaREmbedded->Fill(deltaR);
3823 // get tracks in jet
3824 TList* jettracklist = new TList();
3825 Double_t sumPt = 0.;
3826 Bool_t isBadJet = kFALSE;
3827 Float_t leadTrackPt = 0.;
3828 TLorentzVector* leadTrackV = new TLorentzVector();
3831 if(GetFFRadius()<=0){
3832 GetJetTracksTrackrefs(jettracklist, jet, GetFFMaxTrackPt(), isBadJet);
3834 if(fUseEmbeddedJetAxis){
3835 if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
3837 else GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
3840 if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;
3842 if(isBadJet) continue;
3844 if(ptFractionEmbedded>=fCutFractionPtEmbedded){ // if no embedding: ptFraction = cutFraction = 0
3846 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
3848 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
3849 if(!trackVP)continue;
3850 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3852 Float_t jetPt = jet->Pt();
3853 if(fUseEmbeddedJetPt){
3854 if(embeddedJet) jetPt = embeddedJet->Pt();
3857 Float_t trackPt = trackV->Pt();
3860 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3862 if(fFFMode) fFFHistosRecCuts->FillFF( trackPt, jetPt, incrementJetPt);
3863 if(fIJMode) fIJHistosRecCuts->FillIntraJet( trackV, jet->MomentumVector() );
3865 if(it==0){ // leading track
3866 leadTrackPt = trackPt;
3867 leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3869 if(fFFMode) fFFHistosRecLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE);
3870 if(fIJMode) fIJHistosRecLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
3872 if(fFFMode) fFFHistosRecLeading->FillFF( trackPt, leadTrackPt , incrementJetPt);
3873 if(fIJMode) fIJHistosRecLeading->FillIntraJet( trackV, leadTrackV );
3878 // ff and ij for background study
3880 if(fBckgType[0]!=-1)
3881 FillBckgHistos(fBckgType[0], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3882 fFFBckgHisto0RecCuts, fFFBckgHisto0RecLeading,
3883 fIJBckgHisto0RecCuts, fIJBckgHisto0RecLeading,
3884 fQABckgHisto0RecCuts);
3885 if(fBckgType[1]!=-1)
3886 FillBckgHistos(fBckgType[1], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3887 fFFBckgHisto1RecCuts, fFFBckgHisto1RecLeading,
3888 fIJBckgHisto1RecCuts, fIJBckgHisto1RecLeading,
3889 fQABckgHisto1RecCuts);
3890 if(fBckgType[2]!=-1)
3891 FillBckgHistos(fBckgType[2], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3892 fFFBckgHisto2RecCuts, fFFBckgHisto2RecLeading,
3893 fIJBckgHisto2RecCuts, fIJBckgHisto2RecLeading,
3894 fQABckgHisto2RecCuts);
3895 if(fBckgType[3]!=-1)
3896 FillBckgHistos(fBckgType[3], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3897 fFFBckgHisto3RecCuts, fFFBckgHisto3RecLeading,
3898 fIJBckgHisto3RecCuts, fIJBckgHisto3RecLeading,
3899 fQABckgHisto3RecCuts);
3900 if(fBckgType[4]!=-1)
3901 FillBckgHistos(fBckgType[4], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3902 fFFBckgHisto4RecCuts, fFFBckgHisto4RecLeading,
3903 fIJBckgHisto4RecCuts, fIJBckgHisto4RecLeading,
3904 fQABckgHisto4RecCuts);
3905 } // end if(fBckgMode)
3910 for(Int_t it=0; it<nRecPartCuts; ++it){
3911 AliVParticle *part = (AliVParticle*)(fTracksRecCuts->At(it));
3913 Float_t partEta = part->Eta();
3914 Float_t partPhi = part->Phi();
3915 Float_t partPt = part->Pt();
3917 fPhiCorrHistosJetArea->FillTrackQA( partEta,
3918 TVector2::Phi_mpi_pi( jet->Phi() - partPhi ),
3922 fPhiCorrHistosTransverseArea->FillTrackQA( partEta,
3923 TVector2::Phi_mpi_pi( jet->Phi() - partPhi + TMath::Pi()/2),
3927 fPhiCorrHistosAwayArea->FillTrackQA( partEta,
3928 TVector2::Phi_mpi_pi( jet->Phi() - partPhi + TMath::Pi()),
3932 } // end: phi-correlation
3935 delete jettracklist;
3937 } // end: cut embedded ratio
3938 } // end: leading jet
3939 } // end: rec. jets after cuts
3942 for(Int_t ij=0; ij<nGenJets; ++ij){
3944 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));
3946 if(fQAMode&2) fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3948 if(ij==0){ // leading jet
3950 if(fQAMode&2) fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3952 TList* jettracklist = new TList();
3953 Double_t sumPt = 0.;
3954 Bool_t isBadJet = kFALSE;
3955 Float_t leadTrackPt = 0.;
3956 TLorentzVector* leadTrackV = new TLorentzVector();
3958 if(GetFFRadius()<=0){
3959 GetJetTracksTrackrefs(jettracklist, jet, GetFFMaxTrackPt(), isBadJet);
3961 GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
3964 if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;;
3965 if(isBadJet) continue;
3967 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
3969 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
3970 if(!trackVP)continue;
3971 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3973 Float_t jetPt = jet->Pt();
3974 Float_t trackPt = trackV->Pt();
3976 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3978 if(fFFMode) fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt );
3979 if(fIJMode) fIJHistosGen->FillIntraJet( trackV, jet->MomentumVector() );
3981 if(it==0){ // leading track
3982 leadTrackPt = trackPt;
3983 leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3985 if(fFFMode) fFFHistosGenLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE );
3986 if(fIJMode) fIJHistosGenLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
3988 if(fFFMode) fFFHistosGenLeading->FillFF( trackPt, leadTrackPt, incrementJetPt );
3989 if(fIJMode) fIJHistosGenLeading->FillIntraJet( trackV, leadTrackV );
3995 delete jettracklist;
3998 } // end: QA, FF and intra-jet
4000 //_______ DiJet part _____________________________________________________
4002 if (nRecJetsCuts > 1)
4004 AliAODJet* jet1 = (AliAODJet*)(fJetsRecCuts->At(0));
4005 AliAODJet* jet2 = (AliAODJet*)(fJetsRecCuts->At(1));
4007 // DiJet deltaphi calculation
4008 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
4009 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
4010 Double_t deltaPhi = TMath::Abs(phi1-phi2);
4011 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
4013 // DiJet CDF cut calculation
4014 Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
4015 Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
4016 Double_t sumEt = et1 + et2;
4017 Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
4018 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
4020 // DiJet events selection
4021 Bool_t positionCut = 0;
4022 Bool_t positionEnergyCut = 0;
4026 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
4027 // Position-Energy cut :
4028 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
4030 if (ratio < fDiJetCDFCut) cdfCut = 1;
4034 if (fDiJetCut == 1 && positionCut == 1) go = 1;
4035 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
4036 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
4040 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
4041 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
4042 Double_t inbal = (jet1->Pt()-jet2->Pt())/(jet1->Pt()+jet2->Pt());
4043 Double_t meanEt = (Double_t)((et1+et2)/2.);
4044 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
4046 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
4050 if(fDJMode&2) fQADiJetHistosRecCuts->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, inbal, jetBin);
4053 TList* jettracklist1 = new TList();
4054 Double_t sumPt1 = 0.;
4055 Bool_t isBadJet1 = kFALSE;
4056 Float_t leadTrackPt1 = 0;
4059 TList* jettracklist2 = new TList();
4060 Double_t sumPt2 = 0.;
4061 Bool_t isBadJet2 = kFALSE;
4062 Float_t leadTrackPt2 = 0;
4064 if(GetFFRadius()<=0)
4066 GetJetTracksTrackrefs(jettracklist1, jet1, GetFFMaxTrackPt(), isBadJet1);
4067 GetJetTracksTrackrefs(jettracklist2, jet2, GetFFMaxTrackPt(), isBadJet2);
4071 GetJetTracksPointing(fTracksRecCuts, jettracklist1, jet1, GetFFRadius(), sumPt1, GetFFMaxTrackPt(), isBadJet1);
4072 GetJetTracksPointing(fTracksRecCuts, jettracklist2, jet2, GetFFRadius(), sumPt2, GetFFMaxTrackPt(), isBadJet2);
4076 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet1 = kTRUE;
4077 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet2 = kTRUE;
4079 if(!(isBadJet1 || isBadJet2)){ // good jets
4081 Int_t nTracks = jettracklist1->GetSize();
4082 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
4084 for(Int_t it=0; it<nTracks; ++it)
4086 if (it < jettracklist1->GetSize())
4088 AliVParticle *vp = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)));
4089 Float_t trackPt1 = (vp?vp->Pt():0);
4090 Float_t jetPt1 = jet1->Pt();
4092 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4094 fFFDiJetHistosRecCuts->FillDiJetFF(1, trackPt1, jetPt1, jetBin, incrementJetPt);
4095 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt1, jetPt1, jetBin, incrementJetPt);
4099 leadTrackPt1 = trackPt1;
4101 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(1, leadTrackPt1, jetPt1, jetBin, kTRUE);
4102 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt1, jetPt1, jetBin, kTRUE);
4105 fFFDiJetHistosRecLeading->FillDiJetFF(1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4106 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4109 if (it < jettracklist2->GetSize())
4111 Float_t trackPt2 = ((AliVParticle*)(jettracklist2->At(it)))->Pt();
4112 Float_t jetPt2 = jet2->Pt();
4114 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4116 fFFDiJetHistosRecCuts->FillDiJetFF(2, trackPt2, jetPt2, jetBin, incrementJetPt);
4117 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt2, jetPt2, jetBin, incrementJetPt);
4121 leadTrackPt2 = trackPt2;
4123 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(2, leadTrackPt2, jetPt2, jetBin, kTRUE);
4124 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt2, jetPt2, jetBin, kTRUE);
4127 fFFDiJetHistosRecLeading->FillDiJetFF(2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4128 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4130 } // End loop on tracks
4133 delete jettracklist1;
4134 delete jettracklist2;
4136 } // End if(jetBin > 0)
4137 else { Printf("Jet bins for di-jet studies not set !");}
4139 } // End if(nRecJets > 1)
4143 AliAODJet* jet1 = dynamic_cast<AliAODJet*>(fJetsGen->At(0));
4144 AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsGen->At(1));
4147 Double_t deltaPhi = 0;
4148 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
4149 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
4150 deltaPhi = TMath::Abs(phi1-phi2);
4151 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
4153 Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
4154 Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
4155 Double_t sumEt = et1 + et2;
4156 Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
4157 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
4159 // DiJet events selection
4160 Bool_t positionCut = 0;
4161 Bool_t positionEnergyCut = 0;
4165 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
4166 // Position-Energy cut :
4167 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
4169 if (ratio < fDiJetCDFCut) cdfCut = 1;
4173 if (fDiJetCut == 1 && positionCut == 1) go = 1;
4174 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
4175 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
4179 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
4180 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
4181 Double_t inbal = (jet1->Pt()-jet2->Pt())/(jet1->Pt()+jet2->Pt());
4182 Double_t meanEt = (Double_t)((et1+et2)/2.);
4183 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
4185 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
4189 if(fDJMode&2) fQADiJetHistosGen->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, inbal, jetBin);
4192 TList* jettracklist1 = new TList();
4193 Double_t sumPt1 = 0.;
4194 Bool_t isBadJet1 = kFALSE;
4195 Float_t leadTrackPt1 = 0.;
4197 TList* jettracklist2 = new TList();
4198 Double_t sumPt2 = 0.;
4199 Bool_t isBadJet2 = kFALSE;
4200 Float_t leadTrackPt2 = 0.;
4202 if(GetFFRadius()<=0)
4204 GetJetTracksTrackrefs(jettracklist1, jet1, GetFFMaxTrackPt(), isBadJet1);
4205 GetJetTracksTrackrefs(jettracklist2, jet2, GetFFMaxTrackPt(), isBadJet2);
4209 GetJetTracksPointing(fTracksGen, jettracklist1, jet1, GetFFRadius(), sumPt1, GetFFMaxTrackPt(), isBadJet1);
4210 GetJetTracksPointing(fTracksGen, jettracklist2, jet2, GetFFRadius(), sumPt2, GetFFMaxTrackPt(), isBadJet2);
4214 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet1 = kTRUE;
4215 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet2 = kTRUE;
4217 if(!(isBadJet1 || isBadJet2)){ // good jets
4219 Int_t nTracks = jettracklist1->GetSize();
4220 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
4222 for(Int_t it=0; it<nTracks; ++it)
4224 if (it < jettracklist1->GetSize())
4226 Float_t trackPt1 = ((AliVParticle*)jettracklist1->At(it))->Pt();
4227 Float_t jetPt1 = jet1->Pt();
4229 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4231 fFFDiJetHistosGen->FillDiJetFF( 1, trackPt1, jetPt1, jetBin, incrementJetPt);
4232 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt1, jetPt1, jetBin, incrementJetPt);
4236 leadTrackPt1 = trackPt1;
4238 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 1, leadTrackPt1, jetPt1, jetBin, kTRUE);
4239 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt1, jetPt1, jetBin, kTRUE);
4242 fFFDiJetHistosGenLeading->FillDiJetFF( 1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4243 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4246 if (it < jettracklist2->GetSize())
4248 Float_t trackPt2 = ((AliVParticle*)jettracklist2->At(it))->Pt();
4249 Float_t jetPt2 = jet2->Pt();
4251 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4253 fFFDiJetHistosGen->FillDiJetFF( 2, trackPt2, jetPt2, jetBin, incrementJetPt);
4254 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt2, jetPt2, jetBin, incrementJetPt);
4258 leadTrackPt2 = trackPt2;
4260 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 2, leadTrackPt2, jetPt2, jetBin, kTRUE);
4261 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt2, jetPt2, jetBin, kTRUE);
4264 fFFDiJetHistosGenLeading->FillDiJetFF( 2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4265 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4267 } // End loop on tracks
4270 delete jettracklist1;
4271 delete jettracklist2;
4273 } // End if(jetBin > 0)
4274 else { Printf("Jet bins for di-jet studies not set !");}
4276 }// end if jet1 and jet2
4277 } // End if(nGenJets > 1)
4280 // ____ efficiency _______________________________
4282 if(fEffMode && (fJetTypeRecEff != kJetsUndef)){
4284 // arrays holding for each generated particle the reconstructed AOD track index & isPrimary flag, are initialized in AssociateGenRec(...) function
4288 // array holding for each reconstructed AOD track generated particle index, initialized in AssociateGenRec(...) function
4291 // ... and another set for secondaries (secondary MC tracks are stored in a different list)
4292 TArrayI indexAODTrSec;
4294 TArrayI indexMCTrSec;
4296 Int_t nTracksAODMCCharged = GetListOfTracks(fTracksAODMCCharged, kTrackAODMCCharged);
4297 if(fDebug>2)Printf("%s:%d selected AODMC tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCCharged);
4299 Int_t nTracksAODMCChargedSec = GetListOfTracks(fTracksAODMCChargedSec, kTrackAODMCChargedSec);
4300 if(fDebug>2)Printf("%s:%d selected AODMC secondary tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCChargedSec);
4302 Int_t nTracksRecQualityCuts = GetListOfTracks(fTracksRecQualityCuts, kTrackAODQualityCuts);
4303 if(fDebug>2)Printf("%s:%d selected rec tracks quality after cuts, full acceptance/pt : %d ",(char*)__FILE__,__LINE__,nTracksRecQualityCuts);
4305 // associate gen and rec tracks, store indices in TArrays
4306 AssociateGenRec(fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,indexMCTr,isGenPrim,fh2PtRecVsGenPrim);
4307 AssociateGenRec(fTracksAODMCChargedSec,fTracksRecQualityCuts,indexAODTrSec,indexMCTrSec,isGenSec,fh2PtRecVsGenSec);
4310 if(fQAMode&1) FillSingleTrackHistosRecGen(fQATrackHistosRecEffGen,fQATrackHistosRecEffRec,fTracksAODMCCharged,indexAODTr,isGenPrim);
4311 if(fQAMode&1) FillSingleTrackResponse(fhnResponseSinglePt,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim);
4314 if(fQAMode&1) FillSingleTrackHistosRecGen(0x0,fQATrackHistosSecRec,fTracksAODMCChargedSec,indexAODTrSec,isGenSec);
4316 // high-pt occupancy effect
4317 FillTwoTrackHistosRecGen(fTracksAODMCCharged, /*fTracksRecQualityCuts,indexAODTr,*/ isGenPrim);
4321 Double_t sumPtGenLeadingJetRecEff = 0;
4322 Double_t sumPtGenLeadingJetSec = 0;
4323 Double_t sumPtRecLeadingJetRecEff = 0;
4325 for(Int_t ij=0; ij<nRecEffJets; ++ij){
4327 AliAODJet* jet = (AliAODJet*)(fJetsRecEff->At(ij));
4328 Bool_t isBadJetGenPrim = kFALSE;
4329 Bool_t isBadJetGenSec = kFALSE;
4330 Bool_t isBadJetRec = kFALSE;
4333 if(ij==0){ // leading jet
4335 // for efficiency: gen tracks from pointing with gen/rec jet
4336 TList* jettracklistGenPrim = new TList();
4337 GetJetTracksPointing(fTracksAODMCCharged, jettracklistGenPrim, jet, GetFFRadius(), sumPtGenLeadingJetRecEff, GetFFMaxTrackPt(), isBadJetGenPrim);
4339 TList* jettracklistGenSec = new TList();
4340 GetJetTracksPointing(fTracksAODMCChargedSec, jettracklistGenSec, jet, GetFFRadius(), sumPtGenLeadingJetSec, GetFFMaxTrackPt(), isBadJetGenSec);
4342 // bin efficiency in jet pt bins using rec tracks
4343 TList* jettracklistRec = new TList();
4344 GetJetTracksPointing(fTracksRecCuts,jettracklistRec, jet, GetFFRadius(), sumPtRecLeadingJetRecEff, GetFFMaxTrackPt(), isBadJetRec);
4346 Double_t jetEta = jet->Eta();
4347 Double_t jetPhi = TVector2::Phi_0_2pi(jet->Phi());
4349 if(GetFFMinNTracks()>0 && jettracklistGenPrim->GetSize()<=GetFFMinNTracks()) isBadJetGenPrim = kTRUE;
4350 if(GetFFMinNTracks()>0 && jettracklistGenSec->GetSize()<=GetFFMinNTracks()) isBadJetGenSec = kTRUE;
4351 if(GetFFMinNTracks()>0 && jettracklistRec->GetSize()<=GetFFMinNTracks()) isBadJetRec = kTRUE;
4353 if(isBadJetRec) continue;
4355 if(fQAMode&2) fQAJetHistosRecEffLeading->FillJetQA( jetEta, jetPhi, sumPtGenLeadingJetRecEff );
4357 if(fFFMode) FillJetTrackHistosRecGen(fFFHistosRecEffGen,fFFHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4358 jettracklistGenPrim,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
4360 if(fFFMode) FillJetTrackResponse(fhnResponseJetTrackPt,fhnResponseJetZ,fhnResponseJetXi,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4361 jettracklistGenPrim,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim,fUseResponseRecJetPtBins);
4363 // secondaries: use jet pt from primaries
4364 if(fFFMode) FillJetTrackHistosRecGen(0x0,fFFHistosSecRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4365 jettracklistGenSec,fTracksAODMCChargedSec,indexAODTrSec,isGenSec,fUseRecEffRecJetPtBins);
4367 delete jettracklistGenPrim;
4368 delete jettracklistGenSec;
4369 delete jettracklistRec;
4374 // bckgr eff: complementary cones
4378 for(Int_t ij=0; ij<nRecEffJets; ++ij){
4380 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecEff->At(ij));
4382 if(ij==0){ // leading jet
4384 TList* perpjettracklistGen = new TList();
4385 Double_t sumPtGen = 0.;
4387 GetTracksTiltedwrpJetAxis(TMath::Pi()/2.,fTracksGen, perpjettracklistGen, jet, GetFFRadius() , sumPtGen); // for efficiency: gen tracks perp to gen/rec jet
4389 // here could be your histos !!!
4390 // FillJetTrackRecEffHisto(fFFBckgrPerpHistosRecEffGen,fFFBckgrPerpHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,perpjettracklistGen,
4391 // fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
4393 delete perpjettracklistGen;
4398 // bgr eff: outside N leading jets
4404 TList* outjettracklistGen = new TList();
4405 Double_t sumPtGen = 0.;
4407 GetTracksOutOfNJets(nCases, fTracksGen, outjettracklistGen, fJetsRecEff, sumPtGen); // for efficiency: gen tracks outide n gen/rec jets
4409 // here could be your histos !!!
4410 // FillJetTrackRecEffHisto(fFFBckgrOutHistosRecEffGen,fFFBckgrOutHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4411 // outjettracklistGen,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
4413 delete outjettracklistGen;
4417 //___________________
4419 fTracksRec->Clear();
4420 fTracksRecCuts->Clear();
4421 fTracksGen->Clear();
4422 fTracksAODMCCharged->Clear();
4423 fTracksAODMCChargedSec->Clear();
4424 fTracksRecQualityCuts->Clear();
4427 fJetsRecCuts->Clear();
4429 fJetsRecEff->Clear();
4430 fJetsEmbedded->Clear();
4434 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
4435 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
4436 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
4438 fBckgJetsRec->Clear();
4439 fBckgJetsRecCuts->Clear();
4440 fBckgJetsGen->Clear();
4445 PostData(1, fCommonHistList);
4448 //________________________________________________________________________________________
4449 Double_t AliAnalysisTaskFragmentationFunction::InvMass(const AliAODJet* jet1, const AliAODJet* jet2)
4451 // cald DiJet inv mass
4453 Double_t invMass = 0.;
4454 invMass = TMath::Sqrt(pow(jet1->E()+jet2->E(),2) - pow(jet1->Px()+jet2->Px(),2) -
4455 pow(jet1->Py()+jet2->Py(),2) - pow(jet1->Pz()+jet2->Pz(),2));
4461 //________________________________________________________________________________________
4462 Double_t AliAnalysisTaskFragmentationFunction::GetDiJetBin(Double_t invMass, Double_t leadingJetPt, Double_t EtMean, Int_t kindBins)
4464 // calc DiJet bin according to kindBins parameter
4466 Double_t jetBinOk = 0.;
4467 Double_t jetBin = 0.;
4469 Float_t stepInvMass = (fDiJetJetInvMassMax - fDiJetJetInvMassMin)/fDiJetNBinsJetInvMass;
4470 Float_t stepPt = (fDiJetJetPtMax - fDiJetJetPtMin)/fDiJetNBinsJetPt;
4474 for(Int_t i=0; i<fDiJetNBinsJetInvMass; ++i)
4476 jetBin = fDiJetJetInvMassMin + i*stepInvMass + stepInvMass/2.;
4477 if(((fDiJetJetInvMassMin+i*stepInvMass) <= invMass) &&
4478 (fDiJetJetInvMassMin + (i+1)*stepInvMass) > invMass) {jetBinOk = jetBin; break;}
4479 else jetBinOk = -1.;
4482 else if (kindBins == 3)
4484 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
4486 jetBin = fDiJetJetPtMin + i*stepPt + stepPt/2.;
4487 if(((fDiJetJetPtMin+i*stepPt) <= EtMean) &&
4488 (fDiJetJetPtMin + (i+1)*stepPt) > EtMean) {jetBinOk = jetBin; break;}
4489 else jetBinOk = -1.;
4492 else if (kindBins == 2)
4494 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
4496 jetBin = fDiJetJetPtMin + i*stepPt + stepPt/2.;
4497 if(((fDiJetJetPtMin+i*stepPt) <= leadingJetPt) &&
4498 (fDiJetJetPtMin + (i+1)*stepPt) > leadingJetPt) {jetBinOk = jetBin; break;}
4499 else jetBinOk = -1.;
4502 else {Printf("WARNING: kindBins wrongly set ! Please make sure to call SetKindSlices() and set the kind parameter to 1, 2 or 3.\n");}
4509 //______________________________________________________________
4510 void AliAnalysisTaskFragmentationFunction::Terminate(Option_t *)
4514 if(fDebug > 1) printf("AliAnalysisTaskFragmentationFunction::Terminate() \n");
4517 //_________________________________________________________________________________
4518 Int_t AliAnalysisTaskFragmentationFunction::GetListOfTracks(TList *list, Int_t type)
4520 // fill list of tracks selected according to type
4522 if(fDebug > 2) Printf("%s:%d Selecting tracks with %d", (char*)__FILE__,__LINE__,type);
4525 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
4529 if(!fAOD) return -1;
4531 if(!fAOD->GetTracks()) return 0;
4533 if(type==kTrackUndef) return 0;
4537 if(type==kTrackAODExtraCuts || type==kTrackAODExtraonlyCuts || type==kTrackAODExtra || type==kTrackAODExtraonly){
4539 TClonesArray *aodExtraTracks = dynamic_cast<TClonesArray*>(fAOD->FindListObject("aodExtraTracks"));
4540 if(!aodExtraTracks)return iCount;
4541 for(int it =0; it<aodExtraTracks->GetEntries(); it++) {
4542 AliVParticle *track = dynamic_cast<AliVParticle*> ((*aodExtraTracks)[it]);
4543 if (!track) continue;
4545 AliAODTrack *tr = dynamic_cast<AliAODTrack*> (track);
4548 if(type==kTrackAODExtraCuts || type==kTrackAODExtraonlyCuts){
4550 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask))) continue;
4552 if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue;
4553 if(tr->Phi() < fTrackPhiMin || tr->Phi() > fTrackPhiMax) continue;
4554 if(tr->Pt() < fTrackPtCut) continue;
4562 if(type==kTrackAODCuts || type==kTrackAODQualityCuts || type==kTrackAOD || type==kTrackAODExtraCuts || type==kTrackAODExtra){
4564 // all rec. tracks, esd filter mask, eta range
4566 for(Int_t it=0; it<fAOD->GetNumberOfTracks(); ++it){
4567 AliAODTrack *tr = fAOD->GetTrack(it);
4569 if(type == kTrackAODCuts || type==kTrackAODQualityCuts || type==kTrackAODExtraCuts){
4571 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask))) continue;
4572 if(type == kTrackAODCuts){
4573 if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue;
4574 if(tr->Phi() < fTrackPhiMin || tr->Phi() > fTrackPhiMax) continue;
4575 if(tr->Pt() < fTrackPtCut) continue;
4582 else if (type==kTrackKineAll || type==kTrackKineCharged || type==kTrackKineChargedAcceptance){
4583 // kine particles, all or rather charged
4584 if(!fMCEvent) return iCount;
4586 for(Int_t it=0; it<fMCEvent->GetNumberOfTracks(); ++it){
4587 AliMCParticle* part = (AliMCParticle*) fMCEvent->GetTrack(it);
4589 if(type == kTrackKineCharged || type == kTrackKineChargedAcceptance){
4590 if(part->Charge()==0) continue;
4592 if(type == kTrackKineChargedAcceptance &&
4593 ( part->Eta() < fTrackEtaMin
4594 || part->Eta() > fTrackEtaMax
4595 || part->Phi() < fTrackPhiMin
4596 || part->Phi() > fTrackPhiMax
4597 || part->Pt() < fTrackPtCut)) continue;
4604 else if (type==kTrackAODMCCharged || type==kTrackAODMCAll || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSec) {
4605 // MC particles (from AOD), physical primaries, all or rather charged or rather charged within acceptance
4606 if(!fAOD) return -1;
4608 TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
4609 if(!tca)return iCount;
4611 for(int it=0; it<tca->GetEntriesFast(); ++it){
4612 AliAODMCParticle *part = dynamic_cast<AliAODMCParticle*>(tca->At(it));
4614 if(type != kTrackAODMCChargedSec && !part->IsPhysicalPrimary())continue;
4615 if(type == kTrackAODMCChargedSec && part->IsPhysicalPrimary())continue;
4617 if (type==kTrackAODMCCharged || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSec){
4618 if(part->Charge()==0) continue;
4619 if(type==kTrackAODMCChargedAcceptance &&
4620 ( part->Eta() > fTrackEtaMax
4621 || part->Eta() < fTrackEtaMin
4622 || part->Phi() > fTrackPhiMax
4623 || part->Phi() < fTrackPhiMin
4624 || part->Pt() < fTrackPtCut)) continue;
4636 // _______________________________________________________________________________
4637 Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t type)
4639 // fill list of jets selected according to type
4642 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
4646 if(type == kJetsRec || type == kJetsRecAcceptance){ // reconstructed jets
4648 if(fBranchRecJets.Length()==0){
4649 Printf("%s:%d no rec jet branch specified", (char*)__FILE__,__LINE__);
4650 if(fDebug>1)fAOD->Print();
4654 TClonesArray *aodRecJets = 0;
4655 if(fBranchRecJets.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchRecJets.Data()));
4656 if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchRecJets.Data()));
4657 if(fAODExtension&&!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchRecJets.Data()));
4660 if(fBranchRecJets.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchRecJets.Data());
4661 if(fDebug>1)fAOD->Print();
4665 // Reorder jet pt and fill new temporary AliAODJet objects
4668 for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){
4670 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));
4673 if( tmp->Pt() < fJetPtCut ) continue;
4674 if( type == kJetsRecAcceptance &&
4675 ( tmp->Eta() < fJetEtaMin
4676 || tmp->Eta() > fJetEtaMax
4677 || tmp->Phi() < fJetPhiMin
4678 || tmp->Phi() > fJetPhiMax )) continue;
4680 if(fBckgSubMethod && fBranchRecJets.Contains("B0") &&
4681 fBranchRecJets.Contains("KT")) {
4683 AliAODJet *tmpJet = GetAODBckgSubJet(tmp, fBckgSubMethod);
4685 if(!tmpJet) continue;
4702 else if(type == kJetsKine || type == kJetsKineAcceptance){
4708 if(fDebug>1) Printf("%s:%d no mcEvent",(char*)__FILE__,__LINE__);
4712 AliGenEventHeader* genHeader = fMCEvent->GenEventHeader();
4713 AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
4714 AliGenHijingEventHeader* hijingGenHeader = 0x0;
4716 if(!pythiaGenHeader){
4717 hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader);
4719 if(!hijingGenHeader){
4720 Printf("%s:%d no pythiaGenHeader or hijingGenHeader found", (char*)__FILE__,__LINE__);
4723 TLorentzVector mom[4];
4725 hijingGenHeader->GetJets(mom[0], mom[1], mom[2], mom[3]);
4727 for(Int_t i=0; i<2; ++i){
4728 if(!mom[i].Pt()) continue;
4729 jet[i] = new AliAODJet(mom[i]);
4731 if( type == kJetsKineAcceptance &&
4732 ( jet[i]->Eta() < fJetEtaMin
4733 || jet[i]->Eta() > fJetEtaMax
4734 || jet[i]->Phi() < fJetPhiMin
4735 || jet[i]->Phi() > fJetPhiMax )) continue;
4745 // fetch the pythia generated jets
4746 for(int ip=0; ip<pythiaGenHeader->NTriggerJets(); ++ip){
4749 AliAODJet *jet = new AliAODJet();
4750 pythiaGenHeader->TriggerJet(ip, p);
4751 jet->SetPxPyPzE(p[0], p[1], p[2], p[3]);
4753 if( type == kJetsKineAcceptance &&
4754 ( jet->Eta() < fJetEtaMin
4755 || jet->Eta() > fJetEtaMax
4756 || jet->Phi() < fJetPhiMin
4757 || jet->Phi() > fJetPhiMax )) continue;
4765 else if(type == kJetsGen || type == kJetsGenAcceptance ){
4767 if(fBranchGenJets.Length()==0){
4768 if(fDebug>1) Printf("%s:%d no gen jet branch specified", (char*)__FILE__,__LINE__);
4772 TClonesArray *aodGenJets = 0;
4773 if(fBranchGenJets.Length()) aodGenJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchGenJets.Data()));
4774 if(!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchGenJets.Data()));
4775 if(fAODExtension&&!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchGenJets.Data()));
4779 if(fBranchGenJets.Length()) Printf("%s:%d Generated jet branch %s not found",(char*)__FILE__,__LINE__,fBranchGenJets.Data());
4781 if(fDebug>1)fAOD->Print();
4787 for(Int_t ig=0; ig<aodGenJets->GetEntries(); ++ig){
4789 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodGenJets->At(ig));
4792 if( tmp->Pt() < fJetPtCut ) continue;
4793 if( type == kJetsGenAcceptance &&
4794 ( tmp->Eta() < fJetEtaMin
4795 || tmp->Eta() > fJetEtaMax
4796 || tmp->Phi() < fJetPhiMin
4797 || tmp->Phi() > fJetPhiMax )) continue;
4805 else if(type == kJetsEmbedded){ // embedded jets
4807 if(fBranchEmbeddedJets.Length()==0){
4808 Printf("%s:%d no embedded jet branch specified", (char*)__FILE__,__LINE__);
4809 if(fDebug>1)fAOD->Print();
4813 TClonesArray *aodEmbeddedJets = 0;
4814 if(fBranchEmbeddedJets.Length()) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchEmbeddedJets.Data()));
4815 if(!aodEmbeddedJets) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchEmbeddedJets.Data()));
4816 if(fAODExtension&&!aodEmbeddedJets) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchEmbeddedJets.Data()));
4818 if(!aodEmbeddedJets){
4819 if(fBranchEmbeddedJets.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchEmbeddedJets.Data());
4820 if(fDebug>1)fAOD->Print();
4824 // Reorder jet pt and fill new temporary AliAODJet objects
4825 Int_t nEmbeddedJets = 0;
4827 for(Int_t ij=0; ij<aodEmbeddedJets->GetEntries(); ++ij){
4829 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodEmbeddedJets->At(ij));
4832 if( tmp->Pt() < fJetPtCut ) continue;
4833 if( tmp->Eta() < fJetEtaMin
4834 || tmp->Eta() > fJetEtaMax
4835 || tmp->Phi() < fJetPhiMin
4836 || tmp->Phi() > fJetPhiMax ) continue;
4844 return nEmbeddedJets;
4847 if(fDebug>0)Printf("%s:%d no such type %d",(char*)__FILE__,__LINE__,type);
4852 // ___________________________________________________________________________________
4853 Int_t AliAnalysisTaskFragmentationFunction::GetListOfBckgJets(TList *list, Int_t type)
4855 // fill list of bgr clusters selected according to type
4857 if(type == kJetsRec || type == kJetsRecAcceptance){ // reconstructed jets
4859 if(fBranchRecBckgClusters.Length()==0){
4860 Printf("%s:%d no rec jet branch specified", (char*)__FILE__,__LINE__);
4861 if(fDebug>1)fAOD->Print();
4865 TClonesArray *aodRecJets = 0;
4866 if(fBranchRecBckgClusters.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchRecBckgClusters.Data()));
4867 if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchRecBckgClusters.Data()));
4868 if(fAODExtension&&!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchRecBckgClusters.Data()));
4871 if(fBranchRecBckgClusters.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchRecBckgClusters.Data());
4872 if(fDebug>1)fAOD->Print();
4876 // Reorder jet pt and fill new temporary AliAODJet objects
4879 for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){
4881 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));
4884 // if( tmp->Pt() < fJetPtCut ) continue; // no pt cut on bckg clusters !
4885 if( type == kJetsRecAcceptance &&
4886 ( tmp->Eta() < fJetEtaMin
4887 || tmp->Eta() > fJetEtaMax
4888 || tmp->Phi() < fJetPhiMin
4889 || tmp->Phi() > fJetPhiMax )) continue;
4903 // MC clusters still Under construction
4909 // _________________________________________________________________________________________________________
4910 void AliAnalysisTaskFragmentationFunction::SetProperties(THnSparse* h,const Int_t dim, const char** labels)
4912 // Set properties of THnSparse
4914 for(Int_t i=0; i<dim; i++){
4915 h->GetAxis(i)->SetTitle(labels[i]);
4916 h->GetAxis(i)->SetTitleColor(1);
4920 // __________________________________________________________________________________________
4921 void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y)
4923 //Set properties of histos (x and y title)
4927 h->GetXaxis()->SetTitleColor(1);
4928 h->GetYaxis()->SetTitleColor(1);
4931 // _________________________________________________________________________________________________________
4932 void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y, const char* z)
4934 //Set properties of histos (x,y and z title)
4939 h->GetXaxis()->SetTitleColor(1);
4940 h->GetYaxis()->SetTitleColor(1);
4941 h->GetZaxis()->SetTitleColor(1);
4944 // ________________________________________________________________________________________________________________________________________________________
4945 void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist, TList* outputlist, const AliAODJet* jet,
4946 const Double_t radius, Double_t& sumPt, const Double_t maxPt, Bool_t& isBadMaxPt)
4948 // fill list of tracks in cone around jet axis
4951 isBadMaxPt = kFALSE;
4954 jet->PxPyPz(jetMom);
4955 TVector3 jet3mom(jetMom);
4957 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
4959 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
4961 Double_t trackMom[3];
4962 track->PxPyPz(trackMom);
4963 TVector3 track3mom(trackMom);
4965 Double_t dR = jet3mom.DeltaR(track3mom);
4969 outputlist->Add(track);
4971 sumPt += track->Pt();
4973 if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE;
4974 if(maxPt>0 && track->Pt()>maxPt) std::cout<<" found bad jet, track pt "<<track->Pt()<<" max Pt "<<maxPt<<std::endl;
4981 // ___________________________________________________________________________________________
4982 void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet, const Double_t maxPt, Bool_t& isBadMaxPt)
4984 // list of jet tracks from trackrefs
4986 Int_t nTracks = jet->GetRefTracks()->GetEntriesFast();
4988 for (Int_t itrack=0; itrack<nTracks; itrack++) {
4990 AliVParticle* track = dynamic_cast<AliVParticle*>(jet->GetRefTracks()->At(itrack));
4992 AliError("expected ref track not found ");
4996 if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE;
5003 // _ ________________________________________________________________________________________________________________________________
5004 void AliAnalysisTaskFragmentationFunction::AssociateGenRec(TList* tracksAODMCCharged,TList* tracksRec, TArrayI& indexAODTr,TArrayI& indexMCTr,
5005 TArrayS& isRefGen,TH2F* fh2PtRecVsGen)
5007 // associate generated and reconstructed tracks, fill TArrays of list indices
5009 Int_t nTracksRec = tracksRec->GetSize();
5010 Int_t nTracksGen = tracksAODMCCharged->GetSize();
5011 TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
5014 if(!nTracksGen) return;
5018 indexAODTr.Set(nTracksGen);
5019 indexMCTr.Set(nTracksRec);
5020 isRefGen.Set(nTracksGen);
5022 indexAODTr.Reset(-1);
5023 indexMCTr.Reset(-1);
5026 // loop over reconstructed tracks, get generated track
5028 for(Int_t iRec=0; iRec<nTracksRec; iRec++){
5030 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5031 if(!rectrack)continue;
5032 Int_t label = TMath::Abs(rectrack->GetLabel());
5034 // find MC track in our list
5035 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tca->At(label));
5037 Int_t listIndex = -1;
5038 if(gentrack) listIndex = tracksAODMCCharged->IndexOf(gentrack);
5042 indexAODTr[listIndex] = iRec;
5043 indexMCTr[iRec] = listIndex;
5048 // define reference sample of primaries/secondaries (for reconstruction efficiency / contamination)
5050 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5052 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksAODMCCharged->At(iGen));
5053 if(!gentrack)continue;
5054 Int_t pdg = gentrack->GetPdgCode();
5056 // 211 - pi, 2212 - proton, 321 - Kaon, 11 - electron, 13 - muon
5057 if(TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 2212 || TMath::Abs(pdg) == 321 ||
5058 TMath::Abs(pdg) == 11 || TMath::Abs(pdg) == 13){
5060 isRefGen[iGen] = kTRUE;
5062 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5065 Float_t genPt = gentrack->Pt();
5066 AliAODTrack* vt = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5068 Float_t recPt = vt->Pt();
5069 fh2PtRecVsGen->Fill(genPt,recPt);
5076 // _____________________________________________________________________________________________________________________________________________
5077 void AliAnalysisTaskFragmentationFunction::FillSingleTrackHistosRecGen(AliFragFuncQATrackHistos* trackQAGen, AliFragFuncQATrackHistos* trackQARec, TList* tracksGen,
5078 const TArrayI& indexAODTr, const TArrayS& isRefGen){
5080 // fill QA for single track reconstruction efficiency
5082 Int_t nTracksGen = tracksGen->GetSize();
5084 if(!nTracksGen) return;
5086 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5088 if(isRefGen[iGen] != 1) continue; // select primaries
5090 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5091 if(!gentrack) continue;
5092 Double_t ptGen = gentrack->Pt();
5093 Double_t etaGen = gentrack->Eta();
5094 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5096 // apply same acc & pt cuts as for FF
5098 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5099 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5100 if(ptGen < fTrackPtCut) continue;
5102 if(trackQAGen) trackQAGen->FillTrackQA(etaGen, phiGen, ptGen);
5105 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5106 if(iRec>=0 && trackQARec) trackQARec->FillTrackQA(etaGen, phiGen, ptGen);
5110 // ______________________________________________________________________________________________________________________________________________________
5112 void AliAnalysisTaskFragmentationFunction::FillJetTrackHistosRecGen(TObject* histGen,TObject* histRec,Double_t jetPtGen,Double_t jetPtRec, TList* jetTrackList, const TList* tracksGen,
5113 const TArrayI& indexAODTr,const TArrayS& isRefGen, const Bool_t useRecJetPt)
5115 // fill objects for jet track reconstruction efficiency or secondaries contamination
5116 // arguments histGen/histRec can be of different type: AliFragFuncHistos*, AliFragFuncIntraJetHistos*, ...
5118 Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks
5120 if(!nTracksJet) return;
5122 Bool_t incrementJetPtGenFF = kTRUE; // needed in case we fill FFHistos
5123 Bool_t incrementJetPtRecFF = kTRUE; // needed in case we fill FFHistos
5125 for(Int_t iTr=0; iTr<nTracksJet; iTr++){
5127 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
5128 if(!gentrack)continue;
5129 // find jet track in gen tracks list
5130 Int_t iGen = tracksGen->IndexOf(gentrack);
5133 if(fDebug>0) Printf("%s:%d gen jet track not found ",(char*)__FILE__,__LINE__);
5138 if(isRefGen[iGen] != 1) continue; // select primaries
5140 Double_t ptGen = gentrack->Pt();
5141 Double_t etaGen = gentrack->Eta();
5142 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5144 // apply same acc & pt cuts as for FF
5146 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5147 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5148 if(ptGen < fTrackPtCut) continue;
5150 Double_t z = ptGen / jetPtGen;
5152 if(z>0) xi = TMath::Log(1/z);
5154 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5155 Bool_t isRec = (iRec>=0) ? kTRUE : kFALSE;
5157 if(dynamic_cast<AliFragFuncHistos*>(histGen) || dynamic_cast<AliFragFuncHistos*>(histRec)){ // histGen can be NULL for secondaries -> ||
5159 // after checking can afford normal cast
5160 AliFragFuncHistos* ffhistGen = (AliFragFuncHistos*) (histGen);
5161 AliFragFuncHistos* ffhistRec = (AliFragFuncHistos*) (histRec);
5164 if(useRecJetPt) ffhistGen->FillFF( ptGen, jetPtRec, incrementJetPtGenFF );
5165 else ffhistGen->FillFF( ptGen, jetPtGen, incrementJetPtGenFF );
5167 incrementJetPtGenFF = kFALSE;
5171 if(ffhistRec && isRec){
5173 if(useRecJetPt) ffhistRec->FillFF( ptGen, jetPtRec, incrementJetPtRecFF );
5174 else ffhistRec->FillFF( ptGen, jetPtGen, incrementJetPtRecFF );
5176 incrementJetPtRecFF = kFALSE;
5179 else if(dynamic_cast<AliFragFuncIntraJetHistos*>(histGen) && dynamic_cast<AliFragFuncIntraJetHistos*>(histRec)){
5181 // eff for IJ histos ...
5187 // _____________________________________________________________________________________________________________________________________________
5188 void AliAnalysisTaskFragmentationFunction::FillTwoTrackHistosRecGen(TList* tracksGen, /*TList* tracksRec, const TArrayI& indexAODTr, */ const TArrayS& isRefGen){
5190 Int_t nTracksGen = tracksGen->GetSize();
5192 if(!nTracksGen) return;
5194 Int_t highPtIndices[nTracksGen];
5197 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5199 if(isRefGen[iGen] != 1) continue; // select primaries
5201 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5202 if(!gentrack) continue;
5203 Double_t ptGen = gentrack->Pt();
5204 Double_t etaGen = gentrack->Eta();
5205 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5207 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5208 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5211 highPtIndices[nHighPt++] = iGen;
5216 for(Int_t nHPT = 0; nHPT<nHighPt; nHPT++){ // high pt tracks loop
5218 Int_t indexHPT = highPtIndices[nHPT];
5220 AliAODMCParticle* genHPTtrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(indexHPT));
5221 if(!genHPTtrack) continue;
5223 Double_t trackMomHPT[3];
5224 genHPTtrack->PxPyPz(trackMomHPT);
5225 TVector3 track3MomHPT(trackMomHPT);
5228 Double_t distNN = 10;
5232 for(Int_t iGen=0; iGen<nTracksGen; iGen++){ // all gen tracks loop
5234 if(isRefGen[iGen] != 1) continue; // select primaries
5236 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5237 if(!gentrack) continue;
5239 Double_t ptGen = gentrack->Pt();
5240 Double_t etaGen = gentrack->Eta();
5241 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5243 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5244 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5245 if(ptGen < fTrackPtCut) continue;
5248 Double_t gentrackMom[3];
5249 gentrack->PxPyPz(gentrackMom);
5250 TVector3 gentrack3Mom(gentrackMom);
5252 Double_t dR = gentrack3Mom.DeltaR(track3MomHPT);
5254 if(iGen != indexHPT && dR<distNN){
5263 // _____________________________________________________________________________________________________________________________________________
5264 void AliAnalysisTaskFragmentationFunction::FillSingleTrackResponse(THnSparse* hnResponse, TList* tracksGen, TList* tracksRec,
5265 const TArrayI& indexAODTr, const TArrayS& isGenPrim)
5267 // fill response matrix for single tracks
5270 Int_t nTracksGen = tracksGen->GetSize();
5272 if(!nTracksGen) return;
5274 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5276 if(isGenPrim[iGen] != 1) continue; // select primaries
5278 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5279 if(!gentrack)continue;
5280 Double_t ptGen = gentrack->Pt();
5281 Double_t etaGen = gentrack->Eta();
5282 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5284 // apply same acc & pt cuts as for FF
5285 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5286 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5287 if(ptGen < fTrackPtCut) continue;
5289 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5291 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5292 if(!rectrack)continue;
5293 Double_t ptRec = rectrack->Pt();
5295 Double_t entries[2] = {ptRec,ptGen}; // AliCorrFW convention: gen vs rec
5296 hnResponse->Fill(entries);
5298 Double_t invPtGen = 0;
5299 if(ptGen) invPtGen = 1/ptGen;
5301 Double_t invPtRec = 0;
5302 if(ptRec) invPtRec = 1/ptRec;
5304 fh2SingleInvPtRecMnGenVsPtGen->Fill(ptGen,invPtRec - invPtGen);
5310 // ______________________________________________________________________________________________________________________________________________________
5311 void AliAnalysisTaskFragmentationFunction::FillJetTrackResponse(THnSparse* hnResponsePt, THnSparse* hnResponseZ, THnSparse* hnResponseXi,
5312 Double_t jetPtGen, Double_t jetPtRec, TList* jetTrackList,
5313 const TList* tracksGen, TList* tracksRec, const TArrayI& indexAODTr, const TArrayS& isGenPrim,const Bool_t useRecJetPt)
5315 // fill response matrix for tracks in jets
5317 Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks
5319 if(!nTracksJet) return;
5321 for(Int_t iTr=0; iTr<nTracksJet; iTr++){
5323 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
5324 if(!gentrack)continue;
5325 // find jet track in gen tracks list
5326 Int_t iGen = tracksGen->IndexOf(gentrack);
5329 if(fDebug>0) Printf("%s:%d gen jet track not found ",(char*)__FILE__,__LINE__);
5333 if(isGenPrim[iGen] != 1) continue; // select primaries
5335 Double_t ptGen = gentrack->Pt();
5336 Double_t etaGen = gentrack->Eta();
5337 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5339 // apply same acc & pt cuts as for FF
5341 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5342 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5343 if(ptGen < fTrackPtCut) continue;
5345 Double_t zGen = ptGen / jetPtRec;
5347 if(zGen>0) xiGen = TMath::Log(1/zGen);
5349 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5353 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5355 Double_t ptRec = rectrack->Pt();
5357 Double_t zRec = ptRec / jetPtRec;
5359 if(zRec>0) xiRec = TMath::Log(1/zRec);
5361 Double_t jetPt = useRecJetPt ? jetPtRec : jetPtGen;
5363 Double_t entriesPt[3] = {jetPt,ptRec,ptGen}; // AliCorrFW convention: gen vs rec
5364 Double_t entriesZ[3] = {jetPt,zRec,zGen};
5365 Double_t entriesXi[3] = {jetPt,xiRec,xiGen};
5367 hnResponsePt->Fill(entriesPt);
5368 hnResponseZ->Fill(entriesZ);
5369 hnResponseXi->Fill(entriesXi);
5375 // _____________________________________________________________________________________________________________________________________________________________________
5376 void AliAnalysisTaskFragmentationFunction::GetTracksTiltedwrpJetAxis(Float_t alpha, TList* inputlist, TList* outputlist, const AliAODJet* jet, Double_t radius,Double_t& sumPt)
5378 // List of tracks in cone perpendicular to the jet azimuthal direction
5381 jet->PxPyPz(jetMom);
5383 TVector3 jet3mom(jetMom);
5384 // Rotate phi and keep eta unchanged
5385 Double_t etaTilted = jet3mom.Eta();
5386 Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha;
5387 if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi();
5389 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5392 if( fUseExtraTracksBgr != 1){
5393 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5394 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5395 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5399 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5401 Double_t trackMom[3];
5402 track->PxPyPz(trackMom);
5403 TVector3 track3mom(trackMom);
5405 Double_t deta = track3mom.Eta() - etaTilted;
5406 Double_t dphi = TMath::Abs(track3mom.Phi() - phiTilted);
5407 if (dphi > TMath::Pi()) dphi = 2. * TMath::Pi() - dphi;
5408 Double_t dR = TMath::Sqrt(deta * deta + dphi * dphi);
5411 outputlist->Add(track);
5412 sumPt += track->Pt();
5418 // ________________________________________________________________________________________________________________________________________________________
5419 void AliAnalysisTaskFragmentationFunction::GetTracksTiltedwrpJetAxisWindow(Float_t alpha, TList* inputlist, TList* outputlist, const AliAODJet* jet, Double_t radius,Double_t& sumPt,Double_t &normFactor)
5421 // List of tracks in cone perpendicular to the jet azimuthal direction
5424 jet->PxPyPz(jetMom);
5426 TVector3 jet3mom(jetMom);
5427 // Rotate phi and keep eta unchanged
5428 Double_t etaTilted = jet3mom.Eta();
5429 Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha;
5430 if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi();
5432 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++)
5436 if( fUseExtraTracksBgr != 1){
5437 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5438 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5439 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5443 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5445 Float_t trackEta = track->Eta();
5446 Float_t trackPhi = track->Phi();
5448 if( ( phiTilted-radius >= 0 ) && ( phiTilted+radius <= 2*TMath::Pi()))
5450 if((trackPhi<=phiTilted+radius) &&
5451 (trackPhi>=phiTilted-radius) &&
5452 (trackEta<=fTrackEtaMax)&&(trackEta>=fTrackEtaMin)) // 0.9 and - 0.9
5454 outputlist->Add(track);
5455 sumPt += track->Pt();
5458 else if( phiTilted-radius < 0 )
5460 if((( trackPhi < phiTilted+radius ) ||
5461 ( trackPhi > 2*TMath::Pi()-(radius-phiTilted) )) &&
5462 (( trackEta <= fTrackEtaMax ) && ( trackEta >= fTrackEtaMin )))
5464 outputlist->Add(track);
5465 sumPt += track->Pt();
5468 else if( phiTilted+radius > 2*TMath::Pi() )
5470 if((( trackPhi > phiTilted-radius ) ||
5471 ( trackPhi < phiTilted+radius-2*TMath::Pi() )) &&
5472 (( trackEta <= fTrackEtaMax ) && ( trackEta >= fTrackEtaMin )))
5474 outputlist->Add(track);
5475 sumPt += track->Pt();
5480 // Jet area - Temporarily added should be modified with the proper jet area value
5481 Float_t areaJet = CalcJetArea(etaTilted,radius);
5482 Float_t areaTilted = 2*radius*(fTrackEtaMax-fTrackEtaMin);
5484 normFactor = (Float_t) 1. / (areaJet / areaTilted);
5489 // ________________________________________________________________________________________________________________________________________________________
5490 void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJets(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt)
5492 // List of tracks outside cone around N jet axis
5493 // Particles taken randomly
5496 // Int_t nj = jetlist->GetSize();
5497 Float_t rc = GetFFRadius();
5498 Float_t rcl = GetFFBckgRadius();
5500 // Estimate jet and background areas
5501 Float_t* areaJet = new Float_t[nCases];
5502 memset(areaJet, 0, sizeof(Float_t) * nCases);
5503 Float_t* areaJetLarge = new Float_t[nCases];
5504 memset(areaJetLarge, 0, sizeof(Float_t) * nCases);
5505 Float_t areaFull = (fTrackEtaMax-fTrackEtaMin)*(fTrackPhiMax-fTrackPhiMin);
5506 Float_t areaOut = areaFull;
5508 //estimate jets and background areas
5511 TList* templist = new TList();
5512 TClonesArray *vect3Jet = new TClonesArray("TVector3",nCases);
5514 for(Int_t ij=0; ij<nCases; ++ij)
5516 // Get jet information
5517 AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
5520 jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
5521 new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
5522 Float_t etaJet = (Float_t)((TVector3*) vect3Jet->At(ij))->Eta();
5525 areaJet[ij] = CalcJetArea(etaJet,rc);
5527 // Area jet larger angle
5528 areaJetLarge[ij] = CalcJetArea(etaJet,rcl);
5531 areaOut = areaOut - areaJetLarge[ij];
5535 // List of all tracks outside jet areas
5536 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5539 if( fUseExtraTracksBgr != 1){
5540 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5541 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5542 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5546 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5548 Double_t trackMom[3];
5549 track->PxPyPz(trackMom);
5550 TVector3 track3mom(trackMom);
5552 Double_t *dR = new Double_t[nCases];
5553 for(Int_t ij=0; ij<nCases; ij++)
5554 dR[ij] = (Double_t)((TVector3*) vect3Jet->At(ij))->DeltaR(track3mom);
5556 if((nCases==1 && (dR[0]>rcl)) ||
5557 (nCases==2 && (dR[0]>rcl && dR[1]>rcl)) ||
5558 (nCases==3 && (dR[0]>rcl && dR[1]>rcl && dR[2]>rcl)))
5560 templist->Add(track);
5566 // Take tracks randomly
5567 Int_t nScaled = (Int_t) (nOut * areaJet[0] / areaOut + 0.5);
5568 TArrayI* ar = new TArrayI(nOut);
5570 for(Int_t init=0; init<nOut; init++)
5573 Int_t *randIndex = new Int_t[nScaled];
5574 for(Int_t init2=0; init2<nScaled; init2++)
5575 randIndex[init2] = -1;
5577 // Select nScaled different random numbers in nOut
5578 for(Int_t i=0; i<nScaled; i++)
5580 Int_t* tmpArr = new Int_t[nOut-i];
5581 Int_t temp = fRandom->Integer(nOut-i);
5582 for(Int_t ind = 0; ind< ar->GetSize()-1; ind++)
5584 if(ind<temp) tmpArr[ind] = (*ar)[ind];
5585 else tmpArr[ind] = (*ar)[ind+1];
5587 randIndex[i] = (*ar)[temp];
5589 ar->Set(nOut-i-1,tmpArr);
5595 for(Int_t ipart=0; ipart<nScaled; ipart++)
5597 AliVParticle* track = (AliVParticle*)(templist->At(randIndex[ipart]));
5598 outputlist->Add(track);
5599 sumPt += track->Pt();
5606 delete [] areaJetLarge;
5609 delete [] randIndex;
5613 // ________________________________________________________________________________________________________________________________________________________
5614 void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJetsStat(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt, Double_t &normFactor)
5616 // List of tracks outside cone around N jet axis
5617 // All particles taken + final scaling factor
5620 Float_t rc = GetFFRadius();
5621 Float_t rcl = GetFFBckgRadius();
5623 // Estimate jet and background areas
5624 Float_t* areaJet = new Float_t[nCases];
5625 memset(areaJet, 0, sizeof(Float_t) * nCases);
5626 Float_t* areaJetLarge = new Float_t[nCases];
5627 memset(areaJetLarge, 0, sizeof(Float_t) * nCases);
5628 Float_t areaFull = (fTrackEtaMax-fTrackEtaMin)*(fTrackPhiMax-fTrackPhiMin);
5629 Float_t areaOut = areaFull;
5631 //estimate jets and background areas
5634 TClonesArray *vect3Jet = new TClonesArray("TVector3",nCases);
5636 for(Int_t ij=0; ij<nCases; ++ij)
5638 // Get jet information
5639 AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
5642 jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
5643 new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
5644 Float_t etaJet = (Float_t)((TVector3*) vect3Jet->At(ij))->Eta();
5647 areaJet[ij] = CalcJetArea(etaJet,rc);
5649 // Area jet larger angle
5650 areaJetLarge[ij] = CalcJetArea(etaJet,rcl);
5652 // Outside jets area
5653 areaOut = areaOut - areaJetLarge[ij];
5657 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5660 if( fUseExtraTracksBgr != 1){
5661 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5662 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5663 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5667 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
5669 Double_t trackMom[3];
5670 track->PxPyPz(trackMom);
5671 TVector3 track3mom(trackMom);
5673 Double_t *dR = new Double_t[nCases];
5674 for(Int_t ij=0; ij<nCases; ij++)
5675 dR[ij] = (Double_t)((TVector3*) vect3Jet->At(ij))->DeltaR(track3mom);
5678 (nCases==1 && (dR[0]>rcl)) ||
5679 (nCases==2 && (dR[0]>rcl && dR[1]>rcl)) ||
5680 (nCases==3 && (dR[0]>rcl && dR[1]>rcl && dR[2]>rcl)))
5682 outputlist->Add(track);
5683 sumPt += track->Pt();
5689 if(nCases==0) areaJet[0] = TMath::Pi()*rc*rc;
5690 normFactor = (Float_t) 1./(areaJet[0] / areaOut);
5695 delete [] areaJetLarge;
5700 // ______________________________________________________________________________________________________________________________________________________
5701 Float_t AliAnalysisTaskFragmentationFunction::CalcJetArea(const Float_t etaJet, const Float_t rc) const
5703 // calculate area of jet with eta etaJet and radius rc
5705 Float_t detamax = etaJet + rc;
5706 Float_t detamin = etaJet - rc;
5707 Float_t accmax = 0.0; Float_t accmin = 0.0;
5708 if(detamax > fTrackEtaMax){ // sector outside etamax
5709 Float_t h = fTrackEtaMax - etaJet;
5710 accmax = rc*rc*TMath::ACos(h/rc) - h*TMath::Sqrt(rc*rc - h*h);
5712 if(detamin < fTrackEtaMin){ // sector outside etamin
5713 Float_t h = fTrackEtaMax + etaJet;
5714 accmin = rc*rc*TMath::ACos(h/rc) - h*TMath::Sqrt(rc*rc - h*h);
5716 Float_t areaJet = rc*rc*TMath::Pi() - accmax - accmin;
5722 // ___________________________________________________________________________________________________________________________
5723 void AliAnalysisTaskFragmentationFunction::GetClusterTracksOutOf1Jet(AliAODJet* jet, TList* outputlist, Double_t &normFactor)
5725 // fill tracks from bckgCluster branch in list,
5726 // for all clusters outside jet cone
5727 // sum up total area of clusters
5729 Double_t rc = GetFFRadius();
5730 Double_t rcl = GetFFBckgRadius();
5732 Double_t areaTotal = 0;
5733 Double_t sumPtTotal = 0;
5735 for(Int_t ij=0; ij<fBckgJetsRec->GetEntries(); ++ij){
5737 AliAODJet* bgrCluster = (AliAODJet*)(fBckgJetsRec->At(ij)); // not 'recCuts': use all clusters in full eta range
5739 Double_t dR = jet->DeltaR(bgrCluster);
5741 if(dR<rcl) continue;
5743 Double_t clusterPt = bgrCluster->Pt();
5744 Double_t area = bgrCluster->EffectiveAreaCharged();
5746 sumPtTotal += clusterPt;
5748 Int_t nTracksJet = bgrCluster->GetRefTracks()->GetEntries();
5750 for(Int_t it = 0; it<nTracksJet; it++){
5752 // embedded tracks - note: using ref tracks here, fBranchRecBckgClusters has to be consistent
5753 if( fUseExtraTracksBgr != 1){
5754 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (bgrCluster->GetTrack(it))){
5755 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5756 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5760 AliVParticle* track = dynamic_cast<AliVParticle*>(bgrCluster->GetTrack(it));
5761 if(!track) continue;
5763 Float_t trackPt = track->Pt();
5764 Float_t trackEta = track->Eta();
5765 Float_t trackPhi = TVector2::Phi_0_2pi(track->Phi());
5767 if(trackEta < fTrackEtaMin || trackEta > fTrackEtaMax) continue;
5768 if(trackPhi < fTrackPhiMin || trackPhi > fTrackPhiMax) continue;
5769 if(trackPt < fTrackPtCut) continue;
5771 outputlist->Add(track);
5775 Double_t areaJet = TMath::Pi()*rc*rc;
5776 if(areaTotal) normFactor = (Float_t) 1./(areaJet / areaTotal);
5781 // _______________________________________________________________________________________________________________________
5782 void AliAnalysisTaskFragmentationFunction::GetClusterTracksMedian(TList* outputlist, Double_t &normFactor)
5784 // fill tracks from bckgCluster branch,
5785 // using cluster with median density (odd number of clusters)
5786 // or picking randomly one of the two closest to median (even number)
5790 Int_t nBckgClusters = fBckgJetsRec->GetEntries(); // not 'recCuts': use all clusters in full eta range
5792 if(nBckgClusters<3) return; // need at least 3 clusters (skipping 2 highest)
5794 Double_t* bgrDensity = new Double_t[nBckgClusters];
5795 Int_t* indices = new Int_t[nBckgClusters];
5797 for(Int_t ij=0; ij<nBckgClusters; ++ij){
5799 AliAODJet* bgrCluster = (AliAODJet*)(fBckgJetsRec->At(ij));
5800 Double_t clusterPt = bgrCluster->Pt();
5801 Double_t area = bgrCluster->EffectiveAreaCharged();
5803 Double_t density = 0;
5804 if(area>0) density = clusterPt/area;
5806 bgrDensity[ij] = density;
5810 TMath::Sort(nBckgClusters, bgrDensity, indices);
5812 // get median cluster
5814 AliAODJet* medianCluster = 0;
5815 Double_t medianDensity = 0;
5817 if(TMath::Odd(nBckgClusters)){
5819 Int_t medianIndex = indices[(Int_t) (0.5*(nBckgClusters-1))];
5820 medianCluster = (AliAODJet*)(fBckgJetsRec->At(medianIndex));
5822 Double_t clusterPt = medianCluster->Pt();
5823 Double_t area = medianCluster->EffectiveAreaCharged();
5825 if(area>0) medianDensity = clusterPt/area;
5829 Int_t medianIndex1 = indices[(Int_t) (0.5*nBckgClusters-1)];
5830 Int_t medianIndex2 = indices[(Int_t) (0.5*nBckgClusters)];
5832 AliAODJet* medianCluster1 = (AliAODJet*)(fBckgJetsRec->At(medianIndex1));
5833 AliAODJet* medianCluster2 = (AliAODJet*)(fBckgJetsRec->At(medianIndex2));
5835 Double_t density1 = 0;
5836 Double_t clusterPt1 = medianCluster1->Pt();
5837 Double_t area1 = medianCluster1->EffectiveAreaCharged();
5838 if(area1>0) density1 = clusterPt1/area1;
5840 Double_t density2 = 0;
5841 Double_t clusterPt2 = medianCluster2->Pt();
5842 Double_t area2 = medianCluster2->EffectiveAreaCharged();
5843 if(area2>0) density2 = clusterPt2/area2;
5845 medianDensity = 0.5*(density1+density2);
5847 medianCluster = ( (fRandom->Rndm()>0.5) ? medianCluster1 : medianCluster2 ); // select one randomly to avoid adding areas
5850 Int_t nTracksJet = medianCluster->GetRefTracks()->GetEntries();
5852 for(Int_t it = 0; it<nTracksJet; it++){
5854 // embedded tracks - note: using ref tracks here, fBranchRecBckgClusters has to be consistent
5855 if( fUseExtraTracksBgr != 1){
5856 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (medianCluster->GetTrack(it))){
5857 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5858 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5862 AliVParticle* track = dynamic_cast<AliVParticle*>(medianCluster->GetTrack(it));
5863 if(!track) continue;
5865 Float_t trackPt = track->Pt();
5866 Float_t trackEta = track->Eta();
5867 Float_t trackPhi = TVector2::Phi_0_2pi(track->Phi());
5869 if(trackEta < fTrackEtaMin || trackEta > fTrackEtaMax) continue;
5870 if(trackPhi < fTrackPhiMin || trackPhi > fTrackPhiMax) continue;
5871 if(trackPt < fTrackPtCut) continue;
5873 outputlist->Add(track);
5876 Double_t areaMedian = medianCluster->EffectiveAreaCharged();
5877 Double_t areaJet = TMath::Pi()*GetFFRadius()*GetFFRadius();
5879 if(areaMedian) normFactor = (Float_t) 1./(areaJet / areaMedian);
5883 delete[] bgrDensity;
5887 // ______________________________________________________________________________________________________________________________________________________
5888 void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inputtracklist, TList* inputjetlist, AliAODJet* jet, Float_t leadTrackPt, TLorentzVector* leadTrackV,
5889 AliFragFuncHistos* ffbckghistocuts, AliFragFuncHistos* ffbckghistoleading,
5890 AliFragFuncIntraJetHistos* ijbckghistocuts, AliFragFuncIntraJetHistos* ijbckghistoleading,
5891 AliFragFuncQATrackHistos* qabckghistocuts){
5893 // List of tracks outside jets for background study
5894 TList* tracklistout2jets = new TList();
5895 TList* tracklistout3jets = new TList();
5896 TList* tracklistout2jetsStat = new TList();
5897 TList* tracklistout3jetsStat = new TList();
5898 Double_t sumPtOut2Jets = 0.;
5899 Double_t sumPtOut3Jets = 0.;
5900 Double_t sumPtOut2JetsStat = 0.;
5901 Double_t sumPtOut3JetsStat = 0.;
5902 Double_t normFactor2Jets = 0.;
5903 Double_t normFactor3Jets = 0.;
5905 Int_t nRecJetsCuts = fJetsRecCuts->GetEntries();
5907 if(nRecJetsCuts>1) {
5908 GetTracksOutOfNJets(2,inputtracklist, tracklistout2jets, inputjetlist, sumPtOut2Jets);
5909 GetTracksOutOfNJetsStat(2,inputtracklist, tracklistout2jetsStat, inputjetlist,sumPtOut2JetsStat, normFactor2Jets);
5912 if(nRecJetsCuts>2) {
5913 GetTracksOutOfNJets(3,inputtracklist, tracklistout3jets, inputjetlist, sumPtOut3Jets);
5914 GetTracksOutOfNJetsStat(3,inputtracklist, tracklistout3jetsStat, inputjetlist, sumPtOut3JetsStat, normFactor3Jets);
5917 if(type==kBckgOutLJ || type==kBckgOutAJ)
5919 TList* tracklistoutleading = new TList();
5920 Double_t sumPtOutLeading = 0.;
5921 GetTracksOutOfNJets(1,inputtracklist, tracklistoutleading, inputjetlist, sumPtOutLeading);
5922 if(type==kBckgOutLJ) fh1OutLeadingMult->Fill(tracklistoutleading->GetSize());
5924 for(Int_t it=0; it<tracklistoutleading->GetSize(); ++it){
5926 AliVParticle* trackVP = (AliVParticle*)(tracklistoutleading->At(it));
5927 if(!trackVP) continue;
5928 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
5930 Float_t jetPt = jet->Pt();
5931 Float_t trackPt = trackV->Pt();
5933 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
5935 if(type==kBckgOutLJ)
5937 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt);
5938 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
5940 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt);
5941 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
5943 // Fill track QA for background
5944 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
5947 // All cases included
5948 if(nRecJetsCuts==1 && type==kBckgOutAJ)
5950 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
5951 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
5953 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
5954 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
5958 // Increment jet pt with one entry in case #tracks outside jets = 0
5959 if(tracklistoutleading->GetSize()==0) {
5960 Float_t jetPt = jet->Pt();
5961 Bool_t incrementJetPt = kTRUE;
5962 if(type==kBckgOutLJ)
5964 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
5965 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
5967 // All cases included
5968 if(nRecJetsCuts==1 && type==kBckgOutAJ)
5970 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
5971 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
5974 delete tracklistoutleading;
5976 if(type==kBckgOutLJStat || type==kBckgOutAJStat)
5978 TList* tracklistoutleadingStat = new TList();
5979 Double_t sumPtOutLeadingStat = 0.;
5980 Double_t normFactorLeading = 0.;
5982 GetTracksOutOfNJetsStat(1,inputtracklist, tracklistoutleadingStat, inputjetlist, sumPtOutLeadingStat, normFactorLeading);
5983 if(type==kBckgOutLJStat) fh1OutLeadingStatMult->Fill(tracklistoutleadingStat->GetSize());
5985 for(Int_t it=0; it<tracklistoutleadingStat->GetSize(); ++it){
5987 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistoutleadingStat->At(it));
5988 if(!trackVP) continue;
5989 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
5991 Float_t jetPt = jet->Pt();
5992 Float_t trackPt = trackV->Pt();
5993 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
5996 if(type==kBckgOutLJStat)
5998 if(fFFMode)ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
5999 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading);
6001 if(fFFMode)ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
6002 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading);
6004 // Fill track QA for background
6005 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt); // OB added bgr QA
6008 // All cases included
6009 if(nRecJetsCuts==1 && type==kBckgOutAJStat)
6011 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
6012 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading );
6014 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
6015 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading );
6017 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6022 // Increment jet pt with one entry in case #tracks outside jets = 0
6023 if(tracklistoutleadingStat->GetSize()==0) {
6024 Float_t jetPt = jet->Pt();
6025 Bool_t incrementJetPt = kTRUE;
6026 if(type==kBckgOutLJStat)
6028 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorLeading);
6029 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorLeading);
6031 // All cases included
6032 if(nRecJetsCuts==1 && type==kBckgOutLJStat)
6034 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorLeading);
6035 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorLeading );
6039 delete tracklistoutleadingStat;
6044 Double_t sumPtPerp = 0.;
6045 TList* tracklistperp = new TList();
6046 GetTracksTiltedwrpJetAxis(TMath::Pi()/2., inputtracklist,tracklistperp,jet,GetFFRadius(),sumPtPerp);
6047 fh1PerpMult->Fill(tracklistperp->GetSize());
6049 for(Int_t it=0; it<tracklistperp->GetSize(); ++it){
6051 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistperp->At(it));
6052 if(!trackVP)continue;
6053 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6055 Float_t jetPt = jet->Pt();
6056 Float_t trackPt = trackV->Pt();
6058 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6060 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6061 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6063 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6064 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6066 // Fill track QA for background
6067 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6071 // Increment jet pt with one entry in case #tracks outside jets = 0
6072 if(tracklistperp->GetSize()==0) {
6073 Float_t jetPt = jet->Pt();
6074 Bool_t incrementJetPt = kTRUE;
6075 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6076 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6079 delete tracklistperp;
6082 if(type==kBckgASide)
6084 Double_t sumPtASide = 0.;
6085 TList* tracklistaside = new TList();
6086 GetTracksTiltedwrpJetAxis(TMath::Pi(),inputtracklist,tracklistaside,jet,GetFFRadius(),sumPtASide);
6087 fh1ASideMult->Fill(tracklistaside->GetSize());
6089 for(Int_t it=0; it<tracklistaside->GetSize(); ++it){
6091 AliVParticle* trackVP = (AliVParticle*)(tracklistaside->At(it));
6092 if(!trackVP) continue;
6093 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6095 Float_t jetPt = jet->Pt();
6096 Float_t trackPt = trackV->Pt();
6098 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6100 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6101 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6103 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6104 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6106 // Fill track QA for background
6107 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6111 if(tracklistaside->GetSize()==0) {
6112 Float_t jetPt = jet->Pt();
6113 Bool_t incrementJetPt = kTRUE;
6114 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6115 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6118 delete tracklistaside;
6121 if(type==kBckgASideWindow)
6123 Double_t normFactorASide = 0.;
6124 Double_t sumPtASideW = 0.;
6125 TList* tracklistasidew = new TList();
6126 GetTracksTiltedwrpJetAxisWindow(TMath::Pi(),inputtracklist,tracklistasidew,jet,GetFFRadius(),sumPtASideW,normFactorASide);
6127 fh1ASideWindowMult->Fill(tracklistasidew->GetSize());
6129 for(Int_t it=0; it<tracklistasidew->GetSize(); ++it){
6131 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistasidew->At(it));
6132 if(!trackVP) continue;
6133 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6135 Float_t jetPt = jet->Pt();
6136 Float_t trackPt = trackV->Pt();
6137 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6139 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorASide);
6140 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorASide);
6142 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorASide );
6143 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorASide );
6145 // Fill track QA for background
6146 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt, kFALSE, normFactorASide);
6150 if(tracklistasidew->GetSize()==0) {
6151 Float_t jetPt = jet->Pt();
6152 Bool_t incrementJetPt = kTRUE;
6153 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorASide);
6154 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorASide);
6157 delete tracklistasidew;
6160 if(type==kBckgPerpWindow)
6162 Double_t normFactorPerp = 0.;
6163 Double_t sumPtPerpW = 0.;
6164 TList* tracklistperpw = new TList();
6165 GetTracksTiltedwrpJetAxisWindow(TMath::Pi()/2.,inputtracklist,tracklistperpw,jet,GetFFRadius(),sumPtPerpW,normFactorPerp);
6166 fh1PerpWindowMult->Fill(tracklistperpw->GetSize());
6168 for(Int_t it=0; it<tracklistperpw->GetSize(); ++it){
6170 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistperpw->At(it));
6171 if(!trackVP) continue;
6172 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6174 Float_t jetPt = jet->Pt();
6175 Float_t trackPt = trackV->Pt();
6176 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6178 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorPerp);
6179 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorPerp);
6181 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorPerp );
6182 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorPerp );
6184 // Fill track QA for background
6185 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt, kFALSE, normFactorPerp);
6189 if(tracklistperpw->GetSize()==0) {
6190 Float_t jetPt = jet->Pt();
6191 Bool_t incrementJetPt = kTRUE;
6192 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorPerp);
6193 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorPerp);
6196 delete tracklistperpw;
6200 if(type==kBckgOut2J || type==kBckgOutAJ)
6202 if(type==kBckgOut2J) fh1Out2JetsMult->Fill(tracklistout2jets->GetSize());
6203 for(Int_t it=0; it<tracklistout2jets->GetSize(); ++it){
6205 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout2jets->At(it));
6206 if(!trackVP) continue;
6207 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6209 Float_t jetPt = jet->Pt();
6210 Float_t trackPt = trackV->Pt();
6212 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6214 if(type==kBckgOut2J)
6216 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6217 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6219 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6220 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6222 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6225 // All cases included
6226 if(nRecJetsCuts==2 && type==kBckgOutAJ)
6228 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6229 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6231 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6232 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6236 // Increment jet pt with one entry in case #tracks outside jets = 0
6237 if(tracklistout2jets->GetSize()==0) {
6238 Float_t jetPt = jet->Pt();
6239 Bool_t incrementJetPt = kTRUE;
6240 if(type==kBckgOut2J)
6242 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6243 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6245 // All cases included
6246 if(nRecJetsCuts==2 && type==kBckgOutAJ)
6248 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6249 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6255 if(type==kBckgOut2JStat || type==kBckgOutAJStat)
6257 for(Int_t it=0; it<tracklistout2jetsStat->GetSize(); ++it){
6259 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout2jetsStat->At(it));
6260 if(!trackVP) continue;
6261 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6263 Float_t jetPt = jet->Pt();
6264 Float_t trackPt = trackV->Pt();
6265 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6267 if(type==kBckgOut2JStat)
6269 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
6270 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
6272 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
6273 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
6275 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6278 // All cases included
6279 if(nRecJetsCuts==2 && type==kBckgOutAJStat)
6281 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
6282 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
6284 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
6285 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
6287 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6291 // Increment jet pt with one entry in case #tracks outside jets = 0
6292 if(tracklistout2jetsStat->GetSize()==0) {
6293 Float_t jetPt = jet->Pt();
6294 Bool_t incrementJetPt = kTRUE;
6295 if(type==kBckgOut2JStat)
6297 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor2Jets);
6298 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor2Jets);
6300 // All cases included
6301 if(nRecJetsCuts==2 && type==kBckgOutAJStat)
6303 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor2Jets);
6304 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor2Jets );
6310 if(type==kBckgOut3J || type==kBckgOutAJ)
6312 if(type==kBckgOut3J) fh1Out3JetsMult->Fill(tracklistout3jets->GetSize());
6314 for(Int_t it=0; it<tracklistout3jets->GetSize(); ++it){
6316 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout3jets->At(it));
6317 if(!trackVP) continue;
6318 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6320 Float_t jetPt = jet->Pt();
6321 Float_t trackPt = trackV->Pt();
6323 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6325 if(type==kBckgOut3J)
6327 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6328 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6330 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6331 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6333 qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6336 // All cases included
6337 if(nRecJetsCuts==3 && type==kBckgOutAJ)
6339 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6340 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6342 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6343 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6347 // Increment jet pt with one entry in case #tracks outside jets = 0
6348 if(tracklistout3jets->GetSize()==0) {
6349 Float_t jetPt = jet->Pt();
6350 Bool_t incrementJetPt = kTRUE;
6351 if(type==kBckgOut3J)
6353 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6354 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6356 // All cases included
6357 if(nRecJetsCuts==3 && type==kBckgOutAJ)
6359 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6360 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6365 if(type==kBckgOut3JStat || type==kBckgOutAJStat)
6367 for(Int_t it=0; it<tracklistout3jetsStat->GetSize(); ++it){
6369 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout3jetsStat->At(it));
6370 if(!trackVP) continue;
6371 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6373 Float_t jetPt = jet->Pt();
6374 Float_t trackPt = trackV->Pt();
6375 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6377 if(type==kBckgOut3JStat)
6379 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets);
6380 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
6382 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets);
6383 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets);
6385 //if(fQAMode&1) qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
6388 // All cases included
6389 if(nRecJetsCuts==3 && type==kBckgOutAJStat)
6391 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets );
6392 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
6394 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets );
6395 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets );
6397 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6402 // Increment jet pt with one entry in case #tracks outside jets = 0
6403 if(tracklistout3jetsStat->GetSize()==0) {
6404 Float_t jetPt = jet->Pt();
6405 Bool_t incrementJetPt = kTRUE;
6406 if(type==kBckgOut3JStat)
6408 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor3Jets);
6409 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor3Jets);
6411 // All cases included
6412 if(nRecJetsCuts==3 && type==kBckgOutAJStat)
6414 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor3Jets);
6415 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor3Jets );
6421 if(type==kBckgClustersOutLeading){ // clusters bgr: all tracks in clusters out of leading jet
6423 TList* tracklistClustersOutLeading = new TList();
6424 Double_t normFactorClusters = 0;
6425 Float_t jetPt = jet->Pt();
6427 GetClusterTracksOutOf1Jet(jet, tracklistClustersOutLeading, normFactorClusters);
6428 fh1OutClustersMult->Fill(tracklistClustersOutLeading->GetSize());
6430 for(Int_t it=0; it<tracklistClustersOutLeading->GetSize(); ++it){
6432 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistClustersOutLeading->At(it));
6433 if(!trackVP) continue;
6434 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6436 Float_t trackPt = trackVP->Pt();
6438 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6440 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorClusters );
6441 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt );
6446 delete tracklistClustersOutLeading;
6450 if(type == kBckgClusters){ // clusters bgr: all tracks in 'median cluster'
6452 TList* tracklistClustersMedian = new TList();
6453 Double_t normFactorClusters = 0;
6454 Float_t jetPt = jet->Pt();
6456 GetClusterTracksMedian(tracklistClustersMedian, normFactorClusters);
6457 fh1MedianClustersMult->Fill(tracklistClustersMedian->GetSize());
6459 for(Int_t it=0; it<tracklistClustersMedian->GetSize(); ++it){
6461 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistClustersMedian->At(it));
6462 if(!trackVP) continue;
6463 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6465 Float_t trackPt = trackVP->Pt();
6467 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6469 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorClusters );
6470 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt );
6475 delete tracklistClustersMedian;
6478 delete tracklistout2jets;
6479 delete tracklistout3jets;
6480 delete tracklistout2jetsStat;
6481 delete tracklistout3jetsStat;
6485 // ______________________________________________________________________________________________________________________________________________________
6486 AliAODJet* AliAnalysisTaskFragmentationFunction::GetAODBckgSubJet(AliAODJet* jet, Int_t method)
6488 // correct jet pt for (mean bgr energy density) x (jet area)
6490 if(!fBranchRecBackJets.Length()){
6491 if(fDebug>0)Printf("%s:%d background branch name not set",(char*)__FILE__,__LINE__);
6495 static AliAODJetEventBackground* externalBackground = (AliAODJetEventBackground*)(fAOD->FindListObject(fBranchRecBackJets.Data()));
6497 if(!externalBackground){
6498 if(fDebug>0)Printf("%s:%d no external background object found in %s",(char*)__FILE__,__LINE__,fBranchRecBackJets.Data());
6502 Float_t rho = externalBackground->GetBackground(method);
6504 // Calculate background and subtract it from jet pt
6505 Float_t ptBack = rho*jet->EffectiveAreaCharged();
6506 Float_t ptSub = jet->Pt()-ptBack;
6508 // Get px, py, pz from eta, phi, pt
6509 TLorentzVector vecSub;
6510 AliAODJet *tmpJet = 0;
6512 vecSub.SetPtEtaPhiM(ptSub,jet->Eta(),jet->Phi(),0.);
6513 tmpJet = new AliAODJet(vecSub.Px(),vecSub.Py(),vecSub.Pz(),vecSub.P());