CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
GsfElectronAlgo.h
Go to the documentation of this file.
1 
2 #ifndef GsfElectronAlgo_H
3 #define GsfElectronAlgo_H
4 
8 
10 
14 
19 
23 
27 
41 
44 //#include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgoRcd.h"
45 
46 #include <list>
47 #include <string>
48 
50 
51  public:
52 
54  {
60  //edm::InputTag tracks ;
67  } ;
68 
70  {
71  // if true, electron preselection is applied
73  // if true, electron level escale corrections are
74  // used on top of the cluster level corrections
76  // ambiguity solving
77  bool applyAmbResolution ; // if not true, ambiguity solving is not applied
78  unsigned ambSortingStrategy ; // 0:isBetter, 1:isInnerMost
79  unsigned ambClustersOverlapStrategy ; // 0:sc adresses, 1:bc shared energy
80  // if true, trackerDriven electrons are added
82  // for backward compatibility
84  } ;
85 
87  {
88  // minimum SC Et
89  double minSCEtBarrel ;
90  double minSCEtEndcaps ;
91  // maximum E/p where E is the supercluster corrected energy and p the track momentum at innermost state
92  double maxEOverPBarrel ;
94  // minimum E/p where E is the supercluster corrected energy and p the track momentum at innermost state
95  double minEOverPBarrel ;
97 
98  // H/E
99  double maxHOverEBarrel ;
101  double maxHBarrel ;
102  double maxHEndcaps ;
103 
104  // maximum eta difference between the supercluster position and the track position at the closest impact to the supercluster
107 
108  // maximum phi difference between the supercluster position and the track position at the closest impact to the supercluster
109  // position to the supercluster
112 
113  // maximum sigma ieta ieta
116  // maximum fbrem
117 
118  double maxFbremBarrel ;
120 
121  // fiducial regions
122  bool isBarrel ;
123  bool isEndcaps ;
124  bool isFiducial ;
125 
126  // BDT output (if available)
127  double minMVA ;
128 
129  // transverse impact parameter wrt beam spot
130  double maxTIP ;
131 
132  // only make sense for ecal driven electrons
133  bool seedFromTEC ;
134  } ;
135 
136  // isolation variables parameters
138  {
141  double stripBarrelTk ;
142  double stripEndcapTk ;
143  double ptMinTk ;
144  double maxVtxDistTk ;
145  double maxDrbTk ;
146  double intRadiusHcal ;
147  double etMinHcal ;
150  double jurassicWidth ;
151  double etMinBarrel ;
152  double eMinBarrel ;
153  double etMinEndcaps ;
154  double eMinEndcaps ;
157  } ;
158 
159  // spike removal configuration
161  {
166  std::vector<int> recHitFlagsToBeExcluded ;
167  } ;
168 
170  (
171  const InputTagsConfiguration &,
172  const StrategyConfiguration &,
173  const CutsConfiguration & cutsCfg,
174  const CutsConfiguration & cutsCfgPflow,
175  const ElectronHcalHelper::Configuration & hcalCfg,
176  const ElectronHcalHelper::Configuration & hcalCfgPflow,
177  const IsolationConfiguration &,
178  const SpikeConfiguration &,
179  EcalClusterFunctionBaseClass * superClusterErrorFunction
180  ) ;
181 
182  ~GsfElectronAlgo() ;
183 
184  // typedefs
185  typedef std::list<reco::GsfElectron *> GsfElectronPtrCollection ; // for temporary collections
186 
187  // main methods
188  void checkSetup( const edm::EventSetup & ) ;
189  void beginEvent( edm::Event & ) ;
190  void displayInternalElectrons( const std::string & title ) const ;
191  void clonePreviousElectrons() ;
192  void completeElectrons() ; // do not redo cloned electrons done previously
193  void addPflowInfo() ;
194  void setAmbiguityData( bool ignoreNotPreselected = true ) ;
196  void removeAmbiguousElectrons() ;
198  void endEvent() ;
199 
200 
201  private :
202 
203  // internal structures
204  struct GeneralData ;
205  struct EventSetupData ;
206  struct EventData ;
207  struct ElectronData ;
212 
213  void createElectron() ;
214 
217  bool isPreselected( reco::GsfElectron * ele ) ;
218 
219  // associations
220  const reco::SuperClusterRef getTrSuperCluster( const reco::GsfTrackRef & trackRef ) ;
221 
222  } ;
223 
224 #endif // GsfElectronAlgo_H
225 
226 
bool isPreselected(reco::GsfElectron *ele)
GeneralData * generalData_
GsfElectronAlgo(const InputTagsConfiguration &, const StrategyConfiguration &, const CutsConfiguration &cutsCfg, const CutsConfiguration &cutsCfgPflow, const ElectronHcalHelper::Configuration &hcalCfg, const ElectronHcalHelper::Configuration &hcalCfgPflow, const IsolationConfiguration &, const SpikeConfiguration &, EcalClusterFunctionBaseClass *superClusterErrorFunction)
void setMvaPreselectionFlag(reco::GsfElectron *ele)
void clonePreviousElectrons()
void beginEvent(edm::Event &)
EventSetupData * eventSetupData_
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
void setCutBasedPreselectionFlag(reco::GsfElectron *ele, const reco::BeamSpot &)
std::list< reco::GsfElectron * > GsfElectronPtrCollection
const reco::SuperClusterRef getTrSuperCluster(const reco::GsfTrackRef &trackRef)
std::vector< int > recHitFlagsToBeExcluded
void removeAmbiguousElectrons()
void displayInternalElectrons(const std::string &title) const
void removeNotPreselectedElectrons()
EventData * eventData_
void copyElectrons(reco::GsfElectronCollection &)
ElectronData * electronData_
void setAmbiguityData(bool ignoreNotPreselected=true)
EcalSeverityLevelAlgo::SpikeId spikeId
void checkSetup(const edm::EventSetup &)