-/*************************************************************************
- * *
- * Task for Fragmentation Function Analysis in PWG4 Jet Task Force Train *
- * *
- *************************************************************************/
+// *************************************************************************
+// * *
+// * Task for Fragmentation Function Analysis in PWG4 Jet Task Force Train *
+// * *
+// *************************************************************************
/**************************************************************************
#include "TH2F.h"
#include "TH3F.h"
#include "TString.h"
-//#include "THnSparse.h"
+#include "THnSparse.h"
#include "TProfile.h"
#include "TFile.h"
#include "TKey.h"
#include "AliESDEvent.h"
#include "AliAODMCParticle.h"
#include "AliAODJet.h"
+#include "AliAODJetEventBackground.h"
#include "AliGenPythiaEventHeader.h"
#include "AliGenHijingEventHeader.h"
#include "AliInputEventHandler.h"
,fESD(0)
,fAOD(0)
,fBranchRecJets("jets")
+ ,fBranchRecBackJets("backjets")
,fBranchGenJets("")
,fTrackTypeGen(0)
,fJetTypeGen(0)
,fJetTypeRecEff(0)
,fFilterMask(0)
,fUsePhysicsSelection(kTRUE)
+ ,fEventClass(0)
+ ,fMaxVertexZ(10)
,fTrackPtCut(0)
,fTrackEtaMin(0)
,fTrackEtaMax(0)
,fFFBckgRadius(0)
,fBckgMode(0)
,fIJMode(0)
+ ,fQAMode(0)
+ ,fFFMode(0)
+ ,fDJMode(0)
+ ,fEffMode(0)
+ ,fPhiCorrMode(0)
,fUseRecEffRecJetPtBins(1)
,fAvgTrials(0)
,fTracksRec(0)
,fFFDiJetHistosGenLeadingTrack(0)
,fQADiJetHistosRecCuts(0)
,fQADiJetHistosGen(0)
+ ,fPhiCorrHistosJetArea(0)
+ ,fPhiCorrHistosTransverseArea(0)
+ ,fPhiCorrHistosAwayArea(0)
,fQATrackHighPtThreshold(0)
,fFFNBinsJetPt(0)
,fFFJetPtMin(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)
,fh1Xsec(0)
,fh1Trials(0)
,fh1PtHard(0)
,fQATrackHistosRecEffGen(0)
,fQATrackHistosRecEffRec(0)
,fFFHistosRecEffGen(0)
- ,fFFHistosRecEffRec(0)
+ ,fFFHistosRecEffRec(0)
+ ,fhnResponseSinglePt(0)
+ ,fhnResponseJetTrackPt(0)
+ ,fhnResponseJetZ(0)
+ ,fhnResponseJetXi(0)
// Background
,fh1OutLeadingMult(0)
,fh1PerpMult(0)
+ ,fh1ASideMult(0)
+ ,fh1ASideWindowMult(0)
+ ,fh1PerpWindowMult(0)
,fh1Out2JetsMult(0)
,fh1Out3JetsMult(0)
,fQABckgHisto0RecCuts(0)
,fIJBckgHisto2Gen(0)
,fIJBckgHisto2GenLeading(0)
,fRandom(0)
+ ,fBckgSubMethod(0)
{
// default constructor
fBckgType[0] = 0;
,fESD(0)
,fAOD(0)
,fBranchRecJets("jets")
+ ,fBranchRecBackJets("backjets")
,fBranchGenJets("")
,fTrackTypeGen(0)
,fJetTypeGen(0)
,fJetTypeRecEff(0)
,fFilterMask(0)
,fUsePhysicsSelection(kTRUE)
+ ,fEventClass(0)
+ ,fMaxVertexZ(10)
,fTrackPtCut(0)
,fTrackEtaMin(0)
,fTrackEtaMax(0)
,fFFBckgRadius(0)
,fBckgMode(0)
,fIJMode(0)
+ ,fQAMode(0)
+ ,fFFMode(0)
+ ,fDJMode(0)
+ ,fEffMode(0)
+ ,fPhiCorrMode(0)
,fUseRecEffRecJetPtBins(1)
,fAvgTrials(0)
,fTracksRec(0)
,fFFDiJetHistosGenLeadingTrack(0)
,fQADiJetHistosRecCuts(0)
,fQADiJetHistosGen(0)
+ ,fPhiCorrHistosJetArea(0)
+ ,fPhiCorrHistosTransverseArea(0)
+ ,fPhiCorrHistosAwayArea(0)
,fQATrackHighPtThreshold(0)
,fFFNBinsJetPt(0)
,fFFJetPtMin(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)
,fh1Xsec(0)
,fh1Trials(0)
,fh1PtHard(0)
,fQATrackHistosRecEffGen(0)
,fQATrackHistosRecEffRec(0)
,fFFHistosRecEffGen(0)
- ,fFFHistosRecEffRec(0)
+ ,fFFHistosRecEffRec(0)
+ ,fhnResponseSinglePt(0)
+ ,fhnResponseJetTrackPt(0)
+ ,fhnResponseJetZ(0)
+ ,fhnResponseJetXi(0)
// Background
,fh1OutLeadingMult(0)
,fh1PerpMult(0)
+ ,fh1ASideMult(0)
+ ,fh1ASideWindowMult(0)
+ ,fh1PerpWindowMult(0)
,fh1Out2JetsMult(0)
,fh1Out3JetsMult(0)
,fQABckgHisto0RecCuts(0)
,fIJBckgHisto2Gen(0)
,fIJBckgHisto2GenLeading(0)
,fRandom(0)
+ ,fBckgSubMethod(0)
{
// constructor
fBckgType[0] = 0;
,fESD(copy.fESD)
,fAOD(copy.fAOD)
,fBranchRecJets(copy.fBranchRecJets)
+ ,fBranchRecBackJets(copy.fBranchRecBackJets)
,fBranchGenJets(copy.fBranchGenJets)
,fTrackTypeGen(copy.fTrackTypeGen)
,fJetTypeGen(copy.fJetTypeGen)
,fJetTypeRecEff(copy.fJetTypeRecEff)
,fFilterMask(copy.fFilterMask)
,fUsePhysicsSelection(copy.fUsePhysicsSelection)
+ ,fEventClass(copy.fEventClass)
+ ,fMaxVertexZ(copy.fMaxVertexZ)
,fTrackPtCut(copy.fTrackPtCut)
,fTrackEtaMin(copy.fTrackEtaMin)
,fTrackEtaMax(copy.fTrackEtaMax)
,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)
,fAvgTrials(copy.fAvgTrials)
,fTracksRec(copy.fTracksRec)
,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)
,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)
,fh1Xsec(copy.fh1Xsec)
,fh1Trials(copy.fh1Trials)
,fh1PtHard(copy.fh1PtHard)
,fQATrackHistosRecEffRec(copy.fQATrackHistosRecEffRec)
,fFFHistosRecEffGen(copy.fFFHistosRecEffGen)
,fFFHistosRecEffRec(copy.fFFHistosRecEffRec)
+ ,fhnResponseSinglePt(copy.fhnResponseSinglePt)
+ ,fhnResponseJetTrackPt(copy.fhnResponseJetTrackPt)
+ ,fhnResponseJetZ(copy.fhnResponseJetZ)
+ ,fhnResponseJetXi(copy.fhnResponseJetXi)
// Background
,fh1OutLeadingMult(copy.fh1OutLeadingMult)
,fh1PerpMult(copy.fh1PerpMult)
+ ,fh1ASideMult(copy.fh1ASideMult)
+ ,fh1ASideWindowMult(copy.fh1ASideWindowMult)
+ ,fh1PerpWindowMult(copy.fh1PerpWindowMult)
,fh1Out2JetsMult(copy.fh1Out2JetsMult)
,fh1Out3JetsMult(copy.fh1Out3JetsMult)
,fQABckgHisto0RecCuts(copy.fQABckgHisto0RecCuts)
,fIJBckgHisto2Gen(copy.fIJBckgHisto2Gen)
,fIJBckgHisto2GenLeading(copy.fIJBckgHisto2GenLeading)
,fRandom(copy.fRandom)
+ ,fBckgSubMethod(copy.fBckgSubMethod)
{
// copy constructor
fBckgType[0] = copy.fBckgType[0];
fESD = o.fESD;
fAOD = o.fAOD;
fBranchRecJets = o.fBranchRecJets;
+ fBranchRecBackJets = o.fBranchRecBackJets;
fBranchGenJets = o.fBranchGenJets;
fTrackTypeGen = o.fTrackTypeGen;
fJetTypeGen = o.fJetTypeGen;
fJetTypeRecEff = o.fJetTypeRecEff;
fFilterMask = o.fFilterMask;
fUsePhysicsSelection = o.fUsePhysicsSelection;
+ fEventClass = o.fEventClass;
+ fMaxVertexZ = o.fMaxVertexZ;
fTrackPtCut = o.fTrackPtCut;
fTrackEtaMin = o.fTrackEtaMin;
fTrackEtaMax = o.fTrackEtaMax;
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];
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;
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;
fh1Xsec = o.fh1Xsec;
fh1Trials = o.fh1Trials;
fh1PtHard = o.fh1PtHard;
fQATrackHistosRecEffRec = o.fQATrackHistosRecEffRec;
fFFHistosRecEffGen = o.fFFHistosRecEffGen;
fFFHistosRecEffRec = o.fFFHistosRecEffRec;
+ fhnResponseSinglePt = o.fhnResponseSinglePt;
+ fhnResponseJetTrackPt = o.fhnResponseJetTrackPt;
+ fhnResponseJetZ = o.fhnResponseJetZ;
+ fhnResponseJetXi = o.fhnResponseJetXi;
// Background
fh1OutLeadingMult = o.fh1OutLeadingMult;
fh1PerpMult = o.fh1PerpMult;
+ fh1ASideMult = o.fh1ASideMult;
+ fh1ASideWindowMult = o.fh1ASideWindowMult;
+ fh1PerpWindowMult = o.fh1PerpWindowMult;
fh1Out2JetsMult = o.fh1Out2JetsMult;
fh1Out3JetsMult = o.fh1Out3JetsMult;
fQABckgHisto0RecCuts = o.fQABckgHisto0RecCuts;
fIJBckgHisto2Gen = o.fIJBckgHisto2Gen;
fIJBckgHisto2GenLeading = o.fIJBckgHisto2GenLeading;
fRandom = o.fRandom;
+ fBckgSubMethod = o.fBckgSubMethod;
}
return *this;
,fh2EtaPhi(0)
,fh1Pt(0)
,fh2HighPtEtaPhi(0)
+ ,fh2PhiPt(0)
,fNameQAT(name)
{
// default constructor
,fh2EtaPhi(copy.fh2EtaPhi)
,fh1Pt(copy.fh1Pt)
,fh2HighPtEtaPhi(copy.fh2HighPtEtaPhi)
+ ,fh2PhiPt(copy.fh2PhiPt)
,fNameQAT(copy.fNameQAT)
{
// copy constructor
fh2EtaPhi = o.fh2EtaPhi;
fh1Pt = o.fh1Pt;
fh2HighPtEtaPhi = o.fh2HighPtEtaPhi;
+ fh2PhiPt = o.fh2PhiPt;
fNameQAT = o.fNameQAT;
}
if(fh2EtaPhi) delete fh2EtaPhi;
if(fh2HighPtEtaPhi) delete fh2HighPtEtaPhi;
if(fh1Pt) delete fh1Pt;
+ if(fh2PhiPt) delete fh2PhiPt;
}
//______________________________________________________________________
fh2EtaPhi = new TH2F(Form("fh2TrackQAEtaPhi%s", fNameQAT.Data()), Form("%s: #eta - #phi distribution", fNameQAT.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
fh2HighPtEtaPhi = new TH2F(Form("fh2TrackQAHighPtEtaPhi%s", fNameQAT.Data()), Form("%s: #eta - #phi distribution for high-p_{T}", fNameQAT.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
fh1Pt = new TH1F(Form("fh1TrackQAPt%s", fNameQAT.Data()), Form("%s: p_{T} distribution", fNameQAT.Data()), fNBinsPt, fPtMin, fPtMax);
-
+ fh2PhiPt = new TH2F(Form("fh2TrackQAPhiPt%s", fNameQAT.Data()), Form("%s: #eta - #p_{T} distribution", fNameQAT.Data()), fNBinsPhi, fPhiMin, fPhiMax, fNBinsPt, fPtMin, fPtMax);
+
AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
AliAnalysisTaskFragmentationFunction::SetProperties(fh2HighPtEtaPhi, "#eta", "#phi");
AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
+ AliAnalysisTaskFragmentationFunction::SetProperties(fh2PhiPt, "#phi", "p_{T} [GeV/c]");
}
//________________________________________________________________________________________________________
-void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::FillTrackQA(Float_t eta, Float_t phi, Float_t pt)
+void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::FillTrackQA(Float_t eta, Float_t phi, Float_t pt, Bool_t weightPt, Float_t norm)
{
// fill track QA histos
-
- fh2EtaPhi->Fill( eta, phi);
- if(pt > fHighPtThreshold) fh2HighPtEtaPhi->Fill( eta, phi);
- fh1Pt->Fill( pt );
+ Float_t weight = 1.;
+ if(weightPt) weight = pt;
+ fh2EtaPhi->Fill( eta, phi, weight);
+ if(pt > fHighPtThreshold) fh2HighPtEtaPhi->Fill( eta, phi, weight);
+ if(norm) fh1Pt->Fill( pt, 1/norm );
+ else fh1Pt->Fill( pt );
+ fh2PhiPt->Fill(phi, pt);
}
//______________________________________________________________________________________
list->Add(fh2EtaPhi);
list->Add(fh2HighPtEtaPhi);
list->Add(fh1Pt);
+ list->Add(fh2PhiPt);
}
//______________________________________________________________________________________________________
Double_t z = trackPt / jetPt;
Double_t xi = 0;
- if(z!=0) xi = TMath::Log(1/z);
+ if(z>0) xi = TMath::Log(1/z);
fh2Xi->Fill(jetBin, xi);
fh2Z->Fill(jetBin, z);
Double_t z = trackPt / jetPt;
Double_t xi = 0;
- if(z!=0) xi = TMath::Log(1/z);
+ if(z>0) xi = TMath::Log(1/z);
fh2Xi1->Fill(jetBin, xi);
fh2Z1->Fill(jetBin, z);
Double_t z = trackPt / jetPt;
Double_t xi = 0;
- if(z!=0) xi = TMath::Log(1/z);
+ if(z>0) xi = TMath::Log(1/z);
fh2Xi2->Fill(jetBin, xi);
fh2Z2->Fill(jetBin, z);
//______________________________________________________________________________________________________
AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const char* name, Int_t kindSlices,
- Int_t nInvMass, Float_t invMassMin, Float_t invMassMax,
+ 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 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)
,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
,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
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;
}
if(fh2DeltaPhi) delete fh2DeltaPhi;
if(fh2DeltaEta) delete fh2DeltaEta;
if(fh2DeltaPt) delete fh2DeltaPt;
+ if(fh2InBal) delete fh2InBal;
}
//________________________________________________________________________
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 jetBin)
+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
fh2DeltaPhi->Fill(jetBin, deltaPhi);
fh2DeltaEta->Fill(jetBin, deltaEta);
fh2DeltaPt->Fill(jetBin, deltaPt);
+ fh2InBal->Fill(jetBin, inbal);
}
//________________________________________________________________________
list->Add(fh2DeltaPhi);
list->Add(fh2DeltaEta);
list->Add(fh2DeltaPt);
+ list->Add(fh2InBal);
}
//_________________________________________________________________________________
fJetsRec = new TList();
fJetsRec->SetOwner(kFALSE);
+ if(!fBranchRecJets.Contains("UA1") && fBranchRecJets.Contains("KT")) fJetsRec->SetOwner(kTRUE);
fJetsRecCuts = new TList();
fJetsRecCuts->SetOwner(kFALSE);
+ if(!fBranchRecJets.Contains("UA1") && fBranchRecJets.Contains("KT")) fJetsRecCuts->SetOwner(kTRUE);
fJetsGen = new TList();
fJetsGen->SetOwner(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", 11,-.5, 10.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.,120.);
-
+ 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.);
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);
}
if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp)
fh1PerpMult = new TH1F("fh1PerpMult","Background multiplicity - Cone perpendicular to leading jet axis",120,0.,120.);
+ if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide)
+ fh1ASideMult = new TH1F("fh1ASideMult","Background multiplicity - Cone in the away side of leading jet axis",120,0.,120.);
+ if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow)
+ fh1ASideWindowMult = new TH1F("fh1ASideWindowMult","Background multiplicity - Cone in the away side of leading jet axis",120,0.,120.);
+ if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow)
+ fh1PerpWindowMult = new TH1F("fh1PerpWindowMult","Background multiplicity - Cone in the perp direction of leading jet axis",120,0.,120.);
if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ)
fh1OutLeadingMult = new TH1F("fh1OutLeadingMult","Background multiplicity - Cone outside leading jet",120,0,120.);
if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J)
fh1Out3JetsMult = new TH1F("fh1Out3JetsMult","Background multiplicity - Cone outside 3 jets",120,0.,120.);
}
+ 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,
+ fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
+ fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
+ fQATrackHighPtThreshold);
+ fQATrackHistosGen = new AliFragFuncQATrackHistos("Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
+ fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
+ fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
+ fQATrackHighPtThreshold);
+ }
- fQATrackHistosRec = new AliFragFuncQATrackHistos("Rec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
- fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
- fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
- fQATrackHighPtThreshold);
- fQATrackHistosRecCuts = new AliFragFuncQATrackHistos("RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
- fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
- fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
- fQATrackHighPtThreshold);
- fQATrackHistosGen = new AliFragFuncQATrackHistos("Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
- fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
- fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
- fQATrackHighPtThreshold);
-
+ if(fQAMode&2){ // jet QA
+ fQAJetHistosRec = new AliFragFuncQAJetHistos("Rec", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
+ fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
+ fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
+ fQAJetHistosRecCuts = new AliFragFuncQAJetHistos("RecCuts", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
+ fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
+ fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
+ fQAJetHistosRecCutsLeading = new AliFragFuncQAJetHistos("RecCutsLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
+ fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
+ fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
+ fQAJetHistosGen = new AliFragFuncQAJetHistos("Gen", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
+ fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
+ fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
+ fQAJetHistosGenLeading = new AliFragFuncQAJetHistos("GenLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
+ fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
+ fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
+ if(fEffMode) fQAJetHistosRecEffLeading = new AliFragFuncQAJetHistos("RecEffLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
+ fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
+ }
+ } // end: QA
- fQAJetHistosRec = new AliFragFuncQAJetHistos("Rec", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
- fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
- fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
- fQAJetHistosRecCuts = new AliFragFuncQAJetHistos("RecCuts", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
- fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
- fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
- fQAJetHistosRecCutsLeading = new AliFragFuncQAJetHistos("RecCutsLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
- fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
- fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
- fQAJetHistosGen = new AliFragFuncQAJetHistos("Gen", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
- fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
- fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
- fQAJetHistosGenLeading = new AliFragFuncQAJetHistos("GenLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
- fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
- fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
- fQAJetHistosRecEffLeading = new AliFragFuncQAJetHistos("RecEffLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
- fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
-
-
- fFFHistosRecCuts = new AliFragFuncHistos("RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
- fFFNBinsPt, fFFPtMin, fFFPtMax,
- fFFNBinsXi, fFFXiMin, fFFXiMax,
- fFFNBinsZ , fFFZMin , fFFZMax);
- fFFHistosRecLeading = new AliFragFuncHistos("RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
+ if(fFFMode){
+ fFFHistosRecCuts = new AliFragFuncHistos("RecCuts", 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,
- 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,
+ 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,
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
if(fIJMode)
{
fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
fIJNBinsJt , fIJJtMin , fIJJtMax);
- }
+ } // end: intra-jet
- 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);
-
- fQADiJetHistosRecCuts = new AliFragFuncQADiJetHistos("RecCuts", fDiJetKindBins,
- fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
- fQADiJetNBinsJetPt, fQADiJetJetPtMin, fQADiJetJetPtMax,
- fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax ,
- fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax ,
- fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax);
- fQADiJetHistosGen = new AliFragFuncQADiJetHistos("Gen", fDiJetKindBins,
- fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
- fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
- fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax,
- fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax,
- fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax);
+ if(fDJMode){
+ if(fDJMode&1){
+ fFFDiJetHistosRecCuts = new AliFragFuncDiJetHistos("RecCuts", fDiJetKindBins,
+ fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
+ fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
+ fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
+ fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
+ fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
+ fFFDiJetHistosRecLeading = new AliFragFuncDiJetHistos("RecLeading", fDiJetKindBins,
+ fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
+ fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
+ fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
+ fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
+ fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
+ fFFDiJetHistosRecLeadingTrack = new AliFragFuncDiJetHistos("RecLeadingTrack", fDiJetKindBins,
+ fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
+ fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
+ fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
+ fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
+ fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
+
+ fFFDiJetHistosGen = new AliFragFuncDiJetHistos("Gen", fDiJetKindBins,
+ fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
+ fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
+ fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
+ fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
+ fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
+ fFFDiJetHistosGenLeading = new AliFragFuncDiJetHistos("GenLeading", fDiJetKindBins,
+ fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
+ fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
+ fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
+ fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
+ fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
+ fFFDiJetHistosGenLeadingTrack = new AliFragFuncDiJetHistos("GenLeadingTrack", fDiJetKindBins,
+ fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
+ fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
+ fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
+ fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
+ fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
+ }
+
+ if(fDJMode&2){
+ fQADiJetHistosRecCuts = new AliFragFuncQADiJetHistos("RecCuts", fDiJetKindBins,
+ fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
+ fQADiJetNBinsJetPt, fQADiJetJetPtMin, fQADiJetJetPtMax,
+ fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax ,
+ fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax ,
+ fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax,
+ fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax);
+ fQADiJetHistosGen = new AliFragFuncQADiJetHistos("Gen", fDiJetKindBins,
+ fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
+ fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
+ fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax,
+ fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax,
+ fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax,
+ fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax);
+ }
+ } // end: di-jet
// efficiency
- fQATrackHistosRecEffGen = new AliFragFuncQATrackHistos("RecEffGen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
- fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
- fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
- fQATrackHighPtThreshold);
+ if(fEffMode){
+ if(fQAMode&1){
+ fQATrackHistosRecEffGen = new AliFragFuncQATrackHistos("RecEffGen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
+ fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
+ fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
+ fQATrackHighPtThreshold);
+
+ fQATrackHistosRecEffRec = new AliFragFuncQATrackHistos("RecEffRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
+ fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
+ fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
+ fQATrackHighPtThreshold);
- fQATrackHistosRecEffRec = new AliFragFuncQATrackHistos("RecEffRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
- fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
- fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
- fQATrackHighPtThreshold);
-
- 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);
+ 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);
+ }
+ 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);
+
+
+ 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);
+
+ Int_t nBinsResponseJetXi[3] = {fFFNBinsJetPt, fFFNBinsXi,fFFNBinsXi};
+ Double_t binMinResponseJetXi[3] = {fFFJetPtMin, fFFXiMin, fFFXiMin};
+ Double_t binMaxResponseJetXi[3] = {fFFJetPtMax, fFFXiMax, fFFXiMax};
+ const char* labelsResponseJetXi[3] = { "jet p_{T} [GeV/c]","rec xi","gen xi"};
+
+ fhnResponseJetXi = new THnSparseF("fhnResponseJetXi","jet pt:track xi rec:track xi gen",3,
+ nBinsResponseJetXi,binMinResponseJetXi,binMaxResponseJetXi);
+
+ AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetXi,3,labelsResponseJetXi);
+
+ }
+ } // end: efficiency
// Background
if(fBckgMode){
TString title[3];
for(Int_t i=0; i<3; i++){
if(fBckgType[i]==kBckgPerp) title[i]="Perp";
+ else if(fBckgType[i]==kBckgPerpWindow) title[i]="PerpW";
+ else if(fBckgType[i]==kBckgASide) title[i]="ASide";
+ else if(fBckgType[i]==kBckgASideWindow) title[i]="ASideW";
else if(fBckgType[i]==kBckgOutLJ) title[i]="OutLeadingJet";
else if(fBckgType[i]==kBckgOut2J) title[i]="Out2Jets";
else if(fBckgType[i]==kBckgOut3J) title[i]="Out3Jets";
else printf("Please chose background method number %d!",i);
}
-
- fQABckgHisto0RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[0]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
- fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
- fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
- fQATrackHighPtThreshold);
- fQABckgHisto0Gen = new AliFragFuncQATrackHistos("Bckg"+title[0]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
- fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
- fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
- fQATrackHighPtThreshold);
- fQABckgHisto1RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[1]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
- fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
- fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
- fQATrackHighPtThreshold);
- fQABckgHisto1Gen = new AliFragFuncQATrackHistos("Bckg"+title[1]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
- fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
- fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
- fQATrackHighPtThreshold);
- fQABckgHisto2RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[2]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
- fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
- fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
- fQATrackHighPtThreshold);
- fQABckgHisto2Gen = new AliFragFuncQATrackHistos("Bckg"+title[2]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
- fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
- fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
- fQATrackHighPtThreshold);
-
-
- // 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);
-
+ if(fQAMode&1){
+ fQABckgHisto0RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[0]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
+ fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
+ fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
+ fQATrackHighPtThreshold);
+ fQABckgHisto0Gen = new AliFragFuncQATrackHistos("Bckg"+title[0]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
+ fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
+ fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
+ fQATrackHighPtThreshold);
+ fQABckgHisto1RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[1]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
+ fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
+ fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
+ fQATrackHighPtThreshold);
+ fQABckgHisto1Gen = new AliFragFuncQATrackHistos("Bckg"+title[1]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
+ fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
+ fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
+ fQATrackHighPtThreshold);
+ fQABckgHisto2RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[2]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
+ fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
+ fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
+ fQATrackHighPtThreshold);
+ fQABckgHisto2Gen = new AliFragFuncQATrackHistos("Bckg"+title[2]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
+ fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
+ fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
+ fQATrackHighPtThreshold);
+ } // 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);
+ } // end: background FF
if(fIJMode){
fIJBckgHisto0RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
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
- fQATrackHistosRec->DefineHistos();
- fQATrackHistosRecCuts->DefineHistos();
- fQATrackHistosGen->DefineHistos();
+
+ // ____________ define histograms ____________________
+
+ if(fQAMode){
+ if(fQAMode&1){ // track QA
+ fQATrackHistosRec->DefineHistos();
+ fQATrackHistosRecCuts->DefineHistos();
+ fQATrackHistosGen->DefineHistos();
+ }
- fQAJetHistosRec->DefineHistos();
- fQAJetHistosRecCuts->DefineHistos();
- fQAJetHistosRecCutsLeading->DefineHistos();
- fQAJetHistosGen->DefineHistos();
- fQAJetHistosGenLeading->DefineHistos();
- fQAJetHistosRecEffLeading->DefineHistos();
+ if(fQAMode&2){ // jet QA
+ fQAJetHistosRec->DefineHistos();
+ fQAJetHistosRecCuts->DefineHistos();
+ fQAJetHistosRecCutsLeading->DefineHistos();
+ fQAJetHistosGen->DefineHistos();
+ fQAJetHistosGenLeading->DefineHistos();
+ if(fEffMode) fQAJetHistosRecEffLeading->DefineHistos();
+ }
+ }
- fFFHistosRecCuts->DefineHistos();
- fFFHistosRecLeading->DefineHistos();
- fFFHistosRecLeadingTrack->DefineHistos();
- fFFHistosGen->DefineHistos();
- fFFHistosGenLeading->DefineHistos();
- fFFHistosGenLeadingTrack->DefineHistos();
+ if(fFFMode){
+ fFFHistosRecCuts->DefineHistos();
+ fFFHistosRecLeading->DefineHistos();
+ fFFHistosRecLeadingTrack->DefineHistos();
+ fFFHistosGen->DefineHistos();
+ fFFHistosGenLeading->DefineHistos();
+ fFFHistosGenLeadingTrack->DefineHistos();
+ }
if(fIJMode){
fIJHistosRecCuts->DefineHistos();
fIJHistosGenLeadingTrack->DefineHistos();
}
- fFFDiJetHistosRecCuts->DefineDiJetHistos();
- fFFDiJetHistosRecLeading->DefineDiJetHistos();
- fFFDiJetHistosRecLeadingTrack->DefineDiJetHistos();
- fFFDiJetHistosGen->DefineDiJetHistos();
- fFFDiJetHistosGenLeading->DefineDiJetHistos();
- fFFDiJetHistosGenLeadingTrack->DefineDiJetHistos();
- fQADiJetHistosRecCuts->DefineQADiJetHistos();
- fQADiJetHistosGen->DefineQADiJetHistos();
+ 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
- fQATrackHistosRecEffGen->DefineHistos();
- fQATrackHistosRecEffRec->DefineHistos();
- fFFHistosRecEffGen->DefineHistos();
- fFFHistosRecEffRec->DefineHistos();
+ if(fEffMode){
+ if(fQAMode&1){
+ fQATrackHistosRecEffGen->DefineHistos();
+ fQATrackHistosRecEffRec->DefineHistos();
+ }
+ if(fFFMode){
+ fFFHistosRecEffGen->DefineHistos();
+ fFFHistosRecEffRec->DefineHistos();
+ }
+ } // end: efficiency
// Background
if(fBckgMode){
- fFFBckgHisto0RecCuts->DefineHistos();
- fFFBckgHisto0RecLeading->DefineHistos();
- fFFBckgHisto0Gen->DefineHistos();
- fFFBckgHisto0GenLeading->DefineHistos();
- fFFBckgHisto1RecCuts->DefineHistos();
- fFFBckgHisto1RecLeading->DefineHistos();
- fFFBckgHisto1Gen->DefineHistos();
- fFFBckgHisto1GenLeading->DefineHistos();
- fFFBckgHisto2RecCuts->DefineHistos();
- fFFBckgHisto2RecLeading->DefineHistos();
- fFFBckgHisto2Gen->DefineHistos();
- fFFBckgHisto2GenLeading->DefineHistos();
-
+ 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();
+ }
+
if(fIJMode){
fIJBckgHisto0RecCuts->DefineHistos();
fIJBckgHisto0RecLeading->DefineHistos();
fIJBckgHisto2GenLeading->DefineHistos();
}
- fQABckgHisto0RecCuts->DefineHistos();
- fQABckgHisto0Gen->DefineHistos();
- fQABckgHisto1RecCuts->DefineHistos();
- fQABckgHisto1Gen->DefineHistos();
- fQABckgHisto2RecCuts->DefineHistos();
- fQABckgHisto2Gen->DefineHistos();
- }
+ if(fQAMode&1){
+ fQABckgHisto0RecCuts->DefineHistos();
+ fQABckgHisto0Gen->DefineHistos();
+ fQABckgHisto1RecCuts->DefineHistos();
+ fQABckgHisto1Gen->DefineHistos();
+ fQABckgHisto2RecCuts->DefineHistos();
+ fQABckgHisto2Gen->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;
Bool_t recJetsEff = (fJetTypeRecEff != kJetsUndef) ? kTRUE : kFALSE;
+ fCommonHistList->Add(fh1EvtSelection);
+ fCommonHistList->Add(fh1EvtMult);
+ fCommonHistList->Add(fh1EvtCent);
+ 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);
+ }
- const Int_t saveLevel = 5;
- if(saveLevel>0){
- fCommonHistList->Add(fh1EvtSelection);
+ // FF histograms
+ if(fFFMode){
fFFHistosRecCuts->AddToOutput(fCommonHistList);
fFFHistosRecLeading->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);
+
+ fFFHistosGen->AddToOutput(fCommonHistList);
+ fFFHistosGenLeading->AddToOutput(fCommonHistList);
+ fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList);
+ }
+ }
- // Background
- if(fBckgMode){
+ // Background
+ if(fBckgMode){
+ if(fFFMode){
fFFBckgHisto0RecCuts->AddToOutput(fCommonHistList);
fFFBckgHisto0RecLeading->AddToOutput(fCommonHistList);
fFFBckgHisto1RecCuts->AddToOutput(fCommonHistList);
fFFBckgHisto1RecLeading->AddToOutput(fCommonHistList);
fFFBckgHisto2RecCuts->AddToOutput(fCommonHistList);
fFFBckgHisto2RecLeading->AddToOutput(fCommonHistList);
-
+ if(genJets && genTracks){
+ fFFBckgHisto0Gen->AddToOutput(fCommonHistList);
+ fFFBckgHisto0GenLeading->AddToOutput(fCommonHistList);
+ fFFBckgHisto1Gen->AddToOutput(fCommonHistList);
+ fFFBckgHisto1GenLeading->AddToOutput(fCommonHistList);
+ fFFBckgHisto2Gen->AddToOutput(fCommonHistList);
+ fFFBckgHisto2GenLeading->AddToOutput(fCommonHistList);
+ }
+ }
+
+ if(fQAMode&1){
fQABckgHisto0RecCuts->AddToOutput(fCommonHistList);
fQABckgHisto1RecCuts->AddToOutput(fCommonHistList);
fQABckgHisto2RecCuts->AddToOutput(fCommonHistList);
-
- if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ)
- fCommonHistList->Add(fh1OutLeadingMult);
- if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp)
- fCommonHistList->Add(fh1PerpMult);
- if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J)
- fCommonHistList->Add(fh1Out2JetsMult);
- if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J)
- fCommonHistList->Add(fh1Out3JetsMult);
+ if(genJets && genTracks){
+ fQABckgHisto0Gen->AddToOutput(fCommonHistList);
+ fQABckgHisto1Gen->AddToOutput(fCommonHistList);
+ fQABckgHisto2Gen->AddToOutput(fCommonHistList);
+ }
}
- if(genJets && genTracks){
- fFFHistosGen->AddToOutput(fCommonHistList);
- fFFHistosGenLeading->AddToOutput(fCommonHistList);
- fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList);
-
- fCommonHistList->Add(fh1Xsec);
- fCommonHistList->Add(fh1Trials);
- fCommonHistList->Add(fh1PtHard);
- fCommonHistList->Add(fh1PtHardTrials);
-
- // Background
- if(fBckgMode){
- fFFBckgHisto0Gen->AddToOutput(fCommonHistList);
- fFFBckgHisto0GenLeading->AddToOutput(fCommonHistList);
- fFFBckgHisto1Gen->AddToOutput(fCommonHistList);
- fFFBckgHisto1GenLeading->AddToOutput(fCommonHistList);
- fFFBckgHisto2Gen->AddToOutput(fCommonHistList);
- fFFBckgHisto2GenLeading->AddToOutput(fCommonHistList);
-
- fQABckgHisto0Gen->AddToOutput(fCommonHistList);
- fQABckgHisto1Gen->AddToOutput(fCommonHistList);
- fQABckgHisto2Gen->AddToOutput(fCommonHistList);
- }
- }
+ if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ)
+ fCommonHistList->Add(fh1OutLeadingMult);
+ if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp)
+ fCommonHistList->Add(fh1PerpMult);
+ if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide)
+ fCommonHistList->Add(fh1ASideMult);
+ if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow)
+ fCommonHistList->Add(fh1ASideWindowMult);
+ if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow)
+ fCommonHistList->Add(fh1PerpWindowMult);
+ if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J)
+ fCommonHistList->Add(fh1Out2JetsMult);
+ if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J)
+ fCommonHistList->Add(fh1Out3JetsMult);
}
- if(saveLevel>1){
- fQATrackHistosRec->AddToOutput(fCommonHistList);
- fQATrackHistosRecCuts->AddToOutput(fCommonHistList);
- if(genTracks) fQATrackHistosGen->AddToOutput(fCommonHistList);
-
- fQAJetHistosRec->AddToOutput(fCommonHistList);
- fQAJetHistosRecCuts->AddToOutput(fCommonHistList);
- fQAJetHistosRecCutsLeading->AddToOutput(fCommonHistList);
- if(recJetsEff) fQAJetHistosRecEffLeading->AddToOutput(fCommonHistList);
-
- if(genJets){
- fQAJetHistosGen->AddToOutput(fCommonHistList);
- fQAJetHistosGenLeading->AddToOutput(fCommonHistList);
+
+ // QA
+ if(fQAMode){
+ if(fQAMode&1){ // track QA
+ fQATrackHistosRec->AddToOutput(fCommonHistList);
+ fQATrackHistosRecCuts->AddToOutput(fCommonHistList);
+ if(genTracks) fQATrackHistosGen->AddToOutput(fCommonHistList);
}
- fCommonHistList->Add(fh1EvtMult);
- fCommonHistList->Add(fh1nRecJetsCuts);
- if(genJets) fCommonHistList->Add(fh1nGenJets);
- if(fBckgMode && (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters)) {
- fCommonHistList->Add(fh1nRecBckgJetsCuts);
- if(genJets) fCommonHistList->Add(fh1nGenBckgJets);
+ if(fQAMode&2){ // jet QA
+ fQAJetHistosRec->AddToOutput(fCommonHistList);
+ fQAJetHistosRecCuts->AddToOutput(fCommonHistList);
+ fQAJetHistosRecCutsLeading->AddToOutput(fCommonHistList);
+ if(recJetsEff && fEffMode) fQAJetHistosRecEffLeading->AddToOutput(fCommonHistList);
+ if(genJets){
+ fQAJetHistosGen->AddToOutput(fCommonHistList);
+ fQAJetHistosGenLeading->AddToOutput(fCommonHistList);
+ }
}
}
- if(saveLevel>2){
- fCommonHistList->Add(fh1VertexNContributors);
- fCommonHistList->Add(fh1VertexZ);
+
+ if(fBckgMode && (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters)) {
+ fCommonHistList->Add(fh1nRecBckgJetsCuts);
+ if(genJets) fCommonHistList->Add(fh1nGenBckgJets);
}
- if(saveLevel>3){
- if(fIJMode){
- fIJHistosRecCuts->AddToOutput(fCommonHistList);
- fIJHistosRecLeading->AddToOutput(fCommonHistList);
- fIJHistosRecLeadingTrack->AddToOutput(fCommonHistList);
+
+ // 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){
- fIJBckgHisto0RecCuts->AddToOutput(fCommonHistList);
- fIJBckgHisto0RecLeading->AddToOutput(fCommonHistList);
- fIJBckgHisto1RecCuts->AddToOutput(fCommonHistList);
- fIJBckgHisto1RecLeading->AddToOutput(fCommonHistList);
- fIJBckgHisto2RecCuts->AddToOutput(fCommonHistList);
- fIJBckgHisto2RecLeading->AddToOutput(fCommonHistList);
+ 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){
- 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);
- }
- }
- }
- }
- if(saveLevel>4){
- fFFDiJetHistosRecCuts->AddToOutput(fCommonHistList);
- fFFDiJetHistosRecLeading->AddToOutput(fCommonHistList);
- fFFDiJetHistosRecLeadingTrack->AddToOutput(fCommonHistList);
- fQADiJetHistosRecCuts->AddToOutput(fCommonHistList);
-
- if(genJets && genTracks){
- fFFDiJetHistosGen->AddToOutput(fCommonHistList);
+ fFFDiJetHistosGen->AddToOutput(fCommonHistList);
fFFDiJetHistosGenLeading->AddToOutput(fCommonHistList);
fFFDiJetHistosGenLeadingTrack->AddToOutput(fCommonHistList);
- fQADiJetHistosGen->AddToOutput(fCommonHistList);
- }
-
- if(recJetsEff && genTracks){
+ }
+ } // 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);
+ fCommonHistList->Add(fhnResponseSinglePt);
+ }
+ if(fFFMode){
fFFHistosRecEffGen->AddToOutput(fCommonHistList);
fFFHistosRecEffRec->AddToOutput(fCommonHistList);
- fCommonHistList->Add(fh1nRecEffJets);
- fCommonHistList->Add(fh2PtRecVsGenPrim);
+ fCommonHistList->Add(fhnResponseJetTrackPt);
+ fCommonHistList->Add(fhnResponseJetZ);
+ fCommonHistList->Add(fhnResponseJetXi);
}
+ fCommonHistList->Add(fh1nRecEffJets);
+ fCommonHistList->Add(fh2PtRecVsGenPrim);
}
+
// =========== Switch on Sumw2 for all histos ===========
for (Int_t i=0; i<fCommonHistList->GetEntries(); ++i){
TH1 *h1 = dynamic_cast<TH1*>(fCommonHistList->At(i));
if (h1) h1->Sumw2();
-// else{
-// THnSparse *hnSparse = dynamic_cast<THnSparse*>(fCommonHistList->At(i));
-// if(hnSparse) hnSparse->Sumw2();
-// }
+ else{
+ THnSparse *hnSparse = dynamic_cast<THnSparse*>(fCommonHistList->At(i));
+ if(hnSparse) hnSparse->Sumw2();
+ }
}
TH1::AddDirectory(oldStatus);
AliInputEventHandler* inputHandler = (AliInputEventHandler*)
((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
- if(inputHandler->IsEventSelected() & AliVEvent::kMB){
- if(fDebug > 1) Printf(" Trigger Selection: event ACCEPTED ... ");
- fh1EvtSelection->Fill(1.);
- } else {
- fh1EvtSelection->Fill(0.);
+ 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;
return;
}
-
- // event selection (vertex) *****************************************
-
+ // event selection **************************************************
+ // *** event class ***
+ Double_t centPercent = -1;
+ if(fEventClass>0){
+ Int_t cl = 0;
+ if(handler->InheritsFrom("AliAODInputHandler")){
+ // since it is not supported by the helper task define own classes
+ centPercent = fAOD->GetHeader()->GetCentrality();
+ cl = 1;
+ if(centPercent>10) cl = 2;
+ if(centPercent>30) cl = 3;
+ if(centPercent>50) cl = 4;
+ }
+ else {
+ cl = AliAnalysisHelperJetTasks::EventClass();
+ }
+
+ if(cl!=fEventClass){
+ // event not in selected event class, reject event
+ if (fDebug > 1) Printf("%s:%d event not in selected event class: event REJECTED ...",(char*)__FILE__,__LINE__);
+ fh1EvtSelection->Fill(2.);
+ PostData(1, fCommonHistList);
+ return;
+ }
+ }
+
+ // *** vertex cut ***
AliAODVertex* primVtx = fAOD->GetPrimaryVertex();
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__);
- fh1EvtSelection->Fill(2.);
+ fh1EvtSelection->Fill(3.);
PostData(1, fCommonHistList);
return;
}
-
+
fh1VertexZ->Fill(primVtx->GetZ());
- if(TMath::Abs(primVtx->GetZ())>10){
+ if(TMath::Abs(primVtx->GetZ())>fMaxVertexZ){
if (fDebug > 1) Printf("%s:%d primary vertex z = %f: event REJECTED...",(char*)__FILE__,__LINE__,primVtx->GetZ());
- fh1EvtSelection->Fill(3.);
+ fh1EvtSelection->Fill(4.);
PostData(1, fCommonHistList);
return;
}
-
+
TString primVtxName(primVtx->GetName());
if(primVtxName.CompareTo("TPCVertex",TString::kIgnoreCase) == 1){
if (fDebug > 1) Printf("%s:%d primary vertex selection: TPC vertex, event REJECTED...",(char*)__FILE__,__LINE__);
- fh1EvtSelection->Fill(4.);
+ fh1EvtSelection->Fill(5.);
PostData(1, fCommonHistList);
return;
}
- if (fDebug > 1) Printf("%s:%d primary vertex selection: event ACCEPTED ...",(char*)__FILE__,__LINE__);
- fh1EvtSelection->Fill(5.);
+
+ if (fDebug > 1) Printf("%s:%d event ACCEPTED ...",(char*)__FILE__,__LINE__);
+ fh1EvtSelection->Fill(0.);
+ fh1EvtCent->Fill(centPercent);
//___ get MC information __________________________________________________________________
//____ fetch background jets ___________________________________________________
if(fBckgMode && (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters)){
- Int_t nBJ = GetListOfBckgJets(fBckgJetsRec, kJetsRec);
+ Int_t nBJ = GetListOfBckgJets(/*fBckgJetsRec, kJetsRec*/);
Int_t nRecBckgJets = 0;
if(nBJ>=0) nRecBckgJets = fBckgJetsRec->GetEntries();
if(fDebug>2)Printf("%s:%d Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
if(nBJ != nRecBckgJets) Printf("%s:%d Mismatch Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
- Int_t nBJCuts = GetListOfBckgJets(fBckgJetsRecCuts, kJetsRecAcceptance);
+ Int_t nBJCuts = GetListOfBckgJets(/*fBckgJetsRecCuts, kJetsRecAcceptance*/);
Int_t nRecBckgJetsCuts = 0;
if(nBJCuts>=0) nRecBckgJetsCuts = fBckgJetsRecCuts->GetEntries();
if(fDebug>2)Printf("%s:%d Selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
fh1nRecBckgJetsCuts->Fill(nRecBckgJetsCuts);
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);
+ Int_t nBJGen = GetListOfBckgJets(/*fBckgJetsGen, fJetTypeGen*/);
Int_t nGenBckgJets = 0;
if(nBJGen>=0) nGenBckgJets = fBckgJetsGen->GetEntries();
if(fDebug>2)Printf("%s:%d Selected Gen background jets: %d %d",(char*)__FILE__,__LINE__,nBJGen,nGenBckgJets);
fh1EvtMult->Fill(nRecPartCuts);
+
Int_t nTGen = GetListOfTracks(fTracksGen,fTrackTypeGen);
Int_t nGenPart = 0;
if(nTGen>=0) nGenPart = fTracksGen->GetEntries();
//____ analysis, fill histos ___________________________________________________
- // loop over tracks
-
- for(Int_t it=0; it<nRecPart; ++it){
- AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRec->At(it));
- fQATrackHistosRec->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
- }
- for(Int_t it=0; it<nRecPartCuts; ++it){
- AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRecCuts->At(it));
- fQATrackHistosRecCuts->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
- }
- for(Int_t it=0; it<nGenPart; ++it){
- AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksGen->At(it));
- fQATrackHistosGen->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
- }
-
- // loop over jets
-
- for(Int_t ij=0; ij<nRecJets; ++ij){
+ if(fQAMode){
+ // loop over tracks
+ if(fQAMode&1){
+ for(Int_t it=0; it<nRecPart; ++it){
+ AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRec->At(it));
+ fQATrackHistosRec->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
+ }
+ for(Int_t it=0; it<nRecPartCuts; ++it){
+ AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRecCuts->At(it));
+ fQATrackHistosRecCuts->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
+ }
+ for(Int_t it=0; it<nGenPart; ++it){
+ AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksGen->At(it));
+ fQATrackHistosGen->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
+ }
+ }
- AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRec->At(ij));
- fQAJetHistosRec->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
+ // loop over jets
+
+ if(fQAMode&2){
+ for(Int_t ij=0; ij<nRecJets; ++ij){
+ AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRec->At(ij));
+ fQAJetHistosRec->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
+ }
+ }
}
-
- for(Int_t ij=0; ij<nRecJetsCuts; ++ij){
-
- AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(ij));
- fQAJetHistosRecCuts->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
- if(ij==0){ // leading jet
+ if(fQAMode || fFFMode || fIJMode || fPhiCorrMode){
+ for(Int_t ij=0; ij<nRecJetsCuts; ++ij){
- fQAJetHistosRecCutsLeading->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(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt);
- }
+ AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(ij));
+ if(fQAMode&2) fQAJetHistosRecCuts->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
- for(Int_t it=0; it<jettracklist->GetSize(); ++it){
-
- AliVParticle* trackVP = dynamic_cast<AliVParticle*>(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(ij==0){ // leading jet
- fFFHistosRecCuts->FillFF( trackPt, jetPt, incrementJetPt);
- if(fIJMode) fIJHistosRecCuts->FillIntraJet( trackV, jet->MomentumVector() );
+ if(fQAMode&2) fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );
- if(it==0){ // leading track
- leadTrackPt = trackPt;
- leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
-
- fFFHistosRecLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE);
- if(fIJMode) fIJHistosRecLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
+ TList* jettracklist = new TList();
+ Double_t sumPt = 0.;
+ Float_t leadTrackPt = 0.;
+ TLorentzVector* leadTrackV = new TLorentzVector();
+
+ if(GetFFRadius()<=0){
+ GetJetTracksTrackrefs(jettracklist, jet);
+ } else {
+ GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt);
}
- fFFHistosRecLeading->FillFF( trackPt, leadTrackPt , incrementJetPt);
- if(fIJMode) fIJHistosRecLeading->FillIntraJet( trackV, leadTrackV );
-
- delete trackV;
- }
-
+
+ for(Int_t it=0; it<jettracklist->GetSize(); ++it){
+
+ AliVParticle* trackVP = dynamic_cast<AliVParticle*>(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) 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 );
+
+ delete trackV;
+ }
+
// 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);
- } // end if(fBckgMode)
-
- delete leadTrackV;
- delete jettracklist;
- }
- }
-
- // generated jets
-
- for(Int_t ij=0; ij<nGenJets; ++ij){
+ 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);
+ } // end if(fBckgMode)
+
+ delete leadTrackV;
+ delete jettracklist;
- AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));
- fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
+ // phi correlation
+ if(fPhiCorrMode){
+ for(Int_t it=0; it<nRecPartCuts; ++it){
+ AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRecCuts->At(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
+
+ } // end: leading jet
+ } // end: rec. jets after cuts
- if(ij==0){ // leading jet
-
- fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
+ // generated jets
+ for(Int_t ij=0; ij<nGenJets; ++ij){
- 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);
- }
+ AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));
+ if(fQAMode&2) fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
- for(Int_t it=0; it<jettracklist->GetSize(); ++it){
-
- AliVParticle* trackVP = dynamic_cast<AliVParticle*>(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();
+ if(ij==0){ // leading jet
- Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
+ if(fQAMode&2) fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
- fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt );
- if(fIJMode) fIJHistosGen->FillIntraJet( trackV, jet->MomentumVector() );
+ TList* jettracklist = new TList();
+ Double_t sumPt = 0.;
+ Float_t leadTrackPt = 0.;
+ TLorentzVector* leadTrackV = new TLorentzVector();
- if(it==0){ // leading track
- leadTrackPt = trackPt;
- leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
-
- fFFHistosGenLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE );
- if(fIJMode) fIJHistosGenLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
+ if(GetFFRadius()<=0){
+ GetJetTracksTrackrefs(jettracklist, jet);
+ } else {
+ GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt);
}
- fFFHistosGenLeading->FillFF( trackPt, leadTrackPt, incrementJetPt );
- if(fIJMode) fIJHistosGenLeading->FillIntraJet( trackV, leadTrackV );
-
- delete trackV;
+
+ for(Int_t it=0; it<jettracklist->GetSize(); ++it){
+
+ AliVParticle* trackVP = dynamic_cast<AliVParticle*>(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;
+ }
+
+ delete leadTrackV;
+ delete jettracklist;
}
-
- delete leadTrackV;
- delete jettracklist;
}
- }
+ } // end: QA, FF and intra-jet
//_______ DiJet part _____________________________________________________
-
- if (nRecJetsCuts > 1)
- {
-
- AliAODJet* jet1 = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(0));
- AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(1));
-
- // DiJet deltaphi calculation
- Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
- Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
- Double_t deltaPhi = TMath::Abs(phi1-phi2);
- if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
-
- // DiJet CDF cut calculation
- Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
- Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
- Double_t sumEt = et1 + et2;
- Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
- Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
-
- // DiJet events selection
- Bool_t positionCut = 0;
- Bool_t positionEnergyCut = 0;
- Bool_t cdfCut = 0;
-
- // Position cut :
- if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
- // Position-Energy cut :
- if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
- // CDF cut :
- if (ratio < fDiJetCDFCut) cdfCut = 1;
-
- Int_t go = 0;
-
- if (fDiJetCut == 1 && positionCut == 1) go = 1;
- if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
- if (fDiJetCut == 3 && cdfCut == 1) go = 1;
-
- if (go)
+ if(fDJMode){
+ if (nRecJetsCuts > 1)
{
- Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
- Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
- Double_t meanEt = (Double_t)((et1+et2)/2.);
- Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
+ AliAODJet* jet1 = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(0));
+ AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(1));
- Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
-
- if (jetBin > 0)
+ // DiJet deltaphi calculation
+ Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
+ Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
+ Double_t deltaPhi = TMath::Abs(phi1-phi2);
+ if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
+
+ // DiJet CDF cut calculation
+ Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
+ Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
+ Double_t sumEt = et1 + et2;
+ Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
+ Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
+
+ // DiJet events selection
+ Bool_t positionCut = 0;
+ Bool_t positionEnergyCut = 0;
+ Bool_t cdfCut = 0;
+
+ // Position cut :
+ if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
+ // Position-Energy cut :
+ if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
+ // CDF cut :
+ if (ratio < fDiJetCDFCut) cdfCut = 1;
+
+ Int_t go = 0;
+
+ if (fDiJetCut == 1 && positionCut == 1) go = 1;
+ if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
+ if (fDiJetCut == 3 && cdfCut == 1) go = 1;
+
+ if (go)
{
- fQADiJetHistosRecCuts->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, jetBin);
-
- TList* jettracklist1 = new TList();
- Double_t sumPt1 = 0.;
- Float_t leadTrackPt1 = 0;
+ 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);
- TList* jettracklist2 = new TList();
- Double_t sumPt2 = 0.;
- Float_t leadTrackPt2 = 0;
+ Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
- if(GetFFRadius()<=0)
+ if (jetBin > 0)
{
- GetJetTracksTrackrefs(jettracklist1, jet1);
- GetJetTracksTrackrefs(jettracklist2, jet2);
- }
- else
- {
- GetJetTracksPointing(fTracksRecCuts, jettracklist1, jet1, GetFFRadius(), sumPt1);
- GetJetTracksPointing(fTracksRecCuts, jettracklist2, jet2, GetFFRadius(), sumPt2);
- }
+ 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; it<nTracks; ++it)
+ {
+ if (it < jettracklist1->GetSize())
+ {
+ Float_t trackPt1 = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)))->Pt();
+ 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 = (dynamic_cast<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<AliAODJet*>(fJetsGen->At(0));
+ AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsGen->At(1));
+
+ Double_t deltaPhi = 0;
+ Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
+ Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
+ deltaPhi = TMath::Abs(phi1-phi2);
+ if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
+
+ Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
+ Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
+ Double_t sumEt = et1 + et2;
+ Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
+ Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
+
+ // DiJet events selection
+ Bool_t positionCut = 0;
+ Bool_t positionEnergyCut = 0;
+ Bool_t cdfCut = 0;
+
+ // Position cut :
+ if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
+ // Position-Energy cut :
+ if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
+ // CDF cut :
+ if (ratio < fDiJetCDFCut) cdfCut = 1;
+
+ Int_t go = 0;
+
+ if (fDiJetCut == 1 && positionCut == 1) go = 1;
+ if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
+ if (fDiJetCut == 3 && cdfCut == 1) go = 1;
+
+ 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);
- Int_t nTracks = jettracklist1->GetSize();
- if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
+ Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
- for(Int_t it=0; it<nTracks; ++it)
+ if(jetBin > 0)
{
- if (it < jettracklist1->GetSize())
- {
- Float_t trackPt1 = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)))->Pt();
- 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(fDJMode&2) fQADiJetHistosGen->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, inbal, jetBin);
- if (it < jettracklist2->GetSize())
- {
- Float_t trackPt2 = (dynamic_cast<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<AliAODJet*>(fJetsGen->At(0));
- AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsGen->At(1));
-
- Double_t deltaPhi = 0;
- Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
- Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
- deltaPhi = TMath::Abs(phi1-phi2);
- if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
-
- Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
- Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
- Double_t sumEt = et1 + et2;
- Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
- Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
-
- // DiJet events selection
- Bool_t positionCut = 0;
- Bool_t positionEnergyCut = 0;
- Bool_t cdfCut = 0;
-
- // Position cut :
- if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
- // Position-Energy cut :
- if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
- // CDF cut :
- if (ratio < fDiJetCDFCut) cdfCut = 1;
-
- Int_t go = 0;
-
- if (fDiJetCut == 1 && positionCut == 1) go = 1;
- if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
- if (fDiJetCut == 3 && cdfCut == 1) go = 1;
-
- if (go)
- {
- Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
- Double_t deltaPt = TMath::Abs(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)
- {
- fQADiJetHistosGen->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, jetBin);
-
- 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; it<nTracks; ++it)
- {
- if (it < jettracklist1->GetSize())
- {
- Float_t trackPt1 = (dynamic_cast<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 = (dynamic_cast<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(nGenJets > 1)
-
+ 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; it<nTracks; ++it)
+ {
+ if (it < jettracklist1->GetSize())
+ {
+ Float_t trackPt1 = (dynamic_cast<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 = (dynamic_cast<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(nGenJets > 1)
+ } // end: di-jet
// ____ efficiency _______________________________
- if(fJetTypeRecEff != kJetsUndef){
+ if(fEffMode && (fJetTypeRecEff != kJetsUndef)){
// arrays for generated particles: reconstructed AOD track index, isPrimary flag, are initialized in AssociateGenRec(...) function
TArrayI indexAODTr;
AssociateGenRec(fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,indexMCTr,isGenPrim);
// single track eff
- FillSingleTrackRecEffHisto(fQATrackHistosRecEffGen,fQATrackHistosRecEffRec,fTracksAODMCCharged,indexAODTr,isGenPrim);
+ if(fQAMode&1) FillSingleTrackRecEffHisto(fQATrackHistosRecEffGen,fQATrackHistosRecEffRec,fTracksAODMCCharged,indexAODTr,isGenPrim);
+ if(fQAMode&1) FillSingleTrackResponse(fhnResponseSinglePt,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim);
+
// jet track eff
Double_t jetEta = jet->Eta();
Double_t jetPhi = TVector2::Phi_0_2pi(jet->Phi());
- fQAJetHistosRecEffLeading->FillJetQA( jetEta, jetPhi, sumPtGenLeadingJetRecEff );
+ if(fQAMode&2) fQAJetHistosRecEffLeading->FillJetQA( jetEta, jetPhi, sumPtGenLeadingJetRecEff );
+
+ if(fFFMode) FillJetTrackRecEffHisto(fFFHistosRecEffGen,fFFHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
+ jettracklistGen,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
+
+ if(fFFMode) FillJetTrackResponse(fhnResponseJetTrackPt,fhnResponseJetZ,fhnResponseJetXi,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
+ jettracklistGen,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
- FillJetTrackRecEffHisto(fFFHistosRecEffGen,fFFHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
- jettracklistGen,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
-
delete jettracklistGen;
delete jettracklistRec;
}
TList* perpjettracklistGen = new TList();
Double_t sumPtGen = 0.;
- GetOutPerpJetTracks(fTracksGen, perpjettracklistGen, jet, GetFFBckgRadius() , sumPtGen); // for efficiency: gen tracks perp to gen/rec jet
+ GetTracksTiltedwrpJetAxis(TMath::Pi()/2.,fTracksGen, perpjettracklistGen, jet, GetFFBckgRadius() , sumPtGen); // for efficiency: gen tracks perp to gen/rec jet
// here could be your histos !!!
// FillJetTrackRecEffHisto(fFFBckgrPerpHistosRecEffGen,fFFBckgrPerpHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,perpjettracklistGen,
TList* outjettracklistGen = new TList();
Double_t sumPtGen = 0.;
- GetOutNJetsTracks(nCases, fTracksGen, outjettracklistGen, fJetsRecEff, sumPtGen); // for efficiency: gen tracks outide n gen/rec jets
+ GetTracksOutOfNJets(nCases, fTracksGen, outjettracklistGen, fJetsRecEff, sumPtGen); // for efficiency: gen tracks outide n gen/rec jets
// here could be your histos !!!
// FillJetTrackRecEffHisto(fFFBckgrOutHistosRecEffGen,fFFBckgrOutHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
return -1;
}
+ if(!fAOD->GetTracks()) return 0;
+
if(type==kTrackUndef) return 0;
Int_t iCount = 0;
Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t type)
{
// fill list of jets selected according to type
-
+
if(!list){
if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
return -1;
}
TClonesArray *aodRecJets = 0;
- if(fBranchRecJets.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchRecJets.Data()));\r
- if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAOD->GetList()->FindObject(fBranchRecJets.Data()));\r
+ if(fBranchRecJets.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchRecJets.Data()));
+ if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAOD->GetList()->FindObject(fBranchRecJets.Data()));
if(!aodRecJets){
if(fBranchRecJets.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchRecJets.Data());
return 0;
}
+ // Reorder jet pt and fill new temporary AliAODJet objects
Int_t nRecJets = 0;
for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){
AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));
if(!tmp) continue;
-
+
if( tmp->Pt() < fJetPtCut ) continue;
if( type == kJetsRecAcceptance &&
( tmp->Eta() < fJetEtaMin
|| tmp->Eta() > fJetEtaMax
|| tmp->Phi() < fJetPhiMin
|| tmp->Phi() > fJetPhiMax )) continue;
-
- list->Add(tmp);
-
- nRecJets++;
- }
- list->Sort();
+ if(!fBranchRecJets.Contains("UA1") &&
+ fBranchRecJets.Contains("KT")) {
+
+ AliAODJet *tmpJet = GetAODBckgSubJet(tmp, fBckgSubMethod);
+
+ if(!tmpJet) continue;
+ list->Add(tmpJet);
+
+ nRecJets++;
+ }
+ else {
+ list->Add(tmp);
+
+ nRecJets++;
+ }
+ }
+
+ list->Sort();
+
return nRecJets;
}
else if(type == kJetsKine || type == kJetsKineAcceptance){
|| jet->Phi() < fJetPhiMin
|| jet->Phi() > fJetPhiMax )) continue;
- list->Add(jet);
- nGenJets++;
+ list->Add(jet);
+ nGenJets++;
}
list->Sort();
return nGenJets;
}
TClonesArray *aodGenJets = 0;
- if(fBranchGenJets.Length()) aodGenJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchGenJets.Data()));\r
- if(!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAOD->GetList()->FindObject(fBranchGenJets.Data()));\r
+ if(fBranchGenJets.Length()) aodGenJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchGenJets.Data()));
+ if(!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAOD->GetList()->FindObject(fBranchGenJets.Data()));
if(!aodGenJets){
if(fDebug>0){
|| tmp->Phi() < fJetPhiMin
|| tmp->Phi() > fJetPhiMax )) continue;
- list->Add(tmp);
-
- nGenJets++;
+ list->Add(tmp);
+ nGenJets++;
}
list->Sort();
return nGenJets;
}
// _______________________________________________________________________________
-Int_t AliAnalysisTaskFragmentationFunction::GetListOfBckgJets(TList *list, Int_t type)
+Int_t AliAnalysisTaskFragmentationFunction::GetListOfBckgJets(/*TList *list, Int_t type*/) const
{
- // fill list of jets selected according to type
+ // fill list of jets selected according to type
- /*
- Under construction
- */
+// /*
+// Under construction
+// */
return 0;
-}
-
-// // _________________________________________________________________________________________________________
-// void AliAnalysisTaskFragmentationFunction::SetProperties(THnSparse* h,const Int_t dim, const char** labels)
-// {
-// //Set properties of THnSparse
+}
-// for(Int_t i=0; i<dim; i++){
+// _________________________________________________________________________________________________________
+void AliAnalysisTaskFragmentationFunction::SetProperties(THnSparse* h,const Int_t dim, const char** labels)
+{
+ // Set properties of THnSparse
-// h->GetAxis(i)->SetTitle(labels[i]);
-// h->GetAxis(i)->SetTitleColor(1);
-// }
-// }
+ for(Int_t i=0; i<dim; i++){
+ h->GetAxis(i)->SetTitle(labels[i]);
+ h->GetAxis(i)->SetTitleColor(1);
+ }
+}
// __________________________________________________________________________________________
void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y)
Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
// apply same acc & pt cuts as for FF
- // could in principle also be done setting THNsparse axis limits before projecting,
- // but then the binning needs to be fine grained enough
if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
// ______________________________________________________________________________________________________________________________________________________
void AliAnalysisTaskFragmentationFunction::FillJetTrackRecEffHisto(TObject* histGen, TObject* histRec, Double_t jetPtGen, Double_t jetPtRec, TList* jetTrackList,
- TList* tracksGen, const TArrayI& indexAODTr, const TArrayS& isGenPrim, const Bool_t useRecJetPt)
+ const TList* tracksGen, const TArrayI& indexAODTr, const TArrayS& isGenPrim, const Bool_t useRecJetPt)
{
// fill objects for jet track reconstruction efficiency
+ // arguments histGen/histRec can be of different type: AliFragFuncHistos*, AliFragFuncIntraJetHistos*, ...
Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks
}
}
-// ________________________________________________________________________________________________________________________________________________________
-void AliAnalysisTaskFragmentationFunction::GetOutPerpJetTracks(TList* inputlist, TList* outputlist, AliAODJet* jet, Double_t radius,Double_t& sumPt)
+
+// _____________________________________________________________________________________________________________________________________________
+void AliAnalysisTaskFragmentationFunction::FillSingleTrackResponse(THnSparse* hnResponse, TList* tracksGen, TList* tracksRec,
+ const TArrayI& indexAODTr, const TArrayS& isGenPrim)
+{
+ // fill response matrix for single tracks
+
+
+ Int_t nTracksGen = tracksGen->GetSize();
+
+ if(!nTracksGen) return;
+
+ for(Int_t iGen=0; iGen<nTracksGen; iGen++){
+
+ if(isGenPrim[iGen] != 1) continue; // select primaries
+
+ AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
+
+ 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<AliAODTrack*>(tracksRec->At(iRec));
+ Double_t ptRec = rectrack->Pt();
+
+ Double_t entries[2] = {ptRec,ptGen}; // AliCorrFW convention: gen vs rec
+ hnResponse->Fill(entries);
+ }
+ }
+}
+
+
+// ______________________________________________________________________________________________________________________________________________________
+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)
+{
+ // fill response matrix for tracks in jets
+
+ Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks
+
+ if(!nTracksJet) return;
+
+ for(Int_t iTr=0; iTr<nTracksJet; iTr++){
+
+ AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
+
+ // 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
+
+ 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 zGen = ptGen / jetPtGen;
+ 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
+
+ if(iRec>=0){
+
+ AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
+ Double_t ptRec = rectrack->Pt();
+
+ Double_t zRec = ptRec / jetPtGen;
+ Double_t xiRec = 0;
+ if(zRec>0) xiRec = TMath::Log(1/zRec);
+
+ Double_t jetPt = useRecJetPt ? jetPtRec : jetPtGen;
+
+ 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};
+
+ hnResponsePt->Fill(entriesPt);
+ hnResponseZ->Fill(entriesZ);
+ hnResponseXi->Fill(entriesXi);
+ }
+ }
+}
+
+// _____________________________________________________________________________________________________________________________________________________________________
+void AliAnalysisTaskFragmentationFunction::GetTracksTiltedwrpJetAxis(Float_t alpha, TList* inputlist, TList* outputlist, AliAODJet* jet, Double_t radius,Double_t& sumPt)
{
// List of tracks in cone perpendicular to the jet azimuthal direction
TVector3 jet3mom(jetMom);
// Rotate phi and keep eta unchanged
- Double_t ptPerp = jet3mom.Pt();
- Double_t etaPerp = jet3mom.Eta();
- Double_t phiPerp = TVector2::Phi_0_2pi(jet3mom.Phi()) + TMath::Pi()/2;
- if(phiPerp > 2*TMath::Pi()) phiPerp = phiPerp - 2*TMath::Pi();
- TVector3 vPerp;
- vPerp.SetPtEtaPhi(ptPerp,etaPerp,phiPerp);
-
- // Take orthogonal vector to jet direction
- // TVector3 vPerp(jet3mom.Orthogonal());
+ Double_t etaTilted = jet3mom.Eta();
+ Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha;
+ if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi();
for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
track->PxPyPz(trackMom);
TVector3 track3mom(trackMom);
- Double_t dR = vPerp.DeltaR(track3mom);
+ Double_t deta = track3mom.Eta() - etaTilted;
+ Double_t dphi = TMath::Abs(track3mom.Phi() - phiTilted);
+ if (dphi > TMath::Pi()) dphi = 2. * TMath::Pi() - dphi;
+ Double_t dR = TMath::Sqrt(deta * deta + dphi * dphi);
+
if(dR<=radius){
outputlist->Add(track);
sumPt += track->Pt();
}
// ________________________________________________________________________________________________________________________________________________________
-void AliAnalysisTaskFragmentationFunction::GetOutNJetsTracks(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt)
+void AliAnalysisTaskFragmentationFunction::GetTracksTiltedwrpJetAxisWindow(Float_t alpha, TList* inputlist, TList* outputlist, AliAODJet* jet, Double_t radius,Double_t& sumPt,Double_t &normFactor)
+{
+ // List of tracks in cone perpendicular to the jet azimuthal direction
+
+ Double_t jetMom[3];
+ jet->PxPyPz(jetMom);
+
+ TVector3 jet3mom(jetMom);
+ // Rotate phi and keep eta unchanged
+ Double_t etaTilted = jet3mom.Eta();
+ Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha;
+ if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi();
+
+ for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++)
+ {
+ AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
+ Float_t trackEta = track->Eta();
+ Float_t trackPhi = track->Phi();
+
+ if( ( phiTilted-radius >= 0 ) || ( phiTilted+radius <= 2*TMath::Pi()))
+ {
+ if((trackPhi<=phiTilted+radius) &&
+ (trackPhi>=phiTilted-radius) &&
+ (trackEta<=fTrackEtaMax)&&(trackEta>=-fTrackEtaMin)) // 0.9 and - 0.9
+ {
+ outputlist->Add(track);
+ sumPt += track->Pt();
+ }
+ }
+ else if( phiTilted-radius < 0 )
+ {
+ if((( trackPhi < phiTilted+radius ) ||
+ ( trackPhi > 2*TMath::Pi()-(radius-phiTilted) )) &&
+ (( trackEta <= fTrackEtaMax ) && ( trackEta >= fTrackEtaMin )))
+ {
+ outputlist->Add(track);
+ sumPt += track->Pt();
+ }
+ }
+ else if( phiTilted+radius > 2*TMath::Pi() )
+ {
+ if((( trackPhi > phiTilted-radius ) ||
+ ( trackPhi > radius-2*TMath::Pi()-phiTilted )) &&
+ (( trackEta <= fTrackEtaMax ) && ( trackEta >= fTrackEtaMin )))
+ {
+ outputlist->Add(track);
+ sumPt += track->Pt();
+ }
+ }
+ }
+
+ // Jet area - Temporarily added should be modified with the proper jet area value
+ Float_t areaJet = CalcJetArea(etaTilted,radius);
+ Float_t areaTilted = 2*radius*(fTrackEtaMax-fTrackEtaMin);
+
+ normFactor = (Float_t) 1. / (areaJet / areaTilted);
+
+}
+
+
+// ________________________________________________________________________________________________________________________________________________________
+void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJets(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt)
{
// List of tracks outside cone around N jet axis
// Particles taken randomly
}
// ________________________________________________________________________________________________________________________________________________________
-void AliAnalysisTaskFragmentationFunction::GetOutNJetsTracksStat(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt, Double_t &normFactor)
+void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJetsStat(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt, Double_t &normFactor)
{
// List of tracks outside cone around N jet axis
// All particles taken + final scaling factor
}
// ______________________________________________________________________________________________________________________________________________________
-Float_t AliAnalysisTaskFragmentationFunction::CalcJetArea(Float_t etaJet, Float_t rc)
+Float_t AliAnalysisTaskFragmentationFunction::CalcJetArea(const Float_t etaJet, const Float_t rc) const
{
+ // calculate area of jet with eta etaJet and radius rc
Float_t detamax = etaJet + rc;
Float_t detamin = etaJet - rc;
Int_t nRecJetsCuts = fJetsRecCuts->GetEntries();
if(nRecJetsCuts>1) {
- GetOutNJetsTracks(2,inputtracklist, tracklistout2jets, inputjetlist, sumPtOut2Jets);
- GetOutNJetsTracksStat(2,inputtracklist, tracklistout2jetsStat, inputjetlist,sumPtOut2JetsStat, normFactor2Jets);
+ GetTracksOutOfNJets(2,inputtracklist, tracklistout2jets, inputjetlist, sumPtOut2Jets);
+ GetTracksOutOfNJetsStat(2,inputtracklist, tracklistout2jetsStat, inputjetlist,sumPtOut2JetsStat, normFactor2Jets);
+
}
if(nRecJetsCuts>2) {
- GetOutNJetsTracks(3,inputtracklist, tracklistout3jets, inputjetlist, sumPtOut3Jets);
- GetOutNJetsTracksStat(3,inputtracklist, tracklistout3jetsStat, inputjetlist, sumPtOut3JetsStat, normFactor3Jets);
+ GetTracksOutOfNJets(3,inputtracklist, tracklistout3jets, inputjetlist, sumPtOut3Jets);
+ GetTracksOutOfNJetsStat(3,inputtracklist, tracklistout3jetsStat, inputjetlist, sumPtOut3JetsStat, normFactor3Jets);
}
if(type==kBckgOutLJ || type==kBckgOutAJ)
{
TList* tracklistoutleading = new TList();
Double_t sumPtOutLeading = 0.;
- GetOutNJetsTracks(1,inputtracklist, tracklistoutleading, inputjetlist, sumPtOutLeading);
+ GetTracksOutOfNJets(1,inputtracklist, tracklistoutleading, inputjetlist, sumPtOutLeading);
if(type==kBckgOutLJ) fh1OutLeadingMult->Fill(tracklistoutleading->GetSize());
for(Int_t it=0; it<tracklistoutleading->GetSize(); ++it){
if(type==kBckgOutLJ)
{
- ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt);
+ if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt);
if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
- ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt);
+ if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt);
if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
// Fill track QA for background
- qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
+ if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
}
// All cases included
if(nRecJetsCuts==1 && type==kBckgOutAJ)
{
- ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
+ if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
- ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
+ if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
}
delete trackV;
Double_t sumPtOutLeadingStat = 0.;
Double_t normFactorLeading = 0.;
- GetOutNJetsTracksStat(1,inputtracklist, tracklistoutleadingStat, inputjetlist, sumPtOutLeadingStat, normFactorLeading);
+ GetTracksOutOfNJetsStat(1,inputtracklist, tracklistoutleadingStat, inputjetlist, sumPtOutLeadingStat, normFactorLeading);
for(Int_t it=0; it<tracklistoutleadingStat->GetSize(); ++it){
// Stat plots
if(type==kBckgOutLJStat)
{
- ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
+ if(fFFMode)ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading);
- ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
+ if(fFFMode)ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading);
// Fill track QA for background
- // qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
+ //if(fQAMode&1) qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
}
// All cases included
if(nRecJetsCuts==1 && type==kBckgOutAJStat)
{
- ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
+ if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading );
- ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
+ if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading );
}
delete trackV;
{
Double_t sumPtPerp = 0.;
TList* tracklistperp = new TList();
- GetOutPerpJetTracks(inputtracklist,tracklistperp,jet,GetFFRadius(),sumPtPerp);
+ GetTracksTiltedwrpJetAxis(TMath::Pi()/2., inputtracklist,tracklistperp,jet,GetFFRadius(),sumPtPerp);
fh1PerpMult->Fill(tracklistperp->GetSize());
for(Int_t it=0; it<tracklistperp->GetSize(); ++it){
Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
- ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
+ if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
- ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
+ if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
// Fill track QA for background
- qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
+ if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
delete trackV;
}
delete tracklistperp;
}
+ if(type==kBckgASide)
+ {
+ Double_t sumPtASide = 0.;
+ TList* tracklistaside = new TList();
+ GetTracksTiltedwrpJetAxis(TMath::Pi(),inputtracklist,tracklistaside,jet,GetFFRadius(),sumPtASide);
+ fh1ASideMult->Fill(tracklistaside->GetSize());
+
+ for(Int_t it=0; it<tracklistaside->GetSize(); ++it){
+
+ AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistaside->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) 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);
+
+ delete trackV;
+ }
+ delete tracklistaside;
+ }
+
+ if(type==kBckgASideWindow)
+ {
+ 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());
+
+ for(Int_t it=0; it<tracklistasidew->GetSize(); ++it){
+
+ AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistasidew->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) 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);
+
+ delete trackV;
+ }
+ delete tracklistasidew;
+ }
+
+ if(type==kBckgPerpWindow)
+ {
+ 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());
+
+ for(Int_t it=0; it<tracklistperpw->GetSize(); ++it){
+
+ AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistperpw->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) 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);
+
+ delete trackV;
+ }
+ delete tracklistperpw;
+ }
+
+
if(type==kBckgOut2J || type==kBckgOutAJ)
{
if(type==kBckgOut2J) fh1Out2JetsMult->Fill(tracklistout2jets->GetSize());
if(type==kBckgOut2J)
{
- ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
+ if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
- ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
+ if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
- qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
+ if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
}
// All cases included
if(nRecJetsCuts==2 && type==kBckgOutAJ)
{
- ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
+ if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
- ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
+ if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
}
delete trackV;
if(type==kBckgOut2JStat)
{
- ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
+ if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
- ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
+ if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
- // qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
+ //if(fQAMode&1) qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
}
// All cases included
if(nRecJetsCuts==2 && type==kBckgOutAJStat)
{
- ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
+ if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
- ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
+ if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
}
delete trackV;
if(type==kBckgOut3JStat)
{
- ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt,normFactor3Jets);
+ if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt,normFactor3Jets);
if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
- ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt,normFactor3Jets);
+ if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt,normFactor3Jets);
if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets);
- // qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
+ //if(fQAMode&1) qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
}
// All cases included
if(nRecJetsCuts==3 && type==kBckgOutAJStat)
{
- ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets );
+ if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets );
if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
- ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets );
+ if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets );
if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV,normFactor3Jets );
}
delete trackV;
delete tracklistout3jetsStat;
}
+
+// ______________________________________________________________________________________________________________________________________________________
+AliAODJet* AliAnalysisTaskFragmentationFunction::GetAODBckgSubJet(AliAODJet* jet, Int_t method)
+{
+ // correct jet pt for (mean bgr energy density) x (jet area)
+
+ static AliAODJetEventBackground* externalBackground = (AliAODJetEventBackground*)(fAOD->FindListObject(fBranchRecBackJets.Data()));
+
+ if(!externalBackground){
+ if(fDebug>0)Printf("%s:%d no such background branch %s",(char*)__FILE__,__LINE__,fBranchRecBackJets.Data());
+ return 0;
+ }
+
+ Float_t rho = externalBackground->GetBackground(method);
+
+ // Calculate background and subtract it from jet pt
+ Float_t ptBack = rho*jet->EffectiveAreaCharged();
+ Float_t ptSub = jet->Pt()-ptBack;
+
+ // 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());
+ }
+
+ return tmpJet;
+
+}
+
+