CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/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     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