]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/AliEmcalJet.cxx
add task to manager
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliEmcalJet.cxx
index 8ae3f3ca0e961da819c773bbb98cbbb157840141..e299a77968454e99295796b1c89ead2000c1a886 100644 (file)
@@ -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<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
 {
@@ -313,3 +401,10 @@ void AliEmcalJet::ResetMatching()
   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));
+  }
+}