ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/rootEWKanalyzer/src/analysisClass_EWK.C
Revision: 1.6
Committed: Tue Dec 21 15:25:39 2010 UTC (14 years, 4 months ago) by jueugste
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +205 -26 lines
Log Message:
Added generated PU info

File Contents

# User Rev Content
1 jueugste 1.1
2     #define analysisClass_cxx
3     #include "analysisClass.h"
4    
5     #include <TH2.h>
6     #include <TF2.h>
7     #include <TH1F.h>
8     #include <TStyle.h>
9     #include <TCanvas.h>
10     #include <TLorentzVector.h>
11     #include <TVector2.h>
12     #include <TVector3.h>
13     #include <TTree.h>
14    
15 jueugste 1.6 // avg. inst. lumi.
16     #include "readLumiInfo/readLumiInfo.h"
17    
18 jueugste 1.1 analysisClass::analysisClass(string * inputList, string * cutFile, string * treeName, string * outputFileName, string * cutEfficFile)
19     :baseClass(inputList, cutFile, treeName, outputFileName, cutEfficFile)
20     {
21     std::cout << "analysisClass::analysisClass(): begins " << std::endl;
22    
23     std::cout << "analysisClass::analysisClass(): ends " << std::endl;
24     }
25    
26     analysisClass::~analysisClass()
27     {
28     std::cout << "analysisClass::~analysisClass(): begins " << std::endl;
29    
30     std::cout << "analysisClass::~analysisClass(): ends " << std::endl;
31     }
32    
33    
34    
35    
36     void analysisClass::Loop()
37     {
38     std::cout << "analysisClass::Loop() begins" <<std::endl;
39    
40     if (fChain == 0) return;
41    
42    
43     double PtCorrection = 1.; //0.99;
44    
45    
46     int counterSize=15;
47     int* counter = new int[counterSize];
48     memset(counter,0,counterSize*sizeof(int));
49    
50     int El_counterSize=15;
51     int* El_count = new int[El_counterSize];
52     memset(El_count,0,El_counterSize*sizeof(int));
53    
54     FILE *out=fopen("out.txt","w");
55     FILE *out_Z=fopen("out_z.txt","w");
56     fprintf(out_Z,"Run \tEvent \tLS \tDiLeptonMass \tPt_1 \tPt2 \tEta_1 \tEta_2 \tDiLeptonPt \tsumJetPt \n");
57    
58 jueugste 1.6 // open the *.root file containing the lumi info
59     // readLumiInfo a("readLumiInfo/lumiByLSRun2010.root");
60    
61 jueugste 1.1
62     // --------------------------------------------------------------------------------------------------------------------
63     // Analysis input parameters
64     // --------------------------------------------------------------------------------------------------------------------
65     int workingPoint = 80; // -1 takes hard coded values (which are the old robust tight values...)
66 jueugste 1.2 double sampleSize=-1;
67 jueugste 1.1
68 jueugste 1.5 bool isdata;
69     bool useElectronTiggers = true;
70    
71    
72 jueugste 1.1
73     bool ethIDandIso = false;
74    
75     bool writeIdPlots=true;
76     bool writeN1Plots=true;
77     bool writeWenuPlots=true;
78     bool applyDeltaCorrection=false;
79     // --------------------------------------------------------------------------------------------------------------------
80    
81     double Pi=2*acos(0); // pi=3.14159...
82    
83     int MAXE=6;
84    
85     vector<double> WorkingPointCuts;
86     vector<double> EthCuts;
87    
88    
89     // --------------------------------------------------------------------------------------------------------------------
90     // Index vectors
91     // --------------------------------------------------------------------------------------------------------------------
92     vector<int> i_preselected;
93     vector<int> i_isolated;
94     vector<int> i_identified;
95     vector<int> i_goodElectrons;
96     vector<int> i_goodBarrelElectrons;
97     vector<int> i_goodEndcapElectrons;
98    
99     vector<int> i_jets;
100     // --------------------------------------------------------------------------------------------------------------------
101    
102    
103     // --------------------------------------------------------------------------------------------------------------------
104     // tree variables
105     // --------------------------------------------------------------------------------------------------------------------
106     // TTree *subTree;
107     TTree *subTree = new TTree("tree", "tree");
108    
109     int tRun;
110     int tEvent;
111     int tLumiSection;
112     // electrons
113     int ElMax = 20;
114     int tElN;
115     double tElPt[ElMax];
116     double tElPx[ElMax];
117     double tElPy[ElMax];
118     double tElPz[ElMax];
119 jueugste 1.3 double tElE[ElMax];
120 jueugste 1.1 double tElEta[ElMax];
121     double tElPhi[ElMax];
122     int tElCharge[ElMax];
123 jueugste 1.3 double tElDz[ElMax];
124 jueugste 1.1 // MET
125     double tCaloMet;
126     double tTcMet;
127     double tPfMet;
128     // mass
129     double tElPfMt[ElMax];
130     double tElCaloMt[ElMax];
131     double tElTcMt[ElMax];
132 jueugste 1.2 // HF stuff
133     double tSumEHF_minus;
134     double tSumEHF_plus;
135 jueugste 1.4 double tSumEHF_Aminus;
136     double tSumEHF_Aplus;
137     double tSumEHF_Bminus;
138     double tSumEHF_Bplus;
139 jueugste 1.2 double tSumETHF_minus;
140     double tSumETHF_plus;
141 jueugste 1.3 int tNtowers_plus;
142     int tNtowers_minus;
143 jueugste 1.5 // calo towers
144     int TowMax = 1000;
145     int tCaloTowersN;
146     double tCaloTowersE[TowMax];
147 jueugste 1.6 double tCaloTowersEt[TowMax];
148     double tCaloTowersEta[TowMax];
149 jueugste 1.5 double tCaloTowersEmE[TowMax];
150     double tCaloTowersHadE[TowMax];
151     int tCaloTowersHasEB[TowMax];
152     int tCaloTowersHasEE[TowMax];
153     int tCaloTowersHasHB[TowMax];
154     int tCaloTowersHasHE[TowMax];
155     int tCaloTowersHasHF[TowMax];
156     int tCaloTowersId[TowMax];
157 jueugste 1.2
158 jueugste 1.1 // jets
159     int JetMax = 20;
160     int tJetN;
161     double tJetPt[JetMax];
162     double tJetEta[JetMax];
163     double tJetPhi[JetMax];
164    
165 jueugste 1.2 // diffractive variables
166     double tEtaMax;
167     double tEtaMin;
168     double tEminusPz;
169     double tEplusPz;
170 jueugste 1.3 double tSumE;
171     double tSumPz;
172    
173 jueugste 1.6 // PFlow candidates
174     int PfMax = 1000;
175     int tPfN;
176     double tPfE[PfMax];
177     double tPfEt[PfMax];
178     double tPfEta[PfMax];
179     double tPfPt[PfMax];
180    
181 jueugste 1.3
182     // vertices
183     int VertexMax = 25;
184     int tVertexN;
185 jueugste 1.6 // int tVertexNdof[VertexMax];
186     double tVertexNdof[VertexMax];
187 jueugste 1.5 double tVertexChi2[VertexMax];
188 jueugste 1.3 double tVertexX[VertexMax];
189     double tVertexY[VertexMax];
190     double tVertexZ[VertexMax];
191 jueugste 1.6 int tVertexTrackIndex[25][400];
192     // float tVertexTrackWeight[25][400];
193    
194     // pile-up
195     int tPUnumInteractions;
196     double tPUzPositions[15];
197 jueugste 1.3
198     // beam spot
199     double tBeamSpotX;
200     double tBeamSpotY;
201     double tBeamSpotZ;
202    
203     // Tracks
204 jueugste 1.6 int TrackMax = 400;
205 jueugste 1.3 int tTracksN;
206 jueugste 1.6 double tTrackPt[TrackMax];
207     double tTrackPx[TrackMax];
208     double tTrackPy[TrackMax];
209     double tTrackPz[TrackMax];
210     double tTrackDzBs[TrackMax];
211     double tTrackEta[TrackMax];
212     double tTrackPhi[TrackMax];
213     // double tTrackdsz[TrackMax];
214     // double tTrackdxy[TrackMax];
215    
216 jueugste 1.3
217 jueugste 1.1
218     // tRun = -999;
219     // tEvent = -999;
220     // tLumiSection = -999;
221    
222     // double *tElPt = new double[ElMax];
223     // memset(tElPt, 0, ElMax*sizeof(double));
224    
225     // int MAXWcounter=16;
226     // int *Wcounter = new int[MAXWcounter];
227     // memset(Wcounter,0,MAXWcounter*sizeof(int));
228    
229    
230     // Run infos
231     subTree->Branch("Run" ,&tRun, "Run/I");
232     subTree->Branch("Event" ,&tEvent, "Event/I");
233     subTree->Branch("LumiSection" ,&tLumiSection, "LumiSection/I");
234     // electrons
235     subTree->Branch("ElN", &tElN, "ElN/I");
236     subTree->Branch("ElPt", &tElPt, "ElPt[ElN]/D");
237     subTree->Branch("ElPx", &tElPx, "ElPx[ElN]/D");
238     subTree->Branch("ElPy", &tElPy, "ElPy[ElN]/D");
239     subTree->Branch("ElPz", &tElPz, "ElPz[ElN]/D");
240 jueugste 1.3 subTree->Branch("ElE", &tElE, "ElE[ElN]/D");
241 jueugste 1.1 subTree->Branch("ElEta", &tElEta, "ElEta[ElN]/D");
242     subTree->Branch("ElPhi", &tElPhi, "ElPhi[ElN]/D");
243     subTree->Branch("ElCharge", &tElCharge, "ElCharge[ElN]/I");
244 jueugste 1.3 subTree->Branch("ElDz", &tElDz, "ElDz[ElN]/D");
245 jueugste 1.1
246     subTree->Branch("PfMet", &tPfMet, "PfMet/D");
247     subTree->Branch("CaloMet", &tCaloMet, "CaloMet/D");
248     subTree->Branch("TcMet", &tTcMet, "TcMet/D");
249    
250     subTree->Branch("ElPfMt", &tElPfMt, "ElPfMt[ElN]/D");
251     subTree->Branch("ElCaloMt", &tElCaloMt, "ElCaloMt[ElN]/D");
252     subTree->Branch("ElTcMt", &tElTcMt, "ElTcMt[ElN]/D");
253    
254 jueugste 1.2 subTree->Branch("SumEHF_minus", &tSumEHF_minus,"SumEHF_minus/D");
255     subTree->Branch("SumEHF_plus", &tSumEHF_plus, "SumEHF_plus/D");
256 jueugste 1.4 subTree->Branch("SumEHF_Aminus", &tSumEHF_Aminus,"SumEHF_Aminus/D");
257     subTree->Branch("SumEHF_Aplus", &tSumEHF_Aplus, "SumEHF_Aplus/D");
258     subTree->Branch("SumEHF_Bminus", &tSumEHF_Bminus,"SumEHF_Bminus/D");
259     subTree->Branch("SumEHF_Bplus", &tSumEHF_Bplus, "SumEHF_Bplus/D");
260 jueugste 1.2 subTree->Branch("SumETHF_minus", &tSumETHF_minus,"SumETHF_minus/D");
261     subTree->Branch("SumETHF_plus", &tSumETHF_plus,"SumETHF_plus/D");
262 jueugste 1.3 subTree->Branch("Ntowers_plus", &tNtowers_plus,"Ntowers_plus/I");
263     subTree->Branch("Ntowers_minus", &tNtowers_minus,"Ntowers_minus/I");
264 jueugste 1.2
265 jueugste 1.5 subTree->Branch("CaloTowersN", &tCaloTowersN, "CaloTowersN/I");
266 jueugste 1.6 subTree->Branch("CaloTowersE", &tCaloTowersE, "CaloTowersE[CaloTowersN]/D");
267     subTree->Branch("CaloTowersEt", &tCaloTowersEt, "CaloTowersEt[CaloTowersN]/D");
268     subTree->Branch("CaloTowersEta", &tCaloTowersEta, "CaloTowersEta[CaloTowersN]/D");
269 jueugste 1.5 subTree->Branch("CaloTowersEmE", &tCaloTowersEmE, "CaloTowersEmE[CaloTowersN]/D");
270     subTree->Branch("CaloTowersHadE", &tCaloTowersHadE, "CaloTowersHadE[CaloTowersN]/D");
271     subTree->Branch("CaloTowersHasEB", &tCaloTowersHasEB, "CaloTowersHasEB[CaloTowersN]/I");
272     subTree->Branch("CaloTowersHasEE", &tCaloTowersHasEE, "CaloTowersHasEE[CaloTowersN]/I");
273     subTree->Branch("CaloTowersHasHB", &tCaloTowersHasHB, "CaloTowersHasHB[CaloTowersN]/I");
274     subTree->Branch("CaloTowersHasHE", &tCaloTowersHasHE, "CaloTowersHasHE[CaloTowersN]/I");
275     subTree->Branch("CaloTowersHasHF", &tCaloTowersHasHF, "CaloTowersHasHF[CaloTowersN]/I");
276     subTree->Branch("CaloTowersId", &tCaloTowersId, "CaloTowersId[CaloTowersN]/I");
277    
278    
279 jueugste 1.2 subTree->Branch("JetN", &tJetN, "JetN/I");
280     subTree->Branch("JetPt", &tJetPt, "JetPt[JetN]/D");
281     subTree->Branch("JetEta", &tJetEta, "JetEta[JetN]/D");
282     subTree->Branch("JetPhi", &tJetPhi, "JetPhi[JetN]/D");
283    
284     subTree->Branch("EtaMax", &tEtaMax, "EtaMax/D");
285     subTree->Branch("EtaMin", &tEtaMin, "EtaMin/D");
286    
287     subTree->Branch("EminusPz", &tEminusPz, "EminusPz/D");
288     subTree->Branch("EplusPz", &tEplusPz, "EplusPz/D");
289 jueugste 1.3 subTree->Branch("SumE", &tSumE, "SumE/D");
290     subTree->Branch("SumPz", &tSumPz, "SumPz/D");
291    
292 jueugste 1.6 // pflow
293     subTree->Branch("PfN", &tPfN, "PfN/I");
294     subTree->Branch("PfE", &tPfE, "PfE[PfN]/D");
295     subTree->Branch("PfEt", &tPfEt, "PfEt[PfN]/D");
296     subTree->Branch("PfEta", &tPfEta, "PfEta[PfN]/D");
297     subTree->Branch("PfPt", &tPfPt, "PfPt[PfN]/D");
298    
299    
300    
301 jueugste 1.3 subTree->Branch("VertexN", &tVertexN, "VertexN/I");
302 jueugste 1.6 // subTree->Branch("VertexNdof", &tVertexNdof, "VertexNdof[VertexN]/I");
303     subTree->Branch("VertexNdof", &tVertexNdof, "VertexNdof[VertexN]/D");
304 jueugste 1.5 subTree->Branch("VertexChi2", &tVertexChi2, "VertexChi2[VertexN]/I");
305 jueugste 1.3 subTree->Branch("VertexX", &tVertexX, "VertexX[VertexN]/D");
306     subTree->Branch("VertexY", &tVertexY, "VertexY[VertexN]/D");
307     subTree->Branch("VertexZ", &tVertexZ, "VertexZ[VertexN]/D");
308 jueugste 1.6 subTree->Branch("VertexTrackIndex", &tVertexTrackIndex , "VertexTrackIndex[25][400]/I");
309     // subTree->Branch("VertexTrackWeight", &fTVertexTrackWeight , "VertexTrackWeight[25][400]/F");
310    
311     // pile-up
312     subTree->Branch("PUnumInteractions", &tPUnumInteractions, "PUnumInteractions/I");
313     subTree->Branch("PUzPositions", &tPUzPositions, "PUzPositions[PUnumInteractions]/D");
314 jueugste 1.3
315 jueugste 1.5
316 jueugste 1.3 subTree->Branch("BeamSpotX", &tBeamSpotX, "BeamSpotX/D");
317     subTree->Branch("BeamSpotY", &tBeamSpotY, "BeamSpotY/D");
318     subTree->Branch("BeamSpotZ", &tBeamSpotZ, "BeamSpotZ/D");
319    
320    
321    
322 jueugste 1.6 subTree->Branch("TracksN", &tTracksN, "TracksN/I");
323     subTree->Branch("TrackPt", &tTrackPt, "TrackPt[TracksN]/D");
324     subTree->Branch("TrackPx", &tTrackPx, "TrackPx[TracksN]/D");
325     subTree->Branch("TrackPy", &tTrackPy, "TrackPy[TracksN]/D");
326     subTree->Branch("TrackPz", &tTrackPz, "TrackPz[TracksN]/D");
327     subTree->Branch("TrackDzBs", &tTrackDzBs, "TrackDzBs[TracksN]/D");
328     subTree->Branch("TrackEta", &tTrackEta, "TrackEta[TracksN]/D");
329     subTree->Branch("TrackPhi", &tTrackPhi, "TrackPhi[TracksN]/D");
330     // subTree->Branch("Trackdsz", &tTrackdsz, "Trackdsz[TracksN]/D");
331     // subTree->Branch("Trackdxy", &tTrackdxy, "Trackdxy[TracksN]/D");
332     // subTree->Branch("", &, "[]/D");
333    
334 jueugste 1.2
335     // subTree->Branch("");
336     // subTree->Branch("");
337     // subTree->Branch("");
338     // subTree->Branch("");
339     // subTree->Branch("");
340     // subTree->Branch("");
341     // subTree->Branch("");
342 jueugste 1.1
343     // double tElN;
344     // double tElPt;
345     // double tElPx;
346     // double tElPy;
347     // double tElPz;
348     // double tElEta;
349     // double tElPhi;
350    
351    
352     // --------------------------------------------------------------------------------------------------------------------
353    
354    
355    
356     // --------------------------------------------------------------------------------------------------------------------
357     // Electron Cuts
358     // --------------------------------------------------------------------------------------------------------------------
359    
360     // ETH ID
361     double ETH_oneOverEminusOneOverP_B=0.005;
362     double ETH_deltaEtaMax_B=0.004;
363     double ETH_deltaPhiMax_B=0.02;
364     double ETH_iso_B=0.1;
365     int ETH_missingHits_B=1;
366     double ETH_oneOverEminusOneOverP_E=0.007;
367     double ETH_deltaEtaMax_E=0.006;
368     double ETH_deltaPhiMax_E=0.02;
369     double ETH_iso_E=0.1;
370     int ETH_missingHits_E=1;
371    
372    
373     int debug=0;
374     int debug2=0;
375     int debug3=0;
376     int debug4=0;
377    
378    
379     vector<int> diff_run;
380     vector<int> diff_event;
381     vector<int> diff_ls;
382     vector<double> diff_sumehf_plus;
383     vector<double> diff_sumehf_minus;
384     vector<double> diff_sumethf_plus;
385     vector<double> diff_sumethf_minus;
386     vector<double> diff_ntowershf_plus;
387     vector<double> diff_ntowershf_minus;
388    
389     vector<int> sel_WOjet_run;
390     vector<int> sel_WOjet_event;
391     vector<int> sel_WOjet_ls;
392     vector<int> sel_ZOjet_run;
393     vector<int> sel_ZOjet_event;
394     vector<int> sel_ZOjet_ls;
395    
396 jueugste 1.5 int previousRun = 0;
397     bool firstEvent=true;
398 jueugste 1.1 // fill the eth cuts vector
399     EthCuts.push_back(ETH_deltaPhiMax_B);
400     EthCuts.push_back(ETH_deltaEtaMax_B);
401     EthCuts.push_back(ETH_oneOverEminusOneOverP_B);
402     EthCuts.push_back(ETH_iso_B);
403     EthCuts.push_back(ETH_missingHits_B);
404     EthCuts.push_back(ETH_deltaPhiMax_E);
405     EthCuts.push_back(ETH_deltaEtaMax_E);
406     EthCuts.push_back(ETH_oneOverEminusOneOverP_E);
407     EthCuts.push_back(ETH_iso_E);
408     EthCuts.push_back(ETH_missingHits_E);
409    
410    
411    
412    
413     // --------------------------------------------------------------------------------------------------------------------
414     // read the cut values from include/workingPoints.txt
415     // --------------------------------------------------------------------------------------------------------------------
416    
417     // check if it is a possible working point
418     if(workingPoint>0 && (
419     workingPoint!=60 &&
420     workingPoint!=70 &&
421     workingPoint!=80 &&
422     workingPoint!=85 &&
423     workingPoint!=90 &&
424     workingPoint!=95 )
425     ) {
426     cerr<<"ERROR: "<<workingPoint<<" is NOT a valid working point!!!"<<endl;
427     exit(0);
428     }
429     // read the file
430     if(workingPoint>0) {
431     const char *file="include/workingPoints.txt";
432     cout<<"Opening file: "<<file<<"..."<<endl;
433     ifstream toread (file);
434     if(!toread.is_open()) {
435     cerr<<"File "<<file<<" not found!!"<<endl;
436     //goto END;
437     }
438     else {
439     cout<<"File opened..."<<endl;
440     }
441    
442     // build the working point variable
443     char wpB [20];
444     char wpE [20];
445     sprintf(wpB,"B%d",workingPoint);
446     sprintf(wpE,"E%d",workingPoint);
447    
448    
449     // read every line in the file
450     if(toread.is_open()) {
451     string line;
452     float value;
453     char name[100];
454     //cout<<"Reading working point input file"<<endl;
455     while(!toread.eof()) {
456     getline (toread, line);
457    
458     if(line.substr(0,1)=="#") continue;
459     //cout<<line<<endl;
460    
461     char wp[20];
462     float v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10;
463     sscanf (line.c_str(), "%s\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f", wp, &v0, &v1, &v2, &v3, &v4, &v5, &v6, &v7, &v8, &v9, &v10);
464     // barrel values
465     if(!strcmp(wp, wpB)) {
466     WorkingPointCuts.push_back(v0); // 0 see
467     WorkingPointCuts.push_back(v1); // 1 dphi
468     WorkingPointCuts.push_back(v2); // 2 deta
469     WorkingPointCuts.push_back(v3); // 3 hoe
470     WorkingPointCuts.push_back(v4); // 4 tkIso
471     WorkingPointCuts.push_back(v5); // 5 ecalIso
472     WorkingPointCuts.push_back(v6); // 6 hcalIso
473     WorkingPointCuts.push_back(v7); // 7 combIso
474     }
475     // endcap values
476     if(!strcmp(wp, wpE)) {
477     WorkingPointCuts.push_back(v0); // 8 see
478     WorkingPointCuts.push_back(v1); // 9 dphi
479     WorkingPointCuts.push_back(v2); // 10 deta
480     WorkingPointCuts.push_back(v3); // 11 hoe
481     WorkingPointCuts.push_back(v4); // 12 tkIso
482     WorkingPointCuts.push_back(v5); // 13 ecalIso
483     WorkingPointCuts.push_back(v6); // 14 hcalIso
484     WorkingPointCuts.push_back(v7); // 15 combIso
485     WorkingPointCuts.push_back(v8); // 16 hits
486     WorkingPointCuts.push_back(v9); // 17 dist
487     }
488    
489     } // read line
490     } // read file
491     } // get working points
492    
493     cout<<WorkingPointCuts[4]<<endl;
494     cout<<WorkingPointCuts[5]<<endl;
495     cout<<WorkingPointCuts[6]<<endl;
496     cout<<WorkingPointCuts[7]<<endl;
497     cout<<WorkingPointCuts[8]<<endl;
498     cout<<WorkingPointCuts[9]<<endl;
499    
500    
501     cout<<"Running the analysis with working point "<<workingPoint<<endl;
502     cout<<"Value for barrel / endcap"<<endl;
503     char *cutName[8] = {"sigmaIetaIeta", "delta phi at vtx", "delta eta at vtx", "H/E", "trkIso", "ecalIso", "hcalIso", "# inner hits"};
504     for(int i=0; i< 8;i++) {
505     cout<<cutName[i]<<" < "<<WorkingPointCuts[i]<<" / "<<WorkingPointCuts[8+i]<<endl;
506     }
507    
508     // --------------------------------------------------------------------------------------------------------------------
509    
510    
511    
512 jueugste 1.5 // --------------------------------------------------------------------------------------------------------------------
513     // number of events
514     // this histogram is filled for normalization purposes i.e. to keep track of the MC sample sizes
515     // --------------------------------------------------------------------------------------------------------------------
516     TH1I *h_numberOfEvents;
517     h_numberOfEvents=new TH1I("numberOfEvents", "numberOfEvents", 1, -0.01, 1.01);
518     TH1I *h_HLTInfo;
519     h_HLTInfo = new TH1I("HLTInfo", "HLTInfo", 6, -.5, 5.5);
520     h_HLTInfo->GetXaxis()->SetBinLabel(1, "No trigger found");
521     h_HLTInfo->GetXaxis()->SetBinLabel(2, "Ele15_SW");
522     h_HLTInfo->GetXaxis()->SetBinLabel(2, "Ele15_LW");
523     h_HLTInfo->GetXaxis()->SetBinLabel(2, "Ele15_SW_CaloEleId");
524     h_HLTInfo->GetXaxis()->SetBinLabel(2, "Ele17_SW_TightEleId");
525     h_HLTInfo->GetXaxis()->SetBinLabel(2, "Ele17_SW_CaloEleId");
526    
527 jueugste 1.1 // --------------------------------------------------------------------------------------------------------------------
528    
529    
530    
531     // --------------------------------------------------------------------------------------------------------------------
532     // Electron plots
533     // --------------------------------------------------------------------------------------------------------------------
534     char name [50];
535     int nbins=12;
536     double start=0.;
537     double end=120.;
538     TH1D *hs_El_ElPt[MAXE];
539     TH1D *hs_El_ElEta[MAXE];
540     TH1D *hs_El_ElPhi[MAXE];
541     TH1D *hs_El_ElDeltaPhi[MAXE];
542     TH1D *hs_El_ElDeltaEta[MAXE];
543     TH1D *hs_El_ElOneOverEminusOneOverP[MAXE];
544     TH1D *hs_El_ElMet[MAXE];
545     TH1D *hs_El_ElTransMass[MAXE];
546     TH1D *hs_El_ElCharge[MAXE];
547     TH1D *hs_El_Njets[MAXE];
548     TH1D *hs_El_ElEthIso[MAXE];
549     TH1D *hs_El_ElTrkIso[MAXE];
550     TH1D *hs_El_ElEcalIso[MAXE];
551     TH1D *hs_El_ElHcalIso[MAXE];
552     TH1D *hs_El_ElCombIso[MAXE];
553     TH1D *hs_El_ElHoverE[MAXE];
554     TH1D *hs_El_ElSigmaIetaIeta[MAXE];
555     TH1D *hs_El_ElNumberOfMissingInnerHits[MAXE];
556     for(int i=0; i<MAXE; i++) {
557     sprintf(name,"s_El_ElPt_%d",i);
558     hs_El_ElPt[i]=new TH1D(name, name, 60, 0, 120);
559     hs_El_ElPt[i]->SetXTitle("p_{T} [GeV]");
560     hs_El_ElPt[i]->SetYTitle("events / 2 GeV");
561     sprintf(name,"s_El_ElEta_%d",i);
562     hs_El_ElEta[i]=new TH1D(name, name, 25, -2.5, 2.5);
563     hs_El_ElEta[i]->SetXTitle("#eta");
564     hs_El_ElEta[i]->SetYTitle("events / 0.2");
565     sprintf(name,"s_El_ElPhi_%d",i);
566     hs_El_ElPhi[i]=new TH1D(name, name, 30, -Pi,Pi);
567     hs_El_ElPhi[i]->SetXTitle("#phi");
568     hs_El_ElPhi[i]->SetYTitle("events / 0.21");
569     sprintf(name,"s_El_ElDeltaPhi_%d",i);
570     hs_El_ElDeltaPhi[i]=new TH1D(name, name, 30, -0.05001, 0.05001);
571     hs_El_ElDeltaPhi[i]->SetXTitle("#Delta #phi");
572     hs_El_ElDeltaPhi[i]->SetYTitle("events / bin");
573     sprintf(name,"s_El_ElDeltaEta_%d",i);
574     hs_El_ElDeltaEta[i]=new TH1D(name, name, 30, -0.05001, 0.05001);
575     hs_El_ElDeltaEta[i]->SetXTitle("#Delta #eta");
576     hs_El_ElDeltaEta[i]->SetYTitle("events / bin");
577     sprintf(name,"s_El_ElMet_%d",i);
578     hs_El_ElMet[i]=new TH1D(name, name, 60, 0, 120);
579     hs_El_ElMet[i]->SetXTitle("#slash{E}_{T} [GeV]");
580     hs_El_ElMet[i]->SetYTitle("events / 2 GeV");
581     sprintf(name,"s_El_ElTransMass_%d",i);
582     hs_El_ElTransMass[i]=new TH1D(name, name, 60, 0, 120);
583     hs_El_ElTransMass[i]->SetXTitle("m_{T} [GeV]");
584     hs_El_ElTransMass[i]->SetYTitle("events / 2 GeV");
585     sprintf(name,"s_El_ElCharge_%d",i);
586     hs_El_ElCharge[i]=new TH1D(name, name, 2, -2, 2);
587     hs_El_ElCharge[i]->SetXTitle("Charge");
588     hs_El_ElCharge[i]->SetYTitle("events / bin");
589     sprintf(name,"s_El_Njets_%d",i);
590     hs_El_Njets[i]=new TH1D(name, name, 10, 0, 10);
591     hs_El_Njets[i]->SetXTitle("number of jets");
592     hs_El_Njets[i]->SetYTitle("events / bin");
593     sprintf(name,"s_El_ElOneOverEminusOneOverP_%d",i);
594     hs_El_ElOneOverEminusOneOverP[i]=new TH1D(name, name, 30, -0.01, 0.5);
595     hs_El_ElOneOverEminusOneOverP[i]->SetXTitle("|1/E-1/p|");
596     hs_El_ElOneOverEminusOneOverP[i]->SetYTitle("events / bin");
597     sprintf(name,"s_El_ElEthIso_%d",i);
598     // hs_El_ElEthIso[i]=new TH1D(name, name, 50, -0.01, 5.);
599     hs_El_ElEthIso[i]=new TH1D(name, name, 20, -0.01, 1.1);
600     hs_El_ElEthIso[i]->SetXTitle("ETH Iso");
601     hs_El_ElEthIso[i]->SetYTitle("events / bin");
602     sprintf(name,"s_El_ElTrkIso_%d",i);
603     // hs_El_ElTrkIso[i]=new TH1D(name, name, 100, -0.01, 50.);
604     hs_El_ElTrkIso[i]=new TH1D(name, name, 20, -0.01, 1.1);
605     hs_El_ElTrkIso[i]->SetXTitle("Trk Iso");
606     hs_El_ElTrkIso[i]->SetYTitle("events / bin");
607     sprintf(name,"s_El_ElEcalIso_%d",i);
608     hs_El_ElEcalIso[i]=new TH1D(name, name, 20, -0.01, 1.1);
609     // hs_El_ElEcalIso[i]=new TH1D(name, name, 40, -0.01, 20.);
610     hs_El_ElEcalIso[i]->SetXTitle("ECAL Iso");
611     hs_El_ElEcalIso[i]->SetYTitle("events / bin");
612     sprintf(name,"s_El_ElHcalIso_%d",i);
613     hs_El_ElHcalIso[i]=new TH1D(name, name, 20, -0.01, 10.);
614     hs_El_ElHcalIso[i]->SetXTitle("HCAL Iso");
615     hs_El_ElHcalIso[i]->SetYTitle("events / bin");
616    
617     sprintf(name,"s_El_ElCombIso_%d",i);
618     hs_El_ElCombIso[i]=new TH1D(name, name, 20, -0.01, 3.1);
619     hs_El_ElCombIso[i]->SetXTitle("Combined Iso");
620     hs_El_ElCombIso[i]->SetYTitle("events / bin");
621    
622     sprintf(name,"s_El_ElHoverE_%d",i);
623     hs_El_ElHoverE[i]=new TH1D(name, name, 30, -0.01, 0.5);
624     hs_El_ElHoverE[i]->SetXTitle("H/E");
625     hs_El_ElHoverE[i]->SetYTitle("events / bin");
626     sprintf(name,"s_El_ElSigmaIetaIeta_%d",i);
627     hs_El_ElSigmaIetaIeta[i]=new TH1D(name, name, 50, -0.01, 0.08);
628     hs_El_ElSigmaIetaIeta[i]->SetXTitle("#sigma_{i#eta i#eta}");
629     hs_El_ElSigmaIetaIeta[i]->SetYTitle("events / bin");
630     sprintf(name,"s_El_ElNumberOfMissingInnerHits_%d",i);
631     hs_El_ElNumberOfMissingInnerHits[i]=new TH1D(name, name, 10, 0., 10.);
632     hs_El_ElNumberOfMissingInnerHits[i]->SetXTitle("Number of missing inner hits");
633     hs_El_ElNumberOfMissingInnerHits[i]->SetYTitle("events / bin");
634     }
635    
636     TH1D *hc_El_counter;
637     hc_El_counter=new TH1D("c_El_counter", "c_El_counter",15, 0, 15);
638     hc_El_counter->GetXaxis()->SetBinLabel(1,"# e preselection");
639     hc_El_counter->GetXaxis()->SetBinLabel(2,"# e presel, barrel");
640     hc_El_counter->GetXaxis()->SetBinLabel(3,"# e see");
641     hc_El_counter->GetXaxis()->SetBinLabel(4,"# e dphi");
642     hc_El_counter->GetXaxis()->SetBinLabel(5,"# e deta");
643     hc_El_counter->GetXaxis()->SetBinLabel(6,"# e hoe");
644     hc_El_counter->GetXaxis()->SetBinLabel(7,"# e combIso");
645     hc_El_counter->GetXaxis()->SetBinLabel(8,"# e conversion");
646     hc_El_counter->GetXaxis()->SetBinLabel(9,"# e presel, endcap");
647     hc_El_counter->GetXaxis()->SetBinLabel(10,"# e see");
648     hc_El_counter->GetXaxis()->SetBinLabel(11,"# e dphi");
649     hc_El_counter->GetXaxis()->SetBinLabel(12,"# e deta");
650     hc_El_counter->GetXaxis()->SetBinLabel(13,"# e hoe");
651     hc_El_counter->GetXaxis()->SetBinLabel(14,"# e combIso");
652     hc_El_counter->GetXaxis()->SetBinLabel(15,"# e conversion");
653    
654    
655    
656    
657     // --------------------------------------------------------------------------------------------------------------------
658    
659    
660    
661     // --------------------------------------------------------------------------------------------------------------------
662     // Electron ID N-1 plots
663     // --------------------------------------------------------------------------------------------------------------------
664     int MAXN=4;
665     TH1D *hn1_El_ElDeltaPhi[MAXN];
666     TH1D *hn1_El_ElDeltaEta[MAXN];
667     TH1D *hn1_El_ElOneOverEminusOneOverP[MAXN];
668     TH1D *hn1_El_ElEthIso[MAXN];
669     TH1D *hn1_El_ElCombIso[MAXN];
670     TH1D *hn1_El_ElHoverE[MAXN];
671     TH1D *hn1_El_ElSigmaIetaIeta[MAXN];
672     TH1D *hn1_El_ElNumberOfMissingInnerHits[MAXN];
673    
674    
675     for(int i=0; i<MAXN;i++) {
676     sprintf(name,"n1_El_ElDeltaPhi_%d",i);
677     hn1_El_ElDeltaPhi[i]=new TH1D(name, name, 30, -0.05001, 0.05001); // plotting absolut value
678     // hn1_El_ElDeltaPhi[i]=new TH1D(name, name, 15, -0.05001, 0.05001); // plotting real value
679     hn1_El_ElDeltaPhi[i]->SetXTitle("#Delta #phi");
680     hn1_El_ElDeltaPhi[i]->SetYTitle("events / bin");
681     sprintf(name,"n1_El_ElDeltaEta_%d",i);
682     hn1_El_ElDeltaEta[i]=new TH1D(name, name, 30, -0.02001, 0.02001); // plotting absolut value
683     // hn1_El_ElDeltaEta[i]=new TH1D(name, name, 15, -0.05001, 0.05001); // plotting real value
684     hn1_El_ElDeltaEta[i]->SetXTitle("#Delta #eta");
685     hn1_El_ElDeltaEta[i]->SetYTitle("events / bin");
686     sprintf(name,"n1_El_ElOneOverEminusOneOverP_%d",i);
687     hn1_El_ElOneOverEminusOneOverP[i]=new TH1D(name, name, 15, -0.0001, 0.05001);
688     hn1_El_ElOneOverEminusOneOverP[i]->SetXTitle("|1/E-1/p|");
689     hn1_El_ElOneOverEminusOneOverP[i]->SetYTitle("events / bin");
690     sprintf(name,"n1_El_ElEthIso_%d",i);
691     hn1_El_ElEthIso[i]=new TH1D(name, name, 50, -0.01, 5.);
692     hn1_El_ElEthIso[i]->SetXTitle("Isolation");
693     hn1_El_ElEthIso[i]->SetYTitle("events / bin");
694    
695    
696     sprintf(name,"n1_El_ElCombIso_%d",i);
697     hn1_El_ElCombIso[i]=new TH1D(name, name, 20, -0.01, 0.5);
698     // hn1_El_ElCombIso[i]=new TH1D(name, name, 20, -0.01, 10.);
699     hn1_El_ElCombIso[i]->SetXTitle("Combined Iso");
700     hn1_El_ElCombIso[i]->SetYTitle("events / bin");
701    
702     sprintf(name,"n1_El_ElHoverE_%d",i);
703     hn1_El_ElHoverE[i]=new TH1D(name, name, 30, -0.01, 0.2);
704     hn1_El_ElHoverE[i]->SetXTitle("H/E");
705     hn1_El_ElHoverE[i]->SetYTitle("events / bin");
706     sprintf(name,"n1_El_ElSigmaIetaIeta_%d",i);
707     hn1_El_ElSigmaIetaIeta[i]=new TH1D(name, name, 50, -0.01, 0.08);
708     hn1_El_ElSigmaIetaIeta[i]->SetXTitle("#sigma_{i#eta i#eta}");
709     hn1_El_ElSigmaIetaIeta[i]->SetYTitle("events / bin");
710     sprintf(name,"n1_El_ElNumberOfMissingInnerHits_%d",i);
711     hn1_El_ElNumberOfMissingInnerHits[i]=new TH1D(name, name, 10, 0., 10.);
712     hn1_El_ElNumberOfMissingInnerHits[i]->SetXTitle("Number of missing inner hits");
713     hn1_El_ElNumberOfMissingInnerHits[i]->SetYTitle("events / bin");
714    
715    
716     }
717    
718     // --------------------------------------------------------------------------------------------------------------------
719    
720    
721    
722    
723     // --------------------------------------------------------------------------------------------------------------------
724     // W Selection plots
725     // --------------------------------------------------------------------------------------------------------------------
726     int MAXS=21;
727     TH1D *hs_W_ElPt[MAXS];
728     TH1D *hs_W_ElEta[MAXS];
729     TH1D *hs_W_ElPhi[MAXS];
730     TH1D *hs_W_ElDeltaPhi[MAXS];
731     TH1D *hs_W_ElMet[MAXS];
732     TH1D *hs_W_ElTransMass[MAXS];
733     TH1D *hs_W_ElCharge[MAXS];
734     TH1D *hs_W_Njets[MAXS];
735     TH1D *hs_W_jetPt[MAXS];
736     for(int i=0; i<MAXS; i++) {
737     sprintf(name,"s_W_ElPt_%d",i);
738     hs_W_ElPt[i]=new TH1D(name, name, 60, 0, 120);
739     hs_W_ElPt[i]->SetXTitle("p_{T} [GeV]");
740     hs_W_ElPt[i]->SetYTitle("events / 2 GeV");
741     sprintf(name,"s_W_ElEta_%d",i);
742     hs_W_ElEta[i]=new TH1D(name, name, 50, -5., 5.);
743     hs_W_ElEta[i]->SetXTitle("#eta");
744     hs_W_ElEta[i]->SetYTitle("events / 0.2");
745     sprintf(name,"s_W_ElPhi_%d",i);
746     hs_W_ElPhi[i]=new TH1D(name, name, 30, -Pi,Pi);
747     hs_W_ElPhi[i]->SetXTitle("#phi");
748     hs_W_ElPhi[i]->SetYTitle("events / 0.21");
749     sprintf(name,"s_W_ElDeltaPhi_%d",i);
750     hs_W_ElDeltaPhi[i]=new TH1D(name, name, 15, 0., Pi);
751     hs_W_ElDeltaPhi[i]->SetXTitle("#Delta #phi_{e,#slash{E}_{T}}");
752     hs_W_ElDeltaPhi[i]->SetYTitle("events / bin");
753     sprintf(name,"s_W_ElMet_%d",i);
754     hs_W_ElMet[i]=new TH1D(name, name, 60, 0, 120);
755     hs_W_ElMet[i]->SetXTitle("#slash{E}_{T} [GeV]");
756     hs_W_ElMet[i]->SetYTitle("events / 2 GeV");
757     sprintf(name,"s_W_ElTransMass_%d",i);
758     hs_W_ElTransMass[i]=new TH1D(name, name, 100, 0, 200);
759     hs_W_ElTransMass[i]->SetXTitle("m_{T} [GeV]");
760     hs_W_ElTransMass[i]->SetYTitle("events / 2 GeV");
761     sprintf(name,"s_W_ElCharge_%d",i);
762     hs_W_ElCharge[i]=new TH1D(name, name, 2, -2, 2);
763     hs_W_ElCharge[i]->SetXTitle("Charge");
764     hs_W_ElCharge[i]->SetYTitle("events / bin");
765     sprintf(name,"s_W_Njets_%d",i);
766     hs_W_Njets[i]=new TH1D(name, name, 10, 0, 10);
767     hs_W_Njets[i]->SetXTitle("number of jets");
768     hs_W_Njets[i]->SetYTitle("events / bin");
769     sprintf(name,"s_W_jetPt_%d",i);
770     hs_W_jetPt[i]=new TH1D(name, name, 40, 0, 200);
771     hs_W_jetPt[i]->SetXTitle("p_{T} [GeV]");
772     hs_W_jetPt[i]->SetYTitle("events / bin");
773     }
774    
775     int MAXWcounter=16;
776     int *Wcounter = new int[MAXWcounter];
777     memset(Wcounter,0,MAXWcounter*sizeof(int));
778    
779    
780     TH1D *hc_W_counter;
781     hc_W_counter=new TH1D("c_W_counter", "c_W_counter",16, 0, 16 );
782     hc_W_counter->GetXaxis()->SetBinLabel(1,"# e, N jets, Preselection");
783     hc_W_counter->GetXaxis()->SetBinLabel(2,"# W, N jets");
784     hc_W_counter->GetXaxis()->SetBinLabel(3,"# W+, N jets");
785     hc_W_counter->GetXaxis()->SetBinLabel(4,"# W-, N jets");
786     hc_W_counter->GetXaxis()->SetBinLabel(5,"# e, 0 jets, Preselection");
787     hc_W_counter->GetXaxis()->SetBinLabel(6,"# W, 0 jets");
788     hc_W_counter->GetXaxis()->SetBinLabel(7,"# W+, 0 jets");
789     hc_W_counter->GetXaxis()->SetBinLabel(8,"# W-, 0 jets");
790     hc_W_counter->GetXaxis()->SetBinLabel(9,"# e, 1 jet, Preselection");
791     hc_W_counter->GetXaxis()->SetBinLabel(10,"# W, 1 jet");
792     hc_W_counter->GetXaxis()->SetBinLabel(11,"# W+, 1 jet");
793     hc_W_counter->GetXaxis()->SetBinLabel(12,"# W-, 1 jet");
794     hc_W_counter->GetXaxis()->SetBinLabel(13,"# e, >1 jets, Preselection");
795     hc_W_counter->GetXaxis()->SetBinLabel(14,"# W, >1 jets");
796     hc_W_counter->GetXaxis()->SetBinLabel(15,"# W+, >1 jets");
797     hc_W_counter->GetXaxis()->SetBinLabel(16,"# W-, >1jets");
798    
799     // --------------------------------------------------------------------------------------------------------------------
800    
801    
802     // --------------------------------------------------------------------------------------------------------------------
803     // Z plots
804     // --------------------------------------------------------------------------------------------------------------------
805     int MAXZ=1;
806     TH1D *h_Z_invMass[MAXZ];
807     TH1D *h_Z_invMass2[MAXZ];
808     TH1D *h_Z_ptAll[MAXZ];
809     TH1D *h_Z_etaAll[MAXZ];
810     TH1D *h_Z_phiAll[MAXZ];
811     TH1D *h_Z_deltaPhi[MAXZ];
812     TH1D *h_Z_ptDiLepton[MAXZ];
813     TH1D *h_Z_ptDiLepton2[MAXZ];
814     TH1D *h_Z_etaDiLepton[MAXZ];
815     TH1D *h_Z_phiDiLepton[MAXZ];
816    
817     TH1D *h_Z_leadingJetPt[MAXZ];
818     TH1D *h_Z_summedJetPt[MAXZ];
819     TH1D *h_Z_leadingJetEta[MAXZ];
820     TH1D *h_Z_summedJetEta[MAXZ];
821     TH1D *h_Z_leadingJetPhi[MAXZ];
822     TH1D *h_Z_summedJetPhi[MAXZ];
823     TH1D *h_Z_nJets[MAXZ];
824     TH1D *h_Z_leadingJetDeltaPt[MAXZ];
825     TH1D *h_Z_leadingJetDeltaEta[MAXZ];
826     TH1D *h_Z_leadingJetDeltaPhi[MAXZ];
827     TH1D *h_Z_summedJetDeltaPt[MAXZ];
828     TH1D *h_Z_summedJetDeltaEta[MAXZ];
829     TH1D *h_Z_summedJetDeltaPhi[MAXZ];
830     TH1D *h_Z_recoilPt[MAXZ];
831     TH1D *h_Z_recoilEta[MAXZ];
832     TH1D *h_Z_recoilPhi[MAXZ];
833     TH1D *h_Z_metPt[MAXZ];
834     TH1D *h_Z_metPhi[MAXZ];
835    
836    
837    
838     for(int i=0; i<MAXZ; i++) {
839     sprintf(name,"h_Z_invMass_%d",i);
840     h_Z_invMass[i] = new TH1D(name,name,100,0,200);
841     h_Z_invMass[i]->SetXTitle("m_{ee} [GeV]");
842     h_Z_invMass[i]->SetYTitle("events / bin");
843    
844     sprintf(name,"h_Z_invMass2_%d",i);
845     h_Z_invMass2[i] = new TH1D(name,name,30,60,120);
846     h_Z_invMass2[i]->SetXTitle("m_{ee} [GeV]");
847     h_Z_invMass2[i]->SetYTitle("events / bin");
848    
849     sprintf(name,"h_Z_ptAll_%d",i);
850     h_Z_ptAll[i] = new TH1D(name,name,20,0,200);
851     h_Z_ptAll[i]->SetXTitle("p_{T} [GeV]");
852     h_Z_ptAll[i]->SetYTitle("events / bin");
853     sprintf(name,"h_Z_etaAll_%d",i);
854     h_Z_etaAll[i] = new TH1D(name,name,12,-3.,3.);
855     h_Z_etaAll[i]->SetXTitle("#eta");
856     h_Z_etaAll[i]->SetYTitle("events / bin");
857     sprintf(name,"h_Z_phiAll_%d",i);
858     h_Z_phiAll[i] = new TH1D(name,name,30,-Pi,Pi);
859     h_Z_phiAll[i]->SetXTitle("#phi");
860     h_Z_phiAll[i]->SetYTitle("events / bin");
861     sprintf(name,"h_Z_deltaPhi_%d",i);
862     h_Z_deltaPhi[i] = new TH1D(name,name,15,0,Pi);
863     h_Z_deltaPhi[i]->SetXTitle("#Delta #phi_{ee}");
864     h_Z_deltaPhi[i]->SetYTitle("events / bin");
865    
866     sprintf(name,"h_Z_ptDiLepton_%d",i);
867     h_Z_ptDiLepton[i] = new TH1D(name,name,40,0,200);
868     h_Z_ptDiLepton[i]->SetXTitle("p_{T} [GeV]");
869     h_Z_ptDiLepton[i]->SetYTitle("events / bin");
870    
871     sprintf(name,"h_Z_ptDiLepton2_%d",i);
872     h_Z_ptDiLepton2[i] = new TH1D(name,name,50,0,50);
873     h_Z_ptDiLepton2[i]->SetXTitle("p_{T} [GeV]");
874     h_Z_ptDiLepton2[i]->SetYTitle("events / bin");
875    
876     sprintf(name,"h_Z_etaDiLepton_%d",i);
877     h_Z_etaDiLepton[i] = new TH1D(name,name,16,-8.,8.);
878     h_Z_etaDiLepton[i]->SetXTitle("#eta");
879     h_Z_etaDiLepton[i]->SetYTitle("events / bin");
880     sprintf(name,"h_Z_phiDiLepton_%d",i);
881     h_Z_phiDiLepton[i] = new TH1D(name,name,30,-Pi,Pi);
882     h_Z_phiDiLepton[i]->SetXTitle("#phi");
883     h_Z_phiDiLepton[i]->SetYTitle("events / bin");
884    
885    
886     sprintf(name,"h_Z_leadingJetPt_%d",i);
887     h_Z_leadingJetPt[i] = new TH1D(name,name,20,0,200);
888     h_Z_leadingJetPt[i]->SetXTitle("p_{T} [GeV]");
889     h_Z_leadingJetPt[i]->SetYTitle("events / bin");
890     sprintf(name,"h_Z_summedJetPt_%d",i);
891     h_Z_summedJetPt[i] = new TH1D(name,name,20,0,200);
892     h_Z_summedJetPt[i]->SetXTitle("p_{T} [GeV]");
893     h_Z_summedJetPt[i]->SetYTitle("events / bin");
894     sprintf(name,"h_Z_leadingJetEta_%d",i);
895     h_Z_leadingJetEta[i] = new TH1D(name,name,12,-3,3);
896     h_Z_leadingJetEta[i]->SetXTitle("#eta");
897     h_Z_leadingJetEta[i]->SetYTitle("events / bin");
898     sprintf(name,"h_Z_summedJetEta_%d",i);
899     h_Z_summedJetEta[i] = new TH1D(name,name,16,-8,8);
900     h_Z_summedJetEta[i]->SetXTitle("#eta");
901     h_Z_summedJetEta[i]->SetYTitle("events / bin");
902     sprintf(name,"h_Z_leadingJetPhi_%d",i);
903     h_Z_leadingJetPhi[i] = new TH1D(name,name,30,-Pi,Pi);
904     h_Z_leadingJetPhi[i]->SetXTitle("#phi");
905     h_Z_leadingJetPhi[i]->SetYTitle("events / bin");
906     sprintf(name,"h_Z_summedJetPhi_%d",i);
907     h_Z_summedJetPhi[i] = new TH1D(name,name,30,-Pi,Pi);
908     h_Z_summedJetPhi[i]->SetXTitle("#phi");
909     h_Z_summedJetPhi[i]->SetYTitle("events / bin");
910    
911     sprintf(name,"h_Z_nJets_%d",i);
912     h_Z_nJets[i] = new TH1D(name,name,11,0,11);
913     h_Z_nJets[i]->SetXTitle("jet number");
914     h_Z_nJets[i]->SetYTitle("events / bin");
915    
916     sprintf(name,"h_Z_leadingJetDeltaPt_%d",i);
917     h_Z_leadingJetDeltaPt[i] = new TH1D(name,name,60,-150,150);
918     h_Z_leadingJetDeltaPt[i]->SetXTitle("#Delta p_{T,jZ} [GeV]");
919     h_Z_leadingJetDeltaPt[i]->SetYTitle("events / bin");
920     sprintf(name,"h_Z_leadingJetDeltaEta_%d",i);
921     h_Z_leadingJetDeltaEta[i] = new TH1D(name,name,16,-8,8);
922     h_Z_leadingJetDeltaEta[i]->SetXTitle("#Delta #eta_{jZ}");
923     h_Z_leadingJetDeltaEta[i]->SetYTitle("events / bin");
924     sprintf(name,"h_Z_leadingJetDeltaPhi_%d",i);
925     h_Z_leadingJetDeltaPhi[i] = new TH1D(name,name,15,0,Pi);
926     h_Z_leadingJetDeltaPhi[i]->SetXTitle("#Delta #phi_{jZ}");
927     h_Z_leadingJetDeltaPhi[i]->SetYTitle("events / bin");
928    
929     sprintf(name,"h_Z_summedJetDeltaPt_%d",i);
930     h_Z_summedJetDeltaPt[i] = new TH1D(name,name,60,-150,150);
931     h_Z_summedJetDeltaPt[i]->SetXTitle("#Delta p_{T,jZ} [GeV]");
932     h_Z_summedJetDeltaPt[i]->SetYTitle("events / bin");
933     sprintf(name,"h_Z_summedJetDeltaEta_%d",i);
934     h_Z_summedJetDeltaEta[i] = new TH1D(name,name,16,-8,8);
935     h_Z_summedJetDeltaEta[i]->SetXTitle("#Delta #eta_{jZ}");
936     h_Z_summedJetDeltaEta[i]->SetYTitle("events / bin");
937     sprintf(name,"h_Z_summedJetDeltaPhi_%d",i);
938     h_Z_summedJetDeltaPhi[i] = new TH1D(name,name,15,0,Pi);
939     h_Z_summedJetDeltaPhi[i]->SetXTitle("#Delta #phi_{jZ}");
940     h_Z_summedJetDeltaPhi[i]->SetYTitle("events / bin");
941    
942     sprintf(name,"h_Z_recoilPt_%d",i);
943     h_Z_recoilPt[i] = new TH1D(name,name,20,0,200);
944     h_Z_recoilPt[i]->SetXTitle("p_{T,j+Z} [GeV]");
945     h_Z_recoilPt[i]->SetYTitle("events / bin");
946     sprintf(name,"h_Z_recoilEta_%d",i);
947     h_Z_recoilEta[i] = new TH1D(name,name,16,-8,8);
948     h_Z_recoilEta[i]->SetXTitle("#eta_{j+Z}");
949     h_Z_recoilEta[i]->SetYTitle("events / bin");
950     sprintf(name,"h_Z_recoilPhi_%d",i);
951     h_Z_recoilPhi[i] = new TH1D(name,name,30,-Pi,Pi);
952     h_Z_recoilPhi[i]->SetXTitle("#phi_{j+Z}");
953     h_Z_recoilPhi[i]->SetYTitle("events / bin");
954    
955     sprintf(name,"h_Z_metPt_%d",i);
956     h_Z_metPt[i] = new TH1D(name,name,20,0,200);
957     h_Z_metPt[i]->SetXTitle("#slash{E}_{T} [GeV]");
958     h_Z_metPt[i]->SetYTitle("events / bin");
959     sprintf(name,"h_Z_metPhi_%d",i);
960     h_Z_metPhi[i] = new TH1D(name,name,30,-Pi,Pi);
961     h_Z_metPhi[i]->SetXTitle("#phi_{#slash{E}_{T}}");
962     h_Z_metPhi[i]->SetYTitle("events / bin");
963    
964     // TH2D *h_Z_summedJetDeltaPhi_VS_deltaPhi("summedJetDeltaPhi_VS_deltaPhi", "summedJetDeltaPhi_VS_deltaPhi", 30,-Pi,Pi,15,0,Pi);
965    
966     }
967     // --------------------------------------------------------------------------------------------------------------------
968    
969    
970    
971     ////////////////////////////////////////////////////////////////////
972     ////////////////////Loop over entries starts here //////////////////
973     ////////////////////////////////////////////////////////////////////
974    
975    
976    
977    
978     TH1D *h_jetPt = new TH1D("h_jetPt", "jet_Pt",100,0,100);
979    
980     /////////initialize variables
981    
982     Long64_t nentries = fChain->GetEntriesFast();
983     std::cout << "analysisClass::Loop(): nentries = " << nentries << std::endl;
984    
985     ////// The following ~7 lines have been taken from rootNtupleClass->Loop() /////
986     ////// If the root version is updated and rootNtupleClass regenerated, /////
987     ////// these lines may need to be updated. /////
988     Long64_t nb = 0;
989    
990    
991     for (Long64_t jentry=0; jentry<nentries;jentry++) { // loop over all events (entries) in the tree/chain
992    
993    
994     Long64_t ientry = fChain->LoadTree(jentry); // ientry: this is a counter over each single file in the input list
995    
996     if (ientry < 0) {cerr<<"WARNING: ientry = "<<ientry<<" is smaller than 0! (this is ok if the end of the file is reached...)"<<endl; break; }
997    
998     nb=fChain->GetEntry(jentry);
999     //fChain->GetEntry(jentry);
1000    
1001     if(jentry < 10 || jentry%1000 == 0) {
1002     std::cout << "analysisClass::Loop(): Events processed = " << jentry << std::endl;
1003     }
1004    
1005     if(sampleSize!=-1 && sampleSize==jentry) {
1006     goto END;
1007     }
1008     h_numberOfEvents->Fill(1);
1009    
1010     ////////////////////////////////////////////////////////////////////
1011     ////////////////////// User's code starts here /////////////////////
1012     ////////////////////////////////////////////////////////////////////
1013    
1014     // check the methods defined in baseClass and clean it up!!
1015    
1016 jueugste 1.5
1017    
1018     // --------------------------------------------------------------------------------------------------------------------
1019     // the MC samples have always run number ==1,
1020     // exploit this fact to set the isdata flag
1021     // --------------------------------------------------------------------------------------------------------------------
1022     if(firstEvent) {
1023     firstEvent=false;
1024     cout<<"check run number "<<Run<<endl;
1025     if(Run!=1) isdata=true;
1026     else if(Run==1) isdata=false;
1027     if(isdata) cout<<"Running over real data!!!"<<endl;
1028     else if(!isdata) cout<<"Running over MC!!!"<<endl;
1029     }
1030     // --------------------------------------------------------------------------------------------------------------------
1031    
1032    
1033    
1034     // check for every event if a new run has started and get the trigger info
1035     if(Run != previousRun) {
1036     previousRun = Run;
1037     cout<<"Now processing run number: "<<Run<<endl;
1038     GetHLTNames(Run);
1039     cout<<"got them..."<<endl;
1040     }
1041    
1042    
1043 jueugste 1.1
1044     i_preselected.clear();
1045     i_isolated.clear();
1046     i_identified.clear();
1047     i_goodElectrons.clear();
1048     i_goodBarrelElectrons.clear();
1049     i_goodEndcapElectrons.clear();
1050     i_jets.clear();
1051    
1052     // reset the branch arrays
1053 jueugste 1.2 tRun = -999;
1054     tEvent = -999;
1055     tLumiSection = -999;
1056    
1057 jueugste 1.1 tElN = 0;
1058     memset(tElPt, -999.999, ElMax*sizeof(double));
1059     memset(tElPx, -999.999, ElMax*sizeof(double));
1060     memset(tElPy, -999.999, ElMax*sizeof(double));
1061     memset(tElPz, -999.999, ElMax*sizeof(double));
1062 jueugste 1.3 memset(tElE, -999.999, ElMax*sizeof(double));
1063 jueugste 1.1 memset(tElEta, -999.999, ElMax*sizeof(double));
1064     memset(tElPhi, -999.999, ElMax*sizeof(double));
1065     memset(tElCharge, -999, ElMax*sizeof(int));
1066 jueugste 1.3 memset(tElDz, -999, ElMax*sizeof(double));
1067 jueugste 1.1
1068 jueugste 1.3 tPfMet = -999.999;
1069 jueugste 1.1 tCaloMet = -999.999;
1070 jueugste 1.3 tTcMet = -999.999;
1071 jueugste 1.1
1072     memset(tElPfMt, -999.999, ElMax*sizeof(double));
1073     memset(tElCaloMt, -999.999, ElMax*sizeof(double));
1074     memset(tElTcMt, -999.999, ElMax*sizeof(double));
1075    
1076 jueugste 1.2 tSumEHF_minus = -999.999;
1077     tSumEHF_plus = -999.999;
1078 jueugste 1.4 tSumEHF_Aminus = -999.999;
1079     tSumEHF_Aplus = -999.999;
1080     tSumEHF_Bminus = -999.999;
1081     tSumEHF_Bplus = -999.999;
1082 jueugste 1.2 tSumETHF_minus = -999.999;
1083     tSumETHF_plus = -999.999;
1084 jueugste 1.3 tNtowers_plus = 0.;
1085     tNtowers_minus = 0.;
1086 jueugste 1.2
1087 jueugste 1.5 tCaloTowersN = 0;
1088     memset(tCaloTowersE, -999.999, TowMax*sizeof(double));
1089 jueugste 1.6 memset(tCaloTowersEt, -999.999, TowMax*sizeof(double));
1090     memset(tCaloTowersEta, -999.999, TowMax*sizeof(double));
1091 jueugste 1.5 memset(tCaloTowersEmE, -999.999, TowMax*sizeof(double));
1092     memset(tCaloTowersHadE, -999.999, TowMax*sizeof(double));
1093     memset(tCaloTowersHasEB, -999.999, TowMax*sizeof(int));
1094     memset(tCaloTowersHasEE, -999.999, TowMax*sizeof(int));
1095     memset(tCaloTowersHasHB, -999.999, TowMax*sizeof(int));
1096     memset(tCaloTowersHasHE, -999.999, TowMax*sizeof(int));
1097     memset(tCaloTowersHasHF, -999.999, TowMax*sizeof(int));
1098     memset(tCaloTowersId, -999.999, TowMax*sizeof(int));
1099    
1100    
1101 jueugste 1.2 tJetN = 0;
1102     memset(tJetPt, -999.999, ElMax*sizeof(double));
1103     memset(tJetEta, -999.999, ElMax*sizeof(double));
1104 jueugste 1.5 memset(tJetPhi, -999.999, ElMax*sizeof(double));
1105 jueugste 1.2
1106 jueugste 1.4 tEtaMax = -9.9;
1107     tEtaMin = 9.9;
1108 jueugste 1.2 tEminusPz = 0.;
1109     tEplusPz = 0.;
1110 jueugste 1.3
1111     tSumE = 0.;
1112     tSumPz = 0.;
1113 jueugste 1.2
1114 jueugste 1.6 // pflow
1115     tPfN = 0;
1116     memset(tPfE, -999.999, 1000*sizeof(double));
1117     memset(tPfEt, -999.999, 1000*sizeof(double));
1118     memset(tPfEta, -999.999, 1000*sizeof(double));
1119     memset(tPfPt, -999.999, 1000*sizeof(double));
1120    
1121 jueugste 1.1
1122 jueugste 1.3 tVertexN = 0;
1123 jueugste 1.6 // memset(tVertexNdof, -999.999, 25*sizeof(int));
1124     memset(tVertexNdof, -999.999, 25*sizeof(double));
1125 jueugste 1.5 memset(tVertexChi2, -999.999, 25*sizeof(double));
1126 jueugste 1.3 memset(tVertexX, -999.999, 25*sizeof(double));
1127     memset(tVertexY, -999.999, 25*sizeof(double));
1128     memset(tVertexZ, -999.999, 25*sizeof(double));
1129 jueugste 1.6 // reset the vertex tracks array
1130     // FIXME: hardcoded array size!!!
1131     for (int ivtx=0;ivtx<25;++ivtx)
1132     {
1133     for (int itrk=0;itrk<400;++itrk)
1134     {
1135     tVertexTrackIndex[ivtx][itrk]=-1;
1136     // fTVertexTrackWeight[ivtx][itrk]=-1;
1137     }
1138     }
1139    
1140     //pile-up
1141     tPUnumInteractions = 0;
1142     memset(tPUzPositions, -999.999, 15*sizeof(double));
1143 jueugste 1.3
1144     tBeamSpotX = -999.999;
1145     tBeamSpotY = -999.999;
1146     tBeamSpotZ = -999.999;
1147    
1148     tTracksN = 0;
1149 jueugste 1.6 memset(tTrackPt, -999.999, TrackMax*sizeof(double));
1150     memset(tTrackPx, -999.999, TrackMax*sizeof(double));
1151     memset(tTrackPy, -999.999, TrackMax*sizeof(double));
1152     memset(tTrackPz, -999.999, TrackMax*sizeof(double));
1153     memset(tTrackDzBs, -999.999, TrackMax*sizeof(double));
1154     memset(tTrackEta, -999.999, TrackMax*sizeof(double));
1155     memset(tTrackPhi, -999.999, TrackMax*sizeof(double));
1156     // memset(tTrackdsz, -999.999, 1000*sizeof(double));
1157     // memset(tTrackdxy, -999.999, 1000*sizeof(double));
1158    
1159    
1160 jueugste 1.3
1161 jueugste 1.4 // --------------------------------------------------------------------------------
1162 jueugste 1.1 // get the MET
1163     // --------------------------------------------------------------------------------
1164     double met;
1165     double metPhi;
1166     double delPhiMet;
1167     met=PFMET;
1168     metPhi=PFMETphi;
1169    
1170     // --------------------------------------------------------------------------------
1171 jueugste 1.4 // get the muons
1172     // --------------------------------------------------------------------------------
1173 jueugste 1.5 // for(int m=0; m<NMus; m++) {
1174 jueugste 1.4
1175 jueugste 1.5 // cout<<MuPt[m]<<endl;
1176 jueugste 1.4
1177 jueugste 1.5 // }
1178 jueugste 1.4
1179     // --------------------------------------------------------------------------------
1180    
1181    
1182     // --------------------------------------------------------------------------------
1183 jueugste 1.1 // loop over all electrons in one event
1184     // --------------------------------------------------------------------------------
1185     for(int i=0; i<NEles; i++) {
1186    
1187     // --------------------------------------------------------------------------------
1188     // get the indices of the electrons in each event
1189     // --------------------------------------------------------------------------------
1190     bool pre=false;
1191     bool iso=false;
1192     bool id=false;
1193    
1194     if(ElectronPreselection(i)==0) {i_preselected.push_back(i); debug++; pre=true;}
1195    
1196     if(!ethIDandIso) {
1197    
1198     // if(WPElectronID(i, iso, WorkingPointCuts)==0) {i_isolated.push_back(); iso=true;}
1199     // else continue;
1200 jueugste 1.6 if(WPElectronID(i, all, WorkingPointCuts)==0) {i_identified.push_back(i); debug2++; id=true;}
1201     // if(ElIDsimpleWP80relIso[i] == 7) {i_identified.push_back(i); debug2++; id=true;}
1202 jueugste 1.1
1203 jueugste 1.6 cout<<WPElectronID(i, all, WorkingPointCuts)<<endl;
1204    
1205     if(ElIDsimpleWP80relIso[i] == 5) cout<<WPElectronID(i, all, WorkingPointCuts)<<endl;
1206    
1207     if(id==true) cout<<ElPt[i]<<endl;
1208    
1209    
1210 jueugste 1.1 if(pre==true && id==true && (fabs(ElSCEta[i]) < 1.4442 || fabs(ElSCEta[i]) > 1.566) && fabs(ElSCEta[i]) < 2.5) {i_goodElectrons.push_back(i);}
1211     // fiducial cuts
1212     if(fabs(ElSCEta[i]) < 1.4442 && pre==true && id==true) {i_goodBarrelElectrons.push_back(i);}
1213     if(fabs(ElSCEta[i]) > 1.566 && fabs(ElSCEta[i]) < 2.5 && pre==true && id==true) {i_goodEndcapElectrons.push_back(i);}
1214     }
1215    
1216     if(ethIDandIso) {
1217     if(ETHElectronID(i, all)) {i_identified.push_back(i); debug2++; id=true;}
1218     if(fabs(ElSCEta[i]) < 1.4442 && pre==true && id==true) {i_goodBarrelElectrons.push_back(i);}
1219     if(fabs(ElSCEta[i]) > 1.566 && fabs(ElSCEta[i]) < 2.5 && pre==true && id==true) {i_goodEndcapElectrons.push_back(i);}
1220    
1221     }
1222     // --------------------------------------------------------------------------------
1223    
1224 jueugste 1.6
1225 jueugste 1.1 // the N-1 plots
1226     // if(fabs(accEta)<etaBarrelMax) {
1227     // if(WPElectronID(i, see, WorkingPointCuts)==0) hn1_El_ElSigmaIetaIeta[2]->Fill(See);
1228     // if(WPElectronID(i, dphi, WorkingPointCuts)==0) hn1_El_ElDeltaPhi[2]->Fill(delPhi);
1229     // if(WPElectronID(i, deta, WorkingPointCuts)==0) hn1_El_ElDeltaEta[2]->Fill(delEta);
1230     // if(WPElectronID(i, hoe, WorkingPointCuts)==0) hn1_El_ElHoverE[2]->Fill(Hoe);
1231     // if(WPElectronID(i, combiso, WorkingPointCuts)==0) hn1_El_ElCombIso[2]->Fill(combIso_B);
1232     // if(WPElectronID(i, conversion, WorkingPointCuts)==0) hn1_El_ElNumberOfMissingInnerHits[2]->Fill(missingHits);
1233     // }
1234     // if(fabs(accEta)>etaEndcapMin && fabs(accEta)<etaEndcapMax) {
1235     // if(WPElectronID(i, see, WorkingPointCuts)==0) hn1_El_ElSigmaIetaIeta[3]->Fill(See);
1236     // if(WPElectronID(i, dphi, WorkingPointCuts)==0) hn1_El_ElDeltaPhi[3]->Fill(delPhi);
1237     // if(WPElectronID(i, deta, WorkingPointCuts)==0) hn1_El_ElDeltaEta[3]->Fill(delEta);
1238     // if(WPElectronID(i, hoe, WorkingPointCuts)==0) hn1_El_ElHoverE[3]->Fill(Hoe);
1239     // if(WPElectronID(i, combiso, WorkingPointCuts)==0) hn1_El_ElCombIso[3]->Fill(combIso_E);
1240     // if(WPElectronID(i, conversion, WorkingPointCuts)==0) hn1_El_ElNumberOfMissingInnerHits[3]->Fill(missingHits);
1241     // }
1242    
1243    
1244    
1245     } // loop over all electrons in one event
1246    
1247    
1248    
1249     // ******************************************************************************
1250     // this is the actual code
1251     // ******************************************************************************
1252    
1253     double etaMax_B = 1.4442;
1254     double etaMin_E = 1.566;
1255     double etaMax_E = 2.5;
1256    
1257     //--------------------------------------------------------------------------------------------------------------------
1258     // check fiducial region of the preselected electrons
1259     //--------------------------------------------------------------------------------------------------------------------
1260     for(int i=0; i<i_preselected.size(); i++) {
1261     if(fabs(ElSCEta[i_preselected[i]]) < 1.4442) {
1262     debug3++;
1263    
1264     }
1265     }
1266     //--------------------------------------------------------------------------------------------------------------------
1267    
1268    
1269    
1270     //--------------------------------------------------------------------------------------------------------------------
1271     // HLT Trigger
1272     //--------------------------------------------------------------------------------------------------------------------
1273     bool isTriggered = false;
1274 jueugste 1.5 if(isdata && useElectronTiggers) {
1275     int Photon15_L1R = getHLTtriggerBit("HLT_Photon15_L1R");
1276     int Photon15_Cleaned_L1R = getHLTtriggerBit("HLT_Photon15_Cleaned_L1R");
1277     int Photon20_Cleaned_L1R = getHLTtriggerBit("HLT_Photon20_Cleaned_L1R");
1278     int Ele10_LW_L1R = getHLTtriggerBit("HLT_Ele10_LW_L1R");
1279     int Ele10_SW_L1R = getHLTtriggerBit("HLT_Ele10_SW_L1R");
1280     int Ele15_SW_L1R = getHLTtriggerBit("HLT_Ele15_SW_L1R");
1281     int Ele15_SW_CaloEleId_L1R = getHLTtriggerBit("HLT_Ele15_SW_CaloEleId_L1R");
1282     int Ele15_SW_TightEleId_L1R = getHLTtriggerBit("HLT_Ele15_SW_TightEleId_L1R");
1283     int Ele17_SW_CaloEleId_L1R = getHLTtriggerBit("HLT_Ele17_SW_CaloEleId_L1R");
1284     int Ele17_SW_EleId_L1R = getHLTtriggerBit("HLT_Ele17_SW_EleId_L1R");
1285 jueugste 1.6 int Ele17_SW_TightEleId_L1R = getHLTtriggerBit("HLT_Ele17_SW_TightEleId_L1R");
1286 jueugste 1.5 int Ele17_SW_TighterEleId_L1R_v1 = getHLTtriggerBit("HLT_Ele17_SW_TighterEleId_L1R_v1");
1287 jueugste 1.6 int Ele17_SW_TighterEleId_L1R_v2 = getHLTtriggerBit("HLT_Ele17_SW_TighterEleId_L1R_v2");
1288     int Ele17_SW_TighterEleId_L1R_v3 = getHLTtriggerBit("HLT_Ele17_SW_TighterEleId_L1R_v3");
1289 jueugste 1.5
1290     // check if at least one trigger was found
1291     if(Photon15_L1R == -1 &&
1292     Photon15_Cleaned_L1R == -1 &&
1293     Photon20_Cleaned_L1R == -1 &&
1294     Ele10_LW_L1R == -1 &&
1295     Ele10_SW_L1R == -1 &&
1296     Ele15_SW_L1R == -1 &&
1297     Ele15_SW_CaloEleId_L1R == -1 &&
1298     Ele15_SW_TightEleId_L1R == -1 &&
1299     Ele17_SW_CaloEleId_L1R == -1 &&
1300     Ele17_SW_EleId_L1R == -1 &&
1301 jueugste 1.6 Ele17_SW_TightEleId_L1R == -1 &&
1302     Ele17_SW_TighterEleId_L1R_v1 == -1 &&
1303     Ele17_SW_TighterEleId_L1R_v2 == -1 &&
1304     Ele17_SW_TighterEleId_L1R_v3 == -1
1305 jueugste 1.5 ) {
1306     cerr<<"None of the trigger bits found!!!"<<endl;
1307     h_HLTInfo->Fill(0);
1308     }
1309    
1310     // if(isdata && Run < 141956 && HLTResults[Ele15_LW] == 1) isTriggered=true;
1311     // if(isdata && Run >= 141956 && HLTResults[Ele15_SW_CaloEleId] == 1) isTriggered=true;
1312     //cout<<"HLT result: "<<HLTResults[Ele17_SW_CaloEleId]<<endl;
1313     // if(isdata && HLTResults[Ele17_SW_CaloEleId]==1) isTriggered=true;
1314     if(isdata && (
1315 jueugste 1.6 HLTResults[Photon15_L1R] == 1 ||
1316     HLTResults[Photon15_Cleaned_L1R] == 1 ||
1317     HLTResults[Photon20_Cleaned_L1R] == 1 ||
1318     HLTResults[Ele10_LW_L1R] == 1 ||
1319     HLTResults[Ele10_SW_L1R] == 1 ||
1320     HLTResults[Ele15_SW_L1R] == 1 ||
1321     HLTResults[Ele15_SW_CaloEleId_L1R] == 1 ||
1322     HLTResults[Ele15_SW_TightEleId_L1R] == 1 ||
1323     HLTResults[Ele17_SW_CaloEleId_L1R] == 1 ||
1324     HLTResults[Ele17_SW_EleId_L1R] == 1 ||
1325     HLTResults[Ele17_SW_TightEleId_L1R] == 1 ||
1326     HLTResults[Ele17_SW_TighterEleId_L1R_v1] == 1 ||
1327     HLTResults[Ele17_SW_TighterEleId_L1R_v2] == 1 ||
1328     HLTResults[Ele17_SW_TighterEleId_L1R_v3] == 1
1329 jueugste 1.5 )) isTriggered=true;
1330     }
1331    
1332     else if(isdata && !useElectronTiggers) {
1333     int HLT_ZeroBias = getHLTtriggerBit("HLT_ZeroBias");
1334     if(isdata && (
1335     HLTResults[HLT_ZeroBias]==1
1336     )) isTriggered=true;
1337 jueugste 1.1 }
1338 jueugste 1.5
1339 jueugste 1.1 else if(!isdata) {
1340 jueugste 1.5 int Ele15 = getHLTtriggerBit("HLT_Ele15_LW_L1R");
1341     //cout<<"HLT result: "<<HLTResults[ Ele15]<<endl;
1342     if(HLTResults[Ele15]==1) isTriggered=true;
1343 jueugste 1.1 }
1344 jueugste 1.5 // //if(HLTResults(Ele15_SW)==1) isTriggered=true;
1345     // // if(isdata && Run < 141956 && HLTResults[Ele15_LW] == 1) isTriggered=true;
1346     // // if(isdata && Run >= 141956 && HLTResults[Ele15_SW_CaloEleId] == 1) isTriggered=true;
1347     // // if(!isdata && HLTResults[Ele15_SW]==1) isTriggered=true;
1348    
1349 jueugste 1.6 isTriggered=true;
1350    
1351     // cout<<"here0"<<endl;
1352    
1353 jueugste 1.5
1354 jueugste 1.1 //--------------------------------------------------------------------------------------------------------------------
1355    
1356     //--------------------------------------------------------------------------------------------------------------------
1357     // get the number of jets per event */*
1358     //--------------------------------------------------------------------------------------------------------------------
1359     int nJets=0;
1360 jueugste 1.2 for(int j=0; j<PFNJets; j++) {
1361 jueugste 1.1 double scale = 1; //JScale[j];
1362 jueugste 1.2 double jpx = PFJPx[j] / scale;
1363     double jpy = PFJPy[j] / scale;
1364     double jpz = PFJPz[j] / scale;
1365     double jpt = PFJPt[j] / scale;
1366     double jeta = PFJEta[j];
1367 jueugste 1.1 TVector3 jet;
1368     jet.SetXYZ(jpx, jpy, jpz);
1369     double deltar;
1370     bool notMatched=true;
1371     // match jet with an electron
1372     for(int e=0; e<i_goodElectrons.size(); e++) {
1373     TVector3 el;
1374     el.SetXYZ(ElPx[i_goodElectrons[e]], ElPy[i_goodElectrons[e]], ElPz[i_goodElectrons[e]]);
1375     deltar = jet.DeltaR(el);
1376     if(fabs(deltar) < 0.3) notMatched=false;
1377     }
1378     // apply loose jet ID
1379     bool jetID=false;
1380     if(JEMfrac[j] > 0.01 &&
1381     JID_HPD[j] < 0.989 &&
1382     JID_n90Hits[j] > 1) jetID=true;
1383     // check if matched and good jet
1384     if(notMatched && jpt > 30 && fabs(jeta) < 2.5 && jetID) {
1385     nJets++;
1386     i_jets.push_back(j);
1387     }
1388     } // end: number of jets
1389    
1390    
1391     //--------------------------------------------------------------------------------------------------------------------
1392    
1393     //--------------------------------------------------------------------------------------------------------------------
1394     // check if diffractive event
1395     //--------------------------------------------------------------------------------------------------------------------
1396     bool isDiffractive=false;
1397 jueugste 1.3 // if(SumEHF_minus == 0 || SumEHF_plus == 0 ||
1398     // SumETHF_minus == 0 || SumETHF_plus == 0 ) {
1399     // isDiffractive=true;
1400     // }
1401 jueugste 1.1
1402     //--------------------------------------------------------------------------------------------------------------------
1403    
1404    
1405     //--------------------------------------------------------------------------------------------------------------------
1406     //--------------------------------------------------------------------------------------------------------------------
1407     // ELECTRONS and general things
1408     //--------------------------------------------------------------------------------------------------------------------
1409     //--------------------------------------------------------------------------------------------------------------------
1410    
1411     // count total number of events
1412     El_count[0]++;
1413    
1414     if(!isTriggered) continue;
1415    
1416     // count triggered events
1417     El_count[1]++;
1418    
1419     // cout<<"bla"<<endl;
1420    
1421     // if(i_preselected.size() > 0) {
1422     // tRun = Run;
1423     // tEvent = Event;
1424     // tLumiSection = LumiSection;
1425    
1426     // }
1427    
1428     // cout<<tRun<<endl;
1429     // cout<<tEvent<<endl;
1430     // cout<<tLumiSection<<endl;
1431    
1432    
1433 jueugste 1.6 // cout<<"here1"<<endl;
1434    
1435    
1436 jueugste 1.1 // look at preselected electrons
1437     for(int i=0; i< i_preselected.size(); i++) {
1438     // calculate the variables to fill
1439     double deltaPhiElMet=deltaPhi(ElPhi[i_preselected[i]], PFMETphi);
1440     double mt = transverseMass(ElPt[i_preselected[i]] * PtCorrection, met, deltaPhiElMet);
1441     int charge = ElCharge[i_preselected[i]];
1442 jueugste 1.3 int dz = ElDzBS[i_preselected[i]];
1443 jueugste 1.1 double pt = ElPt[i_preselected[i]] * PtCorrection;
1444     double phi = ElPhi[i_preselected[i]];
1445     double eta = ElEta[i_preselected[i]];
1446     double Hoe=ElHcalOverEcal[i_preselected[i]];
1447     double trkIso = ElDR03TkSumPt[i_preselected[i]];
1448     double ecalIso = ElDR03EcalRecHitSumEt[i_preselected[i]];
1449     double hcalIso = ElDR03HcalTowerSumEt[i_preselected[i]];
1450     double combIso_B=(trkIso + max(0., ecalIso - 1.) + hcalIso) / ( ElPt[i_preselected[i]] * PtCorrection);
1451     double combIso_E=(trkIso + ecalIso + hcalIso) / (ElPt[i_preselected[i]] * PtCorrection);
1452     double See=ElSigmaIetaIeta[i_preselected[i]];
1453     double missingHits=ElNumberOfMissingInnerHits[i_preselected[i]];
1454     double dEtaCorrection=0;
1455     double dPhiCorrection=0;
1456     if(isdata==true && applyDeltaCorrection==true) {
1457     dEtaCorrection=detaCorrections(ElSCEta[i_preselected[i]], ElPhi[i_preselected[i]]);
1458     dPhiCorrection=dphiCorrections(ElSCEta[i_preselected[i]], ElPhi[i_preselected[i]]);
1459     }
1460     double delPhi=ElDeltaPhiSuperClusterAtVtx[i_preselected[i]]-dphiCorrections(ElEta[i_preselected[i]], ElPhi[i_preselected[i]]);
1461     double delEta=ElDeltaEtaSuperClusterAtVtx[i_preselected[i]]-detaCorrections(ElEta[i_preselected[i]], ElPhi[i_preselected[i]]);
1462    
1463     // barrel
1464     if(fabs(ElSCEta[i_preselected[i]]) < etaMax_B) {
1465     hs_El_ElTransMass[0]->Fill(mt);
1466     hs_El_ElPt[0]->Fill(pt);
1467     hs_El_ElPhi[0]->Fill(phi);
1468     hs_El_ElEta[0]->Fill(eta);
1469     hs_El_ElMet[0]->Fill(met);
1470     hs_El_ElCharge[0]->Fill(charge);
1471     hs_El_Njets[0]->Fill(nJets);
1472     El_count[2]++;
1473     }
1474     // endcap
1475     if(fabs(ElSCEta[i_preselected[i]]) > etaMin_E && fabs(ElSCEta[i_preselected[i]]) < etaMax_E) {
1476     hs_El_ElTransMass[1]->Fill(mt);
1477     hs_El_ElPt[1]->Fill(pt);
1478     hs_El_ElPhi[1]->Fill(phi);
1479     hs_El_ElEta[1]->Fill(eta);
1480     hs_El_ElMet[1]->Fill(met);
1481     hs_El_ElCharge[1]->Fill(charge);
1482     hs_El_Njets[1]->Fill(nJets);
1483     El_count[3]++;
1484     }
1485     // barrel + endcap
1486     if(fabs(ElSCEta[i_preselected[i]]) < etaMax_B || (fabs(ElSCEta[i_preselected[i]]) > etaMin_E && fabs(ElSCEta[i_preselected[i]]) < etaMax_E)) {
1487     hs_El_ElTransMass[2]->Fill(mt);
1488     hs_El_ElPt[2]->Fill(pt);
1489     hs_El_ElPhi[2]->Fill(phi);
1490     hs_El_ElEta[2]->Fill(eta);
1491     hs_El_ElMet[2]->Fill(met);
1492     hs_El_ElCharge[2]->Fill(charge);
1493     hs_El_Njets[2]->Fill(nJets);
1494     El_count[4]++;
1495     }
1496    
1497     // make the N-1 ID & isolation plots (VBTF WP)
1498     if(fabs(ElSCEta[i_preselected[i]])<etaMax_B) {
1499     if(WPElectronID(i_preselected[i], see, WorkingPointCuts)==0) hn1_El_ElSigmaIetaIeta[0]->Fill(See);
1500     if(WPElectronID(i_preselected[i], dphi, WorkingPointCuts)==0) hn1_El_ElDeltaPhi[0]->Fill(delPhi);
1501     if(WPElectronID(i_preselected[i], deta, WorkingPointCuts)==0) hn1_El_ElDeltaEta[0]->Fill(delEta);
1502     if(WPElectronID(i_preselected[i], hoe, WorkingPointCuts)==0) hn1_El_ElHoverE[0]->Fill(Hoe);
1503     if(WPElectronID(i_preselected[i], combiso, WorkingPointCuts)==0) hn1_El_ElCombIso[0]->Fill(combIso_B);
1504     if(WPElectronID(i_preselected[i], conversion, WorkingPointCuts)==0) hn1_El_ElNumberOfMissingInnerHits[0]->Fill(missingHits);
1505     }
1506     if(fabs(ElSCEta[i_preselected[i]])>etaMin_E && fabs(ElSCEta[i_preselected[i]])<etaMax_E) {
1507     if(WPElectronID(i_preselected[i], see, WorkingPointCuts)==0) hn1_El_ElSigmaIetaIeta[1]->Fill(See);
1508     if(WPElectronID(i_preselected[i], dphi, WorkingPointCuts)==0) hn1_El_ElDeltaPhi[1]->Fill(delPhi);
1509     if(WPElectronID(i_preselected[i], deta, WorkingPointCuts)==0) hn1_El_ElDeltaEta[1]->Fill(delEta);
1510     if(WPElectronID(i_preselected[i], hoe, WorkingPointCuts)==0) hn1_El_ElHoverE[1]->Fill(Hoe);
1511     if(WPElectronID(i_preselected[i], combiso, WorkingPointCuts)==0) hn1_El_ElCombIso[1]->Fill(combIso_E);
1512     if(WPElectronID(i_preselected[i], conversion, WorkingPointCuts)==0) hn1_El_ElNumberOfMissingInnerHits[1]->Fill(missingHits);
1513     }
1514    
1515     // look at IDed and isolated Electrons
1516     // barrel
1517     if(fabs(ElSCEta[i_preselected[i]]) < etaMax_B &&
1518     WPElectronID(i_preselected[i], all, WorkingPointCuts)==0) {
1519     hs_El_ElTransMass[3]->Fill(mt);
1520     hs_El_ElPt[3]->Fill(pt);
1521     hs_El_ElPhi[3]->Fill(phi);
1522     hs_El_ElEta[3]->Fill(eta);
1523     hs_El_ElMet[3]->Fill(met);
1524     hs_El_ElCharge[3]->Fill(charge);
1525     hs_El_Njets[3]->Fill(nJets);
1526     El_count[5]++;
1527     }
1528     // endcap
1529     if(fabs(ElSCEta[i_preselected[i]]) > etaMin_E && fabs(ElSCEta[i_preselected[i]]) < etaMax_E &&
1530     WPElectronID(i_preselected[i], all, WorkingPointCuts)==0) {
1531     hs_El_ElTransMass[1]->Fill(mt);
1532     hs_El_ElPt[4]->Fill(pt);
1533     hs_El_ElPhi[4]->Fill(phi);
1534     hs_El_ElEta[4]->Fill(eta);
1535     hs_El_ElMet[4]->Fill(met);
1536     hs_El_ElCharge[4]->Fill(charge);
1537     hs_El_Njets[4]->Fill(nJets);
1538     El_count[6]++;
1539     }
1540     // barrel + endcap
1541     if( (fabs(ElSCEta[i_preselected[i]]) < etaMax_B || (fabs(ElSCEta[i_preselected[i]]) > etaMin_E && fabs(ElSCEta[i_preselected[i]]) < etaMax_E) ) &&
1542     WPElectronID(i_preselected[i], all, WorkingPointCuts)==0) {
1543     hs_El_ElTransMass[5]->Fill(mt);
1544     hs_El_ElPt[5]->Fill(pt);
1545     hs_El_ElPhi[5]->Fill(phi);
1546     hs_El_ElEta[5]->Fill(eta);
1547     hs_El_ElMet[5]->Fill(met);
1548     hs_El_ElCharge[5]->Fill(charge);
1549     hs_El_Njets[5]->Fill(nJets);
1550     El_count[7]++;
1551     }
1552    
1553     // fill also the ETH ID&Iso N-1 plots at some point...
1554    
1555     }
1556    
1557    
1558    
1559     //--------------------------------------------------------------------------------------------------------------------
1560     // count the good leptons - pt > 10 / 25 GeV
1561     //--------------------------------------------------------------------------------------------------------------------
1562     int nLeptons10_B=0;
1563     int nLeptons25_B=0;
1564     for(int i=0; i<i_goodBarrelElectrons.size(); i++) {
1565     if(ElPt[i_goodBarrelElectrons[i]] > 10) nLeptons10_B++;
1566     if(ElPt[i_goodBarrelElectrons[i]] > 25) nLeptons25_B++;
1567     }
1568     int nLeptons10_E=0;
1569     int nLeptons25_E=0;
1570     for(int i=0; i<i_goodEndcapElectrons.size(); i++) {
1571     if(ElPt[i_goodEndcapElectrons[i]] > 10) nLeptons10_E++;
1572     if(ElPt[i_goodEndcapElectrons[i]] > 25) nLeptons25_E++;
1573     }
1574     //--------------------------------------------------------------------------------------------------------------------
1575    
1576    
1577    
1578 jueugste 1.5 // cout<<"# vertices: "<<NVrtx<<endl;
1579     // for(int jvert=0; jvert<25; jvert++) {
1580     // if(VrtxTrkIndex[jvert][0] != -1) cout<<jvert<<". vertex: ----------------"<<endl;
1581    
1582    
1583     // double dphi = 0;
1584     // for(int jtrk=0; jtrk<25; jtrk++) {
1585     // if(VrtxTrkIndex[jvert][jtrk] != -1) cout<<VrtxTrkIndex[jvert][jtrk]<<", pt= "<< TrkPt[VrtxTrkIndex[jvert][jtrk]] <<", phi= "<<TrkPhi[VrtxTrkIndex[jvert][jtrk]]<<endl;
1586     // }
1587     // }
1588    
1589    
1590 jueugste 1.6 // cout<<"here2"<<endl;
1591 jueugste 1.5
1592 jueugste 1.2 //--------------------------------------------------------------------------------------------------------------------
1593 jueugste 1.3 // Fill the Tree
1594 jueugste 1.2 //--------------------------------------------------------------------------------------------------------------------
1595 jueugste 1.3
1596 jueugste 1.6 // cout<<i_goodElectrons.size()<<endl;
1597    
1598 jueugste 1.3 if(i_goodElectrons.size() < 1) continue;
1599    
1600 jueugste 1.6 // cout<<"here2a"<<endl;
1601    
1602    
1603 jueugste 1.3
1604 jueugste 1.2 // general info
1605 jueugste 1.1 tRun = Run;
1606     tEvent = Event;
1607     tLumiSection = LumiSection;
1608    
1609 jueugste 1.6 // get the inst. lumi.
1610     // double avgInstLumi;
1611     // avgInstLumi = a.getDeliveredInstLumi(Run, LumiSection);
1612     // cout<<"avg. inst. lumi.: "<<avgInstLumi<<endl;
1613    
1614    
1615 jueugste 1.2 // Electrons
1616     tElN = i_goodElectrons.size();
1617 jueugste 1.1 for(int i=0; i<i_goodElectrons.size(); i++) {
1618 jueugste 1.6
1619     // if(ElIDsimpleWP80relIso[i_goodElectrons[i]] != 7) cout<<ElIDsimpleWP80relIso[i_goodElectrons[i]]<<"/"<<ElPt[i_goodElectrons[i]]<<endl;
1620    
1621 jueugste 1.1 tElPt[i] = ElPt[i_goodElectrons[i]];
1622     tElPx[i] = ElPx[i_goodElectrons[i]];
1623     tElPy[i] = ElPy[i_goodElectrons[i]];
1624     tElPz[i] = ElPz[i_goodElectrons[i]];
1625 jueugste 1.3 tElE[i] = ElE[i_goodElectrons[i]];
1626 jueugste 1.1 tElEta[i] = ElEta[i_goodElectrons[i]];
1627     tElPhi[i] = ElPhi[i_goodElectrons[i]];
1628     tElCharge[i] = ElCharge[i_goodElectrons[i]];
1629 jueugste 1.3 tElDz[i] = ElDzBS[i_goodElectrons[i]];
1630 jueugste 1.1 tElPfMt[i] = transverseMass(ElPt[i_goodElectrons[i]], PFMET, deltaPhi(ElPhi[i_goodElectrons[i]], PFMETphi));
1631     tElCaloMt[i] = transverseMass(ElPt[i_goodElectrons[i]], RawMET, deltaPhi(ElPhi[i_goodElectrons[i]], RawMETphi));
1632     tElTcMt[i] = transverseMass(ElPt[i_goodElectrons[i]], TCMET, deltaPhi(ElPhi[i_goodElectrons[i]], TCMETphi));
1633     }
1634 jueugste 1.6
1635     // cout<<"here3"<<endl;
1636 jueugste 1.1
1637 jueugste 1.6
1638 jueugste 1.2 // different Met
1639 jueugste 1.1 tPfMet = PFMET;
1640     tCaloMet = RawMET;
1641     tTcMet = TCMET;
1642    
1643 jueugste 1.2 // HF variables
1644 jueugste 1.3
1645     double SumEHF_minus = 0.;
1646     double SumEHF_plus = 0.;
1647 jueugste 1.4 double SumEHF_Aminus = 0.;
1648     double SumEHF_Aplus = 0.;
1649     double SumEHF_Bminus = 0.;
1650     double SumEHF_Bplus = 0.;
1651 jueugste 1.3 double SumETHF_minus = 0.;
1652     double SumETHF_plus = 0.;
1653     int Ntowers_plus = 0.;
1654     int Ntowers_minus = 0.;
1655    
1656 jueugste 1.4 double SumE = 0.;
1657 jueugste 1.3 double minusPz = 0.;
1658     double plusPz = 0.;
1659    
1660     double CaloTowersEMin_EB = 1.5;
1661     double CaloTowersEMin_EE = 2.5; // cut on ET !!!!!!!!!!!!!!!!!!
1662     double CaloTowersEMin_HB = 1.5;
1663     double CaloTowersEMin_HE = 2.;
1664     double CaloTowersEMin_HF = 4.;
1665    
1666 jueugste 1.6
1667     // cout<<"here4"<<endl;
1668    
1669    
1670 jueugste 1.5 tCaloTowersN = NCaloTowers;
1671 jueugste 1.3 for(int j=0; j<NCaloTowers; j++) {
1672 jueugste 1.5
1673     // get all calo towers
1674     tCaloTowersE[j] = CaloTowersE[j];
1675 jueugste 1.6 tCaloTowersEt[j] = CaloTowersE[j] * sin(CaloTowersTheta[j]);
1676     tCaloTowersEta[j] = CaloTowersEta[j];
1677 jueugste 1.5 tCaloTowersEmE[j] = CaloTowersEmE[j];
1678     tCaloTowersHadE[j] = CaloTowersHadE[j];
1679     tCaloTowersHasEB[j] = CaloTowersHasEB[j];
1680     tCaloTowersHasEE[j] = CaloTowersHasEE[j];
1681     tCaloTowersHasHB[j] = CaloTowersHasHB[j];
1682     tCaloTowersHasHE[j] = CaloTowersHasHE[j];
1683     tCaloTowersHasHF[j] = CaloTowersHasHF[j];
1684     tCaloTowersId[j] = CaloTowersId[j];
1685    
1686 jueugste 1.3 // is the tower on the plus or minus side?
1687     int zside = (CaloTowersId[j]&0x2000)?(1):(-1);
1688    
1689 jueugste 1.4 // int zside = 0;
1690     // if(CaloTowersEta[j]>0) zside = 1;
1691     // if(CaloTowersEta[j]<0) zside = -1;
1692    
1693    
1694 jueugste 1.3 if(CaloTowersHasHF[j]==1 /*&& !CaloTowersHasHE[j]*/) {
1695 jueugste 1.4 if(CaloTowersE[j] >= CaloTowersEMin_HF) {
1696 jueugste 1.3 if(zside>0) {
1697     SumEHF_plus += CaloTowersE[j];
1698     SumETHF_plus += CaloTowersE[j] * sin(CaloTowersTheta[j]);
1699     Ntowers_plus++;
1700 jueugste 1.4
1701     if(fabs(CaloTowersEta[j]) >= 3 && fabs(CaloTowersEta[j]) <=4) {
1702     SumEHF_Aplus += CaloTowersE[j];
1703     }
1704     if(fabs(CaloTowersEta[j]) >= 4 && fabs(CaloTowersEta[j]) <=5) {
1705     SumEHF_Bplus += CaloTowersE[j];
1706     }
1707    
1708 jueugste 1.3 }
1709     if(zside<0) {
1710     SumEHF_minus += CaloTowersE[j];
1711     SumETHF_minus += CaloTowersE[j] * sin(CaloTowersTheta[j]);
1712     Ntowers_minus++;
1713 jueugste 1.4
1714     if(fabs(CaloTowersEta[j]) >= 3 && fabs(CaloTowersEta[j]) <=4) {
1715     SumEHF_Aminus += CaloTowersE[j];
1716     }
1717     if(fabs(CaloTowersEta[j]) >= 4 && fabs(CaloTowersEta[j]) <=5) {
1718     SumEHF_Bminus += CaloTowersE[j];
1719     }
1720    
1721 jueugste 1.3 }
1722     }
1723     }
1724    
1725     // calculate E \pm p_{z}
1726     if( (CaloTowersHasEB[j]==1 && CaloTowersEmE[j] > CaloTowersEMin_EB ) ||
1727     (CaloTowersHasEE[j]==1 && CaloTowersEmE[j] /* * sin(CaloTowersTheta[j])*/ > CaloTowersEMin_EE ) || // cut on ET, not on energy
1728     (CaloTowersHasHB[j]==1 && CaloTowersHadE[j] > CaloTowersEMin_HB ) ||
1729     (CaloTowersHasHE[j]==1 && CaloTowersHadE[j] > CaloTowersEMin_HE ) ||
1730 jueugste 1.4 (CaloTowersHasHF[j]==1 && CaloTowersHadE[j] > CaloTowersEMin_HF) ) {
1731 jueugste 1.3
1732     tSumE += CaloTowersE[j];
1733     tSumPz += CaloTowersE[j] * cos(CaloTowersTheta[j]);
1734    
1735     SumE += CaloTowersE[j];
1736     if(zside > 0) plusPz += CaloTowersE[j] * cos(CaloTowersTheta[j]);
1737     if(zside < 0) minusPz += CaloTowersE[j] * cos(CaloTowersTheta[j]);
1738    
1739     }
1740    
1741     }
1742    
1743     tSumEHF_minus = SumEHF_minus;
1744     tSumEHF_plus = SumEHF_plus;
1745 jueugste 1.4 tSumEHF_Aminus = SumEHF_Aminus;
1746     tSumEHF_Aplus = SumEHF_Aplus;
1747     tSumEHF_Bminus = SumEHF_Bminus;
1748     tSumEHF_Bplus = SumEHF_Bplus;
1749 jueugste 1.2 tSumETHF_minus = SumETHF_minus;
1750 jueugste 1.3 tSumETHF_plus = SumETHF_plus;
1751     tNtowers_plus = Ntowers_plus;
1752     tNtowers_minus = Ntowers_minus;
1753    
1754     tEminusPz = SumE + minusPz;
1755     tEplusPz = SumE + plusPz;
1756 jueugste 1.2
1757    
1758 jueugste 1.6
1759 jueugste 1.3 // double E = SumEHF_plus + SumEHE_plus + SumEHB_plus + SumEEE_plus + SumEEB_plus + SumEHF_minus + SumEHE_minus + SumEHB_minus + SumEEE_minus + SumEEB_minus;
1760     // double minusPz = SumPzHF_minus + SumPzHE_minus + SumPzHB_minus + SumPzEE_minus + SumPzEB_minus;
1761     // double plusPz = SumPzHF_plus + SumPzHE_plus + SumPzHB_plus + SumPzEE_plus + SumPzEB_plus;
1762     // tEminusPz = E + minusPz;
1763     // tEplusPz = E + plusPz;
1764 jueugste 1.2
1765     // jets
1766     tJetN = i_jets.size();
1767     for(int j=0; j<i_jets.size(); j++) {
1768     tJetPt[j] = PFJPt[i_jets[j]];
1769     tJetEta[j] = PFJEta[i_jets[j]];
1770     tJetPhi[j] = PFJPhi[i_jets[j]];
1771     }
1772    
1773 jueugste 1.3 // \eta_{max} and \eta_{min}
1774 jueugste 1.4 double EtaMax = -9.99;
1775     double EtaMin = 9.99;
1776 jueugste 1.2 for(int j=0; j < NPf; j++) {
1777 jueugste 1.4 if(PfEta[j] > EtaMax) EtaMax = PfEta[j];
1778     if(PfEta[j] < EtaMin) EtaMin = PfEta[j];
1779 jueugste 1.6 // keep more PFlow variables
1780     tPfE[j] = PfE[j];
1781     tPfEt[j] = PfEt[j];
1782     tPfEta[j] = PfEta[j];
1783     tPfPt[j] = PfPt[j];
1784 jueugste 1.2 }
1785 jueugste 1.4 tEtaMax=EtaMax;
1786     tEtaMin=EtaMin;
1787 jueugste 1.6 tPfN = NPf;
1788    
1789    
1790 jueugste 1.3
1791     // count the vertices
1792     // int nVert = 0;
1793     // for(int j=0; j<NVrtx; j++) {
1794     // if(VrtxNdof[j] > 4) nVert++;
1795    
1796     // }
1797     tVertexN = NVrtx;
1798     for(int j=0; j<NVrtx; j++) {
1799     tVertexNdof[j] = VrtxNdof[j];
1800 jueugste 1.5 tVertexChi2[j] = VrtxChi2[j];
1801 jueugste 1.3 tVertexX[j] = VrtxX[j];
1802     tVertexY[j] = VrtxY[j];
1803     tVertexZ[j] = VrtxZ[j];
1804 jueugste 1.6 //hhh
1805     for(int jj=0; jj<400; jj++) {
1806     tVertexTrackIndex[j][jj] = VrtxTrkIndex[j][jj];
1807     // cout<<tVertexTrackIndex[j][jj]<<endl;
1808     // tTVertexTrackWeight[j][jj] = VrtxTrkWeight[j][jj];
1809     }
1810     }
1811    
1812 jueugste 1.5
1813 jueugste 1.3 // count the tracks
1814     // int nTrck = 0;
1815     // tTracksN = nTrck;
1816    
1817 jueugste 1.6
1818     cout<<"Filling pile up"<<endl;
1819    
1820     // pile-up
1821     tPUnumInteractions = PUnumInteractions;
1822     for(int z=0; z<PUnumInteractions; z++) {
1823     tPUzPositions[z] = PUzPositions[z];
1824     }
1825     cout<<"done!"<<endl;
1826    
1827 jueugste 1.3 tBeamSpotX = Beamspotx;
1828     tBeamSpotY = Beamspoty;
1829     tBeamSpotZ = Beamspotz;
1830    
1831     tTracksN = NTracks;
1832 jueugste 1.6 for(int tr=0; tr<NTracks; tr++) {
1833     tTrackPt[tr] = TrkPt[tr];
1834     tTrackPx[tr] = TrkPx[tr];
1835     tTrackPy[tr] = TrkPy[tr];
1836     tTrackPz[tr] = TrkPz[tr];
1837     tTrackDzBs[tr] = Trkdzbs[tr];
1838     tTrackEta[tr] = TrkEta[tr];
1839     tTrackPhi[tr] = TrkPhi[tr];
1840     // tTracktdsz[t] = Trkdsz[t];
1841     // tTrackdxy[t] = Trkdxy[t];
1842    
1843     }
1844    
1845 jueugste 1.3
1846 jueugste 1.2 //--------------------------------------------------------------------------------------------------------------------
1847    
1848    
1849 jueugste 1.1
1850     // fill the histograms for the barrel only
1851     for(int i=0; i<i_goodBarrelElectrons.size(); i++) {
1852    
1853     // calculate the variables to fill
1854     double deltaPhiElMet=deltaPhi(ElPhi[i_goodBarrelElectrons[i]], PFMETphi);
1855     double mt = transverseMass(ElPt[i_goodBarrelElectrons[i]] * PtCorrection, met, deltaPhiElMet);
1856     int charge = ElCharge[i_goodBarrelElectrons[i]];
1857     double pt = ElPt[i_goodBarrelElectrons[i]] * PtCorrection;
1858     double phi = ElPhi[i_goodBarrelElectrons[i]];
1859     double eta = ElEta[i_goodBarrelElectrons[i]];
1860    
1861    
1862    
1863    
1864     // all barrel electrons after ID&Iso with pt > 10 GeV
1865     hs_W_ElTransMass[0]->Fill(mt);
1866     hs_W_ElPt[0]->Fill(pt);
1867     hs_W_ElPhi[0]->Fill(phi);
1868     hs_W_ElEta[0]->Fill(eta);
1869     hs_W_ElMet[0]->Fill(met);
1870     hs_W_ElCharge[0]->Fill(charge);
1871     hs_W_Njets[0]->Fill(nJets);
1872    
1873     // cut on the pt of the electrons
1874     if(ElPt[i_goodBarrelElectrons[i]] > 25) {
1875    
1876     // all barrel electrons after ID&Iso with pt > 25 GeV
1877     debug4++;
1878     hs_W_ElTransMass[1]->Fill(mt);
1879     hs_W_ElPt[1]->Fill(pt);
1880     hs_W_ElPhi[1]->Fill(phi);
1881     hs_W_ElEta[1]->Fill(eta);
1882     hs_W_ElMet[1]->Fill(met);
1883     hs_W_ElCharge[1]->Fill(charge);
1884     hs_W_Njets[1]->Fill(nJets);
1885    
1886     //--------------------------------------------------------------------------------------------------------------------
1887     //--------------------------------------------------------------------------------------------------------------------
1888     // THIS IS THE W BOSON ANALYSIS */*
1889     //--------------------------------------------------------------------------------------------------------------------
1890     //--------------------------------------------------------------------------------------------------------------------
1891    
1892    
1893     // exactly one lepton
1894     if(nLeptons25_B == 1) {
1895     hs_W_ElTransMass[2]->Fill(mt);
1896     hs_W_ElPt[2]->Fill(pt);
1897     hs_W_ElPhi[2]->Fill(phi);
1898     hs_W_ElEta[2]->Fill(eta);
1899     hs_W_ElMet[2]->Fill(met);
1900     hs_W_ElCharge[2]->Fill(charge);
1901     hs_W_Njets[2]->Fill(nJets);
1902    
1903     // MET cut
1904     if(met > 30) {
1905     hs_W_ElTransMass[3]->Fill(mt);
1906     hs_W_ElPt[3]->Fill(pt);
1907     hs_W_ElPhi[3]->Fill(phi);
1908     hs_W_ElEta[3]->Fill(eta);
1909     hs_W_ElMet[3]->Fill(met);
1910     hs_W_ElCharge[3]->Fill(charge);
1911     hs_W_Njets[3]->Fill(nJets);
1912    
1913     // transverse mass cut
1914     if(mt > 60) {
1915     hs_W_ElTransMass[4]->Fill(mt);
1916     hs_W_ElPt[4]->Fill(pt);
1917     hs_W_ElPhi[4]->Fill(phi);
1918     hs_W_ElEta[4]->Fill(eta);
1919     hs_W_ElMet[4]->Fill(met);
1920     hs_W_ElCharge[4]->Fill(charge);
1921     hs_W_Njets[4]->Fill(nJets);
1922    
1923     // zero jet bin
1924     if(nJets==0) {
1925     hs_W_ElTransMass[5]->Fill(mt);
1926     hs_W_ElPt[5]->Fill(pt);
1927     hs_W_ElPhi[5]->Fill(phi);
1928     hs_W_ElEta[5]->Fill(eta);
1929     hs_W_ElMet[5]->Fill(met);
1930     hs_W_ElCharge[5]->Fill(charge);
1931     hs_W_Njets[5]->Fill(nJets);
1932    
1933    
1934    
1935 jueugste 1.3 // // DIFFRACTIVE
1936     // if(isDiffractive) {
1937 jueugste 1.1
1938 jueugste 1.3 // diff_run.push_back(Run);
1939     // diff_event.push_back(Event);
1940     // diff_ls.push_back(LumiSection);
1941     // diff_sumehf_plus.push_back(SumEHF_plus);
1942     // diff_sumehf_minus.push_back(SumEHF_minus);
1943     // diff_sumethf_plus.push_back(SumETHF_plus);
1944     // diff_sumethf_minus.push_back(SumETHF_minus);
1945     // diff_ntowershf_plus.push_back(NTowersHF_plus);
1946     // diff_ntowershf_minus.push_back(NTowersHF_minus);
1947     // }
1948 jueugste 1.1
1949    
1950    
1951     // W minus
1952     if(charge < 0) {
1953     hs_W_ElTransMass[6]->Fill(mt);
1954     hs_W_ElPt[6]->Fill(pt);
1955     hs_W_ElPhi[6]->Fill(phi);
1956     hs_W_ElEta[6]->Fill(eta);
1957     hs_W_ElMet[6]->Fill(met);
1958     hs_W_ElCharge[6]->Fill(charge);
1959     hs_W_Njets[6]->Fill(nJets);
1960     }
1961     // W plus
1962     else if(charge > 0) {
1963     hs_W_ElTransMass[7]->Fill(mt);
1964     hs_W_ElPt[7]->Fill(pt);
1965     hs_W_ElPhi[7]->Fill(phi);
1966     hs_W_ElEta[7]->Fill(eta);
1967     hs_W_ElMet[7]->Fill(met);
1968     hs_W_ElCharge[7]->Fill(charge);
1969     hs_W_Njets[7]->Fill(nJets);
1970     }
1971     }
1972     // 1 jet bin
1973     if(nJets==1) {
1974     // get the angle between the jet and the elctron
1975     double deltPhi = deltaPhi(phi, JPhi[i_jets[0]]);
1976     // cout<<"delta phi: "<<deltPhi<<endl;
1977     hs_W_ElDeltaPhi[8]->Fill(deltPhi);
1978    
1979     hs_W_ElTransMass[8]->Fill(mt);
1980     hs_W_ElPt[8]->Fill(pt);
1981     hs_W_ElPhi[8]->Fill(phi);
1982     hs_W_ElEta[8]->Fill(eta);
1983     hs_W_ElMet[8]->Fill(met);
1984     hs_W_ElCharge[8]->Fill(charge);
1985     hs_W_Njets[8]->Fill(nJets);
1986    
1987     if(deltPhi < 2.793) {
1988     hs_W_ElTransMass[9]->Fill(mt);
1989     hs_W_ElPt[9]->Fill(pt);
1990     hs_W_ElPhi[9]->Fill(phi);
1991     hs_W_ElEta[9]->Fill(eta);
1992     hs_W_ElMet[9]->Fill(met);
1993     hs_W_ElCharge[9]->Fill(charge);
1994     hs_W_Njets[9]->Fill(nJets);
1995    
1996    
1997     // get the W pt spectrum
1998     hs_W_ElDeltaPhi[9]->Fill(deltPhi);
1999     hs_W_jetPt[9]->Fill(JPt[i_jets[0]]);
2000    
2001     // W minus
2002     if(charge < 0) {
2003     hs_W_ElTransMass[10]->Fill(mt);
2004     hs_W_ElPt[10]->Fill(pt);
2005     hs_W_ElPhi[10]->Fill(phi);
2006     hs_W_ElEta[10]->Fill(eta);
2007     hs_W_ElMet[10]->Fill(met);
2008     hs_W_ElCharge[10]->Fill(charge);
2009     hs_W_Njets[10]->Fill(nJets);
2010    
2011    
2012     }
2013     // W plus
2014     else if(charge > 0) {
2015     hs_W_ElTransMass[11]->Fill(mt);
2016     hs_W_ElPt[11]->Fill(pt);
2017     hs_W_ElPhi[11]->Fill(phi);
2018     hs_W_ElEta[11]->Fill(eta);
2019     hs_W_ElMet[11]->Fill(met);
2020     hs_W_ElCharge[11]->Fill(charge);
2021     hs_W_Njets[11]->Fill(nJets);
2022     }
2023     }
2024     }
2025     // 2 jet bin
2026     if(nJets>=2) {
2027     hs_W_ElTransMass[12]->Fill(mt);
2028     hs_W_ElPt[12]->Fill(pt);
2029     hs_W_ElPhi[12]->Fill(phi);
2030     hs_W_ElEta[12]->Fill(eta);
2031     hs_W_ElMet[12]->Fill(met);
2032     hs_W_ElCharge[12]->Fill(charge);
2033     hs_W_Njets[12]->Fill(nJets);
2034    
2035     // W minus
2036     if(charge < 0) {
2037     hs_W_ElTransMass[13]->Fill(mt);
2038     hs_W_ElPt[13]->Fill(pt);
2039     hs_W_ElPhi[13]->Fill(phi);
2040     hs_W_ElEta[13]->Fill(eta);
2041     hs_W_ElMet[13]->Fill(met);
2042     hs_W_ElCharge[13]->Fill(charge);
2043     hs_W_Njets[13]->Fill(nJets);
2044    
2045    
2046     }
2047     // W plus
2048     else if(charge > 0) {
2049     hs_W_ElTransMass[14]->Fill(mt);
2050     hs_W_ElPt[14]->Fill(pt);
2051     hs_W_ElPhi[14]->Fill(phi);
2052     hs_W_ElEta[14]->Fill(eta);
2053     hs_W_ElMet[14]->Fill(met);
2054     hs_W_ElCharge[14]->Fill(charge);
2055     hs_W_Njets[14]->Fill(nJets);
2056     }
2057     }
2058    
2059    
2060     }
2061     } // MET cut
2062    
2063     // make N-1 plots for 0/1 jet bin (already selected == 1 electron)
2064     if(nJets==0) {
2065     hs_W_ElTransMass[15]->Fill(mt);
2066     hs_W_ElPt[15]->Fill(pt);
2067     hs_W_ElPhi[15]->Fill(phi);
2068     hs_W_ElEta[15]->Fill(eta);
2069     hs_W_ElMet[15]->Fill(met);
2070     hs_W_ElCharge[15]->Fill(charge);
2071     hs_W_Njets[15]->Fill(nJets);
2072    
2073     if(met > 30) {
2074     hs_W_ElTransMass[16]->Fill(mt);
2075     hs_W_ElPt[16]->Fill(pt);
2076     hs_W_ElPhi[16]->Fill(phi);
2077     hs_W_ElEta[16]->Fill(eta);
2078     hs_W_ElMet[16]->Fill(met);
2079     hs_W_ElCharge[16]->Fill(charge);
2080     hs_W_Njets[16]->Fill(nJets);
2081     }
2082     if(mt > 60) {
2083     hs_W_ElTransMass[17]->Fill(mt);
2084     hs_W_ElPt[17]->Fill(pt);
2085     hs_W_ElPhi[17]->Fill(phi);
2086     hs_W_ElEta[17]->Fill(eta);
2087     hs_W_ElMet[17]->Fill(met);
2088     hs_W_ElCharge[17]->Fill(charge);
2089     hs_W_Njets[17]->Fill(nJets);
2090     }
2091     }
2092     if(nJets==1) {
2093     hs_W_ElTransMass[18]->Fill(mt);
2094     hs_W_ElPt[18]->Fill(pt);
2095     hs_W_ElPhi[18]->Fill(phi);
2096     hs_W_ElEta[18]->Fill(eta);
2097     hs_W_ElMet[18]->Fill(met);
2098     hs_W_ElCharge[18]->Fill(charge);
2099     hs_W_Njets[18]->Fill(nJets);
2100    
2101     if(met > 30) {
2102     hs_W_ElTransMass[19]->Fill(mt);
2103     hs_W_ElPt[19]->Fill(pt);
2104     hs_W_ElPhi[19]->Fill(phi);
2105     hs_W_ElEta[19]->Fill(eta);
2106     hs_W_ElMet[19]->Fill(met);
2107     hs_W_ElCharge[19]->Fill(charge);
2108     hs_W_Njets[19]->Fill(nJets);
2109     }
2110     if(mt > 60) {
2111     hs_W_ElTransMass[20]->Fill(mt);
2112     hs_W_ElPt[20]->Fill(pt);
2113     hs_W_ElPhi[20]->Fill(phi);
2114     hs_W_ElEta[20]->Fill(eta);
2115     hs_W_ElMet[20]->Fill(met);
2116     hs_W_ElCharge[20]->Fill(charge);
2117     hs_W_Njets[20]->Fill(nJets);
2118     }
2119     }
2120     } // 1 electron
2121     } // pt > 25 GeV
2122    
2123     } // loop over good barrel electrons
2124    
2125    
2126     //--------------------------------------------------------------------------------------------------------------------
2127     //--------------------------------------------------------------------------------------------------------------------
2128     // THIS IS THE Z BOSON ANALYSIS */*
2129     //--------------------------------------------------------------------------------------------------------------------
2130     //--------------------------------------------------------------------------------------------------------------------
2131    
2132 jueugste 1.5 // 2 electrons in the barrel
2133 jueugste 1.1 if(nLeptons25_B >= 2) {
2134    
2135     // calculate the invariant mass with the 2 highest pt leptons
2136     double invMass;
2137     TLorentzVector e1, e2;
2138     int index1=0;
2139     int index2=0;
2140     double pt1=0;
2141     double pt2=0;
2142     for(int i=0; i<i_goodBarrelElectrons.size(); i++) {
2143     if(ElPt[i_goodBarrelElectrons[i]] > pt2 && ElPt[i_goodBarrelElectrons[i]] > pt1) {index2 = index1; pt2 = pt1; index1 = i_goodBarrelElectrons[i]; pt1 = ElPt[i_goodBarrelElectrons[i]];}
2144     if(ElPt[i_goodBarrelElectrons[i]] > pt2 && ElPt[i_goodBarrelElectrons[i]] < pt1) {index2 = i_goodBarrelElectrons[i]; pt2 = ElPt[i_goodBarrelElectrons[i]];}
2145     }
2146    
2147     e1.SetPtEtaPhiE(ElPt[index1] * PtCorrection ,ElEta[index1],ElPhi[index1],ElE[index1]);
2148     e2.SetPtEtaPhiE(ElPt[index2] * PtCorrection ,ElEta[index2],ElPhi[index2],ElE[index2]);
2149     invMass = (e1+e2).M();
2150    
2151     // Z mass cut flag
2152     bool Zmass=false;
2153     if(invMass > 83.7 && invMass < 98.7) Zmass=true;
2154    
2155    
2156    
2157     // these variables are only defined if there really are jets...
2158    
2159     double leadingJetPt = 0.;
2160     double leadingJetEta= 0.;
2161     double leadingJetPhi= 0.;
2162     double summedJetPt = 0.;
2163     double summedJetEta = 0.;
2164     double summedJetPhi = 0.;
2165     double recoilPt = 0.;
2166     double recoilEta = 0.;
2167     double recoilPhi = 0.;
2168    
2169     TLorentzVector jsum;
2170     for(int ji=0; ji<i_jets.size(); ji++) {
2171     TLorentzVector vec;
2172     vec.SetPxPyPzE(JPx[i_jets[ji]], JPy[i_jets[ji]], JPz[i_jets[ji]], JE[i_jets[ji]]);
2173     //find the leading jet
2174     if(vec.Pt() > leadingJetPt) {
2175     leadingJetPt = vec.Pt();
2176     leadingJetEta = vec.Eta();
2177     leadingJetPhi = vec.Phi();
2178     }
2179     // sum all jets
2180     jsum=jsum+vec;
2181     }
2182     summedJetPt = jsum.Pt();
2183     summedJetEta = jsum.Eta();
2184     summedJetPhi = jsum.Phi();
2185     // add also the Z
2186     jsum+=e1;
2187     jsum+=e2;
2188     recoilPt = jsum.Pt();
2189     recoilEta = jsum.Eta();
2190     recoilPhi = jsum.Phi();
2191    
2192     h_Z_invMass[0]->Fill(invMass);
2193     h_Z_invMass2[0]->Fill(invMass);
2194     h_Z_ptAll[0]->Fill(ElPt[index1]);
2195     h_Z_ptAll[0]->Fill(ElPt[index2]);
2196     h_Z_etaAll[0]->Fill(ElEta[index1]);
2197     h_Z_etaAll[0]->Fill(ElEta[index2]);
2198     h_Z_phiAll[0]->Fill(ElPhi[index1]);
2199     h_Z_phiAll[0]->Fill(ElPhi[index2]);
2200     h_Z_deltaPhi[0]->Fill(deltaPhi(ElPhi[index1], ElPhi[index2]));
2201     if(Zmass) {
2202     h_Z_ptDiLepton[0]->Fill((e1+e2).Pt());
2203     h_Z_ptDiLepton2[0]->Fill((e1+e2).Pt());
2204     h_Z_etaDiLepton[0]->Fill((e1+e2).Eta());
2205     h_Z_phiDiLepton[0]->Fill((e1+e2).Phi());
2206     h_Z_metPt[0]->Fill(met);
2207     h_Z_metPhi[0]->Fill(metPhi);
2208    
2209 jueugste 1.3 // // diffractive Zs
2210     // if(isDiffractive) {
2211     // diff_run.push_back(Run);
2212     // diff_event.push_back(Event);
2213     // diff_ls.push_back(LumiSection);
2214     // diff_sumehf_plus.push_back(SumEHF_plus);
2215     // diff_sumehf_minus.push_back(SumEHF_minus);
2216     // diff_sumethf_plus.push_back(SumETHF_plus);
2217     // diff_sumethf_minus.push_back(SumETHF_minus);
2218     // diff_ntowershf_plus.push_back(NTowersHF_plus);
2219     // diff_ntowershf_minus.push_back(NTowersHF_minus);
2220     // }
2221 jueugste 1.1
2222     if(nJets == 0) {
2223     sel_ZOjet_run.push_back(Run);
2224     sel_ZOjet_event.push_back(Event);
2225     sel_ZOjet_ls.push_back(LumiSection);
2226    
2227     }
2228    
2229    
2230    
2231     }
2232    
2233     // now variables with jet activity
2234    
2235     h_Z_nJets[0]->Fill(nJets);
2236     if(nJets > 0 && Zmass) {
2237     h_Z_leadingJetPt[0]->Fill(leadingJetPt);
2238     h_Z_leadingJetEta[0]->Fill(leadingJetEta);
2239     h_Z_leadingJetPhi[0]->Fill(leadingJetPhi);
2240     h_Z_summedJetPt[0]->Fill(summedJetPt);
2241     h_Z_summedJetEta[0]->Fill(summedJetEta);
2242     h_Z_summedJetPhi[0]->Fill(summedJetPhi);
2243    
2244     h_Z_leadingJetDeltaPt[0]->Fill(leadingJetPt - (e1+e2).Pt());
2245     h_Z_leadingJetDeltaEta[0]->Fill(leadingJetEta - (e1+e2).Eta());
2246     h_Z_leadingJetDeltaPhi[0]->Fill(deltaPhi(leadingJetPhi, (e1+e2).Phi()));
2247     h_Z_summedJetDeltaPt[0]->Fill(summedJetPt - (e1+e2).Pt());
2248     h_Z_summedJetDeltaEta[0]->Fill(summedJetEta - (e1+e2).Eta());
2249     h_Z_summedJetDeltaPhi[0]->Fill(deltaPhi(summedJetPhi, (e1+e2).Phi()));
2250    
2251     h_Z_recoilPt[0]->Fill(recoilPt);
2252     h_Z_recoilEta[0]->Fill(recoilEta);
2253     h_Z_recoilPhi[0]->Fill(recoilPhi);
2254     }
2255    
2256    
2257     } // 2 electrons
2258    
2259    
2260    
2261     // ******************************************************************************
2262     // ******************************************************************************
2263    
2264    
2265     // for(int i=0; i< tElN; i++) {
2266     // cout<<tElPt[i]<<endl;
2267    
2268     // }
2269    
2270    
2271     subTree->Fill();
2272    
2273    
2274    
2275    
2276    
2277    
2278    
2279    
2280     ////////////////////////////////////////////////////////////////////
2281     ////////////////////// User's code ends here ///////////////////////
2282     ////////////////////////////////////////////////////////////////////
2283    
2284     } // End loop over events
2285    
2286    
2287    
2288    
2289    
2290    
2291    
2292     END:
2293     cerr<<"Program ended after "<<sampleSize<<" events ..."<<endl;
2294    
2295    
2296     for(int b=0;b<MAXWcounter;b++) {
2297     hc_W_counter->SetBinContent(b+1,Wcounter[b]);
2298     }
2299     for(int b=0;b<counterSize;b++) {
2300     hc_El_counter->SetBinContent(b+1,counter[b]);
2301     }
2302    
2303    
2304     fclose(out);
2305     fclose(out_Z);
2306    
2307     // Summary
2308     cout<<"*****************************************"<<endl;
2309     cout<<"* SUMMARY *"<<endl;
2310     cout<<"*****************************************"<<endl;
2311     cout<<"# Events: "<<El_count[0]<<endl;
2312     cout<<"HLT passed: "<<El_count[1]<<endl;
2313     cout<<"*****************************************"<<endl;
2314     cout<<"Electrons"<<endl;
2315     cout<<"*****************************************"<<endl;
2316     cout<<"Preselected e in EB: "<<El_count[2]<<endl;
2317     cout<<"Preselected e in EE: "<<El_count[3]<<endl;
2318     cout<<"Presele. e in EE+EB: "<<El_count[4]<<endl;
2319     cout<<"*****************************************"<<endl;
2320     cout<<"IDed & Isol. in EB: "<<El_count[5]<<endl;
2321     cout<<"IDed & Isol. in EE: "<<El_count[6]<<endl;
2322     cout<<"IDed & Iso. in EB+EE:"<<El_count[7]<<endl;
2323     cout<<"*****************************************"<<endl;
2324     cout<<"Ws"<<endl;
2325    
2326    
2327     cout<<"*****************************************"<<endl;
2328    
2329    
2330    
2331     for(int ci=0; ci<15; ci++) {
2332     cout<<ci<<": "<<counter[ci]<<endl;
2333     }
2334    
2335     if(diff_run.size()>0) {
2336     cout<<"DIFFRACTION STUFF!"<<endl;
2337     cout<<"Run / Event / LS / E HF+ / E HF- / ET HF+ / ET hf- / #tow HF+ / #tow HF- "<<endl;
2338     for(int i=0; i<diff_run.size(); i++) {
2339     cout<< diff_run[i] << " / " <<diff_event[i]<<" / "<<diff_ls[i] << " / "
2340     << diff_sumehf_plus[i] << " / " << diff_sumehf_minus[i] << " / "
2341     << diff_sumethf_plus[i] << " / " << diff_sumethf_minus[i] << " / "
2342     << diff_ntowershf_plus[i] << " / " << diff_ntowershf_minus[i]
2343     <<endl;
2344     }
2345     }
2346    
2347     if(sel_ZOjet_run.size() > 0) cout<<"Zs in barrel & 0 jet bin:"<<endl;
2348     for(int i=0; i<sel_ZOjet_run.size(); i++) {
2349     cout<<sel_ZOjet_run[i]<<" / "<<sel_ZOjet_event[i]<<" / "<<sel_ZOjet_ls[i]<<endl;
2350     }
2351    
2352     delete [] counter;
2353     counter=NULL;
2354     delete [] Wcounter;
2355     Wcounter=NULL;
2356    
2357    
2358     subTree->Write();
2359     subTree->Print();
2360    
2361    
2362     //////////write histos
2363     h_jetPt->Write();
2364    
2365    
2366     // sum barrel and endcap into general plots
2367     for(int a=34; a<MAXE; a++) {
2368     hs_El_ElPt[a]->Add(hs_El_ElPt[a-7]);
2369     hs_El_ElPt[a]->Add(hs_El_ElPt[a-14]);
2370     hs_El_ElEta[a]->Add(hs_El_ElEta[a-7]);
2371     hs_El_ElEta[a]->Add(hs_El_ElEta[a-14]);
2372     hs_El_ElPhi[a]->Add(hs_El_ElPhi[a-7]);
2373     hs_El_ElPhi[a]->Add(hs_El_ElPhi[a-14]);
2374     hs_El_ElCharge[a]->Add(hs_El_ElCharge[a-7]);
2375     hs_El_ElCharge[a]->Add(hs_El_ElCharge[a-14]);
2376     hs_El_ElDeltaPhi[a]->Add(hs_El_ElDeltaPhi[a-7]);
2377     hs_El_ElDeltaPhi[a]->Add(hs_El_ElDeltaPhi[a-14]);
2378     hs_El_ElDeltaEta[a]->Add(hs_El_ElDeltaEta[a-7]);
2379     hs_El_ElDeltaEta[a]->Add(hs_El_ElDeltaEta[a-14]);
2380     hs_El_ElTransMass[a]->Add(hs_El_ElTransMass[a-7]);
2381     hs_El_ElTransMass[a]->Add(hs_El_ElTransMass[a-14]);
2382     hs_El_ElHoverE[a]->Add(hs_El_ElHoverE[a-7]);
2383     hs_El_ElHoverE[a]->Add(hs_El_ElHoverE[a-14]);
2384     hs_El_ElSigmaIetaIeta[a]->Add(hs_El_ElSigmaIetaIeta[a-7]);
2385     hs_El_ElSigmaIetaIeta[a]->Add(hs_El_ElSigmaIetaIeta[a-14]);
2386     hs_El_ElNumberOfMissingInnerHits[a]->Add(hs_El_ElNumberOfMissingInnerHits[a-7]);
2387     hs_El_ElNumberOfMissingInnerHits[a]->Add(hs_El_ElNumberOfMissingInnerHits[a-14]);
2388     hs_El_ElCombIso[a]->Add(hs_El_ElCombIso[a-7]);
2389     hs_El_ElCombIso[a]->Add(hs_El_ElCombIso[a-14]);
2390     }
2391    
2392    
2393    
2394     // write the plots to the *.root file
2395    
2396     h_numberOfEvents->Write();
2397 jueugste 1.5 h_HLTInfo->Write();
2398    
2399 jueugste 1.1
2400     if(writeIdPlots==true) {
2401     for(int i=0;i<MAXE;i++) {
2402     hs_El_ElPt[i]->Write();
2403     hs_El_ElEta[i]->Write();
2404     hs_El_ElPhi[i]->Write();
2405     hs_El_ElDeltaPhi[i]->Write();
2406     hs_El_ElMet[i]->Write();
2407     hs_El_ElTransMass[i]->Write();
2408     hs_El_ElCharge[i]->Write();
2409     hs_El_Njets[i]->Write();
2410     hs_El_ElDeltaPhi[i]->Write();
2411     hs_El_ElDeltaEta[i]->Write();
2412     hs_El_ElOneOverEminusOneOverP[i]->Write();
2413     hs_El_ElTransMass[i]->Write();
2414     hs_El_Njets[i]->Write();
2415     hs_El_ElEthIso[i]->Write();
2416     hs_El_ElTrkIso[i]->Write();
2417     hs_El_ElEcalIso[i]->Write();
2418     hs_El_ElHcalIso[i]->Write();
2419     hs_El_ElCombIso[i]->Write();
2420     hs_El_ElHoverE[i]->Write();
2421     hs_El_ElSigmaIetaIeta[i]->Write();
2422     hs_El_ElNumberOfMissingInnerHits[i]->Write();
2423     }
2424     hc_El_counter->Write();
2425     }
2426    
2427    
2428     if(writeN1Plots==true) {
2429     for(int i=0; i<MAXN; i++) {
2430     hn1_El_ElDeltaPhi[i]->Write();
2431     hn1_El_ElDeltaEta[i]->Write();
2432     hn1_El_ElOneOverEminusOneOverP[i]->Write();
2433    
2434     // hn1_El_ElPt[i]->Write();
2435     // hn1_El_ElEta[i]->Write();
2436     // hn1_El_ElPhi[i]->Write();
2437     // hn1_El_ElMet[i]->Write();
2438     // hn1_El_ElTransMass[i]->Write();
2439     // hn1_El_ElCharge[i]->Write();
2440     // hn1_El_Njets[i]->Write();
2441     // hn1_El_ElTransMass[i]->Write();
2442     // hn1_El_Njets[i]->Write();
2443     hn1_El_ElEthIso[i]->Write();
2444     // hn1_El_ElTrkIso[i]->Write();
2445     // hn1_El_ElEcalIso[i]->Write();
2446     // hn1_El_ElHcalIso[i]->Write();
2447     hn1_El_ElCombIso[i]->Write();
2448     hn1_El_ElHoverE[i]->Write();
2449     hn1_El_ElSigmaIetaIeta[i]->Write();
2450     hn1_El_ElNumberOfMissingInnerHits[i]->Write();
2451     }
2452     }
2453     if(writeWenuPlots) {
2454     for(int i=0;i<MAXS;i++) {
2455     hs_W_ElPt[i]->Write();
2456     hs_W_ElEta[i]->Write();
2457     hs_W_ElPhi[i]->Write();
2458     hs_W_ElDeltaPhi[i]->Write();
2459     hs_W_ElMet[i]->Write();
2460     hs_W_ElTransMass[i]->Write();
2461     hs_W_ElCharge[i]->Write();
2462     hs_W_Njets[i]->Write();
2463     hs_W_jetPt[i]->Write();
2464     }
2465     hc_W_counter->Write();
2466     }
2467    
2468     for(int i=0;i<MAXZ;i++) {
2469     h_Z_invMass[i]->Write();
2470     h_Z_invMass2[i]->Write();
2471     h_Z_ptAll[i]->Write();
2472     h_Z_etaAll[i]->Write();
2473     h_Z_phiAll[i]->Write();
2474     h_Z_deltaPhi[i]->Write();
2475     h_Z_ptDiLepton[i]->Write();
2476     h_Z_ptDiLepton2[i]->Write();
2477     h_Z_etaDiLepton[i]->Write();
2478     h_Z_phiDiLepton[i]->Write();
2479    
2480     h_Z_leadingJetPt[i]->Write();
2481     h_Z_summedJetPt[i]->Write();
2482     h_Z_leadingJetEta[i]->Write();
2483     h_Z_summedJetEta[i]->Write();
2484     h_Z_leadingJetPhi[i]->Write();
2485     h_Z_summedJetPhi[i]->Write();
2486     h_Z_nJets[i]->Write();
2487     h_Z_leadingJetDeltaPt[i]->Write();
2488     h_Z_leadingJetDeltaEta[i]->Write();
2489     h_Z_leadingJetDeltaPhi[i]->Write();
2490     h_Z_summedJetDeltaPt[i]->Write();
2491     h_Z_summedJetDeltaEta[i]->Write();
2492     h_Z_summedJetDeltaPhi[i]->Write();
2493     h_Z_recoilPt[i]->Write();
2494     h_Z_recoilEta[i]->Write();
2495     h_Z_recoilPhi[i]->Write();
2496     h_Z_metPt[i]->Write();
2497     h_Z_metPhi[i]->Write();
2498    
2499     }
2500     std::cout << "analysisClass::Loop() ends" <<std::endl;
2501     }
2502    
2503