X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGJE%2FAliAnalysisTaskFragmentationFunction.cxx;h=8c3269e0541d3fccc87e1dc870ee47b8e1506006;hb=40078e005d06e3b3004dd8f87ee0b10ae8c74123;hp=8d2b2453c27ad7952155091d0a4b5654c1dbfce2;hpb=a5592cfa4812c0f9966c2cff322b6970a3761f9f;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGJE/AliAnalysisTaskFragmentationFunction.cxx b/PWGJE/AliAnalysisTaskFragmentationFunction.cxx index 8d2b2453c27..8c3269e0541 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("") @@ -72,8 +75,10 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fUseAODInputJets(kTRUE) ,fFilterMask(0) ,fUsePhysicsSelection(kTRUE) + ,fEvtSelectionMask(0) ,fEventClass(0) ,fMaxVertexZ(10) + ,fRejectPileup(kFALSE) ,fTrackPtCut(0) ,fTrackEtaMin(0) ,fTrackEtaMax(0) @@ -89,28 +94,23 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fJetEtaMax(0) ,fJetPhiMin(0) ,fJetPhiMax(0) - ,fDiJetCut(0) - ,fDiJetDeltaPhiCut(0) - ,fDiJetPtFractionCut(0) - ,fDiJetCDFCut(0) - ,fDiJetKindBins(0) + ,fJetMinArea(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) @@ -120,7 +120,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fBckgJetsRec(0) ,fBckgJetsRecCuts(0) ,fBckgJetsGen(0) - ,fQATrackHistosRec(0) ,fQATrackHistosRecCuts(0) ,fQATrackHistosGen(0) ,fQAJetHistosRec(0) @@ -130,28 +129,11 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fQAJetHistosGenLeading(0) ,fQAJetHistosRecEffLeading(0) ,fFFHistosRecCuts(0) - ,fFFHistosRecLeading(0) + ,fFFHistosRecCutsInc(0) ,fFFHistosRecLeadingTrack(0) ,fFFHistosGen(0) - ,fFFHistosGenLeading(0) + ,fFFHistosGenInc(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) @@ -164,7 +146,7 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction() ,fFFXiMax(0) ,fFFNBinsZ(0) ,fFFZMin(0) - ,fFFZMax(0) + ,fFFZMax(0) ,fQAJetNBinsPt(0) ,fQAJetPtMin(0) ,fQAJetPtMax(0) @@ -183,74 +165,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) @@ -265,35 +185,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) @@ -305,47 +214,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; @@ -353,9 +247,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) @@ -364,7 +268,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fAODExtension(0) ,fNonStdFile("") ,fBranchRecJets("jets") - ,fBranchRecBackJets("") ,fBranchRecBckgClusters("") ,fBranchGenJets("") ,fBranchEmbeddedJets("") @@ -374,8 +277,10 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fUseAODInputJets(kTRUE) ,fFilterMask(0) ,fUsePhysicsSelection(kTRUE) + ,fEvtSelectionMask(0) ,fEventClass(0) ,fMaxVertexZ(10) + ,fRejectPileup(kFALSE) ,fTrackPtCut(0) ,fTrackEtaMin(0) ,fTrackEtaMax(0) @@ -391,28 +296,23 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fJetEtaMax(0) ,fJetPhiMin(0) ,fJetPhiMax(0) - ,fDiJetCut(0) - ,fDiJetDeltaPhiCut(0) - ,fDiJetPtFractionCut(0) - ,fDiJetCDFCut(0) - ,fDiJetKindBins(0) + ,fJetMinArea(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) @@ -422,7 +322,6 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fBckgJetsRec(0) ,fBckgJetsRecCuts(0) ,fBckgJetsGen(0) - ,fQATrackHistosRec(0) ,fQATrackHistosRecCuts(0) ,fQATrackHistosGen(0) ,fQAJetHistosRec(0) @@ -432,28 +331,11 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fQAJetHistosGenLeading(0) ,fQAJetHistosRecEffLeading(0) ,fFFHistosRecCuts(0) - ,fFFHistosRecLeading(0) + ,fFFHistosRecCutsInc(0) ,fFFHistosRecLeadingTrack(0) ,fFFHistosGen(0) - ,fFFHistosGenLeading(0) + ,fFFHistosGenInc(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) @@ -485,74 +367,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) @@ -567,35 +387,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) @@ -607,47 +416,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; @@ -655,10 +448,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()); } //__________________________________________________________________________________________________________________________ @@ -670,7 +471,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) @@ -680,8 +480,10 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fUseAODInputJets(copy.fUseAODInputJets) ,fFilterMask(copy.fFilterMask) ,fUsePhysicsSelection(copy.fUsePhysicsSelection) + ,fEvtSelectionMask(copy.fEvtSelectionMask) ,fEventClass(copy.fEventClass) ,fMaxVertexZ(copy.fMaxVertexZ) + ,fRejectPileup(copy.fRejectPileup) ,fTrackPtCut(copy.fTrackPtCut) ,fTrackEtaMin(copy.fTrackEtaMin) ,fTrackEtaMax(copy.fTrackEtaMax) @@ -697,28 +499,23 @@ 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) + ,fJetMinArea(copy.fJetMinArea) ,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) @@ -728,7 +525,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) @@ -738,28 +534,11 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const ,fQAJetHistosGenLeading(copy.fQAJetHistosGenLeading) ,fQAJetHistosRecEffLeading(copy.fQAJetHistosRecEffLeading) ,fFFHistosRecCuts(copy.fFFHistosRecCuts) - ,fFFHistosRecLeading(copy.fFFHistosRecLeading) + ,fFFHistosRecCutsInc(copy.fFFHistosRecCutsInc) ,fFFHistosRecLeadingTrack(copy.fFFHistosRecLeadingTrack) ,fFFHistosGen(copy.fFFHistosGen) - ,fFFHistosGenLeading(copy.fFFHistosGenLeading) + ,fFFHistosGenInc(copy.fFFHistosGenInc) ,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) @@ -791,74 +570,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) @@ -873,35 +590,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) @@ -913,47 +619,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]; @@ -961,6 +651,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]; + } } // _________________________________________________________________________________________________________________________________ @@ -971,297 +672,199 @@ 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; - 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; - 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; - 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; + fRejectPileup = o.fRejectPileup; + 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; + fJetMinArea = o.fJetMinArea; + 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; + fFFHistosRecCutsInc = o.fFFHistosRecCutsInc; + fFFHistosRecLeadingTrack = o.fFFHistosRecLeadingTrack; + fFFHistosGen = o.fFFHistosGen; + fFFHistosGenInc = o.fFFHistosGenInc; + fFFHistosGenLeadingTrack = o.fFFHistosGenLeadingTrack; + 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; } @@ -1270,17 +873,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 || @@ -1299,7 +902,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 ) + Int_t nZ , Float_t zMin , Float_t zMax) : TObject() ,fNBinsJetPt(nJetPt) ,fJetPtMin(jetPtMin) @@ -1312,7 +915,7 @@ AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const ,fXiMax(xiMax) ,fNBinsZ(nZ) ,fZMin(zMin) - ,fZMax(zMax) + ,fZMax(zMax) ,fh2TrackPt(0) ,fh2Xi(0) ,fh2Z(0) @@ -1337,7 +940,7 @@ AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const ,fXiMax(copy.fXiMax) ,fNBinsZ(copy.fNBinsZ) ,fZMin(copy.fZMin) - ,fZMax(copy.fZMax) + ,fZMax(copy.fZMax) ,fh2TrackPt(copy.fh2TrackPt) ,fh2Xi(copy.fh2Xi) ,fh2Z(copy.fh2Z) @@ -1394,8 +997,8 @@ 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); - fh2Xi = new TH2F(Form("fh2FFXi%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsXi, fXiMin, fXiMax); 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); AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries"); AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPt,"jet p_{T} [GeV/c]","p_{T} [GeV/c]","entries"); @@ -1404,10 +1007,11 @@ void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::DefineHistos() } //_______________________________________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::FillFF(Float_t trackPt, Float_t jetPt, Bool_t incrementJetPt, Float_t norm) +void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::FillFF(Float_t trackPt, Float_t jetPt, Bool_t incrementJetPt, Float_t norm, + Bool_t scaleStrangeness, Float_t scaleFacStrangeness) { // fill FF - + if(incrementJetPt && norm) fh1JetPt->Fill(jetPt,1/norm); else if(incrementJetPt) fh1JetPt->Fill(jetPt); @@ -1416,17 +1020,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); @@ -1652,16 +1267,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); } //______________________________________________________________________________________ @@ -1675,811 +1296,134 @@ 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); - - 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); + // + // Create histograms / output container + // + + OpenFile(1); + fCommonHistList = new TList(); + fCommonHistList->SetOwner(kTRUE); + + Bool_t oldStatus = TH1::AddDirectoryStatus(); + TH1::AddDirectory(kFALSE); - 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); - 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"); -} - -//________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::FillDiJetFF(Int_t jetType, Float_t trackPt, Float_t jetPt, Double_t jetBin, Bool_t incrementJetPt) -{ - // fill DiJet FF + // Histograms + fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 7, -0.5, 6.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"); + fh1EvtSelection->GetXaxis()->SetBinLabel(7,"pileup: 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.); - 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); - - // fJetsKine = new TList(); - // fJetsKine->SetOwner(kTRUE); // delete AOD jets using mom from Kine Tree via TList::Clear() - - 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(); - - 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); @@ -2488,40 +1432,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()){ @@ -2533,20 +1443,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); @@ -2578,131 +1478,41 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() } // end: QA if(fFFMode){ + fFFHistosRecCuts = new AliFragFuncHistos("RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFHistosRecLeading = new AliFragFuncHistos("RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFHistosRecLeadingTrack = new AliFragFuncHistos("RecLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsZ , fFFZMin , fFFZMax ); + + + fFFHistosRecCutsInc = new AliFragFuncHistos("RecCutsInc", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFHistosGenLeading = new AliFragFuncHistos("GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFHistosGenLeadingTrack = new AliFragFuncHistos("GenLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - } // end: FF + fFFNBinsZ , fFFZMin , fFFZMax ); - 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); - } + + fFFHistosRecLeadingTrack = new AliFragFuncHistos("RecLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax ); - 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 + fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + + fFFHistosGenInc = new AliFragFuncHistos("GenInc", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + + fFFHistosGenLeadingTrack = new AliFragFuncHistos("GenLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); + } // end: FF + // efficiency if(fEffMode){ @@ -2717,81 +1527,57 @@ 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); + fQATrackHistosSecRecSsc = new AliFragFuncQATrackHistos("SecRecSsc", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, + fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax, + fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, + fQATrackHighPtThreshold); - // 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, + fFFHistosSecRecNS = new AliFragFuncHistos("SecRecNS", 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); - - Int_t nBinsResponseJetZ[3] = {fFFNBinsJetPt, fFFNBinsZ,fFFNBinsZ}; - Double_t binMinResponseJetZ[3] = {fFFJetPtMin, fFFZMin, fFFZMin}; - Double_t binMaxResponseJetZ[3] = {fFFJetPtMax, fFFZMax, fFFZMax}; - const char* labelsResponseJetZ[3] = { "jet p_{T} [GeV/c]","rec z","gen z"}; - - fhnResponseJetZ = new THnSparseF("fhnResponseJetZ","jet pt:track pt rec:track pt gen",3, - nBinsResponseJetZ,binMinResponseJetZ,binMaxResponseJetZ); - AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetZ,3,labelsResponseJetZ); + fFFHistosSecRecS = new AliFragFuncHistos("SecRecS", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); - 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); + fFFHistosSecRecSsc = new AliFragFuncHistos("SecRecSsc", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + fFFNBinsPt, fFFPtMin, fFFPtMax, + fFFNBinsXi, fFFXiMin, fFFXiMax, + fFFNBinsZ , fFFZMin , fFFZMax); - AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetXi,3,labelsResponseJetXi); - } } // end: efficiency // Background if(fBckgMode){ - // Track QA + 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"; @@ -2805,9 +1591,27 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() 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, @@ -2817,231 +1621,135 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() 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, - 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, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto3GenLeading = new AliFragFuncHistos("Bckg"+title[3]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto4RecCuts = new AliFragFuncHistos("Bckg"+title[4]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto4RecLeading = new AliFragFuncHistos("Bckg"+title[4]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, - fFFNBinsPt, fFFPtMin, fFFPtMax, - fFFNBinsXi, fFFXiMin, fFFXiMax, - fFFNBinsZ , fFFZMin , fFFZMax); - fFFBckgHisto4Gen = new AliFragFuncHistos("Bckg"+title[4]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, + 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(); } @@ -3055,51 +1763,29 @@ void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects() if(fEffMode) fQAJetHistosRecEffLeading->DefineHistos(); } } - + if(fFFMode){ fFFHistosRecCuts->DefineHistos(); - fFFHistosRecLeading->DefineHistos(); + fFFHistosRecCutsInc->DefineHistos(); fFFHistosRecLeadingTrack->DefineHistos(); fFFHistosGen->DefineHistos(); - fFFHistosGenLeading->DefineHistos(); + fFFHistosGenInc->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 @@ -3107,61 +1793,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; @@ -3170,33 +1833,25 @@ 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); - if(genJets && genTracks){ - fCommonHistList->Add(fh1Xsec); - fCommonHistList->Add(fh1Trials); - fCommonHistList->Add(fh1PtHard); - fCommonHistList->Add(fh1PtHardTrials); - if(genJets) fCommonHistList->Add(fh1nGenJets); - } + fCommonHistList->Add(fh1Xsec); + fCommonHistList->Add(fh1Trials); + fCommonHistList->Add(fh1PtHard); + fCommonHistList->Add(fh1PtHardTrials); + + if(genJets) fCommonHistList->Add(fh1nGenJets); // FF histograms if(fFFMode){ fFFHistosRecCuts->AddToOutput(fCommonHistList); - fFFHistosRecLeading->AddToOutput(fCommonHistList); + fFFHistosRecCutsInc->AddToOutput(fCommonHistList); fFFHistosRecLeadingTrack->AddToOutput(fCommonHistList); - if(genJets && genTracks){ - fCommonHistList->Add(fh1Xsec); - fCommonHistList->Add(fh1Trials); - fCommonHistList->Add(fh1PtHard); - fCommonHistList->Add(fh1PtHardTrials); - if(genJets) fCommonHistList->Add(fh1nGenJets); + if(genJets && genTracks){ fFFHistosGen->AddToOutput(fCommonHistList); - fFFHistosGenLeading->AddToOutput(fCommonHistList); + fFFHistosGenInc->AddToOutput(fCommonHistList); fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList); } } @@ -3205,68 +1860,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); @@ -3277,17 +1913,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); } @@ -3312,86 +1941,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){ @@ -3422,22 +2064,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() & AliVEvent::kMB)){ - if(inputHandler->InheritsFrom("AliESDInputHandler") && fUsePhysicsSelection){ // PhysicsSelection only with ESD input - fh1EvtSelection->Fill(1.); - if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... "); - PostData(1, fCommonHistList); - return; - } + + if(!(inputHandler->IsEventSelected() & fEvtSelectionMask)){ + 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__); @@ -3499,7 +2140,7 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) Int_t cl = 0; if(handler->InheritsFrom("AliAODInputHandler")){ // since it is not supported by the helper task define own classes - centPercent = fAOD->GetHeader()->GetCentrality(); + centPercent = ((AliVAODHeader*)fAOD->GetHeader())->GetCentrality(); cl = 1; if(centPercent>10) cl = 2; if(centPercent>30) cl = 3; @@ -3524,7 +2165,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__); @@ -3551,6 +2192,13 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) return; } + if(fRejectPileup && AliAnalysisHelperJetTasks::IsPileUp()){ + if (fDebug > 1) Printf("%s:%d SPD pileup: event REJECTED...",(char*)__FILE__,__LINE__); + fh1EvtSelection->Fill(6.); + PostData(1, fCommonHistList); + return; + } + if (fDebug > 1) Printf("%s:%d event ACCEPTED ...",(char*)__FILE__,__LINE__); fh1EvtSelection->Fill(0.); fh1EvtCent->Fill(centPercent); @@ -3558,12 +2206,14 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) //___ get MC information __________________________________________________________________ + fh1Trials->Fill("#sum{ntrials}",fAvgTrials); + Double_t ptHard = 0.; Double_t nTrials = 1; // trials for MC trigger weight for real data - + if(fMCEvent){ AliGenEventHeader* genHeader = fMCEvent->GenEventHeader(); - + if(genHeader){ AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast(genHeader); @@ -3577,7 +2227,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__); @@ -3590,19 +2239,18 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) } } - fh1Trials->Fill("#sum{ntrials}",fAvgTrials); + //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(); @@ -3616,11 +2264,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; @@ -3628,12 +2276,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); @@ -3641,7 +2289,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); @@ -3649,15 +2297,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 || @@ -3675,7 +2323,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); @@ -3690,17 +2338,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); @@ -3713,7 +2350,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(); @@ -3726,39 +2362,17 @@ 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() ); + } for(Int_t it=0; it(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)); @@ -3766,159 +2380,124 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) } } } - - if(fQAMode || fFFMode || fIJMode || fPhiCorrMode){ + + if(fQAMode || fFFMode){ for(Int_t ij=0; ijAt(ij)); if(fQAMode&2) fQAJetHistosRecCuts->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt()); - - if(ij==0){ // leading jet - - if(fQAMode&2) fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() ); - + + if(fQAMode&2 && ij==0) fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() ); - Double_t ptFractionEmbedded = 0; - AliAODJet* embeddedJet = 0; + Double_t ptFractionEmbedded = 0; + AliAODJet* embeddedJet = 0; - if(fBranchEmbeddedJets.Length()){ // find embedded jet + if(fBranchEmbeddedJets.Length()){ // find embedded jet - Int_t indexEmbedded = -1; - for(Int_t i=0; iFill(indexEmbedded); - fh1FractionPtEmbedded->Fill(ptFractionEmbedded); - - if(indexEmbedded>-1){ + fh1IndexEmbedded->Fill(indexEmbedded); + fh1FractionPtEmbedded->Fill(ptFractionEmbedded); + + if(indexEmbedded>-1){ - embeddedJet = dynamic_cast(fJetsEmbedded->At(indexEmbedded)); - if(!embeddedJet) continue; + embeddedJet = dynamic_cast(fJetsEmbedded->At(indexEmbedded)); + if(!embeddedJet) continue; - Double_t deltaPt = jet->Pt() - embeddedJet->Pt(); - Double_t deltaR = jet->DeltaR((AliVParticle*) (embeddedJet)); - - fh2DeltaPtVsJetPtEmbedded->Fill(embeddedJet->Pt(),deltaPt); - fh2DeltaPtVsRecJetPtEmbedded->Fill(jet->Pt(),deltaPt); - fh1DeltaREmbedded->Fill(deltaR); - } + Double_t deltaPt = jet->Pt() - embeddedJet->Pt(); + Double_t deltaR = jet->DeltaR((AliVParticle*) (embeddedJet)); + + fh2DeltaPtVsJetPtEmbedded->Fill(embeddedJet->Pt(),deltaPt); + fh2DeltaPtVsRecJetPtEmbedded->Fill(jet->Pt(),deltaPt); + fh1DeltaREmbedded->Fill(deltaR); } + } - // get tracks in jet - TList* jettracklist = new TList(); - Double_t sumPt = 0.; - Float_t leadTrackPt = 0.; - TLorentzVector* leadTrackV = new TLorentzVector(); - - if(GetFFRadius()<=0){ - GetJetTracksTrackrefs(jettracklist, jet); - } else { - if(fUseEmbeddedJetAxis){ - if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet, GetFFRadius(), sumPt); + // get tracks in jet + TList* jettracklist = new TList(); + Double_t sumPt = 0.; + Bool_t isBadJet = kFALSE; + + if(GetFFRadius()<=0){ + GetJetTracksTrackrefs(jettracklist, jet, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet); + } else { + if(fUseEmbeddedJetAxis){ + if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet, + GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet); } - else GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt); - } + else GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, + GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet); + } + if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE; + + if(isBadJet){ + delete jettracklist; + continue; + } - if(ptFractionEmbedded>=fCutFractionPtEmbedded){ // if no embedding: ptFraction = cutFraction = 0 + if(ptFractionEmbedded>=fCutFractionPtEmbedded){ // if no embedding: ptFraction = cutFraction = 0 - for(Int_t it=0; itGetSize(); ++it){ - - AliVParticle* trackVP = dynamic_cast(jettracklist->At(it)); - if(!trackVP)continue; - TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P()); - - Float_t jetPt = jet->Pt(); - if(fUseEmbeddedJetPt){ - if(embeddedJet) jetPt = embeddedJet->Pt(); - else jetPt = 0; - } - Float_t trackPt = trackV->Pt(); + for(Int_t it=0; itGetSize(); ++it){ + + 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(); + if(fUseEmbeddedJetPt){ + if(embeddedJet) jetPt = embeddedJet->Pt(); + else jetPt = 0; + } + Float_t trackPt = trackV->Pt(); - 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 ); + Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; - delete trackV; + if(fFFMode && (ij==0)) fFFHistosRecCuts->FillFF(trackPt, jetPt, incrementJetPt); + if(fFFMode) fFFHistosRecCutsInc->FillFF(trackPt, jetPt, incrementJetPt); + + if(it==0){ // leading track + if(fFFMode) fFFHistosRecLeadingTrack->FillFF( trackPt, jetPt, kTRUE); } - // ff and ij for background study - 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); - } // 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 trackV; + } - delete leadTrackV; - delete jettracklist; + // background ff + if(fBckgMode && (ij==0)){ + 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) + - } // end: cut embedded ratio - } // end: leading jet + if(fJSMode && (ij==0)) FillJetShape(jet, jettracklist, fProNtracksLeadingJet, fProDelRPtSum, fProDelR80pcPt); + + delete jettracklist; + + } // end: cut embedded ratio } // end: rec. jets after cuts // generated jets @@ -3926,315 +2505,73 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) AliAODJet* jet = dynamic_cast(fJetsGen->At(ij)); if(!jet)continue; + if(fQAMode&2) fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt()); - - 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.; - Float_t leadTrackPt = 0.; - TLorentzVector* leadTrackV = new TLorentzVector(); - - if(GetFFRadius()<=0){ - GetJetTracksTrackrefs(jettracklist, jet); - } else { - GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt); - } - - for(Int_t it=0; itGetSize(); ++it){ - - AliVParticle* trackVP = dynamic_cast(jettracklist->At(it)); - 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; - } + + if(fQAMode&2 && (ij==0)) fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt()); + + TList* jettracklist = new TList(); + Double_t sumPt = 0.; + Bool_t isBadJet = kFALSE; - delete leadTrackV; + if(GetFFRadius()<=0){ + GetJetTracksTrackrefs(jettracklist, jet, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet); + } else { + GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet); + } + + if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;; + + if(isBadJet){ delete jettracklist; + continue; } - } - } // 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); + for(Int_t it=0; itGetSize(); ++it){ - // 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.; - Float_t leadTrackPt1 = 0; - - TList* jettracklist2 = new TList(); - Double_t sumPt2 = 0.; - Float_t leadTrackPt2 = 0; - - if(GetFFRadius()<=0) - { - GetJetTracksTrackrefs(jettracklist1, jet1); - GetJetTracksTrackrefs(jettracklist2, jet2); - } - else - { - GetJetTracksPointing(fTracksRecCuts, jettracklist1, jet1, GetFFRadius(), sumPt1); - GetJetTracksPointing(fTracksRecCuts, jettracklist2, jet2, GetFFRadius(), sumPt2); - } - - 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); + AliVParticle* trackVP = dynamic_cast(jettracklist->At(it)); + if(!trackVP)continue; + TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P()); - // DiJet events selection - Bool_t positionCut = 0; - Bool_t positionEnergyCut = 0; - Bool_t cdfCut = 0; + Float_t jetPt = jet->Pt(); + Float_t trackPt = trackV->Pt(); - // 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; + Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE; - Int_t go = 0; + if(fFFMode && (ij==0)) fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt ); + if(fFFMode) fFFHistosGenInc->FillFF( trackPt, jetPt, incrementJetPt ); - if (fDiJetCut == 1 && positionCut == 1) go = 1; - if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1; - if (fDiJetCut == 3 && cdfCut == 1) go = 1; + if(it==0){ // leading track + if(fFFMode) fFFHistosGenLeadingTrack->FillFF( trackPt, jetPt, kTRUE ); + } - 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.; - Float_t leadTrackPt1 = 0.; - - TList* jettracklist2 = new TList(); - Double_t sumPt2 = 0.; - Float_t leadTrackPt2 = 0.; - - if(GetFFRadius()<=0) - { - GetJetTracksTrackrefs(jettracklist1, jet1); - GetJetTracksTrackrefs(jettracklist2, jet2); - } - else - { - GetJetTracksPointing(fTracksGen, jettracklist1, jet1, GetFFRadius(), sumPt1); - GetJetTracksPointing(fTracksGen, jettracklist2, jet2, GetFFRadius(), sumPt2); - } - - 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 + delete trackV; + } + + if(fBckgMode && (ij==0)){ + 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(fJSMode && (ij==0)) FillJetShape(jet, jettracklist, fProNtracksLeadingJetGen, fProDelRPtSumGen, fProDelR80pcPtGen); + + delete jettracklist; + } + } // end: QA, FF and intra-jet + // ____ efficiency _______________________________ @@ -4247,127 +2584,250 @@ 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; + if(ij==0){ // leading jet + // for efficiency: gen tracks from pointing with gen/rec jet TList* jettracklistGenPrim = new TList(); - GetJetTracksPointing(fTracksAODMCCharged, jettracklistGenPrim, jet, GetFFRadius(), sumPtGenLeadingJetRecEff); // for efficiency: gen tracks from pointing with gen/rec jet - - TList* jettracklistGenSec = new TList(); - GetJetTracksPointing(fTracksAODMCChargedSec, jettracklistGenSec, jet, GetFFRadius(), sumPtGenLeadingJetSec); // for efficiency: gen tracks from pointing with gen/rec jet + // 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); + + + // bin efficiency in jet pt bins using rec tracks TList* jettracklistRec = new TList(); - GetJetTracksPointing(fTracksRecCuts,jettracklistRec, jet, GetFFRadius(), sumPtRecLeadingJetRecEff); // bin efficiency in jet pt bins using rec tracks + 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 && jettracklistGenSecNS->GetSize()<=GetFFMinNTracks()) isBadJetGenSec = kTRUE; + if(GetFFMinNTracks()>0 && jettracklistRec->GetSize()<=GetFFMinNTracks()) isBadJetRec = kTRUE; + + if(isBadJetRec){ + delete jettracklistGenPrim; + delete jettracklistGenSecNS; + delete jettracklistGenSecS; + delete jettracklistRec; + + 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); - delete jettracklistGenPrim; - delete jettracklistGenSec; + 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 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(); @@ -4381,78 +2841,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 *) { @@ -4511,7 +2910,8 @@ Int_t AliAnalysisTaskFragmentationFunction::GetListOfTracks(TList *list, Int_t t // all rec. tracks, esd filter mask, eta range for(Int_t it=0; itGetNumberOfTracks(); ++it){ - AliAODTrack *tr = fAOD->GetTrack(it); + AliAODTrack *tr = dynamic_cast(fAOD->GetTrack(it)); + if(!tr) AliFatal("Not a standard AOD"); if(type == kTrackAODCuts || type==kTrackAODQualityCuts || type==kTrackAODExtraCuts){ @@ -4548,7 +2948,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; @@ -4558,11 +2958,38 @@ 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) continue; // throw out PYTHIA stack partons + incoming protons + + 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(codeM == 130) isFromStrange = kTRUE; // K0 long + if(part->IsSecondaryFromMaterial()) isFromStrange = kFALSE; // strange resonances from hadronic showers ? + + // if(mfl ==3){ + // cout<<" mfl "<GetPdgCode()<<" code this track "<GetPdgCode()<GetDaughter(0)<<" 1 "<GetDaughter(1)<Eta() > fTrackEtaMax || part->Eta() < fTrackEtaMin @@ -4618,28 +3045,16 @@ Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t typ if(!tmp) continue; if( tmp->Pt() < fJetPtCut ) continue; + if( tmp->EffectiveAreaCharged() < fJetMinArea ) continue; if( type == kJetsRecAcceptance && ( tmp->Eta() < fJetEtaMin || tmp->Eta() > fJetEtaMax || 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(); @@ -4737,6 +3152,7 @@ Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t typ if(!tmp) continue; if( tmp->Pt() < fJetPtCut ) continue; + if( tmp->EffectiveAreaCharged() < fJetMinArea ) continue; if( type == kJetsGenAcceptance && ( tmp->Eta() < fJetEtaMin || tmp->Eta() > fJetEtaMax @@ -4777,6 +3193,7 @@ Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t typ if(!tmp) continue; if( tmp->Pt() < fJetPtCut ) continue; + if( tmp->EffectiveAreaCharged() < fJetMinArea ) continue; if( tmp->Eta() < fJetEtaMin || tmp->Eta() > fJetEtaMax || tmp->Phi() < fJetPhiMin @@ -4854,7 +3271,7 @@ Int_t AliAnalysisTaskFragmentationFunction::GetListOfBckgJets(TList *list, Int_t } // _________________________________________________________________________________________________________ -void AliAnalysisTaskFragmentationFunction::SetProperties(THnSparse* h,const Int_t dim, const char** labels) +void AliAnalysisTaskFragmentationFunction::SetProperties(THnSparse* h, Int_t dim, const char** labels) { // Set properties of THnSparse @@ -4889,11 +3306,14 @@ 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) +void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist, TList* outputlist, const AliAODJet* jet, + Double_t radius, Double_t& sumPt, Double_t minPtL, Double_t maxPt, Bool_t& isBadPt) { // fill list of tracks in cone around jet axis sumPt = 0; + Bool_t isBadMaxPt = kFALSE; + Bool_t isBadMinPt = kTRUE; Double_t jetMom[3]; jet->PxPyPz(jetMom); @@ -4914,30 +3334,48 @@ void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist outputlist->Add(track); sumPt += track->Pt(); + + 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) +// _________________________________________________________________________________________________________________________________________________________________ +void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet, Double_t minPtL, 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(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(); } @@ -4961,356 +3399,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, 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, 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; + } // _____________________________________________________________________________________________________________________________________________________________________ @@ -5348,7 +3622,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(); } @@ -5435,7 +3710,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 @@ -5461,10 +3736,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); @@ -5485,6 +3760,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); @@ -5492,7 +3768,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)) || @@ -5558,7 +3834,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 @@ -5639,7 +3915,7 @@ void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJetsStat(Int_t nCases, } // ______________________________________________________________________________________________________________________________________________________ -Float_t AliAnalysisTaskFragmentationFunction::CalcJetArea(const Float_t etaJet, const Float_t rc) const +Float_t AliAnalysisTaskFragmentationFunction::CalcJetArea(Float_t etaJet, Float_t rc) const { // calculate area of jet with eta etaJet and radius rc @@ -5753,17 +4029,17 @@ void AliAnalysisTaskFragmentationFunction::GetClusterTracksMedian(TList* outputl // get median cluster AliAODJet* medianCluster = 0; - Double_t medianDensity = 0; + //Double_t medianDensity = 0; if(TMath::Odd(nBckgClusters)){ Int_t medianIndex = indices[(Int_t) (0.5*(nBckgClusters-1))]; medianCluster = (AliAODJet*)(fBckgJetsRec->At(medianIndex)); - Double_t clusterPt = medianCluster->Pt(); - Double_t area = medianCluster->EffectiveAreaCharged(); + //Double_t clusterPt = medianCluster->Pt(); + //Double_t area = medianCluster->EffectiveAreaCharged(); - if(area>0) medianDensity = clusterPt/area; + //if(area>0) medianDensity = clusterPt/area; } else{ @@ -5773,17 +4049,17 @@ void AliAnalysisTaskFragmentationFunction::GetClusterTracksMedian(TList* outputl AliAODJet* medianCluster1 = (AliAODJet*)(fBckgJetsRec->At(medianIndex1)); AliAODJet* medianCluster2 = (AliAODJet*)(fBckgJetsRec->At(medianIndex2)); - Double_t density1 = 0; - Double_t clusterPt1 = medianCluster1->Pt(); - Double_t area1 = medianCluster1->EffectiveAreaCharged(); - if(area1>0) density1 = clusterPt1/area1; + //Double_t density1 = 0; + //Double_t clusterPt1 = medianCluster1->Pt(); + //Double_t area1 = medianCluster1->EffectiveAreaCharged(); + //if(area1>0) density1 = clusterPt1/area1; - Double_t density2 = 0; - Double_t clusterPt2 = medianCluster2->Pt(); - Double_t area2 = medianCluster2->EffectiveAreaCharged(); - if(area2>0) density2 = clusterPt2/area2; + //Double_t density2 = 0; + //Double_t clusterPt2 = medianCluster2->Pt(); + //Double_t area2 = medianCluster2->EffectiveAreaCharged(); + //if(area2>0) density2 = clusterPt2/area2; - medianDensity = 0.5*(density1+density2); + //medianDensity = 0.5*(density1+density2); medianCluster = ( (fRandom->Rndm()>0.5) ? medianCluster1 : medianCluster2 ); // select one randomly to avoid adding areas } @@ -5826,10 +4102,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(); @@ -5843,7 +4117,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); @@ -5860,7 +4134,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){ @@ -5876,10 +4150,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); @@ -5889,10 +4159,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; } @@ -5903,13 +4169,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; @@ -5921,7 +4185,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){ @@ -5937,11 +4201,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 } @@ -5950,11 +4210,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 } @@ -5967,25 +4222,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){ @@ -5997,13 +4268,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); @@ -6014,18 +4281,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){ @@ -6039,10 +4323,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); @@ -6053,7 +4333,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; @@ -6064,8 +4343,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){ @@ -6078,10 +4357,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); @@ -6092,7 +4367,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; @@ -6103,8 +4377,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){ @@ -6117,10 +4391,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); @@ -6131,7 +4401,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; @@ -6140,7 +4409,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)); @@ -6154,12 +4423,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); } @@ -6167,10 +4431,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; } @@ -6181,18 +4442,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){ @@ -6208,10 +4466,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 } @@ -6220,11 +4474,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; @@ -6236,13 +4486,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 ); } } @@ -6250,7 +4498,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){ @@ -6266,11 +4514,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); } @@ -6278,10 +4522,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; } @@ -6292,13 +4533,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 ); } } } @@ -6318,11 +4557,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); } @@ -6330,12 +4565,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; @@ -6347,13 +4578,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 ); } } @@ -6366,7 +4595,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){ @@ -6395,7 +4624,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){ @@ -6419,40 +4648,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(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(TMath::Abs(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(TMath::Abs(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(TMath::Abs(motherPDG) == 3312 || TMath::Abs(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; }