00001 #ifndef CAFUTIL_JETSELECTOR_HPP__ 00002 #define CAFUTIL_JETSELECTOR_HPP__ 00003 00004 #include "cafe/Event.hpp" 00005 #include "cafe/SelectUserObjects.hpp" 00006 #include "tmb_tree/TMBJet.hpp" 00007 #include "cafe/Stat.hpp" 00008 00009 #include <string> 00010 00011 00012 namespace caf_util { 00013 00096 class JetSelector : public cafe::SelectUserObjects<TMBJet> 00097 { 00098 public: 00099 JetSelector(const char *name); 00100 ~JetSelector() {}; 00101 bool processEvent(cafe::Event &event); 00102 bool selectObject(const TMBJet &jet); 00103 float MaxAbsEtaOfL1CalCoverage(int runnum); 00104 00105 const std::string& jes() const {return _jes;} 00106 00108 void setJES(const std::string& jes) {_jes = jes ;} 00109 00110 private: 00111 void before(cafe::Collection<TMBJet>& from) ; 00112 void SetJESType(const TMBJet& jet) ; 00113 void Smear(const TMBJet& jet); 00114 private: 00115 bool _useStandardCuts ; //< this flag is true if standard ID criteria is used 00116 bool _applyStandardIDCuts ; //< this flag is true if standard quality cuts are used 00117 bool _applyStandardEMJetsRemoval ; //< this flag is true if standard EM jet removal is used 00118 bool _applyStandardL1Conf ; //< this flag is true if standard L1 confirmation is used 00119 bool _requireVertexConf; //< this flag is true if jet-vertex confirmation (to P.V.[0]) is used 00120 bool _useSmearedJets; //< this flag is true if smeared jets are used 00121 00122 std::string _jes ; //< type of the jes correction applied to the jet 00123 int _njets ; //< minimal number of jets to be selected 00124 int _njetsmax ; //< maximal number of jets to be selected 00125 int _nselected ; //< number of selected objects 00126 float _pTmin ; //< minimal pT of jets 00127 bool _sort; //< sort jets by pT 00128 00129 cafe::StatPointer _stat ; //< pointer to the statistics collector object (see class Stat) 00130 float _EMFmin ; //< minimal EM jet fraction 00131 float _EMFmax ; //< maximal EM jet fraction 00132 float _CHFmin ; //< minimal CH jet fraction 00133 float _CHFmax ; //< maximal CH jet fraction 00134 float _eta ; //< maximal absolute value of jet eta 00135 float _detEta ; //< maximal absolute value of jet detEta 00136 bool _isMC ; //< MC flag 00137 bool _doL1cut ; //< L1 confirmation flag 00138 float _L1boundaryOffset ; 00139 float _f90noL1 ; 00140 float _chfnoL1 ; 00141 float _l1cutCC ; 00142 float _l1cutICD ; 00143 float _l1cutEC; 00144 int _runnum; 00145 float _CPFmin ; // <minimal charged particle fraction 00146 std::string _vertexBranch ; //< For P.V. Matching. Can change to a configuraBLE value if needed 00147 cafe::Variables _vertexVars ; //< For P.V. Matching. Can change to a configurable value if needed 00148 00149 UInt_t _PV0id ; // <Unique ID of the 0th Primary Vertex 00150 00151 cafe::Variables _vars, _varsglob ; 00152 00153 ClassDef(JetSelector, 0) ; 00154 }; 00155 00156 } 00157 #endif // CAFUTIL_JETSELECTOR_HPP__
1.3.4