Go to the documentation of this file.00001 #ifndef UtilAlgos_IMASelector_h
00002 #define UtilAlgos_IMASelector_h
00003 #include "CommonTools/UtilAlgos/interface/ParameterAdapter.h"
00004 #include <iostream>
00005
00006
00007 struct IMASelector {
00008 IMASelector( double ESCOPinMin, double ESeedOPoutMin, double PinMPoutOPinMin,
00009 double ESCOPinMax, double ESeedOPoutMax, double PinMPoutOPinMax,
00010 double EMPoutMin, double EMPoutMax) :
00011 ESCOPinMin_ (ESCOPinMin),
00012 ESeedOPoutMin_ (ESeedOPoutMin),
00013 PinMPoutOPinMin_ (PinMPoutOPinMin),
00014 ESCOPinMax_ (ESCOPinMax),
00015 ESeedOPoutMax_ (ESeedOPoutMax),
00016 PinMPoutOPinMax_ (PinMPoutOPinMax),
00017 EMPoutMin_ (EMPoutMin),
00018 EMPoutMax_ (EMPoutMax) {}
00019
00020 template<typename T>
00021 bool operator()( const T & t ) const {
00022 double pin = t.trackMomentumAtVtx ().R () ;
00023 double poMpiOpi = (pin - t.trackMomentumOut ().R ()) / pin ;
00024 double ESC = t.energy () ;
00025 double pOut = t.trackMomentumOut().R();
00026 double EseedOPout = t.eSeedClusterOverPout () ;
00027 double EoPin = t.eSuperClusterOverP () ;
00028 double EoPout = (ESC)/pOut;
00029 bool result;
00030 result=EoPout > EMPoutMin_ ;
00031 result = EoPout<EMPoutMax_;
00032 return (poMpiOpi > PinMPoutOPinMin_ && poMpiOpi < PinMPoutOPinMax_ &&
00033 EseedOPout > ESeedOPoutMin_ && EseedOPout < ESeedOPoutMax_ &&
00034 EoPin > ESCOPinMin_ && EoPin < ESCOPinMax_ &&
00035 EoPout > EMPoutMin_ && EoPout < EMPoutMax_) ;
00036 }
00037 private:
00038 double ESCOPinMin_, ESeedOPoutMin_, PinMPoutOPinMin_ ;
00039 double ESCOPinMax_, ESeedOPoutMax_, PinMPoutOPinMax_ ;
00040 double EMPoutMin_, EMPoutMax_;
00041 };
00042
00043
00044 namespace reco {
00045 namespace modules {
00046 template<>
00047 struct ParameterAdapter<IMASelector> {
00048 static IMASelector make(const edm::ParameterSet & cfg) {
00049 return IMASelector(cfg.getParameter<double>("ESCOPinMin"),
00050 cfg.getParameter<double>("ESeedOPoutMin"),
00051 cfg.getParameter<double>("PinMPoutOPinMin"),
00052 cfg.getParameter<double>("ESCOPinMax"),
00053 cfg.getParameter<double>("ESeedOPoutMax"),
00054 cfg.getParameter<double>("PinMPoutOPinMax"),
00055 cfg.getParameter<double>("EMPoutMin"),
00056 cfg.getParameter<double>("EMPoutMax")
00057 );
00058 }
00059 };
00060 }
00061 }
00062
00063 #endif