X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGJE%2FEMCALJetTasks%2FAliEmcalJet.cxx;h=e299a77968454e99295796b1c89ead2000c1a886;hb=9610ef82fde959e5867964c66805e4ca87ce096e;hp=8ae3f3ca0e961da819c773bbb98cbbb157840141;hpb=254370e1b84bd9529f11712bbc47885587de908f;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGJE/EMCALJetTasks/AliEmcalJet.cxx b/PWGJE/EMCALJetTasks/AliEmcalJet.cxx index 8ae3f3ca0e9..e299a779684 100644 --- a/PWGJE/EMCALJetTasks/AliEmcalJet.cxx +++ b/PWGJE/EMCALJetTasks/AliEmcalJet.cxx @@ -1,4 +1,3 @@ -// $Id$ // // Emcal jet class. // @@ -40,7 +39,16 @@ AliEmcalJet::AliEmcalJet() : 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. @@ -79,7 +87,16 @@ AliEmcalJet::AliEmcalJet(Double_t px, Double_t py, Double_t pz) : 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. @@ -124,7 +141,16 @@ AliEmcalJet::AliEmcalJet(Double_t pt, Double_t eta, Double_t phi, Double_t m) : 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. @@ -166,7 +192,16 @@ AliEmcalJet::AliEmcalJet(const AliEmcalJet &jet) : 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. @@ -213,6 +248,15 @@ AliEmcalJet &AliEmcalJet::operator=(const AliEmcalJet &jet) 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; @@ -268,6 +312,50 @@ void AliEmcalJet::SortConstituents() 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 AliEmcalJet::SortConstituentsPt( TClonesArray *tracks ) const +{ //___________________________________________ + // Sorting by p_T (decreasing) jet constituents + //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + typedef std::pair ptidx_pair; + + // Create vector for Pt sorting + std::vector 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 index_sorted_list; + + for ( std::vector< std::pair >::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 { @@ -313,3 +401,10 @@ void AliEmcalJet::ResetMatching() fClosestJetsDist[1] = 999; fMatched = 2; } + +//__________________________________________________________________________________________________ +void AliEmcalJet::PrintGR() { + for(Int_t i = 0; i