00001 #ifndef DQMOFFLINE_TRIGGER_EGHLTOFFELESEL 00002 #define DQMOFFLINE_TRIGGER_EGHLTOFFELESEL 00003 00004 //this class works out which cuts the electron passes/fails 00005 #include "DQMOffline/Trigger/interface/EgHLTOffEle.h" 00006 #include "DQMOffline/Trigger/interface/CutValues.h" 00007 00008 #include <iostream> 00009 00010 class EgHLTOffEleSel { 00011 00012 private: 00013 00014 std::vector<CutValues> cutValues_; 00015 00016 public: 00017 EgHLTOffEleSel(); 00018 EgHLTOffEleSel(const EgHLTOffEleSel& rhs):cutValues_(rhs.cutValues_){} 00019 ~EgHLTOffEleSel(){} 00020 00021 EgHLTOffEleSel& operator=(const EgHLTOffEleSel& rhs){cutValues_=rhs.cutValues_;return *this;} 00022 00023 bool passCuts(const EgHLTOffEle& ele,int cutMask=~0x0)const{return getCutCode(ele,cutMask)==0x0;} 00024 int getCutCode(const EgHLTOffEle& ele,int cutMask=~0x0)const; 00025 00026 static int getCutCode(const EgHLTOffEle& ele,const CutValues& cuts,int cutMask=~0x0); 00027 00028 void addCuts(const CutValues& cuts){cutValues_.push_back(cuts);} 00029 CutValues& getCuts(int type); //gets the cuts appropriate to the type of the electron 00030 const CutValues& getCuts(int type)const; 00031 CutValues& getCutsByIndx(int cutNr){return cutValues_[cutNr];} 00032 const CutValues& getCutsByIndx(int cutNr)const{return cutValues_[cutNr];} 00033 int nrCuts()const{return cutValues_.size();} 00034 00035 void setHighNrgy(); 00036 void setPreSel(); 00037 void setPreSelWithEp(); 00038 void setCutMask(int cutMask,int eleType=~0x0); 00039 void removeCuts(int cutCode,int eleType=~0x0); 00040 void setMinEt(float minEt,int eleType=~0x0); 00041 00042 void clearCuts(){cutValues_.clear();} 00043 00044 }; 00045 00046 #endif