CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ElectronSelector.h
Go to the documentation of this file.
1 std::vector<reco::GsfElectronRef> electronSelector(const std::vector<reco::GsfElectronRef>& electrons,
2  const edm::Handle<trigger::TriggerEvent>& pHLT, const int filterId,
3  const std::vector<double>& Cuts )
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 }
106 
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< reco::GsfElectronRef > electronSelector(const std::vector< reco::GsfElectronRef > &electrons, const edm::Handle< trigger::TriggerEvent > &pHLT, const int filterId, const std::vector< double > &Cuts)
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