-// $Id$
//
// Emcal jet class.
//
fTrackIDs(),
fMatched(2),
fMatchingType(0),
+ fTaggedJet(0x0),
+ fTagStatus(-1),
fPtSub(0),
fPtVectSub(0),
- fTriggers(0)
+ fTriggers(0),
+ fJetShapeMassFirstDer(0),
+ fJetShapeMassSecondDer(0),
+ fJetShapeMassFirstSub(0),
+ fJetShapeMassSecondSub(0),
+ fLabel(-1),
+ fGRNumerator(0),
+ fGRDenominator(0),
+ fGRNumeratorSub(0),
+ fGRDenominatorSub(0)
{
// Constructor.
fTrackIDs(),
fMatched(2),
fMatchingType(0),
+ fTaggedJet(0x0),
+ fTagStatus(-1),
fPtSub(0),
fPtVectSub(0),
- fTriggers(0)
+ fTriggers(0),
+ fJetShapeMassFirstDer(0),
+ fJetShapeMassSecondDer(0),
+ fJetShapeMassFirstSub(0),
+ fJetShapeMassSecondSub(0),
+ fLabel(-1),
+ fGRNumerator(0),
+ fGRDenominator(0),
+ fGRNumeratorSub(0),
+ fGRDenominatorSub(0)
{
// Constructor.
fTrackIDs(),
fMatched(2),
fMatchingType(0),
+ fTaggedJet(0x0),
+ fTagStatus(-1),
fPtSub(0),
fPtVectSub(0),
- fTriggers(0)
+ fTriggers(0),
+ fJetShapeMassFirstDer(0),
+ fJetShapeMassSecondDer(0),
+ fJetShapeMassFirstSub(0),
+ fJetShapeMassSecondSub(0),
+ fLabel(-1),
+ fGRNumerator(0),
+ fGRDenominator(0),
+ fGRNumeratorSub(0),
+ fGRDenominatorSub(0)
{
// Constructor.
fTrackIDs(jet.fTrackIDs),
fMatched(jet.fMatched),
fMatchingType(jet.fMatchingType),
+ fTaggedJet(jet.fTaggedJet),
+ fTagStatus(jet.fTagStatus),
fPtSub(jet.fPtSub),
fPtVectSub(jet.fPtVectSub),
- fTriggers(jet.fTriggers)
+ fTriggers(jet.fTriggers),
+ fJetShapeMassFirstDer(jet.fJetShapeMassFirstDer),
+ fJetShapeMassSecondDer(jet.fJetShapeMassSecondDer),
+ fJetShapeMassFirstSub(jet.fJetShapeMassFirstSub),
+ fJetShapeMassSecondSub(jet.fJetShapeMassSecondSub),
+ fLabel(jet.fLabel),
+ fGRNumerator(jet.fGRNumerator),
+ fGRDenominator(jet.fGRDenominator),
+ fGRNumeratorSub(jet.fGRNumeratorSub),
+ fGRDenominatorSub(jet.fGRDenominatorSub)
{
// Copy constructor.
fClosestJetsDist[0] = jet.fClosestJetsDist[0];
fClosestJetsDist[1] = jet.fClosestJetsDist[1];
fMatched = jet.fMatched;
+ fTaggedJet = jet.fTaggedJet;
+ fTagStatus = jet.fTagStatus;
fPtSub = jet.fPtSub;
fPtVectSub = jet.fPtVectSub;
fTriggers = jet.fTriggers;
+ fJetShapeMassFirstDer = jet.fJetShapeMassFirstDer;
+ fJetShapeMassSecondDer = jet.fJetShapeMassSecondDer;
+ fJetShapeMassFirstSub = jet.fJetShapeMassFirstSub;
+ fJetShapeMassSecondSub = jet.fJetShapeMassSecondSub;
+ fLabel = jet.fLabel;
+ fGRNumerator = jet.fGRNumerator;
+ fGRDenominator = jet.fGRDenominator;
+ fGRNumeratorSub = jet.fGRNumeratorSub;
+ fGRDenominatorSub = jet.fGRDenominatorSub;
}
return *this;
std::sort(fTrackIDs.GetArray(), fTrackIDs.GetArray() + fTrackIDs.GetSize());
}
+//__________________________________________________________________________________________________
+Double_t AliEmcalJet::DeltaR (const AliVParticle* part) const
+{ // Helper function to calculate the distance between two jets or a jet and a particle
+ Double_t dPhi = this->Phi() - part->Phi();
+ Double_t dEta = this->Eta() - part->Eta();
+ dPhi = TVector2::Phi_mpi_pi ( dPhi );
+
+ return TMath::Sqrt ( dPhi * dPhi + dEta * dEta );
+}
+
+
+//__________________________________________________________________________________________________
+std::vector<int> AliEmcalJet::SortConstituentsPt( TClonesArray *tracks ) const
+{ //___________________________________________
+ // Sorting by p_T (decreasing) jet constituents
+ //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ typedef std::pair<Double_t, Int_t> ptidx_pair;
+
+ // Create vector for Pt sorting
+ std::vector<ptidx_pair> pair_list ;
+
+ for ( Int_t i_entry = 0; i_entry < GetNumberOfTracks(); i_entry++ )
+ {
+ AliVParticle *track = TrackAt(i_entry, tracks);
+ if (!track)
+ {
+ AliError(Form("Unable to find jet track %d in collection %s (pos in collection %d, max %d)", i_entry, tracks->GetName(), TrackAt(i_entry), tracks->GetEntriesFast()));
+ continue;
+ }
+
+ pair_list.push_back( std::make_pair ( track->Pt(), i_entry ) );
+ }
+
+ std::stable_sort( pair_list.begin() , pair_list.end() , sort_descend() );
+
+ // return an vector of indexes of constituents (sorted descending by pt)
+ std::vector <int> index_sorted_list;
+
+ for ( std::vector< std::pair<Double_t,Int_t> >::iterator it = pair_list.begin(); it != pair_list.end(); ++it)
+ { index_sorted_list.push_back( (*it).second ); } // populating the return object with indexes of sorted tracks
+
+ return index_sorted_list;
+}
+
//__________________________________________________________________________________________________
AliVParticle* AliEmcalJet::GetLeadingTrack(TClonesArray *tracks) const
{
fClosestJetsDist[1] = 999;
fMatched = 2;
}
+
+//__________________________________________________________________________________________________
+void AliEmcalJet::PrintGR() {
+ for(Int_t i = 0; i<fGRNumerator.GetSize(); i++) {
+ Printf("num[%d] = %f",i,fGRNumerator.At(i));
+ }
+}