+ std::vector<int> SortConstituentsPt(TClonesArray *tracks) const;
+ void SetNEmc(Int_t n) { fNEmc = n; }
+ void SetPtEmc(Double_t pt) { fPtEmc = pt; }
+ void SetPtSub(Double_t ps) { fPtSub = ps; }
+ void SetPtSubVect(Double_t ps) { fPtVectSub = ps; }
+ Bool_t TestFlavourTag(Int_t tag) { return (Bool_t)((tag & fFlavourTagging) !=0); }
+
+ // Trigger
+ Bool_t IsTriggerJet(UInt_t trigger=AliVEvent::kEMCEJE) const { return (Bool_t)((fTriggers & trigger) != 0); }
+ void SetTrigger(UInt_t trigger) { fTriggers = trigger; }
+ void AddTrigger(UInt_t trigger) { fTriggers |= trigger; }
+
+ // Matching
+ void SetClosestJet(AliEmcalJet *j, Double_t d) { fClosestJets[0] = j; fClosestJetsDist[0] = d ; }
+ void SetSecondClosestJet(AliEmcalJet *j, Double_t d) { fClosestJets[1] = j; fClosestJetsDist[1] = d ; }
+ void SetMatchedToClosest(UShort_t m) { fMatched = 0; fMatchingType = m ; }
+ void SetMatchedToSecondClosest(UShort_t m) { fMatched = 1; fMatchingType = m ; }
+ void ResetMatching();
+ AliEmcalJet* ClosestJet() const { return fClosestJets[0] ; }
+ Double_t ClosestJetDistance() const { return fClosestJetsDist[0] ; }
+ AliEmcalJet* SecondClosestJet() const { return fClosestJets[1] ; }
+ Double_t SecondClosestJetDistance() const { return fClosestJetsDist[1] ; }
+ AliEmcalJet* MatchedJet() const { return fMatched < 2 ? fClosestJets[fMatched] : 0; }
+ UShort_t GetMatchingType() const { return fMatchingType ; }
+
+ void SetTaggedJet(AliEmcalJet *j) { fTaggedJet = j ; }
+ void SetTagStatus(Int_t i) { fTagStatus = i ; }
+ AliEmcalJet* GetTaggedJet() const { return fTaggedJet ; }
+ Int_t GetTagStatus() const { return fTagStatus ; }
+
+ //jet shape derivatives
+ //jet mass
+ void SetFirstDerivative(Double_t d) { fJetShapeMassFirstDer = d ; }
+ void SetSecondDerivative(Double_t d) { fJetShapeMassSecondDer = d ; }
+ void SetFirstOrderSubtracted(Double_t d) { fJetShapeMassFirstSub = d ; }
+ void SetSecondOrderSubtracted(Double_t d) { fJetShapeMassSecondSub = d ; }
+ Double_t GetFirstDerivative() const { return fJetShapeMassFirstDer ; }
+ Double_t GetSecondDerivative() const { return fJetShapeMassSecondDer ; }
+ Double_t GetFirstOrderSubtracted() const { return fJetShapeMassFirstSub ; }
+ Double_t GetSecondOrderSubtracted() const { return fJetShapeMassSecondSub ; }
+
+ //jet structure function
+ TArrayF GetGRNumerator() const { return fGRNumerator ; }
+ TArrayF GetGRDenominator() const { return fGRDenominator ; }
+ TArrayF GetGRNumeratorSub() const { return fGRNumeratorSub ; }
+ TArrayF GetGRDenominatorSub() const { return fGRDenominatorSub ; }
+ void AddGRNumAt(Float_t num, Int_t idx) { fGRNumerator.AddAt(num, idx) ; }
+ void AddGRDenAt(Float_t den, Int_t idx) { fGRDenominator.AddAt(den, idx) ; }
+ void SetGRNumSize(UInt_t s) { fGRNumerator.Set(s) ; }
+ void SetGRDenSize(UInt_t s) { fGRDenominator.Set(s) ; }
+
+ void AddGRNumSubAt(Float_t num, Int_t idx) { fGRNumeratorSub.AddAt(num, idx) ; }
+ void AddGRDenSubAt(Float_t den, Int_t idx) { fGRDenominatorSub.AddAt(den, idx) ; }
+ void SetGRNumSubSize(UInt_t s) { fGRNumeratorSub.Set(s) ; }
+ void SetGRDenSubSize(UInt_t s) { fGRDenominatorSub.Set(s) ; }
+ void PrintGR();
+
+ //Angularity
+ void SetFirstDerivativeAngularity(Double_t d) { fJetShapeAngularityFirstDer = d ; }
+ void SetSecondDerivativeAngularity(Double_t d) { fJetShapeAngularitySecondDer = d ; }
+ void SetFirstOrderSubtractedAngularity(Double_t d) { fJetShapeAngularityFirstSub = d ; }
+ void SetSecondOrderSubtractedAngularity(Double_t d) { fJetShapeAngularitySecondSub = d ; }
+ Double_t GetFirstDerivativeAngularity() const { return fJetShapeAngularityFirstDer ; }
+ Double_t GetSecondDerivativeAngularity() const { return fJetShapeAngularitySecondDer ; }
+ Double_t GetFirstOrderSubtractedAngularity() const { return fJetShapeAngularityFirstSub ; }
+ Double_t GetSecondOrderSubtractedAngularity() const { return fJetShapeAngularitySecondSub ; }