Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:17:46

0001 #ifndef JETBASE_JETSTRUCTS_H
0002 #define JETBASE_JETSTRUCTS_H
0003 
0004 // A few convenience structures for either iterating over data, or referencing between classes
0005 
0006 #include "Jet.h"
0007 
0008 #include <TClonesArray.h>
0009 
0010 class Jetv2;
0011 
0012 struct JetV2SortingCriteria
0013 {
0014   Jet::SORT criteria{Jet::SORT::PT};
0015   Jet::PROPERTY property{Jet::PROPERTY::no_property};  // when sorted by property
0016   Jet::SORT_ORDER order{Jet::SORT_ORDER::DESCENDING};  //
0017   unsigned int prop_index{0};                          // for use when sorting by criteria
0018 };
0019 
0020 // ---------------------------------------------------------------------------------------
0021 // Convenience class for iterating over jets in TClonesArray in a JetContainer
0022 // ---------------------------------------------------------------------------------------
0023 struct IterJetv2TCA
0024 {
0025   TClonesArray* tca{nullptr};
0026   Jetv2*& current_jet;
0027   int index{0};
0028   int size;
0029 
0030   // build Iterator -- capture reference to current_jet pointer from JetContainer
0031   IterJetv2TCA(TClonesArray* _tca, Jetv2*& _in_jet)
0032     : tca{_tca}
0033     , current_jet{_in_jet}
0034     , size{tca->GetEntriesFast()}
0035   {
0036     current_jet = (Jetv2*) tca->UncheckedAt(0);
0037   }
0038 
0039   void operator++()
0040   {
0041     current_jet = (Jetv2*) tca->UncheckedAt(++index);
0042   };
0043 
0044   Jetv2* operator*() { return current_jet; };
0045 
0046   bool operator!=(const IterJetv2TCA& rhs)
0047   {
0048     if (index == rhs.size)
0049     {
0050       current_jet = (Jetv2*) tca->UncheckedAt(0);
0051       return false;
0052     }
0053     else
0054     {
0055       return true;
0056     }
0057   };
0058 };
0059 
0060 #endif