CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Functions
ElectronSelector.h File Reference

Go to the source code of this file.

Functions

std::vector< reco::GsfElectronRefelectronSelector (const std::vector< reco::GsfElectronRef > &electrons, const edm::Handle< trigger::TriggerEvent > &pHLT, const int filterId, const std::vector< double > &Cuts)
 

Function Documentation

std::vector<reco::GsfElectronRef> electronSelector ( const std::vector< reco::GsfElectronRef > &  electrons,
const edm::Handle< trigger::TriggerEvent > &  pHLT,
const int  filterId,
const std::vector< double > &  Cuts 
)

Definition at line 1 of file ElectronSelector.h.

References gather_cfg::cout, reco::deltaR(), edm::Ref< C, T, F >::id(), gen::k, edm::Ref< C, T, F >::key(), and relativeConstraints::ring.

Referenced by ErsatzMEt::analyze().

4 {
5  std::vector<reco::GsfElectronRef> ChosenOnes;
6  const trigger::Keys& ring = pHLT->filterKeys(filterId);
7  const trigger::TriggerObjectCollection& HltObjColl = pHLT->getObjects();
8  //const edm::ValueMap<double>& eIsoMapTrk = *eIsoMap[0];
9  //const edm::ValueMap<double>& eIsoMapEcal = *eIsoMap[1];
10  //const edm::ValueMap<double>& eIsoMapHcal = *eIsoMap[2];
11  edm::LogDebug_("electronSelector", "", 16)<< "Number of electrons to select from = "<< electrons.size();
12  for(std::vector<reco::GsfElectronRef>::const_iterator Relec = electrons.begin(); Relec != electrons.end(); ++Relec)
13  {
14  reco::GsfElectronRef elec = *Relec;
15  edm::LogDebug_("electronSelector", "", 17) <<"Analysing elec, id = "<< elec.id() <<"\tkey = "<< elec.key();
16  double scEta = elec->superCluster()->eta();
17  if(fabs(scEta) < 1.4442 || fabs(scEta) > 1.56)
18  {
19  bool HLTMatch = false;
20  for(unsigned int k = 0; k < ring.size(); ++k)
21  {
22  const trigger::TriggerObject& HltObj = HltObjColl[ring[k]];
23  if(reco::deltaR(*elec, HltObj) < 0.1) HLTMatch = true;
24  }
25  edm::LogDebug_("electronSelector", "", 16) << "HLT Match = "<<HLTMatch;
26  std::cout << "HLT Match = " << HLTMatch << std::endl;
27 // if(HLTMatch) ChosenOnes.push_back(elec);
28  if(HLTMatch)
29  {
30  if(fabs(scEta) < 1.479)
31  {
32  float sIhIh = elec->scSigmaIEtaIEta();
33  edm::LogDebug_("electronSelector","",32)<<"SigIetaIeta = "<< sIhIh
34  <<"\tCut Value = "<< Cuts[1];
35  if(sIhIh < Cuts[1])
36  {
37  edm::LogDebug_("elecSel","",39)<<"dEta = "<< elec->deltaEtaSuperClusterTrackAtVtx()
38  <<"\tCut Value = "<< Cuts[2];
39  if(fabs(elec->deltaEtaSuperClusterTrackAtVtx()) < Cuts[2])
40  {
41  edm::LogDebug_("elecSel","",39)<<"dPhi = "<< elec->deltaPhiSuperClusterTrackAtVtx()
42  <<"\tCut Value = "<< Cuts[3];
43  if(fabs(elec->deltaPhiSuperClusterTrackAtVtx()) < Cuts[3])
44  {
45  float trckiso = elec->isolationVariables03().tkSumPt;
46  edm::LogDebug_("","",29) << "Track isolation = " << trckiso
47  <<"\tCut Value = "<< Cuts[4];
48  if(trckiso < Cuts[4])
49  {
50  float ecaliso = elec->isolationVariables04().ecalRecHitSumEt;
51  edm::LogDebug_("","",29) << "ECAL isolation = " << ecaliso
52  <<"\tCut Value = "<< Cuts[5];
53  if(ecaliso < Cuts[5])
54  {
55  float hcaliso = elec->isolationVariables04().hcalDepth1TowerSumEt
56  + elec->isolationVariables04().hcalDepth2TowerSumEt;
57  edm::LogDebug_("","",29) << "HCAL isolation = " << hcaliso
58  <<"\tCut Value = "<< Cuts[6];
59  if(hcaliso < Cuts[6]) ChosenOnes.push_back(elec);
60  }
61  }
62  }
63  }
64  }
65  }else{
66  float sIhIh = elec->scSigmaIEtaIEta();
67  edm::LogDebug_("electronSelector","",32)<<"SigIetaIeta = "<< sIhIh
68  <<"\tCut Value = "<< Cuts[7];
69  if(sIhIh < Cuts[7])
70  {
71  edm::LogDebug_("elecSel","",39)<<"dEta = "<< elec->deltaEtaSuperClusterTrackAtVtx()
72  <<"\tCut Value = "<< Cuts[8];
73  if(fabs(elec->deltaEtaSuperClusterTrackAtVtx()) < Cuts[8])
74  {
75  edm::LogDebug_("elecSel","",39)<<"dPhi = "<< elec->deltaPhiSuperClusterTrackAtVtx()
76  <<"\tCut Value = "<< Cuts[9];
77  if(fabs(elec->deltaPhiSuperClusterTrackAtVtx()) < Cuts[9])
78  {
79  float trckiso = elec->isolationVariables03().tkSumPt;
80  edm::LogDebug_("","",29) << "Track isolation = " << trckiso
81  <<"\tCut Value = "<< Cuts[10];
82  if(trckiso < Cuts[10])
83  {
84  float ecaliso = elec->isolationVariables04().ecalRecHitSumEt;
85  edm::LogDebug_("","",29) << "ECAL isolation = " << ecaliso
86  <<"\tCut Value = "<< Cuts[11];
87  if(ecaliso < Cuts[11])
88  {
89  float hcaliso = elec->isolationVariables04().hcalDepth1TowerSumEt
90  + elec->isolationVariables04().hcalDepth2TowerSumEt;
91  edm::LogDebug_("","",29) << "HCAL isolation = " << hcaliso
92  <<"\tCut Value = "<< Cuts[12];
93  if(hcaliso < Cuts[12]) ChosenOnes.push_back(elec);
94  }
95  }
96  }
97  }
98  }
99  }
100 // ChosenOnes.push_back(elec);
101  }
102  }
103  }
104  return ChosenOnes;
105 }
double deltaR(double eta1, double phi1, double eta2, double phi2)
Definition: deltaR.h:19
Single trigger physics object (e.g., an isolated muon)
Definition: TriggerObject.h:24
int k[5][pyjets_maxn]
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:83
std::vector< size_type > Keys
key_type key() const
Accessor for product key.
Definition: Ref.h:266
tuple cout
Definition: gather_cfg.py:121
ProductID id() const
Accessor for product ID.
Definition: Ref.h:256