1 #ifndef ALIANALYSISTASKJETIPQA_H 2 #define ALIANALYSISTASKJETIPQA_H 20 class AliAODMCParticle;
25 class AliAnalysisUtils;
27 class AliTriggerAnalysis;
29 class AliOADBContainer;
31 class AliVertexerTracks;
42 #include "AliESDtrackCuts.h" 43 #include <TDatabasePDG.h> 55 enum ERejBits {
kNotSelTrigger,
kNoVertex,
kTooFewVtxContrib,
kVertexChi2NDF,
kZVtxOutFid,
kPileupSPD,
kOutsideCentrality,
kVertexZContrib,
kPhysicsSelection,
kNoContributors,
kDeltaVertexZ,
kNoVertexTracks,
kVertexZResolution,
kMVPileup,
kSPDClusterCut,
kZVtxSPDOutFid,
58 enum EParticleType {
bPi0=111,
bEta=221,
bEtaPrime=331,
bPhi=333,
bRho=113,
bOmega=223,
bSigma0=3212,
bK0s=310,
bLambda=3122,
bPi=211,
bProton=2212,
bKaon=321,
bOmegaBaryon=3334,
59 bAntiOmegaBaryon=-3334,
bXiBaryon=3312,
bAntiXiBaryon=-3312,
bD0=421,
bDPlus=411,
bDStarPlus=413,
bDSPlus=431,
bK0l=130,
bSigmaMinus = 3112,
bSigmaPlus = 3222,
bRhoPlus=213,
62 {
bIdxPi0=0,
bIdxEta=1,
bIdxEtaPrime=2,
bIdxPhi=3,
bIdxRho=4,
bIdxOmega=5,
bIdxK0s=6,
bIdxLambda=7,
bIdxPi=8,
bIdxProton=9,
bIdxKaon=10,
bIdxD0=11,
bIdxDPlus=12,
63 bIdxDStarPlus=13,
bIdxDSPlus=14,
bIdxLambdaC=15,
bIdxBPlus = 16,
bIdxB0 = 17,
bIdxLambdaB = 18,
bIdxBStarPlus=19,
bIdxK0S892=20,
bIdxK0S892plus=21,
bIdxOmegaBaryon=22,
bIdxXiBaryon=23,
bIdxK0l=24,
bIdxRest=25,
bIdxSigmaPlus=26,
bIdxSigmaMinus=27};
156 SJetIpPati(
Double_t v1,
Double_t v2,
Int_t isv0,
Bool_t c,
Int_t tl,
Double_t pt):
first(v1),
second(v2),
is_V0(isv0),
is_fromB(c),
trackLabel(tl),
trackpt(pt){}
166 SV0Daugh(): fPt(0), fEta(0), iCharge(0), iCrossedTPC(0), iNoTPCCluster(0), fDCAtoPV(0), bTPCRefitOn(kFALSE), bIsKink(kFALSE){}
176 void Reset() {memset(
this,0,
sizeof(*
this));}
183 fDCAV0DaughvsDaugh(0),
205 bIsCandidateK0s (kTRUE),
206 bIsCandidateLambda (kTRUE),
207 bIsCandidateALambda (kTRUE),
208 bIsInPeakK0s (kFALSE),
209 bIsInPeakLambda (kFALSE),
210 bIsInPeakALambda (kFALSE),
211 bIsInConeJet (kFALSE),
212 bIsInConePerp (kFALSE),
213 bIsInConeRnd (kFALSE),
214 bIsInConeMed (kFALSE),
215 bIsOutsideCones (kFALSE)
253 void Reset() {memset(
this,0,
sizeof(*
this)); bIsCandidateK0s=bIsCandidateLambda=bIsCandidateALambda=kTRUE;}
271 void localtoglobal(
double alpha,
double *local,
double *global);
280 int GetMCTruth(AliAODTrack *track,
int &motherpdg);
281 bool GetPIDCombined(AliAODTrack * track,
double *prob,
int &nDetectors,
UInt_t &usedDet , AliPID::EParticleType &MostProbablePID,
bool setTrackPID );
310 int GetV0MCVeto(
AliAODEvent* fAODIn, AliAODv0* v0,
bool bIsCandidateK0s,
bool bIsCandidateLambda,
bool bIsCandidateALambda);
332 TH1F *ChargedKaon,TH1F *Proton,TH1F *D0,TH1F *DPlus,TH1F *DStarPlus,
333 TH1F *DSPlus,TH1F *LambdaC,TH1F *BPlus,TH1F *B0,TH1F *LambdaB,TH1F *BStarPlus);
393 void DoTCTagging(
double jetpt,
bool* hasIPs,
double* ipval,
bool **kTagDec);
394 void DoProbTagging(
double probval,
double jetpt,
bool** kTagDec);
407 void FillProbThreshHists(
double proval,
double* ipval,
double jetpt,
int jetflavour,
bool* hasIPs,
bool** kTagDec);
409 double IntegrateIP(
int iJetPtBin,
int iIPBin,
int iN);
638 if(fIsMixSignalReady_n1)
return;
640 fIsMixSignalReady_n1 = kTRUE;
641 fIsSameEvent_n1 = kTRUE;
645 if(fIsMixSignalReady_n2)
return;
647 fIsMixSignalReady_n2 = kTRUE;
648 fIsSameEvent_n2 = kTRUE;
652 if(fIsMixSignalReady_n3)
return;
654 fIsMixSignalReady_n3 = kTRUE;
655 fIsSameEvent_n3 = kTRUE;
661 if (!fIsMixSignalReady_n1 || fIsSameEvent_n1)
return kFALSE;
663 fIsMixSignalReady_n1 = kFALSE;
666 if (!fIsMixSignalReady_n2|| fIsSameEvent_n2)
return kFALSE;
668 fIsMixSignalReady_n2 = kFALSE;
671 if (!fIsMixSignalReady_n3|| fIsSameEvent_n3)
return kFALSE;
673 fIsMixSignalReady_n3 = kFALSE;
Double_t GetTrackCurvature(AliAODTrack *track)
void SetHardCutoff(Double_t t)
void ReadThresholdHists(TString PathToThresholds, TString taskname, int nTCThresh)
void Print(std::ostream &o, const char *name, Double_t dT, Double_t dVM, Double_t alldT, Double_t alldVM)
std::vector< Double_t > fPSJet
Double_t GetLocalAlphaAOD(AliAODTrack *track)
void setfDoFlavourMatching(Bool_t value)
int DetermineUnsuitableVtxTracks(int *skipped, AliAODEvent *const aod, AliVTrack *const track)
AliVParticle * GetVParticleMother(AliVParticle *part)
GetVParticleMother.
Bool_t fIsMixSignalReady_n2
virtual void Terminate(Option_t *option="")
AliPIDResponse * fPidResponse
void setfNoJetConstituents(Int_t value)
void setTrackIPvsPtValues(double fav0cut, double fbv0cut, double fcv0cut)
void setFFillCorrelations(const Bool_t &value)
AliAODMCParticle * GetMCTrack(int iLabel)
Bool_t SetResFunctionPID(const char *filename)
SetResFunction.
bool IsFromElectron(AliAODTrack *track)
void setV0Cut(int iCut, double value)
void GetOutOfJetParticleComposition(AliEmcalJet *jet, int flavour)
Bool_t GetBMesonWeight(AliVParticle *mcpart, Int_t &pdg, Double_t &pT, Int_t &idx)
GetBMesonWeight.
Double_t fBackgroundFactorLinus[21][498]
void FillProbThreshHists(double proval, double *ipval, double jetpt, int jetflavour, bool *hasIPs, bool **kTagDec)
TGraph * fGeant3FlukaProton
void setFParam_Smear_Sigma(Double_t value)
TClonesArray * fV0CandidateArray
void setTCThresholdPtFixed(double value)
void setFParam_Smear_Mean(Double_t value)
Double_t GetPtCorrected(const AliEmcalJet *jet)
GetPtCorrected.
TTree * fCorrelationCrossCheck
std::vector< Double_t > fPCJet
TH2D * fh2dAnLamdaMassVsPt
Bool_t IsJetTaggedJetProb(double thresProb=0.90)
IsJetTaggedJetProb.
TH2D * GetHist2D(const char *name)
void SetMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Int_t matching=0)
SetMatchingLevel.
TGraph * fGeant3FlukaAntiProton
void FillCorrelations(bool bn[3], double v[3], double jetpt)
TH1D * fh1V0CounterCentLambda
number of K0s candidates after various cuts
int GetMCTruth(AliAODTrack *track, int &motherpdg)
THnSparse * fhnV0InJetALambda
Bool_t ParticleIsPossibleSource(Int_t pdg)
ParticleIsPossibleSource.
void GetV0Properties(SV0Cand *&sV0, AliAODv0 *&v0)
void setfDaughterRadius(Double_t value)
void SetTCThresholds(TObjArray **&threshs)
void SetMixDCA(int n, Double_t v)
THnSparse * fhnV0InJetK0s
iterative declustering
Bool_t GetImpactParameter(const AliAODTrack *track, const AliAODEvent *event, Double_t *dca, Double_t *cov, Double_t *XYZatDCA)
SubtractMean.
Bool_t IsEventAccepted(AliAODEvent *ev)
Bool_t IsSecondaryFromWeakDecay(AliVParticle *particle)
IsSecondaryFromWeakDecay.
void RecursiveParents(AliEmcalJet *fJet, AliJetContainer *fJetCont)
RecursiveParents.
Bool_t IsSelectionParticleMeson(AliVParticle *mcpart, Int_t &pdg, Double_t &pT, Int_t &idx)
IsSelectionParticleMeson.
void FillTrackIPvsPt(int isV0, double pt, double IP, int jetflavour)
TH1D * fh1V0CounterCentALambda
number of Lambda candidates after various cuts
void DoJetLoop()
DoJetLoop.
void SetJetRadius(Double_t fJetRadRead)
TH2D * fh2dKshortPtVsJetPtMC
Double_t fAnalysisCuts[27]
Bool_t IsTrackAccepted(AliVTrack *track, int jetflavour)
void GetV0MCTrueCandidates(AliAODEvent *fAODIn)
Bool_t FillTrackHistograms(AliVTrack *track, double *dca, double *cov, double weight)
void setDoMCEffs(Bool_t value)
void FillEfficiencyHists(bool **kTagDec, int jetflavour, double jetpt, bool hasIPs)
void FillParticleCompositionSpectra(AliEmcalJet *jet, const char *histname)
Bool_t IsPromptBMeson(AliVParticle *part)
IsPromptBMeson.
void SmearTrackHybrid(AliVTrack *track)
THistManager fHistManager
Histogram manager.
void setDoLundPlane(Bool_t dolundplane)
Double_t fParam_Smear_Sigma
Double_t GetValImpactParameter(TTypeImpPar type, Double_t *impar, Double_t *cov)
CalculateTrackImpactParameter.
vector< TString > sTemplateFlavour
Double_t fVertexRecalcMinPt
Int_t IsV0Daughter(const AliAODTrack *track)
std::vector< Double_t > fPUdsgJet
TH2D * fh2dLamdaPtVsJetPtMC
std::vector< Double_t > fPBJet
void setFDoUnderlyingEventSub(Bool_t value)
virtual ~AliAnalysisTaskHFJetIPQA()
double GetTrackProbability(double jetpt, bool *hasIPs, double *ipval)
void SelectV0Candidates(AliAODEvent *fAODIn)
Float_t fXsectionWeightingFactor
Bool_t IsParton(int pdg)
IsParton.
THnSparse * fhnV0InJetLambda
V0 in jet cones, in a centrality bin, m_V0; pt_V0; eta_V0; pt_jet.
TGraph * fGeant3FlukaKMinus
void SetDefaultAnalysisCuts()
SetDefaultAnalysisCuts.
AliEmcalJet * GetPerpendicularPseudoJet(AliEmcalJet *jet_in, bool rev)
void SetESDCuts(AliESDtrackCuts *cuts=NULL)
void FillRecHistograms(int jetflavour, double jetpt, double eta, double phi)
Cleanup.
std::map< int, int > daughtermother
Int_t fProductionNumberPtHard
void FillProbabilityHists(double jetpt, double probval, int jetflavour, bool **kTagDec)
virtual void UserCreateOutputObjects()
Bool_t GetImpactParameterWrtToJet(const AliAODTrack *track, const AliAODEvent *event, const AliEmcalJet *jet, Double_t *dca, Double_t *cov, Double_t *XYZatDCA, Double_t &jetsign, int jetflavour)
Bool_t IsParticleInCone(const AliVParticle *part, const AliEmcalJet *jet, Double_t dRMax)
TH2D * h2DLNProbDistsudsg
Bool_t IsDCAAccepted(double decaylength, double ipwrtjet, Double_t *dca, int jetflavour)
Bool_t fDoNotCheckIsPhysicalPrimary
void setDoNotCheckIsPhysicalPrimary(Bool_t value)
TGraph fResolutionFunction[200]
Bool_t IsJetTaggedTC(int n=0, double thres=0.1)
IsJetTaggedTC unused.
void SubtractMean(Double_t val[2], AliVTrack *track)
void FillTaggedJetPtDistribution(bool **kTagDec, double jetpt)
Bool_t IsSelectionParticleOmegaXiSigmaP(AliVParticle *mcpart, Int_t &pdg, Double_t &pT, Int_t &idx)
IsSelectionParticleOmegaXiSigmaP.
void setFProductionNumberPtHard(Int_t value=-1)
void SetFlukaFactor(TGraph *GraphOmega, TGraph *GraphXi, TGraph *K0Star, TGraph *Phi)
AliAnalysisTaskHFJetIPQA & operator=(const AliAnalysisTaskHFJetIPQA &)
TGraph * fGeant3FlukaAntiLambda
void SetUseMonteCarloWeighingLinus(TH1F *Pi0, TH1F *Eta, TH1F *EtaP, TH1F *Rho, TH1F *Phi, TH1F *Omega, TH1F *K0s, TH1F *Lambda, TH1F *ChargedPi, TH1F *ChargedKaon, TH1F *Proton, TH1F *D0, TH1F *DPlus, TH1F *DStarPlus, TH1F *DSPlus, TH1F *LambdaC, TH1F *BPlus, TH1F *B0, TH1F *LambdaB, TH1F *BStarPlus)
IsSelected.
Bool_t IsTruePrimary(AliVParticle *mcpart)
IsTruePrimary.
Bool_t getJetVtxMass(AliEmcalJet *jet, double &value)
bool GetPIDCombined(AliAODTrack *track, double *prob, int &nDetectors, UInt_t &usedDet, AliPID::EParticleType &MostProbablePID, bool setTrackPID)
Double_t getFVertexRecalcMinPt() const
std::vector< Double_t > fJetCont
Bool_t bIsCandidateALambda
void ReadProbvsIPLookup(TObjArray *&oLookup)
std::vector< TH1D * > h1DProbThresholds
void FillParticleCompositionEvent()
FillParticleCompositionEvent.
std::vector< TH1D * > h1DThresholdsSecond
void FillGenHistograms(int jetflavour, AliEmcalJet *jetgen)
void setDoTCTagging(Int_t value)
void FillCandidateJet(Int_t CutIndex, Int_t JetFlavor)
void FillTrackTypeResHists()
SJetIpPati(Double_t v1, Double_t v2, Int_t isv0, Bool_t c, Int_t tl, Double_t pt)
void IncHist(const char *name, Int_t bin)
IncHist.
Double_t fDaughtersRadius
double DoUESubtraction(AliJetContainer *&jetcongen, AliJetContainer *&jetconrec, AliEmcalJet *&jetrec, double jetpt)
AliExternalTrackParam GetExternalParamFromJet(const AliEmcalJet *jet, const AliAODEvent *event)
static Bool_t mysort(const SJetIpPati &i, const SJetIpPati &j)
mysort
Double_t GetMonteCarloCorrectionFactor(AliVTrack *track, Int_t &pCorr_indx, double &ppt)
GetMonteCarloCorrectionFactor.
AliAODVertex * fEventVertex
Double_t fParam_Smear_Mean
void setFMCglobalDCASmear(const Double_t value)
Bool_t MatchJetsGeometricDefault()
FillTrackingEfficiencyDCA.
double IntegrateIP(int iJetPtBin, int iIPBin, int iN)
void GetV0DaughProperties(SV0Daugh *&sTrack, AliAODv0 *&v0, bool isPos)
Bool_t fIsMixSignalReady_n3
Int_t fSelectPtHardBin
select one pt hard bin for analysis
Bool_t bIsCandidateLambda
Double_t fMCglobalDCASmear
Double_t GetWeightFactor(AliVTrack *mcpart, Int_t &pCorr_indx, double &ppt)
Composition correction factor getter.
THnSparse * fHLundIterative
Double_t GetLocalThetaAOD(AliAODTrack *track)
void GetMaxImpactParameterCutR(const AliVTrack *const track, Double_t &maximpactRcut)
TH2D * h2DProbDistsudsgV0
TGraph * fGeant3FlukaLambda
Int_t GetRunNr(AliVEvent *event)
void setfUserSignificance(Bool_t value)
void FillV0EfficiencyHists(int isV0, int &jetflavour, double jetpt, bool &isV0Jet)
std::vector< TH1D * > h1DThresholdsThird
Double_t getFMCglobalDCAxyShift() const
void GetGeometricalMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d) const
GetGeometricalMatchingLevel.
Enhanced TList-derived class that implements correct merging for pt_hard binned production.
void localtoglobal(double alpha, double *local, double *global)
Transforms local to global coordinates.
AliJetContainer * jetcongen
Bool_t IsSelectionParticle(AliVParticle *mcpart, Int_t &pdg, Double_t &pT, Int_t &idx)
IsSelectionParticle.
void FillHist(const char *name, Double_t x, Double_t w)
FillHist.
AliAODVertex * RemoveDaughtersFromPrimaryVtx(const AliVTrack *const track)
std::vector< TH1D * > h1DThresholdsFirst
void setDoProbTagging(Int_t value)
Bool_t IsSelectionParticleStrange(AliVParticle *mcpart, Int_t &pdg, Double_t &pT, Int_t &idx)
IsSelectionParticleStrange.
TH1D * GetHist1D(const char *name)
TH2D * fh2dAnLamdaPtVsJetPtMC
double fDCAV0DaughvsDaugh
TH2D * h2DLNProbDistsUnid
AliEmcalList * fOutput
!output list
AliJetContainer * jetconrec
void setTagLevel(int taglevel)
TH2D * h2DLNProbDistsudsgV0
TH1D * fh1V0CounterCentK0s
bool IsFromKaon(AliAODTrack *track)
void DoTCTagging(double jetpt, bool *hasIPs, double *ipval, bool **kTagDec)
void setFApplyV0Rec(Bool_t value)
void useTreeForCorrelations(Bool_t value)
Bool_t fDoFlavourMatching
Bool_t fUseTreeForCorrelations
void FillV0Candidates(Bool_t isK, Bool_t isL, Bool_t isAL, Int_t iCut)
Double_t fTCThresholdPtFixed
virtual void SetPtHardBin(Int_t b)
void setFRunSmearing(Bool_t value)
TH1 * AddHistogramm(const char *name, const char *title, Int_t x, Double_t xlow, Double_t xhigh, Int_t y=0, Double_t ylow=0, Double_t yhigh=0)
AddHistogramm.
Base task in the EMCAL jet framework.
bool IsFromProton(AliAODTrack *track)
virtual void UserExecOnce()
Task initializations handled in user tasks.
Represent a jet reconstructed using the EMCal jet framework.
Container class for histograms.
Bool_t fDoUnderlyingEventSub
void SmearTrack(AliAODTrack *track)
void FillIPTypePtHists(int jetflavour, double jetpt, bool *nTracks)
void setfNThresholds(Int_t value)
virtual Bool_t Run()
Run function. This is the core function of the analysis and contains the user code. Therefore users have to implement this function.
AliPIDCombined * fCombined
void ChangeDefaultCutTo(AliAnalysisTaskHFJetIPQA::bCuts cutname, Double_t newcutvalue)
ChangeDefaultCutTo.
int GetV0MCVeto(AliAODEvent *fAODIn, AliAODv0 *v0, bool bIsCandidateK0s, bool bIsCandidateLambda, bool bIsCandidateALambda)
std::vector< TH2D * > h2DProbLookup
Double_t fMCglobalDCAxyShift
void setDoJetProb(Bool_t value)
AliESDtrackCuts * fESDTrackCut
void setFMCglobalDCAxyShift(const Double_t &value)
void DoProbTagging(double probval, double jetpt, bool **kTagDec)
void SetProbThresholds(TObjArray **&threshs)
Bool_t GetMixDCA(int n, double &v)
Double_t GetPtCorrectedMC(const AliEmcalJet *jet)
GetPtCorrectedMC.
Bool_t IsPromptDMeson(AliVParticle *part)
IsPromptDMeson.
AliVertexerTracks * fVertexer
Bool_t IsSelectionParticleALICE(AliVParticle *mcpart, Int_t &pdg, Double_t &pT, Int_t &idx)
IsSelectionParticleALICE.
TH1D * fh1dTracksAccepeted
void setFDoMCCorrection(Bool_t value)
Int_t IsMCJetPartonFast(const AliEmcalJet *jet, Double_t radius, Bool_t &is_udg)
IsMCJetPartonFast.
Bool_t IsPhysicalPrimary(AliVParticle *part)
IsPhysicalPrimary.
Bool_t fIsMixSignalReady_n1
Container for jet within the EMCAL jet framework.
void setGlobalVertex(Bool_t value)
void setFVertexRecalcMinPt(const Double_t &value)
bool IsFromPion(AliAODTrack *track)
AliAnalysisTaskHFJetIPQA()
void FillIPTemplateHists(double jetpt, int iN, int jetflavour, double *params)
TH2D * fh2dKshortMassVsPt
number of ALambda candidates after various cuts