CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ZeePlots.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: ZeePlots
4 // Class: ZeePlots
5 //
6 /*
7 
8  Description: <one line class summary>
9  this is an analyzer that reads pat::CompositeCandidate ZeeCandidates and creates some plots
10  For more details see also WenuPlots class description
11  Implementation:
12  09Dec09: option to have a different selection for the 2nd leg of the Z added
13  24Feb10: more variables added E/P and TIP
14  option to choose CMSSW defined electron ID, the same or different
15  for each leg
16 
17  Contact:
18  Stilianos Kesisoglou - Institute of Nuclear Physics
19  NCSR Demokritos
20 
21 */
22 //
23 // Original Author: Nikolaos Rompotis
24 
25 
27 
33 
35 {
36 
37 // I N P U T P A R A M E T E R S
39 // ZEE COLLECTION //////////////////////////////////////////////////////
40 //
41 
42  zeeCollectionTag_ = iConfig.getUntrackedParameter<edm::InputTag>("zeeCollectionTag");
43 
44  // code parameters
45  //
46  std::string outputFile_D = "histos.root";
47  outputFile_ = iConfig.getUntrackedParameter<std::string>("outputFile", outputFile_D);
48 
49  ZEE_VBTFselectionFileName_ = iConfig.getUntrackedParameter<std::string>("ZEE_VBTFselectionFileName");
50  ZEE_VBTFpreseleFileName_ = iConfig.getUntrackedParameter<std::string>("ZEE_VBTFpreseleFileName");
51 
52  DatasetTag_ = iConfig.getUntrackedParameter<Int_t>("DatasetTag");
53 
54  useSameSelectionOnBothElectrons_ = iConfig.getUntrackedParameter<Bool_t>("useSameSelectionOnBothElectrons",false);
55 
56  // Here choose if the two legs will be treated individually or not.
57  //
58  if ( useSameSelectionOnBothElectrons_ ) {
59 
60  // use of precalculatedID. if you use it, then no other cuts are applied
61 
62  /* Electron 1 */
63  usePrecalcID1_ = iConfig.getUntrackedParameter<Bool_t>("usePrecalcID0",false);
64 
65  if ( usePrecalcID1_ ) {
66 
67  usePrecalcIDType1_ = iConfig.getUntrackedParameter<std::string>("usePrecalcIDType0");
68  usePrecalcIDSign1_ = iConfig.getUntrackedParameter<std::string>("usePrecalcIDSign0","=");
69  usePrecalcIDValue1_= iConfig.getUntrackedParameter<Double_t>("usePrecalcIDValue0");
70 
71  std::cout << "ZeePlots: WARNING: you have chosen to use CMSSW precalculated ID for electron #1 with name: >>> " << usePrecalcIDType1_<< " <<< such that the value map " << usePrecalcIDSign1_ << " "<< usePrecalcIDValue1_ << std::endl;
72  }
73 
74  /* Electron 2 */
75  usePrecalcID2_ = iConfig.getUntrackedParameter<Bool_t>("usePrecalcID0",false);
76 
77  if ( usePrecalcID2_ ) {
78 
79  usePrecalcIDType2_ = iConfig.getUntrackedParameter<std::string>("usePrecalcIDType0");
80  usePrecalcIDSign2_ = iConfig.getUntrackedParameter<std::string>("usePrecalcIDSign0","=");
81  usePrecalcIDValue2_= iConfig.getUntrackedParameter<Double_t>("usePrecalcIDValue0");
82 
83  std::cout << "ZeePlots: WARNING: you have chosen to use CMSSW precalculated ID for electron #2 with name: >>> " << usePrecalcIDType2_<< " <<< such that the value map " << usePrecalcIDSign2_ << " "<< usePrecalcIDValue2_ << std::endl;
84  }
85 
86  // use of preselection
87  //
88  useValidFirstPXBHit1_ = iConfig.getUntrackedParameter<Bool_t>("useValidFirstPXBHit0",false);
89  useValidFirstPXBHit2_ = iConfig.getUntrackedParameter<Bool_t>("useValidFirstPXBHit0",false);
90 
91  useConversionRejection1_ = iConfig.getUntrackedParameter<Bool_t>("useConversionRejection0",false);
92  useConversionRejection2_ = iConfig.getUntrackedParameter<Bool_t>("useConversionRejection0",false);
93 
94  useExpectedMissingHits1_ = iConfig.getUntrackedParameter<Bool_t>("useExpectedMissingHits0",false);
95  useExpectedMissingHits2_ = iConfig.getUntrackedParameter<Bool_t>("useExpectedMissingHits0",false);
96 
97  maxNumberOfExpectedMissingHits1_ = iConfig.getUntrackedParameter<Int_t>("maxNumberOfExpectedMissingHits0",1);
98  maxNumberOfExpectedMissingHits2_ = iConfig.getUntrackedParameter<Int_t>("maxNumberOfExpectedMissingHits0",1);
99 
100 
101  // Selection Cuts:
102  //
103 
104  /* Electron 1 */
105  trackIso1_EB_ = iConfig.getUntrackedParameter<Double_t>("trackIso0_EB",1000.0); trackIso1_EE_ = iConfig.getUntrackedParameter<Double_t>("trackIso0_EE",1000.0);
106  ecalIso1_EB_ = iConfig.getUntrackedParameter<Double_t>("ecalIso0_EB",1000.0); ecalIso1_EE_ = iConfig.getUntrackedParameter<Double_t>("ecalIso0_EE",1000.0);
107  hcalIso1_EB_ = iConfig.getUntrackedParameter<Double_t>("hcalIso0_EB",1000.0); hcalIso1_EE_ = iConfig.getUntrackedParameter<Double_t>("hcalIso0_EE",1000.0);
108 
109  sihih1_EB_ = iConfig.getUntrackedParameter<Double_t>("sihih0_EB"); sihih1_EE_ = iConfig.getUntrackedParameter<Double_t>("sihih0_EE");
110  dphi1_EB_ = iConfig.getUntrackedParameter<Double_t>("dphi0_EB"); dphi1_EE_ = iConfig.getUntrackedParameter<Double_t>("dphi0_EE");
111  deta1_EB_ = iConfig.getUntrackedParameter<Double_t>("deta0_EB"); deta1_EE_ = iConfig.getUntrackedParameter<Double_t>("deta0_EE");
112  hoe1_EB_ = iConfig.getUntrackedParameter<Double_t>("hoe0_EB"); hoe1_EE_ = iConfig.getUntrackedParameter<Double_t>("hoe0_EE");
113  cIso1_EB_ = iConfig.getUntrackedParameter<Double_t>("cIso0_EB",1000.0); cIso1_EE_ = iConfig.getUntrackedParameter<Double_t>("cIso0_EE",1000.0);
114  tip_bspot1_EB_ = iConfig.getUntrackedParameter<Double_t>("tip_bspot0_EB",1000.0); tip_bspot1_EE_ = iConfig.getUntrackedParameter<Double_t>("tip_bspot0_EE",1000.0);
115  eop1_EB_ = iConfig.getUntrackedParameter<Double_t>("eop0_EB",1000.0); eop1_EE_ = iConfig.getUntrackedParameter<Double_t>("eop0_EE",1000.0);
116 
117  trackIsoUser1_EB_ = iConfig.getUntrackedParameter<Double_t>("trackIsoUser0_EB",1000.0); trackIsoUser1_EE_ = iConfig.getUntrackedParameter<Double_t>("trackIsoUser0_EE",1000.0);
118  ecalIsoUser1_EB_ = iConfig.getUntrackedParameter<Double_t>("ecalIsoUser0_EB",1000.0); ecalIsoUser1_EE_ = iConfig.getUntrackedParameter<Double_t>("ecalIsoUser0_EE",1000.0);
119  hcalIsoUser1_EB_ = iConfig.getUntrackedParameter<Double_t>("hcalIsoUser0_EB",1000.0); hcalIsoUser1_EE_ = iConfig.getUntrackedParameter<Double_t>("hcalIsoUser0_EE",1000.0);
120 
121  // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
122 
123  trackIso1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("trackIso0_EB_inv",false); trackIso1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("trackIso0_EE_inv",false);
124  ecalIso1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIso0_EB_inv",false); ecalIso1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIso0_EE_inv",false);
125  hcalIso1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIso0_EB_inv",false); hcalIso1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIso0_EE_inv",false);
126 
127  sihih1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("sihih0_EB_inv",false); sihih1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("sihih0_EE_inv",false);
128  dphi1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("dphi0_EB_inv",false); dphi1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("dphi0_EE_inv",false);
129  deta1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("deta0_EB_inv",false); deta1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("deta0_EE_inv",false);
130  hoe1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hoe0_EB_inv",false); hoe1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hoe0_EE_inv",false);
131  cIso1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("cIso0_EB_inv",false); cIso1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("cIso0_EE_inv",false);
132  tip_bspot1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("tip_bspot0_EB_inv",false); tip_bspot1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("tip_bspot0_EE_inv",false);
133  eop1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("eop0_EB_inv",false); eop1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("eop0_EE_inv",false);
134 
135  trackIsoUser1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("trackIsoUser0_EB_inv",false); trackIsoUser1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("trackIsoUser0_EE_inv",false);
136  ecalIsoUser1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIsoUser0_EB_inv",false); ecalIsoUser1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIsoUser0_EE_inv",false);
137  hcalIsoUser1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIsoUser0_EB_inv",false); hcalIsoUser1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIsoUser0_EE_inv",false);
138 
139  /* Electron 2 */
140  trackIso2_EB_ = iConfig.getUntrackedParameter<Double_t>("trackIso0_EB",1000.0); trackIso2_EE_ = iConfig.getUntrackedParameter<Double_t>("trackIso0_EE",1000.0);
141  ecalIso2_EB_ = iConfig.getUntrackedParameter<Double_t>("ecalIso0_EB",1000.0); ecalIso2_EE_ = iConfig.getUntrackedParameter<Double_t>("ecalIso0_EE",1000.0);
142  hcalIso2_EB_ = iConfig.getUntrackedParameter<Double_t>("hcalIso0_EB",1000.0); hcalIso2_EE_ = iConfig.getUntrackedParameter<Double_t>("hcalIso0_EE",1000.0);
143 
144  sihih2_EB_ = iConfig.getUntrackedParameter<Double_t>("sihih0_EB"); sihih2_EE_ = iConfig.getUntrackedParameter<Double_t>("sihih0_EE");
145  dphi2_EB_ = iConfig.getUntrackedParameter<Double_t>("dphi0_EB"); dphi2_EE_ = iConfig.getUntrackedParameter<Double_t>("dphi0_EE");
146  deta2_EB_ = iConfig.getUntrackedParameter<Double_t>("deta0_EB"); deta2_EE_ = iConfig.getUntrackedParameter<Double_t>("deta0_EE");
147  hoe2_EB_ = iConfig.getUntrackedParameter<Double_t>("hoe0_EB"); hoe2_EE_ = iConfig.getUntrackedParameter<Double_t>("hoe0_EE");
148  cIso2_EB_ = iConfig.getUntrackedParameter<Double_t>("cIso0_EB",1000.0); cIso2_EE_ = iConfig.getUntrackedParameter<Double_t>("cIso0_EE",1000.0);
149  tip_bspot2_EB_ = iConfig.getUntrackedParameter<Double_t>("tip_bspot0_EB",1000.0); tip_bspot2_EE_ = iConfig.getUntrackedParameter<Double_t>("tip_bspot0_EE",1000.0);
150  eop2_EB_ = iConfig.getUntrackedParameter<Double_t>("eop0_EB",1000.0); eop2_EE_ = iConfig.getUntrackedParameter<Double_t>("eop0_EE",1000.0);
151 
152  trackIsoUser2_EB_ = iConfig.getUntrackedParameter<Double_t>("trackIsoUser0_EB",1000.0); trackIsoUser2_EE_ = iConfig.getUntrackedParameter<Double_t>("trackIsoUser0_EE",1000.0);
153  ecalIsoUser2_EB_ = iConfig.getUntrackedParameter<Double_t>("ecalIsoUser0_EB",1000.0); ecalIsoUser2_EE_ = iConfig.getUntrackedParameter<Double_t>("ecalIsoUser0_EE",1000.0);
154  hcalIsoUser2_EB_ = iConfig.getUntrackedParameter<Double_t>("hcalIsoUser0_EB",1000.0); hcalIsoUser2_EE_ = iConfig.getUntrackedParameter<Double_t>("hcalIsoUser0_EE",1000.0);
155 
156  // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
157 
158  trackIso2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("trackIso0_EB_inv",false); trackIso2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("trackIso0_EE_inv",false);
159  ecalIso2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIso0_EB_inv",false); ecalIso2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIso0_EE_inv",false);
160  hcalIso2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIso0_EB_inv",false); hcalIso2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIso0_EE_inv",false);
161 
162  sihih2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("sihih0_EB_inv",false); sihih2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("sihih0_EE_inv",false);
163  dphi2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("dphi0_EB_inv",false); dphi2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("dphi0_EE_inv",false);
164  deta2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("deta0_EB_inv",false); deta2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("deta0_EE_inv",false);
165  hoe2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hoe0_EB_inv",false); hoe2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hoe0_EE_inv",false);
166  cIso2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("cIso0_EB_inv",false); cIso2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("cIso0_EE_inv",false);
167  tip_bspot2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("tip_bspot0_EB_inv",false); tip_bspot2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("tip_bspot0_EE_inv",false);
168  eop2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("eop0_EB_inv",false); eop2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("eop0_EE_inv",false);
169 
170  trackIsoUser2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("trackIsoUser0_EB_inv",false); trackIsoUser2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("trackIsoUser0_EE_inv",false);
171  ecalIsoUser2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIsoUser0_EB_inv",false); ecalIsoUser2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIsoUser0_EE_inv",false);
172  hcalIsoUser2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIsoUser0_EB_inv",false); hcalIsoUser2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIsoUser0_EE_inv",false);
173 
174  }
175  else {
176 
177  // use of precalculatedID. if you use it, then no other cuts are applied
178 
179  /* Electron 1 */
180  usePrecalcID1_ = iConfig.getUntrackedParameter<Bool_t>("usePrecalcID1",false);
181 
182  if ( usePrecalcID1_ ) {
183 
184  usePrecalcIDType1_ = iConfig.getUntrackedParameter<std::string>("usePrecalcIDType1");
185  usePrecalcIDSign1_ = iConfig.getUntrackedParameter<std::string>("usePrecalcIDSign1","=");
186  usePrecalcIDValue1_= iConfig.getUntrackedParameter<Double_t>("usePrecalcIDValue1");
187 
188  std::cout << "ZeePlots: WARNING: you have chosen to use CMSSW precalculated ID for electron #1 with name: >>> " << usePrecalcIDType1_<< " <<< such that the value map " << usePrecalcIDSign1_ << " "<< usePrecalcIDValue1_ << std::endl;
189  }
190 
191  /* Electron 2 */
192  usePrecalcID2_ = iConfig.getUntrackedParameter<Bool_t>("usePrecalcID2",false);
193 
194  if ( usePrecalcID2_ ) {
195 
196  usePrecalcIDType2_ = iConfig.getUntrackedParameter<std::string>("usePrecalcIDType2");
197  usePrecalcIDSign2_ = iConfig.getUntrackedParameter<std::string>("usePrecalcIDSign2","=");
198  usePrecalcIDValue2_= iConfig.getUntrackedParameter<Double_t>("usePrecalcIDValue2");
199 
200  std::cout << "ZeePlots: WARNING: you have chosen to use CMSSW precalculated ID for electron #2 with name: >>> " << usePrecalcIDType2_<< " <<< such that the value map " << usePrecalcIDSign2_ << " "<< usePrecalcIDValue2_ << std::endl;
201  }
202 
203  // use of preselection
204  //
205  useValidFirstPXBHit1_ = iConfig.getUntrackedParameter<Bool_t>("useValidFirstPXBHit1",false);
206  useValidFirstPXBHit2_ = iConfig.getUntrackedParameter<Bool_t>("useValidFirstPXBHit2",false);
207 
208  useConversionRejection1_ = iConfig.getUntrackedParameter<Bool_t>("useConversionRejection1",false);
209  useConversionRejection2_ = iConfig.getUntrackedParameter<Bool_t>("useConversionRejection2",false);
210 
211  useExpectedMissingHits1_ = iConfig.getUntrackedParameter<Bool_t>("useExpectedMissingHits1",false);
212  useExpectedMissingHits2_ = iConfig.getUntrackedParameter<Bool_t>("useExpectedMissingHits2",false);
213 
214  maxNumberOfExpectedMissingHits1_ = iConfig.getUntrackedParameter<Int_t>("maxNumberOfExpectedMissingHits1",1);
215  maxNumberOfExpectedMissingHits2_ = iConfig.getUntrackedParameter<Int_t>("maxNumberOfExpectedMissingHits2",1);
216 
217 
218  // Selection Cuts:
219  //
220 
221  /* Electron 1 */
222  trackIso1_EB_ = iConfig.getUntrackedParameter<Double_t>("trackIso1_EB",1000.0); trackIso1_EE_ = iConfig.getUntrackedParameter<Double_t>("trackIso1_EE",1000.0);
223  ecalIso1_EB_ = iConfig.getUntrackedParameter<Double_t>("ecalIso1_EB",1000.0); ecalIso1_EE_ = iConfig.getUntrackedParameter<Double_t>("ecalIso1_EE",1000.0);
224  hcalIso1_EB_ = iConfig.getUntrackedParameter<Double_t>("hcalIso1_EB",1000.0); hcalIso1_EE_ = iConfig.getUntrackedParameter<Double_t>("hcalIso1_EE",1000.0);
225 
226  sihih1_EB_ = iConfig.getUntrackedParameter<Double_t>("sihih1_EB"); sihih1_EE_ = iConfig.getUntrackedParameter<Double_t>("sihih1_EE");
227  dphi1_EB_ = iConfig.getUntrackedParameter<Double_t>("dphi1_EB"); dphi1_EE_ = iConfig.getUntrackedParameter<Double_t>("dphi1_EE");
228  deta1_EB_ = iConfig.getUntrackedParameter<Double_t>("deta1_EB"); deta1_EE_ = iConfig.getUntrackedParameter<Double_t>("deta1_EE");
229  hoe1_EB_ = iConfig.getUntrackedParameter<Double_t>("hoe1_EB"); hoe1_EE_ = iConfig.getUntrackedParameter<Double_t>("hoe1_EE");
230  cIso1_EB_ = iConfig.getUntrackedParameter<Double_t>("cIso1_EB",1000.0); cIso1_EE_ = iConfig.getUntrackedParameter<Double_t>("cIso1_EE",1000.0);
231  tip_bspot1_EB_ = iConfig.getUntrackedParameter<Double_t>("tip_bspot1_EB",1000.0); tip_bspot1_EE_ = iConfig.getUntrackedParameter<Double_t>("tip_bspot1_EE",1000.0);
232  eop1_EB_ = iConfig.getUntrackedParameter<Double_t>("eop1_EB",1000.0); eop1_EE_ = iConfig.getUntrackedParameter<Double_t>("eop1_EE",1000.0);
233 
234  trackIsoUser1_EB_ = iConfig.getUntrackedParameter<Double_t>("trackIsoUser1_EB",1000.0); trackIsoUser1_EE_ = iConfig.getUntrackedParameter<Double_t>("trackIsoUser1_EE",1000.0);
235  ecalIsoUser1_EB_ = iConfig.getUntrackedParameter<Double_t>("ecalIsoUser1_EB",1000.0); ecalIsoUser1_EE_ = iConfig.getUntrackedParameter<Double_t>("ecalIsoUser1_EE",1000.0);
236  hcalIsoUser1_EB_ = iConfig.getUntrackedParameter<Double_t>("hcalIsoUser1_EB",1000.0); hcalIsoUser1_EE_ = iConfig.getUntrackedParameter<Double_t>("hcalIsoUser1_EE",1000.0);
237  // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
238  trackIso1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("trackIso1_EB_inv",false); trackIso1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("trackIso1_EE_inv",false);
239  ecalIso1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIso1_EB_inv",false); ecalIso1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIso1_EE_inv",false);
240  hcalIso1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIso1_EB_inv",false); hcalIso1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIso1_EE_inv",false);
241 
242  sihih1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("sihih1_EB_inv",false); sihih1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("sihih1_EE_inv",false);
243  dphi1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("dphi1_EB_inv",false); dphi1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("dphi1_EE_inv",false);
244  deta1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("deta1_EB_inv",false); deta1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("deta1_EE_inv",false);
245  hoe1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hoe1_EB_inv",false); hoe1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hoe1_EE_inv",false);
246  cIso1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("cIso1_EB_inv",false); cIso1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("cIso1_EE_inv",false);
247  tip_bspot1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("tip_bspot1_EB_inv",false); tip_bspot1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("tip_bspot1_EE_inv",false);
248  eop1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("eop1_EB_inv",false); eop1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("eop1_EE_inv",false);
249 
250  trackIsoUser1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("trackIsoUser1_EB_inv",false); trackIsoUser1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("trackIsoUser1_EE_inv",false);
251  ecalIsoUser1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIsoUser1_EB_inv",false); ecalIsoUser1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIsoUser1_EE_inv",false);
252  hcalIsoUser1_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIsoUser1_EB_inv",false); hcalIsoUser1_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIsoUser1_EE_inv",false);
253 
254  /* Electron 2 */
255  trackIso2_EB_ = iConfig.getUntrackedParameter<Double_t>("trackIso2_EB",1000.0); trackIso2_EE_ = iConfig.getUntrackedParameter<Double_t>("trackIso2_EE",1000.0);
256  ecalIso2_EB_ = iConfig.getUntrackedParameter<Double_t>("ecalIso2_EB",1000.0); ecalIso2_EE_ = iConfig.getUntrackedParameter<Double_t>("ecalIso2_EE",1000.0);
257  hcalIso2_EB_ = iConfig.getUntrackedParameter<Double_t>("hcalIso2_EB",1000.0); hcalIso2_EE_ = iConfig.getUntrackedParameter<Double_t>("hcalIso2_EE",1000.0);
258 
259  sihih2_EB_ = iConfig.getUntrackedParameter<Double_t>("sihih2_EB"); sihih2_EE_ = iConfig.getUntrackedParameter<Double_t>("sihih2_EE");
260  dphi2_EB_ = iConfig.getUntrackedParameter<Double_t>("dphi2_EB"); dphi2_EE_ = iConfig.getUntrackedParameter<Double_t>("dphi2_EE");
261  deta2_EB_ = iConfig.getUntrackedParameter<Double_t>("deta2_EB"); deta2_EE_ = iConfig.getUntrackedParameter<Double_t>("deta2_EE");
262  hoe2_EB_ = iConfig.getUntrackedParameter<Double_t>("hoe2_EB"); hoe2_EE_ = iConfig.getUntrackedParameter<Double_t>("hoe2_EE");
263  cIso2_EB_ = iConfig.getUntrackedParameter<Double_t>("cIso2_EB",1000.0); cIso2_EE_ = iConfig.getUntrackedParameter<Double_t>("cIso2_EE",1000.0);
264  tip_bspot2_EB_ = iConfig.getUntrackedParameter<Double_t>("tip_bspot2_EB",1000.0); tip_bspot2_EE_ = iConfig.getUntrackedParameter<Double_t>("tip_bspot2_EE",1000.0);
265  eop2_EB_ = iConfig.getUntrackedParameter<Double_t>("eop2_EB",1000.0); eop2_EE_ = iConfig.getUntrackedParameter<Double_t>("eop2_EE",1000.0);
266 
267  trackIsoUser2_EB_ = iConfig.getUntrackedParameter<Double_t>("trackIsoUser2_EB",1000.0); trackIsoUser2_EE_ = iConfig.getUntrackedParameter<Double_t>("trackIsoUser2_EE",1000.0);
268  ecalIsoUser2_EB_ = iConfig.getUntrackedParameter<Double_t>("ecalIsoUser2_EB",1000.0); ecalIsoUser2_EE_ = iConfig.getUntrackedParameter<Double_t>("ecalIsoUser2_EE",1000.0);
269  hcalIsoUser2_EB_ = iConfig.getUntrackedParameter<Double_t>("hcalIsoUser2_EB",1000.0); hcalIsoUser2_EE_ = iConfig.getUntrackedParameter<Double_t>("hcalIsoUser2_EE",1000.0);
270  // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
271  trackIso2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("trackIso2_EB_inv",false); trackIso2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("trackIso2_EE_inv",false);
272  ecalIso2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIso2_EB_inv",false); ecalIso2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIso2_EE_inv",false);
273  hcalIso2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIso2_EB_inv",false); hcalIso2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIso2_EE_inv",false);
274 
275  sihih2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("sihih2_EB_inv",false); sihih2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("sihih2_EE_inv",false);
276  dphi2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("dphi2_EB_inv",false); dphi2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("dphi2_EE_inv",false);
277  deta2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("deta2_EB_inv",false); deta2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("deta2_EE_inv",false);
278  hoe2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hoe2_EB_inv",false); hoe2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hoe2_EE_inv",false);
279  cIso2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("cIso2_EB_inv",false); cIso2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("cIso2_EE_inv",false);
280  tip_bspot2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("tip_bspot2_EB_inv",false); tip_bspot2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("tip_bspot2_EE_inv",false);
281  eop2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("eop2_EB_inv",false); eop2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("eop2_EE_inv",false);
282 
283  trackIsoUser2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("trackIsoUser2_EB_inv",false); trackIsoUser2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("trackIsoUser2_EE_inv",false);
284  ecalIsoUser2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIsoUser2_EB_inv",false); ecalIsoUser2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIsoUser2_EE_inv",false);
285  hcalIsoUser2_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIsoUser2_EB_inv",false); hcalIsoUser2_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIsoUser2_EE_inv",false);
286 
287  }
288 
291 
292  // Display Massages
293  //
294  if ( useValidFirstPXBHit1_ ) {
295  std::cout << "ZeePlots: Warning: you have demanded ValidFirstPXBHit on 1st electron" << std::endl;
296  }
297  if ( useValidFirstPXBHit2_ ) {
298  std::cout << "ZeePlots: Warning: you have demanded ValidFirstPXBHit on 2nd electron" << std::endl;
299  }
300  if ( useConversionRejection1_ ) {
301  std::cout << "ZeePlots: Warning: you have demanded Conversion Rejection on 1st electron" << std::endl;
302  }
303  if ( useConversionRejection2_ ) {
304  std::cout << "ZeePlots: Warning: you have demanded Conversion Rejection on 2nd electron" << std::endl;
305  }
306  if ( useExpectedMissingHits1_ ) {
307  std::cout << "ZeePlots: Warning: you have demanded Expected Missing Hits on 1st electron no more than " << maxNumberOfExpectedMissingHits1_ << std::endl;
308  }
309  if ( useExpectedMissingHits2_ ) {
310  std::cout << "ZeePlots: Warning: you have demanded Expected Missing Hits on 2nd electron no more than " << maxNumberOfExpectedMissingHits2_ << std::endl;
311  }
312 
313 
314  // JETS
315  //
316  includeJetInformationInNtuples_ = iConfig.getUntrackedParameter<Bool_t>("includeJetInformationInNtuples", false);
317 
319 
320  caloJetCollectionTag_ = iConfig.getUntrackedParameter<edm::InputTag>("caloJetCollectionTag");
321  pfJetCollectionTag_ = iConfig.getUntrackedParameter<edm::InputTag>("pfJetCollectionTag");
322  DRJetFromElectron_ = iConfig.getUntrackedParameter<Double_t>("DRJetFromElectron");
323 
324  }
325 
326 }
327 
328 
330 {
331 
332  // do anything here that needs to be done at desctruction time
333  // (e.g. close files, deallocate resources etc.)
334 
335 }
336 
337 
338 //
339 // member functions
340 //
341 
342 // ------------ method called to for each event ------------
344 {
345  using namespace std;
346  //
347  // Get the collections here
348  //
350  iEvent.getByLabel(zeeCollectionTag_, ZeeCands);
351 
352  if ( ! ZeeCands.isValid() ) {
353  std::cout << "Warning: No valid Zee candidates in this event..." << std::endl;
354  return;
355  }
356 
357  const pat::CompositeCandidateCollection *zcands = ZeeCands.product();
358  const pat::CompositeCandidateCollection::const_iterator zeeIter = zcands->begin();
359  const pat::CompositeCandidate zee = *zeeIter;
360 
361  // get the parts of the composite candidate:
362  const pat::Electron * myElec1 = dynamic_cast<const pat::Electron*>( zee.daughter("electron1") );
363  const pat::Electron * myElec2 = dynamic_cast<const pat::Electron*>( zee.daughter("electron2") );
364 
365  const pat::MET * myMet = dynamic_cast<const pat::MET*>( zee.daughter("met") );
366  const pat::MET * myPfMet = dynamic_cast<const pat::MET*>( zee.daughter("pfmet") );
367  const pat::MET * myTcMet = dynamic_cast<const pat::MET*>( zee.daughter("tcmet") );
368 
369  // _______________________________________________________________________
370  //
371  // VBTF Root tuple production --------------------------------------------
372  // _______________________________________________________________________
373  //
374  // .......................................................................
375  // vbtf produces 2 root tuples: one that contains the highest pT electrons
376  // that passes a user defined selection and one other with only the
377  // preselection criteria applied
378  // .......................................................................
379  //
380 
381  // fill the tree variables
382  runNumber = iEvent.run();
383  eventNumber = (Long64_t)( iEvent.eventAuxiliary().event() );
384  lumiSection = (Int_t)iEvent.luminosityBlock();
385 
386  ele1_sc_eta = (Float_t)( myElec1->superCluster()->eta() );
387  ele1_sc_phi = (Float_t)( myElec1->superCluster()->phi() );
388  ele1_sc_energy = (Float_t)( myElec1->superCluster()->energy() );
389  ele1_sc_gsf_et = (Float_t)( myElec1->superCluster()->energy() / TMath::CosH(myElec1->gsfTrack()->eta()) );
390  ele1_cand_eta = (Float_t)( myElec1->eta() );
391  ele1_cand_phi = (Float_t)( myElec1->phi() );
392  ele1_cand_et = (Float_t)( myElec1->et() );
393 
394  ele1_iso_track = (Float_t)( myElec1->dr03IsolationVariables().tkSumPt / ele1_cand_et );
395  ele1_iso_ecal = (Float_t)( myElec1->dr03IsolationVariables().ecalRecHitSumEt / ele1_cand_et );
396  ele1_iso_hcal = (Float_t)( ( myElec1->dr03IsolationVariables().hcalDepth1TowerSumEt + myElec1->dr03IsolationVariables().hcalDepth2TowerSumEt ) / ele1_cand_et );
397 
398  ele1_id_sihih = (Float_t)( myElec1->sigmaIetaIeta() );
399  ele1_id_deta = (Float_t)( myElec1->deltaEtaSuperClusterTrackAtVtx() );
400  ele1_id_dphi = (Float_t)( myElec1->deltaPhiSuperClusterTrackAtVtx() );
401  ele1_id_hoe = (Float_t)( myElec1->hadronicOverEm() );
402 
403  ele1_cr_mhitsinner = (Float_t)( myElec1->gsfTrack()->trackerExpectedHitsInner().numberOfHits() );
404  ele1_cr_dcot = (Float_t)( myElec1->userFloat("Dcot") );
405  ele1_cr_dist = (Float_t)( myElec1->userFloat("Dist") );
406 
407  ele1_vx = (Float_t)( myElec1->vx() );
408  ele1_vy = (Float_t)( myElec1->vy() );
409  ele1_vz = (Float_t)( myElec1->vz() );
410 
411  pv_x1 = (Float_t)( myElec1->userFloat("pv_x") );
412  pv_y1 = (Float_t)( myElec1->userFloat("pv_y") );
413  pv_z1 = (Float_t)( myElec1->userFloat("pv_z") );
414 
415  ele1_gsfCharge = (Int_t) ( myElec1->gsfTrack()->charge() );
416  ele1_ctfCharge = (Int_t) ( myElec1->closestCtfTrackRef().isNonnull() ? ( myElec1->closestCtfTrackRef()->charge() ) : -9999 ) ;
417  ele1_scPixCharge = (Int_t) ( myElec1->chargeInfo().scPixCharge );
418  ele1_eop = (Float_t)( myElec1->eSuperClusterOverP() );
419  ele1_tip_bs = (Float_t)( (-1.0) * myElec1->dB() );
420  ele1_tip_pv = (Float_t)( myElec1->userFloat("ele_tip_pv") );
421 
422 
423  ele2_sc_eta = (Float_t)( myElec2->superCluster()->eta() );
424  ele2_sc_phi = (Float_t)( myElec2->superCluster()->phi() );
425  ele2_sc_energy = (Float_t)( myElec2->superCluster()->energy() );
426  ele2_sc_gsf_et = (Float_t)( myElec2->superCluster()->energy() / TMath::CosH(myElec2->gsfTrack()->eta()) );
427  ele2_cand_eta = (Float_t)( myElec2->eta() );
428  ele2_cand_phi = (Float_t)( myElec2->phi() );
429  ele2_cand_et = (Float_t)( myElec2->et() );
430 
431  ele2_iso_track = (Float_t)( myElec2->dr03IsolationVariables().tkSumPt / ele2_cand_et );
432  ele2_iso_ecal = (Float_t)( myElec2->dr03IsolationVariables().ecalRecHitSumEt/ele2_cand_et );
433  ele2_iso_hcal = (Float_t)( ( myElec2->dr03IsolationVariables().hcalDepth1TowerSumEt + myElec2->dr03IsolationVariables().hcalDepth2TowerSumEt ) / ele2_cand_et );
434 
435  ele2_id_sihih = (Float_t)( myElec2->sigmaIetaIeta() );
436  ele2_id_deta = (Float_t)( myElec2->deltaEtaSuperClusterTrackAtVtx() );
437  ele2_id_dphi = (Float_t)( myElec2->deltaPhiSuperClusterTrackAtVtx() );
438  ele2_id_hoe = (Float_t)( myElec2->hadronicOverEm() );
439 
440  ele2_cr_mhitsinner = (Float_t)( myElec2->gsfTrack()->trackerExpectedHitsInner().numberOfHits() );
441  ele2_cr_dcot = (Float_t)( myElec2->userFloat("Dcot") );
442  ele2_cr_dist = (Float_t)( myElec2->userFloat("Dist") );
443 
444  ele2_vx = (Float_t)( myElec2->vx() );
445  ele2_vy = (Float_t)( myElec2->vy() );
446  ele2_vz = (Float_t)( myElec2->vz() );
447 
448  pv_x2 = (Float_t)( myElec2->userFloat("pv_x") );
449  pv_y2 = (Float_t)( myElec2->userFloat("pv_y") );
450  pv_z2 = (Float_t)( myElec2->userFloat("pv_z") );
451 
452  ele2_gsfCharge = (Int_t) ( myElec2->gsfTrack()->charge() );
453  ele2_ctfCharge = (Int_t) ( myElec2->closestCtfTrackRef().isNonnull() ? ( myElec2->closestCtfTrackRef()->charge() ) : -9999 );
454  ele2_scPixCharge = (Int_t) ( myElec2->chargeInfo().scPixCharge );
455  ele2_eop = (Float_t)( myElec2->eSuperClusterOverP() );
456  ele2_tip_bs = (Float_t)( (-1.0) * myElec2->dB() );
457  ele2_tip_pv = (Float_t)( myElec2->userFloat("ele_tip_pv") );
458 
459  event_caloMET = (Float_t)( myMet->et() );
460  event_pfMET = (Float_t)( myPfMet->et() );
461  event_tcMET = (Float_t)( myTcMet->et() );
462 
463  event_caloMET_phi = (Float_t)( myMet->phi() );
464  event_pfMET_phi = (Float_t)( myPfMet->phi() );
465  event_tcMET_phi = (Float_t)( myTcMet->phi() );
466 
467 
468  TLorentzVector p4e1;
469  TLorentzVector p4e2;
470 
471  p4e1.SetPtEtaPhiM(ele1_sc_gsf_et, ele1_cand_eta, ele1_cand_phi, 0.000511);
472  p4e2.SetPtEtaPhiM(ele2_sc_gsf_et, ele2_cand_eta, ele2_cand_phi, 0.000511);
473 
474  TLorentzVector Zp4 = p4e1 + p4e2 ;
475 
476  event_Mee = (Float_t)( Zp4.M() );
477 
479 
480  // jet information - only if the user asks for it
481  // keep the 5 highest et jets of the event that are further than DR > DRJetFromElectron_
482 
484 
485  // initialize the array of the jet information
486 
487  for ( Int_t i=0; i < 5; ++i ) {
488 
489  calojet_et[i] = -999999;
490  calojet_eta[i] = -999999;
491  calojet_phi[i] = -999999;
492 
493  pfjet_et[i] = -999999;
494  pfjet_eta[i] = -999999;
495  pfjet_phi[i] = -999999;
496 
497  }
498 
499  // get hold of the jet collections
501  iEvent.getByLabel(caloJetCollectionTag_, pCaloJets);
502 
504  iEvent.getByLabel(pfJetCollectionTag_, pPfJets);
505 
506  // calo jets now:
507  if ( pCaloJets.isValid() ) {
508 
509  const reco::CaloJetCollection *caloJets = pCaloJets.product();
510  Int_t nCaloJets = (Int_t)( caloJets->size() );
511 
512  if ( nCaloJets > 0 ) {
513 
514  Float_t *nCaloET = new Float_t[nCaloJets];
515  Float_t *nCaloEta = new Float_t[nCaloJets];
516  Float_t *nCaloPhi = new Float_t[nCaloJets];
517 
518 // reco::CaloJetCollection::const_iterator cjet = caloJets->begin();
519 
520  Int_t counter = 0;
521 
522  for (reco::CaloJetCollection::const_iterator cjet = caloJets->begin() ; cjet != caloJets->end(); ++cjet) {
523 
524  // store them only if they are far enough from the electron
525  Double_t DR1 = reco::deltaR(cjet->eta(), cjet->phi(), myElec1->gsfTrack()->eta(), ele1_sc_phi);
526  Double_t DR2 = reco::deltaR(cjet->eta(), cjet->phi(), myElec2->gsfTrack()->eta(), ele2_sc_phi);
527 
528  if ( ( DR1 > DRJetFromElectron_ ) && ( DR2 > DRJetFromElectron_ ) ) {
529 
530  nCaloET[counter] = cjet->et();
531  nCaloEta[counter] = cjet->eta();
532  nCaloPhi[counter] = cjet->phi();
533  ++counter;
534  }
535  }
536 
537  Int_t *caloJetSorted = new Int_t[nCaloJets];
538 
539  TMath::Sort(nCaloJets, nCaloET, caloJetSorted, true);
540 
541  for ( Int_t i = 0; i < nCaloJets; ++i ) {
542 
543  if ( i >= 5 ) {
544  break;
545  }
546 
547  calojet_et[i] = nCaloET[ caloJetSorted[i] ];
548  calojet_eta[i] = nCaloEta[ caloJetSorted[i] ];
549  calojet_phi[i] = nCaloPhi[ caloJetSorted[i] ];
550  }
551 
552  delete [] caloJetSorted;
553  delete [] nCaloET;
554  delete [] nCaloEta;
555  delete [] nCaloPhi;
556  }
557  }
558  else {
559  std::cout << "ZeePlots: Could not get caloJet collection with name "<< caloJetCollectionTag_ << std::endl;
560  }
561 
562  // pf jets now:
563  if ( pPfJets.isValid()) {
564 
565  const reco::PFJetCollection *pfJets = pPfJets.product();
566  Int_t nPfJets = (Int_t) pfJets->size();
567 
568  if ( nPfJets > 0 ) {
569 
570  Float_t *nPfET = new Float_t[nPfJets];
571  Float_t *nPfEta = new Float_t[nPfJets];
572  Float_t *nPfPhi = new Float_t[nPfJets];
573 
574 // reco::PFJetCollection::const_iterator pjet = pfJets->begin();
575 
576  Int_t counter = 0;
577 
578  for (reco::PFJetCollection::const_iterator pjet = pfJets->begin(); pjet != pfJets->end(); ++pjet) {
579 
580  // store them only if they are far enough from the electron
581 
582  Double_t DR1 = reco::deltaR(pjet->eta(), pjet->phi(), myElec1->gsfTrack()->eta(), ele1_sc_phi);
583  Double_t DR2 = reco::deltaR(pjet->eta(), pjet->phi(), myElec2->gsfTrack()->eta(), ele2_sc_phi);
584 
585  if ( ( DR1 > DRJetFromElectron_ ) && ( DR2 > DRJetFromElectron_ ) ) {
586 
587  nPfET[counter] = pjet->et();
588  nPfEta[counter] = pjet->eta();
589  nPfPhi[counter] = pjet->phi();
590  ++counter;
591  }
592  }
593 
594  Int_t *pfJetSorted = new Int_t[nPfJets];
595 
596  TMath::Sort(nPfJets, nPfET, pfJetSorted, true);
597 
598  for ( Int_t i = 0; i < nPfJets; ++i ) {
599 
600  if ( i >= 5 ) {
601  break;
602  }
603 
604  pfjet_et[i] = nPfET[ pfJetSorted[i] ];
605  pfjet_eta[i] = nPfEta[ pfJetSorted[i] ];
606  pfjet_phi[i] = nPfPhi[ pfJetSorted[i] ];
607 
608  }
609 
610  delete [] pfJetSorted;
611  delete [] nPfET;
612  delete [] nPfEta;
613  delete [] nPfPhi;
614 
615  }
616  }
617  else {
618  std::cout << "ZeePlots: Could not get pfJet collection with name " << pfJetCollectionTag_ << std::endl;
619  }
620 
621  }
622 
623  // if the electrons pass the selection
624  // it is meant to be a precalculated selection here, in order to include
625  // conversion rejection too
626  if ( CheckCuts1(myElec1) && CheckCuts2(myElec2) ) {
627  vbtfSele_tree->Fill();
628  }
629 
630  vbtfPresele_tree->Fill();
631 
632 
633 
634  //
635  // _______________________________________________________________________
636  //
637  // histogram production --------------------------------------------------
638  // _______________________________________________________________________
639  //
640  // if you want some preselection: Conv rejection, hit pattern
641 
642 // if ( usePreselection_ ) {
643 //
644 // Bool_t a1 = PassPreselectionCriteria1(myElec1);
645 // Bool_t a2 = PassPreselectionCriteria2(myElec2);
646 //
647 // if ( ! (a1 && a2) ) {
648 // return ;
649 // }
650 // }
651 
652 
653  Bool_t passPre1 = ( usePreselection1_ ) ? PassPreselectionCriteria1(myElec1) : true ;
654  Bool_t passPre2 = ( usePreselection2_ ) ? PassPreselectionCriteria2(myElec2) : true ;
655 
656  if ( ! ( passPre1 && passPre2 ) ) {
657 
658  std::cout << "At least one electron fails preselection: Electron #1 = " << passPre1 << " - Electron #2 = " << passPre2 << std::endl;
659 
660  return ;
661  }
662 
663 
664  TLorentzVector e1;
665  TLorentzVector e2;
666 
667  // math::XYZVector p1 = myElec1->trackMomentumAtVtx();
668  // math::XYZVector p2 = myElec2->trackMomentumAtVtx();
669  // e1.SetPxPyPzE(p1.X(), p1.Y(), p1.Z(), myElec1->caloEnergy());
670  // e2.SetPxPyPzE(p2.X(), p2.Y(), p2.Z(), myElec2->caloEnergy());
671 
672  // Use directly the et,eta,phi from pat::Electron; assume e mass = 0.000511 GeV
673  e1.SetPtEtaPhiM(myElec1->et(),myElec1->eta(),myElec1->phi(),0.000511);
674  e2.SetPtEtaPhiM(myElec2->et(),myElec2->eta(),myElec2->phi(),0.000511);
675 
676 
677  TLorentzVector Z = e1 + e2;
678 
679  Double_t mee = Z.M();
680 
681  // the selection plots:
682  Bool_t pass = ( CheckCuts1(myElec1) && CheckCuts2(myElec2) ) ;
683 
684  //cout << "This event passes? " << pass << ", mee is: " << mee
685  // << " and the histo is filled." << endl;
686 
687  if ( ! pass ) {
688  return ;
689  }
690 
691  h_mee->Fill(mee);
692 
693  if ( TMath::Abs(e1.Eta())<1.479 && TMath::Abs(e2.Eta())<1.479 ) {
694  h_mee_EBEB->Fill(mee) ;
695  }
696  if ( TMath::Abs(e1.Eta())<1.479 && TMath::Abs(e2.Eta())>1.479 ) {
697  h_mee_EBEE->Fill(mee) ;
698  }
699  if ( TMath::Abs(e1.Eta())>1.479 && TMath::Abs(e2.Eta())<1.479 ) {
700  h_mee_EBEE->Fill(mee) ;
701  }
702  if ( TMath::Abs(e1.Eta())>1.479 && TMath::Abs(e2.Eta())>1.479 ) {
703  h_mee_EEEE->Fill(mee) ;
704  }
705 
706  h_Zcand_PT->Fill(Z.Pt());
707  h_Zcand_Y->Fill(Z.Rapidity());
708 
709  h_e_PT->Fill(e1.Pt());
710  h_e_PT->Fill(e2.Pt());
711  h_e_ETA->Fill(e1.Eta());
712  h_e_ETA->Fill(e2.Eta());
713  h_e_PHI->Fill(e1.Phi());
714  h_e_PHI->Fill(e2.Phi());
715 
716  if ( TMath::Abs(myElec1->eta()) < 1.479 ) {
717  h_EB_trkiso->Fill(ReturnCandVar(myElec1,0));
718  h_EB_ecaliso->Fill(ReturnCandVar(myElec1,1));
719  h_EB_hcaliso->Fill(ReturnCandVar(myElec1,2));
720  h_EB_sIetaIeta->Fill(myElec1->scSigmaIEtaIEta());
721  h_EB_dphi->Fill(myElec1->deltaPhiSuperClusterTrackAtVtx());
722  h_EB_deta->Fill(myElec1->deltaEtaSuperClusterTrackAtVtx());
723  h_EB_HoE->Fill(myElec1->hadronicOverEm());
724  }
725  else {
726  h_EE_trkiso->Fill(ReturnCandVar(myElec1,0));
727  h_EE_ecaliso->Fill(ReturnCandVar(myElec1,1));
728  h_EE_hcaliso->Fill(ReturnCandVar(myElec1,2));
729  h_EE_sIetaIeta->Fill(myElec1->scSigmaIEtaIEta());
730  h_EE_dphi->Fill(myElec1->deltaPhiSuperClusterTrackAtVtx());
731  h_EE_deta->Fill(myElec1->deltaEtaSuperClusterTrackAtVtx());
732  h_EE_HoE->Fill(myElec1->hadronicOverEm());
733  }
734 
735  if ( TMath::Abs(myElec2->eta()) < 1.479 ) {
736  h_EB_trkiso->Fill(ReturnCandVar(myElec2,0));
737  h_EB_ecaliso->Fill(ReturnCandVar(myElec2,1));
738  h_EB_hcaliso->Fill(ReturnCandVar(myElec2,2));
739  h_EB_sIetaIeta->Fill(myElec2->scSigmaIEtaIEta());
740  h_EB_dphi->Fill(myElec2->deltaPhiSuperClusterTrackAtVtx());
741  h_EB_deta->Fill(myElec2->deltaEtaSuperClusterTrackAtVtx());
742  h_EB_HoE->Fill(myElec2->hadronicOverEm());
743  }
744  else {
745  h_EE_trkiso->Fill(ReturnCandVar(myElec2,0));
746  h_EE_ecaliso->Fill(ReturnCandVar(myElec2,1));
747  h_EE_hcaliso->Fill(ReturnCandVar(myElec2,2));
748  h_EE_sIetaIeta->Fill(myElec2->scSigmaIEtaIEta());
749  h_EE_dphi->Fill(myElec2->deltaPhiSuperClusterTrackAtVtx());
750  h_EE_deta->Fill(myElec2->deltaEtaSuperClusterTrackAtVtx());
751  h_EE_HoE->Fill(myElec2->hadronicOverEm());
752  }
753 
754  //Double_tscEta=myElec->superCluster()->eta();
755  //Double_tscPhi=myElec->superCluster()->phi();
756  //Double_tscEt=myElec->superCluster()->energy()/cosh(scEta);
757 
758 }
759 
760 
761 /***********************************************************************
762  *
763  * Checking Cuts and making selections:
764  * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
765  * all the available methods take input a pointer to a pat::Electron
766  *
767  * Bool_t CheckCuts(const pat::Electron *):
768  * true if the input selection is satisfied
769  * Bool_t CheckCutsInverse(const pat::Electron *ele):
770  * true if the cuts with inverted the ones specified in the
771  * cfg are satisfied
772  * Bool_t CheckCutsNminusOne(const pat::Electron *ele, Int_t jj):
773  * true if all the cuts with cut #jj ignored are satisfied
774  *
775  ***********************************************************************/
777 {
778  if ( usePrecalcID1_ ) {
779 
780  if ( ! ele-> isElectronIDAvailable(usePrecalcIDType1_) ) {
781  std::cout << "Error! not existing ID with name: " << usePrecalcIDType1_ << " function will return true!" << std::endl;
782  return true;
783  }
784 
785  Double_t val = ele->electronID( usePrecalcIDType1_ );
786 
787  if ( usePrecalcIDSign1_ == "<" ) {
788  return ( val < usePrecalcIDValue1_ ) ;
789  }
790  else if ( usePrecalcIDSign1_ == ">" ) {
791  return ( val > usePrecalcIDValue1_ ) ;
792  }
793  else { // equality: it returns 0,1,2,3 but as Float_t
794  return ( TMath::Abs(val-usePrecalcIDValue1_) < 0.1 );
795  }
796  }
797  else {
798 
799  for ( Int_t i = 0; i < nBarrelVars_; ++i ) {
800  if ( ! CheckCut1(ele,i) ) {
801  return false;
802  }
803  }
804 
805  return true;
806  }
807 }
808 
809 
811 {
812  if ( usePrecalcID2_ ) {
813  if ( ! ele-> isElectronIDAvailable(usePrecalcIDType2_) ) {
814  std::cout << "Error! not existing ID with name: " << usePrecalcIDType2_ << " function will return true!" << std::endl;
815  return true;
816  }
817 
818  Double_t val = ele->electronID( usePrecalcIDType2_ );
819 
820  if ( usePrecalcIDSign2_ == "<" ) {
821  return ( val < usePrecalcIDValue2_ ) ;
822  }
823  else if ( usePrecalcIDSign2_ == ">" ) {
824  return ( val > usePrecalcIDValue2_ ) ;
825  }
826  else { // equality: it returns 0,1,2,3 but as Float_t
827  return ( TMath::Abs(val-usePrecalcIDValue2_) < 0.1 ) ;
828  }
829  }
830  else {
831 
832  for ( Int_t i = 0; i < nBarrelVars_; ++i ) {
833  if ( ! CheckCut2(ele, i) ) {
834  return false;
835  }
836  }
837 
838  return true;
839  }
840 }
841 
842 
843 
845 {
846  for ( Int_t i = 0; i < nBarrelVars_; ++i ) {
847 
848  if ( CheckCut1Inv(ele,i) == false ) {
849  return false;
850  }
851 
852  }
853 
854  return true;
855 }
856 
857 
859 {
860  for (Int_t i = 0; i < nBarrelVars_; ++i ) {
861 
862  if ( CheckCut2Inv(ele,i) == false ) {
863  return false;
864  }
865  }
866 
867  return true;
868 }
869 
870 
871 
873 {
874  for ( Int_t i = 0; i < nBarrelVars_ ; ++i ) {
875 
876  if ( i == jj ) {
877  continue;
878  }
879 
880  if ( CheckCut1(ele, i) == false ) {
881  return false;
882  }
883 
884  }
885 
886  return true;
887 }
888 
890 {
891  for ( Int_t i = 0; i < nBarrelVars_; ++i ) {
892 
893  if ( i == jj ) {
894  continue;
895  }
896 
897  if ( CheckCut2(ele, i) == false ) {
898  return false;
899  }
900  }
901 
902  return true;
903 }
904 
905 
906 
907 
908 Bool_t ZeePlots::CheckCut1(const pat::Electron *ele, Int_t i) {
909 
910  Double_t fabseta = TMath::Abs(ele->superCluster()->eta());
911 
912  if ( fabseta < 1.479 ) {
913  return ( TMath::Abs(ReturnCandVar(ele, i)) < CutVars1_[i] ) ;
914  }
915 
916  return ( TMath::Abs(ReturnCandVar(ele, i)) < CutVars1_[i+nBarrelVars_] ) ;
917 }
918 
919 
920 Bool_t ZeePlots::CheckCut2(const pat::Electron *ele, Int_t i) {
921 
922  Double_t fabseta = TMath::Abs(ele->superCluster()->eta());
923 
924  if ( fabseta < 1.479 ) {
925  return ( TMath::Abs(ReturnCandVar(ele, i)) < CutVars2_[i] ) ;
926  }
927 
928  return ( TMath::Abs(ReturnCandVar(ele, i)) < CutVars2_[i+nBarrelVars_] ) ;
929 }
930 
931 
932 
933 Bool_t ZeePlots::CheckCut1Inv(const pat::Electron *ele, Int_t i) {
934 
935  Double_t fabseta = TMath::Abs(ele->superCluster()->eta());
936 
937  if ( fabseta < 1.479 ) {
938 
939  if ( InvVars1_[i] ) {
940  return ( TMath::Abs(ReturnCandVar(ele, i)) > CutVars1_[i] ) ;
941  }
942 
943  return ( TMath::Abs(ReturnCandVar(ele, i)) < CutVars1_[i] ) ;
944 
945  }
946 
947  if ( InvVars1_[i+nBarrelVars_] ) {
948  if ( InvVars1_[i] ) {
949  return ( TMath::Abs(ReturnCandVar(ele, i)) > CutVars1_[i+nBarrelVars_] ) ;
950  }
951  }
952 
953  return ( TMath::Abs(ReturnCandVar(ele, i)) < CutVars1_[i+nBarrelVars_] ) ;
954 }
955 
956 
957 Bool_t ZeePlots::CheckCut2Inv(const pat::Electron *ele, Int_t i) {
958 
959  Double_t fabseta = TMath::Abs(ele->superCluster()->eta());
960 
961  if ( fabseta < 1.479 ) {
962 
963  if ( InvVars2_[i] ) {
964  return ( TMath::Abs(ReturnCandVar(ele, i)) > CutVars2_[i] ) ;
965  }
966 
967  return ( TMath::Abs(ReturnCandVar(ele, i)) < CutVars2_[i] ) ;
968  }
969 
970  if ( InvVars2_[i+nBarrelVars_] ) {
971  if ( InvVars2_[i] ) {
972  return ( TMath::Abs(ReturnCandVar(ele, i)) > CutVars2_[i+nBarrelVars_] ) ;
973  }
974  }
975 
976  return ( TMath::Abs(ReturnCandVar(ele, i)) < CutVars2_[i+nBarrelVars_] ) ;
977 }
978 
979 
980 
981 Double_t ZeePlots::ReturnCandVar(const pat::Electron *ele, Int_t i) {
982 
983  if ( i == 0 ) {
984  return ( ele->dr03TkSumPt() / ele->p4().Pt() ) ;
985  }
986  else if ( i == 1 ) {
987  return ( ele->dr03EcalRecHitSumEt() / ele->p4().Pt() ) ;
988  }
989  else if ( i == 2 ) {
990  return ( ele->dr03HcalTowerSumEt() / ele->p4().Pt() ) ;
991  }
992  else if ( i == 3 ) {
993  return ( ele->scSigmaIEtaIEta() ) ;
994  }
995  else if ( i == 4 ) {
996  return ( ele->deltaPhiSuperClusterTrackAtVtx() ) ;
997  }
998  else if ( i == 5 ) {
999  return ( ele->deltaEtaSuperClusterTrackAtVtx() ) ;
1000  }
1001  else if ( i == 6 ) {
1002  return ( ele->hadronicOverEm() ) ;
1003  }
1004  else if ( i == 7 ) {
1005  // pedestal subtraction is only in barrel
1006  if ( ele->isEB() ) {
1007  return ( ( ele->dr03TkSumPt() + TMath::Max( 0.0 , ele->dr03EcalRecHitSumEt()-1.0 ) + ele->dr03HcalTowerSumEt() ) / ele->p4().Pt() );
1008  }
1009  else {
1010  return ( ( ele->dr03TkSumPt() + ele->dr03EcalRecHitSumEt() + ele->dr03HcalTowerSumEt() ) / ele->p4().Pt() ) ;
1011  }
1012  }
1013 // else if ( i == 8 ) { return ele->gsfTrack()->dxy(bspotPosition_); }
1014  else if ( i == 8 ) {
1015  return ( ele->dB() ) ;
1016  }
1017  else if ( i == 9 ) {
1018  return ( ele->eSuperClusterOverP() ) ;
1019  }
1020  else if ( i == 10 ) {
1021  return ( ele->userIsolation(pat::TrackIso) ) ;
1022  }
1023  else if ( i == 11 ) {
1024  return ( ele->userIsolation(pat::EcalIso) ) ;
1025  }
1026  else if ( i == 12 ) {
1027  return ( ele->userIsolation(pat::HcalIso) ) ;
1028  }
1029 
1030  std::cout << "Error in ZeePlots::ReturnCandVar" << std::endl;
1031 
1032  return (-1.0) ;
1033 
1034 }
1035 
1036 
1037 //Bool_t ZeePlots::CheckCuts2( const pat::Electron *ele)
1038 //{
1039 // for (Int_t i = 0; i<nBarrelVars_; ++i) {
1040 // if ( ! CheckCut2(ele, i)) return false;
1041 // }
1042 // return true;
1043 //}
1044 
1045 
1046 
1047 //
1048 // special preselection criteria
1050 
1051  Bool_t passConvRej = true;
1052  Bool_t passPXB = true;
1053  Bool_t passEMH = true;
1054 
1055  if ( useConversionRejection1_ ) {
1056 
1057  if ( ele->hasUserInt("PassConversionRejection") ) { //std::cout << "con rej: " << ele->userInt("PassConversionRejection") << std::endl;
1058 
1059  if ( ! (ele->userInt("PassConversionRejection") == 1) ) {
1060  passConvRej = false;
1061  }
1062  }
1063  else {
1064  std::cout << "ZeePlots: WARNING: Conversion Rejection Request for electron #1 Disregarded: " << "you must calculate it before " << std::endl;
1065  }
1066  }
1067 
1068  if ( useValidFirstPXBHit1_ ) {
1069 
1070  if ( ele->hasUserInt("PassValidFirstPXBHit") ) { //std::cout << "valid1stPXB: " << ele->userInt("PassValidFirstPXBHit") << std::endl;
1071 
1072  if ( ! (ele->userInt("PassValidFirstPXBHit") == 1) ) {
1073  passPXB = false;
1074  }
1075  }
1076  else {
1077  std::cout << "ZeePlots: WARNING: Valid First PXB Hit Request for electron #1 Disregarded: " << "you must calculate it before " << std::endl;
1078  }
1079  }
1080 
1081  if ( useExpectedMissingHits1_ ) {
1082 
1083  if ( ele->hasUserInt("NumberOfExpectedMissingHits") ) { //std::cout << "missing hits: " << ele->userInt("NumberOfExpectedMissingHits") << std::endl;
1084 
1085  if ( ! (ele->userInt("NumberOfExpectedMissingHits") <= maxNumberOfExpectedMissingHits1_) ) {
1086  passEMH = false;
1087  }
1088  }
1089  else {
1090  std::cout << "ZeePlots: WARNING: Number of Expected Missing Hits Request for electron #1 Disregarded: " << "you must calculate it before " << std::endl;
1091  }
1092  }
1093 
1094  return ( passConvRej && passPXB && passEMH ) ;
1095 }
1096 
1098 
1099  Bool_t passConvRej = true;
1100  Bool_t passPXB = true;
1101  Bool_t passEMH = true;
1102 
1103  if ( useConversionRejection2_ ) {
1104 
1105  if ( ele->hasUserInt("PassConversionRejection") ) { //std::cout << "con rej: " << ele->userInt("PassConversionRejection") << std::endl;
1106 
1107  if ( ! (ele->userInt("PassConversionRejection") == 1) ) {
1108  passConvRej = false;
1109  }
1110  }
1111  else {
1112  std::cout << "ZeePlots: WARNING: Conversion Rejection Request for electron #2 Disregarded: " << "you must calculate it before " << std::endl;
1113  }
1114  }
1115 
1116  if ( useValidFirstPXBHit2_ ) {
1117 
1118  if ( ele->hasUserInt("PassValidFirstPXBHit") ) { //std::cout << "valid1stPXB: " << ele->userInt("PassValidFirstPXBHit") << std::endl;
1119 
1120  if ( ! (ele->userInt("PassValidFirstPXBHit") == 1) ) {
1121  passPXB = false;
1122  }
1123  }
1124  else {
1125  std::cout << "ZeePlots: WARNING: Valid First PXB Hit Request for electron #2 Disregarded: " << "you must calculate it before " << std::endl;
1126  }
1127  }
1128 
1129  if ( useExpectedMissingHits2_ ) {
1130 
1131  if ( ele->hasUserInt("NumberOfExpectedMissingHits") ) { //std::cout << "missing hits: " << ele->userInt("NumberOfExpectedMissingHits") << std::endl;
1132 
1133  if ( ! (ele->userInt("NumberOfExpectedMissingHits") <= maxNumberOfExpectedMissingHits2_) ) {
1134  passEMH = false;
1135  }
1136  }
1137  else {
1138  std::cout << "ZeePlots: WARNING: Number of Expected Missing Hits Request for electron #2 Disregarded: " << "you must calculate it before " << std::endl;
1139  }
1140  }
1141 
1142  return ( passConvRej && passPXB && passEMH ) ;
1143 }
1144 
1145 
1146 
1147 
1148 
1149 //
1150 // ------------ method called once each job just before starting event loop --
1151 void
1153 {
1154  //std::cout << "In beginJob()" << std::endl;
1155 
1156  h_mee = new TH1F("h_mee" , "h_mee" , 200 , 0.0 , 200.0) ;
1157  h_mee_EBEB = new TH1F("h_mee_EBEB" , "h_mee_EBEB" , 200 , 0.0 , 200.0) ;
1158  h_mee_EBEE = new TH1F("h_mee_EBEE" , "h_mee_EBEE" , 200 , 0.0 , 200.0) ;
1159  h_mee_EEEE = new TH1F("h_mee_EEEE" , "h_mee_EEEE" , 200 , 0.0 , 200.0) ;
1160  h_Zcand_PT = new TH1F("h_Zcand_PT" , "h_Zcand_PT" , 200 , 0.0 , 100.0) ;
1161  h_Zcand_Y = new TH1F("h_Zcand_Y" , "h_Zcand_Y" , 200 , -5.0 , 5.0) ;
1162  h_e_PT = new TH1F("h_e_PT" , "h_e_PT" , 200 , 0.0 , 100.0) ;
1163  h_e_ETA = new TH1F("h_e_ETA" , "h_e_ETA" , 200 , -3.0 , 3.0) ;
1164  h_e_PHI = new TH1F("h_e_PHI" , "h_e_PHI" , 200 , -4.0 , 4.0) ;
1165 
1166 
1167  //VALIDATION PLOTS
1168  // EB
1169  h_EB_trkiso = new TH1F("h_EB_trkiso" , "h_EB_trkiso" , 200 , 0.00 , 9.00) ;
1170  h_EB_ecaliso = new TH1F("h_EB_ecaliso" , "h_EB_ecaliso" , 200 , 0.00 , 9.00) ;
1171  h_EB_hcaliso = new TH1F("h_EB_hcaliso" , "h_EB_hcaliso" , 200 , 0.00 , 9.00) ;
1172  h_EB_sIetaIeta = new TH1F("h_EB_sIetaIeta" , "h_EB_sIetaIeta" , 200 , 0.00 , 0.02) ;
1173  h_EB_dphi = new TH1F("h_EB_dphi" , "h_EB_dphi" , 200 , -0.03 , 0.03) ;
1174  h_EB_deta = new TH1F("h_EB_deta" , "h_EB_deta" , 200 , -0.01 , 0.01) ;
1175  h_EB_HoE = new TH1F("h_EB_HoE" , "h_EB_HoE" , 200 , 0.00 , 0.20) ;
1176  // EE
1177  h_EE_trkiso = new TH1F("h_EE_trkiso" , "h_EE_trkiso" , 200 , 0.00 , 9.00) ;
1178  h_EE_ecaliso = new TH1F("h_EE_ecaliso" , "h_EE_ecaliso" , 200 , 0.00 , 9.00) ;
1179  h_EE_hcaliso = new TH1F("h_EE_hcaliso" , "h_EE_hcaliso" , 200 , 0.00 , 9.00) ;
1180  h_EE_sIetaIeta = new TH1F("h_EE_sIetaIeta" , "h_EE_sIetaIeta" , 200 , 0.00 , 0.10) ;
1181  h_EE_dphi = new TH1F("h_EE_dphi" , "h_EE_dphi" , 200 , -0.03 , 0.03) ;
1182  h_EE_deta = new TH1F("h_EE_deta" , "h_EE_deta" , 200 , -0.01 , 0.01) ;
1183  h_EE_HoE = new TH1F("h_EE_HoE" , "h_EE_HoE" , 200 , 0.00 , 0.20) ;
1184 
1185 
1186  // if you add some new variable change the nBarrelVars_ accordingly
1187  // reminder: in the current implementation you must have the same number
1188  // of vars in both barrel and endcaps
1189 
1190  nBarrelVars_ = 13;
1191 
1192  //
1193  // Put EB variables together and EE variables together
1194  // number of barrel variables = number of endcap variable
1195  // if you don't want to use some variable put a very high cut
1196 
1197  // 1st Leg variables
1198  CutVars1_.push_back( trackIso1_EB_ ) ; // 0
1199  CutVars1_.push_back( ecalIso1_EB_ ) ; // 1
1200  CutVars1_.push_back( hcalIso1_EB_ ) ; // 2
1201  CutVars1_.push_back( sihih1_EB_ ) ; // 3
1202  CutVars1_.push_back( dphi1_EB_ ) ; // 4
1203  CutVars1_.push_back( deta1_EB_ ) ; // 5
1204  CutVars1_.push_back( hoe1_EB_ ) ; // 6
1205  CutVars1_.push_back( cIso1_EB_ ) ; // 7
1206  CutVars1_.push_back( tip_bspot1_EB_ ) ; // 8
1207  CutVars1_.push_back( eop1_EB_ ) ; // 9
1208  CutVars1_.push_back( trackIsoUser1_EB_ ) ; // 10
1209  CutVars1_.push_back( ecalIsoUser1_EB_ ) ; // 11
1210  CutVars1_.push_back( hcalIsoUser1_EB_ ) ; // 12
1211 
1212  CutVars1_.push_back( trackIso1_EE_ ) ; // 0
1213  CutVars1_.push_back( ecalIso1_EE_ ) ; // 1
1214  CutVars1_.push_back( hcalIso1_EE_ ) ; // 2
1215  CutVars1_.push_back( sihih1_EE_ ) ; // 3
1216  CutVars1_.push_back( dphi1_EE_ ) ; // 4
1217  CutVars1_.push_back( deta1_EE_ ) ; // 5
1218  CutVars1_.push_back( hoe1_EE_ ) ; // 6
1219  CutVars1_.push_back( cIso1_EE_ ) ; // 7
1220  CutVars1_.push_back( tip_bspot1_EE_ ) ; // 8
1221  CutVars1_.push_back( eop1_EE_ ) ; // 9
1222  CutVars1_.push_back( trackIsoUser1_EE_ ) ; // 10
1223  CutVars1_.push_back( ecalIsoUser1_EE_ ) ; // 11
1224  CutVars1_.push_back( hcalIsoUser1_EE_ ) ; // 12
1225 
1226  InvVars1_.push_back( trackIso1_EB_inv ) ; // 0
1227  InvVars1_.push_back( ecalIso1_EB_inv ) ; // 1
1228  InvVars1_.push_back( hcalIso1_EB_inv ) ; // 2
1229  InvVars1_.push_back( sihih1_EB_inv ) ; // 3
1230  InvVars1_.push_back( dphi1_EB_inv ) ; // 4
1231  InvVars1_.push_back( deta1_EB_inv ) ; // 5
1232  InvVars1_.push_back( hoe1_EB_inv ) ; // 6
1233  InvVars1_.push_back( cIso1_EB_inv ) ; // 7
1234  InvVars1_.push_back( tip_bspot1_EB_inv ) ; // 8
1235  InvVars1_.push_back( eop1_EB_inv ) ; // 9
1236  InvVars1_.push_back( trackIsoUser1_EB_inv ); // 10
1237  InvVars1_.push_back( ecalIsoUser1_EB_inv ) ; // 11
1238  InvVars1_.push_back( hcalIsoUser1_EB_inv ) ; // 12
1239 
1240  InvVars1_.push_back( trackIso1_EE_inv ) ; // 0
1241  InvVars1_.push_back( ecalIso1_EE_inv ) ; // 1
1242  InvVars1_.push_back( hcalIso1_EE_inv ) ; // 2
1243  InvVars1_.push_back( sihih1_EE_inv ) ; // 3
1244  InvVars1_.push_back( dphi1_EE_inv ) ; // 4
1245  InvVars1_.push_back( deta1_EE_inv ) ; // 5
1246  InvVars1_.push_back( hoe1_EE_inv ) ; // 6
1247  InvVars1_.push_back( cIso1_EE_inv ) ; // 7
1248  InvVars1_.push_back( tip_bspot1_EE_inv ) ; // 8
1249  InvVars1_.push_back( eop1_EE_inv ) ; // 9
1250  InvVars1_.push_back( trackIsoUser1_EE_inv ); // 10
1251  InvVars1_.push_back( ecalIsoUser1_EE_inv ) ; // 11
1252  InvVars1_.push_back( hcalIsoUser1_EE_inv ) ; // 12
1253 
1254 
1255  // 2nd Leg variables
1256  CutVars2_.push_back( trackIso2_EB_ ) ; // 0
1257  CutVars2_.push_back( ecalIso2_EB_ ) ; // 1
1258  CutVars2_.push_back( hcalIso2_EB_ ) ; // 2
1259  CutVars2_.push_back( sihih2_EB_ ) ; // 3
1260  CutVars2_.push_back( dphi2_EB_ ) ; // 4
1261  CutVars2_.push_back( deta2_EB_ ) ; // 5
1262  CutVars2_.push_back( hoe2_EB_ ) ; // 6
1263  CutVars2_.push_back( cIso2_EB_ ) ; // 7
1264  CutVars2_.push_back( tip_bspot2_EB_ ) ; // 8
1265  CutVars2_.push_back( eop2_EB_ ) ; // 9
1266  CutVars2_.push_back( trackIsoUser2_EB_ ) ; // 10
1267  CutVars2_.push_back( ecalIsoUser2_EB_ ) ; // 11
1268  CutVars2_.push_back( hcalIsoUser2_EB_ ) ; // 12
1269 
1270  CutVars2_.push_back( trackIso2_EE_ ) ; // 0
1271  CutVars2_.push_back( ecalIso2_EE_ ) ; // 1
1272  CutVars2_.push_back( hcalIso2_EE_ ) ; // 2
1273  CutVars2_.push_back( sihih2_EE_ ) ; // 3
1274  CutVars2_.push_back( dphi2_EE_ ) ; // 4
1275  CutVars2_.push_back( deta2_EE_ ) ; // 5
1276  CutVars2_.push_back( hoe2_EE_ ) ; // 6
1277  CutVars2_.push_back( cIso2_EE_ ) ; // 7
1278  CutVars2_.push_back( tip_bspot2_EE_ ) ; // 8
1279  CutVars2_.push_back( eop2_EE_ ) ; // 9
1280  CutVars2_.push_back( trackIsoUser2_EE_ ) ; // 10
1281  CutVars2_.push_back( ecalIsoUser2_EE_ ) ; // 11
1282  CutVars2_.push_back( hcalIsoUser2_EE_ ) ; // 12
1283 
1284  InvVars2_.push_back( trackIso2_EB_inv ) ; // 0
1285  InvVars2_.push_back( ecalIso2_EB_inv ) ; // 1
1286  InvVars2_.push_back( hcalIso2_EB_inv ) ; // 2
1287  InvVars2_.push_back( sihih2_EB_inv ) ; // 3
1288  InvVars2_.push_back( dphi2_EB_inv ) ; // 4
1289  InvVars2_.push_back( deta2_EB_inv ) ; // 5
1290  InvVars2_.push_back( hoe2_EB_inv ) ; // 6
1291  InvVars2_.push_back( cIso2_EB_inv ) ; // 7
1292  InvVars2_.push_back( tip_bspot2_EB_inv ) ; // 8
1293  InvVars2_.push_back( eop2_EB_inv ) ; // 9
1294  InvVars2_.push_back( trackIsoUser2_EB_inv ); // 10
1295  InvVars2_.push_back( ecalIsoUser2_EB_inv ) ; // 11
1296  InvVars2_.push_back( hcalIsoUser2_EB_inv ) ; // 12
1297 
1298  InvVars2_.push_back( trackIso2_EE_inv ) ; // 0
1299  InvVars2_.push_back( ecalIso2_EE_inv ) ; // 1
1300  InvVars2_.push_back( hcalIso2_EE_inv ) ; // 2
1301  InvVars2_.push_back( sihih2_EE_inv ) ; // 3
1302  InvVars2_.push_back( dphi2_EE_inv ) ; // 4
1303  InvVars2_.push_back( deta2_EE_inv ) ; // 5
1304  InvVars2_.push_back( hoe2_EE_inv ) ; // 6
1305  InvVars2_.push_back( cIso2_EE_inv ) ; // 7
1306  InvVars2_.push_back( tip_bspot2_EE_inv ) ; // 8
1307  InvVars2_.push_back( eop2_EE_inv ) ; // 9
1308  InvVars2_.push_back( trackIsoUser2_EE_inv ); // 10
1309  InvVars2_.push_back( ecalIsoUser2_EE_inv ) ; // 11
1310  InvVars2_.push_back( hcalIsoUser2_EE_inv ) ; // 12
1311 
1312  // ________________________________________________________________________
1313  //
1314  // The VBTF Root Tuples ---------------------------------------------------
1315  // ________________________________________________________________________
1316  //
1317  ZEE_VBTFselectionFile_ = new TFile(TString(ZEE_VBTFselectionFileName_) , "RECREATE");
1318 
1319  vbtfSele_tree = new TTree("vbtfSele_tree", "Tree to store the Z Candidates that pass the VBTF selection");
1320 
1321  vbtfSele_tree->Branch("runNumber", &runNumber, "runNumber/I");
1322  vbtfSele_tree->Branch("eventNumber", &eventNumber, "eventNumber/L");
1323  vbtfSele_tree->Branch("lumiSection", &lumiSection, "lumiSection/I");
1324 
1325  // for ele 1
1326  vbtfSele_tree->Branch("ele1_sc_gsf_et", &ele1_sc_gsf_et,"ele1_sc_gsf_et/F");
1327  vbtfSele_tree->Branch("ele1_sc_energy", &ele1_sc_energy,"ele1_sc_energy/F");
1328  vbtfSele_tree->Branch("ele1_sc_eta", &ele1_sc_eta,"ele1_sc_eta/F");
1329  vbtfSele_tree->Branch("ele1_sc_phi", &ele1_sc_phi,"ele1_sc_phi/F");
1330  vbtfSele_tree->Branch("ele1_cand_et", &ele1_cand_et, "ele1_cand_et/F");
1331  vbtfSele_tree->Branch("ele1_cand_eta", &ele1_cand_eta,"ele1_cand_eta/F");
1332  vbtfSele_tree->Branch("ele1_cand_phi",&ele1_cand_phi,"ele1_cand_phi/F");
1333  vbtfSele_tree->Branch("ele1_iso_track",&ele1_iso_track,"ele1_iso_track/F");
1334  vbtfSele_tree->Branch("ele1_iso_ecal",&ele1_iso_ecal,"ele1_iso_ecal/F");
1335  vbtfSele_tree->Branch("ele1_iso_hcal",&ele1_iso_hcal,"ele1_iso_hcal/F");
1336  vbtfSele_tree->Branch("ele1_id_sihih",&ele1_id_sihih,"ele1_id_sihih/F");
1337  vbtfSele_tree->Branch("ele1_id_deta",&ele1_id_deta,"ele1_id_deta/F");
1338  vbtfSele_tree->Branch("ele1_id_dphi",&ele1_id_dphi,"ele1_id_dphi/F");
1339  vbtfSele_tree->Branch("ele1_id_hoe",&ele1_id_hoe,"ele1_id_hoe/F");
1340  vbtfSele_tree->Branch("ele1_cr_mhitsinner",&ele1_cr_mhitsinner,"ele1_cr_mhitsinner/I");
1341  vbtfSele_tree->Branch("ele1_cr_dcot",&ele1_cr_dcot,"ele1_cr_dcot/F");
1342  vbtfSele_tree->Branch("ele1_cr_dist",&ele1_cr_dist,"ele1_cr_dist/F");
1343  vbtfSele_tree->Branch("ele1_vx",&ele1_vx,"ele1_vx/F");
1344  vbtfSele_tree->Branch("ele1_vy",&ele1_vy,"ele1_vy/F");
1345  vbtfSele_tree->Branch("ele1_vz",&ele1_vz,"ele1_vz/F");
1346  vbtfSele_tree->Branch("ele1_gsfCharge",&ele1_gsfCharge,"ele1_gsfCharge/I");
1347  vbtfSele_tree->Branch("ele1_ctfCharge",&ele1_ctfCharge,"ele1_ctfCharge/I");
1348  vbtfSele_tree->Branch("ele1_scPixCharge",&ele1_scPixCharge,"ele1_scPixCharge/I");
1349  vbtfSele_tree->Branch("ele1_eop",&ele1_eop,"ele1_eop/F");
1350  vbtfSele_tree->Branch("ele1_tip_bs",&ele1_tip_bs,"ele1_tip_bs/F");
1351  vbtfSele_tree->Branch("ele1_tip_pv",&ele1_tip_pv,"ele1_tip_pv/F");
1352 
1353  // for ele 2
1354  vbtfSele_tree->Branch("ele2_sc_gsf_et", &ele2_sc_gsf_et,"ele2_sc_gsf_et/F");
1355  vbtfSele_tree->Branch("ele2_sc_energy", &ele2_sc_energy,"ele2_sc_energy/F");
1356  vbtfSele_tree->Branch("ele2_sc_eta", &ele2_sc_eta,"ele2_sc_eta/F");
1357  vbtfSele_tree->Branch("ele2_sc_phi", &ele2_sc_phi,"ele2_sc_phi/F");
1358  vbtfSele_tree->Branch("ele2_cand_et", &ele2_cand_et, "ele2_cand_et/F");
1359  vbtfSele_tree->Branch("ele2_cand_eta", &ele2_cand_eta,"ele2_cand_eta/F");
1360  vbtfSele_tree->Branch("ele2_cand_phi",&ele2_cand_phi,"ele2_cand_phi/F");
1361  vbtfSele_tree->Branch("ele2_iso_track",&ele2_iso_track,"ele2_iso_track/F");
1362  vbtfSele_tree->Branch("ele2_iso_ecal",&ele2_iso_ecal,"ele2_iso_ecal/F");
1363  vbtfSele_tree->Branch("ele2_iso_hcal",&ele2_iso_hcal,"ele2_iso_hcal/F");
1364  vbtfSele_tree->Branch("ele2_id_sihih",&ele2_id_sihih,"ele2_id_sihih/F");
1365  vbtfSele_tree->Branch("ele2_id_deta",&ele2_id_deta,"ele2_id_deta/F");
1366  vbtfSele_tree->Branch("ele2_id_dphi",&ele2_id_dphi,"ele2_id_dphi/F");
1367  vbtfSele_tree->Branch("ele2_id_hoe",&ele2_id_hoe,"ele2_id_hoe/F");
1368  vbtfSele_tree->Branch("ele2_cr_mhitsinner",&ele2_cr_mhitsinner,"ele2_cr_mhitsinner/I");
1369  vbtfSele_tree->Branch("ele2_cr_dcot",&ele2_cr_dcot,"ele2_cr_dcot/F");
1370  vbtfSele_tree->Branch("ele2_cr_dist",&ele2_cr_dist,"ele2_cr_dist/F");
1371  vbtfSele_tree->Branch("ele2_vx",&ele2_vx,"ele2_vx/F");
1372  vbtfSele_tree->Branch("ele2_vy",&ele2_vy,"ele2_vy/F");
1373  vbtfSele_tree->Branch("ele2_vz",&ele2_vz,"ele2_vz/F");
1374  vbtfSele_tree->Branch("ele2_gsfCharge",&ele2_gsfCharge,"ele2_gsfCharge/I");
1375  vbtfSele_tree->Branch("ele2_ctfCharge",&ele2_ctfCharge,"ele2_ctfCharge/I");
1376  vbtfSele_tree->Branch("ele2_scPixCharge",&ele2_scPixCharge,"ele2_scPixCharge/I");
1377  vbtfSele_tree->Branch("ele2_eop",&ele2_eop,"ele2_eop/F");
1378  vbtfSele_tree->Branch("ele2_tip_bs",&ele2_tip_bs,"ele2_tip_bs/F");
1379  vbtfSele_tree->Branch("ele2_tip_pv",&ele2_tip_pv,"ele2_tip_pv/F");
1380  //
1381  vbtfSele_tree->Branch("pv_x1",&pv_x1,"pv_x1/F");
1382  vbtfSele_tree->Branch("pv_y1",&pv_y1,"pv_y1/F");
1383  vbtfSele_tree->Branch("pv_z1",&pv_z1,"pv_z1/F");
1384  //
1385  vbtfSele_tree->Branch("pv_x2",&pv_x2,"pv_x2/F");
1386  vbtfSele_tree->Branch("pv_y2",&pv_y2,"pv_y2/F");
1387  vbtfSele_tree->Branch("pv_z2",&pv_z2,"pv_z2/F");
1388  //
1389  vbtfSele_tree->Branch("event_caloMET",&event_caloMET,"event_caloMET/F");
1390  vbtfSele_tree->Branch("event_pfMET",&event_pfMET,"event_pfMET/F");
1391  vbtfSele_tree->Branch("event_tcMET",&event_tcMET,"event_tcMET/F");
1392  vbtfSele_tree->Branch("event_caloMET_phi",&event_caloMET_phi,"event_caloMET_phi/F");
1393  vbtfSele_tree->Branch("event_pfMET_phi",&event_pfMET_phi,"event_pfMET_phi/F");
1394  vbtfSele_tree->Branch("event_tcMET_phi",&event_tcMET_phi,"event_tcMET_phi/F");
1395 
1396  vbtfSele_tree->Branch("event_Mee",&event_Mee,"event_Mee/F");
1397 
1398  //
1399  // the extra jet variables:
1401 
1402  vbtfSele_tree->Branch("calojet_et",calojet_et,"calojet_et[5]/F");
1403  vbtfSele_tree->Branch("calojet_eta",calojet_eta,"calojet_eta[5]/F");
1404  vbtfSele_tree->Branch("calojet_phi",calojet_phi,"calojet_phi[5]/F");
1405  vbtfSele_tree->Branch("pfjet_et",pfjet_et,"pfjet_et[5]/F");
1406  vbtfSele_tree->Branch("pfjet_eta",pfjet_eta,"pfjet_eta[5]/F");
1407  vbtfSele_tree->Branch("pfjet_phi",pfjet_phi,"pfjet_phi[5]/F");
1408 
1409  }
1410 
1411  vbtfSele_tree->Branch("event_datasetTag",&event_datasetTag,"event_dataSetTag/I");
1412 
1413  // everything after preselection
1414  ZEE_VBTFpreseleFile_ = new TFile(TString(ZEE_VBTFpreseleFileName_) , "RECREATE");
1415 
1416  vbtfPresele_tree = new TTree("vbtfPresele_tree", "Tree to store the Z Candidates that pass the VBTF preselection");
1417 
1418  vbtfPresele_tree->Branch("runNumber", &runNumber, "runNumber/I");
1419  vbtfPresele_tree->Branch("eventNumber", &eventNumber, "eventNumber/L");
1420  vbtfPresele_tree->Branch("lumiSection", &lumiSection, "lumiSection/I");
1421 
1422  // for ele 1
1423  vbtfPresele_tree->Branch("ele1_sc_gsf_et", &ele1_sc_gsf_et,"ele1_sc_gsf_et/F");
1424  vbtfPresele_tree->Branch("ele1_sc_energy", &ele1_sc_energy,"ele1_sc_energy/F");
1425  vbtfPresele_tree->Branch("ele1_sc_eta", &ele1_sc_eta,"ele1_sc_eta/F");
1426  vbtfPresele_tree->Branch("ele1_sc_phi", &ele1_sc_phi,"ele1_sc_phi/F");
1427  vbtfPresele_tree->Branch("ele1_cand_et", &ele1_cand_et, "ele1_cand_et/F");
1428  vbtfPresele_tree->Branch("ele1_cand_eta", &ele1_cand_eta,"ele1_cand_eta/F");
1429  vbtfPresele_tree->Branch("ele1_cand_phi",&ele1_cand_phi,"ele1_cand_phi/F");
1430  vbtfPresele_tree->Branch("ele1_iso_track",&ele1_iso_track,"ele1_iso_track/F");
1431  vbtfPresele_tree->Branch("ele1_iso_ecal",&ele1_iso_ecal,"ele1_iso_ecal/F");
1432  vbtfPresele_tree->Branch("ele1_iso_hcal",&ele1_iso_hcal,"ele1_iso_hcal/F");
1433  vbtfPresele_tree->Branch("ele1_id_sihih",&ele1_id_sihih,"ele1_id_sihih/F");
1434  vbtfPresele_tree->Branch("ele1_id_deta",&ele1_id_deta,"ele1_id_deta/F");
1435  vbtfPresele_tree->Branch("ele1_id_dphi",&ele1_id_dphi,"ele1_id_dphi/F");
1436  vbtfPresele_tree->Branch("ele1_id_hoe",&ele1_id_hoe,"ele1_id_hoe/F");
1437  vbtfPresele_tree->Branch("ele1_cr_mhitsinner",&ele1_cr_mhitsinner,"ele1_cr_mhitsinner/I");
1438  vbtfPresele_tree->Branch("ele1_cr_dcot",&ele1_cr_dcot,"ele1_cr_dcot/F");
1439  vbtfPresele_tree->Branch("ele1_cr_dist",&ele1_cr_dist,"ele1_cr_dist/F");
1440  vbtfPresele_tree->Branch("ele1_vx",&ele1_vx,"ele1_vx/F");
1441  vbtfPresele_tree->Branch("ele1_vy",&ele1_vy,"ele1_vy/F");
1442  vbtfPresele_tree->Branch("ele1_vz",&ele1_vz,"ele1_vz/F");
1443  vbtfPresele_tree->Branch("ele1_gsfCharge",&ele1_gsfCharge,"ele1_gsfCharge/I");
1444  vbtfPresele_tree->Branch("ele1_ctfCharge",&ele1_ctfCharge,"ele1_ctfCharge/I");
1445  vbtfPresele_tree->Branch("ele1_scPixCharge",&ele1_scPixCharge,"ele1_scPixCharge/I");
1446  vbtfPresele_tree->Branch("ele1_eop",&ele1_eop,"ele1_eop/F");
1447  vbtfPresele_tree->Branch("ele1_tip_bs",&ele1_tip_bs,"ele1_tip_bs/F");
1448  vbtfPresele_tree->Branch("ele1_tip_pv",&ele1_tip_pv,"ele1_tip_pv/F");
1449 
1450  // for ele 2
1451  vbtfPresele_tree->Branch("ele2_sc_gsf_et", &ele2_sc_gsf_et,"ele2_sc_gsf_et/F");
1452  vbtfPresele_tree->Branch("ele2_sc_energy", &ele2_sc_energy,"ele2_sc_energy/F");
1453  vbtfPresele_tree->Branch("ele2_sc_eta", &ele2_sc_eta,"ele2_sc_eta/F");
1454  vbtfPresele_tree->Branch("ele2_sc_phi", &ele2_sc_phi,"ele2_sc_phi/F");
1455  vbtfPresele_tree->Branch("ele2_cand_et", &ele2_cand_et, "ele2_cand_et/F");
1456  vbtfPresele_tree->Branch("ele2_cand_eta", &ele2_cand_eta,"ele2_cand_eta/F");
1457  vbtfPresele_tree->Branch("ele2_cand_phi",&ele2_cand_phi,"ele2_cand_phi/F");
1458  vbtfPresele_tree->Branch("ele2_iso_track",&ele2_iso_track,"ele2_iso_track/F");
1459  vbtfPresele_tree->Branch("ele2_iso_ecal",&ele2_iso_ecal,"ele2_iso_ecal/F");
1460  vbtfPresele_tree->Branch("ele2_iso_hcal",&ele2_iso_hcal,"ele2_iso_hcal/F");
1461  vbtfPresele_tree->Branch("ele2_id_sihih",&ele2_id_sihih,"ele2_id_sihih/F");
1462  vbtfPresele_tree->Branch("ele2_id_deta",&ele2_id_deta,"ele2_id_deta/F");
1463  vbtfPresele_tree->Branch("ele2_id_dphi",&ele2_id_dphi,"ele2_id_dphi/F");
1464  vbtfPresele_tree->Branch("ele2_id_hoe",&ele2_id_hoe,"ele2_id_hoe/F");
1465  vbtfPresele_tree->Branch("ele2_cr_mhitsinner",&ele2_cr_mhitsinner,"ele2_cr_mhitsinner/I");
1466  vbtfPresele_tree->Branch("ele2_cr_dcot",&ele2_cr_dcot,"ele2_cr_dcot/F");
1467  vbtfPresele_tree->Branch("ele2_cr_dist",&ele2_cr_dist,"ele2_cr_dist/F");
1468  vbtfPresele_tree->Branch("ele2_vx",&ele2_vx,"ele2_vx/F");
1469  vbtfPresele_tree->Branch("ele2_vy",&ele2_vy,"ele2_vy/F");
1470  vbtfPresele_tree->Branch("ele2_vz",&ele2_vz,"ele2_vz/F");
1471  vbtfPresele_tree->Branch("ele2_gsfCharge",&ele2_gsfCharge,"ele2_gsfCharge/I");
1472  vbtfPresele_tree->Branch("ele2_ctfCharge",&ele2_ctfCharge,"ele2_ctfCharge/I");
1473  vbtfPresele_tree->Branch("ele2_scPixCharge",&ele2_scPixCharge,"ele2_scPixCharge/I");
1474  vbtfPresele_tree->Branch("ele2_eop",&ele2_eop,"ele2_eop/F");
1475  vbtfPresele_tree->Branch("ele2_tip_bs",&ele2_tip_bs,"ele2_tip_bs/F");
1476  vbtfPresele_tree->Branch("ele2_tip_pv",&ele2_tip_pv,"ele2_tip_pv/F");
1477 
1478  vbtfPresele_tree->Branch("pv_x1",&pv_x1,"pv_x1/F");
1479  vbtfPresele_tree->Branch("pv_y1",&pv_y1,"pv_y1/F");
1480  vbtfPresele_tree->Branch("pv_z1",&pv_z1,"pv_z1/F");
1481 
1482  vbtfPresele_tree->Branch("pv_x2",&pv_x2,"pv_x2/F");
1483  vbtfPresele_tree->Branch("pv_y2",&pv_y2,"pv_y2/F");
1484  vbtfPresele_tree->Branch("pv_z2",&pv_z2,"pv_z2/F");
1485 
1486  vbtfPresele_tree->Branch("event_caloMET",&event_caloMET,"event_caloMET/F");
1487  vbtfPresele_tree->Branch("event_pfMET",&event_pfMET,"event_pfMET/F");
1488  vbtfPresele_tree->Branch("event_tcMET",&event_tcMET,"event_tcMET/F");
1489  vbtfPresele_tree->Branch("event_caloMET_phi",&event_caloMET_phi,"event_caloMET_phi/F");
1490  vbtfPresele_tree->Branch("event_pfMET_phi",&event_pfMET_phi,"event_pfMET_phi/F");
1491  vbtfPresele_tree->Branch("event_tcMET_phi",&event_tcMET_phi,"event_tcMET_phi/F");
1492 
1493  vbtfPresele_tree->Branch("event_Mee",&event_Mee,"event_Mee/F");
1494 
1495  //
1496  // the extra jet variables:
1498 
1499  vbtfPresele_tree->Branch("calojet_et",calojet_et,"calojet_et[5]/F");
1500  vbtfPresele_tree->Branch("calojet_eta",calojet_eta,"calojet_eta[5]/F");
1501  vbtfPresele_tree->Branch("calojet_phi",calojet_phi,"calojet_phi[5]/F");
1502  vbtfPresele_tree->Branch("pfjet_et",pfjet_et,"pfjet_et[5]/F");
1503  vbtfPresele_tree->Branch("pfjet_eta",pfjet_eta,"pfjet_eta[5]/F");
1504  vbtfPresele_tree->Branch("pfjet_phi",pfjet_phi,"pfjet_phi[5]/F");
1505 
1506  }
1507 
1508  vbtfPresele_tree->Branch("event_datasetTag",&event_datasetTag,"event_dataSetTag/I");
1509 
1510 
1511  // _________________________________________________________________________
1512  //
1513 
1514 
1515 
1516 }
1517 
1518 // ------------ method called once each job just after ending the event loop -
1520  TFile * newfile = new TFile(TString(outputFile_),"RECREATE");
1521  //
1522  // for consistency all the plots are in the root file
1523  // even though they may be empty (in the case when
1524  // usePrecalcID_ == true inverted and N-1 are empty)
1525 
1526  h_mee->Write();
1527  h_mee_EBEB->Write();
1528  h_mee_EBEE->Write();
1529  h_mee_EEEE->Write();
1530  h_Zcand_PT->Write();
1531  h_Zcand_Y->Write();
1532 
1533  h_e_PT->Write();
1534  h_e_ETA->Write();
1535  h_e_PHI->Write();
1536 
1537  h_EB_trkiso->Write();
1538  h_EB_ecaliso->Write();
1539  h_EB_hcaliso->Write();
1540  h_EB_sIetaIeta->Write();
1541  h_EB_dphi->Write();
1542  h_EB_deta->Write();
1543  h_EB_HoE->Write();
1544 
1545  h_EE_trkiso->Write();
1546  h_EE_ecaliso->Write();
1547  h_EE_hcaliso->Write();
1548  h_EE_sIetaIeta->Write();
1549  h_EE_dphi->Write();
1550  h_EE_deta->Write();
1551  h_EE_HoE->Write();
1552 
1553  //
1554  newfile->Close();
1555 
1556  // write the VBTF trees
1557  //
1558  ZEE_VBTFpreseleFile_->Write();
1559  ZEE_VBTFpreseleFile_->Close();
1560 
1561  ZEE_VBTFselectionFile_->Write();
1562  ZEE_VBTFselectionFile_->Close();
1563 
1564 }
1565 
1566 
1567 //define this as a plug-in
Double_t trackIsoUser2_EB_
Definition: ZeePlots.h:214
Float_t ele2_cr_dcot
Definition: ZeePlots.h:267
const double Z[kNumberCalorimeter]
Analysis-level particle class.
Float_t ele1_sc_energy
Definition: ZeePlots.h:249
TH1F * h_mee
Definition: ZeePlots.h:100
Bool_t trackIso2_EE_inv
Definition: ZeePlots.h:218
Double_t hcalIsoUser1_EB_
Definition: ZeePlots.h:183
Analysis-level MET class.
Definition: MET.h:42
Double_t sihih1_EB_
Definition: ZeePlots.h:173
Float_t ele2_sc_gsf_et
Definition: ZeePlots.h:263
Bool_t CheckCuts1NminusOne(const pat::Electron *, Int_t)
Definition: ZeePlots.cc:872
Double_t tip_bspot1_EE_
Definition: ZeePlots.h:178
T getUntrackedParameter(std::string const &, T const &) const
Float_t ele2_id_sihih
Definition: ZeePlots.h:266
Float_t ele2_iso_hcal
Definition: ZeePlots.h:265
int i
Definition: DBlmapReader.cc:9
Float_t pv_x1
Definition: ZeePlots.h:257
~ZeePlots()
Definition: ZeePlots.cc:43
Float_t ele1_cand_eta
Definition: ZeePlots.h:251
Double_t cIso2_EB_
Definition: ZeePlots.h:210
std::string usePrecalcIDSign2_
Definition: ZeePlots.h:74
Double_t deta2_EB_
Definition: ZeePlots.h:208
Bool_t dphi2_EB_inv
Definition: ZeePlots.h:223
Bool_t CheckCut2(const pat::Electron *, Int_t)
Definition: ZeePlots.cc:920
TH1F * h_Zcand_Y
Definition: ZeePlots.h:105
Bool_t useValidFirstPXBHit2_
Definition: ZeePlots.h:86
Float_t pv_y2
Definition: ZeePlots.h:270
Float_t calojet_phi[5]
Definition: ZeePlots.h:282
const LorentzVector & p4(P4Kind kind) const
Definition: GsfElectron.cc:204
Float_t ele2_id_hoe
Definition: ZeePlots.h:266
float eSuperClusterOverP() const
Definition: GsfElectron.h:229
Double_t trackIsoUser1_EE_
Definition: ZeePlots.h:181
Bool_t ecalIso2_EE_inv
Definition: ZeePlots.h:219
Bool_t deta1_EE_inv
Definition: ZeePlots.h:191
Float_t event_pfMET_phi
Definition: ZeePlots.h:276
TH1F * h_EE_hcaliso
Definition: ZeePlots.h:121
Bool_t hcalIso2_EE_inv
Definition: ZeePlots.h:220
Float_t ele1_id_dphi
Definition: ZeePlots.h:253
Float_t ele1_vz
Definition: ZeePlots.h:255
Float_t ele2_id_dphi
Definition: ZeePlots.h:266
Int_t DatasetTag_
Definition: ZeePlots.h:300
Bool_t ecalIsoUser2_EB_inv
Definition: ZeePlots.h:231
TH1F * h_EE_deta
Definition: ZeePlots.h:124
Bool_t trackIsoUser1_EE_inv
Definition: ZeePlots.h:197
Float_t ele2_iso_track
Definition: ZeePlots.h:265
Float_t ele2_vy
Definition: ZeePlots.h:268
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::string usePrecalcIDSign1_
Definition: ZeePlots.h:69
Double_t usePrecalcIDValue1_
Definition: ZeePlots.h:71
TH1F * h_EB_trkiso
Definition: ZeePlots.h:111
Bool_t maxNumberOfExpectedMissingHits1_
Definition: ZeePlots.h:83
Bool_t hoe2_EB_inv
Definition: ZeePlots.h:225
reco::SuperClusterRef superCluster() const
override the reco::GsfElectron::superCluster method, to access the internal storage of the superclust...
Definition: Electron.cc:150
Double_t hcalIsoUser2_EE_
Definition: ZeePlots.h:216
Int_t ele2_gsfCharge
Definition: ZeePlots.h:272
Float_t ele2_cand_phi
Definition: ZeePlots.h:264
Bool_t sihih1_EB_inv
Definition: ZeePlots.h:189
Float_t event_tcMET_phi
Definition: ZeePlots.h:276
Bool_t useSameSelectionOnBothElectrons_
Definition: ZeePlots.h:65
TH1F * h_EB_sIetaIeta
Definition: ZeePlots.h:114
Float_t pfjet_eta[5]
Definition: ZeePlots.h:284
Double_t tip_bspot1_EB_
Definition: ZeePlots.h:178
Float_t ele1_sc_eta
Definition: ZeePlots.h:249
Bool_t hcalIso1_EE_inv
Definition: ZeePlots.h:187
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:59
Bool_t sihih2_EB_inv
Definition: ZeePlots.h:222
Bool_t eop1_EB_inv
Definition: ZeePlots.h:195
Double_t deta1_EE_
Definition: ZeePlots.h:175
Float_t ele1_id_hoe
Definition: ZeePlots.h:253
Double_t eop2_EE_
Definition: ZeePlots.h:212
Float_t event_Mee
Definition: ZeePlots.h:278
Float_t ele1_iso_ecal
Definition: ZeePlots.h:252
edm::InputTag pfJetCollectionTag_
Definition: ZeePlots.h:95
Double_t tip_bspot2_EB_
Definition: ZeePlots.h:211
Bool_t CheckCuts2Inverse(const pat::Electron *)
Definition: ZeePlots.cc:858
Bool_t eop2_EB_inv
Definition: ZeePlots.h:228
Bool_t tip_bspot2_EB_inv
Definition: ZeePlots.h:227
Int_t ele1_ctfCharge
Definition: ZeePlots.h:259
Bool_t CheckCut1(const pat::Electron *, Int_t)
Definition: ZeePlots.cc:908
Bool_t ecalIsoUser1_EE_inv
Definition: ZeePlots.h:198
Bool_t hcalIsoUser2_EE_inv
Definition: ZeePlots.h:232
Float_t ele2_cr_dist
Definition: ZeePlots.h:267
TH1F * h_EB_HoE
Definition: ZeePlots.h:117
Bool_t deta2_EB_inv
Definition: ZeePlots.h:224
Double_t hcalIsoUser2_EB_
Definition: ZeePlots.h:216
Bool_t trackIso1_EE_inv
Definition: ZeePlots.h:185
Double_t ecalIsoUser2_EE_
Definition: ZeePlots.h:215
Float_t pv_x2
Definition: ZeePlots.h:270
Double_t ecalIsoUser1_EE_
Definition: ZeePlots.h:182
Bool_t deta1_EB_inv
Definition: ZeePlots.h:191
Float_t ele1_cand_phi
Definition: ZeePlots.h:251
Double_t usePrecalcIDValue2_
Definition: ZeePlots.h:76
Float_t pfjet_et[5]
Definition: ZeePlots.h:283
Double_t hcalIsoUser1_EE_
Definition: ZeePlots.h:183
Bool_t useExpectedMissingHits2_
Definition: ZeePlots.h:88
Float_t ele1_sc_phi
Definition: ZeePlots.h:249
bool isEB() const
Definition: GsfElectron.h:330
Float_t ele1_cr_dist
Definition: ZeePlots.h:254
Int_t ele1_gsfCharge
Definition: ZeePlots.h:259
TH1F * h_mee_EBEE
Definition: ZeePlots.h:102
Double_t cIso2_EE_
Definition: ZeePlots.h:210
Double_t sihih2_EB_
Definition: ZeePlots.h:206
double deltaR(double eta1, double phi1, double eta2, double phi2)
Definition: deltaR.h:19
Double_t dphi1_EB_
Definition: ZeePlots.h:174
std::string outputFile_
Definition: ZeePlots.h:92
Double_t ecalIsoUser1_EB_
Definition: ZeePlots.h:182
Bool_t CheckCuts1(const pat::Electron *)
Definition: ZeePlots.cc:776
Bool_t hcalIsoUser2_EB_inv
Definition: ZeePlots.h:232
Bool_t CheckCuts2NminusOne(const pat::Electron *, Int_t)
Definition: ZeePlots.cc:889
bool hasUserInt(const std::string &key) const
Return true if there is a user-defined int with a given name.
Definition: PATObject.h:337
Bool_t hcalIso2_EB_inv
Definition: ZeePlots.h:220
Float_t ele2_sc_energy
Definition: ZeePlots.h:262
Double_t tip_bspot2_EE_
Definition: ZeePlots.h:211
Double_t hcalIso2_EB_
Definition: ZeePlots.h:204
tuple newfile
Definition: runonSM.py:48
TH1F * h_EE_sIetaIeta
Definition: ZeePlots.h:122
Float_t calojet_eta[5]
Definition: ZeePlots.h:281
TFile * ZEE_VBTFpreseleFile_
Definition: ZeePlots.h:289
Double_t hoe2_EB_
Definition: ZeePlots.h:209
float deltaEtaSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:233
Bool_t ecalIsoUser2_EE_inv
Definition: ZeePlots.h:231
int iEvent
Definition: GenABIO.cc:243
Bool_t CheckCut1Inv(const pat::Electron *, Int_t)
Definition: ZeePlots.cc:933
Bool_t hcalIsoUser1_EE_inv
Definition: ZeePlots.h:199
std::string ZEE_VBTFpreseleFileName_
Definition: ZeePlots.h:296
float hadronicOverEm() const
Definition: GsfElectron.h:403
Float_t ele1_vy
Definition: ZeePlots.h:255
Bool_t usePrecalcID2_
Definition: ZeePlots.h:73
Float_t pfjet_phi[5]
Definition: ZeePlots.h:285
Bool_t useConversionRejection1_
Definition: ZeePlots.h:81
Double_t eop2_EB_
Definition: ZeePlots.h:212
Long64_t eventNumber
Definition: ZeePlots.h:247
Bool_t tip_bspot1_EB_inv
Definition: ZeePlots.h:194
Double_t trackIso1_EB_
Definition: ZeePlots.h:169
Double_t ecalIsoUser2_EB_
Definition: ZeePlots.h:215
TH1F * h_EE_ecaliso
Definition: ZeePlots.h:120
Double_t trackIso2_EB_
Definition: ZeePlots.h:202
Bool_t cIso1_EB_inv
Definition: ZeePlots.h:193
Float_t ele1_id_deta
Definition: ZeePlots.h:253
Int_t ele1_scPixCharge
Definition: ZeePlots.h:259
Bool_t tip_bspot2_EE_inv
Definition: ZeePlots.h:227
Int_t ele2_scPixCharge
Definition: ZeePlots.h:272
TH1F * h_mee_EEEE
Definition: ZeePlots.h:103
Float_t event_caloMET_phi
Definition: ZeePlots.h:276
float deltaPhiSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:236
TH1F * h_e_PT
Definition: ZeePlots.h:107
std::vector< Double_t > CutVars1_
Definition: ZeePlots.h:236
Int_t lumiSection
Definition: ZeePlots.h:245
Bool_t hcalIso1_EB_inv
Definition: ZeePlots.h:187
RunNumber_t run() const
Definition: Event.h:67
Float_t ele2_vz
Definition: ZeePlots.h:268
float dr03TkSumPt() const
Definition: GsfElectron.h:436
Bool_t hoe2_EE_inv
Definition: ZeePlots.h:225
Float_t ele2_iso_ecal
Definition: ZeePlots.h:265
Bool_t CheckCuts1Inverse(const pat::Electron *)
Definition: ZeePlots.cc:844
Float_t calojet_et[5]
Definition: ZeePlots.h:280
Float_t pv_y1
Definition: ZeePlots.h:257
TH1F * h_EE_trkiso
Definition: ZeePlots.h:119
Double_t trackIso1_EE_
Definition: ZeePlots.h:169
Bool_t trackIso1_EB_inv
Definition: ZeePlots.h:185
Double_t trackIso2_EE_
Definition: ZeePlots.h:202
Float_t ele2_sc_phi
Definition: ZeePlots.h:262
Float_t ele1_sc_gsf_et
Definition: ZeePlots.h:250
Bool_t cIso2_EE_inv
Definition: ZeePlots.h:226
Bool_t eop2_EE_inv
Definition: ZeePlots.h:228
Bool_t hoe1_EB_inv
Definition: ZeePlots.h:192
Float_t ele1_cr_mhitsinner
Definition: ZeePlots.h:254
Bool_t ecalIsoUser1_EB_inv
Definition: ZeePlots.h:198
Bool_t maxNumberOfExpectedMissingHits2_
Definition: ZeePlots.h:89
Bool_t sihih2_EE_inv
Definition: ZeePlots.h:222
virtual void analyze(const edm::Event &, const edm::EventSetup &)
Definition: ZeePlots.cc:343
bool isValid() const
Definition: HandleBase.h:76
Float_t event_tcMET
Definition: ZeePlots.h:275
Bool_t trackIsoUser1_EB_inv
Definition: ZeePlots.h:197
Float_t ele2_vx
Definition: ZeePlots.h:268
Float_t ele2_sc_eta
Definition: ZeePlots.h:262
Bool_t PassPreselectionCriteria2(const pat::Electron *)
Definition: ZeePlots.cc:1097
float scSigmaIEtaIEta() const
Definition: GsfElectron.h:399
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
TFile * ZEE_VBTFselectionFile_
Definition: ZeePlots.h:290
Float_t ele1_iso_track
Definition: ZeePlots.h:252
std::string usePrecalcIDType1_
Definition: ZeePlots.h:70
Double_t hcalIso2_EE_
Definition: ZeePlots.h:204
Bool_t usePreselection2_
Definition: ZeePlots.h:85
TH1F * h_EB_deta
Definition: ZeePlots.h:116
Bool_t hcalIsoUser1_EB_inv
Definition: ZeePlots.h:199
Bool_t hoe1_EE_inv
Definition: ZeePlots.h:192
TTree * vbtfPresele_tree
Definition: ZeePlots.h:293
TH1F * h_EE_dphi
Definition: ZeePlots.h:123
Double_t deta2_EE_
Definition: ZeePlots.h:208
Double_t eop1_EE_
Definition: ZeePlots.h:179
EventAuxiliary const & eventAuxiliary() const
Definition: Event.h:56
TH1F * h_EB_ecaliso
Definition: ZeePlots.h:112
Int_t ele2_ctfCharge
Definition: ZeePlots.h:272
Double_t DRJetFromElectron_
Definition: ZeePlots.h:299
Double_t trackIsoUser1_EB_
Definition: ZeePlots.h:181
float electronID(const std::string &name) const
Returns a specific electron ID associated to the pat::Electron given its name.
Definition: Electron.cc:315
float userIsolation(IsolationKeys key) const
Definition: Lepton.h:51
std::vector< CompositeCandidate > CompositeCandidateCollection
Bool_t useValidFirstPXBHit1_
Definition: ZeePlots.h:80
Bool_t dphi2_EE_inv
Definition: ZeePlots.h:223
int32_t userInt(const std::string &key) const
Definition: PATObject.h:772
Float_t ele2_tip_bs
Definition: ZeePlots.h:273
Double_t hoe2_EE_
Definition: ZeePlots.h:209
TH1F * h_EB_hcaliso
Definition: ZeePlots.h:113
Float_t ele2_id_deta
Definition: ZeePlots.h:266
Bool_t eop1_EE_inv
Definition: ZeePlots.h:195
edm::InputTag caloJetCollectionTag_
Definition: ZeePlots.h:94
std::string ZEE_VBTFselectionFileName_
Definition: ZeePlots.h:295
Bool_t PassPreselectionCriteria1(const pat::Electron *)
Definition: ZeePlots.cc:1049
Analysis-level electron class.
Definition: Electron.h:52
Bool_t ecalIso2_EB_inv
Definition: ZeePlots.h:219
Double_t hcalIso1_EB_
Definition: ZeePlots.h:171
T const * product() const
Definition: Handle.h:74
Float_t ele2_cand_eta
Definition: ZeePlots.h:264
TH1F * h_e_ETA
Definition: ZeePlots.h:108
ZeePlots(const char *)
Definition: ZeePlots.cc:35
Bool_t tip_bspot1_EE_inv
Definition: ZeePlots.h:194
Double_t ecalIso2_EE_
Definition: ZeePlots.h:203
float dr03EcalRecHitSumEt() const
Definition: GsfElectron.h:437
Float_t ele2_tip_pv
Definition: ZeePlots.h:273
Float_t event_caloMET
Definition: ZeePlots.h:275
TH1F * h_EE_HoE
Definition: ZeePlots.h:125
Bool_t cIso2_EB_inv
Definition: ZeePlots.h:226
Bool_t usePreselection1_
Definition: ZeePlots.h:79
Float_t ele1_id_sihih
Definition: ZeePlots.h:253
Float_t event_pfMET
Definition: ZeePlots.h:275
virtual void endJob()
Definition: ZeePlots.cc:1519
Double_t ecalIso1_EE_
Definition: ZeePlots.h:170
Double_t dphi2_EE_
Definition: ZeePlots.h:207
Bool_t trackIsoUser2_EE_inv
Definition: ZeePlots.h:230
Double_t ReturnCandVar(const pat::Electron *, Int_t)
Definition: ZeePlots.cc:981
Double_t hoe1_EB_
Definition: ZeePlots.h:176
Float_t ele2_cand_et
Definition: ZeePlots.h:264
Int_t nBarrelVars_
Definition: ZeePlots.h:234
std::vector< PFJet > PFJetCollection
collection of PFJet objects
Bool_t useExpectedMissingHits1_
Definition: ZeePlots.h:82
std::string usePrecalcIDType2_
Definition: ZeePlots.h:75
edm::InputTag zeeCollectionTag_
Definition: ZeePlots.h:93
Double_t cIso1_EE_
Definition: ZeePlots.h:177
Int_t event_datasetTag
Definition: ZeePlots.h:287
Double_t sihih1_EE_
Definition: ZeePlots.h:173
Double_t cIso1_EB_
Definition: ZeePlots.h:177
Int_t runNumber
Definition: ZeePlots.h:245
Float_t ele1_eop
Definition: ZeePlots.h:260
Bool_t includeJetInformationInNtuples_
Definition: ZeePlots.h:298
Double_t hoe1_EE_
Definition: ZeePlots.h:176
float dr03HcalTowerSumEt() const
Definition: GsfElectron.h:440
Float_t ele1_cand_et
Definition: ZeePlots.h:251
TH1F * h_e_PHI
Definition: ZeePlots.h:109
Double_t sihih2_EE_
Definition: ZeePlots.h:206
tuple cout
Definition: gather_cfg.py:121
TTree * vbtfSele_tree
Definition: ZeePlots.h:292
Bool_t usePrecalcID1_
Definition: ZeePlots.h:68
Double_t eop1_EB_
Definition: ZeePlots.h:179
TH1F * h_EB_dphi
Definition: ZeePlots.h:115
Float_t ele1_iso_hcal
Definition: ZeePlots.h:252
Bool_t ecalIso1_EB_inv
Definition: ZeePlots.h:186
Double_t ecalIso2_EB_
Definition: ZeePlots.h:203
Float_t pv_z1
Definition: ZeePlots.h:257
Bool_t trackIso2_EB_inv
Definition: ZeePlots.h:218
Bool_t dphi1_EE_inv
Definition: ZeePlots.h:190
Double_t hcalIso1_EE_
Definition: ZeePlots.h:171
Bool_t ecalIso1_EE_inv
Definition: ZeePlots.h:186
Float_t ele1_tip_bs
Definition: ZeePlots.h:260
Bool_t sihih1_EE_inv
Definition: ZeePlots.h:189
std::vector< Bool_t > InvVars2_
Definition: ZeePlots.h:240
Float_t ele1_vx
Definition: ZeePlots.h:255
TH1F * h_Zcand_PT
Definition: ZeePlots.h:104
Bool_t CheckCuts2(const pat::Electron *)
Definition: ZeePlots.cc:810
virtual void beginJob()
Definition: ZeePlots.cc:1152
tuple pfJets
Definition: pfJets_cff.py:8
Double_t deta1_EB_
Definition: ZeePlots.h:175
Bool_t deta2_EE_inv
Definition: ZeePlots.h:224
std::vector< Double_t > CutVars2_
Definition: ZeePlots.h:237
Double_t trackIsoUser2_EE_
Definition: ZeePlots.h:214
TH1F * h_mee_EBEB
Definition: ZeePlots.h:101
Double_t ecalIso1_EB_
Definition: ZeePlots.h:170
Float_t ele2_eop
Definition: ZeePlots.h:273
Bool_t cIso1_EE_inv
Definition: ZeePlots.h:193
Bool_t CheckCut2Inv(const pat::Electron *, Int_t)
Definition: ZeePlots.cc:957
EventNumber_t event() const
double dB(IpType type=None) const
Impact parameter wrt primary vertex or beamspot.
Definition: Electron.cc:378
Float_t pv_z2
Definition: ZeePlots.h:270
std::vector< Bool_t > InvVars1_
Definition: ZeePlots.h:239
Float_t ele1_tip_pv
Definition: ZeePlots.h:260
Bool_t trackIsoUser2_EB_inv
Definition: ZeePlots.h:230
Float_t ele1_cr_dcot
Definition: ZeePlots.h:254
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
Bool_t useConversionRejection2_
Definition: ZeePlots.h:87
Float_t ele2_cr_mhitsinner
Definition: ZeePlots.h:267
Bool_t dphi1_EB_inv
Definition: ZeePlots.h:190
Double_t dphi2_EB_
Definition: ZeePlots.h:207
Double_t dphi1_EE_
Definition: ZeePlots.h:174