11 #include <TClonesArray.h>
13 #include <TLorentzVector.h>
16 #include "AliVParticle.h"
17 #include "AliVCluster.h"
18 #include "AliVEvent.h"
36 AliEmcalJet(Double_t pt, Double_t eta, Double_t phi, Double_t m);
41 std::ostream &
Print(std::ostream &in)
const;
44 Double_t
Px()
const {
return fPt*TMath::Cos(
fPhi); }
45 Double_t
Py()
const {
return fPt*TMath::Sin(
fPhi); }
46 Double_t
Pz()
const {
return fPt*TMath::SinH(
fEta); }
47 Double_t
Pt()
const {
return fPt; }
48 Double_t
P()
const {
return fPt*TMath::CosH(
fEta); }
49 Bool_t
PxPyPz(Double_t p[3])
const { p[0]=
Px();p[1]=
Py();p[2]=
Pz();
return 1; }
50 Double_t
Xv()
const {
return 0.; }
51 Double_t
Yv()
const {
return 0.; }
52 Double_t
Zv()
const {
return 0.; }
53 Bool_t
XvYvZv(Double_t x[3])
const { x[0]=0;x[1]=0;x[2]=0;
return 1; }
57 Double_t
Theta()
const {
return 2*TMath::ATan(TMath::Exp(-
fEta)); }
58 Double_t
E()
const { Double_t p=
P();
return TMath::Sqrt(
fM*
fM+p*p); }
59 Double_t
M()
const {
return fM; }
61 Double_t
Y()
const { Double_t e =
E(); Double_t pz =
Pz();
return 0.5*TMath::Log((e+pz)/(e-pz)); }
65 const Double_t *
PID()
const {
return 0; }
76 Int_t
Compare(
const TObject* obj)
const;
78 AliVCluster *
ClusterAt(Int_t idx, TClonesArray *ca)
const {
if (!ca)
return 0;
return dynamic_cast<AliVCluster*
>(ca->At(
ClusterAt(idx))); }
79 Int_t
ContainsCluster(AliVCluster* cluster, TClonesArray* clusters)
const {
return clusters==NULL||cluster==NULL ? 0 :
ContainsCluster(clusters->IndexOf(cluster)); }
88 Bool_t
IsMC()
const {
return (Bool_t)(
MCPt() > 0); }
93 UShort_t
Nn()
const {
return fNn; }
95 UShort_t
N()
const {
return Nch()+
Nn(); }
104 Double_t
PtSub(Double_t rho, Bool_t save = kFALSE);
105 Double_t
PtSubVect(Double_t rho, Bool_t save = kFALSE);
108 AliVParticle *
TrackAt(Int_t idx, TClonesArray *ta)
const {
if (!ta)
return 0;
return dynamic_cast<AliVParticle*
>(ta->At(
TrackAt(idx))); }
109 Int_t
ContainsTrack(AliVParticle* track, TClonesArray* tracks)
const {
return tracks==NULL||track==NULL ? 0 :
ContainsTrack(tracks->IndexOf(track)); }
119 Double_t
DeltaR(
const AliVParticle* part)
const;
120 Double_t
GetZ (
const Double_t trkPx,
const Double_t trkPy,
const Double_t trkPz )
const;
121 Double_t
GetZ (
const AliVParticle* trk )
const;
122 Double_t
GetXi (
const AliVParticle* trk )
const {
return TMath::Log ( 1/
GetZ (trk) ); }
123 Double_t
GetXi (
const Double_t trkPx,
const Double_t trkPy,
const Double_t trkPz )
const {
return TMath::Log ( 1/
GetZ (trkPx, trkPy, trkPz ) ); }
309 void AddGhost(
const Double_t dPx,
const Double_t dPy,
const Double_t dPz,
const Double_t dE) {
310 TLorentzVector ghost(dPx, dPy, dPz, dE);
319 void Print(Option_t* =
"")
const;
426 bool operator () (
const std::pair<Double_t, Int_t>& p1,
const std::pair<Double_t, Int_t>& p2) {
return p1.first > p2.first ; }
Double_t fJetShape2subjettinessktFirstDer
result from shape derivatives for jet 1subjettiness_kt: 2nd order subtracted
void SetMaxNeutralPt(Double32_t t)
void SetSecondDerivativeConstituent(Double_t d)
void SetSecondClosestJet(AliEmcalJet *j, Double_t d)
TArrayF fGRDenominatorSub
array with angular structure function numerator
void SetSecondDerivativepTD(Double_t d)
void SetTagStatus(Int_t i)
Double_t fPtSubVect
background subtracted pt (not stored set from outside)
Double_t fJetShape1subjettinessktFirstDer
result from shape derivatives for jet LeSub: 2nd order subtracted
void AddFlavourTag(Int_t tag)
void SetSecondOrderSubtracted2subjettiness_kt(Double_t d)
void SetSecondOrderSubtracted3subjettiness_kt(Double_t d)
void AddTrackAt(Int_t track, Int_t idx)
Bool_t XvYvZv(Double_t x[3]) const
Double_t GetSecondDerivativepTD() const
void SetSecondOrderSubtracted1subjettiness_kt(Double_t d)
AliEmcalJet * GetTaggedJet() const
void SetFirstDerivativeOpeningAngle_kt(Double_t d)
Int_t fTagStatus
jet tagged to this jet
TArrayF GetGRDenominatorSub() const
void SetFirstDerivative1subjettiness_kt(Double_t d)
Double_t fJetShapepTDFirstDer
result from shape derivatives for jet Angularity: 2nd order subtracted
Double_t fJetShapeConstituentSecondDer
result from shape derivatives for jet const: 1st derivative
void SetGRDenSubSize(UInt_t s)
Double_t fJetShapepTDSecondDer
result from shape derivatives for jet pTD: 1st derivative
Double_t fJetShapeOpeningAnglektSecondDer
result from shape derivatives for jet OpeningAngle_kt: 1st derivative
void SetTaggedJet(AliEmcalJet *j)
void SetSecondDerivativeCircularity(Double_t d)
Double_t GetXi(const AliVParticle *trk) const
AliEmcalJet * ClosestJet() const
TArrayF GetGRDenominator() const
Int_t GetTagStatus() const
Double_t ClosestJetDistance() const
Bool_t AxisInEmcal() const
AliVParticle * GetFlavourTrack(Int_t i=0) const
Double_t GetFirstDerivative2subjettiness_kt() const
void ClearFlavourTracks()
Int_t fLabel
result from shape derivatives for jet mass: 2nd order subtracted
Double_t fPtSub
status of tagging -1: NA 0: not tagged 1: tagged
void Clear(Option_t *="")
Double_t GetSecondDerivativeCircularity() const
Double_t GetFirstDerivativeConstituent() const
void SetSecondOrderSubtractedSigma2(Double_t d)
Double_t GetSecondOrderSubtractedLeSub() const
Bool_t fHasGhost
result from shape derivatives for jet OpeningAngle_kt: 2nd order subtracted
void AddClusterAt(Int_t clus, Int_t idx)
Double_t GetFirstOrderSubtractedConstituent() const
Double_t fJetShapeLeSubFirstSub
result from shape derivatives for jet LeSub: 2nd derivative
void SetFirstOrderSubtractedAngularity(Double_t d)
AliEmcalJet * MatchedJet() const
void SetFirstDerivative2subjettiness_kt(Double_t d)
void SetFirstOrderSubtractedSigma2(Double_t d)
Double_t GetSecondDerivativeConstituent() const
void SetFirstOrderSubtractedLeSub(Double_t d)
Double_t fJetShapeMassSecondDer
result from shape derivatives for jet mass: 1st derivative
Bool_t IsSortable() const
void SetGRDenSize(UInt_t s)
Double_t GetSecondOrderSubtracted3subjettiness_kt() const
void SetSecondDerivativeOpeningAngle_kt(Double_t d)
Double_t FracEmcalArea() const
Double_t MaxChargedPt() const
AliEmcalJet & operator=(const AliEmcalJet &jet)
Double_t GetSecondDerivativeSigma2() const
void GetMom(TLorentzVector &vec) const
void SetSecondOrderSubtractedOpeningAngle_kt(Double_t d)
Double_t GetFlavourTrackZ(Int_t i=0) const
Double_t fJetShape1subjettinessktFirstSub
result from shape derivatives for jet 1subjettiness_kt: 2nd derivative
void SetAreaE(Double_t a)
Double_t GetFirstOrderSubtractedOpeningAngle_kt() const
Double_t fJetShapeAngularitySecondDer
result from shape derivatives for jet Angularity: 1st derivative
Double_t fJetShapeOpeningAnglektFirstSub
result from shape derivatives for jet OpeningAngle_kt: 2nd derivative
friend std::ostream & operator<<(std::ostream &in, const AliEmcalJet &jet)
Double_t fJetShapeLeSubSecondSub
result from shape derivatives for jet LeSub: 1st order subtracted
void SetPtSubVect(Double_t ps)
Double_t GetFirstOrderSubtracted() const
void SetFirstDerivativeAngularity(Double_t d)
Double_t GetFirstDerivativeOpeningAngle_kt() const
UShort_t GetNumberOfConstituents() const
Double_t fJetShape3subjettinessktSecondSub
result from shape derivatives for jet 3subjettiness_kt: 1st order subtracted
Double_t GetFirstOrderSubtracted2subjettiness_kt() const
Int_t ContainsCluster(AliVCluster *cluster, TClonesArray *clusters) const
void SetMatchedToSecondClosest(UShort_t m)
Double_t GetFirstOrderSubtractedLeSub() const
Double_t fJetShape2subjettinessktSecondDer
result from shape derivatives for jet 2subjettiness_kt: 1st derivative
UShort_t GetNumberOfTracks() const
void SetSecondDerivativeLeSub(Double_t d)
Double_t GetSecondDerivative3subjettiness_kt() const
void SetGRNumSize(UInt_t s)
Double_t fJetShapeCircularityFirstDer
result from shape derivatives for jet pTD: 2nd order subtracted
std::ostream & Print(std::ostream &in) const
void SetFirstOrderSubtracted2subjettiness_kt(Double_t d)
void SetSecondOrderSubtractedLeSub(Double_t d)
void GetMomentum(TLorentzVector &vec) const
Double_t GetSecondDerivative2subjettiness_kt() const
Double_t GetFirstDerivativeAngularity() const
void SetSecondDerivative2subjettiness_kt(Double_t d)
void SetFirstOrderSubtracted3subjettiness_kt(Double_t d)
Double_t fJetShapepTDFirstSub
result from shape derivatives for jet pTD: 2nd derivative
void SetFirstOrderSubtractedConstituent(Double_t d)
Short_t ClusterAt(Int_t idx) const
void SetFirstOrderSubtracted(Double_t d)
UShort_t GetNumberOfClusters() const
AliVParticle * GetLeadingTrack(TClonesArray *tracks) const
Double_t GetSecondDerivativeLeSub() const
void SetSecondDerivative3subjettiness_kt(Double_t d)
Double_t GetXi(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz) const
TArrayF fGRNumeratorSub
array with angular structure function denominator
Double_t GetSecondDerivative1subjettiness_kt() const
UShort_t GetMatchingType() const
Double_t fJetShapeConstituentSecondSub
result from shape derivatives for jet const: 1st order subtracted
void AddFlavourTrack(AliVParticle *hftrack)
Double_t GetSecondOrderSubtractedSigma2() const
void AddGRDenAt(Float_t den, Int_t idx)
UShort_t fMatched
distance to closest jets (see above)
std::vector< int > SortConstituentsPt(TClonesArray *tracks) const
Double_t GetFirstOrderSubtracted3subjettiness_kt() const
std::vector< TLorentzVector > fGhosts
Double_t OneOverPt() const
void SetFirstDerivativeSigma2(Double_t d)
void AddGRNumAt(Float_t num, Int_t idx)
Double_t PtSubVect() const
Double_t GetSecondDerivativeAngularity() const
void SetSecondOrderSubtractedAngularity(Double_t d)
void SetSecondOrderSubtracted(Double_t d)
Double_t GetFirstDerivativepTD() const
Double_t MaxTrackPt() const
AliVCluster * GetLeadingCluster(TClonesArray *clusters) const
AliEmcalJet * fTaggedJet
matching type
Double_t GetSecondDerivative() const
Int_t ContainsTrack(AliVParticle *track, TClonesArray *tracks) const
Double_t GetFirstDerivative3subjettiness_kt() const
Double_t Phi_0_2pi() const
void SetFirstDerivativepTD(Double_t d)
TLorentzVector SubtractRhoVect(Double_t rho, Bool_t save=kFALSE)
Double_t GetSecondOrderSubtracted2subjettiness_kt() const
Double_t GetFirstDerivativeCircularity() const
void SetFirstDerivativeCircularity(Double_t d)
Double_t fJetShapeCircularityFirstSub
result from shape derivatives for jet circularity: 2nd derivative
void SetFirstOrderSubtracted1subjettiness_kt(Double_t d)
Double_t fJetShape3subjettinessktFirstSub
result from shape derivatives for jet 3subjettiness_kt: 2nd derivative
void SetSecondOrderSubtractedConstituent(Double_t d)
void SetPtSub(Double_t ps)
void SetMaxChargedPt(Double32_t t)
void SetNEF(Double_t nef)
const Double_t * PID() const
Double_t MaxNeutralPt() const
void AddGhost(const Double_t dPx, const Double_t dPy, const Double_t dPz, const Double_t dE)
Double_t GetFirstDerivativeSigma2() const
Double_t GetZ(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz) const
Double_t fJetShapeMassFirstDer
triggers that the jet might have fired (AliVEvent::EOfflineTriggerTypes)
AliEmcalJet * SecondClosestJet() const
Double_t DeltaR(const AliVParticle *part) const
Double_t fJetShapeSigma2SecondSub
result from shape derivatives for jet sigma2: 1st order subtracted
Double_t GetFirstDerivative1subjettiness_kt() const
Double_t fJetShapeLeSubFirstDer
result from shape derivatives for jet const: 2nd order subtracted
void SetFirstDerivativeLeSub(Double_t d)
Double_t GetFirstOrderSubtracted1subjettiness_kt() const
bool operator()(const std::pair< Double_t, Int_t > &p1, const std::pair< Double_t, Int_t > &p2)
Double_t GetSecondOrderSubtracted() const
Double_t GetSecondOrderSubtractedpTD() const
Double_t fJetShapeOpeningAnglektFirstDer
result from shape derivatives for jet 3subjettiness_kt: 2nd order subtracted
Double_t fJetShape3subjettinessktSecondDer
result from shape derivatives for jet 3subjettiness_kt: 1st derivative
void SetSecondDerivativeAngularity(Double_t d)
void SetFirstDerivative3subjettiness_kt(Double_t d)
Double_t GetFirstDerivativeLeSub() const
void SetNumberOfCharged(Int_t n)
Double_t GetSecondDerivativeOpeningAngle_kt() const
Double_t fJetShapeCircularitySecondDer
result from shape derivatives for jet circularity: 1st derivative
void SetGRNumSubSize(UInt_t s)
void SetAreaEta(Double_t a)
Double_t fJetShapeAngularityFirstSub
result from shape derivatives for jet Angularity: 2nd derivative
Double_t GetFirstOrderSubtractedpTD() const
void AddGRNumSubAt(Float_t num, Int_t idx)
void SetSecondOrderSubtractedpTD(Double_t d)
void AddGRDenSubAt(Float_t den, Int_t idx)
std::ostream & operator<<(std::ostream &in, const AliEmcalJet &jet)
Bool_t IsInsideEmcal() const
void SetClosestJet(AliEmcalJet *j, Double_t d)
void SetFirstOrderSubtractedpTD(Double_t d)
Double32_t fMaxCPt
heavy flavour candidate tracks matched to the jet
void SetSecondDerivative1subjettiness_kt(Double_t d)
AliVParticle * RemoveFlavourTrack(Int_t i=0)
Double_t GetFirstOrderSubtractedAngularity() const
Short_t TrackAt(Int_t idx) const
void SetFirstDerivative(Double_t d)
Double_t SecondClosestJetDistance() const
Double_t GetFirstDerivative() const
Bool_t TestFlavourTag(Int_t tag) const
TArrayF fGRDenominator
array with angular structure function numerator
Double_t fJetShapeConstituentFirstSub
result from shape derivatives for jet const: 2nd derivative
Double_t fJetShapeSigma2FirstDer
result from shape derivatives for jetcircularity: 2nd order subtracted
void SetSecondOrderSubtractedCircularity(Double_t d)
Double_t fJetShapeSigma2SecondDer
result from shape derivatives for jet sigma2: 1st derivative
Double_t fJetShapeConstituentFirstDer
result from shape derivatives for jetsigma2: 2nd order subtracted
Double_t fJetShapeSigma2FirstSub
result from shape derivatives for jet sigma2: 2nd derivative
void SetSecondDerivativeSigma2(Double_t d)
Double_t GetFirstOrderSubtractedCircularity() const
Double_t fJetShapeCircularitySecondSub
result from shape derivatives for jet circularity: 1st order subtracted
Double_t fJetShape1subjettinessktSecondDer
result from shape derivatives for jet 1subjettiness_kt: 1st derivative
Double_t GetSecondOrderSubtracted1subjettiness_kt() const
Double_t MaxClusterPt() const
Double_t fJetShapeMassSecondSub
result from shape derivatives for jet mass: 1st order subtracted
Double_t fJetShape2subjettinessktSecondSub
result from shape derivatives for jet 2subjettiness_kt: 1st order subtracted
Double_t fJetShapeLeSubSecondDer
result from shape derivatives for jet LeSub: 1st derivative
void SetNumberOfTracks(Int_t n)
Bool_t PxPyPz(Double_t p[3]) const
void SetFirstOrderSubtractedCircularity(Double_t d)
const std::vector< TLorentzVector > GetGhosts() const
void SetTrigger(UInt_t trigger)
Double_t fJetShapeAngularitySecondSub
result from shape derivatives for jet Angularity: 1st order subtracted
void SetFlavour(Int_t flavour)
Double_t fJetShapeOpeningAnglektSecondSub
result from shape derivatives for jet OpeningAngle_kt: 1st order subtracted
UInt_t fTriggers
background vector subtracted pt (not stored set from outside)
Double_t GetSecondOrderSubtractedAngularity() const
Double_t GetSecondOrderSubtractedCircularity() const
AliEmcalJet * fClosestJets[2]
TArrayF GetGRNumeratorSub() const
void SetFirstOrderSubtractedOpeningAngle_kt(Double_t d)
void AddTrigger(UInt_t trigger)
void SetAreaPhi(Double_t a)
Double_t GetSecondOrderSubtractedOpeningAngle_kt() const
void SetPtEmc(Double_t pt)
Double_t fJetShapeMassFirstSub
result from shape derivatives for jet mass: 2nd derivative
Bool_t IsTriggerJet(UInt_t trigger=AliVEvent::kEMCEJE) const
void SetSecondDerivative(Double_t d)
AliVParticle * TrackAt(Int_t idx, TClonesArray *ta) const
void SetFirstDerivativeConstituent(Double_t d)
Double32_t fClosestJetsDist[2]
if this is MC it contains the two closest detector level jets in order of distance and viceversa ...
Double_t fJetShape3subjettinessktFirstDer
result from shape derivatives for jet 2subjettiness_kt: 2nd order subtracted
UShort_t fMatchingType
0,1 if it is matched with one of the closest jets; 2 if it is not matched
Int_t Compare(const TObject *obj) const
AliVCluster * ClusterAt(Int_t idx, TClonesArray *ca) const
Double_t fJetShape1subjettinessktSecondSub
result from shape derivatives for jet 1subjettiness_kt: 1st order subtracted
Double_t MaxPartPt() const
TArrayF GetGRNumerator() const
Double_t GetSecondOrderSubtractedConstituent() const
void SetMatchedToClosest(UShort_t m)
Double_t fJetShapepTDSecondSub
result from shape derivatives for jet pTD: 1st order subtracted
Double_t fJetShapeAngularityFirstDer
array with angular structure function denominator
void SetNumberOfClusters(Int_t n)
Double_t GetFirstOrderSubtractedSigma2() const
void SetAxisInEmcal(Bool_t b)
TObjArray * fFlavourTracks
void SetAreaEmc(Double_t a)
void PrintConstituents(TClonesArray *tracks, TClonesArray *clusters) const
void SetNumberOfNeutrals(Int_t n)
Double_t fJetShape2subjettinessktFirstSub
result from shape derivatives for jet 2subjettiness_kt: 2nd derivative