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
81  // ambiguity solving
82  bool applyAmbResolution ; // if not true, ambiguity solving is not applied
83  unsigned ambSortingStrategy ; // 0:isBetter, 1:isInnerMost
84  unsigned ambClustersOverlapStrategy ; // 0:sc adresses, 1:bc shared energy
85  // if true, trackerDriven electrons are added
87  // for backward compatibility
89  } ;
90 
92  {
93  // minimum SC Et
94  double minSCEtBarrel ;
95  double minSCEtEndcaps ;
96  // maximum E/p where E is the supercluster corrected energy and p the track momentum at innermost state
97  double maxEOverPBarrel ;
99  // minimum E/p where E is the supercluster corrected energy and p the track momentum at innermost state
102 
103  // H/E
106  double maxHBarrel ;
107  double maxHEndcaps ;
108 
109  // maximum eta difference between the supercluster position and the track position at the closest impact to the supercluster
112 
113  // maximum phi difference between the supercluster position and the track position at the closest impact to the supercluster
114  // position to the supercluster
117 
118  // maximum sigma ieta ieta
121  // maximum fbrem
122 
123  double maxFbremBarrel ;
125 
126  // fiducial regions
127  bool isBarrel ;
128  bool isEndcaps ;
129  bool isFiducial ;
130 
131  // BDT output (if available)
132  double minMVA ;
134 
135  // transverse impact parameter wrt beam spot
136  double maxTIP ;
137 
138  // only make sense for ecal driven electrons
139  bool seedFromTEC ;
140  } ;
141 
142  // Ecal rec hits
144  {
145  std::vector<int> recHitFlagsToBeExcludedBarrel ;
149  //int severityLevelCut ;
150  } ;
151 
152  // isolation variables parameters
154  {
157  double stripBarrelTk ;
158  double stripEndcapTk ;
159  double ptMinTk ;
160  double maxVtxDistTk ;
161  double maxDrbTk ;
162  double intRadiusHcal ;
163  double etMinHcal ;
166  double jurassicWidth ;
167  double etMinBarrel ;
168  double eMinBarrel ;
169  double etMinEndcaps ;
170  double eMinEndcaps ;
173  } ;
174 
176  (
177  const InputTagsConfiguration &,
178  const StrategyConfiguration &,
179  const CutsConfiguration & cutsCfg,
180  const CutsConfiguration & cutsCfgPflow,
181  const ElectronHcalHelper::Configuration & hcalCfg,
182  const ElectronHcalHelper::Configuration & hcalCfgPflow,
183  const IsolationConfiguration &,
184  const EcalRecHitsConfiguration &,
185  EcalClusterFunctionBaseClass * superClusterErrorFunction,
186  EcalClusterFunctionBaseClass * crackCorrectionFunction
187  ) ;
188 
189  ~GsfElectronAlgo() ;
190 
191  // typedefs
192  typedef std::list<reco::GsfElectron *> GsfElectronPtrCollection ; // for temporary collections
193 
194  // main methods
195  void checkSetup( const edm::EventSetup & ) ;
196  void beginEvent( edm::Event & ) ;
197  void displayInternalElectrons( const std::string & title ) const ;
198  void clonePreviousElectrons() ;
199  void completeElectrons() ; // do not redo cloned electrons done previously
200  void addPflowInfo() ;
201  void setAmbiguityData( bool ignoreNotPreselected = true ) ;
203  void removeAmbiguousElectrons() ;
205  void endEvent() ;
206 
207 
208  private :
209 
210  // internal structures
211  struct GeneralData ;
212  struct EventSetupData ;
213  struct EventData ;
214  struct ElectronData ;
219 
220  void createElectron() ;
221 
224  bool isPreselected( reco::GsfElectron * ele ) ;
226 
227  // associations
228  const reco::SuperClusterRef getTrSuperCluster( const reco::GsfTrackRef & trackRef ) ;
229  } ;
230 
231 #endif // GsfElectronAlgo_H
232 
233 
bool isPreselected(reco::GsfElectron *ele)
GeneralData * generalData_
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)
GsfElectronAlgo(const InputTagsConfiguration &, const StrategyConfiguration &, const CutsConfiguration &cutsCfg, const CutsConfiguration &cutsCfgPflow, const ElectronHcalHelper::Configuration &hcalCfg, const ElectronHcalHelper::Configuration &hcalCfgPflow, const IsolationConfiguration &, const EcalRecHitsConfiguration &, EcalClusterFunctionBaseClass *superClusterErrorFunction, EcalClusterFunctionBaseClass *crackCorrectionFunction)
void setPflowPreselectionFlag(reco::GsfElectron *ele)
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 &)