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 
45 
46 #include <list>
47 #include <string>
48 
50 
51  public:
52 
54  {
61  //edm::InputTag tracks ;
69  } ;
70 
72  {
74  // if true, electron preselection is applied
76  // if true, electron level escale corrections are
77  // used on top of the cluster level corrections
79  // ambiguity solving
80  bool applyAmbResolution ; // if not true, ambiguity solving is not applied
81  unsigned ambSortingStrategy ; // 0:isBetter, 1:isInnerMost
82  unsigned ambClustersOverlapStrategy ; // 0:sc adresses, 1:bc shared energy
83  // if true, trackerDriven electrons are added
85  // for backward compatibility
87  } ;
88 
90  {
91  // minimum SC Et
92  double minSCEtBarrel ;
93  double minSCEtEndcaps ;
94  // maximum E/p where E is the supercluster corrected energy and p the track momentum at innermost state
95  double maxEOverPBarrel ;
97  // minimum E/p where E is the supercluster corrected energy and p the track momentum at innermost state
98  double minEOverPBarrel ;
100 
101  // H/E
104  double maxHBarrel ;
105  double maxHEndcaps ;
106 
107  // maximum eta difference between the supercluster position and the track position at the closest impact to the supercluster
110 
111  // maximum phi difference between the supercluster position and the track position at the closest impact to the supercluster
112  // position to the supercluster
115 
116  // maximum sigma ieta ieta
119  // maximum fbrem
120 
121  double maxFbremBarrel ;
123 
124  // fiducial regions
125  bool isBarrel ;
126  bool isEndcaps ;
127  bool isFiducial ;
128 
129  // BDT output (if available)
130  double minMVA ;
131 
132  // transverse impact parameter wrt beam spot
133  double maxTIP ;
134 
135  // only make sense for ecal driven electrons
136  bool seedFromTEC ;
137  } ;
138 
139  // isolation variables parameters
141  {
144  double stripBarrelTk ;
145  double stripEndcapTk ;
146  double ptMinTk ;
147  double maxVtxDistTk ;
148  double maxDrbTk ;
149  double intRadiusHcal ;
150  double etMinHcal ;
153  double jurassicWidth ;
154  double etMinBarrel ;
155  double eMinBarrel ;
156  double etMinEndcaps ;
157  double eMinEndcaps ;
160  } ;
161 
162  // spike removal configuration
164  {
166  //float severityRecHitThreshold ;
167  //float spikeIdThreshold ;
168  //EcalSeverityLevelAlgo::SpikeId spikeId ;
169  std::vector<int> recHitFlagsToBeExcluded ;
170  } ;
171 
173  (
174  const InputTagsConfiguration &,
175  const StrategyConfiguration &,
176  const CutsConfiguration & cutsCfg,
177  const CutsConfiguration & cutsCfgPflow,
178  const ElectronHcalHelper::Configuration & hcalCfg,
179  const ElectronHcalHelper::Configuration & hcalCfgPflow,
180  const IsolationConfiguration &,
181  const SpikeConfiguration &,
182  EcalClusterFunctionBaseClass * superClusterErrorFunction
183  ) ;
184 
185  ~GsfElectronAlgo() ;
186 
187  // typedefs
188  typedef std::list<reco::GsfElectron *> GsfElectronPtrCollection ; // for temporary collections
189 
190  // main methods
191  void checkSetup( const edm::EventSetup & ) ;
192  void beginEvent( edm::Event & ) ;
193  void displayInternalElectrons( const std::string & title ) const ;
194  void clonePreviousElectrons() ;
195  void completeElectrons() ; // do not redo cloned electrons done previously
196  void addPflowInfo() ;
197  void setAmbiguityData( bool ignoreNotPreselected = true ) ;
199  void removeAmbiguousElectrons() ;
201  void endEvent() ;
202 
203 
204  private :
205 
206  // internal structures
207  struct GeneralData ;
208  struct EventSetupData ;
209  struct EventData ;
210  struct ElectronData ;
215 
216  void createElectron() ;
217 
220  bool isPreselected( reco::GsfElectron * ele ) ;
222 
223  // associations
224  const reco::SuperClusterRef getTrSuperCluster( const reco::GsfTrackRef & trackRef ) ;
225 
226  } ;
227 
228 #endif // GsfElectronAlgo_H
229 
230 
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 calculateShowerShape(const reco::SuperClusterRef &, bool pflow, reco::GsfElectron::ShowerShape &)
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)
void checkSetup(const edm::EventSetup &)