CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_4/src/Calibration/Tools/interface/IMASelector.h

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     return (poMpiOpi > PinMPoutOPinMin_ && poMpiOpi < PinMPoutOPinMax_ &&
00030             EseedOPout > ESeedOPoutMin_ && EseedOPout < ESeedOPoutMax_ &&
00031             EoPin > ESCOPinMin_ && EoPin < ESCOPinMax_ &&
00032             EoPout > EMPoutMin_ && EoPout < EMPoutMax_) ;
00033   }
00034 private:
00035   double ESCOPinMin_, ESeedOPoutMin_, PinMPoutOPinMin_ ;
00036   double ESCOPinMax_, ESeedOPoutMax_, PinMPoutOPinMax_ ;
00037   double EMPoutMin_, EMPoutMax_;
00038 };
00039 
00040 
00041 namespace reco { 
00042   namespace modules { 
00043     template<> 
00044     struct ParameterAdapter<IMASelector> { 
00045       static IMASelector make(const edm::ParameterSet & cfg) { 
00046         return IMASelector(cfg.getParameter<double>("ESCOPinMin"), 
00047                            cfg.getParameter<double>("ESeedOPoutMin"), 
00048                            cfg.getParameter<double>("PinMPoutOPinMin"), 
00049                            cfg.getParameter<double>("ESCOPinMax"), 
00050                            cfg.getParameter<double>("ESeedOPoutMax"), 
00051                            cfg.getParameter<double>("PinMPoutOPinMax"), 
00052                            cfg.getParameter<double>("EMPoutMin"),
00053                            cfg.getParameter<double>("EMPoutMax")
00054                            );
00055       } 
00056     }; 
00057   } 
00058 } 
00059 
00060 #endif