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