X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGJE%2FAliAnalysisTaskFragmentationFunction.cxx;h=220a975640f61ebf30f5b8f80afb6999d605681a;hb=2b3fb225d7a82d67ce4b1ac641085d6435170349;hp=626514d359dc09c795937aacb033bf523d4c1636;hpb=4eea499faf8b9583a1f2e96d42a31dea13158a4b;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGJE/AliAnalysisTaskFragmentationFunction.cxx b/PWGJE/AliAnalysisTaskFragmentationFunction.cxx index 626514d359d..220a975640f 100644 --- a/PWGJE/AliAnalysisTaskFragmentationFunction.cxx +++ b/PWGJE/AliAnalysisTaskFragmentationFunction.cxx @@ -32,6 +32,7 @@ #include "TFile.h" #include "TKey.h" #include "TRandom3.h" +#include "TAxis.h" #include "AliAODInputHandler.h" #include "AliAODHandler.h" @@ -50,6 +51,9 @@ #include "AliVEvent.h" #include "AliAnalysisTaskFragmentationFunction.h" +using std::cout; +using std::endl; +using std::cerr; ClassImp(AliAnalysisTaskFragmentationFunction) @@ -62,7 +66,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fAODExtension(0) ,fNonStdFile("") ,fBranchRecJets("jets") - ,fBranchRecBackJets("") ,fBranchRecBckgClusters("") ,fBranchGenJets("") ,fBranchEmbeddedJets("") @@ -90,30 +93,22 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fJetEtaMax(0) ,fJetPhiMin(0) ,fJetPhiMax(0) - ,fDiJetCut(0) - ,fDiJetDeltaPhiCut(0) - ,fDiJetPtFractionCut(0) - ,fDiJetCDFCut(0) - ,fDiJetKindBins(0) ,fFFRadius(0) + ,fFFMinLTrackPt(-1) ,fFFMaxTrackPt(-1) ,fFFMinnTracks(0) ,fFFBckgRadius(0) ,fBckgMode(0) - ,fIJMode(0) ,fQAMode(0) ,fFFMode(0) - ,fDJMode(0) ,fEffMode(0) - ,fPhiCorrMode(0) - ,fUseRecEffRecJetPtBins(0) - ,fUseResponseRecJetPtBins(1) + ,fJSMode(0) ,fAvgTrials(0) - ,fTracksRec(0) ,fTracksRecCuts(0) ,fTracksGen(0) ,fTracksAODMCCharged(0) - ,fTracksAODMCChargedSec(0) + ,fTracksAODMCChargedSecNS(0) + ,fTracksAODMCChargedSecS(0) ,fTracksRecQualityCuts(0) ,fJetsRec(0) ,fJetsRecCuts(0) @@ -123,7 +118,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fBckgJetsRec(0) ,fBckgJetsRecCuts(0) ,fBckgJetsGen(0) - ,fQATrackHistosRec(0) ,fQATrackHistosRecCuts(0) ,fQATrackHistosGen(0) ,fQAJetHistosRec(0) @@ -133,28 +127,7 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fQAJetHistosGenLeading(0) ,fQAJetHistosRecEffLeading(0) ,fFFHistosRecCuts(0) - ,fFFHistosRecLeading(0) - ,fFFHistosRecLeadingTrack(0) ,fFFHistosGen(0) - ,fFFHistosGenLeading(0) - ,fFFHistosGenLeadingTrack(0) - ,fIJHistosRecCuts(0) - ,fIJHistosRecLeading(0) - ,fIJHistosRecLeadingTrack(0) - ,fIJHistosGen(0) - ,fIJHistosGenLeading(0) - ,fIJHistosGenLeadingTrack(0) - ,fFFDiJetHistosRecCuts(0) - ,fFFDiJetHistosRecLeading(0) - ,fFFDiJetHistosRecLeadingTrack(0) - ,fFFDiJetHistosGen(0) - ,fFFDiJetHistosGenLeading(0) - ,fFFDiJetHistosGenLeadingTrack(0) - ,fQADiJetHistosRecCuts(0) - ,fQADiJetHistosGen(0) - ,fPhiCorrHistosJetArea(0) - ,fPhiCorrHistosTransverseArea(0) - ,fPhiCorrHistosAwayArea(0) ,fQATrackHighPtThreshold(0) ,fFFNBinsJetPt(0) ,fFFJetPtMin(0) @@ -168,7 +141,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fFFNBinsZ(0) ,fFFZMin(0) ,fFFZMax(0) - ,fFFLogZBins(kTRUE) ,fQAJetNBinsPt(0) ,fQAJetPtMin(0) ,fQAJetPtMax(0) @@ -187,74 +159,12 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fQATrackNBinsPhi(0) ,fQATrackPhiMin(0) ,fQATrackPhiMax(0) - ,fIJNBinsJetPt(0) - ,fIJJetPtMin(0) - ,fIJJetPtMax(0) - ,fIJNBinsPt(0) - ,fIJPtMin(0) - ,fIJPtMax(0) - ,fIJNBinsZ(0) - ,fIJZMin(0) - ,fIJZMax(0) - ,fIJNBinsCosTheta(0) - ,fIJCosThetaMin(0) - ,fIJCosThetaMax(0) - ,fIJNBinsTheta(0) - ,fIJThetaMin(0) - ,fIJThetaMax(0) - ,fIJNBinsJt(0) - ,fIJJtMin(0) - ,fIJJtMax(0) - ,fDiJetNBinsJetInvMass(0) - ,fDiJetJetInvMassMin(0) - ,fDiJetJetInvMassMax(0) - ,fDiJetNBinsJetPt(0) - ,fDiJetJetPtMin(0) - ,fDiJetJetPtMax(0) - ,fDiJetNBinsPt(0) - ,fDiJetPtMin(0) - ,fDiJetPtMax(0) - ,fDiJetNBinsXi(0) - ,fDiJetXiMin(0) - ,fDiJetXiMax(0) - ,fDiJetNBinsZ(0) - ,fDiJetZMin(0) - ,fDiJetZMax(0) - ,fQADiJetNBinsInvMass(0) - ,fQADiJetInvMassMin(0) - ,fQADiJetInvMassMax(0) - ,fQADiJetNBinsJetPt(0) - ,fQADiJetJetPtMin(0) - ,fQADiJetJetPtMax(0) - ,fQADiJetNBinsDeltaPhi(0) - ,fQADiJetDeltaPhiMin(0) - ,fQADiJetDeltaPhiMax(0) - ,fQADiJetNBinsDeltaEta(0) - ,fQADiJetDeltaEtaMin(0) - ,fQADiJetDeltaEtaMax(0) - ,fQADiJetNBinsDeltaPt(0) - ,fQADiJetDeltaPtMin(0) - ,fQADiJetDeltaPtMax(0) - ,fQADiJetNBinsInBal(0) - ,fQADiJetInBalMin(0) - ,fQADiJetInBalMax(0) - ,fPhiCorrNBinsPt(0) - ,fPhiCorrPtMin(0) - ,fPhiCorrPtMax(0) - ,fPhiCorrNBinsEta(0) - ,fPhiCorrEtaMin(0) - ,fPhiCorrEtaMax(0) - ,fPhiCorrNBinsPhi(0) - ,fPhiCorrPhiMin(0) - ,fPhiCorrPhiMax(0) ,fCommonHistList(0) ,fh1EvtSelection(0) ,fh1VertexNContributors(0) ,fh1VertexZ(0) ,fh1EvtMult(0) ,fh1EvtCent(0) - ,fh2TrackPtVsDCAXY(0) - ,fh2TrackPtVsDCAZ(0) ,fh1Xsec(0) ,fh1Trials(0) ,fh1PtHard(0) @@ -269,35 +179,24 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fh2PtRecVsGenSec(0) ,fQATrackHistosRecEffGen(0) ,fQATrackHistosRecEffRec(0) - ,fQATrackHistosSecRec(0) - ,fFFHistosRecEffGen(0) + ,fQATrackHistosSecRecNS(0) + ,fQATrackHistosSecRecS(0) + ,fQATrackHistosSecRecSsc(0) ,fFFHistosRecEffRec(0) - ,fFFHistosSecRec(0) - ,fhnResponseSinglePt(0) - ,fh2SingleInvPtRecMnGenVsPtGen(0) - ,fhnResponseJetTrackPt(0) - ,fhnResponseJetZ(0) - ,fhnResponseJetXi(0) - // Background - ,fh1OutLeadingMult(0) - ,fh1OutLeadingStatMult(0) - ,fh1PerpMult(0) - ,fh1ASideMult(0) - ,fh1ASideWindowMult(0) - ,fh1PerpWindowMult(0) - ,fh1Out2JetsMult(0) - ,fh1Out3JetsMult(0) - ,fh1MedianClustersMult(0) - ,fh1OutClustersMult(0) + ,fFFHistosSecRecNS(0) + ,fFFHistosSecRecS(0) + ,fFFHistosSecRecSsc(0) + // Background + ,fh1BckgMult0(0) + ,fh1BckgMult1(0) + ,fh1BckgMult2(0) + ,fh1BckgMult3(0) + ,fh1BckgMult4(0) ,fh1FractionPtEmbedded(0) ,fh1IndexEmbedded(0) ,fh2DeltaPtVsJetPtEmbedded(0) ,fh2DeltaPtVsRecJetPtEmbedded(0) ,fh1DeltaREmbedded(0) - ,fh2ptVsDistNN_pt50_rec(0) - ,fh2ptVsDistNN_pt50_nonRec(0) - ,fh2ptVsDistNN_pt10_rec(0) - ,fh2ptVsDistNN_pt10_nonRec(0) ,fQABckgHisto0RecCuts(0) ,fQABckgHisto0Gen(0) ,fQABckgHisto1RecCuts(0) @@ -309,47 +208,32 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fQABckgHisto4RecCuts(0) ,fQABckgHisto4Gen(0) ,fFFBckgHisto0RecCuts(0) - ,fFFBckgHisto0RecLeading(0) ,fFFBckgHisto0Gen(0) - ,fFFBckgHisto0GenLeading(0) ,fFFBckgHisto1RecCuts(0) - ,fFFBckgHisto1RecLeading(0) ,fFFBckgHisto1Gen(0) - ,fFFBckgHisto1GenLeading(0) ,fFFBckgHisto2RecCuts(0) - ,fFFBckgHisto2RecLeading(0) ,fFFBckgHisto2Gen(0) - ,fFFBckgHisto2GenLeading(0) ,fFFBckgHisto3RecCuts(0) - ,fFFBckgHisto3RecLeading(0) ,fFFBckgHisto3Gen(0) - ,fFFBckgHisto3GenLeading(0) ,fFFBckgHisto4RecCuts(0) - ,fFFBckgHisto4RecLeading(0) ,fFFBckgHisto4Gen(0) - ,fFFBckgHisto4GenLeading(0) - ,fIJBckgHisto0RecCuts(0) - ,fIJBckgHisto0RecLeading(0) - ,fIJBckgHisto0Gen(0) - ,fIJBckgHisto0GenLeading(0) - ,fIJBckgHisto1RecCuts(0) - ,fIJBckgHisto1RecLeading(0) - ,fIJBckgHisto1Gen(0) - ,fIJBckgHisto1GenLeading(0) - ,fIJBckgHisto2RecCuts(0) - ,fIJBckgHisto2RecLeading(0) - ,fIJBckgHisto2Gen(0) - ,fIJBckgHisto2GenLeading(0) - ,fIJBckgHisto3RecCuts(0) - ,fIJBckgHisto3RecLeading(0) - ,fIJBckgHisto3Gen(0) - ,fIJBckgHisto3GenLeading(0) - ,fIJBckgHisto4RecCuts(0) - ,fIJBckgHisto4RecLeading(0) - ,fIJBckgHisto4Gen(0) - ,fIJBckgHisto4GenLeading(0) + ,fFFBckgHisto0RecEffRec(0) + ,fFFBckgHisto0SecRecNS(0) + ,fFFBckgHisto0SecRecS(0) + ,fFFBckgHisto0SecRecSsc(0) + // jet shape + ,fProNtracksLeadingJet(0) + ,fProDelR80pcPt(0) + ,fProNtracksLeadingJetGen(0) + ,fProDelR80pcPtGen(0) + ,fProNtracksLeadingJetBgrPerp2(0) + ,fProNtracksLeadingJetRecPrim(0) + ,fProDelR80pcPtRecPrim(0) + ,fProNtracksLeadingJetRecSecNS(0) + ,fProNtracksLeadingJetRecSecS(0) + ,fProNtracksLeadingJetRecSecSsc(0) + ,fRandom(0) - ,fBckgSubMethod(0) { // default constructor fBckgType[0] = 0; @@ -357,9 +241,19 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() fBckgType[2] = 0; fBckgType[3] = 0; fBckgType[4] = 0; + + for(Int_t ii=0; ii<5; ii++){ + fProDelRPtSum[ii] = 0; + fProDelRPtSumGen[ii] = 0; + fProDelRPtSumBgrPerp2[ii] = 0; + fProDelRPtSumRecPrim[ii] = 0; + fProDelRPtSumRecSecNS[ii] = 0; + fProDelRPtSumRecSecS[ii] = 0; + fProDelRPtSumRecSecSsc[ii] = 0; + } } -//__________________________________________________________________________________________ +//_______________________________________________________________________________________________ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const char *name) : AliAnalysisTaskSE(name) ,fESD(0) @@ -368,7 +262,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fAODExtension(0) ,fNonStdFile("") ,fBranchRecJets("jets") - ,fBranchRecBackJets("") ,fBranchRecBckgClusters("") ,fBranchGenJets("") ,fBranchEmbeddedJets("") @@ -396,30 +289,22 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fJetEtaMax(0) ,fJetPhiMin(0) ,fJetPhiMax(0) - ,fDiJetCut(0) - ,fDiJetDeltaPhiCut(0) - ,fDiJetPtFractionCut(0) - ,fDiJetCDFCut(0) - ,fDiJetKindBins(0) ,fFFRadius(0) + ,fFFMinLTrackPt(-1) ,fFFMaxTrackPt(-1) ,fFFMinnTracks(0) ,fFFBckgRadius(0) ,fBckgMode(0) - ,fIJMode(0) ,fQAMode(0) ,fFFMode(0) - ,fDJMode(0) ,fEffMode(0) - ,fPhiCorrMode(0) - ,fUseRecEffRecJetPtBins(0) - ,fUseResponseRecJetPtBins(1) + ,fJSMode(0) ,fAvgTrials(0) - ,fTracksRec(0) ,fTracksRecCuts(0) ,fTracksGen(0) ,fTracksAODMCCharged(0) - ,fTracksAODMCChargedSec(0) + ,fTracksAODMCChargedSecNS(0) + ,fTracksAODMCChargedSecS(0) ,fTracksRecQualityCuts(0) ,fJetsRec(0) ,fJetsRecCuts(0) @@ -429,7 +314,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fBckgJetsRec(0) ,fBckgJetsRecCuts(0) ,fBckgJetsGen(0) - ,fQATrackHistosRec(0) ,fQATrackHistosRecCuts(0) ,fQATrackHistosGen(0) ,fQAJetHistosRec(0) @@ -439,28 +323,7 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fQAJetHistosGenLeading(0) ,fQAJetHistosRecEffLeading(0) ,fFFHistosRecCuts(0) - ,fFFHistosRecLeading(0) - ,fFFHistosRecLeadingTrack(0) ,fFFHistosGen(0) - ,fFFHistosGenLeading(0) - ,fFFHistosGenLeadingTrack(0) - ,fIJHistosRecCuts(0) - ,fIJHistosRecLeading(0) - ,fIJHistosRecLeadingTrack(0) - ,fIJHistosGen(0) - ,fIJHistosGenLeading(0) - ,fIJHistosGenLeadingTrack(0) - ,fFFDiJetHistosRecCuts(0) - ,fFFDiJetHistosRecLeading(0) - ,fFFDiJetHistosRecLeadingTrack(0) - ,fFFDiJetHistosGen(0) - ,fFFDiJetHistosGenLeading(0) - ,fFFDiJetHistosGenLeadingTrack(0) - ,fQADiJetHistosRecCuts(0) - ,fQADiJetHistosGen(0) - ,fPhiCorrHistosJetArea(0) - ,fPhiCorrHistosTransverseArea(0) - ,fPhiCorrHistosAwayArea(0) ,fQATrackHighPtThreshold(0) ,fFFNBinsJetPt(0) ,fFFJetPtMin(0) @@ -474,7 +337,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fFFNBinsZ(0) ,fFFZMin(0) ,fFFZMax(0) - ,fFFLogZBins(kTRUE) ,fQAJetNBinsPt(0) ,fQAJetPtMin(0) ,fQAJetPtMax(0) @@ -493,74 +355,12 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fQATrackNBinsPhi(0) ,fQATrackPhiMin(0) ,fQATrackPhiMax(0) - ,fIJNBinsJetPt(0) - ,fIJJetPtMin(0) - ,fIJJetPtMax(0) - ,fIJNBinsPt(0) - ,fIJPtMin(0) - ,fIJPtMax(0) - ,fIJNBinsZ(0) - ,fIJZMin(0) - ,fIJZMax(0) - ,fIJNBinsCosTheta(0) - ,fIJCosThetaMin(0) - ,fIJCosThetaMax(0) - ,fIJNBinsTheta(0) - ,fIJThetaMin(0) - ,fIJThetaMax(0) - ,fIJNBinsJt(0) - ,fIJJtMin(0) - ,fIJJtMax(0) - ,fDiJetNBinsJetInvMass(0) - ,fDiJetJetInvMassMin(0) - ,fDiJetJetInvMassMax(0) - ,fDiJetNBinsJetPt(0) - ,fDiJetJetPtMin(0) - ,fDiJetJetPtMax(0) - ,fDiJetNBinsPt(0) - ,fDiJetPtMin(0) - ,fDiJetPtMax(0) - ,fDiJetNBinsXi(0) - ,fDiJetXiMin(0) - ,fDiJetXiMax(0) - ,fDiJetNBinsZ(0) - ,fDiJetZMin(0) - ,fDiJetZMax(0) - ,fQADiJetNBinsInvMass(0) - ,fQADiJetInvMassMin(0) - ,fQADiJetInvMassMax(0) - ,fQADiJetNBinsJetPt(0) - ,fQADiJetJetPtMin(0) - ,fQADiJetJetPtMax(0) - ,fQADiJetNBinsDeltaPhi(0) - ,fQADiJetDeltaPhiMin(0) - ,fQADiJetDeltaPhiMax(0) - ,fQADiJetNBinsDeltaEta(0) - ,fQADiJetDeltaEtaMin(0) - ,fQADiJetDeltaEtaMax(0) - ,fQADiJetNBinsDeltaPt(0) - ,fQADiJetDeltaPtMin(0) - ,fQADiJetDeltaPtMax(0) - ,fQADiJetNBinsInBal(0) - ,fQADiJetInBalMin(0) - ,fQADiJetInBalMax(0) - ,fPhiCorrNBinsPt(0) - ,fPhiCorrPtMin(0) - ,fPhiCorrPtMax(0) - ,fPhiCorrNBinsEta(0) - ,fPhiCorrEtaMin(0) - ,fPhiCorrEtaMax(0) - ,fPhiCorrNBinsPhi(0) - ,fPhiCorrPhiMin(0) - ,fPhiCorrPhiMax(0) ,fCommonHistList(0) ,fh1EvtSelection(0) ,fh1VertexNContributors(0) ,fh1VertexZ(0) ,fh1EvtMult(0) ,fh1EvtCent(0) - ,fh2TrackPtVsDCAXY(0) - ,fh2TrackPtVsDCAZ(0) ,fh1Xsec(0) ,fh1Trials(0) ,fh1PtHard(0) @@ -575,35 +375,24 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fh2PtRecVsGenSec(0) ,fQATrackHistosRecEffGen(0) ,fQATrackHistosRecEffRec(0) - ,fQATrackHistosSecRec(0) - ,fFFHistosRecEffGen(0) + ,fQATrackHistosSecRecNS(0) + ,fQATrackHistosSecRecS(0) + ,fQATrackHistosSecRecSsc(0) ,fFFHistosRecEffRec(0) - ,fFFHistosSecRec(0) - ,fhnResponseSinglePt(0) - ,fh2SingleInvPtRecMnGenVsPtGen(0) - ,fhnResponseJetTrackPt(0) - ,fhnResponseJetZ(0) - ,fhnResponseJetXi(0) + ,fFFHistosSecRecNS(0) + ,fFFHistosSecRecS(0) + ,fFFHistosSecRecSsc(0) // Background - ,fh1OutLeadingMult(0) - ,fh1OutLeadingStatMult(0) - ,fh1PerpMult(0) - ,fh1ASideMult(0) - ,fh1ASideWindowMult(0) - ,fh1PerpWindowMult(0) - ,fh1Out2JetsMult(0) - ,fh1Out3JetsMult(0) - ,fh1MedianClustersMult(0) - ,fh1OutClustersMult(0) + ,fh1BckgMult0(0) + ,fh1BckgMult1(0) + ,fh1BckgMult2(0) + ,fh1BckgMult3(0) + ,fh1BckgMult4(0) ,fh1FractionPtEmbedded(0) ,fh1IndexEmbedded(0) ,fh2DeltaPtVsJetPtEmbedded(0) ,fh2DeltaPtVsRecJetPtEmbedded(0) ,fh1DeltaREmbedded(0) - ,fh2ptVsDistNN_pt50_rec(0) - ,fh2ptVsDistNN_pt50_nonRec(0) - ,fh2ptVsDistNN_pt10_rec(0) - ,fh2ptVsDistNN_pt10_nonRec(0) ,fQABckgHisto0RecCuts(0) ,fQABckgHisto0Gen(0) ,fQABckgHisto1RecCuts(0) @@ -615,47 +404,31 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fQABckgHisto4RecCuts(0) ,fQABckgHisto4Gen(0) ,fFFBckgHisto0RecCuts(0) - ,fFFBckgHisto0RecLeading(0) ,fFFBckgHisto0Gen(0) - ,fFFBckgHisto0GenLeading(0) ,fFFBckgHisto1RecCuts(0) - ,fFFBckgHisto1RecLeading(0) ,fFFBckgHisto1Gen(0) - ,fFFBckgHisto1GenLeading(0) ,fFFBckgHisto2RecCuts(0) - ,fFFBckgHisto2RecLeading(0) ,fFFBckgHisto2Gen(0) - ,fFFBckgHisto2GenLeading(0) ,fFFBckgHisto3RecCuts(0) - ,fFFBckgHisto3RecLeading(0) ,fFFBckgHisto3Gen(0) - ,fFFBckgHisto3GenLeading(0) ,fFFBckgHisto4RecCuts(0) - ,fFFBckgHisto4RecLeading(0) ,fFFBckgHisto4Gen(0) - ,fFFBckgHisto4GenLeading(0) - ,fIJBckgHisto0RecCuts(0) - ,fIJBckgHisto0RecLeading(0) - ,fIJBckgHisto0Gen(0) - ,fIJBckgHisto0GenLeading(0) - ,fIJBckgHisto1RecCuts(0) - ,fIJBckgHisto1RecLeading(0) - ,fIJBckgHisto1Gen(0) - ,fIJBckgHisto1GenLeading(0) - ,fIJBckgHisto2RecCuts(0) - ,fIJBckgHisto2RecLeading(0) - ,fIJBckgHisto2Gen(0) - ,fIJBckgHisto2GenLeading(0) - ,fIJBckgHisto3RecCuts(0) - ,fIJBckgHisto3RecLeading(0) - ,fIJBckgHisto3Gen(0) - ,fIJBckgHisto3GenLeading(0) - ,fIJBckgHisto4RecCuts(0) - ,fIJBckgHisto4RecLeading(0) - ,fIJBckgHisto4Gen(0) - ,fIJBckgHisto4GenLeading(0) + ,fFFBckgHisto0RecEffRec(0) + ,fFFBckgHisto0SecRecNS(0) + ,fFFBckgHisto0SecRecS(0) + ,fFFBckgHisto0SecRecSsc(0) + // jet shape + ,fProNtracksLeadingJet(0) + ,fProDelR80pcPt(0) + ,fProNtracksLeadingJetGen(0) + ,fProDelR80pcPtGen(0) + ,fProNtracksLeadingJetBgrPerp2(0) + ,fProNtracksLeadingJetRecPrim(0) + ,fProDelR80pcPtRecPrim(0) + ,fProNtracksLeadingJetRecSecNS(0) + ,fProNtracksLeadingJetRecSecS(0) + ,fProNtracksLeadingJetRecSecSsc(0) ,fRandom(0) - ,fBckgSubMethod(0) { // constructor fBckgType[0] = 0; @@ -663,10 +436,18 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const fBckgType[2] = 0; fBckgType[3] = 0; fBckgType[4] = 0; - - DefineOutput(1,TList::Class()); + + for(Int_t ii=0; ii<5; ii++){ + fProDelRPtSum[ii] = 0; + fProDelRPtSumGen[ii] = 0; + fProDelRPtSumBgrPerp2[ii] = 0; + fProDelRPtSumRecPrim[ii] = 0; + fProDelRPtSumRecSecNS[ii] = 0; + fProDelRPtSumRecSecS[ii] = 0; + fProDelRPtSumRecSecSsc[ii] = 0; + } - + DefineOutput(1,TList::Class()); } //__________________________________________________________________________________________________________________________ @@ -678,7 +459,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fAODExtension(copy.fAODExtension) ,fNonStdFile(copy.fNonStdFile) ,fBranchRecJets(copy.fBranchRecJets) - ,fBranchRecBackJets(copy.fBranchRecBackJets) ,fBranchRecBckgClusters(copy.fBranchRecBckgClusters) ,fBranchGenJets(copy.fBranchGenJets) ,fBranchEmbeddedJets(copy.fBranchEmbeddedJets) @@ -706,30 +486,22 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fJetEtaMax(copy.fJetEtaMax) ,fJetPhiMin(copy.fJetPhiMin) ,fJetPhiMax(copy.fJetPhiMax) - ,fDiJetCut(copy.fDiJetCut) - ,fDiJetDeltaPhiCut(copy.fDiJetDeltaPhiCut) - ,fDiJetPtFractionCut(copy.fDiJetPtFractionCut) - ,fDiJetCDFCut(copy.fDiJetCDFCut) - ,fDiJetKindBins(copy.fDiJetKindBins) ,fFFRadius(copy.fFFRadius) + ,fFFMinLTrackPt(copy.fFFMinLTrackPt) ,fFFMaxTrackPt(copy.fFFMaxTrackPt) ,fFFMinnTracks(copy.fFFMinnTracks) ,fFFBckgRadius(copy.fFFBckgRadius) ,fBckgMode(copy.fBckgMode) - ,fIJMode(copy.fIJMode) ,fQAMode(copy.fQAMode) ,fFFMode(copy.fFFMode) - ,fDJMode(copy.fDJMode) ,fEffMode(copy.fEffMode) - ,fPhiCorrMode(copy.fPhiCorrMode) - ,fUseRecEffRecJetPtBins(copy.fUseRecEffRecJetPtBins) - ,fUseResponseRecJetPtBins(copy.fUseResponseRecJetPtBins) + ,fJSMode(copy.fJSMode) ,fAvgTrials(copy.fAvgTrials) - ,fTracksRec(copy.fTracksRec) ,fTracksRecCuts(copy.fTracksRecCuts) ,fTracksGen(copy.fTracksGen) ,fTracksAODMCCharged(copy.fTracksAODMCCharged) - ,fTracksAODMCChargedSec(copy.fTracksAODMCChargedSec) + ,fTracksAODMCChargedSecNS(copy.fTracksAODMCChargedSecNS) + ,fTracksAODMCChargedSecS(copy.fTracksAODMCChargedSecS) ,fTracksRecQualityCuts(copy.fTracksRecQualityCuts) ,fJetsRec(copy.fJetsRec) ,fJetsRecCuts(copy.fJetsRecCuts) @@ -739,7 +511,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fBckgJetsRec(copy.fBckgJetsRec) ,fBckgJetsRecCuts(copy.fBckgJetsRecCuts) ,fBckgJetsGen(copy.fBckgJetsGen) - ,fQATrackHistosRec(copy.fQATrackHistosRec) ,fQATrackHistosRecCuts(copy.fQATrackHistosRecCuts) ,fQATrackHistosGen(copy.fQATrackHistosGen) ,fQAJetHistosRec(copy.fQAJetHistosRec) @@ -749,28 +520,7 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fQAJetHistosGenLeading(copy.fQAJetHistosGenLeading) ,fQAJetHistosRecEffLeading(copy.fQAJetHistosRecEffLeading) ,fFFHistosRecCuts(copy.fFFHistosRecCuts) - ,fFFHistosRecLeading(copy.fFFHistosRecLeading) - ,fFFHistosRecLeadingTrack(copy.fFFHistosRecLeadingTrack) ,fFFHistosGen(copy.fFFHistosGen) - ,fFFHistosGenLeading(copy.fFFHistosGenLeading) - ,fFFHistosGenLeadingTrack(copy.fFFHistosGenLeadingTrack) - ,fIJHistosRecCuts(copy.fIJHistosRecCuts) - ,fIJHistosRecLeading(copy.fIJHistosRecLeading) - ,fIJHistosRecLeadingTrack(copy.fIJHistosRecLeadingTrack) - ,fIJHistosGen(copy.fIJHistosGen) - ,fIJHistosGenLeading(copy.fIJHistosGenLeading) - ,fIJHistosGenLeadingTrack(copy.fIJHistosGenLeadingTrack) - ,fFFDiJetHistosRecCuts(copy.fFFDiJetHistosRecCuts) - ,fFFDiJetHistosRecLeading(copy.fFFDiJetHistosRecLeading) - ,fFFDiJetHistosRecLeadingTrack(copy.fFFDiJetHistosRecLeadingTrack) - ,fFFDiJetHistosGen(copy.fFFDiJetHistosGen) - ,fFFDiJetHistosGenLeading(copy.fFFDiJetHistosGenLeading) - ,fFFDiJetHistosGenLeadingTrack(copy.fFFDiJetHistosGenLeadingTrack) - ,fQADiJetHistosRecCuts(copy.fQADiJetHistosRecCuts) - ,fQADiJetHistosGen(copy.fQADiJetHistosGen) - ,fPhiCorrHistosJetArea(copy.fPhiCorrHistosJetArea) - ,fPhiCorrHistosTransverseArea(copy.fPhiCorrHistosTransverseArea) - ,fPhiCorrHistosAwayArea(copy.fPhiCorrHistosAwayArea) ,fQATrackHighPtThreshold(copy.fQATrackHighPtThreshold) ,fFFNBinsJetPt(copy.fFFNBinsJetPt) ,fFFJetPtMin(copy.fFFJetPtMin) @@ -784,7 +534,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fFFNBinsZ(copy.fFFNBinsZ) ,fFFZMin(copy.fFFZMin) ,fFFZMax(copy.fFFZMax) - ,fFFLogZBins(copy.fFFLogZBins) ,fQAJetNBinsPt(copy.fQAJetNBinsPt) ,fQAJetPtMin(copy.fQAJetPtMin) ,fQAJetPtMax(copy.fQAJetPtMax) @@ -803,74 +552,12 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fQATrackNBinsPhi(copy.fQATrackNBinsPhi) ,fQATrackPhiMin(copy.fQATrackPhiMin) ,fQATrackPhiMax(copy.fQATrackPhiMax) - ,fIJNBinsJetPt(copy.fIJNBinsJetPt) - ,fIJJetPtMin(copy.fIJJetPtMin) - ,fIJJetPtMax(copy.fIJJetPtMax) - ,fIJNBinsPt(copy.fIJNBinsPt) - ,fIJPtMin(copy.fIJPtMin) - ,fIJPtMax(copy.fIJPtMax) - ,fIJNBinsZ(copy.fIJNBinsZ) - ,fIJZMin(copy.fIJZMin) - ,fIJZMax(copy.fIJZMax) - ,fIJNBinsCosTheta(copy.fIJNBinsCosTheta) - ,fIJCosThetaMin(copy.fIJCosThetaMin) - ,fIJCosThetaMax(copy.fIJCosThetaMax) - ,fIJNBinsTheta(copy.fIJNBinsTheta) - ,fIJThetaMin(copy.fIJThetaMin) - ,fIJThetaMax(copy.fIJThetaMax) - ,fIJNBinsJt(copy.fIJNBinsJt) - ,fIJJtMin(copy.fIJJtMin) - ,fIJJtMax(copy.fIJJtMax) - ,fDiJetNBinsJetInvMass(copy.fDiJetNBinsJetInvMass) - ,fDiJetJetInvMassMin(copy.fDiJetJetInvMassMin) - ,fDiJetJetInvMassMax(copy.fDiJetJetInvMassMax) - ,fDiJetNBinsJetPt(copy.fDiJetNBinsJetPt) - ,fDiJetJetPtMin(copy.fDiJetJetPtMin) - ,fDiJetJetPtMax(copy.fDiJetJetPtMax) - ,fDiJetNBinsPt(copy.fDiJetNBinsPt) - ,fDiJetPtMin(copy.fDiJetPtMin) - ,fDiJetPtMax(copy.fDiJetPtMax) - ,fDiJetNBinsXi(copy.fDiJetNBinsXi) - ,fDiJetXiMin(copy.fDiJetXiMin) - ,fDiJetXiMax(copy.fDiJetXiMax) - ,fDiJetNBinsZ(copy.fDiJetNBinsZ) - ,fDiJetZMin(copy.fDiJetZMin) - ,fDiJetZMax(copy.fDiJetZMax) - ,fQADiJetNBinsInvMass(copy.fQADiJetNBinsInvMass) - ,fQADiJetInvMassMin(copy.fQADiJetInvMassMin) - ,fQADiJetInvMassMax(copy.fQADiJetInvMassMax) - ,fQADiJetNBinsJetPt(copy.fQADiJetNBinsJetPt) - ,fQADiJetJetPtMin(copy.fQADiJetJetPtMin) - ,fQADiJetJetPtMax(copy.fQADiJetJetPtMax) - ,fQADiJetNBinsDeltaPhi(copy.fQADiJetNBinsDeltaPhi) - ,fQADiJetDeltaPhiMin(copy.fQADiJetDeltaPhiMin) - ,fQADiJetDeltaPhiMax(copy.fQADiJetDeltaPhiMax) - ,fQADiJetNBinsDeltaEta(copy.fQADiJetNBinsDeltaEta) - ,fQADiJetDeltaEtaMin(copy.fQADiJetDeltaEtaMin) - ,fQADiJetDeltaEtaMax(copy.fQADiJetDeltaEtaMax) - ,fQADiJetNBinsDeltaPt(copy.fQADiJetNBinsDeltaPt) - ,fQADiJetDeltaPtMin(copy.fQADiJetDeltaPtMin) - ,fQADiJetDeltaPtMax(copy.fQADiJetDeltaPtMax) - ,fQADiJetNBinsInBal(copy.fQADiJetNBinsInBal) - ,fQADiJetInBalMin(copy.fQADiJetInBalMin) - ,fQADiJetInBalMax(copy.fQADiJetInBalMax) - ,fPhiCorrNBinsPt(copy.fPhiCorrNBinsPt) - ,fPhiCorrPtMin(copy.fPhiCorrPtMin) - ,fPhiCorrPtMax(copy.fPhiCorrPtMax) - ,fPhiCorrNBinsEta(copy.fPhiCorrNBinsEta) - ,fPhiCorrEtaMin(copy.fPhiCorrEtaMin) - ,fPhiCorrEtaMax(copy.fPhiCorrEtaMax) - ,fPhiCorrNBinsPhi(copy.fPhiCorrNBinsPhi) - ,fPhiCorrPhiMin(copy.fPhiCorrPhiMin) - ,fPhiCorrPhiMax(copy.fPhiCorrPhiMax) ,fCommonHistList(copy.fCommonHistList) ,fh1EvtSelection(copy.fh1EvtSelection) ,fh1VertexNContributors(copy.fh1VertexNContributors) ,fh1VertexZ(copy.fh1VertexZ) ,fh1EvtMult(copy.fh1EvtMult) ,fh1EvtCent(copy.fh1EvtCent) - ,fh2TrackPtVsDCAXY(copy.fh2TrackPtVsDCAXY) - ,fh2TrackPtVsDCAZ(copy.fh2TrackPtVsDCAXY) ,fh1Xsec(copy.fh1Xsec) ,fh1Trials(copy.fh1Trials) ,fh1PtHard(copy.fh1PtHard) @@ -885,35 +572,24 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fh2PtRecVsGenSec(copy.fh2PtRecVsGenSec) ,fQATrackHistosRecEffGen(copy.fQATrackHistosRecEffGen) ,fQATrackHistosRecEffRec(copy.fQATrackHistosRecEffRec) - ,fQATrackHistosSecRec(copy.fQATrackHistosSecRec) - ,fFFHistosRecEffGen(copy.fFFHistosRecEffGen) + ,fQATrackHistosSecRecNS(copy.fQATrackHistosSecRecNS) + ,fQATrackHistosSecRecS(copy.fQATrackHistosSecRecS) + ,fQATrackHistosSecRecSsc(copy.fQATrackHistosSecRecSsc) ,fFFHistosRecEffRec(copy.fFFHistosRecEffRec) - ,fFFHistosSecRec(copy.fFFHistosSecRec) - ,fhnResponseSinglePt(copy.fhnResponseSinglePt) - ,fh2SingleInvPtRecMnGenVsPtGen(copy.fh2SingleInvPtRecMnGenVsPtGen) - ,fhnResponseJetTrackPt(copy.fhnResponseJetTrackPt) - ,fhnResponseJetZ(copy.fhnResponseJetZ) - ,fhnResponseJetXi(copy.fhnResponseJetXi) + ,fFFHistosSecRecNS(copy.fFFHistosSecRecNS) + ,fFFHistosSecRecS(copy.fFFHistosSecRecS) + ,fFFHistosSecRecSsc(copy.fFFHistosSecRecSsc) // Background - ,fh1OutLeadingMult(copy.fh1OutLeadingMult) - ,fh1OutLeadingStatMult(copy.fh1OutLeadingStatMult) - ,fh1PerpMult(copy.fh1PerpMult) - ,fh1ASideMult(copy.fh1ASideMult) - ,fh1ASideWindowMult(copy.fh1ASideWindowMult) - ,fh1PerpWindowMult(copy.fh1PerpWindowMult) - ,fh1Out2JetsMult(copy.fh1Out2JetsMult) - ,fh1Out3JetsMult(copy.fh1Out3JetsMult) - ,fh1MedianClustersMult(copy.fh1MedianClustersMult) - ,fh1OutClustersMult(copy.fh1OutClustersMult) + ,fh1BckgMult0(copy.fh1BckgMult0) + ,fh1BckgMult1(copy.fh1BckgMult1) + ,fh1BckgMult2(copy.fh1BckgMult2) + ,fh1BckgMult3(copy.fh1BckgMult3) + ,fh1BckgMult4(copy.fh1BckgMult4) ,fh1FractionPtEmbedded(copy.fh1FractionPtEmbedded) ,fh1IndexEmbedded(copy.fh1IndexEmbedded) ,fh2DeltaPtVsJetPtEmbedded(copy.fh2DeltaPtVsJetPtEmbedded) ,fh2DeltaPtVsRecJetPtEmbedded(copy.fh2DeltaPtVsRecJetPtEmbedded) ,fh1DeltaREmbedded(copy.fh1DeltaREmbedded) - ,fh2ptVsDistNN_pt50_rec(copy.fh2ptVsDistNN_pt50_rec) - ,fh2ptVsDistNN_pt50_nonRec(copy.fh2ptVsDistNN_pt50_nonRec) - ,fh2ptVsDistNN_pt10_rec(copy.fh2ptVsDistNN_pt10_rec) - ,fh2ptVsDistNN_pt10_nonRec(copy.fh2ptVsDistNN_pt10_nonRec) ,fQABckgHisto0RecCuts(copy.fQABckgHisto0RecCuts) ,fQABckgHisto0Gen(copy.fQABckgHisto0Gen) ,fQABckgHisto1RecCuts(copy.fQABckgHisto1RecCuts) @@ -925,47 +601,31 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fQABckgHisto4RecCuts(copy.fQABckgHisto4RecCuts) ,fQABckgHisto4Gen(copy.fQABckgHisto4Gen) ,fFFBckgHisto0RecCuts(copy.fFFBckgHisto0RecCuts) - ,fFFBckgHisto0RecLeading(copy.fFFBckgHisto0RecLeading) ,fFFBckgHisto0Gen(copy.fFFBckgHisto0Gen) - ,fFFBckgHisto0GenLeading(copy.fFFBckgHisto0GenLeading) ,fFFBckgHisto1RecCuts(copy.fFFBckgHisto1RecCuts) - ,fFFBckgHisto1RecLeading(copy.fFFBckgHisto1RecLeading) ,fFFBckgHisto1Gen(copy.fFFBckgHisto1Gen) - ,fFFBckgHisto1GenLeading(copy.fFFBckgHisto1GenLeading) ,fFFBckgHisto2RecCuts(copy.fFFBckgHisto2RecCuts) - ,fFFBckgHisto2RecLeading(copy.fFFBckgHisto2RecLeading) ,fFFBckgHisto2Gen(copy.fFFBckgHisto2Gen) - ,fFFBckgHisto2GenLeading(copy.fFFBckgHisto2GenLeading) ,fFFBckgHisto3RecCuts(copy.fFFBckgHisto3RecCuts) - ,fFFBckgHisto3RecLeading(copy.fFFBckgHisto3RecLeading) ,fFFBckgHisto3Gen(copy.fFFBckgHisto3Gen) - ,fFFBckgHisto3GenLeading(copy.fFFBckgHisto3GenLeading) ,fFFBckgHisto4RecCuts(copy.fFFBckgHisto4RecCuts) - ,fFFBckgHisto4RecLeading(copy.fFFBckgHisto4RecLeading) ,fFFBckgHisto4Gen(copy.fFFBckgHisto4Gen) - ,fFFBckgHisto4GenLeading(copy.fFFBckgHisto4GenLeading) - ,fIJBckgHisto0RecCuts(copy.fIJBckgHisto0RecCuts) - ,fIJBckgHisto0RecLeading(copy.fIJBckgHisto0RecLeading) - ,fIJBckgHisto0Gen(copy.fIJBckgHisto0Gen) - ,fIJBckgHisto0GenLeading(copy.fIJBckgHisto0GenLeading) - ,fIJBckgHisto1RecCuts(copy.fIJBckgHisto1RecCuts) - ,fIJBckgHisto1RecLeading(copy.fIJBckgHisto1RecLeading) - ,fIJBckgHisto1Gen(copy.fIJBckgHisto1Gen) - ,fIJBckgHisto1GenLeading(copy.fIJBckgHisto1GenLeading) - ,fIJBckgHisto2RecCuts(copy.fIJBckgHisto2RecCuts) - ,fIJBckgHisto2RecLeading(copy.fIJBckgHisto2RecLeading) - ,fIJBckgHisto2Gen(copy.fIJBckgHisto2Gen) - ,fIJBckgHisto2GenLeading(copy.fIJBckgHisto2GenLeading) - ,fIJBckgHisto3RecCuts(copy.fIJBckgHisto3RecCuts) - ,fIJBckgHisto3RecLeading(copy.fIJBckgHisto3RecLeading) - ,fIJBckgHisto3Gen(copy.fIJBckgHisto3Gen) - ,fIJBckgHisto3GenLeading(copy.fIJBckgHisto3GenLeading) - ,fIJBckgHisto4RecCuts(copy.fIJBckgHisto4RecCuts) - ,fIJBckgHisto4RecLeading(copy.fIJBckgHisto4RecLeading) - ,fIJBckgHisto4Gen(copy.fIJBckgHisto4Gen) - ,fIJBckgHisto4GenLeading(copy.fIJBckgHisto4GenLeading) + ,fFFBckgHisto0RecEffRec(copy.fFFBckgHisto0RecEffRec) + ,fFFBckgHisto0SecRecNS(copy.fFFBckgHisto0SecRecNS) + ,fFFBckgHisto0SecRecS(copy.fFFBckgHisto0SecRecS) + ,fFFBckgHisto0SecRecSsc(copy.fFFBckgHisto0SecRecSsc) + // jet shape + ,fProNtracksLeadingJet(copy.fProNtracksLeadingJet) + ,fProDelR80pcPt(copy.fProDelR80pcPt) + ,fProNtracksLeadingJetGen(copy.fProNtracksLeadingJetGen) + ,fProDelR80pcPtGen(copy.fProDelR80pcPtGen) + ,fProNtracksLeadingJetBgrPerp2(copy.fProNtracksLeadingJetBgrPerp2) + ,fProNtracksLeadingJetRecPrim(copy.fProNtracksLeadingJetRecPrim) + ,fProDelR80pcPtRecPrim(copy.fProDelR80pcPtRecPrim) + ,fProNtracksLeadingJetRecSecNS(copy.fProNtracksLeadingJetRecSecNS) + ,fProNtracksLeadingJetRecSecS(copy.fProNtracksLeadingJetRecSecS) + ,fProNtracksLeadingJetRecSecSsc(copy.fProNtracksLeadingJetRecSecSsc) ,fRandom(copy.fRandom) - ,fBckgSubMethod(copy.fBckgSubMethod) { // copy constructor fBckgType[0] = copy.fBckgType[0]; @@ -973,6 +633,17 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const fBckgType[2] = copy.fBckgType[2]; fBckgType[3] = copy.fBckgType[3]; fBckgType[4] = copy.fBckgType[4]; + + + for(Int_t ii=0; ii<5; ii++){ + fProDelRPtSum[ii] = copy.fProDelRPtSum[ii]; + fProDelRPtSumGen[ii] = copy.fProDelRPtSumGen[ii]; + fProDelRPtSumBgrPerp2[ii] = copy.fProDelRPtSumBgrPerp2[ii]; + fProDelRPtSumRecPrim[ii] = copy.fProDelRPtSumRecPrim[ii]; + fProDelRPtSumRecSecNS[ii] = copy.fProDelRPtSumRecSecNS[ii]; + fProDelRPtSumRecSecS[ii] = copy.fProDelRPtSumRecSecS[ii]; + fProDelRPtSumRecSecSsc[ii] = copy.fProDelRPtSumRecSecSsc[ii]; + } } // _________________________________________________________________________________________________________________________________ @@ -983,301 +654,193 @@ AliAnalysisTaskFragmentationFunction& AliAnalysisTaskFragmentationFunction::oper if(this!=&o){ AliAnalysisTaskSE::operator=(o); - fESD = o.fESD; - fAOD = o.fAOD; - fAODJets = o.fAODJets; - fAODExtension = o.fAODExtension; - fNonStdFile = o.fNonStdFile; - fBranchRecJets = o.fBranchRecJets; - fBranchRecBackJets = o.fBranchRecBackJets; - fBranchRecBckgClusters = o.fBranchRecBckgClusters; - fBranchGenJets = o.fBranchGenJets; - fBranchEmbeddedJets = o.fBranchEmbeddedJets; - fTrackTypeGen = o.fTrackTypeGen; - fJetTypeGen = o.fJetTypeGen; - fJetTypeRecEff = o.fJetTypeRecEff; - fUseAODInputJets = o.fUseAODInputJets; - fFilterMask = o.fFilterMask; - fUsePhysicsSelection = o.fUsePhysicsSelection; - fEvtSelectionMask = o.fEvtSelectionMask; - fEventClass = o.fEventClass; - fMaxVertexZ = o.fMaxVertexZ; - fTrackPtCut = o.fTrackPtCut; - fTrackEtaMin = o.fTrackEtaMin; - fTrackEtaMax = o.fTrackEtaMax; - fTrackPhiMin = o.fTrackPhiMin; - fTrackPhiMax = o.fTrackPhiMax; - fUseExtraTracks = o.fUseExtraTracks; - fUseExtraTracksBgr = o.fUseExtraTracksBgr; - fCutFractionPtEmbedded = o.fCutFractionPtEmbedded; - fUseEmbeddedJetAxis = o.fUseEmbeddedJetAxis; - fUseEmbeddedJetPt = o.fUseEmbeddedJetPt; - fJetPtCut = o.fJetPtCut; - fJetEtaMin = o.fJetEtaMin; - fJetEtaMax = o.fJetEtaMax; - fJetPhiMin = o.fJetPhiMin; - fJetPhiMax = o.fJetPhiMin; - fDiJetCut = o.fDiJetCut; - fDiJetDeltaPhiCut = o.fDiJetDeltaPhiCut; - fDiJetPtFractionCut = o.fDiJetPtFractionCut; - fDiJetCDFCut = o.fDiJetCDFCut; - fDiJetKindBins = o.fDiJetKindBins; - fFFRadius = o.fFFRadius; - fFFMaxTrackPt = o.fFFMaxTrackPt; - fFFMinnTracks = o.fFFMinnTracks; - fFFBckgRadius = o.fFFBckgRadius; - fBckgMode = o.fBckgMode; - fIJMode = o.fIJMode; - fQAMode = o.fQAMode; - fFFMode = o.fFFMode; - fDJMode = o.fDJMode; - fEffMode = o.fEffMode; - fPhiCorrMode = o.fPhiCorrMode; - fBckgType[0] = o.fBckgType[0]; - fBckgType[1] = o.fBckgType[1]; - fBckgType[2] = o.fBckgType[2]; - fBckgType[3] = o.fBckgType[3]; - fBckgType[4] = o.fBckgType[4]; - fUseRecEffRecJetPtBins = o.fUseRecEffRecJetPtBins; - fUseResponseRecJetPtBins = o.fUseResponseRecJetPtBins; - fAvgTrials = o.fAvgTrials; - fTracksRec = o.fTracksRec; - fTracksRecCuts = o.fTracksRecCuts; - fTracksGen = o.fTracksGen; - fTracksAODMCCharged = o.fTracksAODMCCharged; - fTracksAODMCChargedSec = o.fTracksAODMCChargedSec; - fTracksRecQualityCuts = o.fTracksRecQualityCuts; - fJetsRec = o.fJetsRec; - fJetsRecCuts = o.fJetsRecCuts; - fJetsGen = o.fJetsGen; - fJetsRecEff = o.fJetsRecEff; - fJetsEmbedded = o.fJetsEmbedded; - fBckgJetsRec = o.fBckgJetsRec; - fBckgJetsRecCuts = o.fBckgJetsRecCuts; - fBckgJetsGen = o.fBckgJetsGen; - fQATrackHistosRec = o.fQATrackHistosRec; - fQATrackHistosRecCuts = o.fQATrackHistosRecCuts; - fQATrackHistosGen = o.fQATrackHistosGen; - fQAJetHistosRec = o.fQAJetHistosRec; - fQAJetHistosRecCuts = o.fQAJetHistosRecCuts; - fQAJetHistosRecCutsLeading = o.fQAJetHistosRecCutsLeading; - fQAJetHistosGen = o.fQAJetHistosGen; - fQAJetHistosGenLeading = o.fQAJetHistosGenLeading; - fQAJetHistosRecEffLeading = o.fQAJetHistosRecEffLeading; - fFFHistosRecCuts = o.fFFHistosRecCuts; - fFFHistosRecLeading = o.fFFHistosRecLeading; - fFFHistosRecLeadingTrack = o.fFFHistosRecLeadingTrack; - fFFHistosGen = o.fFFHistosGen; - fFFHistosGenLeading = o.fFFHistosGenLeading; - fFFHistosGenLeadingTrack = o.fFFHistosGenLeadingTrack; - fIJHistosRecCuts = o.fIJHistosRecCuts; - fIJHistosRecLeading = o.fIJHistosRecLeading; - fIJHistosRecLeadingTrack = o.fIJHistosRecLeadingTrack; - fIJHistosGen = o.fIJHistosGen; - fIJHistosGenLeading = o.fIJHistosGenLeading; - fIJHistosGenLeadingTrack = o.fIJHistosGenLeadingTrack; - fFFDiJetHistosRecCuts = o.fFFDiJetHistosRecCuts; - fFFDiJetHistosRecLeading = o.fFFDiJetHistosRecLeading; - fFFDiJetHistosRecLeadingTrack = o.fFFDiJetHistosRecLeadingTrack; - fFFDiJetHistosGen = o.fFFDiJetHistosGen; - fFFDiJetHistosGenLeading = o.fFFDiJetHistosGenLeading; - fFFDiJetHistosGenLeadingTrack = o.fFFDiJetHistosGenLeadingTrack; - fQADiJetHistosRecCuts = o.fQADiJetHistosRecCuts; - fQADiJetHistosGen = o.fQADiJetHistosGen; - fPhiCorrHistosJetArea = o.fPhiCorrHistosJetArea; - fPhiCorrHistosTransverseArea = o.fPhiCorrHistosTransverseArea; - fPhiCorrHistosAwayArea = o.fPhiCorrHistosAwayArea; - fQATrackHighPtThreshold = o.fQATrackHighPtThreshold; - fFFNBinsJetPt = o.fFFNBinsJetPt; - fFFJetPtMin = o.fFFJetPtMin; - fFFJetPtMax = o.fFFJetPtMax; - fFFNBinsPt = o.fFFNBinsPt; - fFFPtMin = o.fFFPtMin; - fFFPtMax = o.fFFPtMax; - fFFNBinsXi = o.fFFNBinsXi; - fFFXiMin = o.fFFXiMin; - fFFXiMax = o.fFFXiMax; - fFFNBinsZ = o.fFFNBinsZ; - fFFZMin = o.fFFZMin; - fFFZMax = o.fFFZMax; - fFFLogZBins = o.fFFLogZBins; - fQAJetNBinsPt = o.fQAJetNBinsPt; - fQAJetPtMin = o.fQAJetPtMin; - fQAJetPtMax = o.fQAJetPtMax; - fQAJetNBinsEta = o.fQAJetNBinsEta; - fQAJetEtaMin = o.fQAJetEtaMin; - fQAJetEtaMax = o.fQAJetEtaMax; - fQAJetNBinsPhi = o.fQAJetNBinsPhi; - fQAJetPhiMin = o.fQAJetPhiMin; - fQAJetPhiMax = o.fQAJetPhiMax; - fQATrackNBinsPt = o.fQATrackNBinsPt; - fQATrackPtMin = o.fQATrackPtMin; - fQATrackPtMax = o.fQATrackPtMax; - fQATrackNBinsEta = o.fQATrackNBinsEta; - fQATrackEtaMin = o.fQATrackEtaMin; - fQATrackEtaMax = o.fQATrackEtaMax; - fQATrackNBinsPhi = o.fQATrackNBinsPhi; - fQATrackPhiMin = o.fQATrackPhiMin; - fQATrackPhiMax = o.fQATrackPhiMax; - fIJNBinsJetPt = o.fIJNBinsJetPt; - fIJJetPtMin = o.fIJJetPtMin; - fIJJetPtMax = o.fIJJetPtMax; - fIJNBinsPt = o.fIJNBinsPt; - fIJPtMin = o.fIJPtMin; - fIJPtMax = o.fIJPtMax; - fIJNBinsZ = o.fIJNBinsZ; - fIJZMin = o.fIJZMin; - fIJZMax = o.fIJZMax; - fIJNBinsCosTheta = o.fIJNBinsCosTheta; - fIJCosThetaMin = o.fIJCosThetaMin; - fIJCosThetaMax = o.fIJCosThetaMax; - fIJNBinsTheta = o.fIJNBinsTheta; - fIJThetaMin = o.fIJThetaMin; - fIJThetaMax = o.fIJThetaMax; - fIJNBinsJt = o.fIJNBinsJt; - fIJJtMin = o.fIJJtMin; - fIJJtMax = o.fIJJtMax; - fDiJetNBinsJetInvMass = o.fDiJetNBinsJetInvMass; - fDiJetJetInvMassMin = o.fDiJetJetInvMassMin; - fDiJetJetInvMassMax = o.fDiJetJetInvMassMax; - fDiJetNBinsJetPt = o.fDiJetNBinsJetPt; - fDiJetJetPtMin = o.fDiJetJetPtMin; - fDiJetJetPtMax = o.fDiJetJetPtMax; - fDiJetNBinsPt = o.fDiJetNBinsPt; - fDiJetPtMin = o.fDiJetPtMin; - fDiJetPtMax = o.fDiJetPtMax; - fDiJetNBinsXi = o.fDiJetNBinsXi; - fDiJetXiMin = o.fDiJetXiMin; - fDiJetXiMax = o.fDiJetXiMax; - fDiJetNBinsZ = o.fDiJetNBinsZ; - fDiJetZMin = o.fDiJetZMin; - fDiJetZMax = o.fDiJetZMax; - fQADiJetNBinsInvMass = o.fQADiJetNBinsInvMass; - fQADiJetInvMassMin = o.fQADiJetInvMassMin; - fQADiJetInvMassMax = o.fQADiJetInvMassMax; - fQADiJetNBinsJetPt = o.fQADiJetNBinsJetPt; - fQADiJetJetPtMin = o.fQADiJetJetPtMin; - fQADiJetJetPtMax = o.fQADiJetJetPtMax; - fQADiJetNBinsDeltaPhi = o.fQADiJetNBinsDeltaPhi; - fQADiJetDeltaPhiMin = o.fQADiJetDeltaPhiMin; - fQADiJetDeltaPhiMax = o.fQADiJetDeltaPhiMax; - fQADiJetNBinsDeltaEta = o.fQADiJetNBinsDeltaEta; - fQADiJetDeltaEtaMin = o.fQADiJetDeltaEtaMin; - fQADiJetDeltaEtaMax = o.fQADiJetDeltaEtaMax; - fQADiJetNBinsDeltaPt = o.fQADiJetNBinsDeltaPt; - fQADiJetDeltaPtMin = o.fQADiJetDeltaPtMin; - fQADiJetDeltaPtMax = o.fQADiJetDeltaPtMax; - fQADiJetNBinsInBal = o.fQADiJetNBinsInBal; - fQADiJetInBalMin = o.fQADiJetInBalMin; - fQADiJetInBalMax = o.fQADiJetInBalMax; - fPhiCorrNBinsPt = o.fPhiCorrNBinsPt; - fPhiCorrPtMin = o.fPhiCorrPtMin; - fPhiCorrPtMax = o.fPhiCorrPtMax; - fPhiCorrNBinsEta = o.fPhiCorrNBinsEta; - fPhiCorrEtaMin = o.fPhiCorrEtaMin; - fPhiCorrEtaMax = o.fPhiCorrEtaMax; - fPhiCorrNBinsPhi = o.fPhiCorrNBinsPhi; - fPhiCorrPhiMin = o.fPhiCorrPhiMin; - fPhiCorrPhiMax = o.fPhiCorrPhiMax; - fCommonHistList = o.fCommonHistList; - fh1EvtSelection = o.fh1EvtSelection; - fh1VertexNContributors = o.fh1VertexNContributors; - fh1VertexZ = o.fh1VertexZ; - fh1EvtMult = o.fh1EvtMult; - fh1EvtCent = o.fh1EvtCent; - fh2TrackPtVsDCAXY = o.fh2TrackPtVsDCAXY; - fh2TrackPtVsDCAZ = o.fh2TrackPtVsDCAXY; - fh1Xsec = o.fh1Xsec; - fh1Trials = o.fh1Trials; - fh1PtHard = o.fh1PtHard; - fh1PtHardTrials = o.fh1PtHardTrials; - fh1nRecJetsCuts = o.fh1nRecJetsCuts; - fh1nGenJets = o.fh1nGenJets; - fh1nRecEffJets = o.fh1nRecEffJets; - fh1nEmbeddedJets = o.fh1nEmbeddedJets; - fh2PtRecVsGenPrim = o.fh2PtRecVsGenPrim; - fh2PtRecVsGenSec = o.fh2PtRecVsGenSec; - fQATrackHistosRecEffGen = o.fQATrackHistosRecEffGen; - fQATrackHistosRecEffRec = o.fQATrackHistosRecEffRec; - fQATrackHistosSecRec = o.fQATrackHistosSecRec; - fFFHistosRecEffGen = o.fFFHistosRecEffGen; - fFFHistosRecEffRec = o.fFFHistosRecEffRec; - fFFHistosSecRec = o.fFFHistosSecRec; - fhnResponseSinglePt = o.fhnResponseSinglePt; - fh2SingleInvPtRecMnGenVsPtGen = o.fh2SingleInvPtRecMnGenVsPtGen; - fhnResponseJetTrackPt = o.fhnResponseJetTrackPt; - fhnResponseJetZ = o.fhnResponseJetZ; - fhnResponseJetXi = o.fhnResponseJetXi; + fESD = o.fESD; + fAOD = o.fAOD; + fAODJets = o.fAODJets; + fAODExtension = o.fAODExtension; + fNonStdFile = o.fNonStdFile; + fBranchRecJets = o.fBranchRecJets; + fBranchRecBckgClusters = o.fBranchRecBckgClusters; + fBranchGenJets = o.fBranchGenJets; + fBranchEmbeddedJets = o.fBranchEmbeddedJets; + fTrackTypeGen = o.fTrackTypeGen; + fJetTypeGen = o.fJetTypeGen; + fJetTypeRecEff = o.fJetTypeRecEff; + fUseAODInputJets = o.fUseAODInputJets; + fFilterMask = o.fFilterMask; + fUsePhysicsSelection = o.fUsePhysicsSelection; + fEvtSelectionMask = o.fEvtSelectionMask; + fEventClass = o.fEventClass; + fMaxVertexZ = o.fMaxVertexZ; + fTrackPtCut = o.fTrackPtCut; + fTrackEtaMin = o.fTrackEtaMin; + fTrackEtaMax = o.fTrackEtaMax; + fTrackPhiMin = o.fTrackPhiMin; + fTrackPhiMax = o.fTrackPhiMax; + fUseExtraTracks = o.fUseExtraTracks; + fUseExtraTracksBgr = o.fUseExtraTracksBgr; + fCutFractionPtEmbedded = o.fCutFractionPtEmbedded; + fUseEmbeddedJetAxis = o.fUseEmbeddedJetAxis; + fUseEmbeddedJetPt = o.fUseEmbeddedJetPt; + fJetPtCut = o.fJetPtCut; + fJetEtaMin = o.fJetEtaMin; + fJetEtaMax = o.fJetEtaMax; + fJetPhiMin = o.fJetPhiMin; + fJetPhiMax = o.fJetPhiMin; + fFFRadius = o.fFFRadius; + fFFMinLTrackPt = o.fFFMinLTrackPt; + fFFMaxTrackPt = o.fFFMaxTrackPt; + fFFMinnTracks = o.fFFMinnTracks; + fFFBckgRadius = o.fFFBckgRadius; + fBckgMode = o.fBckgMode; + fQAMode = o.fQAMode; + fFFMode = o.fFFMode; + fEffMode = o.fEffMode; + fJSMode = o.fJSMode; + fBckgType[0] = o.fBckgType[0]; + fBckgType[1] = o.fBckgType[1]; + fBckgType[2] = o.fBckgType[2]; + fBckgType[3] = o.fBckgType[3]; + fBckgType[4] = o.fBckgType[4]; + fAvgTrials = o.fAvgTrials; + fTracksRecCuts = o.fTracksRecCuts; + fTracksGen = o.fTracksGen; + fTracksAODMCCharged = o.fTracksAODMCCharged; + fTracksAODMCChargedSecNS = o.fTracksAODMCChargedSecNS; + fTracksAODMCChargedSecS = o.fTracksAODMCChargedSecS; + fTracksRecQualityCuts = o.fTracksRecQualityCuts; + fJetsRec = o.fJetsRec; + fJetsRecCuts = o.fJetsRecCuts; + fJetsGen = o.fJetsGen; + fJetsRecEff = o.fJetsRecEff; + fJetsEmbedded = o.fJetsEmbedded; + fBckgJetsRec = o.fBckgJetsRec; + fBckgJetsRecCuts = o.fBckgJetsRecCuts; + fBckgJetsGen = o.fBckgJetsGen; + fQATrackHistosRecCuts = o.fQATrackHistosRecCuts; + fQATrackHistosGen = o.fQATrackHistosGen; + fQAJetHistosRec = o.fQAJetHistosRec; + fQAJetHistosRecCuts = o.fQAJetHistosRecCuts; + fQAJetHistosRecCutsLeading = o.fQAJetHistosRecCutsLeading; + fQAJetHistosGen = o.fQAJetHistosGen; + fQAJetHistosGenLeading = o.fQAJetHistosGenLeading; + fQAJetHistosRecEffLeading = o.fQAJetHistosRecEffLeading; + fFFHistosRecCuts = o.fFFHistosRecCuts; + fFFHistosGen = o.fFFHistosGen; + fQATrackHighPtThreshold = o.fQATrackHighPtThreshold; + fFFNBinsJetPt = o.fFFNBinsJetPt; + fFFJetPtMin = o.fFFJetPtMin; + fFFJetPtMax = o.fFFJetPtMax; + fFFNBinsPt = o.fFFNBinsPt; + fFFPtMin = o.fFFPtMin; + fFFPtMax = o.fFFPtMax; + fFFNBinsXi = o.fFFNBinsXi; + fFFXiMin = o.fFFXiMin; + fFFXiMax = o.fFFXiMax; + fFFNBinsZ = o.fFFNBinsZ; + fFFZMin = o.fFFZMin; + fFFZMax = o.fFFZMax; + fQAJetNBinsPt = o.fQAJetNBinsPt; + fQAJetPtMin = o.fQAJetPtMin; + fQAJetPtMax = o.fQAJetPtMax; + fQAJetNBinsEta = o.fQAJetNBinsEta; + fQAJetEtaMin = o.fQAJetEtaMin; + fQAJetEtaMax = o.fQAJetEtaMax; + fQAJetNBinsPhi = o.fQAJetNBinsPhi; + fQAJetPhiMin = o.fQAJetPhiMin; + fQAJetPhiMax = o.fQAJetPhiMax; + fQATrackNBinsPt = o.fQATrackNBinsPt; + fQATrackPtMin = o.fQATrackPtMin; + fQATrackPtMax = o.fQATrackPtMax; + fQATrackNBinsEta = o.fQATrackNBinsEta; + fQATrackEtaMin = o.fQATrackEtaMin; + fQATrackEtaMax = o.fQATrackEtaMax; + fQATrackNBinsPhi = o.fQATrackNBinsPhi; + fQATrackPhiMin = o.fQATrackPhiMin; + fQATrackPhiMax = o.fQATrackPhiMax; + fCommonHistList = o.fCommonHistList; + fh1EvtSelection = o.fh1EvtSelection; + fh1VertexNContributors = o.fh1VertexNContributors; + fh1VertexZ = o.fh1VertexZ; + fh1EvtMult = o.fh1EvtMult; + fh1EvtCent = o.fh1EvtCent; + fh1Xsec = o.fh1Xsec; + fh1Trials = o.fh1Trials; + fh1PtHard = o.fh1PtHard; + fh1PtHardTrials = o.fh1PtHardTrials; + fh1nRecJetsCuts = o.fh1nRecJetsCuts; + fh1nGenJets = o.fh1nGenJets; + fh1nRecEffJets = o.fh1nRecEffJets; + fh1nEmbeddedJets = o.fh1nEmbeddedJets; + fh2PtRecVsGenPrim = o.fh2PtRecVsGenPrim; + fh2PtRecVsGenSec = o.fh2PtRecVsGenSec; + fQATrackHistosRecEffGen = o.fQATrackHistosRecEffGen; + fQATrackHistosRecEffRec = o.fQATrackHistosRecEffRec; + fQATrackHistosSecRecNS = o.fQATrackHistosSecRecNS; + fQATrackHistosSecRecS = o.fQATrackHistosSecRecS; + fQATrackHistosSecRecSsc = o.fQATrackHistosSecRecSsc; + fFFHistosRecEffRec = o.fFFHistosRecEffRec; + fFFHistosSecRecNS = o.fFFHistosSecRecNS; + fFFHistosSecRecS = o.fFFHistosSecRecS; + fFFHistosSecRecSsc = o.fFFHistosSecRecSsc; // Background - fh1OutLeadingMult = o.fh1OutLeadingMult; - fh1OutLeadingStatMult = o.fh1OutLeadingStatMult; - fh1PerpMult = o.fh1PerpMult; - fh1ASideMult = o.fh1ASideMult; - fh1ASideWindowMult = o.fh1ASideWindowMult; - fh1PerpWindowMult = o.fh1PerpWindowMult; - fh1Out2JetsMult = o.fh1Out2JetsMult; - fh1Out3JetsMult = o.fh1Out3JetsMult; - fh1MedianClustersMult = o.fh1MedianClustersMult; - fh1OutClustersMult = o.fh1OutClustersMult; - fh1FractionPtEmbedded = o.fh1FractionPtEmbedded; - fh1IndexEmbedded = o.fh1IndexEmbedded; - fh2DeltaPtVsJetPtEmbedded = o.fh2DeltaPtVsJetPtEmbedded; - fh2DeltaPtVsRecJetPtEmbedded = o.fh2DeltaPtVsRecJetPtEmbedded; - fh1DeltaREmbedded = o.fh1DeltaREmbedded; - fh2ptVsDistNN_pt50_rec = o.fh2ptVsDistNN_pt50_rec; - fh2ptVsDistNN_pt50_nonRec = o.fh2ptVsDistNN_pt50_nonRec; - fh2ptVsDistNN_pt10_rec = o.fh2ptVsDistNN_pt10_rec; - fh2ptVsDistNN_pt10_nonRec = o.fh2ptVsDistNN_pt10_nonRec; - fQABckgHisto0RecCuts = o.fQABckgHisto0RecCuts; - fQABckgHisto0Gen = o.fQABckgHisto0Gen; - fQABckgHisto1RecCuts = o.fQABckgHisto1RecCuts; - fQABckgHisto1Gen = o.fQABckgHisto1Gen; - fQABckgHisto2RecCuts = o.fQABckgHisto2RecCuts; - fQABckgHisto2Gen = o.fQABckgHisto2Gen; - fQABckgHisto3RecCuts = o.fQABckgHisto3RecCuts; - fQABckgHisto3Gen = o.fQABckgHisto3Gen; - fQABckgHisto4RecCuts = o.fQABckgHisto4RecCuts; - fQABckgHisto4Gen = o.fQABckgHisto4Gen; - fFFBckgHisto0RecCuts = o.fFFBckgHisto0RecCuts; - fFFBckgHisto0RecLeading = o.fFFBckgHisto0RecLeading; - fFFBckgHisto0Gen = o.fFFBckgHisto0Gen; - fFFBckgHisto0GenLeading = o.fFFBckgHisto0GenLeading; - fFFBckgHisto1RecCuts = o.fFFBckgHisto1RecCuts; - fFFBckgHisto1RecLeading = o.fFFBckgHisto1RecLeading; - fFFBckgHisto1Gen = o.fFFBckgHisto1Gen; - fFFBckgHisto1GenLeading = o.fFFBckgHisto1GenLeading; - fFFBckgHisto2RecCuts = o.fFFBckgHisto2RecCuts; - fFFBckgHisto2RecLeading = o.fFFBckgHisto2RecLeading; - fFFBckgHisto2Gen = o.fFFBckgHisto2Gen; - fFFBckgHisto2GenLeading = o.fFFBckgHisto2GenLeading; - fFFBckgHisto3RecCuts = o.fFFBckgHisto3RecCuts; - fFFBckgHisto3RecLeading = o.fFFBckgHisto3RecLeading; - fFFBckgHisto3Gen = o.fFFBckgHisto3Gen; - fFFBckgHisto3GenLeading = o.fFFBckgHisto3GenLeading; - fFFBckgHisto4RecCuts = o.fFFBckgHisto4RecCuts; - fFFBckgHisto4RecLeading = o.fFFBckgHisto4RecLeading; - fFFBckgHisto4Gen = o.fFFBckgHisto4Gen; - fFFBckgHisto4GenLeading = o.fFFBckgHisto4GenLeading; - fIJBckgHisto0RecCuts = o.fIJBckgHisto0RecCuts; - fIJBckgHisto0RecLeading = o.fIJBckgHisto0RecLeading; - fIJBckgHisto0Gen = o.fIJBckgHisto0Gen; - fIJBckgHisto0GenLeading = o.fIJBckgHisto0GenLeading; - fIJBckgHisto1RecCuts = o.fIJBckgHisto1RecCuts; - fIJBckgHisto1RecLeading = o.fIJBckgHisto1RecLeading; - fIJBckgHisto1Gen = o.fIJBckgHisto1Gen; - fIJBckgHisto1GenLeading = o.fIJBckgHisto1GenLeading; - fIJBckgHisto2RecCuts = o.fIJBckgHisto2RecCuts; - fIJBckgHisto2RecLeading = o.fIJBckgHisto2RecLeading; - fIJBckgHisto2Gen = o.fIJBckgHisto2Gen; - fIJBckgHisto2GenLeading = o.fIJBckgHisto2GenLeading; - fIJBckgHisto3Gen = o.fIJBckgHisto3Gen; - fIJBckgHisto3GenLeading = o.fIJBckgHisto3GenLeading; - fIJBckgHisto4Gen = o.fIJBckgHisto4Gen; - fIJBckgHisto4GenLeading = o.fIJBckgHisto4GenLeading; - fRandom = o.fRandom; - fBckgSubMethod = o.fBckgSubMethod; + fh1BckgMult0 = o.fh1BckgMult0; + fh1BckgMult1 = o.fh1BckgMult1; + fh1BckgMult2 = o.fh1BckgMult2; + fh1BckgMult3 = o.fh1BckgMult3; + fh1BckgMult4 = o.fh1BckgMult4; + fh1FractionPtEmbedded = o.fh1FractionPtEmbedded; + fh1IndexEmbedded = o.fh1IndexEmbedded; + fh2DeltaPtVsJetPtEmbedded = o.fh2DeltaPtVsJetPtEmbedded; + fh2DeltaPtVsRecJetPtEmbedded = o.fh2DeltaPtVsRecJetPtEmbedded; + fh1DeltaREmbedded = o.fh1DeltaREmbedded; + fQABckgHisto0RecCuts = o.fQABckgHisto0RecCuts; + fQABckgHisto0Gen = o.fQABckgHisto0Gen; + fQABckgHisto1RecCuts = o.fQABckgHisto1RecCuts; + fQABckgHisto1Gen = o.fQABckgHisto1Gen; + fQABckgHisto2RecCuts = o.fQABckgHisto2RecCuts; + fQABckgHisto2Gen = o.fQABckgHisto2Gen; + fQABckgHisto3RecCuts = o.fQABckgHisto3RecCuts; + fQABckgHisto3Gen = o.fQABckgHisto3Gen; + fQABckgHisto4RecCuts = o.fQABckgHisto4RecCuts; + fQABckgHisto4Gen = o.fQABckgHisto4Gen; + fFFBckgHisto0RecCuts = o.fFFBckgHisto0RecCuts; + fFFBckgHisto0Gen = o.fFFBckgHisto0Gen; + fFFBckgHisto1RecCuts = o.fFFBckgHisto1RecCuts; + fFFBckgHisto1Gen = o.fFFBckgHisto1Gen; + fFFBckgHisto2RecCuts = o.fFFBckgHisto2RecCuts; + fFFBckgHisto2Gen = o.fFFBckgHisto2Gen; + fFFBckgHisto3RecCuts = o.fFFBckgHisto3RecCuts; + fFFBckgHisto3Gen = o.fFFBckgHisto3Gen; + fFFBckgHisto4RecCuts = o.fFFBckgHisto4RecCuts; + fFFBckgHisto4Gen = o.fFFBckgHisto4Gen; + fFFBckgHisto0RecEffRec = o.fFFBckgHisto0RecEffRec; + fFFBckgHisto0SecRecNS = o.fFFBckgHisto0SecRecNS; + fFFBckgHisto0SecRecS = o.fFFBckgHisto0SecRecS; + fFFBckgHisto0SecRecSsc = o.fFFBckgHisto0SecRecSsc; + fProNtracksLeadingJet = o.fProNtracksLeadingJet; + fProDelR80pcPt = o.fProDelR80pcPt; + fProNtracksLeadingJetGen = o.fProNtracksLeadingJetGen; + fProDelR80pcPtGen = o.fProDelR80pcPtGen; + fProNtracksLeadingJetBgrPerp2 = o.fProNtracksLeadingJetBgrPerp2; + fProNtracksLeadingJetRecPrim = o.fProNtracksLeadingJetRecPrim; + fProDelR80pcPtRecPrim = o.fProDelR80pcPtRecPrim; + fProNtracksLeadingJetRecSecNS = o.fProNtracksLeadingJetRecSecNS; + fProNtracksLeadingJetRecSecS = o.fProNtracksLeadingJetRecSecS; + fProNtracksLeadingJetRecSecSsc = o.fProNtracksLeadingJetRecSecSsc; + fRandom = o.fRandom; + + for(Int_t ii=0; ii<5; ii++){ + fProDelRPtSum[ii] = o.fProDelRPtSum[ii]; + fProDelRPtSumGen[ii] = o.fProDelRPtSumGen[ii]; + fProDelRPtSumBgrPerp2[ii] = o.fProDelRPtSumBgrPerp2[ii]; + fProDelRPtSumRecPrim[ii] = o.fProDelRPtSumRecPrim[ii]; + fProDelRPtSumRecSecNS[ii] = o.fProDelRPtSumRecSecNS[ii]; + fProDelRPtSumRecSecS[ii] = o.fProDelRPtSumRecSecS[ii]; + fProDelRPtSumRecSecSsc[ii] = o.fProDelRPtSumRecSecSsc[ii]; + } } - + return *this; } @@ -1286,17 +849,17 @@ AliAnalysisTaskFragmentationFunction::~AliAnalysisTaskFragmentationFunction() { // destructor - if(fTracksRec) delete fTracksRec; - if(fTracksRecCuts) delete fTracksRecCuts; - if(fTracksGen) delete fTracksGen; - if(fTracksAODMCCharged) delete fTracksAODMCCharged; - if(fTracksAODMCChargedSec) delete fTracksAODMCChargedSec; - if(fTracksRecQualityCuts) delete fTracksRecQualityCuts; - if(fJetsRec) delete fJetsRec; - if(fJetsRecCuts) delete fJetsRecCuts; - if(fJetsGen) delete fJetsGen; - if(fJetsRecEff) delete fJetsRecEff; - if(fJetsEmbedded) delete fJetsEmbedded; + if(fTracksRecCuts) delete fTracksRecCuts; + if(fTracksGen) delete fTracksGen; + if(fTracksAODMCCharged) delete fTracksAODMCCharged; + if(fTracksAODMCChargedSecNS) delete fTracksAODMCChargedSecNS; + if(fTracksAODMCChargedSecS) delete fTracksAODMCChargedSecS; + if(fTracksRecQualityCuts) delete fTracksRecQualityCuts; + if(fJetsRec) delete fJetsRec; + if(fJetsRecCuts) delete fJetsRecCuts; + if(fJetsGen) delete fJetsGen; + if(fJetsRecEff) delete fJetsRecEff; + if(fJetsEmbedded) delete fJetsEmbedded; if(fBckgMode && (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters || @@ -1315,7 +878,7 @@ AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax, Int_t nPt, Float_t ptMin, Float_t ptMax, Int_t nXi, Float_t xiMin, Float_t xiMax, - Int_t nZ , Float_t zMin , Float_t zMax, Bool_t useLogZBins) + Int_t nZ , Float_t zMin , Float_t zMax) : TObject() ,fNBinsJetPt(nJetPt) ,fJetPtMin(jetPtMin) @@ -1329,7 +892,6 @@ AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const ,fNBinsZ(nZ) ,fZMin(zMin) ,fZMax(zMax) - ,fLogZBins(useLogZBins) ,fh2TrackPt(0) ,fh2Xi(0) ,fh2Z(0) @@ -1355,7 +917,6 @@ AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const ,fNBinsZ(copy.fNBinsZ) ,fZMin(copy.fZMin) ,fZMax(copy.fZMax) - ,fLogZBins(copy.fLogZBins) ,fh2TrackPt(copy.fh2TrackPt) ,fh2Xi(copy.fh2Xi) ,fh2Z(copy.fh2Z) @@ -1384,7 +945,6 @@ AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& AliAnalysisTaskFragment fNBinsZ = o.fNBinsZ; fZMin = o.fZMin; fZMax = o.fZMax; - fLogZBins = o.fLogZBins; fh2TrackPt = o.fh2TrackPt; fh2Xi = o.fh2Xi; fh2Z = o.fh2Z; @@ -1413,56 +973,21 @@ void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::DefineHistos() fh1JetPt = new TH1F(Form("fh1FFJetPt%s", fNameFF.Data()),"",fNBinsJetPt,fJetPtMin,fJetPtMax); fh2TrackPt = new TH2F(Form("fh2FFTrackPt%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsPt, fPtMin, fPtMax); + fh2Z = new TH2F(Form("fh2FFZ%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, fZMin, fZMax); fh2Xi = new TH2F(Form("fh2FFXi%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsXi, fXiMin, fXiMax); - if(!fLogZBins) fh2Z = new TH2F(Form("fh2FFZ%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, fZMin, fZMax); - else{ // logarithmic z binning - - fNBinsZ = fNBinsXi; - Double_t binLimsZ[fNBinsXi+1]; - - CalcLogZBins(fNBinsXi,fXiMin,fXiMax,binLimsZ); - - fh2Z = new TH2F(Form("fh2FFZ%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, binLimsZ); - } - AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries"); AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPt,"jet p_{T} [GeV/c]","p_{T} [GeV/c]","entries"); AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi,"jet p_{T} [GeV/c]","#xi", "entries"); AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z,"jet p_{T} [GeV/c]","z","entries"); } -//_______________________________________________________________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::CalcLogZBins(const Int_t nBinsXi,const Double_t xiMin,const Double_t xiMax,Double_t* binLims){ - - // calculate logarithmic binning corresponding to equidistant xi bins - // expect binLims vector of size nBinsXi+1 - - if(nBinsXi == 0){ - Printf("%s:%d nBinsXi == 0",(char*)__FILE__,__LINE__); - return; - } - - Double_t step = (xiMax-xiMin)/nBinsXi; - - for(Int_t binZ = 0; binZFill(jetPt,1/norm); else if(incrementJetPt) fh1JetPt->Fill(jetPt); @@ -1471,17 +996,28 @@ void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::FillFF(Float_t tra if((int)trackPt==-1) return; if(norm)fh2TrackPt->Fill(jetPt,trackPt,1/norm); + else if(scaleStrangeness) fh2TrackPt->Fill(jetPt,trackPt,scaleFacStrangeness); else fh2TrackPt->Fill(jetPt,trackPt); - + Double_t z = 0.; if(jetPt>0) z = trackPt / jetPt; Double_t xi = 0; if(z>0) xi = TMath::Log(1/z); + if(trackPt>(1-1e-06)*jetPt && trackPt<(1+1e-06)*jetPt){ // case z=1 : move entry to last histo bin <1 + z = 1-1e-06; + xi = 1e-06; + } + + if(norm){ fh2Xi->Fill(jetPt,xi,1/norm); fh2Z->Fill(jetPt,z,1/norm); } + else if(scaleStrangeness){ + fh2Xi->Fill(jetPt,xi,scaleFacStrangeness); + fh2Z->Fill(jetPt,z,scaleFacStrangeness); + } else { fh2Xi->Fill(jetPt,xi); fh2Z->Fill(jetPt,z); @@ -1707,16 +1243,22 @@ void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::DefineHisto } //________________________________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::FillTrackQA(Float_t eta, Float_t phi, Float_t pt, Bool_t weightPt, Float_t norm) +void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::FillTrackQA(Float_t eta, Float_t phi, Float_t pt, Bool_t weightPt, Float_t norm, + Bool_t scaleStrangeness, Float_t scaleFacStrangeness) { // fill track QA histos Float_t weight = 1.; if(weightPt) weight = pt; fh2EtaPhi->Fill( eta, phi, weight); + if(scaleStrangeness) fh2EtaPhi->Fill( eta, phi, scaleFacStrangeness); if(pt > fHighPtThreshold) fh2HighPtEtaPhi->Fill( eta, phi, weight); + if(pt > fHighPtThreshold && scaleStrangeness) fh2HighPtEtaPhi->Fill( eta, phi, weight); if(norm) fh1Pt->Fill( pt, 1/norm ); - else fh1Pt->Fill( pt ); - fh2PhiPt->Fill(phi, pt); + else if(scaleStrangeness) fh1Pt->Fill(pt,scaleFacStrangeness); + else fh1Pt->Fill( pt ); + + if(scaleFacStrangeness) fh2PhiPt->Fill(phi, pt, scaleFacStrangeness); + else fh2PhiPt->Fill(phi, pt); } //______________________________________________________________________________________ @@ -1730,808 +1272,133 @@ void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AddToOutput list->Add(fh2PhiPt); } -//______________________________________________________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const char* name, - Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax, - Int_t nPt, Float_t ptMin, Float_t ptMax, - Int_t nZ , Float_t zMin , Float_t zMax, - Int_t nCosTheta , Float_t costhetaMin , Float_t costhetaMax, - Int_t nTheta , Float_t thetaMin , Float_t thetaMax, - Int_t nJt , Float_t jtMin , Float_t jtMax) - : TObject() - ,fNBinsJetPt(nJetPt) - ,fJetPtMin(jetPtMin) - ,fJetPtMax(jetPtMax) - ,fNBinsPt(nPt) - ,fPtMin(ptMin) - ,fPtMax(ptMax) - ,fNBinsZ(nZ) - ,fZMin(zMin) - ,fZMax(zMax) - ,fNBinsJt(nJt) - ,fJtMin(jtMin) - ,fJtMax(jtMax) - ,fNBinsTheta(nTheta) - ,fThetaMin(thetaMin) - ,fThetaMax(thetaMax) - ,fNBinsCosTheta(nCosTheta) - ,fCosThetaMin(costhetaMin) - ,fCosThetaMax(costhetaMax) - ,fh2CosTheta(0) - ,fh2PtZ(0) - ,fh3ThetaZ(0) - ,fh3JtTheta(0) - ,fh3JtZ(0) - ,fNameIJ(name) +//_________________________________________________________________________________ +Bool_t AliAnalysisTaskFragmentationFunction::Notify() { - // default constructor + // + // Implemented Notify() to read the cross sections + // and number of trials from pyxsec.root + // (taken from AliAnalysisTaskJetSpectrum2) + // + TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree(); + Float_t xsection = 0; + Float_t ftrials = 1; -} + fAvgTrials = 1; + if(tree){ + TFile *curfile = tree->GetCurrentFile(); + if (!curfile) { + Error("Notify","No current file"); + return kFALSE; + } + if(!fh1Xsec||!fh1Trials){ + Printf("%s%d No Histogram fh1Xsec",(char*)__FILE__,__LINE__); + return kFALSE; + } + AliAnalysisHelperJetTasks::PythiaInfoFromFile(curfile->GetName(),xsection,ftrials); + fh1Xsec->Fill("<#sigma>",xsection); + // construct a poor man average trials + Float_t nEntries = (Float_t)tree->GetTree()->GetEntries(); + if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries; + } -//___________________________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const AliFragFuncIntraJetHistos& copy) - : TObject() - ,fNBinsJetPt(copy.fNBinsJetPt) - ,fJetPtMin(copy.fJetPtMin) - ,fJetPtMax(copy.fJetPtMax) - ,fNBinsPt(copy.fNBinsPt) - ,fPtMin(copy.fPtMin) - ,fPtMax(copy.fPtMax) - ,fNBinsZ(copy.fNBinsZ) - ,fZMin(copy.fZMin) - ,fZMax(copy.fZMax) - ,fNBinsJt(copy.fNBinsJt) - ,fJtMin(copy.fJtMin) - ,fJtMax(copy.fJtMax) - ,fNBinsTheta(copy.fNBinsTheta) - ,fThetaMin(copy.fThetaMin) - ,fThetaMax(copy.fThetaMax) - ,fNBinsCosTheta(copy.fNBinsCosTheta) - ,fCosThetaMin(copy.fCosThetaMin) - ,fCosThetaMax(copy.fCosThetaMax) - ,fh2CosTheta(copy.fh2CosTheta) - ,fh2PtZ(copy.fh2PtZ) - ,fh3ThetaZ(copy.fh3ThetaZ) - ,fh3JtTheta(copy.fh3JtTheta) - ,fh3JtZ(copy.fh3JtZ) - ,fNameIJ(copy.fNameIJ) -{ - // copy constructor -} + // Set seed for backg study + fRandom = new TRandom3(); + fRandom->SetSeed(0); -//_______________________________________________________________________________________________________________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& o) -{ - // assignment - - if(this!=&o){ - TObject::operator=(o); - fNBinsJetPt = o.fNBinsJetPt; - fJetPtMin = o.fJetPtMin; - fJetPtMax = o.fJetPtMax; - fNBinsPt = o.fNBinsPt; - fPtMin = o.fPtMin; - fPtMax = o.fPtMax; - fNBinsZ = o.fNBinsZ; - fZMin = o.fZMin; - fZMax = o.fZMax; - fNBinsJt = o.fNBinsJt; - fJtMin = o.fJtMin; - fJtMax = o.fJtMax; - fNBinsTheta = o.fNBinsTheta; - fThetaMin = o.fThetaMin; - fThetaMax = o.fThetaMax; - fNBinsCosTheta = o.fNBinsCosTheta; - fCosThetaMin = o.fCosThetaMin; - fCosThetaMax = o.fCosThetaMax; - fh2CosTheta = o.fh2CosTheta; - fh2PtZ = o.fh2PtZ; - fh3ThetaZ = o.fh3ThetaZ; - fh3JtTheta = o.fh3JtTheta; - fh3JtZ = o.fh3JtZ; - fNameIJ = o.fNameIJ; - } - - return *this; + return kTRUE; } -//_________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::~AliFragFuncIntraJetHistos() +//__________________________________________________________________ +void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() { - // destructor + // create output objects + if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()"); + + // create list of tracks and jets - if(fh2CosTheta) delete fh2CosTheta; - if(fh2PtZ) delete fh2PtZ; - if(fh3ThetaZ) delete fh3ThetaZ; - if(fh3JtTheta) delete fh3JtTheta; - if(fh3JtZ) delete fh3JtZ; + fTracksRecCuts = new TList(); + fTracksRecCuts->SetOwner(kFALSE); -} + fTracksGen = new TList(); + fTracksGen->SetOwner(kFALSE); -//_________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::DefineHistos() -{ - // book FF histos + fTracksAODMCCharged = new TList(); + fTracksAODMCCharged->SetOwner(kFALSE); + + fTracksAODMCChargedSecNS = new TList(); + fTracksAODMCChargedSecNS->SetOwner(kFALSE); - fh2CosTheta = new TH2F(Form("fh2IJcosTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsCosTheta, fCosThetaMin, fCosThetaMax); - fh2PtZ = new TH2F(Form("fh2IJPtZ%s",fNameIJ.Data()),"",fNBinsPt, fPtMin, fPtMax, fNBinsZ, fZMin, fZMax); - fh3ThetaZ = new TH3F(Form("fh3IJThetaZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsTheta, fThetaMin, fThetaMax, fNBinsZ, fZMin, fZMax); - fh3JtTheta = new TH3F(Form("fh3IJJtTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsTheta, fThetaMin, fThetaMax); - fh3JtZ = new TH3F(Form("fh3IJJtZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsZ, fZMin, fZMax); - - AliAnalysisTaskFragmentationFunction::SetProperties(fh2CosTheta,"jet p_{T} [GeV/c]","cos(#Theta)", "entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2PtZ,"had p_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}","entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh3ThetaZ,"jet p_{T} [GeV/c]","#Theta [rad]","z=p_{T}^{had}/p_{T}^{jet}"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtTheta,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","#Theta [rad]"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtZ,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}"); + fTracksAODMCChargedSecS = new TList(); + fTracksAODMCChargedSecS->SetOwner(kFALSE); -} + fTracksRecQualityCuts = new TList(); + fTracksRecQualityCuts->SetOwner(kFALSE); -//_______________________________________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::FillIntraJet(const TLorentzVector* trackV, const TLorentzVector* jetV, Float_t norm) -{ - // fill IntraJet histos - - Float_t cosTheta = 0.; Float_t theta = 0.; - Float_t jt = 0.; Float_t z = 0.; - // For Theta distribution - Float_t pxT = trackV->Px(); - Float_t pyT = trackV->Py(); - Float_t pzT = trackV->Pz(); - Float_t ptT = trackV->Pt(); - Float_t pT = trackV->P(); - Float_t etaT = trackV->Eta(); - Float_t phiT = trackV->Phi(); // Check the value returned - Float_t pxJ = jetV->Px(); - Float_t pyJ = jetV->Py(); - Float_t pzJ = jetV->Pz(); - Float_t ptJ = jetV->Pt(); - Float_t pJ = jetV->P(); - - // Compute z - if(ptJ>0) z = (Float_t)(ptT/ptJ); - - // Compute theta - cosTheta = (pxT*pxJ+pyT*pyJ+pzT*pzJ)/(pT*pJ); - theta = TMath::ACos(cosTheta); - - // Compute jt - TVector3 trackP; TVector3 jetP; - jetP[0] = pxJ; - jetP[1] = pyJ; - jetP[2] = pzJ; - trackP.SetPtEtaPhi(ptT,etaT,phiT); - jt = TMath::Sin(trackP.Angle(jetP))*trackP.Mag(); - - // Fill histos - if(norm){ - fh2CosTheta->Fill(ptJ,cosTheta,1/norm); - fh2PtZ->Fill(ptT,z,1/norm); - fh3ThetaZ->Fill(ptJ,theta,z,1/norm); - fh3JtTheta->Fill(ptJ,jt,theta,1/norm); - fh3JtZ->Fill(ptJ,jt,z,1/norm); - } - else { - fh2CosTheta->Fill(ptJ,cosTheta); - fh2PtZ->Fill(ptT,z); - fh3ThetaZ->Fill(ptJ,theta,z); - fh3JtTheta->Fill(ptJ,jt,theta); - fh3JtZ->Fill(ptJ,jt,z); - } + fJetsRec = new TList(); + fJetsRec->SetOwner(kFALSE); -} + fJetsRecCuts = new TList(); + fJetsRecCuts->SetOwner(kFALSE); -//______________________________________________________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const char* name, Int_t kindSlices, - Int_t nJetInvMass, Float_t jetInvMassMin, Float_t jetInvMassMax, - Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax, - Int_t nPt, Float_t ptMin, Float_t ptMax, - Int_t nXi, Float_t xiMin, Float_t xiMax, - Int_t nZ , Float_t zMin , Float_t zMax) - : TObject() - ,fKindSlices(kindSlices) - ,fNBinsJetInvMass(nJetInvMass) - ,fJetInvMassMin(jetInvMassMin) - ,fJetInvMassMax(jetInvMassMax) - ,fNBinsJetPt(nJetPt) - ,fJetPtMin(jetPtMin) - ,fJetPtMax(jetPtMax) - ,fNBinsPt(nPt) - ,fPtMin(ptMin) - ,fPtMax(ptMax) - ,fNBinsXi(nXi) - ,fXiMin(xiMin) - ,fXiMax(xiMax) - ,fNBinsZ(nZ) - ,fZMin(zMin) - ,fZMax(zMax) - ,fh2TrackPtJet1(0) - ,fh2TrackPtJet2(0) - ,fh2TrackPtJet(0) - ,fh1Jet1Pt(0) - ,fh1Jet2Pt(0) - ,fh1JetPt(0) - ,fh2Xi1(0) - ,fh2Xi2(0) - ,fh2Xi(0) - ,fh2Z1(0) - ,fh2Z2(0) - ,fh2Z(0) - ,fh2Pt1(0) - ,fh2Pt2(0) - ,fh2Pt(0) - ,fNameDJ(name) -{ - // default constructor + fJetsGen = new TList(); + fJetsGen->SetOwner(kFALSE); -} + fJetsRecEff = new TList(); + fJetsRecEff->SetOwner(kFALSE); -//______________________________________________________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const AliFragFuncDiJetHistos& copy) - : TObject() - ,fKindSlices(copy.fKindSlices) - ,fNBinsJetInvMass(copy.fNBinsJetInvMass) - ,fJetInvMassMin(copy.fJetInvMassMin) - ,fJetInvMassMax(copy.fJetInvMassMax) - ,fNBinsJetPt(copy.fNBinsJetPt) - ,fJetPtMin(copy.fJetPtMin) - ,fJetPtMax(copy.fJetPtMax) - ,fNBinsPt(copy.fNBinsPt) - ,fPtMin(copy.fPtMin) - ,fPtMax(copy.fPtMax) - ,fNBinsXi(copy.fNBinsXi) - ,fXiMin(copy.fXiMin) - ,fXiMax(copy.fXiMax) - ,fNBinsZ(copy.fNBinsZ) - ,fZMin(copy.fZMin) - ,fZMax(copy.fZMax) - ,fh2TrackPtJet1(copy.fh2TrackPtJet1) - ,fh2TrackPtJet2(copy.fh2TrackPtJet2) - ,fh2TrackPtJet(copy.fh2TrackPtJet) - ,fh1Jet1Pt(copy.fh1Jet1Pt) - ,fh1Jet2Pt(copy.fh1Jet2Pt) - ,fh1JetPt(copy.fh1JetPt) - ,fh2Xi1(copy.fh2Xi1) - ,fh2Xi2(copy.fh2Xi2) - ,fh2Xi(copy.fh2Xi2) - ,fh2Z1(copy.fh2Z1) - ,fh2Z2(copy.fh2Z2) - ,fh2Z(copy.fh2Z) - ,fh2Pt1(copy.fh2Pt1) - ,fh2Pt2(copy.fh2Pt2) - ,fh2Pt(copy.fh2Pt) - ,fNameDJ(copy.fNameDJ) -{ - // default constructor + fJetsEmbedded = new TList(); + fJetsEmbedded->SetOwner(kFALSE); -} -//_______________________________________________________________________________________________________________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& o) -{ - // assignment - - if(this!=&o){ - TObject::operator=(o); - fKindSlices = o.fKindSlices; - fNBinsJetInvMass = o.fNBinsJetInvMass; - fJetInvMassMin = o.fJetInvMassMin; - fJetInvMassMax = o.fJetInvMassMax; - fNBinsJetPt = o.fNBinsJetPt; - fJetPtMin = o.fJetPtMin; - fJetPtMax = o.fJetPtMax; - fNBinsPt = o.fNBinsPt; - fPtMin = o.fPtMin; - fPtMax = o.fPtMax; - fNBinsXi = o.fNBinsXi; - fXiMin = o.fXiMin; - fXiMax = o.fXiMax; - fNBinsZ = o.fNBinsZ; - fZMin = o.fZMin; - fZMax = o.fZMax; - fh2TrackPtJet1 = o.fh2TrackPtJet1; - fh2TrackPtJet2 = o.fh2TrackPtJet2; - fh2TrackPtJet = o.fh2TrackPtJet; - fh1Jet1Pt = o.fh1Jet1Pt; - fh1Jet2Pt = o.fh1Jet2Pt; - fh1JetPt = o.fh1JetPt; - fh2Xi1 = o.fh2Xi1; - fh2Xi2 = o.fh2Xi2; - fh2Xi = o.fh2Xi; - fh2Z1 = o.fh2Z1; - fh2Z2 = o.fh2Z2; - fh2Z = o.fh2Z; - fh2Pt1 = o.fh2Pt1; - fh2Pt2 = o.fh2Pt2; - fh2Pt = o.fh2Pt; - fNameDJ = o.fNameDJ; - } + if(fBckgMode && + (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters || + fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading || + fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){ - return *this; -} + fBckgJetsRec = new TList(); + fBckgJetsRec->SetOwner(kFALSE); -//_________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::~AliFragFuncDiJetHistos() -{ - // destructor + fBckgJetsRecCuts = new TList(); + fBckgJetsRecCuts->SetOwner(kFALSE); - if(fh2TrackPtJet1) delete fh2TrackPtJet1; - if(fh2TrackPtJet2) delete fh2TrackPtJet2; - if(fh2TrackPtJet ) delete fh2TrackPtJet; - if(fh1Jet1Pt) delete fh1Jet1Pt; - if(fh1Jet2Pt) delete fh1Jet2Pt; - if(fh1JetPt) delete fh1JetPt; - if(fh2Xi1) delete fh2Xi1; - if(fh2Xi2) delete fh2Xi2; - if(fh2Xi) delete fh2Xi; - if(fh2Z1) delete fh2Z1; - if(fh2Z2) delete fh2Z2; - if(fh2Z) delete fh2Z; - if(fh2Pt1) delete fh2Pt1; - if(fh2Pt2) delete fh2Pt2; - if(fh2Pt) delete fh2Pt; -} + fBckgJetsGen = new TList(); + fBckgJetsGen->SetOwner(kFALSE); + } -//________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::DefineDiJetHistos() -{ - // book DiJet histos - - Int_t nBins = 0; - Double_t min = 0.; - Double_t max = 0.; - const char *xaxis = ""; - if(fKindSlices == 1) - { - nBins = fNBinsJetInvMass; - min = fJetInvMassMin; - max = fJetInvMassMax; - xaxis = "M_{JJ} [GeV]"; - } - if(fKindSlices == 2 || fKindSlices == 3) - { - nBins = fNBinsJetPt; - min = fJetPtMin; - max = fJetPtMax; - if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]"; - if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]"; - } - - fh1Jet1Pt = new TH1F(Form("fh1DJJet1Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax); - fh1Jet2Pt = new TH1F(Form("fh1DJJet2Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax); - fh1JetPt = new TH1F(Form("fh1DJJetPt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax); - - fh2TrackPtJet1 = new TH2F(Form("fh2DJTrackPtJet1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax); - fh2TrackPtJet2 = new TH2F(Form("fh2DJTrackPtJet2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax); - fh2TrackPtJet = new TH2F(Form("fh2DJTrackPtJet%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax); + // + // Create histograms / output container + // + + OpenFile(1); + fCommonHistList = new TList(); + fCommonHistList->SetOwner(kTRUE); + + Bool_t oldStatus = TH1::AddDirectoryStatus(); + TH1::AddDirectory(kFALSE); - fh2Xi1 = new TH2F(Form("fh2DJXi1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax); - fh2Xi2 = new TH2F(Form("fh2DJXi2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax); - fh2Xi = new TH2F(Form("fh2DJXi%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax); - fh2Z1 = new TH2F(Form("fh2DJZ1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax); - fh2Z2 = new TH2F(Form("fh2DJZ2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax); - fh2Z = new TH2F(Form("fh2DJZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax); + // Histograms + fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 6, -0.5, 5.5); + fh1EvtSelection->GetXaxis()->SetBinLabel(1,"ACCEPTED"); + fh1EvtSelection->GetXaxis()->SetBinLabel(2,"event selection: rejected"); + fh1EvtSelection->GetXaxis()->SetBinLabel(3,"event class: rejected"); + fh1EvtSelection->GetXaxis()->SetBinLabel(4,"vertex Ncontr: rejected"); + fh1EvtSelection->GetXaxis()->SetBinLabel(5,"vertex z: rejected"); + fh1EvtSelection->GetXaxis()->SetBinLabel(6,"vertex type: rejected"); - fh2Pt1 = new TH2F(Form("fh2DJPt1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax); - fh2Pt2 = new TH2F(Form("fh2DJPt2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax); - fh2Pt = new TH2F(Form("fh2DJPtZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax); - - AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet1Pt, "p_{T} [GeV/c]", "entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet2Pt, "p_{T} [GeV/c]", "entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries"); - - AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet1, xaxis, "p_{T} [GeV/c]", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet2, xaxis, "p_{T} [GeV/c]", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet, xaxis, "p_{T} [GeV/c]", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi1, xaxis, "#xi", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi2, xaxis, "#xi", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi, xaxis, "#xi", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z1, xaxis, "z", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z2, xaxis, "z", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z, xaxis, "z", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt1, xaxis, "p_{T} [GeV/c]", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt2, xaxis, "p_{T} [GeV/c]", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt, xaxis, "p_{T} [GeV/c]", "Entries"); -} + fh1VertexNContributors = new TH1F("fh1VertexNContributors", "Vertex N contributors", 2500,-.5, 2499.5); + fh1VertexZ = new TH1F("fh1VertexZ", "Vertex z distribution", 30, -15., 15.); + fh1EvtMult = new TH1F("fh1EvtMult","Event multiplicity, track pT cut > 150 MeV/c, |#eta| < 0.9",120,0.,12000.); + fh1EvtCent = new TH1F("fh1EvtCent","centrality",100,0.,100.); -//________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::FillDiJetFF(Int_t jetType, Float_t trackPt, Float_t jetPt, Double_t jetBin, Bool_t incrementJetPt) -{ - // fill DiJet FF - - if(jetType == 0) - { - if(incrementJetPt) fh1JetPt->Fill(jetPt); - - fh2TrackPtJet->Fill(jetBin, trackPt); - - Double_t z = trackPt / jetPt; - Double_t xi = 0; - if(z>0) xi = TMath::Log(1/z); - - fh2Xi->Fill(jetBin, xi); - fh2Z->Fill(jetBin, z); - } - if(jetType == 1) - { - if(incrementJetPt) fh1Jet1Pt->Fill(jetPt); - - fh2TrackPtJet1->Fill(jetBin, trackPt); - - Double_t z = trackPt / jetPt; - Double_t xi = 0; - if(z>0) xi = TMath::Log(1/z); - - fh2Xi1->Fill(jetBin, xi); - fh2Z1->Fill(jetBin, z); - } - if(jetType == 2) - { - if(incrementJetPt) fh1Jet2Pt->Fill(jetPt); - - fh2TrackPtJet2->Fill(jetBin, trackPt); - - Double_t z = trackPt / jetPt; - Double_t xi = 0; - if(z>0) xi = TMath::Log(1/z); - - fh2Xi2->Fill(jetBin, xi); - fh2Z2->Fill(jetBin, z); - } - - -} - -//________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AddToOutput(TList* list)const -{ - // add histos to list - - list->Add(fh1Jet1Pt); - list->Add(fh1Jet2Pt); - list->Add(fh1JetPt); - list->Add(fh2TrackPtJet1); - list->Add(fh2TrackPtJet2); - list->Add(fh2TrackPtJet); - list->Add(fh2Xi1); - list->Add(fh2Xi2); - list->Add(fh2Xi); - list->Add(fh2Z1); - list->Add(fh2Z2); - list->Add(fh2Z); -} - -//______________________________________________________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const char* name, Int_t kindSlices, - Int_t nInvMass, Float_t invMassMin, Float_t invMassMax, - Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax, - Int_t nDeltaPhi, Float_t deltaPhiMin, Float_t deltaPhiMax, - Int_t nDeltaEta, Float_t deltaEtaMin, Float_t deltaEtaMax, - Int_t nDeltaPt, Float_t deltaPtMin, Float_t deltaPtMax, - Int_t nInBal, Float_t inBalMin, Float_t inBalMax) - : TObject() - ,fKindSlices(kindSlices) - ,fNBinsJetInvMass(nInvMass) - ,fJetInvMassMin(invMassMin) - ,fJetInvMassMax(invMassMax) - ,fNBinsJetPt(nJetPt) - ,fJetPtMin(jetPtMin) - ,fJetPtMax(jetPtMax) - ,fNBinsDeltaPhi(nDeltaPhi) - ,fDeltaPhiMin(deltaPhiMin) - ,fDeltaPhiMax(deltaPhiMax) - ,fNBinsDeltaEta(nDeltaEta) - ,fDeltaEtaMin(deltaEtaMin) - ,fDeltaEtaMax(deltaEtaMax) - ,fNBinsDeltaPt(nDeltaPt) - ,fDeltaPtMin(deltaPtMin) - ,fDeltaPtMax(deltaPtMax) - ,fNBinsInBal(nInBal) - ,fInBalMin(inBalMin) - ,fInBalMax(inBalMax) - ,fh2InvMass(0) - ,fh2DeltaPhi(0) - ,fh2DeltaEta(0) - ,fh2DeltaPt(0) - ,fh2InBal(0) - ,fNameQADJ(name) -{ - // default constructor - -} - -//______________________________________________________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const AliFragFuncQADiJetHistos& copy) - : TObject() - ,fKindSlices(copy.fKindSlices) - ,fNBinsJetInvMass(copy.fNBinsJetInvMass) - ,fJetInvMassMin(copy.fJetInvMassMin) - ,fJetInvMassMax(copy.fJetInvMassMax) - ,fNBinsJetPt(copy.fNBinsJetPt) - ,fJetPtMin(copy.fJetPtMin) - ,fJetPtMax(copy.fJetPtMax) - ,fNBinsDeltaPhi(copy.fNBinsDeltaPhi) - ,fDeltaPhiMin(copy.fDeltaPhiMin) - ,fDeltaPhiMax(copy.fDeltaPhiMax) - ,fNBinsDeltaEta(copy.fNBinsDeltaEta) - ,fDeltaEtaMin(copy.fDeltaEtaMin) - ,fDeltaEtaMax(copy.fDeltaEtaMax) - ,fNBinsDeltaPt(copy.fNBinsDeltaPt) - ,fDeltaPtMin(copy.fDeltaPtMin) - ,fDeltaPtMax(copy.fDeltaPtMax) - ,fNBinsInBal(copy.fNBinsInBal) - ,fInBalMin(copy.fInBalMin) - ,fInBalMax(copy.fInBalMax) - ,fh2InvMass(copy.fh2InvMass) - ,fh2DeltaPhi(copy.fh2DeltaPhi) - ,fh2DeltaEta(copy.fh2DeltaEta) - ,fh2DeltaPt(copy.fh2DeltaPt) - ,fh2InBal(copy.fh2InBal) - ,fNameQADJ(copy.fNameQADJ) -{ - // default constructor - -} - -//_______________________________________________________________________________________________________________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& o) -{ - // assignment - - if(this!=&o){ - TObject::operator=(o); - fKindSlices = o.fKindSlices; - fNBinsJetInvMass = o.fNBinsJetInvMass; - fJetInvMassMin = o.fJetInvMassMin; - fJetInvMassMax = o.fJetInvMassMax; - fNBinsJetPt = o.fNBinsJetPt; - fJetPtMin = o.fJetPtMin; - fJetPtMax = o.fJetPtMax; - fNBinsDeltaPhi = o.fNBinsDeltaPhi; - fDeltaPhiMin = o.fDeltaPhiMin; - fDeltaPhiMax = o.fDeltaPhiMax; - fNBinsDeltaEta = o.fNBinsDeltaEta; - fDeltaEtaMin = o.fDeltaEtaMin; - fDeltaEtaMax = o.fDeltaEtaMax; - fNBinsDeltaPt = o.fNBinsDeltaPt; - fDeltaPtMin = o.fDeltaPtMin; - fDeltaPtMax = o.fDeltaPtMax; - fNBinsInBal = o.fNBinsInBal; - fInBalMin = o.fInBalMin; - fInBalMax = o.fInBalMax; - fh2InvMass = o.fh2InvMass; - fh2DeltaPhi = o.fh2DeltaPhi; - fh2DeltaEta = o.fh2DeltaEta; - fh2DeltaPt = o.fh2DeltaPt; - fh2InBal = o.fh2InBal; - fNameQADJ = o.fNameQADJ; - } - - return *this; -} - -//_________________________________________________________ -AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::~AliFragFuncQADiJetHistos() -{ - // destructor - - if(fh2InvMass) delete fh2InvMass; - if(fh2DeltaPhi) delete fh2DeltaPhi; - if(fh2DeltaEta) delete fh2DeltaEta; - if(fh2DeltaPt) delete fh2DeltaPt; - if(fh2InBal) delete fh2InBal; -} - -//________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::DefineQADiJetHistos() -{ - // define histos - - Int_t nBins = 0; - Double_t min = 0.; - Double_t max = 0.; - const char *xaxis = ""; - if(fKindSlices == 1) - { - nBins = fNBinsJetInvMass; - min = fJetInvMassMin; - max = fJetInvMassMax; - xaxis = "M_{JJ} [GeV]"; - } - if(fKindSlices == 2 || fKindSlices == 3) - { - nBins = fNBinsJetPt; - min = fJetPtMin; - max = fJetPtMax; - if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]"; - if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]"; - } - - - fh2InvMass = new TH2F(Form("fh2DJInvMassPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsJetInvMass, fJetInvMassMin, fJetInvMassMax); - fh2DeltaPhi = new TH2F(Form("fh2DJDeltaPhiPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPhi, fDeltaPhiMin, fDeltaPhiMax); - fh2DeltaEta = new TH2F(Form("fh2DJDeltaEtaPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaEta, fDeltaEtaMin, fDeltaEtaMax); - fh2DeltaPt = new TH2F(Form("fh2DJDeltaPtPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPt, fDeltaPtMin, fDeltaPtMax); - fh2InBal = new TH2F(Form("fh2DJInBalPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsInBal, fInBalMin, fInBalMax); - - AliAnalysisTaskFragmentationFunction::SetProperties(fh2InvMass, xaxis, "Invariant Mass", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPhi, xaxis, "#Delta #phi", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaEta, xaxis, "#Delta #eta", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPt, xaxis, "#Delta p_{T}", "Entries"); - AliAnalysisTaskFragmentationFunction::SetProperties(fh2InBal, xaxis, "(p_{T}^{1}-p_{T}^{2})/(p_{T}^{1}+p_{T}^{2})", "Entries"); - -} - -//________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::FillDiJetQA(Double_t invMass, Double_t deltaPhi, Double_t deltaEta,Double_t deltaPt, Double_t inbal, Double_t jetBin) -{ - // fill dijet QA - - fh2InvMass->Fill(jetBin, invMass); - fh2DeltaPhi->Fill(jetBin, deltaPhi); - fh2DeltaEta->Fill(jetBin, deltaEta); - fh2DeltaPt->Fill(jetBin, deltaPt); - fh2InBal->Fill(jetBin, inbal); -} - -//________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AddToOutput(TList* list)const -{ - // add histos to list - - list->Add(fh2InvMass); - list->Add(fh2DeltaPhi); - list->Add(fh2DeltaEta); - list->Add(fh2DeltaPt); - list->Add(fh2InBal); -} - -//_________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AddToOutput(TList* list) const -{ - // add histos to list - - list->Add(fh2CosTheta); - list->Add(fh2PtZ); - list->Add(fh3ThetaZ); - list->Add(fh3JtTheta); - list->Add(fh3JtZ); - -} - -//_________________________________________________________________________________ -Bool_t AliAnalysisTaskFragmentationFunction::Notify() -{ - // - // Implemented Notify() to read the cross sections - // and number of trials from pyxsec.root - // (taken from AliAnalysisTaskJetSpectrum2) - // - TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree(); - Float_t xsection = 0; - Float_t ftrials = 1; - - fAvgTrials = 1; - if(tree){ - TFile *curfile = tree->GetCurrentFile(); - if (!curfile) { - Error("Notify","No current file"); - return kFALSE; - } - if(!fh1Xsec||!fh1Trials){ - Printf("%s%d No Histogram fh1Xsec",(char*)__FILE__,__LINE__); - return kFALSE; - } - AliAnalysisHelperJetTasks::PythiaInfoFromFile(curfile->GetName(),xsection,ftrials); - fh1Xsec->Fill("<#sigma>",xsection); - // construct a poor man average trials - Float_t nEntries = (Float_t)tree->GetTree()->GetEntries(); - if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries; - } - - // Set seed for backg study - fRandom = new TRandom3(); - fRandom->SetSeed(0); - - return kTRUE; -} - -//__________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() -{ - // create output objects - - if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()"); - - // create list of tracks and jets - - fTracksRec = new TList(); - fTracksRec->SetOwner(kFALSE); - - fTracksRecCuts = new TList(); - fTracksRecCuts->SetOwner(kFALSE); - - fTracksGen = new TList(); - fTracksGen->SetOwner(kFALSE); - - fTracksAODMCCharged = new TList(); - fTracksAODMCCharged->SetOwner(kFALSE); - - fTracksAODMCChargedSec = new TList(); - fTracksAODMCChargedSec->SetOwner(kFALSE); - - fTracksRecQualityCuts = new TList(); - fTracksRecQualityCuts->SetOwner(kFALSE); - - fJetsRec = new TList(); - fJetsRec->SetOwner(kFALSE); - if(fBranchRecJets.Contains("KT") && fBckgSubMethod) fJetsRec->SetOwner(kTRUE); - - fJetsRecCuts = new TList(); - fJetsRecCuts->SetOwner(kFALSE); - if(fBranchRecJets.Contains("KT") && fBckgSubMethod) fJetsRecCuts->SetOwner(kTRUE); - - fJetsGen = new TList(); - fJetsGen->SetOwner(kFALSE); - - fJetsRecEff = new TList(); - fJetsRecEff->SetOwner(kFALSE); - - fJetsEmbedded = new TList(); - fJetsEmbedded->SetOwner(kFALSE); - - - if(fBckgMode && - (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters || - fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading || - fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){ - - fBckgJetsRec = new TList(); - fBckgJetsRec->SetOwner(kFALSE); - - fBckgJetsRecCuts = new TList(); - fBckgJetsRecCuts->SetOwner(kFALSE); - - fBckgJetsGen = new TList(); - fBckgJetsGen->SetOwner(kFALSE); - } - - // - // Create histograms / output container - // - - OpenFile(1); - fCommonHistList = new TList(); - fCommonHistList->SetOwner(kTRUE); - - Bool_t oldStatus = TH1::AddDirectoryStatus(); - TH1::AddDirectory(kFALSE); - - - // Histograms - fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 6, -0.5, 5.5); - fh1EvtSelection->GetXaxis()->SetBinLabel(1,"ACCEPTED"); - fh1EvtSelection->GetXaxis()->SetBinLabel(2,"event selection: rejected"); - fh1EvtSelection->GetXaxis()->SetBinLabel(3,"event class: rejected"); - fh1EvtSelection->GetXaxis()->SetBinLabel(4,"vertex Ncontr: rejected"); - fh1EvtSelection->GetXaxis()->SetBinLabel(5,"vertex z: rejected"); - fh1EvtSelection->GetXaxis()->SetBinLabel(6,"vertex type: rejected"); - - fh1VertexNContributors = new TH1F("fh1VertexNContributors", "Vertex N contributors", 2500,-.5, 2499.5); - fh1VertexZ = new TH1F("fh1VertexZ", "Vertex z distribution", 30, -15., 15.); - fh1EvtMult = new TH1F("fh1EvtMult","Event multiplicity, track pT cut > 150 MeV/c, |#eta| < 0.9",120,0.,12000.); - fh1EvtCent = new TH1F("fh1EvtCent","centrality",100,0.,100.); - fh2TrackPtVsDCAXY = new TH2F("fh2TrackPtVsDCAXY","",400,-0.02,0.02,100,0.,10.); - fh2TrackPtVsDCAZ = new TH2F("fh2TrackPtVsDCAZ","",100,-0.050,0.050,100,0.,10.); - - fh1Xsec = new TProfile("fh1Xsec","xsec from pyxsec.root",1,0,1); - fh1Xsec->GetXaxis()->SetBinLabel(1,"<#sigma>"); - fh1Trials = new TH1F("fh1Trials","trials from pyxsec.root",1,0,1); - fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}"); - fh1PtHard = new TH1F("fh1PtHard","PYTHIA Pt hard;p_{T,hard}",350,-.5,349.5); - fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",350,-.5,349.5); + fh1Xsec = new TProfile("fh1Xsec","xsec from pyxsec.root",1,0,1); + fh1Xsec->GetXaxis()->SetBinLabel(1,"<#sigma>"); + fh1Trials = new TH1F("fh1Trials","trials from pyxsec.root",1,0,1); + fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}"); + fh1PtHard = new TH1F("fh1PtHard","PYTHIA Pt hard;p_{T,hard}",350,-.5,349.5); + fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",350,-.5,349.5); fh1nRecJetsCuts = new TH1F("fh1nRecJetsCuts","reconstructed jets per event",10,-0.5,9.5); fh1nGenJets = new TH1F("fh1nGenJets","generated jets per event",10,-0.5,9.5); @@ -2540,40 +1407,6 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() fh2PtRecVsGenPrim = new TH2F("fh2PtRecVsGenPrim","rec vs gen pt",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax); fh2PtRecVsGenSec = new TH2F("fh2PtRecVsGenSec","rec vs gen pt",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax); - - - // Background - if(fBckgMode) { - if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters || - fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading || - fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading){ - - fh1nRecBckgJetsCuts = new TH1F("fh1nRecBckgJetsCuts","reconstructed background jets per event",10,-0.5,9.5); - fh1nGenBckgJets = new TH1F("fh1nGenBckgJets","generated background jets per event",10,-0.5,9.5); - } - - if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp || fBckgType[3]==kBckgPerp || fBckgType[4]==kBckgPerp ) - fh1PerpMult = new TH1F("fh1PerpMult","Background multiplicity - Cone perpendicular to leading jet axis",500,0.,500.); - if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide || fBckgType[3]==kBckgASide || fBckgType[4]==kBckgASide) - fh1ASideMult = new TH1F("fh1ASideMult","Background multiplicity - Cone in the away side of leading jet axis",500,0.,500.); - if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow || fBckgType[3]==kBckgASideWindow || fBckgType[4]==kBckgASideWindow) - fh1ASideWindowMult = new TH1F("fh1ASideWindowMult","Background multiplicity - Cone in the away side of leading jet axis",500,0.,500.); - if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow || fBckgType[3]==kBckgPerpWindow || fBckgType[4]==kBckgPerpWindow) - fh1PerpWindowMult = new TH1F("fh1PerpWindowMult","Background multiplicity - Cone in the perp direction of leading jet axis",500,0.,500.); - if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ || fBckgType[3]==kBckgOutLJ || fBckgType[4]==kBckgOutLJ) - fh1OutLeadingMult = new TH1F("fh1OutLeadingMult","Background multiplicity - Cone outside leading jet",500,0,500.); - if(fBckgType[0]==kBckgOutLJStat || fBckgType[1]==kBckgOutLJStat || fBckgType[2]==kBckgOutLJStat || fBckgType[3]==kBckgOutLJStat || fBckgType[4]==kBckgOutLJStat) - fh1OutLeadingStatMult = new TH1F("fh1OutLeadingStatMult","Background multiplicity - Cone outside leading jet",3000,0,3000.); - if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J || fBckgType[3]==kBckgOut2J || fBckgType[4]==kBckgOut2J) - fh1Out2JetsMult = new TH1F("fh1Out2JetsMult","Background multiplicity - Cone outside 2 jets",500,0.,500.); - if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J || fBckgType[3]==kBckgOut3J || fBckgType[4]==kBckgOut3J) - fh1Out3JetsMult = new TH1F("fh1Out3JetsMult","Background multiplicity - Cone outside 3 jets",500,0.,500.); - if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters) - fh1MedianClustersMult = new TH1F("fh1MedianClustersMult","Background multiplicity - median cluster",500,0.,500.); - if(fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading || fBckgType[3]==kBckgClustersOutLeading - || fBckgType[4]==kBckgClustersOutLeading) - fh1OutClustersMult = new TH1F("fh1OutClustersMult","Background multiplicity - clusters outside leading jet",3000,0.,3000.); - } // embedding if(fBranchEmbeddedJets.Length()){ @@ -2585,20 +1418,10 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() fh1nEmbeddedJets = new TH1F("fh1nEmbeddedJets","embedded jets per event",10,-0.5,9.5); } - if(fEffMode){ - fh2ptVsDistNN_pt50_rec = new TH2F("fh2ptVsDistNN_pt50_rec","",200,0,0.2,500,0.,100); - fh2ptVsDistNN_pt50_nonRec = new TH2F("fh2ptVsDistNN_pt50_nonRec","",200,0,0.2,500,0.,100); - fh2ptVsDistNN_pt10_rec = new TH2F("fh2ptVsDistNN_pt10_rec","",200,0,0.2,500,0.,100); - fh2ptVsDistNN_pt10_nonRec = new TH2F("fh2ptVsDistNN_pt10_nonRec","",200,0,0.2,500,0.,100); - } if(fQAMode){ if(fQAMode&1){ // track QA - fQATrackHistosRec = new AliFragFuncQATrackHistos("Rec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, - fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, - fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, - fQATrackHighPtThreshold); - fQATrackHistosRecCuts = new AliFragFuncQATrackHistos("RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackHistosRecCuts = new AliFragFuncQATrackHistos("RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, fQATrackHighPtThreshold); @@ -2630,132 +1453,18 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() } // end: QA if(fFFMode){ - + fFFHistosRecCuts = new AliFragFuncHistos("RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax , fFFLogZBins); - fFFHistosRecLeading = new AliFragFuncHistos("RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins); - fFFHistosRecLeadingTrack = new AliFragFuncHistos("RecLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins); + fFFNBinsZ , fFFZMin , fFFZMax ); + fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins); - fFFHistosGenLeading = new AliFragFuncHistos("GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins); - fFFHistosGenLeadingTrack = new AliFragFuncHistos("GenLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins); + fFFNBinsZ , fFFZMin , fFFZMax); } // end: FF - - if(fIJMode) - { - fIJHistosRecCuts = new AliFragFuncIntraJetHistos("RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJHistosRecLeading = new AliFragFuncIntraJetHistos("RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJHistosRecLeadingTrack = new AliFragFuncIntraJetHistos("RecLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJHistosGen = new AliFragFuncIntraJetHistos("Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJHistosGenLeading = new AliFragFuncIntraJetHistos("GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJHistosGenLeadingTrack = new AliFragFuncIntraJetHistos("GenLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - } // end: intra-jet - if(fDJMode){ - if(fDJMode&1){ - fFFDiJetHistosRecCuts = new AliFragFuncDiJetHistos("RecCuts", fDiJetKindBins, - fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax, - fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax, - fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax, - fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax, - fDiJetNBinsZ, fDiJetZMin, fDiJetZMax); - fFFDiJetHistosRecLeading = new AliFragFuncDiJetHistos("RecLeading", fDiJetKindBins, - fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax, - fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax, - fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax, - fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax, - fDiJetNBinsZ, fDiJetZMin, fDiJetZMax); - fFFDiJetHistosRecLeadingTrack = new AliFragFuncDiJetHistos("RecLeadingTrack", fDiJetKindBins, - fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax, - fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax, - fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax, - fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax, - fDiJetNBinsZ, fDiJetZMin, fDiJetZMax); - - fFFDiJetHistosGen = new AliFragFuncDiJetHistos("Gen", fDiJetKindBins, - fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax, - fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax, - fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax, - fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax, - fDiJetNBinsZ, fDiJetZMin, fDiJetZMax); - fFFDiJetHistosGenLeading = new AliFragFuncDiJetHistos("GenLeading", fDiJetKindBins, - fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax, - fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax, - fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax, - fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax, - fDiJetNBinsZ, fDiJetZMin, fDiJetZMax); - fFFDiJetHistosGenLeadingTrack = new AliFragFuncDiJetHistos("GenLeadingTrack", fDiJetKindBins, - fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax, - fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax, - fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax, - fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax, - fDiJetNBinsZ, fDiJetZMin, fDiJetZMax); - } - - if(fDJMode&2){ - fQADiJetHistosRecCuts = new AliFragFuncQADiJetHistos("RecCuts", fDiJetKindBins, - fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax, - fQADiJetNBinsJetPt, fQADiJetJetPtMin, fQADiJetJetPtMax, - fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax , - fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax , - fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax, - fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax); - fQADiJetHistosGen = new AliFragFuncQADiJetHistos("Gen", fDiJetKindBins, - fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax, - fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax, - fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax, - fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax, - fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax, - fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax); - } - } // end: di-jet - // efficiency if(fEffMode){ @@ -2770,354 +1479,229 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, fQATrackHighPtThreshold); - fQATrackHistosSecRec = new AliFragFuncQATrackHistos("SecRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackHistosSecRecNS = new AliFragFuncQATrackHistos("SecRecNS", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, fQATrackHighPtThreshold); + fQATrackHistosSecRecS = new AliFragFuncQATrackHistos("SecRecS", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); - Int_t nBinsResponseSinglePt[2] = {fFFNBinsPt, fFFNBinsPt}; - Double_t binMinResponseSinglePt[2] = {fFFPtMin, fFFPtMin}; - Double_t binMaxResponseSinglePt[2] = {fFFPtMax, fFFPtMax}; - const char* labelsResponseSinglePt[2] = {"rec p_{T} [GeV/c]", "gen p_{T} [GeV/c]"}; - - fhnResponseSinglePt = new THnSparseF("fhnResponseSinglePt","track pt gen : track pt rec",2, - nBinsResponseSinglePt,binMinResponseSinglePt,binMaxResponseSinglePt); - - AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseSinglePt,2,labelsResponseSinglePt); - - // TH2F inv pt diff - fh2SingleInvPtRecMnGenVsPtGen = new TH2F("fh2SingleInvPtRecMnGenVsPtGen","",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,200,-1,1); - } - if(fFFMode){ - fFFHistosRecEffGen = new AliFragFuncHistos("RecEffGen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - - fFFHistosRecEffRec = new AliFragFuncHistos("RecEffRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - - fFFHistosSecRec = new AliFragFuncHistos("SecRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - - - Int_t nBinsResponseJetTrackPt[3] = {fFFNBinsJetPt,fFFNBinsPt,fFFNBinsPt}; - Double_t binMinResponseJetTrackPt[3] = {fFFJetPtMin,fFFPtMin, fFFPtMin}; - Double_t binMaxResponseJetTrackPt[3] = {fFFJetPtMax,fFFPtMax,fFFPtMax}; - const char* labelsResponseJetTrackPt[3] = { "jet p_{T} [GeV/c]","rec p_{T} [GeV/c]", "gen p_{T} [GeV/c]"}; - - fhnResponseJetTrackPt = new THnSparseF("fhnResponseJetTrackPt","jet pt:track pt rec:track pt gen",3, - nBinsResponseJetTrackPt,binMinResponseJetTrackPt,binMaxResponseJetTrackPt); - - AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetTrackPt,3,labelsResponseJetTrackPt); - - if(!fFFLogZBins){ - - Int_t nBinsResponseJetZ[3] = {fFFNBinsJetPt, fFFNBinsZ,fFFNBinsZ}; - Double_t binMinResponseJetZ[3] = {fFFJetPtMin, fFFZMin, fFFZMin}; - Double_t binMaxResponseJetZ[3] = {fFFJetPtMax, fFFZMax, fFFZMax}; - - fhnResponseJetZ = new THnSparseF("fhnResponseJetZ","jet pt:rec z rec:gen z",3, - nBinsResponseJetZ,binMinResponseJetZ,binMaxResponseJetZ); - } - else{ - - Double_t binLims[fFFNBinsXi+1]; - fFFHistosRecEffGen->CalcLogZBins(fFFNBinsXi,fFFXiMin,fFFXiMax,binLims); - - Int_t binsZ = fFFNBinsXi; - Double_t zMin = binLims[0]; - Double_t zMax = binLims[fFFNBinsXi]; - - Int_t nBinsResponseJetZ[3] = {fFFNBinsJetPt, binsZ, binsZ}; - Double_t binMinResponseJetZ[3] = {fFFJetPtMin, zMin, zMin}; - Double_t binMaxResponseJetZ[3] = {fFFJetPtMax, zMax, zMax}; - // const char* labelsResponseJetZ[3] = { "jet p_{T} [GeV/c]","rec z","gen z"}; - - fhnResponseJetZ = new THnSparseF("fhnResponseJetZ","jet pt:rec z rec:gen z",3, - nBinsResponseJetZ,binMinResponseJetZ,binMaxResponseJetZ); - - fhnResponseJetZ->SetBinEdges(1,binLims); - fhnResponseJetZ->SetBinEdges(2,binLims); - } - - const char* labelsResponseJetZ[3] = { "jet p_{T} [GeV/c]","rec z","gen z"}; - AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetZ,3,labelsResponseJetZ); - - Int_t nBinsResponseJetXi[3] = {fFFNBinsJetPt, fFFNBinsXi,fFFNBinsXi}; - Double_t binMinResponseJetXi[3] = {fFFJetPtMin, fFFXiMin, fFFXiMin}; - Double_t binMaxResponseJetXi[3] = {fFFJetPtMax, fFFXiMax, fFFXiMax}; - const char* labelsResponseJetXi[3] = { "jet p_{T} [GeV/c]","rec xi","gen xi"}; - - fhnResponseJetXi = new THnSparseF("fhnResponseJetXi","jet pt:track xi rec:track xi gen",3, - nBinsResponseJetXi,binMinResponseJetXi,binMaxResponseJetXi); - - AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetXi,3,labelsResponseJetXi); - - } - } // end: efficiency - - // Background - if(fBckgMode){ - // Track QA - TString title[5]; - for(Int_t i=0; i<5; i++){ - if(fBckgType[i]==kBckgPerp) title[i]="Perp"; - else if(fBckgType[i]==kBckgPerpWindow) title[i]="PerpW"; - else if(fBckgType[i]==kBckgASide) title[i]="ASide"; - else if(fBckgType[i]==kBckgASideWindow) title[i]="ASideW"; - else if(fBckgType[i]==kBckgOutLJ) title[i]="OutLeadingJet"; - else if(fBckgType[i]==kBckgOut2J) title[i]="Out2Jets"; - else if(fBckgType[i]==kBckgOut3J) title[i]="Out3Jets"; - else if(fBckgType[i]==kBckgOutAJ) title[i]="AllJets"; - else if(fBckgType[i]==kBckgOutLJStat) title[i]="OutLeadingJetStat"; - else if(fBckgType[i]==kBckgOut2JStat) title[i]="Out2JetsStat"; - else if(fBckgType[i]==kBckgOut3JStat) title[i]="Out3JetsStat"; - else if(fBckgType[i]==kBckgOutAJStat) title[i]="AllJetsStat"; - else if(fBckgType[i]==kBckgClustersOutLeading) title[i]="OutClusters"; - else if(fBckgType[i]==kBckgClusters) title[i]="MedianClusters"; - else printf("Please chose background method number %d!",i); - } - - if(fQAMode&1){ - fQABckgHisto0RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[0]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, - fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, - fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, - fQATrackHighPtThreshold); - fQABckgHisto0Gen = new AliFragFuncQATrackHistos("Bckg"+title[0]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, - fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, - fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, - fQATrackHighPtThreshold); - fQABckgHisto1RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[1]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, - fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, - fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, - fQATrackHighPtThreshold); - fQABckgHisto1Gen = new AliFragFuncQATrackHistos("Bckg"+title[1]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, - fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, - fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, - fQATrackHighPtThreshold); - fQABckgHisto2RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[2]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, - fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, - fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, - fQATrackHighPtThreshold); - fQABckgHisto2Gen = new AliFragFuncQATrackHistos("Bckg"+title[2]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, - fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, - fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, - fQATrackHighPtThreshold); - fQABckgHisto3RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[3]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, - fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, - fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, - fQATrackHighPtThreshold); - fQABckgHisto3Gen = new AliFragFuncQATrackHistos("Bckg"+title[3]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, - fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, - fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, - fQATrackHighPtThreshold); - fQABckgHisto4RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[4]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, - fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, - fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, - fQATrackHighPtThreshold); - fQABckgHisto4Gen = new AliFragFuncQATrackHistos("Bckg"+title[4]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackHistosSecRecSsc = new AliFragFuncQATrackHistos("SecRecSsc", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, fQATrackHighPtThreshold); - - } // end: background QA - + } if(fFFMode){ - // outside leading jet or 2 jets or more - fFFBckgHisto0RecCuts = new AliFragFuncHistos("Bckg"+title[0]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto0RecLeading = new AliFragFuncHistos("Bckg"+title[0]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto0Gen = new AliFragFuncHistos("Bckg"+title[0]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto0GenLeading = new AliFragFuncHistos("Bckg"+title[0]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - - fFFBckgHisto1RecCuts = new AliFragFuncHistos("Bckg"+title[1]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto1RecLeading = new AliFragFuncHistos("Bckg"+title[1]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto1Gen = new AliFragFuncHistos("Bckg"+title[1]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto1GenLeading = new AliFragFuncHistos("Bckg"+title[1]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - - fFFBckgHisto2RecCuts = new AliFragFuncHistos("Bckg"+title[2]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto2RecLeading = new AliFragFuncHistos("Bckg"+title[2]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto2Gen = new AliFragFuncHistos("Bckg"+title[2]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto2GenLeading = new AliFragFuncHistos("Bckg"+title[2]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto3RecCuts = new AliFragFuncHistos("Bckg"+title[3]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto3RecLeading = new AliFragFuncHistos("Bckg"+title[3]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto3Gen = new AliFragFuncHistos("Bckg"+title[3]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFHistosRecEffRec = new AliFragFuncHistos("RecEffRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto3GenLeading = new AliFragFuncHistos("Bckg"+title[3]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + + fFFHistosSecRecNS = new AliFragFuncHistos("SecRecNS", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto4RecCuts = new AliFragFuncHistos("Bckg"+title[4]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + + fFFHistosSecRecS = new AliFragFuncHistos("SecRecS", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto4RecLeading = new AliFragFuncHistos("Bckg"+title[4]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + + fFFHistosSecRecSsc = new AliFragFuncHistos("SecRecSsc", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto4Gen = new AliFragFuncHistos("Bckg"+title[4]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + + } + } // end: efficiency + + // Background + if(fBckgMode){ + if(fBckgType[0]==kBckgNone){ + AliError("no bgr method selected !"); + } + + TString title[5]; + for(Int_t i=0; i<5; i++){ + if(fBckgType[i]==kBckgPerp) title[i]="Perp"; + else if(fBckgType[i]==kBckgPerp2) title[i]="Perp2"; + else if(fBckgType[i]==kBckgPerp2Area) title[i]="Perp2Area"; + else if(fBckgType[i]==kBckgPerpWindow) title[i]="PerpW"; + else if(fBckgType[i]==kBckgASide) title[i]="ASide"; + else if(fBckgType[i]==kBckgASideWindow) title[i]="ASideW"; + else if(fBckgType[i]==kBckgOutLJ) title[i]="OutLeadingJet"; + else if(fBckgType[i]==kBckgOut2J) title[i]="Out2Jets"; + else if(fBckgType[i]==kBckgOut3J) title[i]="Out3Jets"; + else if(fBckgType[i]==kBckgOutAJ) title[i]="AllJets"; + else if(fBckgType[i]==kBckgOutLJStat) title[i]="OutLeadingJetStat"; + else if(fBckgType[i]==kBckgOut2JStat) title[i]="Out2JetsStat"; + else if(fBckgType[i]==kBckgOut3JStat) title[i]="Out3JetsStat"; + else if(fBckgType[i]==kBckgOutAJStat) title[i]="AllJetsStat"; + else if(fBckgType[i]==kBckgClustersOutLeading) title[i]="OutClusters"; + else if(fBckgType[i]==kBckgClusters) title[i]="MedianClusters"; + else if(fBckgType[i]==kBckgNone) title[i]=""; + else printf("Please chose background method number %d!",i); + } + + + if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters || + fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading || + fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading){ + + fh1nRecBckgJetsCuts = new TH1F("fh1nRecBckgJetsCuts","reconstructed background jets per event",10,-0.5,9.5); + fh1nGenBckgJets = new TH1F("fh1nGenBckgJets","generated background jets per event",10,-0.5,9.5); + } + + + fh1BckgMult0 = new TH1F("fh1BckgMult0","bckg mult "+title[0],500,0,500); + if(fBckgType[1] != kBckgNone) fh1BckgMult1 = new TH1F("fh1BckgMult1","bckg mult "+title[1],500,0,500); + if(fBckgType[2] != kBckgNone) fh1BckgMult2 = new TH1F("fh1BckgMult2","bckg mult "+title[2],500,0,500); + if(fBckgType[3] != kBckgNone) fh1BckgMult3 = new TH1F("fh1BckgMult3","bckg mult "+title[3],500,0,500); + if(fBckgType[4] != kBckgNone) fh1BckgMult4 = new TH1F("fh1BckgMult4","bckg mult "+title[4],500,0,500); + + + if(fQAMode&1){ + fQABckgHisto0RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[0]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); + fQABckgHisto0Gen = new AliFragFuncQATrackHistos("Bckg"+title[0]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); + + if(fBckgType[1] != kBckgNone){ + fQABckgHisto1RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[1]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); + fQABckgHisto1Gen = new AliFragFuncQATrackHistos("Bckg"+title[1]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); + } + if(fBckgType[2] != kBckgNone){ + fQABckgHisto2RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[2]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); + fQABckgHisto2Gen = new AliFragFuncQATrackHistos("Bckg"+title[2]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); + } + if(fBckgType[3] != kBckgNone){ + fQABckgHisto3RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[3]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); + fQABckgHisto3Gen = new AliFragFuncQATrackHistos("Bckg"+title[3]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); + } + if(fBckgType[4] != kBckgNone){ + fQABckgHisto4RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[4]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); + fQABckgHisto4Gen = new AliFragFuncQATrackHistos("Bckg"+title[4]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); + } + } // end: background QA + + if(fFFMode){ + fFFBckgHisto0RecCuts = new AliFragFuncHistos("Bckg"+title[0]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto4GenLeading = new AliFragFuncHistos("Bckg"+title[4]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + + fFFBckgHisto0Gen = new AliFragFuncHistos("Bckg"+title[0]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, fFFNBinsZ , fFFZMin , fFFZMax); + + if(fBckgType[1] != kBckgNone){ + fFFBckgHisto1RecCuts = new AliFragFuncHistos("Bckg"+title[1]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + fFFBckgHisto1Gen = new AliFragFuncHistos("Bckg"+title[1]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + } + if(fBckgType[2] != kBckgNone){ + fFFBckgHisto2RecCuts = new AliFragFuncHistos("Bckg"+title[2]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + + fFFBckgHisto2Gen = new AliFragFuncHistos("Bckg"+title[2]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + } + if(fBckgType[3] != kBckgNone){ + fFFBckgHisto3RecCuts = new AliFragFuncHistos("Bckg"+title[3]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + + fFFBckgHisto3Gen = new AliFragFuncHistos("Bckg"+title[3]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + } + if(fBckgType[4] != kBckgNone){ + fFFBckgHisto4RecCuts = new AliFragFuncHistos("Bckg"+title[4]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + + fFFBckgHisto4Gen = new AliFragFuncHistos("Bckg"+title[4]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + } + if(fEffMode){ + fFFBckgHisto0RecEffRec = new AliFragFuncHistos("Bckg"+title[0]+"RecEffRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + + fFFBckgHisto0SecRecNS = new AliFragFuncHistos("Bckg"+title[0]+"SecRecNS", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + + fFFBckgHisto0SecRecS = new AliFragFuncHistos("Bckg"+title[0]+"SecRecS", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + + fFFBckgHisto0SecRecSsc = new AliFragFuncHistos("Bckg"+title[0]+"SecRecSsc", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + } } // end: background FF - if(fIJMode){ - fIJBckgHisto0RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJBckgHisto0RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJBckgHisto0Gen = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJBckgHisto0GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - - - fIJBckgHisto1RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJBckgHisto1RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJBckgHisto1Gen = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJBckgHisto1GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - - fIJBckgHisto2RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJBckgHisto2RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJBckgHisto2Gen = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - fIJBckgHisto2GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax, - fIJNBinsPt, fIJPtMin, fIJPtMax, - fIJNBinsZ, fIJZMin, fIJZMax, - fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax, - fIJNBinsTheta , fIJThetaMin , fIJThetaMax, - fIJNBinsJt , fIJJtMin , fIJJtMax); - } // end: background intra-jet - } // end: background - - if(fPhiCorrMode){ - fPhiCorrHistosJetArea = new AliFragFuncQATrackHistos("JetArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax, - fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax, - fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax, - fQATrackHighPtThreshold); - - fPhiCorrHistosTransverseArea = new AliFragFuncQATrackHistos("TransverseArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax, - fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax, - fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax, - fQATrackHighPtThreshold); - - fPhiCorrHistosAwayArea = new AliFragFuncQATrackHistos("AwayArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax, - fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax, - fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax, - fQATrackHighPtThreshold); - } // end: phi correlation + } // end: background + // ____________ define histograms ____________________ if(fQAMode){ if(fQAMode&1){ // track QA - fQATrackHistosRec->DefineHistos(); fQATrackHistosRecCuts->DefineHistos(); fQATrackHistosGen->DefineHistos(); } @@ -3131,51 +1715,25 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() if(fEffMode) fQAJetHistosRecEffLeading->DefineHistos(); } } - + if(fFFMode){ fFFHistosRecCuts->DefineHistos(); - fFFHistosRecLeading->DefineHistos(); - fFFHistosRecLeadingTrack->DefineHistos(); fFFHistosGen->DefineHistos(); - fFFHistosGenLeading->DefineHistos(); - fFFHistosGenLeadingTrack->DefineHistos(); } - - if(fIJMode){ - fIJHistosRecCuts->DefineHistos(); - fIJHistosRecLeading->DefineHistos(); - fIJHistosRecLeadingTrack->DefineHistos(); - fIJHistosGen->DefineHistos(); - fIJHistosGenLeading->DefineHistos(); - fIJHistosGenLeadingTrack->DefineHistos(); - } - - if(fDJMode){ - if(fDJMode&1){ - fFFDiJetHistosRecCuts->DefineDiJetHistos(); - fFFDiJetHistosRecLeading->DefineDiJetHistos(); - fFFDiJetHistosRecLeadingTrack->DefineDiJetHistos(); - fFFDiJetHistosGen->DefineDiJetHistos(); - fFFDiJetHistosGenLeading->DefineDiJetHistos(); - fFFDiJetHistosGenLeadingTrack->DefineDiJetHistos(); - } - - if(fDJMode&2){ - fQADiJetHistosRecCuts->DefineQADiJetHistos(); - fQADiJetHistosGen->DefineQADiJetHistos(); - } - } // end: di-jet - + if(fEffMode){ if(fQAMode&1){ fQATrackHistosRecEffGen->DefineHistos(); fQATrackHistosRecEffRec->DefineHistos(); - fQATrackHistosSecRec->DefineHistos(); + fQATrackHistosSecRecNS->DefineHistos(); + fQATrackHistosSecRecS->DefineHistos(); + fQATrackHistosSecRecSsc->DefineHistos(); } if(fFFMode){ - fFFHistosRecEffGen->DefineHistos(); fFFHistosRecEffRec->DefineHistos(); - fFFHistosSecRec->DefineHistos(); + fFFHistosSecRecNS->DefineHistos(); + fFFHistosSecRecS->DefineHistos(); + fFFHistosSecRecSsc->DefineHistos(); } } // end: efficiency @@ -3183,61 +1741,38 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() if(fBckgMode){ if(fFFMode){ fFFBckgHisto0RecCuts->DefineHistos(); - fFFBckgHisto0RecLeading->DefineHistos(); - fFFBckgHisto0Gen->DefineHistos(); - fFFBckgHisto0GenLeading->DefineHistos(); - fFFBckgHisto1RecCuts->DefineHistos(); - fFFBckgHisto1RecLeading->DefineHistos(); - fFFBckgHisto1Gen->DefineHistos(); - fFFBckgHisto1GenLeading->DefineHistos(); - fFFBckgHisto2RecCuts->DefineHistos(); - fFFBckgHisto2RecLeading->DefineHistos(); - fFFBckgHisto2Gen->DefineHistos(); - fFFBckgHisto2GenLeading->DefineHistos(); - fFFBckgHisto3RecCuts->DefineHistos(); - fFFBckgHisto3RecLeading->DefineHistos(); - fFFBckgHisto3Gen->DefineHistos(); - fFFBckgHisto3GenLeading->DefineHistos(); - fFFBckgHisto4RecCuts->DefineHistos(); - fFFBckgHisto4RecLeading->DefineHistos(); - fFFBckgHisto4Gen->DefineHistos(); - fFFBckgHisto4GenLeading->DefineHistos(); - } - - if(fIJMode){ - fIJBckgHisto0RecCuts->DefineHistos(); - fIJBckgHisto0RecLeading->DefineHistos(); - fIJBckgHisto0Gen->DefineHistos(); - fIJBckgHisto0GenLeading->DefineHistos(); - fIJBckgHisto1RecCuts->DefineHistos(); - fIJBckgHisto1RecLeading->DefineHistos(); - fIJBckgHisto1Gen->DefineHistos(); - fIJBckgHisto1GenLeading->DefineHistos(); - fIJBckgHisto2RecCuts->DefineHistos(); - fIJBckgHisto2RecLeading->DefineHistos(); - fIJBckgHisto2Gen->DefineHistos(); - fIJBckgHisto2GenLeading->DefineHistos(); + fFFBckgHisto0Gen->DefineHistos(); + if(fBckgType[1] != kBckgNone) fFFBckgHisto1RecCuts->DefineHistos(); + if(fBckgType[1] != kBckgNone) fFFBckgHisto1Gen->DefineHistos(); + if(fBckgType[2] != kBckgNone) fFFBckgHisto2RecCuts->DefineHistos(); + if(fBckgType[2] != kBckgNone) fFFBckgHisto2Gen->DefineHistos(); + if(fBckgType[3] != kBckgNone) fFFBckgHisto3RecCuts->DefineHistos(); + if(fBckgType[3] != kBckgNone) fFFBckgHisto3Gen->DefineHistos(); + if(fBckgType[4] != kBckgNone) fFFBckgHisto4RecCuts->DefineHistos(); + if(fBckgType[4] != kBckgNone) fFFBckgHisto4Gen->DefineHistos(); + + if(fEffMode){ + fFFBckgHisto0RecEffRec->DefineHistos(); + fFFBckgHisto0SecRecNS->DefineHistos(); + fFFBckgHisto0SecRecS->DefineHistos(); + fFFBckgHisto0SecRecSsc->DefineHistos(); + } } if(fQAMode&1){ fQABckgHisto0RecCuts->DefineHistos(); fQABckgHisto0Gen->DefineHistos(); - fQABckgHisto1RecCuts->DefineHistos(); - fQABckgHisto1Gen->DefineHistos(); - fQABckgHisto2RecCuts->DefineHistos(); - fQABckgHisto2Gen->DefineHistos(); - fQABckgHisto3RecCuts->DefineHistos(); - fQABckgHisto3Gen->DefineHistos(); - fQABckgHisto4RecCuts->DefineHistos(); - fQABckgHisto4Gen->DefineHistos(); + if(fBckgType[1] != kBckgNone) fQABckgHisto1RecCuts->DefineHistos(); + if(fBckgType[1] != kBckgNone) fQABckgHisto1Gen->DefineHistos(); + if(fBckgType[2] != kBckgNone) fQABckgHisto2RecCuts->DefineHistos(); + if(fBckgType[2] != kBckgNone) fQABckgHisto2Gen->DefineHistos(); + if(fBckgType[3] != kBckgNone) fQABckgHisto3RecCuts->DefineHistos(); + if(fBckgType[3] != kBckgNone) fQABckgHisto3Gen->DefineHistos(); + if(fBckgType[4] != kBckgNone) fQABckgHisto4RecCuts->DefineHistos(); + if(fBckgType[4] != kBckgNone) fQABckgHisto4Gen->DefineHistos(); } } // end: background - if(fPhiCorrMode){ - fPhiCorrHistosJetArea->DefineHistos(); - fPhiCorrHistosTransverseArea->DefineHistos(); - fPhiCorrHistosAwayArea->DefineHistos(); - } Bool_t genJets = (fJetTypeGen != kJetsUndef) ? kTRUE : kFALSE; Bool_t genTracks = (fTrackTypeGen != kTrackUndef) ? kTRUE : kFALSE; @@ -3246,8 +1781,6 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() fCommonHistList->Add(fh1EvtSelection); fCommonHistList->Add(fh1EvtMult); fCommonHistList->Add(fh1EvtCent); - fCommonHistList->Add(fh2TrackPtVsDCAXY); - fCommonHistList->Add(fh2TrackPtVsDCAZ); fCommonHistList->Add(fh1VertexNContributors); fCommonHistList->Add(fh1VertexZ); fCommonHistList->Add(fh1nRecJetsCuts); @@ -3255,17 +1788,14 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() fCommonHistList->Add(fh1Trials); fCommonHistList->Add(fh1PtHard); fCommonHistList->Add(fh1PtHardTrials); + if(genJets) fCommonHistList->Add(fh1nGenJets); // FF histograms if(fFFMode){ fFFHistosRecCuts->AddToOutput(fCommonHistList); - fFFHistosRecLeading->AddToOutput(fCommonHistList); - fFFHistosRecLeadingTrack->AddToOutput(fCommonHistList); if(genJets && genTracks){ fFFHistosGen->AddToOutput(fCommonHistList); - fFFHistosGenLeading->AddToOutput(fCommonHistList); - fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList); } } @@ -3273,68 +1803,49 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() if(fBckgMode){ if(fFFMode){ fFFBckgHisto0RecCuts->AddToOutput(fCommonHistList); - fFFBckgHisto0RecLeading->AddToOutput(fCommonHistList); - fFFBckgHisto1RecCuts->AddToOutput(fCommonHistList); - fFFBckgHisto1RecLeading->AddToOutput(fCommonHistList); - fFFBckgHisto2RecCuts->AddToOutput(fCommonHistList); - fFFBckgHisto2RecLeading->AddToOutput(fCommonHistList); - fFFBckgHisto3RecCuts->AddToOutput(fCommonHistList); - fFFBckgHisto3RecLeading->AddToOutput(fCommonHistList); - fFFBckgHisto4RecCuts->AddToOutput(fCommonHistList); - fFFBckgHisto4RecLeading->AddToOutput(fCommonHistList); + if(fBckgType[1] != kBckgNone) fFFBckgHisto1RecCuts->AddToOutput(fCommonHistList); + if(fBckgType[2] != kBckgNone) fFFBckgHisto2RecCuts->AddToOutput(fCommonHistList); + if(fBckgType[3] != kBckgNone) fFFBckgHisto3RecCuts->AddToOutput(fCommonHistList); + if(fBckgType[4] != kBckgNone) fFFBckgHisto4RecCuts->AddToOutput(fCommonHistList); if(genJets && genTracks){ fFFBckgHisto0Gen->AddToOutput(fCommonHistList); - fFFBckgHisto0GenLeading->AddToOutput(fCommonHistList); - fFFBckgHisto1Gen->AddToOutput(fCommonHistList); - fFFBckgHisto1GenLeading->AddToOutput(fCommonHistList); - fFFBckgHisto2Gen->AddToOutput(fCommonHistList); - fFFBckgHisto2GenLeading->AddToOutput(fCommonHistList); - fFFBckgHisto3Gen->AddToOutput(fCommonHistList); - fFFBckgHisto3GenLeading->AddToOutput(fCommonHistList); - fFFBckgHisto4Gen->AddToOutput(fCommonHistList); - fFFBckgHisto4GenLeading->AddToOutput(fCommonHistList); + if(fBckgType[1] != kBckgNone) fFFBckgHisto1Gen->AddToOutput(fCommonHistList); + if(fBckgType[2] != kBckgNone) fFFBckgHisto2Gen->AddToOutput(fCommonHistList); + if(fBckgType[3] != kBckgNone) fFFBckgHisto3Gen->AddToOutput(fCommonHistList); + if(fBckgType[4] != kBckgNone) fFFBckgHisto4Gen->AddToOutput(fCommonHistList); + } + + if(fEffMode){ + fFFBckgHisto0RecEffRec->AddToOutput(fCommonHistList); + fFFBckgHisto0SecRecNS->AddToOutput(fCommonHistList); + fFFBckgHisto0SecRecS->AddToOutput(fCommonHistList); + fFFBckgHisto0SecRecSsc->AddToOutput(fCommonHistList); } } if(fQAMode&1){ fQABckgHisto0RecCuts->AddToOutput(fCommonHistList); - fQABckgHisto1RecCuts->AddToOutput(fCommonHistList); - fQABckgHisto2RecCuts->AddToOutput(fCommonHistList); - fQABckgHisto3RecCuts->AddToOutput(fCommonHistList); - fQABckgHisto4RecCuts->AddToOutput(fCommonHistList); + if(fBckgType[1] != kBckgNone) fQABckgHisto1RecCuts->AddToOutput(fCommonHistList); + if(fBckgType[2] != kBckgNone) fQABckgHisto2RecCuts->AddToOutput(fCommonHistList); + if(fBckgType[3] != kBckgNone) fQABckgHisto3RecCuts->AddToOutput(fCommonHistList); + if(fBckgType[4] != kBckgNone) fQABckgHisto4RecCuts->AddToOutput(fCommonHistList); if(genJets && genTracks){ fQABckgHisto0Gen->AddToOutput(fCommonHistList); - fQABckgHisto1Gen->AddToOutput(fCommonHistList); - fQABckgHisto2Gen->AddToOutput(fCommonHistList); - fQABckgHisto3Gen->AddToOutput(fCommonHistList); - fQABckgHisto4Gen->AddToOutput(fCommonHistList); + if(fBckgType[1] != kBckgNone) fQABckgHisto1Gen->AddToOutput(fCommonHistList); + if(fBckgType[2] != kBckgNone) fQABckgHisto2Gen->AddToOutput(fCommonHistList); + if(fBckgType[3] != kBckgNone) fQABckgHisto3Gen->AddToOutput(fCommonHistList); + if(fBckgType[4] != kBckgNone) fQABckgHisto4Gen->AddToOutput(fCommonHistList); } } - - if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ || fBckgType[3]==kBckgOutLJ || fBckgType[4]==kBckgOutLJ) - fCommonHistList->Add(fh1OutLeadingMult); - if(fBckgType[0]==kBckgOutLJStat || fBckgType[1]==kBckgOutLJStat || fBckgType[2]==kBckgOutLJStat || fBckgType[3]==kBckgOutLJStat || fBckgType[4]==kBckgOutLJStat) - fCommonHistList->Add(fh1OutLeadingStatMult); - if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp || fBckgType[3]==kBckgPerp || fBckgType[4]==kBckgPerp) - fCommonHistList->Add(fh1PerpMult); - if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide || fBckgType[3]==kBckgASide || fBckgType[4]==kBckgASide) - fCommonHistList->Add(fh1ASideMult); - if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow || fBckgType[3]==kBckgASideWindow || fBckgType[4]==kBckgASideWindow) - fCommonHistList->Add(fh1ASideWindowMult); - if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow || fBckgType[3]==kBckgPerpWindow || fBckgType[4]==kBckgPerpWindow) - fCommonHistList->Add(fh1PerpWindowMult); - if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J || fBckgType[3]==kBckgOut2J || fBckgType[4]==kBckgOut2J) - fCommonHistList->Add(fh1Out2JetsMult); - if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J || fBckgType[3]==kBckgOut3J || fBckgType[4]==kBckgOut3J) - fCommonHistList->Add(fh1Out3JetsMult); - if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters) - fCommonHistList->Add(fh1MedianClustersMult); - if(fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading - || fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading) - fCommonHistList->Add(fh1OutClustersMult); + + if(fh1BckgMult0) fCommonHistList->Add(fh1BckgMult0); + if(fBckgType[1] != kBckgNone) fCommonHistList->Add(fh1BckgMult1); + if(fBckgType[2] != kBckgNone) fCommonHistList->Add(fh1BckgMult2); + if(fBckgType[3] != kBckgNone) fCommonHistList->Add(fh1BckgMult3); + if(fBckgType[4] != kBckgNone) fCommonHistList->Add(fh1BckgMult4); } - + if(fBranchEmbeddedJets.Length()){ fCommonHistList->Add(fh1FractionPtEmbedded); @@ -3345,17 +1856,10 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() fCommonHistList->Add(fh1nEmbeddedJets); } - if(fEffMode){ - fCommonHistList->Add(fh2ptVsDistNN_pt50_rec); - fCommonHistList->Add(fh2ptVsDistNN_pt50_nonRec); - fCommonHistList->Add(fh2ptVsDistNN_pt10_rec); - fCommonHistList->Add(fh2ptVsDistNN_pt10_nonRec); - } // QA if(fQAMode){ if(fQAMode&1){ // track QA - fQATrackHistosRec->AddToOutput(fCommonHistList); fQATrackHistosRecCuts->AddToOutput(fCommonHistList); if(genTracks) fQATrackHistosGen->AddToOutput(fCommonHistList); } @@ -3380,86 +1884,99 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() if(genJets) fCommonHistList->Add(fh1nGenBckgJets); } - // phi correlation - if(fPhiCorrMode){ - fPhiCorrHistosJetArea->AddToOutput(fCommonHistList); - fPhiCorrHistosTransverseArea->AddToOutput(fCommonHistList); - fPhiCorrHistosAwayArea->AddToOutput(fCommonHistList); - } - - // intra-jet - if(fIJMode){ - fIJHistosRecCuts->AddToOutput(fCommonHistList); - fIJHistosRecLeading->AddToOutput(fCommonHistList); - fIJHistosRecLeadingTrack->AddToOutput(fCommonHistList); - - // Background - if(fBckgMode){ - fIJBckgHisto0RecCuts->AddToOutput(fCommonHistList); - fIJBckgHisto0RecLeading->AddToOutput(fCommonHistList); - fIJBckgHisto1RecCuts->AddToOutput(fCommonHistList); - fIJBckgHisto1RecLeading->AddToOutput(fCommonHistList); - fIJBckgHisto2RecCuts->AddToOutput(fCommonHistList); - fIJBckgHisto2RecLeading->AddToOutput(fCommonHistList); - } - - if(genJets && genTracks){ - fIJHistosGen->AddToOutput(fCommonHistList); - fIJHistosGenLeading->AddToOutput(fCommonHistList); - fIJHistosGenLeadingTrack->AddToOutput(fCommonHistList); - - // Background - if(fBckgMode){ - fIJBckgHisto0Gen->AddToOutput(fCommonHistList); - fIJBckgHisto0GenLeading->AddToOutput(fCommonHistList); - fIJBckgHisto1Gen->AddToOutput(fCommonHistList); - fIJBckgHisto1GenLeading->AddToOutput(fCommonHistList); - fIJBckgHisto2Gen->AddToOutput(fCommonHistList); - fIJBckgHisto2GenLeading->AddToOutput(fCommonHistList); - } - } // end: gen - } // end: intra-jet - - if(fDJMode){ - if(fDJMode&1){ - fFFDiJetHistosRecCuts->AddToOutput(fCommonHistList); - fFFDiJetHistosRecLeading->AddToOutput(fCommonHistList); - fFFDiJetHistosRecLeadingTrack->AddToOutput(fCommonHistList); - if(genJets && genTracks){ - fFFDiJetHistosGen->AddToOutput(fCommonHistList); - fFFDiJetHistosGenLeading->AddToOutput(fCommonHistList); - fFFDiJetHistosGenLeadingTrack->AddToOutput(fCommonHistList); - } - } // end: di-jet - if(fDJMode&2){ - fQADiJetHistosRecCuts->AddToOutput(fCommonHistList); - if(genJets && genTracks){ - fQADiJetHistosGen->AddToOutput(fCommonHistList); - } - } // end: di-jet QA - } // end: di-jet - + if(fEffMode && recJetsEff && genTracks){ if(fQAMode&1){ fQATrackHistosRecEffGen->AddToOutput(fCommonHistList); fQATrackHistosRecEffRec->AddToOutput(fCommonHistList); - fQATrackHistosSecRec->AddToOutput(fCommonHistList); - fCommonHistList->Add(fhnResponseSinglePt); - fCommonHistList->Add(fh2SingleInvPtRecMnGenVsPtGen); + fQATrackHistosSecRecNS->AddToOutput(fCommonHistList); + fQATrackHistosSecRecS->AddToOutput(fCommonHistList); + fQATrackHistosSecRecSsc->AddToOutput(fCommonHistList); } if(fFFMode){ - fFFHistosRecEffGen->AddToOutput(fCommonHistList); fFFHistosRecEffRec->AddToOutput(fCommonHistList); - fFFHistosSecRec->AddToOutput(fCommonHistList); - fCommonHistList->Add(fhnResponseJetTrackPt); - fCommonHistList->Add(fhnResponseJetZ); - fCommonHistList->Add(fhnResponseJetXi); + fFFHistosSecRecNS->AddToOutput(fCommonHistList); + fFFHistosSecRecS->AddToOutput(fCommonHistList); + fFFHistosSecRecSsc->AddToOutput(fCommonHistList); } fCommonHistList->Add(fh1nRecEffJets); fCommonHistList->Add(fh2PtRecVsGenPrim); fCommonHistList->Add(fh2PtRecVsGenSec); } + // jet shape + if(fJSMode){ + + fProNtracksLeadingJet = new TProfile("AvgNoOfTracksLeadingJet","AvgNoOfTracksLeadingJet",100,0,250,0,50); + fProDelR80pcPt = new TProfile("AvgdelR80pcPt","AvgdelR80pcPt",100,0,250,0,1); + + if(genJets && genTracks){ + fProNtracksLeadingJetGen = new TProfile("AvgNoOfTracksLeadingJetGen","AvgNoOfTracksLeadingJetGen",100,0,250,0,50); + fProDelR80pcPtGen = new TProfile("AvgdelR80pcPtGen","AvgdelR80pcPtGen",100,0,250,0,1); + } + + if(fBckgMode) + fProNtracksLeadingJetBgrPerp2 = new TProfile("AvgNoOfTracksLeadingJetBgrPerp2","AvgNoOfTracksLeadingJetBgrPerp2",100,0,250,0,50); + + if(fEffMode){ + fProNtracksLeadingJetRecPrim = new TProfile("AvgNoOfTracksLeadingJetRecPrim","AvgNoOfTracksLeadingJetRecPrim",100,0,250,0,50); + fProDelR80pcPtRecPrim = new TProfile("AvgdelR80pcPtRecPrim","AvgdelR80pcPtRecPrim",100,0,250,0,1); + fProNtracksLeadingJetRecSecNS = new TProfile("AvgNoOfTracksLeadingJetRecSecNS","AvgNoOfTracksLeadingJetRecSecNS",100,0,250,0,50); + fProNtracksLeadingJetRecSecS = new TProfile("AvgNoOfTracksLeadingJetRecSecS","AvgNoOfTracksLeadingJetRecSecS",100,0,250,0,50); + fProNtracksLeadingJetRecSecSsc = new TProfile("AvgNoOfTracksLeadingJetRecSecSsc","AvgNoOfTracksLeadingJetRecSecSsc",100,0,250,0,50); + } + + TString strTitJS; + for(Int_t ii=0; ii<5; ii++){ + if(ii==0)strTitJS = "_JetPt20to30"; + if(ii==1)strTitJS = "_JetPt30to40"; + if(ii==2)strTitJS = "_JetPt40to60"; + if(ii==3)strTitJS = "_JetPt60to80"; + if(ii==4)strTitJS = "_JetPt80to100"; + + fProDelRPtSum[ii] = new TProfile(Form("AvgPtSumDelR%s",strTitJS.Data()),Form("AvgPtSumDelR%s",strTitJS.Data()),50,0,1,0,250); + if(genJets && genTracks) + fProDelRPtSumGen[ii] = new TProfile(Form("AvgPtSumDelRGen%s",strTitJS.Data()),Form("AvgPtSumDelRGen%s",strTitJS.Data()),50,0,1,0,250); + if(fBckgMode) + fProDelRPtSumBgrPerp2[ii] = new TProfile(Form("AvgPtSumDelRBgrPerp2%s",strTitJS.Data()),Form("AvgPtSumDelRBgrPerp2%s",strTitJS.Data()),50,0,1,0,250); + if(fEffMode){ + fProDelRPtSumRecPrim[ii] = new TProfile(Form("AvgPtSumDelRRecPrim%s",strTitJS.Data()),Form("AvgPtSumDelRRecPrim%s",strTitJS.Data()),50,0,1,0,250); + fProDelRPtSumRecSecNS[ii] = new TProfile(Form("AvgPtSumDelRRecSecNS%s",strTitJS.Data()),Form("AvgPtSumDelRRecSecNS%s",strTitJS.Data()),50,0,1,0,250); + fProDelRPtSumRecSecS[ii] = new TProfile(Form("AvgPtSumDelRRecSecS%s",strTitJS.Data()),Form("AvgPtSumDelRRecSecS%s",strTitJS.Data()),50,0,1,0,250); + fProDelRPtSumRecSecSsc[ii] = new TProfile(Form("AvgPtSumDelRRecSecSsc%s",strTitJS.Data()),Form("AvgPtSumDelRRecSecSsc%s",strTitJS.Data()),50,0,1,0,250); + } + } + + fCommonHistList->Add(fProNtracksLeadingJet); + fCommonHistList->Add(fProDelR80pcPt); + for(int ii=0; ii<5; ii++) fCommonHistList->Add(fProDelRPtSum[ii]); + + if(genJets && genTracks){ + fCommonHistList->Add(fProNtracksLeadingJetGen); + fCommonHistList->Add(fProDelR80pcPtGen); + for(Int_t ii=0; ii<5; ii++) fCommonHistList->Add(fProDelRPtSumGen[ii]); + } + + if(fBckgMode){ + fCommonHistList->Add(fProNtracksLeadingJetBgrPerp2); + for(Int_t ii=0; ii<5; ii++) fCommonHistList->Add(fProDelRPtSumBgrPerp2[ii]); + } + + if(fEffMode){ + fCommonHistList->Add(fProNtracksLeadingJetRecPrim); + fCommonHistList->Add(fProDelR80pcPtRecPrim); + for(Int_t ii=0; ii<5; ii++) fCommonHistList->Add(fProDelRPtSumRecPrim[ii]); + + fCommonHistList->Add(fProNtracksLeadingJetRecSecNS); + for(Int_t ii=0; ii<5; ii++) fCommonHistList->Add(fProDelRPtSumRecSecNS[ii]); + + fCommonHistList->Add(fProNtracksLeadingJetRecSecS); + for(Int_t ii=0; ii<5; ii++) fCommonHistList->Add(fProDelRPtSumRecSecS[ii]); + + fCommonHistList->Add(fProNtracksLeadingJetRecSecSsc); + for(Int_t ii=0; ii<5; ii++) fCommonHistList->Add(fProDelRPtSumRecSecSsc[ii]); + } + } // =========== Switch on Sumw2 for all histos =========== for (Int_t i=0; iGetEntries(); ++i){ @@ -3474,7 +1991,6 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() TH1::AddDirectory(oldStatus); PostData(1, fCommonHistList); - } //_______________________________________________ @@ -3491,21 +2007,21 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) // Main loop // Called for each event if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserExec()"); - - + + if(fDebug > 1) Printf("Analysis event #%5d", (Int_t) fEntry); // Trigger selection AliInputEventHandler* inputHandler = (AliInputEventHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler()); - + if(!(inputHandler->IsEventSelected() & fEvtSelectionMask)){ - fh1EvtSelection->Fill(1.); - if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... "); - PostData(1, fCommonHistList); - return; + fh1EvtSelection->Fill(1.); + if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... "); + PostData(1, fCommonHistList); + return; } - + fESD = dynamic_cast(InputEvent()); if(!fESD){ if(fDebug>3) Printf("%s:%d ESDEvent not found in the input", (char*)__FILE__,__LINE__); @@ -3592,7 +2108,7 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) Int_t nTracksPrim = primVtx->GetNContributors(); fh1VertexNContributors->Fill(nTracksPrim); - + if (fDebug > 1) Printf("%s:%d primary vertex selection: %d", (char*)__FILE__,__LINE__,nTracksPrim); if(!nTracksPrim){ if (fDebug > 1) Printf("%s:%d primary vertex selection: event REJECTED...",(char*)__FILE__,__LINE__); @@ -3633,7 +2149,7 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) if(fMCEvent){ AliGenEventHeader* genHeader = fMCEvent->GenEventHeader(); - + if(genHeader){ AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast(genHeader); @@ -3647,7 +2163,6 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) fh1PtHard->Fill(ptHard); fh1PtHardTrials->Fill(ptHard,nTrials); - } else { // no pythia, hijing? if(fDebug>3) Printf("%s:%d no pythiaGenHeader found", (char*)__FILE__,__LINE__); @@ -3662,17 +2177,16 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) //fh1Trials->Fill("#sum{ntrials}",fAvgTrials); } - } //___ fetch jets __________________________________________________________________________ - + Int_t nJ = GetListOfJets(fJetsRec, kJetsRec); Int_t nRecJets = 0; if(nJ>=0) nRecJets = fJetsRec->GetEntries(); if(fDebug>2)Printf("%s:%d Selected Rec jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets); if(nJ != nRecJets) Printf("%s:%d Mismatch Selected Rec Jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets); - + Int_t nJCuts = GetListOfJets(fJetsRecCuts, kJetsRecAcceptance); Int_t nRecJetsCuts = 0; if(nJCuts>=0) nRecJetsCuts = fJetsRecCuts->GetEntries(); @@ -3686,11 +2200,11 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) Int_t nGenJets = 0; if(nJGen>=0) nGenJets = fJetsGen->GetEntries(); if(fDebug>2)Printf("%s:%d Selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets); - + if(nJGen != nGenJets) Printf("%s:%d Mismatch selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets); fh1nGenJets->Fill(nGenJets); - - + + if(fJetTypeRecEff==kJetsKine || fJetTypeRecEff == kJetsKineAcceptance) fJetsRecEff->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear() Int_t nJRecEff = GetListOfJets(fJetsRecEff, fJetTypeRecEff); Int_t nRecEffJets = 0; @@ -3698,12 +2212,12 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) if(fDebug>2)Printf("%s:%d Selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets); if(nJRecEff != nRecEffJets) Printf("%s:%d Mismatch selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets); fh1nRecEffJets->Fill(nRecEffJets); - - + + Int_t nEmbeddedJets = 0; TArrayI iEmbeddedMatchIndex; TArrayF fEmbeddedPtFraction; - + if(fBranchEmbeddedJets.Length()){ Int_t nJEmbedded = GetListOfJets(fJetsEmbedded, kJetsEmbedded); @@ -3711,7 +2225,7 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) if(fDebug>2)Printf("%s:%d Selected Embedded jets: %d %d",(char*)__FILE__,__LINE__,nJEmbedded,nEmbeddedJets); if(nJEmbedded != nEmbeddedJets) Printf("%s:%d Mismatch Selected Embedded Jets: %d %d",(char*)__FILE__,__LINE__,nJEmbedded,nEmbeddedJets); fh1nEmbeddedJets->Fill(nEmbeddedJets); - + Float_t maxDist = 0.3; iEmbeddedMatchIndex.Set(nEmbeddedJets); @@ -3719,15 +2233,15 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) iEmbeddedMatchIndex.Reset(-1); fEmbeddedPtFraction.Reset(0); - + AliAnalysisHelperJetTasks::GetJetMatching(fJetsEmbedded, nEmbeddedJets, fJetsRecCuts, nRecJetsCuts, iEmbeddedMatchIndex, fEmbeddedPtFraction, fDebug, maxDist); - + } - //____ fetch background jets ___________________________________________________ + //____ fetch background clusters ___________________________________________________ if(fBckgMode && (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters || fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading || @@ -3745,7 +2259,7 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) if(fDebug>2)Printf("%s:%d Selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts); if(nRecBckgJetsCuts != nBJCuts) Printf("%s:%d Mismatch selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nBJCuts,nRecBckgJetsCuts); fh1nRecBckgJetsCuts->Fill(nRecBckgJetsCuts); - + if(0){ // protection OB - not yet implemented if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fBckgJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear() Int_t nBJGen = GetListOfBckgJets(fBckgJetsGen, fJetTypeGen); @@ -3760,17 +2274,6 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) //____ fetch particles __________________________________________________________ - Int_t nT; - if(fUseExtraTracks == 1) nT = GetListOfTracks(fTracksRec, kTrackAODExtra); - else if(fUseExtraTracks == -1) nT = GetListOfTracks(fTracksRec, kTrackAODExtraonly); - else nT = GetListOfTracks(fTracksRec, kTrackAOD); - - Int_t nRecPart = 0; - if(nT>=0) nRecPart = fTracksRec->GetEntries(); - if(fDebug>2)Printf("%s:%d Selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart); - if(nRecPart != nT) Printf("%s:%d Mismatch selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart); - - Int_t nTCuts; if(fUseExtraTracks == 1) nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODExtraCuts); else if(fUseExtraTracks == -1) nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODExtraonlyCuts); @@ -3783,7 +2286,6 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) fh1EvtMult->Fill(nRecPartCuts); - Int_t nTGen = GetListOfTracks(fTracksGen,fTrackTypeGen); Int_t nGenPart = 0; if(nTGen>=0) nGenPart = fTracksGen->GetEntries(); @@ -3796,10 +2298,6 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) if(fQAMode){ // loop over tracks if(fQAMode&1){ - for(Int_t it=0; it(fTracksRec->At(it)); - if(part)fQATrackHistosRec->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt()); - } for(Int_t it=0; it(fTracksRecCuts->At(it)); if(part)fQATrackHistosRecCuts->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt() ); @@ -3808,31 +2306,9 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) AliVParticle *part = dynamic_cast(fTracksGen->At(it)); if(part)fQATrackHistosGen->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt()); } - - // fill DCA to prim vertex - for(Int_t it=0; it(fTracksRecCuts->At(it)); - - if(!aodtr) continue; - if(!primVtx) continue; - - Double_t bfield = fAOD->GetMagneticField(); - Double_t dz[2]; - Double_t cov[3]; - - AliAODTrack tmp(*aodtr); - tmp.PropagateToDCA(primVtx, bfield, 5., dz, cov); - - Double_t dcaXY = dz[0]; - Double_t dcaZ = dz[1]; - - fh2TrackPtVsDCAXY->Fill(dcaXY,tmp.Pt()); - fh2TrackPtVsDCAZ->Fill(dcaZ,tmp.Pt()); - } } - - // loop over jets + // loop over jets if(fQAMode&2){ for(Int_t ij=0; ij(fJetsRec->At(ij)); @@ -3840,8 +2316,8 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) } } } - - if(fQAMode || fFFMode || fIJMode || fPhiCorrMode){ + + if(fQAMode || fFFMode){ for(Int_t ij=0; ijAt(ij)); @@ -3850,7 +2326,6 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) if(ij==0){ // leading jet if(fQAMode&2) fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() ); - Double_t ptFractionEmbedded = 0; AliAODJet* embeddedJet = 0; @@ -3867,7 +2342,7 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) fh1IndexEmbedded->Fill(indexEmbedded); fh1FractionPtEmbedded->Fill(ptFractionEmbedded); - + if(indexEmbedded>-1){ embeddedJet = dynamic_cast(fJetsEmbedded->At(indexEmbedded)); @@ -3886,17 +2361,14 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) TList* jettracklist = new TList(); Double_t sumPt = 0.; Bool_t isBadJet = kFALSE; - Float_t leadTrackPt = 0.; - TLorentzVector* leadTrackV = new TLorentzVector(); - if(GetFFRadius()<=0){ - GetJetTracksTrackrefs(jettracklist, jet, GetFFMaxTrackPt(), isBadJet); + GetJetTracksTrackrefs(jettracklist, jet, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet); } else { if(fUseEmbeddedJetAxis){ - if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet); + if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet, GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet); } - else GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet); + else GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet); } if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE; @@ -3909,6 +2381,10 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) AliVParticle* trackVP = dynamic_cast(jettracklist->At(it)); if(!trackVP)continue; + + AliAODTrack * aodtrack = dynamic_cast(jettracklist->At(it)); + if(!aodtrack) continue; + TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P()); Float_t jetPt = jet->Pt(); @@ -3921,79 +2397,33 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; - if(fFFMode) fFFHistosRecCuts->FillFF( trackPt, jetPt, incrementJetPt); - if(fIJMode) fIJHistosRecCuts->FillIntraJet( trackV, jet->MomentumVector() ); - - if(it==0){ // leading track - leadTrackPt = trackPt; - leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P()); - - if(fFFMode) fFFHistosRecLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE); - if(fIJMode) fIJHistosRecLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() ); - } - if(fFFMode) fFFHistosRecLeading->FillFF( trackPt, leadTrackPt , incrementJetPt); - if(fIJMode) fIJHistosRecLeading->FillIntraJet( trackV, leadTrackV ); - + if(fFFMode) fFFHistosRecCuts->FillFF(trackPt, jetPt, incrementJetPt); + delete trackV; } - // ff and ij for background study + // background ff if(fBckgMode){ - if(fBckgType[0]!=-1) - FillBckgHistos(fBckgType[0], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV, - fFFBckgHisto0RecCuts, fFFBckgHisto0RecLeading, - fIJBckgHisto0RecCuts, fIJBckgHisto0RecLeading, - fQABckgHisto0RecCuts); - if(fBckgType[1]!=-1) - FillBckgHistos(fBckgType[1], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV, - fFFBckgHisto1RecCuts, fFFBckgHisto1RecLeading, - fIJBckgHisto1RecCuts, fIJBckgHisto1RecLeading, - fQABckgHisto1RecCuts); - if(fBckgType[2]!=-1) - FillBckgHistos(fBckgType[2], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV, - fFFBckgHisto2RecCuts, fFFBckgHisto2RecLeading, - fIJBckgHisto2RecCuts, fIJBckgHisto2RecLeading, - fQABckgHisto2RecCuts); - if(fBckgType[3]!=-1) - FillBckgHistos(fBckgType[3], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV, - fFFBckgHisto3RecCuts, fFFBckgHisto3RecLeading, - fIJBckgHisto3RecCuts, fIJBckgHisto3RecLeading, - fQABckgHisto3RecCuts); - if(fBckgType[4]!=-1) - FillBckgHistos(fBckgType[4], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV, - fFFBckgHisto4RecCuts, fFFBckgHisto4RecLeading, - fIJBckgHisto4RecCuts, fIJBckgHisto4RecLeading, - fQABckgHisto4RecCuts); + if(fBckgType[0]!=kBckgNone) + FillBckgHistos(fBckgType[0], fTracksRecCuts, fJetsRecCuts, jet, + fFFBckgHisto0RecCuts,fQABckgHisto0RecCuts, fh1BckgMult0); + if(fBckgType[1]!=kBckgNone) + FillBckgHistos(fBckgType[1], fTracksRecCuts, fJetsRecCuts, jet, + fFFBckgHisto1RecCuts,fQABckgHisto1RecCuts, fh1BckgMult1); + if(fBckgType[2]!=kBckgNone) + FillBckgHistos(fBckgType[2], fTracksRecCuts, fJetsRecCuts, jet, + fFFBckgHisto2RecCuts,fQABckgHisto2RecCuts, fh1BckgMult2); + if(fBckgType[3]!=kBckgNone) + FillBckgHistos(fBckgType[3], fTracksRecCuts, fJetsRecCuts, jet, + fFFBckgHisto3RecCuts,fQABckgHisto3RecCuts, fh1BckgMult3); + if(fBckgType[4]!=kBckgNone) + FillBckgHistos(fBckgType[4], fTracksRecCuts, fJetsRecCuts, jet, + fFFBckgHisto4RecCuts,fQABckgHisto4RecCuts, fh1BckgMult4); } // end if(fBckgMode) + - - // phi correlation - if(fPhiCorrMode){ - for(Int_t it=0; itAt(it)); - - Float_t partEta = part->Eta(); - Float_t partPhi = part->Phi(); - Float_t partPt = part->Pt(); - - fPhiCorrHistosJetArea->FillTrackQA( partEta, - TVector2::Phi_mpi_pi( jet->Phi() - partPhi ), - partPt, - kTRUE); - - fPhiCorrHistosTransverseArea->FillTrackQA( partEta, - TVector2::Phi_mpi_pi( jet->Phi() - partPhi + TMath::Pi()/2), - partPt, - kTRUE); - - fPhiCorrHistosAwayArea->FillTrackQA( partEta, - TVector2::Phi_mpi_pi( jet->Phi() - partPhi + TMath::Pi()), - partPt, - kTRUE); - } - } // end: phi-correlation - - delete leadTrackV; + if(fJSMode) FillJetShape(jet, jettracklist, fProNtracksLeadingJet, fProDelRPtSum, fProDelR80pcPt); + delete jettracklist; } // end: cut embedded ratio @@ -4010,17 +2440,15 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) if(ij==0){ // leading jet if(fQAMode&2) fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt()); - + TList* jettracklist = new TList(); Double_t sumPt = 0.; Bool_t isBadJet = kFALSE; - Float_t leadTrackPt = 0.; - TLorentzVector* leadTrackV = new TLorentzVector(); if(GetFFRadius()<=0){ - GetJetTracksTrackrefs(jettracklist, jet, GetFFMaxTrackPt(), isBadJet); + GetJetTracksTrackrefs(jettracklist, jet, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet); } else { - GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet); + GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet); } if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;; @@ -4033,312 +2461,42 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P()); Float_t jetPt = jet->Pt(); - Float_t trackPt = trackV->Pt(); - - Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; - - if(fFFMode) fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt ); - if(fIJMode) fIJHistosGen->FillIntraJet( trackV, jet->MomentumVector() ); - - if(it==0){ // leading track - leadTrackPt = trackPt; - leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P()); - - if(fFFMode) fFFHistosGenLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE ); - if(fIJMode) fIJHistosGenLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() ); - } - if(fFFMode) fFFHistosGenLeading->FillFF( trackPt, leadTrackPt, incrementJetPt ); - if(fIJMode) fIJHistosGenLeading->FillIntraJet( trackV, leadTrackV ); - - delete trackV; - } - - delete leadTrackV; - delete jettracklist; - } - } - } // end: QA, FF and intra-jet - - //_______ DiJet part _____________________________________________________ - if(fDJMode){ - if (nRecJetsCuts > 1) - { - AliAODJet* jet1 = (AliAODJet*)(fJetsRecCuts->At(0)); - AliAODJet* jet2 = (AliAODJet*)(fJetsRecCuts->At(1)); - - // DiJet deltaphi calculation - Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi()); - Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi()); - Double_t deltaPhi = TMath::Abs(phi1-phi2); - if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi; - - // DiJet CDF cut calculation - Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta())); - Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta())); - Double_t sumEt = et1 + et2; - Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi)); - Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt); - - // DiJet events selection - Bool_t positionCut = 0; - Bool_t positionEnergyCut = 0; - Bool_t cdfCut = 0; - - // Position cut : - if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1; - // Position-Energy cut : - if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1; - // CDF cut : - if (ratio < fDiJetCDFCut) cdfCut = 1; - - Int_t go = 0; - - if (fDiJetCut == 1 && positionCut == 1) go = 1; - if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1; - if (fDiJetCut == 3 && cdfCut == 1) go = 1; - - if (go) - { - Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta()); - Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt()); - Double_t inbal = (jet1->Pt()-jet2->Pt())/(jet1->Pt()+jet2->Pt()); - Double_t meanEt = (Double_t)((et1+et2)/2.); - Double_t invariantMass = (Double_t)InvMass(jet1,jet2); - - Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins); - - if (jetBin > 0) - { - if(fDJMode&2) fQADiJetHistosRecCuts->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, inbal, jetBin); - - if(fDJMode&1){ - TList* jettracklist1 = new TList(); - Double_t sumPt1 = 0.; - Bool_t isBadJet1 = kFALSE; - Float_t leadTrackPt1 = 0; - - - TList* jettracklist2 = new TList(); - Double_t sumPt2 = 0.; - Bool_t isBadJet2 = kFALSE; - Float_t leadTrackPt2 = 0; - - if(GetFFRadius()<=0) - { - GetJetTracksTrackrefs(jettracklist1, jet1, GetFFMaxTrackPt(), isBadJet1); - GetJetTracksTrackrefs(jettracklist2, jet2, GetFFMaxTrackPt(), isBadJet2); - } - else - { - GetJetTracksPointing(fTracksRecCuts, jettracklist1, jet1, GetFFRadius(), sumPt1, GetFFMaxTrackPt(), isBadJet1); - GetJetTracksPointing(fTracksRecCuts, jettracklist2, jet2, GetFFRadius(), sumPt2, GetFFMaxTrackPt(), isBadJet2); - } - - - if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet1 = kTRUE; - if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet2 = kTRUE; - - if(!(isBadJet1 || isBadJet2)){ // good jets - - Int_t nTracks = jettracklist1->GetSize(); - if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize(); - - for(Int_t it=0; itGetSize()) - { - AliVParticle *vp = (dynamic_cast (jettracklist1->At(it))); - Float_t trackPt1 = (vp?vp->Pt():0); - Float_t jetPt1 = jet1->Pt(); - - Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; - - fFFDiJetHistosRecCuts->FillDiJetFF(1, trackPt1, jetPt1, jetBin, incrementJetPt); - fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt1, jetPt1, jetBin, incrementJetPt); - - if (it == 0) - { - leadTrackPt1 = trackPt1; - - fFFDiJetHistosRecLeadingTrack->FillDiJetFF(1, leadTrackPt1, jetPt1, jetBin, kTRUE); - fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt1, jetPt1, jetBin, kTRUE); - } - - fFFDiJetHistosRecLeading->FillDiJetFF(1, trackPt1, leadTrackPt1, jetBin, incrementJetPt); - fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt1, leadTrackPt1, jetBin, incrementJetPt); - } - - if (it < jettracklist2->GetSize()) - { - Float_t trackPt2 = ((AliVParticle*)(jettracklist2->At(it)))->Pt(); - Float_t jetPt2 = jet2->Pt(); - - Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; - - fFFDiJetHistosRecCuts->FillDiJetFF(2, trackPt2, jetPt2, jetBin, incrementJetPt); - fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt2, jetPt2, jetBin, incrementJetPt); - - if (it == 0) - { - leadTrackPt2 = trackPt2; - - fFFDiJetHistosRecLeadingTrack->FillDiJetFF(2, leadTrackPt2, jetPt2, jetBin, kTRUE); - fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt2, jetPt2, jetBin, kTRUE); - } - - fFFDiJetHistosRecLeading->FillDiJetFF(2, trackPt2, leadTrackPt2, jetBin, incrementJetPt); - fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt2, leadTrackPt2, jetBin, incrementJetPt); - } - } // End loop on tracks - } - - delete jettracklist1; - delete jettracklist2; - } - } // End if(jetBin > 0) - else { Printf("Jet bins for di-jet studies not set !");} - } // End if(go) - } // End if(nRecJets > 1) - - if (nGenJets > 1) - { - AliAODJet* jet1 = dynamic_cast(fJetsGen->At(0)); - AliAODJet* jet2 = dynamic_cast(fJetsGen->At(1)); - if(jet1&&jet2){ - - Double_t deltaPhi = 0; - Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi()); - Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi()); - deltaPhi = TMath::Abs(phi1-phi2); - if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi; - - Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta())); - Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta())); - Double_t sumEt = et1 + et2; - Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi)); - Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt); - - // DiJet events selection - Bool_t positionCut = 0; - Bool_t positionEnergyCut = 0; - Bool_t cdfCut = 0; - - // Position cut : - if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1; - // Position-Energy cut : - if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1; - // CDF cut : - if (ratio < fDiJetCDFCut) cdfCut = 1; - - Int_t go = 0; - - if (fDiJetCut == 1 && positionCut == 1) go = 1; - if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1; - if (fDiJetCut == 3 && cdfCut == 1) go = 1; + Float_t trackPt = trackV->Pt(); + + Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; + + if(fFFMode) fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt ); + + delete trackV; + } + + if(fBckgMode){ + if(fBckgType[0]!=kBckgNone) + FillBckgHistos(fBckgType[0], fTracksGen, fJetsGen, jet, + fFFBckgHisto0Gen, fQABckgHisto0Gen); + if(fBckgType[1]!=kBckgNone) + FillBckgHistos(fBckgType[1], fTracksGen, fJetsGen, jet, + fFFBckgHisto1Gen, fQABckgHisto1Gen); + if(fBckgType[2]!=kBckgNone) + FillBckgHistos(fBckgType[2], fTracksGen, fJetsGen, jet, + fFFBckgHisto2Gen, fQABckgHisto2Gen); + if(fBckgType[3]!=kBckgNone) + FillBckgHistos(fBckgType[3], fTracksGen, fJetsGen, jet, + fFFBckgHisto3Gen, fQABckgHisto3Gen); + if(fBckgType[4]!=kBckgNone) + FillBckgHistos(fBckgType[4], fTracksGen, fJetsGen, jet, + fFFBckgHisto4Gen, fQABckgHisto4Gen); + } // end if(fBckgMode) - if (go) - { - Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta()); - Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt()); - Double_t inbal = (jet1->Pt()-jet2->Pt())/(jet1->Pt()+jet2->Pt()); - Double_t meanEt = (Double_t)((et1+et2)/2.); - Double_t invariantMass = (Double_t)InvMass(jet1,jet2); - - Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins); - - if(jetBin > 0) - { - if(fDJMode&2) fQADiJetHistosGen->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, inbal, jetBin); - - if(fDJMode&1){ - TList* jettracklist1 = new TList(); - Double_t sumPt1 = 0.; - Bool_t isBadJet1 = kFALSE; - Float_t leadTrackPt1 = 0.; - - TList* jettracklist2 = new TList(); - Double_t sumPt2 = 0.; - Bool_t isBadJet2 = kFALSE; - Float_t leadTrackPt2 = 0.; - - if(GetFFRadius()<=0) - { - GetJetTracksTrackrefs(jettracklist1, jet1, GetFFMaxTrackPt(), isBadJet1); - GetJetTracksTrackrefs(jettracklist2, jet2, GetFFMaxTrackPt(), isBadJet2); - } - else - { - GetJetTracksPointing(fTracksGen, jettracklist1, jet1, GetFFRadius(), sumPt1, GetFFMaxTrackPt(), isBadJet1); - GetJetTracksPointing(fTracksGen, jettracklist2, jet2, GetFFRadius(), sumPt2, GetFFMaxTrackPt(), isBadJet2); - } - - - if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet1 = kTRUE; - if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet2 = kTRUE; - - if(!(isBadJet1 || isBadJet2)){ // good jets - - Int_t nTracks = jettracklist1->GetSize(); - if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize(); - - for(Int_t it=0; itGetSize()) - { - Float_t trackPt1 = ((AliVParticle*)jettracklist1->At(it))->Pt(); - Float_t jetPt1 = jet1->Pt(); - - Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; - - fFFDiJetHistosGen->FillDiJetFF( 1, trackPt1, jetPt1, jetBin, incrementJetPt); - fFFDiJetHistosGen->FillDiJetFF( 0, trackPt1, jetPt1, jetBin, incrementJetPt); - - if(it==0) - { - leadTrackPt1 = trackPt1; - - fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 1, leadTrackPt1, jetPt1, jetBin, kTRUE); - fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt1, jetPt1, jetBin, kTRUE); - } - - fFFDiJetHistosGenLeading->FillDiJetFF( 1, trackPt1, leadTrackPt1, jetBin, incrementJetPt); - fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt1, leadTrackPt1, jetBin, incrementJetPt); - } - - if (it < jettracklist2->GetSize()) - { - Float_t trackPt2 = ((AliVParticle*)jettracklist2->At(it))->Pt(); - Float_t jetPt2 = jet2->Pt(); - - Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; - - fFFDiJetHistosGen->FillDiJetFF( 2, trackPt2, jetPt2, jetBin, incrementJetPt); - fFFDiJetHistosGen->FillDiJetFF( 0, trackPt2, jetPt2, jetBin, incrementJetPt); - - if (it==0) - { - leadTrackPt2 = trackPt2; - - fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 2, leadTrackPt2, jetPt2, jetBin, kTRUE); - fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt2, jetPt2, jetBin, kTRUE); - } - - fFFDiJetHistosGenLeading->FillDiJetFF( 2, trackPt2, leadTrackPt2, jetBin, incrementJetPt); - fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt2, leadTrackPt2, jetBin, incrementJetPt); - } - } // End loop on tracks - } - - delete jettracklist1; - delete jettracklist2; - } - } // End if(jetBin > 0) - else { Printf("Jet bins for di-jet studies not set !");} - } // End if (go) - }// end if jet1 and jet2 - } // End if(nGenJets > 1) - } // end: di-jet - + + if(fJSMode) FillJetShape(jet, jettracklist, fProNtracksLeadingJetGen, fProDelRPtSumGen, fProDelR80pcPtGen); + + delete jettracklist; + } + } + } // end: QA, FF and intra-jet + + // ____ efficiency _______________________________ if(fEffMode && (fJetTypeRecEff != kJetsUndef)){ @@ -4350,43 +2508,50 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) // array holding for each reconstructed AOD track generated particle index, initialized in AssociateGenRec(...) function TArrayI indexMCTr; - // ... and another set for secondaries (secondary MC tracks are stored in a different list) - TArrayI indexAODTrSec; - TArrayS isGenSec; - TArrayI indexMCTrSec; + // ... and another set for secondaries from strange/non strange mothers (secondary MC tracks are stored in different lists) + TArrayI indexAODTrSecNS; + TArrayS isGenSecNS; + TArrayI indexMCTrSecNS; + TArrayI indexAODTrSecS; + TArrayS isGenSecS; + TArrayI indexMCTrSecS; + Int_t nTracksAODMCCharged = GetListOfTracks(fTracksAODMCCharged, kTrackAODMCCharged); if(fDebug>2)Printf("%s:%d selected AODMC tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCCharged); - Int_t nTracksAODMCChargedSec = GetListOfTracks(fTracksAODMCChargedSec, kTrackAODMCChargedSec); - if(fDebug>2)Printf("%s:%d selected AODMC secondary tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCChargedSec); + Int_t nTracksAODMCChargedSecNS = GetListOfTracks(fTracksAODMCChargedSecNS, kTrackAODMCChargedSecNS); + if(fDebug>2)Printf("%s:%d selected AODMC secondary tracks NS: %d ",(char*)__FILE__,__LINE__,nTracksAODMCChargedSecNS); + Int_t nTracksAODMCChargedSecS = GetListOfTracks(fTracksAODMCChargedSecS, kTrackAODMCChargedSecS); + if(fDebug>2)Printf("%s:%d selected AODMC secondary tracks S: %d ",(char*)__FILE__,__LINE__,nTracksAODMCChargedSecS); + Int_t nTracksRecQualityCuts = GetListOfTracks(fTracksRecQualityCuts, kTrackAODQualityCuts); if(fDebug>2)Printf("%s:%d selected rec tracks quality after cuts, full acceptance/pt : %d ",(char*)__FILE__,__LINE__,nTracksRecQualityCuts); // associate gen and rec tracks, store indices in TArrays AssociateGenRec(fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,indexMCTr,isGenPrim,fh2PtRecVsGenPrim); - AssociateGenRec(fTracksAODMCChargedSec,fTracksRecQualityCuts,indexAODTrSec,indexMCTrSec,isGenSec,fh2PtRecVsGenSec); + AssociateGenRec(fTracksAODMCChargedSecNS,fTracksRecQualityCuts,indexAODTrSecNS,indexMCTrSecNS,isGenSecNS,fh2PtRecVsGenSec); + AssociateGenRec(fTracksAODMCChargedSecS,fTracksRecQualityCuts,indexAODTrSecS,indexMCTrSecS,isGenSecS,fh2PtRecVsGenSec); // single track eff if(fQAMode&1) FillSingleTrackHistosRecGen(fQATrackHistosRecEffGen,fQATrackHistosRecEffRec,fTracksAODMCCharged,indexAODTr,isGenPrim); - if(fQAMode&1) FillSingleTrackResponse(fhnResponseSinglePt,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim); // secondaries - if(fQAMode&1) FillSingleTrackHistosRecGen(0x0,fQATrackHistosSecRec,fTracksAODMCChargedSec,indexAODTrSec,isGenSec); + if(fQAMode&1) FillSingleTrackHistosRecGen(0x0,fQATrackHistosSecRecNS,fTracksAODMCChargedSecNS,indexAODTrSecNS,isGenSecNS); + if(fQAMode&1) FillSingleTrackHistosRecGen(0x0,fQATrackHistosSecRecS,fTracksAODMCChargedSecS,indexAODTrSecS,isGenSecS); + if(fQAMode&1) FillSingleTrackHistosRecGen(0x0,fQATrackHistosSecRecSsc,fTracksAODMCChargedSecS,indexAODTrSecS,isGenSecS,kTRUE); - // high-pt occupancy effect - FillTwoTrackHistosRecGen(fTracksAODMCCharged, /*fTracksRecQualityCuts,indexAODTr,*/ isGenPrim); - // jet track eff - + // jet track eff Double_t sumPtGenLeadingJetRecEff = 0; Double_t sumPtGenLeadingJetSec = 0; Double_t sumPtRecLeadingJetRecEff = 0; - for(Int_t ij=0; ijAt(ij)); + Bool_t isBadJetGenPrim = kFALSE; Bool_t isBadJetGenSec = kFALSE; Bool_t isBadJetRec = kFALSE; @@ -4396,93 +2561,190 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) // for efficiency: gen tracks from pointing with gen/rec jet TList* jettracklistGenPrim = new TList(); - GetJetTracksPointing(fTracksAODMCCharged, jettracklistGenPrim, jet, GetFFRadius(), sumPtGenLeadingJetRecEff, GetFFMaxTrackPt(), isBadJetGenPrim); + + // if radius<0 -> trackRefs: collect gen tracks in wide radius + fill FF recEff rec histos with tracks contained in track refs + // note : FF recEff gen histos will be somewhat useless in this approach + + if(GetFFRadius() >0) + GetJetTracksPointing(fTracksAODMCCharged, jettracklistGenPrim, jet, GetFFRadius(), sumPtGenLeadingJetRecEff, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJetGenPrim); + else + GetJetTracksPointing(fTracksAODMCCharged, jettracklistGenPrim, jet, TMath::Abs(GetFFRadius())+0.2, sumPtGenLeadingJetRecEff, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJetGenPrim); + + TList* jettracklistGenSecNS = new TList(); + if(GetFFRadius() >0) + GetJetTracksPointing(fTracksAODMCChargedSecNS, jettracklistGenSecNS, jet, GetFFRadius(), sumPtGenLeadingJetSec, GetFFMinLTrackPt() , GetFFMaxTrackPt(), isBadJetGenSec); + else + GetJetTracksPointing(fTracksAODMCChargedSecNS, jettracklistGenSecNS, jet, TMath::Abs(GetFFRadius())+0.2, sumPtGenLeadingJetSec, GetFFMinLTrackPt() , GetFFMaxTrackPt(), isBadJetGenSec); + + TList* jettracklistGenSecS = new TList(); + if(GetFFRadius() >0) + GetJetTracksPointing(fTracksAODMCChargedSecS, jettracklistGenSecS, jet, GetFFRadius(), sumPtGenLeadingJetSec, GetFFMinLTrackPt() , GetFFMaxTrackPt(), isBadJetGenSec); + else + GetJetTracksPointing(fTracksAODMCChargedSecS, jettracklistGenSecS, jet, TMath::Abs(GetFFRadius())+0.2, sumPtGenLeadingJetSec, GetFFMinLTrackPt() , GetFFMaxTrackPt(), isBadJetGenSec); - TList* jettracklistGenSec = new TList(); - GetJetTracksPointing(fTracksAODMCChargedSec, jettracklistGenSec, jet, GetFFRadius(), sumPtGenLeadingJetSec, GetFFMaxTrackPt(), isBadJetGenSec); // bin efficiency in jet pt bins using rec tracks TList* jettracklistRec = new TList(); - GetJetTracksPointing(fTracksRecCuts,jettracklistRec, jet, GetFFRadius(), sumPtRecLeadingJetRecEff, GetFFMaxTrackPt(), isBadJetRec); + if(GetFFRadius() >0) GetJetTracksPointing(fTracksRecCuts,jettracklistRec, jet, GetFFRadius(), sumPtRecLeadingJetRecEff, GetFFMinLTrackPt() , GetFFMaxTrackPt(), isBadJetRec); + else GetJetTracksTrackrefs(jettracklistRec, jet, GetFFMinLTrackPt() , GetFFMaxTrackPt(), isBadJetRec); + Double_t jetEta = jet->Eta(); Double_t jetPhi = TVector2::Phi_0_2pi(jet->Phi()); - if(GetFFMinNTracks()>0 && jettracklistGenPrim->GetSize()<=GetFFMinNTracks()) isBadJetGenPrim = kTRUE; - if(GetFFMinNTracks()>0 && jettracklistGenSec->GetSize()<=GetFFMinNTracks()) isBadJetGenSec = kTRUE; - if(GetFFMinNTracks()>0 && jettracklistRec->GetSize()<=GetFFMinNTracks()) isBadJetRec = kTRUE; + if(GetFFMinNTracks()>0 && jettracklistGenPrim->GetSize()<=GetFFMinNTracks()) isBadJetGenPrim = kTRUE; + if(GetFFMinNTracks()>0 && jettracklistGenSecNS->GetSize()<=GetFFMinNTracks()) isBadJetGenSec = kTRUE; + if(GetFFMinNTracks()>0 && jettracklistRec->GetSize()<=GetFFMinNTracks()) isBadJetRec = kTRUE; if(isBadJetRec) continue; if(fQAMode&2) fQAJetHistosRecEffLeading->FillJetQA( jetEta, jetPhi, sumPtGenLeadingJetRecEff ); - if(fFFMode) FillJetTrackHistosRecGen(fFFHistosRecEffGen,fFFHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff, - jettracklistGenPrim,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins); - - if(fFFMode) FillJetTrackResponse(fhnResponseJetTrackPt,fhnResponseJetZ,fhnResponseJetXi,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff, - jettracklistGenPrim,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim,fUseResponseRecJetPtBins); + if(fFFMode){ + + if(GetFFRadius()>0) FillJetTrackHistosRec(fFFHistosRecEffRec,jet, + jettracklistGenPrim,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim, + 0,kFALSE,fJSMode,fProNtracksLeadingJetRecPrim,fProDelRPtSumRecPrim,fProDelR80pcPtRecPrim); + + else FillJetTrackHistosRec(fFFHistosRecEffRec,jet, + jettracklistGenPrim,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim, + jettracklistRec,kFALSE,fJSMode,fProNtracksLeadingJetRecPrim,fProDelRPtSumRecPrim,fProDelR80pcPtRecPrim); + - // secondaries: use jet pt from primaries - if(fFFMode) FillJetTrackHistosRecGen(0x0,fFFHistosSecRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff, - jettracklistGenSec,fTracksAODMCChargedSec,indexAODTrSec,isGenSec,fUseRecEffRecJetPtBins); + // secondaries: use jet pt from primaries + if(GetFFRadius()>0) FillJetTrackHistosRec(fFFHistosSecRecNS,jet, + jettracklistGenSecNS,fTracksAODMCChargedSecNS,fTracksRecQualityCuts, indexAODTrSecNS,isGenSecNS, + 0,kFALSE,fJSMode,fProNtracksLeadingJetRecSecNS,fProDelRPtSumRecSecNS); + + else FillJetTrackHistosRec(fFFHistosSecRecNS,jet, + jettracklistGenSecNS,fTracksAODMCChargedSecNS,fTracksRecQualityCuts,indexAODTrSecNS,isGenSecNS, + jettracklistRec,kFALSE,fJSMode,fProNtracksLeadingJetRecSecNS,fProDelRPtSumRecSecNS); + + if(GetFFRadius()>0) FillJetTrackHistosRec(fFFHistosSecRecS,jet, + jettracklistGenSecS,fTracksAODMCChargedSecS,fTracksRecQualityCuts,indexAODTrSecS,isGenSecS, + 0,kFALSE,fJSMode,fProNtracksLeadingJetRecSecS,fProDelRPtSumRecSecS); + else FillJetTrackHistosRec(fFFHistosSecRecS,jet, + jettracklistGenSecS,fTracksAODMCChargedSecS,fTracksRecQualityCuts,indexAODTrSecS,isGenSecS, + jettracklistRec,kFALSE,fJSMode,fProNtracksLeadingJetRecSecS,fProDelRPtSumRecSecS); + + if(GetFFRadius()>0) FillJetTrackHistosRec(fFFHistosSecRecSsc,jet, + jettracklistGenSecS,fTracksAODMCChargedSecS,fTracksRecQualityCuts,indexAODTrSecS,isGenSecS, + 0,kTRUE,fJSMode,fProNtracksLeadingJetRecSecSsc,fProDelRPtSumRecSecSsc); + + else FillJetTrackHistosRec(fFFHistosSecRecSsc,jet, + jettracklistGenSecS,fTracksAODMCChargedSecS,fTracksRecQualityCuts,indexAODTrSecS,isGenSecS, + jettracklistRec,kTRUE,fJSMode,fProNtracksLeadingJetRecSecSsc,fProDelRPtSumRecSecSsc); + } + delete jettracklistGenPrim; - delete jettracklistGenSec; + delete jettracklistGenSecNS; + delete jettracklistGenSecS; delete jettracklistRec; - } - } - + + + if(fBckgMode && fFFMode){ - // bckgr eff: complementary cones + TList* perpjettracklistGen = new TList(); + TList* perpjettracklistGen1 = new TList(); + TList* perpjettracklistGen2 = new TList(); - if(0){ - - for(Int_t ij=0; ij(fJetsRecEff->At(ij)); - - if(ij==0){ // leading jet + Double_t sumPtGenPerp = 0.; + Double_t sumPtGenPerp1 = 0.; + Double_t sumPtGenPerp2 = 0.; + GetTracksTiltedwrpJetAxis(TMath::Pi()/2.,fTracksAODMCCharged, perpjettracklistGen1, jet, TMath::Abs(GetFFRadius()) , sumPtGenPerp1); + GetTracksTiltedwrpJetAxis(-1*TMath::Pi()/2.,fTracksAODMCCharged, perpjettracklistGen2, jet, TMath::Abs(GetFFRadius()) , sumPtGenPerp2); + + perpjettracklistGen->AddAll(perpjettracklistGen1); + perpjettracklistGen->AddAll(perpjettracklistGen2); + sumPtGenPerp = 0.5*(sumPtGenPerp1+sumPtGenPerp2); + + TList* perpjettracklistGenSecNS = new TList(); + TList* perpjettracklistGenSecNS1 = new TList(); + TList* perpjettracklistGenSecNS2 = new TList(); + + Double_t sumPtGenPerpNS; + Double_t sumPtGenPerpNS1; + Double_t sumPtGenPerpNS2; + GetTracksTiltedwrpJetAxis(TMath::Pi()/2.,fTracksAODMCChargedSecNS, perpjettracklistGenSecNS1, jet, TMath::Abs(GetFFRadius()) , sumPtGenPerpNS1); + GetTracksTiltedwrpJetAxis(-1*TMath::Pi()/2.,fTracksAODMCChargedSecNS, perpjettracklistGenSecNS2, jet, TMath::Abs(GetFFRadius()) , sumPtGenPerpNS2); + + perpjettracklistGenSecNS->AddAll(perpjettracklistGenSecNS1); + perpjettracklistGenSecNS->AddAll(perpjettracklistGenSecNS2); + sumPtGenPerpNS = 0.5*(sumPtGenPerpNS1+sumPtGenPerpNS2); + + + TList* perpjettracklistGenSecS = new TList(); + TList* perpjettracklistGenSecS1 = new TList(); + TList* perpjettracklistGenSecS2 = new TList(); + + Double_t sumPtGenPerpS; + Double_t sumPtGenPerpS1; + Double_t sumPtGenPerpS2; + GetTracksTiltedwrpJetAxis(TMath::Pi()/2.,fTracksAODMCChargedSecS, perpjettracklistGenSecS1, jet, TMath::Abs(GetFFRadius()) , sumPtGenPerpS1); + GetTracksTiltedwrpJetAxis(-1*TMath::Pi()/2.,fTracksAODMCChargedSecS, perpjettracklistGenSecS2, jet, TMath::Abs(GetFFRadius()) , sumPtGenPerpS2); + + perpjettracklistGenSecS->AddAll(perpjettracklistGenSecS1); + perpjettracklistGenSecS->AddAll(perpjettracklistGenSecS2); + sumPtGenPerpS = 0.5*(sumPtGenPerpS1+sumPtGenPerpS2); + + + if(perpjettracklistGen->GetSize() != perpjettracklistGen1->GetSize() + perpjettracklistGen2->GetSize()){ + cout<<" ERROR: perpjettracklistGen size "<GetSize()<<" perp1 "<GetSize() + <<" perp2 "<GetSize()<GetSize() != perpjettracklistGenSecNS1->GetSize() + perpjettracklistGenSecNS2->GetSize()){ + cout<<" ERROR: perpjettracklistGenSecNS size "<GetSize()<<" perp1 "<GetSize() + <<" perp2 "<GetSize()<GetSize() != perpjettracklistGenSecS1->GetSize() + perpjettracklistGenSecS2->GetSize()){ + cout<<" ERROR: perpjettracklistGenSecS size "<GetSize()<<" perp1 "<GetSize() + <<" perp2 "<GetSize()<Clear(); fTracksRecCuts->Clear(); fTracksGen->Clear(); fTracksAODMCCharged->Clear(); - fTracksAODMCChargedSec->Clear(); + fTracksAODMCChargedSecNS->Clear(); + fTracksAODMCChargedSecS->Clear(); fTracksRecQualityCuts->Clear(); fJetsRec->Clear(); @@ -4496,78 +2758,17 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters || fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading || fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){ - + fBckgJetsRec->Clear(); fBckgJetsRecCuts->Clear(); fBckgJetsGen->Clear(); } - + //Post output data. PostData(1, fCommonHistList); } -//________________________________________________________________________________________ -Double_t AliAnalysisTaskFragmentationFunction::InvMass(const AliAODJet* jet1, const AliAODJet* jet2) -{ - // cald DiJet inv mass - - Double_t invMass = 0.; - invMass = TMath::Sqrt(pow(jet1->E()+jet2->E(),2) - pow(jet1->Px()+jet2->Px(),2) - - pow(jet1->Py()+jet2->Py(),2) - pow(jet1->Pz()+jet2->Pz(),2)); - - return invMass; - -} - -//________________________________________________________________________________________ -Double_t AliAnalysisTaskFragmentationFunction::GetDiJetBin(Double_t invMass, Double_t leadingJetPt, Double_t EtMean, Int_t kindBins) -{ - // calc DiJet bin according to kindBins parameter - - Double_t jetBinOk = 0.; - Double_t jetBin = 0.; - - Float_t stepInvMass = (fDiJetJetInvMassMax - fDiJetJetInvMassMin)/fDiJetNBinsJetInvMass; - Float_t stepPt = (fDiJetJetPtMax - fDiJetJetPtMin)/fDiJetNBinsJetPt; - - if (kindBins == 1) - { - for(Int_t i=0; i invMass) {jetBinOk = jetBin; break;} - else jetBinOk = -1.; - } - } - else if (kindBins == 3) - { - for(Int_t i=0; i EtMean) {jetBinOk = jetBin; break;} - else jetBinOk = -1.; - } - } - else if (kindBins == 2) - { - for(Int_t i=0; i leadingJetPt) {jetBinOk = jetBin; break;} - else jetBinOk = -1.; - } - } - else {Printf("WARNING: kindBins wrongly set ! Please make sure to call SetKindSlices() and set the kind parameter to 1, 2 or 3.\n");} - - return jetBinOk; - -} - - //______________________________________________________________ void AliAnalysisTaskFragmentationFunction::Terminate(Option_t *) { @@ -4663,7 +2864,7 @@ Int_t AliAnalysisTaskFragmentationFunction::GetListOfTracks(TList *list, Int_t t iCount++; } } - else if (type==kTrackAODMCCharged || type==kTrackAODMCAll || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSec) { + else if (type==kTrackAODMCCharged || type==kTrackAODMCAll || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSecNS || type==kTrackAODMCChargedSecS) { // MC particles (from AOD), physical primaries, all or rather charged or rather charged within acceptance if(!fAOD) return -1; @@ -4673,11 +2874,33 @@ Int_t AliAnalysisTaskFragmentationFunction::GetListOfTracks(TList *list, Int_t t for(int it=0; itGetEntriesFast(); ++it){ AliAODMCParticle *part = dynamic_cast(tca->At(it)); if(!part)continue; - if(type != kTrackAODMCChargedSec && !part->IsPhysicalPrimary())continue; - if(type == kTrackAODMCChargedSec && part->IsPhysicalPrimary())continue; - - if (type==kTrackAODMCCharged || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSec){ + if(type != kTrackAODMCChargedSecNS && type != kTrackAODMCChargedSecS && !part->IsPhysicalPrimary())continue; + if((type == kTrackAODMCChargedSecNS || type == kTrackAODMCChargedSecS) && part->IsPhysicalPrimary())continue; + + if (type==kTrackAODMCCharged || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSecNS || type==kTrackAODMCChargedSecS){ if(part->Charge()==0) continue; + + if(type==kTrackAODMCChargedSecNS || type==kTrackAODMCChargedSecS){ + Bool_t isFromStrange = kFALSE; + Int_t iMother = part->GetMother(); + if(iMother >= 0){ + AliAODMCParticle *partM = dynamic_cast(tca->At(iMother)); + if(!partM) continue; + + Int_t codeM = TMath::Abs(partM->GetPdgCode()); + Int_t mfl = Int_t (codeM/ TMath::Power(10, Int_t(TMath::Log10(codeM)))); + if (mfl == 3 && codeM != 3) isFromStrange = kTRUE; + + // if(mfl ==3){ + // cout<<" mfl "<GetPdgCode()<<" code this track "<GetPdgCode()<GetDaughter(0)<<" 1 "<GetDaughter(1)<Eta() > fTrackEtaMax || part->Eta() < fTrackEtaMin @@ -4739,22 +2962,9 @@ Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t typ || tmp->Phi() < fJetPhiMin || tmp->Phi() > fJetPhiMax )) continue; - if(fBckgSubMethod && fBranchRecJets.Contains("B0") && - fBranchRecJets.Contains("KT")) { - - AliAODJet *tmpJet = GetAODBckgSubJet(tmp, fBckgSubMethod); - - if(!tmpJet) continue; - - list->Add(tmpJet); - - nRecJets++; - } - else { - list->Add(tmp); - - nRecJets++; - } + + list->Add(tmp); + nRecJets++; } list->Sort(); @@ -5005,12 +3215,13 @@ void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, c // ________________________________________________________________________________________________________________________________________________________ void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist, TList* outputlist, const AliAODJet* jet, - const Double_t radius, Double_t& sumPt, const Double_t maxPt, Bool_t& isBadMaxPt) + const Double_t radius, Double_t& sumPt, const Double_t minPtL, const Double_t maxPt, Bool_t& isBadPt) { // fill list of tracks in cone around jet axis sumPt = 0; - isBadMaxPt = kFALSE; + Bool_t isBadMaxPt = kFALSE; + Bool_t isBadMinPt = kTRUE; Double_t jetMom[3]; jet->PxPyPz(jetMom); @@ -5032,32 +3243,47 @@ void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist sumPt += track->Pt(); - if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE; + if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE; + if(minPtL>0 && track->Pt()>minPtL) isBadMinPt = kFALSE; } } - + + isBadPt = kFALSE; + if(minPtL>0 && isBadMinPt) isBadPt = kTRUE; + if(maxPt>0 && isBadMaxPt) isBadPt = kTRUE; + outputlist->Sort(); } -// ___________________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet, const Double_t maxPt, Bool_t& isBadMaxPt) +// _________________________________________________________________________________________________________________________________________________________________ +void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet, const Double_t minPtL, const Double_t maxPt, Bool_t& isBadPt) { // list of jet tracks from trackrefs Int_t nTracks = jet->GetRefTracks()->GetEntriesFast(); - for (Int_t itrack=0; itrack(jet->GetRefTracks()->At(itrack)); if(!track){ AliError("expected ref track not found "); continue; } - - if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE; + + if(track->Pt() < fTrackPtCut) continue; // track refs may contain low pt cut (bug in AliFastJetInput) + if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE; + if(minPtL>0 && track->Pt()>minPtL) isBadMinPt = kFALSE; + list->Add(track); } + isBadPt = kFALSE; + if(minPtL>0 && isBadMinPt) isBadPt = kTRUE; + if(maxPt>0 && isBadMaxPt) isBadPt = kTRUE; + list->Sort(); } @@ -5081,356 +3307,192 @@ void AliAnalysisTaskFragmentationFunction::AssociateGenRec(TList* tracksAODMCCh isRefGen.Set(nTracksGen); indexAODTr.Reset(-1); - indexMCTr.Reset(-1); - isRefGen.Reset(0); - - // loop over reconstructed tracks, get generated track - - for(Int_t iRec=0; iRec(tracksRec->At(iRec)); - if(!rectrack)continue; - Int_t label = TMath::Abs(rectrack->GetLabel()); - - // find MC track in our list - AliAODMCParticle* gentrack = dynamic_cast (tca->At(label)); - - Int_t listIndex = -1; - if(gentrack) listIndex = tracksAODMCCharged->IndexOf(gentrack); - - if(listIndex>=0){ - - indexAODTr[listIndex] = iRec; - indexMCTr[iRec] = listIndex; - } - } - - - // define reference sample of primaries/secondaries (for reconstruction efficiency / contamination) - - for(Int_t iGen=0; iGen (tracksAODMCCharged->At(iGen)); - if(!gentrack)continue; - Int_t pdg = gentrack->GetPdgCode(); - - // 211 - pi, 2212 - proton, 321 - Kaon, 11 - electron, 13 - muon - if(TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 2212 || TMath::Abs(pdg) == 321 || - TMath::Abs(pdg) == 11 || TMath::Abs(pdg) == 13){ - - isRefGen[iGen] = kTRUE; - - Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track - - if(iRec>=0){ - Float_t genPt = gentrack->Pt(); - AliAODTrack* vt = dynamic_cast(tracksRec->At(iRec)); - if(vt){ - Float_t recPt = vt->Pt(); - fh2PtRecVsGen->Fill(genPt,recPt); - } - } - } - } -} - -// _____________________________________________________________________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::FillSingleTrackHistosRecGen(AliFragFuncQATrackHistos* trackQAGen, AliFragFuncQATrackHistos* trackQARec, TList* tracksGen, - const TArrayI& indexAODTr, const TArrayS& isRefGen){ - - // fill QA for single track reconstruction efficiency - - Int_t nTracksGen = tracksGen->GetSize(); - - if(!nTracksGen) return; - - for(Int_t iGen=0; iGen (tracksGen->At(iGen)); - if(!gentrack) continue; - Double_t ptGen = gentrack->Pt(); - Double_t etaGen = gentrack->Eta(); - Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi()); - - // apply same acc & pt cuts as for FF - - if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue; - if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue; - if(ptGen < fTrackPtCut) continue; - - if(trackQAGen) trackQAGen->FillTrackQA(etaGen, phiGen, ptGen); - - - Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track - if(iRec>=0 && trackQARec) trackQARec->FillTrackQA(etaGen, phiGen, ptGen); - } -} - -// ______________________________________________________________________________________________________________________________________________________ - -void AliAnalysisTaskFragmentationFunction::FillJetTrackHistosRecGen(TObject* histGen,TObject* histRec,Double_t jetPtGen,Double_t jetPtRec, TList* jetTrackList, const TList* tracksGen, - const TArrayI& indexAODTr,const TArrayS& isRefGen, const Bool_t useRecJetPt) -{ - // fill objects for jet track reconstruction efficiency or secondaries contamination - // arguments histGen/histRec can be of different type: AliFragFuncHistos*, AliFragFuncIntraJetHistos*, ... - - Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks - - if(!nTracksJet) return; - - Bool_t incrementJetPtGenFF = kTRUE; // needed in case we fill FFHistos - Bool_t incrementJetPtRecFF = kTRUE; // needed in case we fill FFHistos - - for(Int_t iTr=0; iTr (jetTrackList->At(iTr)); - if(!gentrack)continue; - // find jet track in gen tracks list - Int_t iGen = tracksGen->IndexOf(gentrack); - - if(iGen<0){ - if(fDebug>0) Printf("%s:%d gen jet track not found ",(char*)__FILE__,__LINE__); - continue; - } - - - if(isRefGen[iGen] != 1) continue; // select primaries - - Double_t ptGen = gentrack->Pt(); - Double_t etaGen = gentrack->Eta(); - Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi()); - - // apply same acc & pt cuts as for FF - - if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue; - if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue; - if(ptGen < fTrackPtCut) continue; - - Double_t z = ptGen / jetPtGen; - Double_t xi = 0; - if(z>0) xi = TMath::Log(1/z); + indexMCTr.Reset(-1); + isRefGen.Reset(0); - Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track - Bool_t isRec = (iRec>=0) ? kTRUE : kFALSE; + // loop over reconstructed tracks, get generated track - if(dynamic_cast(histGen) || dynamic_cast(histRec)){ // histGen can be NULL for secondaries -> || + for(Int_t iRec=0; iRec(tracksRec->At(iRec)); + if(!rectrack)continue; + Int_t label = TMath::Abs(rectrack->GetLabel()); - if(ffhistGen){ - if(useRecJetPt) ffhistGen->FillFF( ptGen, jetPtRec, incrementJetPtGenFF ); - else ffhistGen->FillFF( ptGen, jetPtGen, incrementJetPtGenFF ); - - incrementJetPtGenFF = kFALSE; - } + // find MC track in our list + AliAODMCParticle* gentrack = dynamic_cast (tca->At(label)); + + Int_t listIndex = -1; + if(gentrack) listIndex = tracksAODMCCharged->IndexOf(gentrack); - - if(ffhistRec && isRec){ - - if(useRecJetPt) ffhistRec->FillFF( ptGen, jetPtRec, incrementJetPtRecFF ); - else ffhistRec->FillFF( ptGen, jetPtGen, incrementJetPtRecFF ); - - incrementJetPtRecFF = kFALSE; - } - } - else if(dynamic_cast(histGen) && dynamic_cast(histRec)){ - - // eff for IJ histos ... - + if(listIndex>=0){ + + indexAODTr[listIndex] = iRec; + indexMCTr[iRec] = listIndex; } } -} -// _____________________________________________________________________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::FillTwoTrackHistosRecGen(TList* tracksGen, /*TList* tracksRec, const TArrayI& indexAODTr, */ const TArrayS& isRefGen){ - Int_t nTracksGen = tracksGen->GetSize(); - - if(!nTracksGen) return; - - Int_t highPtIndices[nTracksGen]; - Int_t nHighPt = 0; - - for(Int_t iGen=0; iGen (tracksGen->At(iGen)); - if(!gentrack) continue; - Double_t ptGen = gentrack->Pt(); - Double_t etaGen = gentrack->Eta(); - Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi()); - - if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue; - if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue; - - if(ptGen>10 ){ - highPtIndices[nHighPt++] = iGen; - } - } - + // define reference sample of primaries/secondaries (for reconstruction efficiency / contamination) - for(Int_t nHPT = 0; nHPT (tracksGen->At(indexHPT)); - if(!genHPTtrack) continue; - - Double_t trackMomHPT[3]; - genHPTtrack->PxPyPz(trackMomHPT); - TVector3 track3MomHPT(trackMomHPT); + for(Int_t iGen=0; iGen (tracksAODMCCharged->At(iGen)); + if(!gentrack)continue; + Int_t pdg = gentrack->GetPdgCode(); - for(Int_t iGen=0; iGen (tracksGen->At(iGen)); - if(!gentrack) continue; - - Double_t ptGen = gentrack->Pt(); - Double_t etaGen = gentrack->Eta(); - Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi()); - - if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue; - if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue; - if(ptGen < fTrackPtCut) continue; - - - Double_t gentrackMom[3]; - gentrack->PxPyPz(gentrackMom); - TVector3 gentrack3Mom(gentrackMom); - - Double_t dR = gentrack3Mom.DeltaR(track3MomHPT); + // 211 - pi, 2212 - proton, 321 - Kaon, 11 - electron, 13 - muon + if(TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 2212 || TMath::Abs(pdg) == 321 || + TMath::Abs(pdg) == 11 || TMath::Abs(pdg) == 13){ - if(iGen != indexHPT && dR=0){ + Float_t genPt = gentrack->Pt(); + AliAODTrack* vt = dynamic_cast(tracksRec->At(iRec)); + if(vt){ + Float_t recPt = vt->Pt(); + fh2PtRecVsGen->Fill(genPt,recPt); + } } } } } // _____________________________________________________________________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::FillSingleTrackResponse(THnSparse* hnResponse, TList* tracksGen, TList* tracksRec, - const TArrayI& indexAODTr, const TArrayS& isGenPrim) -{ - // fill response matrix for single tracks - +void AliAnalysisTaskFragmentationFunction::FillSingleTrackHistosRecGen(AliFragFuncQATrackHistos* trackQAGen, AliFragFuncQATrackHistos* trackQARec, TList* tracksGen, + const TArrayI& indexAODTr, const TArrayS& isRefGen, const Bool_t scaleStrangeness){ + // fill QA for single track reconstruction efficiency + Int_t nTracksGen = tracksGen->GetSize(); if(!nTracksGen) return; for(Int_t iGen=0; iGen (tracksGen->At(iGen)); - if(!gentrack)continue; + if(!gentrack) continue; Double_t ptGen = gentrack->Pt(); Double_t etaGen = gentrack->Eta(); Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi()); // apply same acc & pt cuts as for FF + if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue; if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue; if(ptGen < fTrackPtCut) continue; - Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track - if(iRec>=0){ - AliAODTrack* rectrack = dynamic_cast(tracksRec->At(iRec)); - if(!rectrack)continue; - Double_t ptRec = rectrack->Pt(); - - Double_t entries[2] = {ptRec,ptGen}; // AliCorrFW convention: gen vs rec - hnResponse->Fill(entries); - - Double_t invPtGen = 0; - if(ptGen) invPtGen = 1/ptGen; + if(trackQAGen) trackQAGen->FillTrackQA(etaGen, phiGen, ptGen); - Double_t invPtRec = 0; - if(ptRec) invPtRec = 1/ptRec; + Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track - fh2SingleInvPtRecMnGenVsPtGen->Fill(ptGen,invPtRec - invPtGen); + if(iRec>=0 && trackQARec){ + if(scaleStrangeness){ + //Double_t weight = GetMCStrangenessFactor(ptGen); + Double_t weight = GetMCStrangenessFactorCMS(gentrack); + trackQARec->FillTrackQA(etaGen, phiGen, ptGen, kFALSE, 0, kTRUE, weight); + } + else trackQARec->FillTrackQA(etaGen, phiGen, ptGen); } } } - // ______________________________________________________________________________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::FillJetTrackResponse(THnSparse* hnResponsePt, THnSparse* hnResponseZ, THnSparse* hnResponseXi, - Double_t jetPtGen, Double_t jetPtRec, TList* jetTrackList, - const TList* tracksGen, TList* tracksRec, const TArrayI& indexAODTr, const TArrayS& isGenPrim,const Bool_t useRecJetPt) + +void AliAnalysisTaskFragmentationFunction::FillJetTrackHistosRec(AliFragFuncHistos* ffhistRec, AliAODJet* jet, + TList* jetTrackList, const TList* tracksGen, const TList* tracksRec, const TArrayI& indexAODTr, + const TArrayS& isRefGen, TList* jetTrackListTR, const Bool_t scaleStrangeness, + Bool_t fillJS, TProfile* hProNtracksLeadingJet, TProfile** hProDelRPtSum, TProfile* hProDelR80pcPt) { - // fill response matrix for tracks in jets + // fill objects for jet track reconstruction efficiency or secondaries contamination + // arguments histGen/histRec can be of different type: AliFragFuncHistos*, AliFragFuncIntraJetHistos*, ... + // jetTrackListTR pointer: track refs if not NULL - Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks - if(!nTracksJet) return; - - for(Int_t iTr=0; iTrPt(); + ffhistRec->FillFF(-1, jetPtRec, kTRUE); + Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks + if(nTracksJet == 0) return; + + TList* listRecTracks = new TList(); + listRecTracks->Clear(); + + for(Int_t iTr=0; iTr (jetTrackList->At(iTr)); if(!gentrack)continue; // find jet track in gen tracks list Int_t iGen = tracksGen->IndexOf(gentrack); - + if(iGen<0){ if(fDebug>0) Printf("%s:%d gen jet track not found ",(char*)__FILE__,__LINE__); continue; } - - if(isGenPrim[iGen] != 1) continue; // select primaries + + if(isRefGen[iGen] != 1) continue; // select primaries Double_t ptGen = gentrack->Pt(); Double_t etaGen = gentrack->Eta(); Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi()); - // apply same acc & pt cuts as for FF + // gen level acc & pt cuts - skip in case of track refs + if(!jetTrackListTR && (etaGen < fTrackEtaMin || etaGen > fTrackEtaMax)) continue; + if(!jetTrackListTR && (phiGen < fTrackPhiMin || phiGen > fTrackPhiMax)) continue; + if(!jetTrackListTR && ptGen < fTrackPtCut) continue; + - if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue; - if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue; - if(ptGen < fTrackPtCut) continue; + Double_t ptRec = -1; - Double_t zGen = ptGen / jetPtRec; - Double_t xiGen = 0; - if(zGen>0) xiGen = TMath::Log(1/zGen); + Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track + Bool_t isRec = (iRec>=0) ? kTRUE : kFALSE; - Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track + Bool_t isJetTrack = kFALSE; + if(!jetTrackListTR) isJetTrack = kTRUE; // skip trackRefs check for tracks in ideal cone - if(iRec>=0){ + if(isRec){ + + AliAODTrack* rectrack = dynamic_cast (tracksRec->At(iRec)); + if(!rectrack) continue; - AliAODTrack* rectrack = dynamic_cast(tracksRec->At(iRec)); - if(rectrack){ - Double_t ptRec = rectrack->Pt(); - - Double_t zRec = ptRec / jetPtRec; - Double_t xiRec = 0; - if(zRec>0) xiRec = TMath::Log(1/zRec); + ptRec = rectrack->Pt(); - Double_t jetPt = useRecJetPt ? jetPtRec : jetPtGen; + if(jetTrackListTR){ + Int_t iRecTR = jetTrackListTR->IndexOf(rectrack); + if(iRecTR >=0 ) isJetTrack = kTRUE; // rec tracks assigned to jet + } + + if(isJetTrack){ - Double_t entriesPt[3] = {jetPt,ptRec,ptGen}; // AliCorrFW convention: gen vs rec - Double_t entriesZ[3] = {jetPt,zRec,zGen}; - Double_t entriesXi[3] = {jetPt,xiRec,xiGen}; + Double_t trackPt = ptRec; + Bool_t incrementJetPt = kFALSE; + + if(scaleStrangeness){ + //Double_t weight = GetMCStrangenessFactor(ptGen); + Double_t weight = GetMCStrangenessFactorCMS(gentrack); + + ffhistRec->FillFF( trackPt, jetPtRec, incrementJetPt, 0, kTRUE, weight ); + } + else{ + ffhistRec->FillFF( trackPt, jetPtRec, incrementJetPt ); + } + + listRecTracks->Add(rectrack); - hnResponsePt->Fill(entriesPt); - hnResponseZ->Fill(entriesZ); - hnResponseXi->Fill(entriesXi); } - } + } } + + + if(fillJS) FillJetShape(jet,listRecTracks,hProNtracksLeadingJet, hProDelRPtSum, hProDelR80pcPt,0,0,scaleStrangeness); + + delete listRecTracks; + } // _____________________________________________________________________________________________________________________________________________________________________ @@ -5468,7 +3530,8 @@ void AliAnalysisTaskFragmentationFunction::GetTracksTiltedwrpJetAxis(Float_t alp if (dphi > TMath::Pi()) dphi = 2. * TMath::Pi() - dphi; Double_t dR = TMath::Sqrt(deta * deta + dphi * dphi); - if(dR<=radius){ + + if(dR<=radius){ outputlist->Add(track); sumPt += track->Pt(); } @@ -5555,7 +3618,7 @@ void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJets(Int_t nCases, TLi sumPt = 0; // Int_t nj = jetlist->GetSize(); - Float_t rc = GetFFRadius(); + Float_t rc = TMath::Abs(GetFFRadius()); Float_t rcl = GetFFBckgRadius(); // Estimate jet and background areas @@ -5581,10 +3644,10 @@ void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJets(Int_t nCases, TLi jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi()); new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom); Float_t etaJet = (Float_t)((TVector3*) vect3Jet->At(ij))->Eta(); - + // Jet area areaJet[ij] = CalcJetArea(etaJet,rc); - + // Area jet larger angle areaJetLarge[ij] = CalcJetArea(etaJet,rcl); @@ -5605,6 +3668,7 @@ void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJets(Int_t nCases, TLi } AliVParticle* track = dynamic_cast(inputlist->At(itrack)); + if(!track)continue; Double_t trackMom[3]; track->PxPyPz(trackMom); @@ -5612,7 +3676,7 @@ void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJets(Int_t nCases, TLi Double_t *dR = new Double_t[nCases]; for(Int_t ij=0; ijAt(ij))->DeltaR(track3mom); + dR[ij] = (Double_t)((TVector3*) vect3Jet->At(ij))->DeltaR(track3mom); if((nCases==1 && (dR[0]>rcl)) || (nCases==2 && (dR[0]>rcl && dR[1]>rcl)) || @@ -5678,7 +3742,7 @@ void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJetsStat(Int_t nCases, // All particles taken + final scaling factor sumPt = 0; - Float_t rc = GetFFRadius(); + Float_t rc = TMath::Abs(GetFFRadius()); Float_t rcl = GetFFBckgRadius(); // Estimate jet and background areas @@ -5946,10 +4010,8 @@ void AliAnalysisTaskFragmentationFunction::GetClusterTracksMedian(TList* outputl } // ______________________________________________________________________________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inputtracklist, TList* inputjetlist, AliAODJet* jet, Float_t leadTrackPt, TLorentzVector* leadTrackV, - AliFragFuncHistos* ffbckghistocuts, AliFragFuncHistos* ffbckghistoleading, - AliFragFuncIntraJetHistos* ijbckghistocuts, AliFragFuncIntraJetHistos* ijbckghistoleading, - AliFragFuncQATrackHistos* qabckghistocuts){ +void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inputtracklist, TList* inputjetlist, AliAODJet* jet, + AliFragFuncHistos* ffbckghistocuts, AliFragFuncQATrackHistos* qabckghistocuts, TH1F* fh1Mult){ // List of tracks outside jets for background study TList* tracklistout2jets = new TList(); @@ -5963,7 +4025,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Double_t normFactor2Jets = 0.; Double_t normFactor3Jets = 0.; - Int_t nRecJetsCuts = fJetsRecCuts->GetEntries(); + Int_t nRecJetsCuts = inputjetlist->GetEntries(); if(nRecJetsCuts>1) { GetTracksOutOfNJets(2,inputtracklist, tracklistout2jets, inputjetlist, sumPtOut2Jets); @@ -5980,7 +4042,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp TList* tracklistoutleading = new TList(); Double_t sumPtOutLeading = 0.; GetTracksOutOfNJets(1,inputtracklist, tracklistoutleading, inputjetlist, sumPtOutLeading); - if(type==kBckgOutLJ) fh1OutLeadingMult->Fill(tracklistoutleading->GetSize()); + if(type==kBckgOutLJ && fh1Mult) fh1Mult->Fill(tracklistoutleading->GetSize()); for(Int_t it=0; itGetSize(); ++it){ @@ -5996,10 +4058,6 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOutLJ) { if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() ); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV ); // Fill track QA for background if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt); @@ -6009,10 +4067,6 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(nRecJetsCuts==1 && type==kBckgOutAJ) { if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt ); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() ); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt ); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV ); } delete trackV; } @@ -6023,13 +4077,11 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOutLJ) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt ); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt ); } // All cases included if(nRecJetsCuts==1 && type==kBckgOutAJ) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt ); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt ); } } delete tracklistoutleading; @@ -6041,7 +4093,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Double_t normFactorLeading = 0.; GetTracksOutOfNJetsStat(1,inputtracklist, tracklistoutleadingStat, inputjetlist, sumPtOutLeadingStat, normFactorLeading); - if(type==kBckgOutLJStat) fh1OutLeadingStatMult->Fill(tracklistoutleadingStat->GetSize()); + if(type==kBckgOutLJStat && fh1Mult) fh1Mult->Fill(tracklistoutleadingStat->GetSize()); for(Int_t it=0; itGetSize(); ++it){ @@ -6057,11 +4109,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOutLJStat) { if(fFFMode)ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading); - - if(fFFMode)ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading); - + // Fill track QA for background if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt); // OB added bgr QA } @@ -6070,11 +4118,6 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(nRecJetsCuts==1 && type==kBckgOutAJStat) { if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading ); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading ); - if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA } @@ -6087,25 +4130,41 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOutLJStat) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorLeading); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorLeading); } // All cases included if(nRecJetsCuts==1 && type==kBckgOutLJStat) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorLeading); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorLeading ); } } delete tracklistoutleadingStat; } - if(type==kBckgPerp) + if(type==kBckgPerp || type==kBckgPerp2 || type==kBckgPerp2Area) { - Double_t sumPtPerp = 0.; - TList* tracklistperp = new TList(); - GetTracksTiltedwrpJetAxis(TMath::Pi()/2., inputtracklist,tracklistperp,jet,GetFFRadius(),sumPtPerp); - fh1PerpMult->Fill(tracklistperp->GetSize()); + Double_t sumPtPerp1 = 0.; + Double_t sumPtPerp2 = 0.; + TList* tracklistperp = new TList(); + TList* tracklistperp1 = new TList(); + TList* tracklistperp2 = new TList(); + + Double_t norm = 1; + if(type == kBckgPerp2) norm = 2; // in FillFF() scaleFac = 1/norm = 0.5 - account for double area; + if(type == kBckgPerp2Area) norm = 2*TMath::Pi()*TMath::Abs(GetFFRadius())*TMath::Abs(GetFFRadius()) / jet->EffectiveAreaCharged(); // in FillFF() scaleFac = 1/norm; + + GetTracksTiltedwrpJetAxis(TMath::Pi()/2., inputtracklist,tracklistperp1,jet,TMath::Abs(GetFFRadius()),sumPtPerp1); + if(type==kBckgPerp2 || type==kBckgPerp2Area) GetTracksTiltedwrpJetAxis(-1*TMath::Pi()/2., inputtracklist,tracklistperp2,jet,TMath::Abs(GetFFRadius()),sumPtPerp2); + + tracklistperp->AddAll(tracklistperp1); + tracklistperp->AddAll(tracklistperp2); + + if(tracklistperp->GetSize() != tracklistperp1->GetSize() + tracklistperp2->GetSize()){ + cout<<" ERROR: tracklistperp size "<GetSize()<<" perp1 "<GetSize()<<" perp2 "<GetSize()<Fill(tracklistperp->GetSize()); for(Int_t it=0; itGetSize(); ++it){ @@ -6117,13 +4176,9 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Float_t trackPt = trackV->Pt(); Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; + + if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, norm ); - if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt ); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() ); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt ); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV ); - // Fill track QA for background if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt); @@ -6134,18 +4189,35 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Float_t jetPt = jet->Pt(); Bool_t incrementJetPt = kTRUE; if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt ); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt ); } + + if(fJSMode){ + // fill for tracklistperp1/2 separately, divide norm by 2 + if(type==kBckgPerp){ + FillJetShape(jet, tracklistperp, fProNtracksLeadingJetBgrPerp2, fProDelRPtSumBgrPerp2, 0, TMath::Pi()/2., 0., kFALSE); + } + if(type==kBckgPerp2){ + FillJetShape(jet, tracklistperp1, fProNtracksLeadingJetBgrPerp2, fProDelRPtSumBgrPerp2, 0, TMath::Pi()/2., 0., kFALSE); + FillJetShape(jet, tracklistperp2, fProNtracksLeadingJetBgrPerp2, fProDelRPtSumBgrPerp2, 0, -1*TMath::Pi()/2., 0., kFALSE); + } + if(type==kBckgPerp2Area){ // divide norm by 2: listperp1/2 filled separately + FillJetShape(jet, tracklistperp1, fProNtracksLeadingJetBgrPerp2, fProDelRPtSumBgrPerp2, 0, TMath::Pi()/2., 0.5*norm, kFALSE); + FillJetShape(jet, tracklistperp2, fProNtracksLeadingJetBgrPerp2, fProDelRPtSumBgrPerp2, 0, -1*TMath::Pi()/2., 0.5*norm, kFALSE); + } + } + delete tracklistperp; + delete tracklistperp1; + delete tracklistperp2; } if(type==kBckgASide) { Double_t sumPtASide = 0.; TList* tracklistaside = new TList(); - GetTracksTiltedwrpJetAxis(TMath::Pi(),inputtracklist,tracklistaside,jet,GetFFRadius(),sumPtASide); - fh1ASideMult->Fill(tracklistaside->GetSize()); + GetTracksTiltedwrpJetAxis(TMath::Pi(),inputtracklist,tracklistaside,jet,TMath::Abs(GetFFRadius()),sumPtASide); + if(fh1Mult) fh1Mult->Fill(tracklistaside->GetSize()); for(Int_t it=0; itGetSize(); ++it){ @@ -6159,10 +4231,6 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt ); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() ); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt ); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV ); // Fill track QA for background if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt); @@ -6173,7 +4241,6 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Float_t jetPt = jet->Pt(); Bool_t incrementJetPt = kTRUE; if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt ); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt ); } delete tracklistaside; @@ -6184,8 +4251,8 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Double_t normFactorASide = 0.; Double_t sumPtASideW = 0.; TList* tracklistasidew = new TList(); - GetTracksTiltedwrpJetAxisWindow(TMath::Pi(),inputtracklist,tracklistasidew,jet,GetFFRadius(),sumPtASideW,normFactorASide); - fh1ASideWindowMult->Fill(tracklistasidew->GetSize()); + GetTracksTiltedwrpJetAxisWindow(TMath::Pi(),inputtracklist,tracklistasidew,jet,TMath::Abs(GetFFRadius()),sumPtASideW,normFactorASide); + if(fh1Mult) fh1Mult->Fill(tracklistasidew->GetSize()); for(Int_t it=0; itGetSize(); ++it){ @@ -6198,10 +4265,6 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorASide); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorASide); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorASide ); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorASide ); // Fill track QA for background if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt, kFALSE, normFactorASide); @@ -6212,7 +4275,6 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Float_t jetPt = jet->Pt(); Bool_t incrementJetPt = kTRUE; if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorASide); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorASide); } delete tracklistasidew; @@ -6223,8 +4285,8 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Double_t normFactorPerp = 0.; Double_t sumPtPerpW = 0.; TList* tracklistperpw = new TList(); - GetTracksTiltedwrpJetAxisWindow(TMath::Pi()/2.,inputtracklist,tracklistperpw,jet,GetFFRadius(),sumPtPerpW,normFactorPerp); - fh1PerpWindowMult->Fill(tracklistperpw->GetSize()); + GetTracksTiltedwrpJetAxisWindow(TMath::Pi()/2.,inputtracklist,tracklistperpw,jet,TMath::Abs(GetFFRadius()),sumPtPerpW,normFactorPerp); + if(fh1Mult) fh1Mult->Fill(tracklistperpw->GetSize()); for(Int_t it=0; itGetSize(); ++it){ @@ -6237,10 +4299,6 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorPerp); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorPerp); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorPerp ); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorPerp ); // Fill track QA for background if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt, kFALSE, normFactorPerp); @@ -6251,7 +4309,6 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Float_t jetPt = jet->Pt(); Bool_t incrementJetPt = kTRUE; if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorPerp); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorPerp); } delete tracklistperpw; @@ -6260,7 +4317,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOut2J || type==kBckgOutAJ) { - if(type==kBckgOut2J) fh1Out2JetsMult->Fill(tracklistout2jets->GetSize()); + if(type==kBckgOut2J && fh1Mult) fh1Mult->Fill(tracklistout2jets->GetSize()); for(Int_t it=0; itGetSize(); ++it){ AliVParticle* trackVP = dynamic_cast(tracklistout2jets->At(it)); @@ -6274,12 +4331,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOut2J) { - if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt ); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() ); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt ); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV ); - + if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt ); if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt); } @@ -6287,10 +4339,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(nRecJetsCuts==2 && type==kBckgOutAJ) { if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt ); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() ); - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt ); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV ); } delete trackV; } @@ -6301,18 +4350,15 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOut2J) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt ); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt ); } // All cases included if(nRecJetsCuts==2 && type==kBckgOutAJ) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt ); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt ); } } - } - + if(type==kBckgOut2JStat || type==kBckgOutAJStat) { for(Int_t it=0; itGetSize(); ++it){ @@ -6328,10 +4374,6 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOut2JStat) { if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets ); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets ); if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA } @@ -6340,11 +4382,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(nRecJetsCuts==2 && type==kBckgOutAJStat) { if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets ); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets ); - + if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA } delete trackV; @@ -6356,13 +4394,11 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOut2JStat) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor2Jets); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor2Jets); } // All cases included if(nRecJetsCuts==2 && type==kBckgOutAJStat) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor2Jets); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor2Jets ); } } @@ -6370,7 +4406,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOut3J || type==kBckgOutAJ) { - if(type==kBckgOut3J) fh1Out3JetsMult->Fill(tracklistout3jets->GetSize()); + if(type==kBckgOut3J && fh1Mult) fh1Mult->Fill(tracklistout3jets->GetSize()); for(Int_t it=0; itGetSize(); ++it){ @@ -6386,11 +4422,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOut3J) { if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt ); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() ); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt ); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV ); - + qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt); } @@ -6398,10 +4430,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(nRecJetsCuts==3 && type==kBckgOutAJ) { if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt ); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() ); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt ); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV ); + } delete trackV; } @@ -6412,13 +4441,11 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOut3J) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt ); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt ); } // All cases included if(nRecJetsCuts==3 && type==kBckgOutAJ) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt ); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt ); } } } @@ -6438,11 +4465,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOut3JStat) { if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets); - - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets); - + //if(fQAMode&1) qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt); } @@ -6450,12 +4473,8 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(nRecJetsCuts==3 && type==kBckgOutAJStat) { if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets ); - if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets); - if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets ); - if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets ); - - if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA + if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); } delete trackV; @@ -6467,13 +4486,11 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp if(type==kBckgOut3JStat) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor3Jets); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor3Jets); } // All cases included if(nRecJetsCuts==3 && type==kBckgOutAJStat) { if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor3Jets); - if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor3Jets ); } } @@ -6486,7 +4503,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Float_t jetPt = jet->Pt(); GetClusterTracksOutOf1Jet(jet, tracklistClustersOutLeading, normFactorClusters); - fh1OutClustersMult->Fill(tracklistClustersOutLeading->GetSize()); + if(fh1Mult) fh1Mult->Fill(tracklistClustersOutLeading->GetSize()); for(Int_t it=0; itGetSize(); ++it){ @@ -6515,7 +4532,7 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp Float_t jetPt = jet->Pt(); GetClusterTracksMedian(tracklistClustersMedian, normFactorClusters); - fh1MedianClustersMult->Fill(tracklistClustersMedian->GetSize()); + if(fh1Mult) fh1Mult->Fill(tracklistClustersMedian->GetSize()); for(Int_t it=0; itGetSize(); ++it){ @@ -6539,40 +4556,289 @@ void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inp delete tracklistout2jets; delete tracklistout3jets; delete tracklistout2jetsStat; - delete tracklistout3jetsStat; - + delete tracklistout3jetsStat; } -// ______________________________________________________________________________________________________________________________________________________ -AliAODJet* AliAnalysisTaskFragmentationFunction::GetAODBckgSubJet(AliAODJet* jet, Int_t method) +//_____________________________________________________________________________________ +Double_t AliAnalysisTaskFragmentationFunction::GetMCStrangenessFactor(const Double_t pt) { - // correct jet pt for (mean bgr energy density) x (jet area) + // factor strangeness data/MC as function of pt from UE analysis (Sara Vallero) + + Double_t alpha = 1; + + if(0.1500)Printf("%s:%d background branch name not set",(char*)__FILE__,__LINE__); - return 0; +//__________________________________________________________________________________________________ +Double_t AliAnalysisTaskFragmentationFunction::GetMCStrangenessFactorCMS(AliAODMCParticle* daughter) +{ + // strangeness ratio MC/data as function of mother pt from CMS data in |eta|<2.0 + + TClonesArray *tca = dynamic_cast(fAOD->FindListObject(AliAODMCParticle::StdBranchName())); + if(!tca) return 1; + + AliAODMCParticle* currentMother = daughter; + AliAODMCParticle* currentDaughter = daughter; + + + // find first primary mother K0s, Lambda or Xi + while(1){ + + Int_t daughterPDG = currentDaughter->GetPdgCode(); + + Int_t motherLabel = currentDaughter->GetMother(); + if(motherLabel >= tca->GetEntriesFast()){ // protection + currentMother = currentDaughter; + break; + } + + currentMother = (AliAODMCParticle*) tca->At(motherLabel); + + if(!currentMother){ + currentMother = currentDaughter; + break; + } + + Int_t motherPDG = currentMother->GetPdgCode(); + + // phys. primary found ? + if(currentMother->IsPhysicalPrimary()) break; + + if(TMath::Abs(daughterPDG) == 321){ // K+/K- e.g. from phi (ref data not feeddown corrected) + currentMother = currentDaughter; break; + } + if(TMath::Abs(motherPDG) == 310 ){ // K0s e.g. from phi (ref data not feeddown corrected) + break; + } + if(TMath::Abs(motherPDG) == 3212 && TMath::Abs(daughterPDG) == 3122){ // mother Sigma0, daughter Lambda (this case not included in feeddown corr.) + currentMother = currentDaughter; break; + } + + currentDaughter = currentMother; } - static AliAODJetEventBackground* externalBackground = (AliAODJetEventBackground*)(fAOD->FindListObject(fBranchRecBackJets.Data())); - if(!externalBackground){ - if(fDebug>0)Printf("%s:%d no external background object found in %s",(char*)__FILE__,__LINE__,fBranchRecBackJets.Data()); - return 0; + Int_t motherPDG = currentMother->GetPdgCode(); + Double_t motherPt = currentMother->Pt(); + + Double_t fac = 1; + + if(motherPDG == 310 || TMath::Abs(motherPDG)==321){ // K0s / K+ / K- + + if(0.00 <= motherPt && motherPt < 0.20) fac = 0.768049; + else if(0.20 <= motherPt && motherPt < 0.40) fac = 0.732933; + else if(0.40 <= motherPt && motherPt < 0.60) fac = 0.650298; + else if(0.60 <= motherPt && motherPt < 0.80) fac = 0.571332; + else if(0.80 <= motherPt && motherPt < 1.00) fac = 0.518734; + else if(1.00 <= motherPt && motherPt < 1.20) fac = 0.492543; + else if(1.20 <= motherPt && motherPt < 1.40) fac = 0.482704; + else if(1.40 <= motherPt && motherPt < 1.60) fac = 0.488056; + else if(1.60 <= motherPt && motherPt < 1.80) fac = 0.488861; + else if(1.80 <= motherPt && motherPt < 2.00) fac = 0.492862; + else if(2.00 <= motherPt && motherPt < 2.20) fac = 0.504332; + else if(2.20 <= motherPt && motherPt < 2.40) fac = 0.501858; + else if(2.40 <= motherPt && motherPt < 2.60) fac = 0.512970; + else if(2.60 <= motherPt && motherPt < 2.80) fac = 0.524131; + else if(2.80 <= motherPt && motherPt < 3.00) fac = 0.539130; + else if(3.00 <= motherPt && motherPt < 3.20) fac = 0.554101; + else if(3.20 <= motherPt && motherPt < 3.40) fac = 0.560348; + else if(3.40 <= motherPt && motherPt < 3.60) fac = 0.568869; + else if(3.60 <= motherPt && motherPt < 3.80) fac = 0.583310; + else if(3.80 <= motherPt && motherPt < 4.00) fac = 0.604818; + else if(4.00 <= motherPt && motherPt < 5.00) fac = 0.632630; + else if(5.00 <= motherPt && motherPt < 6.00) fac = 0.710070; + else if(6.00 <= motherPt && motherPt < 8.00) fac = 0.736365; + else if(8.00 <= motherPt && motherPt < 10.00) fac = 0.835865; + } + + if(motherPDG == 3122){ // Lambda + + if(0.00 <= motherPt && motherPt < 0.20) fac = 0.645162; + else if(0.20 <= motherPt && motherPt < 0.40) fac = 0.627431; + else if(0.40 <= motherPt && motherPt < 0.60) fac = 0.457136; + else if(0.60 <= motherPt && motherPt < 0.80) fac = 0.384369; + else if(0.80 <= motherPt && motherPt < 1.00) fac = 0.330597; + else if(1.00 <= motherPt && motherPt < 1.20) fac = 0.309571; + else if(1.20 <= motherPt && motherPt < 1.40) fac = 0.293620; + else if(1.40 <= motherPt && motherPt < 1.60) fac = 0.283709; + else if(1.60 <= motherPt && motherPt < 1.80) fac = 0.282047; + else if(1.80 <= motherPt && motherPt < 2.00) fac = 0.277261; + else if(2.00 <= motherPt && motherPt < 2.20) fac = 0.275772; + else if(2.20 <= motherPt && motherPt < 2.40) fac = 0.280726; + else if(2.40 <= motherPt && motherPt < 2.60) fac = 0.288540; + else if(2.60 <= motherPt && motherPt < 2.80) fac = 0.288315; + else if(2.80 <= motherPt && motherPt < 3.00) fac = 0.296619; + else if(3.00 <= motherPt && motherPt < 3.20) fac = 0.302993; + else if(3.20 <= motherPt && motherPt < 3.40) fac = 0.338121; + else if(3.40 <= motherPt && motherPt < 3.60) fac = 0.349800; + else if(3.60 <= motherPt && motherPt < 3.80) fac = 0.356802; + else if(3.80 <= motherPt && motherPt < 4.00) fac = 0.391202; + else if(4.00 <= motherPt && motherPt < 5.00) fac = 0.422573; + else if(5.00 <= motherPt && motherPt < 6.00) fac = 0.573815; + else if(6.00 <= motherPt && motherPt < 8.00) fac = 0.786984; + else if(8.00 <= motherPt && motherPt < 10.00) fac = 1.020021; + } + + if(motherPDG == 3312 || motherPDG == 3322){ // xi + + if(0.00 <= motherPt && motherPt < 0.20) fac = 0.666620; + else if(0.20 <= motherPt && motherPt < 0.40) fac = 0.575908; + else if(0.40 <= motherPt && motherPt < 0.60) fac = 0.433198; + else if(0.60 <= motherPt && motherPt < 0.80) fac = 0.340901; + else if(0.80 <= motherPt && motherPt < 1.00) fac = 0.290896; + else if(1.00 <= motherPt && motherPt < 1.20) fac = 0.236074; + else if(1.20 <= motherPt && motherPt < 1.40) fac = 0.218681; + else if(1.40 <= motherPt && motherPt < 1.60) fac = 0.207763; + else if(1.60 <= motherPt && motherPt < 1.80) fac = 0.222848; + else if(1.80 <= motherPt && motherPt < 2.00) fac = 0.208806; + else if(2.00 <= motherPt && motherPt < 2.20) fac = 0.197275; + else if(2.20 <= motherPt && motherPt < 2.40) fac = 0.183645; + else if(2.40 <= motherPt && motherPt < 2.60) fac = 0.188788; + else if(2.60 <= motherPt && motherPt < 2.80) fac = 0.188282; + else if(2.80 <= motherPt && motherPt < 3.00) fac = 0.207442; + else if(3.00 <= motherPt && motherPt < 3.20) fac = 0.240388; + else if(3.20 <= motherPt && motherPt < 3.40) fac = 0.241916; + else if(3.40 <= motherPt && motherPt < 3.60) fac = 0.208276; + else if(3.60 <= motherPt && motherPt < 3.80) fac = 0.234550; + else if(3.80 <= motherPt && motherPt < 4.00) fac = 0.251689; + else if(4.00 <= motherPt && motherPt < 5.00) fac = 0.310204; + else if(5.00 <= motherPt && motherPt < 6.00) fac = 0.343492; + } + + Double_t weight = 1; + if(fac > 0) weight = 1/fac; + + return weight; +} + +// _________________________________________________________________________________ +void AliAnalysisTaskFragmentationFunction::FillJetShape(AliAODJet* jet, TList* list, + TProfile* hProNtracksLeadingJet, TProfile** hProDelRPtSum, TProfile* hProDelR80pcPt, + Double_t dPhiUE, Double_t normUE, Bool_t scaleStrangeness){ + + const Int_t kNbinsR = 50; + const Float_t kBinWidthR = 0.02; + + Int_t nJetTracks = list->GetEntries(); + + Float_t PtSumA[kNbinsR] = {0.0}; + + Float_t *delRA = new Float_t[nJetTracks]; + Float_t *trackPtA = new Float_t[nJetTracks]; + Int_t *index = new Int_t[nJetTracks]; + + for(Int_t i=0; iPxPyPz(jetMom); + TVector3 jet3mom(jetMom); + + if(TMath::Abs(dPhiUE)>0){ + Double_t phiTilted = jet3mom.Phi(); + phiTilted += dPhiUE; + phiTilted = TVector2::Phi_0_2pi(phiTilted); + jet3mom.SetPhi(phiTilted); } + + Double_t jetPt = jet->Pt(); + Double_t sumWeights = 0; + + for (Int_t j =0; j(list->At(j)); + if(!track)continue; + + Double_t trackMom[3]; + track->PxPyPz(trackMom); + TVector3 track3mom(trackMom); + + Double_t dR = jet3mom.DeltaR(track3mom); - Float_t rho = externalBackground->GetBackground(method); + delRA[j] = dR; + trackPtA[j] = track->Pt(); + + Double_t weight = GetMCStrangenessFactor(track->Pt()); // more correctly should be gen pt + sumWeights += weight; - // Calculate background and subtract it from jet pt - Float_t ptBack = rho*jet->EffectiveAreaCharged(); - Float_t ptSub = jet->Pt()-ptBack; + for(Int_t ibin=1; ibin<=kNbinsR; ibin++){ + Float_t xlow = kBinWidthR*(ibin-1); + Float_t xup = kBinWidthR*ibin; + if(xlow <= dR && dR < xup){ - // Get px, py, pz from eta, phi, pt - TLorentzVector vecSub; - AliAODJet *tmpJet = 0; - if(ptSub>=0){ - vecSub.SetPtEtaPhiM(ptSub,jet->Eta(),jet->Phi(),0.); - tmpJet = new AliAODJet(vecSub.Px(),vecSub.Py(),vecSub.Pz(),vecSub.P()); + if(scaleStrangeness) PtSumA[ibin-1] += track->Pt()*weight; + else PtSumA[ibin-1] += track->Pt(); + } + } + } // track loop + + Float_t jetPtMin=0; + Float_t jetPtMax=0; + + for(Int_t ibin=0; ibinjetPtMin && jetPtFill(fR,PtSumA[ibin]); + + } + } } + + if(scaleStrangeness) hProNtracksLeadingJet->Fill(jetPt,sumWeights); + else hProNtracksLeadingJet->Fill(jetPt,nJetTracks); + + if(normUE) hProNtracksLeadingJet->Fill(jetPt,nJetTracks/normUE); + + if(hProDelR80pcPt){ + + Float_t PtSum = 0; + Float_t delRPtSum80pc = 0; + + TMath::Sort(nJetTracks,delRA,index,0); + + for(Int_t ii=0; ii= 0.8000){ + delRPtSum80pc = delRA[index[ii]]; + break; + } + } + hProDelR80pcPt->Fill(jetPt,delRPtSum80pc); + } + + delete[] delRA; + delete[] trackPtA; + delete[] index; }