ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/rootEWKanalyzer/src/analysisClass_myCode.C
Revision: 1.2
Committed: Tue Jul 20 15:32:43 2010 UTC (14 years, 9 months ago) by jueugste
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +1979 -1691 lines
Log Message:
many changes...

File Contents

# User Rev Content
1 jueugste 1.1 // remkarks:
2     // !!! in the W selection every electron is taken, also the
3     // non isolated !!!
4    
5    
6     // implement conversion removal for robust...
7    
8    
9    
10    
11    
12    
13     #define analysisClass_cxx
14     #include "analysisClass.h"
15 jueugste 1.2
16 jueugste 1.1 #include <TH2.h>
17     #include <TF2.h>
18     #include <TH1F.h>
19     #include <TStyle.h>
20     #include <TCanvas.h>
21     #include <TLorentzVector.h>
22     #include <TVector2.h>
23     #include <TVector3.h>
24     #include <TTree.h>
25    
26     analysisClass::analysisClass(string * inputList, string * cutFile, string * treeName, string * outputFileName, string * cutEfficFile)
27     :baseClass(inputList, cutFile, treeName, outputFileName, cutEfficFile)
28     {
29     std::cout << "analysisClass::analysisClass(): begins " << std::endl;
30    
31     std::cout << "analysisClass::analysisClass(): ends " << std::endl;
32     }
33    
34     analysisClass::~analysisClass()
35     {
36     std::cout << "analysisClass::~analysisClass(): begins " << std::endl;
37    
38     std::cout << "analysisClass::~analysisClass(): ends " << std::endl;
39     }
40    
41 jueugste 1.2
42    
43    
44 jueugste 1.1 void filler(myEvent electrons, TH1D *pt, TH1D *eta, TH1D *phi, TH1D *met, TH1D *charge,
45     TH1D *deltaPhi, TH1D *deltaEta, TH1D *oneOverEminusOneOverP, TH1D *transMass,
46     TH1D *ethIso, TH1D *trkIso, TH1D *ecalIso, TH1D *hcalIso, TH1D* HoverE,
47     TH1D *sigmaIetaIeta, TH1D *numberOfMissingInnerHits
48     )
49 jueugste 1.2
50 jueugste 1.1 {
51     pt->Fill(electrons.momentum[0]);
52     eta->Fill(electrons.fourvector[0].Eta());
53     phi->Fill(electrons.fourvector[0].Phi());
54     met->Fill(electrons.missinget);
55     charge->Fill(electrons.charge[0]);
56    
57     deltaPhi->Fill(fabs(electrons.deltaPhi[0]));
58     deltaEta->Fill(fabs(electrons.deltaEta[0]));
59     oneOverEminusOneOverP->Fill(fabs(electrons.oneOverEminusOverP[0]));
60     transMass->Fill(electrons.transverseMass[0]);
61     ethIso->Fill(electrons.ethIso[0]);
62     trkIso->Fill(electrons.trkIso[0]);
63     ecalIso->Fill(electrons.ecalIso[0]);
64     hcalIso->Fill(electrons.hcalIso[0]);
65     HoverE->Fill(electrons.HoverE[0]);
66     sigmaIetaIeta->Fill(electrons.sigmaIetaIeta[0]);
67     numberOfMissingInnerHits->Fill(electrons.numberOfMissingInnerHits[0]);
68    
69     }
70    
71     void scaleHisto(TH1D* histo, double factor) {
72     int binnumber=histo->GetNbinsX();
73     for(int i=0;i<=binnumber+1;i++) {
74     double bincontent=histo->GetBinContent(i);
75     double newbincontent=bincontent*factor;
76     histo->SetBinContent(i,newbincontent);
77     double binerror=histo->GetBinError(i);
78     double newbinerror=binerror*factor;
79     histo->SetBinError(i,newbinerror);
80     }
81     }
82    
83    
84    
85     void analysisClass::Loop()
86     {
87     std::cout << "analysisClass::Loop() begins" <<std::endl;
88    
89     if (fChain == 0) return;
90    
91 jueugste 1.2
92     //getHLTtable();
93    
94    
95     double PtCorrection = 1.;
96    
97    
98     int counterSize=15;
99     int* counter = new int[counterSize];
100     memset(counter,0,counterSize*sizeof(int));
101    
102     int cNa = 0;
103     int cNb = 0;
104    
105     FILE *out=fopen("out.txt","w");
106     FILE *out_Z=fopen("out_z.txt","w");
107     fprintf(out_Z,"Run \tEvent \tLS \tDiLeptonMass \tPt_1 \tPt2 \tEta_1 \tEta_2 \tDiLeptonPt \tsumJetPt \n");
108    
109    
110     // --------------------------------------------------------------------------------------------------------------------
111     // Analysis input parameters
112     // --------------------------------------------------------------------------------------------------------------------
113     int workingPoint = 95; // -1 takes hard coded values (which are the old robust tight values...)
114     double sampleSize=-1;
115 jueugste 1.1
116     bool isdata=false;
117     bool printInfo=false;
118     bool noInnerHitInfo=false;
119     bool writeIdPlots=true;
120     bool writeN1Plots=true;
121 jueugste 1.2 bool writeWenuPlots=true;
122     bool applyDeltaCorrection=false;
123     bool applyJetVeto=false;
124    
125     // --------------------------------------------------------------------------------------------------------------------
126    
127     double Pi=2*acos(0); // pi=3.14159...
128     double ptMin=20;
129     double jetEtaMax=2.5;
130     double jetPtMin=30.;
131     double deltaRMax=0.3; // delta R for jet veto
132    
133    
134     int MAXE=41;
135 jueugste 1.1
136     double totalNumberOfEvents=0;
137     vector<double> WorkingPointCuts;
138 jueugste 1.2 vector<double> EthCuts;
139    
140     vector<int> electronIndex;
141     vector<int> jetIndex;
142 jueugste 1.1
143 jueugste 1.2
144     // --------------------------------------------------------------------------------------------------------------------
145     // tag and probe counters
146     // --------------------------------------------------------------------------------------------------------------------
147     int N_tt=0;
148     int N_t0=0;
149    
150    
151     // --------------------------------------------------------------------------------------------------------------------
152     // Electron Cuts
153     // --------------------------------------------------------------------------------------------------------------------
154    
155     // Geometry
156     double etaBarrelMax=1.44;
157     double etaEndcapMin=1.56;
158     double etaEndcapMax=2.5;
159     // Preselection
160     double Pre_HoverEMin=0.15;
161     double Pre_deltaEtaMax=0.02;
162     double Pre_deltaPhiMax=0.15;
163     double Pre_pt=20.;
164     // ETH ID
165     double ETH_oneOverEminusOneOverP_B=0.005;
166     double ETH_deltaEtaMax_B=0.004;
167     double ETH_deltaPhiMax_B=0.02;
168     double ETH_iso_B=0.1;
169     int ETH_missingHits_B=1;
170     double ETH_oneOverEminusOneOverP_E=0.007;
171     double ETH_deltaEtaMax_E=0.006;
172     double ETH_deltaPhiMax_E=0.02;
173     double ETH_iso_E=0.1;
174     int ETH_missingHits_E=1;
175    
176     // double Rob_HoverE_B=0.0201;
177     // double Rob_SigmaIetaIeta_B=0.0102;
178     // double Rob_deltaPhi_B=0.0211;
179     // double Rob_deltaEta_B=0.00606;
180     // double Rob_trkIso_B=2.34;
181     // double Rob_ecalIso_B=3.24;
182     // double Rob_hcalIso_B=4.51;
183     // double Rob_combIso_B=0.;
184     // int Rob_missingHits_B=1;
185    
186     // double Rob_HoverE_E=0.00253;
187     // double Rob_SigmaIetaIeta_E=0.0291;
188     // double Rob_deltaPhi_E=0.022;
189     // double Rob_deltaEta_E=0.0032;
190     // double Rob_trkIso_E=0.826;
191     // double Rob_ecalIso_E=2.7;
192     // double Rob_hcalIso_E=0.255;
193     // double Rob_combIso_E=0.;
194     // int Rob_missingHits_E=1;
195     // double Rob_dist_E=0.02;
196     // double Rob_cot_E=0.02;
197    
198 jueugste 1.1 int debug=0;
199    
200 jueugste 1.2
201    
202     // fill the eth cuts vector
203     EthCuts.push_back(ETH_deltaPhiMax_B);
204     EthCuts.push_back(ETH_deltaEtaMax_B);
205     EthCuts.push_back(ETH_oneOverEminusOneOverP_B);
206     EthCuts.push_back(ETH_iso_B);
207     EthCuts.push_back(ETH_missingHits_B);
208     EthCuts.push_back(ETH_deltaPhiMax_E);
209     EthCuts.push_back(ETH_deltaEtaMax_E);
210     EthCuts.push_back(ETH_oneOverEminusOneOverP_E);
211     EthCuts.push_back(ETH_iso_E);
212     EthCuts.push_back(ETH_missingHits_E);
213    
214    
215    
216    
217 jueugste 1.1 // --------------------------------------------------------------------------------------------------------------------
218     // read the cut values from include/workingPoints.txt
219     // --------------------------------------------------------------------------------------------------------------------
220 jueugste 1.2
221     // check if it is a possible working point
222     if(workingPoint>0 && (
223     workingPoint!=60 &&
224     workingPoint!=70 &&
225     workingPoint!=80 &&
226     workingPoint!=85 &&
227     workingPoint!=90 &&
228     workingPoint!=95 )
229     ) {
230     cerr<<"ERROR: "<<workingPoint<<" is NOT a valid working point!!!"<<endl;
231     exit(0);
232     }
233     // read the file
234 jueugste 1.1 if(workingPoint>0) {
235     const char *file="include/workingPoints.txt";
236     cout<<"Opening file: "<<file<<"..."<<endl;
237     ifstream toread (file);
238     if(!toread.is_open()) {
239     cerr<<"File "<<file<<" not found!!"<<endl;
240     //goto END;
241     }
242     else {
243     cout<<"File opened..."<<endl;
244     }
245    
246     // build the working point variable
247     char wpB [20];
248     char wpE [20];
249     sprintf(wpB,"B%d",workingPoint);
250     sprintf(wpE,"E%d",workingPoint);
251    
252    
253     // read every line in the file
254     if(toread.is_open()) {
255     string line;
256     float value;
257     char name[100];
258 jueugste 1.2 //cout<<"Reading working point input file"<<endl;
259 jueugste 1.1 while(!toread.eof()) {
260     getline (toread, line);
261    
262     if(line.substr(0,1)=="#") continue;
263 jueugste 1.2 //cout<<line<<endl;
264 jueugste 1.1
265     char wp[20];
266 jueugste 1.2 float v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10;
267     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);
268 jueugste 1.1 // barrel values
269     if(!strcmp(wp, wpB)) {
270 jueugste 1.2 WorkingPointCuts.push_back(v0); // 0 see
271     WorkingPointCuts.push_back(v1); // 1 dphi
272     WorkingPointCuts.push_back(v2); // 2 deta
273     WorkingPointCuts.push_back(v3); // 3 hoe
274     WorkingPointCuts.push_back(v4); // 4 tkIso
275     WorkingPointCuts.push_back(v5); // 5 ecalIso
276     WorkingPointCuts.push_back(v6); // 6 hcalIso
277     WorkingPointCuts.push_back(v7); // 7 combIso
278 jueugste 1.1 }
279     // endcap values
280     if(!strcmp(wp, wpE)) {
281 jueugste 1.2 WorkingPointCuts.push_back(v0); // 8 see
282     WorkingPointCuts.push_back(v1); // 9 dphi
283     WorkingPointCuts.push_back(v2); // 10 deta
284     WorkingPointCuts.push_back(v3); // 11 hoe
285     WorkingPointCuts.push_back(v4); // 12 tkIso
286     WorkingPointCuts.push_back(v5); // 13 ecalIso
287     WorkingPointCuts.push_back(v6); // 14 hcalIso
288     WorkingPointCuts.push_back(v7); // 15 combIso
289     WorkingPointCuts.push_back(v8); // 16 hits
290     WorkingPointCuts.push_back(v9); // 17 dist
291 jueugste 1.1 }
292    
293     } // read line
294     } // read file
295 jueugste 1.2 } // get working points
296 jueugste 1.1
297 jueugste 1.2 cout<<WorkingPointCuts[4]<<endl;
298     cout<<WorkingPointCuts[5]<<endl;
299     cout<<WorkingPointCuts[6]<<endl;
300     cout<<WorkingPointCuts[7]<<endl;
301     cout<<WorkingPointCuts[8]<<endl;
302     cout<<WorkingPointCuts[9]<<endl;
303 jueugste 1.1
304    
305     // Robust ID
306    
307 jueugste 1.2 // if(workingPoint==-1) {
308     // WorkingPointCuts.push_back(Rob_SigmaIetaIeta_B);
309     // WorkingPointCuts.push_back(Rob_deltaPhi_B);
310     // WorkingPointCuts.push_back(Rob_deltaEta_B);
311     // WorkingPointCuts.push_back(Rob_HoverE_B);
312     // WorkingPointCuts.push_back(Rob_trkIso_B);
313     // WorkingPointCuts.push_back(Rob_ecalIso_B);
314     // WorkingPointCuts.push_back(Rob_hcalIso_B);
315     // WorkingPointCuts.push_back(Rob_missingHits_B);
316     // WorkingPointCuts.push_back(Rob_SigmaIetaIeta_E);
317     // WorkingPointCuts.push_back(Rob_deltaPhi_E);
318     // WorkingPointCuts.push_back(Rob_deltaEta_E);
319     // WorkingPointCuts.push_back(Rob_HoverE_E);
320     // WorkingPointCuts.push_back(Rob_trkIso_E);
321     // WorkingPointCuts.push_back(Rob_ecalIso_E);
322     // WorkingPointCuts.push_back(Rob_hcalIso_E);
323     // WorkingPointCuts.push_back(Rob_missingHits_E);
324     // WorkingPointCuts.push_back(Rob_dist_E);
325     // WorkingPointCuts.push_back(Rob_cot_E);
326     // }
327    
328     // if(workingPoint>0) {
329     // Rob_SigmaIetaIeta_B=WorkingPointCuts[0];
330     // Rob_deltaPhi_B=WorkingPointCuts[1];
331     // Rob_deltaEta_B=WorkingPointCuts[2];
332     // Rob_HoverE_B=WorkingPointCuts[3];
333     // Rob_trkIso_B=WorkingPointCuts[4];
334     // Rob_ecalIso_B=WorkingPointCuts[5];
335     // Rob_hcalIso_B=WorkingPointCuts[6];
336     // Rob_combIso_B=WorkingPointCuts[7];
337     // Rob_missingHits_B=WorkingPointCuts[16];
338 jueugste 1.1
339 jueugste 1.2 // Rob_SigmaIetaIeta_E=WorkingPointCuts[8];
340     // Rob_deltaPhi_E=WorkingPointCuts[9];
341     // Rob_deltaEta_E=WorkingPointCuts[10];
342     // Rob_HoverE_E=WorkingPointCuts[11];
343     // Rob_trkIso_E=WorkingPointCuts[12];
344     // Rob_ecalIso_E=WorkingPointCuts[13];
345     // Rob_hcalIso_E=WorkingPointCuts[14];
346     // Rob_combIso_E=WorkingPointCuts[15];
347     // Rob_missingHits_E=WorkingPointCuts[16];
348     // Rob_dist_E=WorkingPointCuts[17];
349     // Rob_cot_E=WorkingPointCuts[17];
350     // }
351    
352     cout<<"Running the analysis with working point "<<workingPoint<<endl;
353     cout<<"Value for barrel / endcap"<<endl;
354     char *cutName[8] = {"sigmaIetaIeta", "delta phi at vtx", "delta eta at vtx", "H/E", "trkIso", "ecalIso", "hcalIso", "# inner hits"};
355     for(int i=0; i< 8;i++) {
356     cout<<cutName[i]<<" < "<<WorkingPointCuts[i]<<" / "<<WorkingPointCuts[8+i]<<endl;
357 jueugste 1.1 }
358    
359 jueugste 1.2 // --------------------------------------------------------------------------------------------------------------------
360    
361 jueugste 1.1
362 jueugste 1.2 // --------------------------------------------------------------------------------------------------------------------
363     // define some counters
364     // --------------------------------------------------------------------------------------------------------------------
365     int c_robust_B=0;
366     int c_robust_E=0;
367     int c_robust_tree=0;
368     int c_eth_1=0;
369     int c_eth_2=0;
370     int counterTight=0;
371     int counterETH=0;
372    
373 jueugste 1.1 // --------------------------------------------------------------------------------------------------------------------
374    
375    
376    
377 jueugste 1.2 // --------------------------------------------------------------------------------------------------------------------
378     // --------------------------------------------------------------------------------------------------------------------
379     // double lumi=6710;
380     // double xsec=235500000.0;
381     // --------------------------------------------------------------------------------------------------------------------
382 jueugste 1.1
383 jueugste 1.2
384    
385    
386     // --------------------------------------------------------------------------------------------------------------------
387     // choose which cut should be applied
388     // this is only used for the sequential plots
389     // --------------------------------------------------------------------------------------------------------------------
390 jueugste 1.1 bool applyCut [] = {true, // 0: not used...
391     true, // 1: Preselection, H/E
392     true, // 2: Preselection, delta phi
393     true, // 3: Preselection, delta eta
394     true, // 4: Preselection, pt
395 jueugste 1.2 true, // 5: Trigger
396 jueugste 1.1 true, // 6: ETH Barrel only (flag can not be changed, cut is always applyed)
397     true, // 7: ETH Barrel, ECAL driven
398     true, // 8: ETH Barrel, |1/E-1/p|
399     true, // 9: ETH Barrel, delta eta
400     true, //10: ETH Barrel, delta phi
401     true, //11: ETH Barrel, isolation
402     true, //12: ETH Barrel, conversions
403     true, //13: not used... (ETH Endcap)
404     true, //14: ETH Endcap, ECAL driven
405     true, //15: ETH Endcap, |1/E-1/p|
406     true, //16: ETH Endcap, delta eta
407     true, //17: ETH Endcap, delta phi
408     true, //18: ETH Endcap, isolation
409     true, //19: ETH Endcap, conversions
410 jueugste 1.2 // true, //20: Robust Barrel,
411     // true, //21: Robust Barrel, H/E
412     // true, //22: Robust Barrel, sigma ieta ieta
413     // true, //23: Robust Barrel, delta phi
414     // true, //24: Robust Barrel, delta eta
415     // true, //25: Robust Barrel, track iso
416     // true, //26: Robust Barrel, ecal iso
417     // true, //27: Robust Barrel, hcal iso
418     // true, //28: Robust Barrel, conversions
419     // true, //29: Robust Endcap,
420     // true, //30: Robust Endcap, H/E
421     // true, //31: Robust Endcap, sigma ieta ieta
422     // true, //32: Robust Endcap, delta phi
423     // true, //33: Robust Endcap, delta eta
424     // true, //34: Robust Endcap, track iso
425     // true, //35: Robust Endcap, ecal iso
426     // true, //36: Robust Endcap, hcal iso
427     // true //37: Robust Endcap, conversions
428 jueugste 1.1 };
429    
430     //}
431    
432     // --------------------------------------------------------------------------------------------------------------------
433    
434     // --------------------------------------------------------------------------------------------------------------------
435     // number of events
436 jueugste 1.2 // this histogram is filled for normalization purposes i.e. to keep track of the MC sample sizes
437 jueugste 1.1 // --------------------------------------------------------------------------------------------------------------------
438     TH1I *h_numberOfEvents;
439     h_numberOfEvents=new TH1I("numberOfEvents", "numberOfEvents", 1, -0.01, 1.01);
440     // --------------------------------------------------------------------------------------------------------------------
441    
442    
443    
444     // --------------------------------------------------------------------------------------------------------------------
445     // Electron plots
446     // --------------------------------------------------------------------------------------------------------------------
447     char name [50];
448     int nbins=12;
449     double start=0.;
450     double end=120.;
451     TH1D *hs_El_ElPt[MAXE];
452     TH1D *hs_El_ElEta[MAXE];
453     TH1D *hs_El_ElPhi[MAXE];
454     TH1D *hs_El_ElDeltaPhi[MAXE];
455     TH1D *hs_El_ElDeltaEta[MAXE];
456     TH1D *hs_El_ElOneOverEminusOneOverP[MAXE];
457     TH1D *hs_El_ElMet[MAXE];
458     TH1D *hs_El_ElTransMass[MAXE];
459     TH1D *hs_El_ElCharge[MAXE];
460     TH1D *hs_El_Njets[MAXE];
461     TH1D *hs_El_ElEthIso[MAXE];
462     TH1D *hs_El_ElTrkIso[MAXE];
463     TH1D *hs_El_ElEcalIso[MAXE];
464     TH1D *hs_El_ElHcalIso[MAXE];
465 jueugste 1.2 TH1D *hs_El_ElCombIso[MAXE];
466 jueugste 1.1 TH1D *hs_El_ElHoverE[MAXE];
467     TH1D *hs_El_ElSigmaIetaIeta[MAXE];
468     TH1D *hs_El_ElNumberOfMissingInnerHits[MAXE];
469     for(int i=0; i<MAXE; i++) {
470     sprintf(name,"s_El_ElPt_%d",i);
471     hs_El_ElPt[i]=new TH1D(name, name, nbins, start, end);
472     hs_El_ElPt[i]->SetXTitle("p_{T} [GeV]");
473     hs_El_ElPt[i]->SetYTitle("events / bin");
474     sprintf(name,"s_El_ElEta_%d",i);
475 jueugste 1.2 hs_El_ElEta[i]=new TH1D(name, name, 10, -2.5, 2.5);
476 jueugste 1.1 hs_El_ElEta[i]->SetXTitle("#eta");
477     hs_El_ElEta[i]->SetYTitle("events / bin");
478     sprintf(name,"s_El_ElPhi_%d",i);
479 jueugste 1.2 hs_El_ElPhi[i]=new TH1D(name, name, 15, -Pi,Pi);
480 jueugste 1.1 hs_El_ElPhi[i]->SetXTitle("#phi");
481     hs_El_ElPhi[i]->SetYTitle("events / bin");
482     sprintf(name,"s_El_ElDeltaPhi_%d",i);
483 jueugste 1.2 hs_El_ElDeltaPhi[i]=new TH1D(name, name, 30, -0.05001, 0.05001);
484 jueugste 1.1 hs_El_ElDeltaPhi[i]->SetXTitle("#Delta #phi");
485     hs_El_ElDeltaPhi[i]->SetYTitle("events / bin");
486     sprintf(name,"s_El_ElDeltaEta_%d",i);
487 jueugste 1.2 hs_El_ElDeltaEta[i]=new TH1D(name, name, 30, -0.05001, 0.05001);
488 jueugste 1.1 hs_El_ElDeltaEta[i]->SetXTitle("#Delta #eta");
489     hs_El_ElDeltaEta[i]->SetYTitle("events / bin");
490     sprintf(name,"s_El_ElMet_%d",i);
491     hs_El_ElMet[i]=new TH1D(name, name, nbins, start, end);
492     hs_El_ElMet[i]->SetXTitle("#slash{E}_{T} [GeV]");
493     hs_El_ElMet[i]->SetYTitle("events / bin");
494     sprintf(name,"s_El_ElTransMass_%d",i);
495     hs_El_ElTransMass[i]=new TH1D(name, name, nbins, start, end);
496     hs_El_ElTransMass[i]->SetXTitle("m_{T} [GeV]");
497     hs_El_ElTransMass[i]->SetYTitle("events / bin");
498     sprintf(name,"s_El_ElCharge_%d",i);
499     hs_El_ElCharge[i]=new TH1D(name, name, 2, -2, 2);
500     hs_El_ElCharge[i]->SetXTitle("Charge");
501     hs_El_ElCharge[i]->SetYTitle("events / bin");
502     sprintf(name,"s_El_Njets_%d",i);
503     hs_El_Njets[i]=new TH1D(name, name, 10, 0, 10);
504     hs_El_Njets[i]->SetXTitle("number of jets");
505     hs_El_Njets[i]->SetYTitle("events / bin");
506     sprintf(name,"s_El_ElOneOverEminusOneOverP_%d",i);
507     hs_El_ElOneOverEminusOneOverP[i]=new TH1D(name, name, 30, -0.01, 0.5);
508     hs_El_ElOneOverEminusOneOverP[i]->SetXTitle("|1/E-1/p|");
509     hs_El_ElOneOverEminusOneOverP[i]->SetYTitle("events / bin");
510     sprintf(name,"s_El_ElEthIso_%d",i);
511     // hs_El_ElEthIso[i]=new TH1D(name, name, 50, -0.01, 5.);
512     hs_El_ElEthIso[i]=new TH1D(name, name, 20, -0.01, 1.1);
513     hs_El_ElEthIso[i]->SetXTitle("ETH Iso");
514     hs_El_ElEthIso[i]->SetYTitle("events / bin");
515     sprintf(name,"s_El_ElTrkIso_%d",i);
516     // hs_El_ElTrkIso[i]=new TH1D(name, name, 100, -0.01, 50.);
517     hs_El_ElTrkIso[i]=new TH1D(name, name, 20, -0.01, 1.1);
518     hs_El_ElTrkIso[i]->SetXTitle("Trk Iso");
519     hs_El_ElTrkIso[i]->SetYTitle("events / bin");
520     sprintf(name,"s_El_ElEcalIso_%d",i);
521     hs_El_ElEcalIso[i]=new TH1D(name, name, 20, -0.01, 1.1);
522     // hs_El_ElEcalIso[i]=new TH1D(name, name, 40, -0.01, 20.);
523     hs_El_ElEcalIso[i]->SetXTitle("ECAL Iso");
524     hs_El_ElEcalIso[i]->SetYTitle("events / bin");
525     sprintf(name,"s_El_ElHcalIso_%d",i);
526     hs_El_ElHcalIso[i]=new TH1D(name, name, 20, -0.01, 10.);
527     hs_El_ElHcalIso[i]->SetXTitle("HCAL Iso");
528     hs_El_ElHcalIso[i]->SetYTitle("events / bin");
529 jueugste 1.2
530     sprintf(name,"s_El_ElCombIso_%d",i);
531     hs_El_ElCombIso[i]=new TH1D(name, name, 20, -0.01, 3.1);
532     hs_El_ElCombIso[i]->SetXTitle("Combined Iso");
533     hs_El_ElCombIso[i]->SetYTitle("events / bin");
534    
535 jueugste 1.1 sprintf(name,"s_El_ElHoverE_%d",i);
536     hs_El_ElHoverE[i]=new TH1D(name, name, 30, -0.01, 0.5);
537     hs_El_ElHoverE[i]->SetXTitle("H/E");
538     hs_El_ElHoverE[i]->SetYTitle("events / bin");
539     sprintf(name,"s_El_ElSigmaIetaIeta_%d",i);
540     hs_El_ElSigmaIetaIeta[i]=new TH1D(name, name, 50, -0.01, 0.08);
541     hs_El_ElSigmaIetaIeta[i]->SetXTitle("#sigma_{i#eta i#eta}");
542     hs_El_ElSigmaIetaIeta[i]->SetYTitle("events / bin");
543     sprintf(name,"s_El_ElNumberOfMissingInnerHits_%d",i);
544     hs_El_ElNumberOfMissingInnerHits[i]=new TH1D(name, name, 10, 0., 10.);
545     hs_El_ElNumberOfMissingInnerHits[i]->SetXTitle("Number of missing inner hits");
546     hs_El_ElNumberOfMissingInnerHits[i]->SetYTitle("events / bin");
547 jueugste 1.2 }
548    
549     TH1D *hc_El_counter;
550     hc_El_counter=new TH1D("c_El_counter", "c_El_counter",15, 0, 15);
551     hc_El_counter->GetXaxis()->SetBinLabel(1,"# e preselection");
552     hc_El_counter->GetXaxis()->SetBinLabel(2,"# e presel, barrel");
553     hc_El_counter->GetXaxis()->SetBinLabel(3,"# e see");
554     hc_El_counter->GetXaxis()->SetBinLabel(4,"# e dphi");
555     hc_El_counter->GetXaxis()->SetBinLabel(5,"# e deta");
556     hc_El_counter->GetXaxis()->SetBinLabel(6,"# e hoe");
557     hc_El_counter->GetXaxis()->SetBinLabel(7,"# e combIso");
558     hc_El_counter->GetXaxis()->SetBinLabel(8,"# e conversion");
559     hc_El_counter->GetXaxis()->SetBinLabel(9,"# e presel, endcap");
560     hc_El_counter->GetXaxis()->SetBinLabel(10,"# e see");
561     hc_El_counter->GetXaxis()->SetBinLabel(11,"# e dphi");
562     hc_El_counter->GetXaxis()->SetBinLabel(12,"# e deta");
563     hc_El_counter->GetXaxis()->SetBinLabel(13,"# e hoe");
564     hc_El_counter->GetXaxis()->SetBinLabel(14,"# e combIso");
565     hc_El_counter->GetXaxis()->SetBinLabel(15,"# e conversion");
566    
567     // acceptance plots
568     TH2D *h_ElEtaVsScEta;
569     h_ElEtaVsScEta = new TH2D("ElEtaVsScEta", "h_ElEtaVsScEta", 10, -2.5, 2.5, 10, -2.5, 2.5);
570     // TH2D *h_ElPhiVsScPhi;
571     // h_ElPhiVsScPhi = new TH2D("ElPhiVsScPhi", "h_ElPhiVsScPhi", 10, -Pi, Pi, 10, -Pi, Pi);
572     TH2D *h_ElPtVsScEt;
573     h_ElPtVsScEt = new TH2D("ElPtVsScEt", "ElPtVsScEt", 20, 0, 200, 20, 0, 200);
574    
575 jueugste 1.1
576    
577     // --------------------------------------------------------------------------------------------------------------------
578    
579    
580    
581     // --------------------------------------------------------------------------------------------------------------------
582     // Electron ID N-1 plots
583     // --------------------------------------------------------------------------------------------------------------------
584     int MAXN=4;
585     TH1D *hn1_El_ElDeltaPhi[MAXN];
586     TH1D *hn1_El_ElDeltaEta[MAXN];
587     TH1D *hn1_El_ElOneOverEminusOneOverP[MAXN];
588 jueugste 1.2 // TH1D *hn1_El_ElPt[MAXN];
589     // TH1D *hn1_El_ElEta[MAXN];
590     // TH1D *hn1_El_ElPhi[MAXN];
591     // TH1D *hn1_El_ElMet[MAXN];
592     // TH1D *hn1_El_ElTransMass[MAXN];
593     // TH1D *hn1_El_ElCharge[MAXN];
594     // TH1D *hn1_El_Njets[MAXN];
595 jueugste 1.1 TH1D *hn1_El_ElEthIso[MAXN];
596 jueugste 1.2 // TH1D *hn1_El_ElTrkIso[MAXN];
597     // TH1D *hn1_El_ElEcalIso[MAXN];
598     // TH1D *hn1_El_ElHcalIso[MAXN];
599     TH1D *hn1_El_ElCombIso[MAXN];
600 jueugste 1.1 TH1D *hn1_El_ElHoverE[MAXN];
601     TH1D *hn1_El_ElSigmaIetaIeta[MAXN];
602     TH1D *hn1_El_ElNumberOfMissingInnerHits[MAXN];
603    
604    
605     for(int i=0; i<MAXN;i++) {
606     sprintf(name,"n1_El_ElDeltaPhi_%d",i);
607 jueugste 1.2 hn1_El_ElDeltaPhi[i]=new TH1D(name, name, 30, -0.05001, 0.05001); // plotting absolut value
608     // hn1_El_ElDeltaPhi[i]=new TH1D(name, name, 15, -0.05001, 0.05001); // plotting real value
609 jueugste 1.1 hn1_El_ElDeltaPhi[i]->SetXTitle("#Delta #phi");
610     hn1_El_ElDeltaPhi[i]->SetYTitle("events / bin");
611     sprintf(name,"n1_El_ElDeltaEta_%d",i);
612 jueugste 1.2 hn1_El_ElDeltaEta[i]=new TH1D(name, name, 30, -0.02001, 0.02001); // plotting absolut value
613     // hn1_El_ElDeltaEta[i]=new TH1D(name, name, 15, -0.05001, 0.05001); // plotting real value
614 jueugste 1.1 hn1_El_ElDeltaEta[i]->SetXTitle("#Delta #eta");
615     hn1_El_ElDeltaEta[i]->SetYTitle("events / bin");
616     sprintf(name,"n1_El_ElOneOverEminusOneOverP_%d",i);
617     hn1_El_ElOneOverEminusOneOverP[i]=new TH1D(name, name, 15, -0.0001, 0.05001);
618     hn1_El_ElOneOverEminusOneOverP[i]->SetXTitle("|1/E-1/p|");
619     hn1_El_ElOneOverEminusOneOverP[i]->SetYTitle("events / bin");
620     sprintf(name,"n1_El_ElEthIso_%d",i);
621     hn1_El_ElEthIso[i]=new TH1D(name, name, 50, -0.01, 5.);
622     hn1_El_ElEthIso[i]->SetXTitle("Isolation");
623     hn1_El_ElEthIso[i]->SetYTitle("events / bin");
624    
625    
626 jueugste 1.2 // sprintf(name,"n1_El_ElPt_%d",i);
627     // hn1_El_ElPt[i]=new TH1D(name, name, nbins, start, end);
628     // hn1_El_ElPt[i]->SetXTitle("p_{T} [GeV]");
629     // hn1_El_ElPt[i]->SetYTitle("events / bin");
630     // sprintf(name,"n1_El_ElEta_%d",i);
631     // hn1_El_ElEta[i]=new TH1D(name, name, 30, -5., 5.);
632     // hn1_El_ElEta[i]->SetXTitle("#eta");
633     // hn1_El_ElEta[i]->SetYTitle("events / bin");
634     // sprintf(name,"n1_El_ElPhi_%d",i);
635     // hn1_El_ElPhi[i]=new TH1D(name, name, 30, -Pi,Pi);
636     // hn1_El_ElPhi[i]->SetXTitle("#phi");
637     // hn1_El_ElPhi[i]->SetYTitle("events / bin");
638     // sprintf(name,"n1_El_ElMet_%d",i);
639     // hn1_El_ElMet[i]=new TH1D(name, name, nbins, start, end);
640     // hn1_El_ElMet[i]->SetXTitle("#slash{E}_{T} [GeV]");
641     // hn1_El_ElMet[i]->SetYTitle("events / bin");
642     // sprintf(name,"n1_El_ElTransMass_%d",i);
643     // hn1_El_ElTransMass[i]=new TH1D(name, name, nbins, start, end);
644     // hn1_El_ElTransMass[i]->SetXTitle("m_{T} [GeV]");
645     // hn1_El_ElTransMass[i]->SetYTitle("events / bin");
646     // sprintf(name,"n1_El_ElCharge_%d",i);
647     // hn1_El_ElCharge[i]=new TH1D(name, name, 2, -2, 2);
648     // hn1_El_ElCharge[i]->SetXTitle("Charge");
649     // hn1_El_ElCharge[i]->SetYTitle("events / bin");
650     // sprintf(name,"n1_El_Njets_%d",i);
651     // hn1_El_Njets[i]=new TH1D(name, name, 10, 0, 10);
652     // hn1_El_Njets[i]->SetXTitle("number of jets");
653     // hn1_El_Njets[i]->SetYTitle("events / bin");
654    
655 jueugste 1.1 // sprintf(name,"n1_El_ElTrkIso_%d",i);
656 jueugste 1.2 // // sprintf(name,"n1_El_ElTrkIso_%d",i);
657     // hn1_El_ElTrkIso[i]=new TH1D(name, name, 20, -0.01, 0.3);
658     // hn1_El_ElTrkIso[i]->SetXTitle("Trk Iso");
659     // hn1_El_ElTrkIso[i]->SetYTitle("events / bin");
660     // sprintf(name,"n1_El_ElEcalIso_%d",i);
661     // hn1_El_ElEcalIso[i]=new TH1D(name, name, 20, -0.01, 0.3);
662     // // hn1_El_ElEcalIso[i]=new TH1D(name, name, 40, -0.01, 20.);
663     // hn1_El_ElEcalIso[i]->SetXTitle("ECAL Iso");
664     // hn1_El_ElEcalIso[i]->SetYTitle("events / bin");
665     // sprintf(name,"n1_El_ElHcalIso_%d",i);
666     // hn1_El_ElHcalIso[i]=new TH1D(name, name, 20, -0.01, 0.3);
667     // // hn1_El_ElHcalIso[i]=new TH1D(name, name, 20, -0.01, 10.);
668     // hn1_El_ElHcalIso[i]->SetXTitle("HCAL Iso");
669     // hn1_El_ElHcalIso[i]->SetYTitle("events / bin");
670    
671     sprintf(name,"n1_El_ElCombIso_%d",i);
672     hn1_El_ElCombIso[i]=new TH1D(name, name, 20, -0.01, 0.5);
673     // hn1_El_ElCombIso[i]=new TH1D(name, name, 20, -0.01, 10.);
674     hn1_El_ElCombIso[i]->SetXTitle("Combined Iso");
675     hn1_El_ElCombIso[i]->SetYTitle("events / bin");
676    
677 jueugste 1.1 sprintf(name,"n1_El_ElHoverE_%d",i);
678 jueugste 1.2 hn1_El_ElHoverE[i]=new TH1D(name, name, 30, -0.01, 0.2);
679 jueugste 1.1 hn1_El_ElHoverE[i]->SetXTitle("H/E");
680     hn1_El_ElHoverE[i]->SetYTitle("events / bin");
681     sprintf(name,"n1_El_ElSigmaIetaIeta_%d",i);
682     hn1_El_ElSigmaIetaIeta[i]=new TH1D(name, name, 50, -0.01, 0.08);
683     hn1_El_ElSigmaIetaIeta[i]->SetXTitle("#sigma_{i#eta i#eta}");
684     hn1_El_ElSigmaIetaIeta[i]->SetYTitle("events / bin");
685     sprintf(name,"n1_El_ElNumberOfMissingInnerHits_%d",i);
686     hn1_El_ElNumberOfMissingInnerHits[i]=new TH1D(name, name, 10, 0., 10.);
687     hn1_El_ElNumberOfMissingInnerHits[i]->SetXTitle("Number of missing inner hits");
688     hn1_El_ElNumberOfMissingInnerHits[i]->SetYTitle("events / bin");
689    
690    
691     }
692    
693     // --------------------------------------------------------------------------------------------------------------------
694    
695    
696    
697    
698     // --------------------------------------------------------------------------------------------------------------------
699     // W Selection plots
700     // --------------------------------------------------------------------------------------------------------------------
701 jueugste 1.2 int MAXS=29;
702 jueugste 1.1 // char name [50];
703     // int nbins=20;
704     // double start=0.;
705     // double end=120.;
706     TH1D *hs_W_ElPt[MAXS];
707     TH1D *hs_W_ElEta[MAXS];
708     TH1D *hs_W_ElPhi[MAXS];
709     TH1D *hs_W_ElDeltaPhi[MAXS];
710     TH1D *hs_W_ElMet[MAXS];
711     TH1D *hs_W_ElTransMass[MAXS];
712     TH1D *hs_W_ElCharge[MAXS];
713     TH1D *hs_W_Njets[MAXS];
714     for(int i=0; i<MAXS; i++) {
715     sprintf(name,"s_W_ElPt_%d",i);
716     hs_W_ElPt[i]=new TH1D(name, name, nbins, start, end);
717     hs_W_ElPt[i]->SetXTitle("p_{T} [GeV]");
718     hs_W_ElPt[i]->SetYTitle("events / bin");
719     sprintf(name,"s_W_ElEta_%d",i);
720     hs_W_ElEta[i]=new TH1D(name, name, 30, -5., 5.);
721     hs_W_ElEta[i]->SetXTitle("#eta");
722     hs_W_ElEta[i]->SetYTitle("events / bin");
723     sprintf(name,"s_W_ElPhi_%d",i);
724     hs_W_ElPhi[i]=new TH1D(name, name, 30, -Pi,Pi);
725     hs_W_ElPhi[i]->SetXTitle("#phi");
726     hs_W_ElPhi[i]->SetYTitle("events / bin");
727     sprintf(name,"s_W_ElDeltaPhi_%d",i);
728     hs_W_ElDeltaPhi[i]=new TH1D(name, name, 15, 0., Pi);
729     hs_W_ElDeltaPhi[i]->SetXTitle("#Delta #phi_{e,#slash{E}_{T}}");
730     hs_W_ElDeltaPhi[i]->SetYTitle("events / bin");
731     sprintf(name,"s_W_ElMet_%d",i);
732     hs_W_ElMet[i]=new TH1D(name, name, nbins, start, end);
733     hs_W_ElMet[i]->SetXTitle("#slash{E}_{T} [GeV]");
734     hs_W_ElMet[i]->SetYTitle("events / bin");
735     sprintf(name,"s_W_ElTransMass_%d",i);
736     hs_W_ElTransMass[i]=new TH1D(name, name, nbins, start, end);
737     hs_W_ElTransMass[i]->SetXTitle("m_{T} [GeV]");
738     hs_W_ElTransMass[i]->SetYTitle("events / bin");
739     sprintf(name,"s_W_ElCharge_%d",i);
740     hs_W_ElCharge[i]=new TH1D(name, name, 2, -2, 2);
741     hs_W_ElCharge[i]->SetXTitle("Charge");
742     hs_W_ElCharge[i]->SetYTitle("events / bin");
743     sprintf(name,"s_W_Njets_%d",i);
744     hs_W_Njets[i]=new TH1D(name, name, 10, 0, 10);
745     hs_W_Njets[i]->SetXTitle("number of jets");
746     hs_W_Njets[i]->SetYTitle("events / bin");
747     }
748    
749 jueugste 1.2 int MAXWcounter=16;
750     int *Wcounter = new int[MAXWcounter];
751     memset(Wcounter,0,MAXWcounter*sizeof(int));
752    
753    
754     TH1D *hc_W_counter;
755     hc_W_counter=new TH1D("c_W_counter", "c_W_counter",16, 0, 16 );
756     hc_W_counter->GetXaxis()->SetBinLabel(1,"# e, N jets, Preselection");
757     hc_W_counter->GetXaxis()->SetBinLabel(2,"# W, N jets");
758     hc_W_counter->GetXaxis()->SetBinLabel(3,"# W+, N jets");
759     hc_W_counter->GetXaxis()->SetBinLabel(4,"# W-, N jets");
760     hc_W_counter->GetXaxis()->SetBinLabel(5,"# e, 0 jets, Preselection");
761     hc_W_counter->GetXaxis()->SetBinLabel(6,"# W, 0 jets");
762     hc_W_counter->GetXaxis()->SetBinLabel(7,"# W+, 0 jets");
763     hc_W_counter->GetXaxis()->SetBinLabel(8,"# W-, 0 jets");
764     hc_W_counter->GetXaxis()->SetBinLabel(9,"# e, 1 jet, Preselection");
765     hc_W_counter->GetXaxis()->SetBinLabel(10,"# W, 1 jet");
766     hc_W_counter->GetXaxis()->SetBinLabel(11,"# W+, 1 jet");
767     hc_W_counter->GetXaxis()->SetBinLabel(12,"# W-, 1 jet");
768     hc_W_counter->GetXaxis()->SetBinLabel(13,"# e, >1 jets, Preselection");
769     hc_W_counter->GetXaxis()->SetBinLabel(14,"# W, >1 jets");
770     hc_W_counter->GetXaxis()->SetBinLabel(15,"# W+, >1 jets");
771     hc_W_counter->GetXaxis()->SetBinLabel(16,"# W-, >1jets");
772 jueugste 1.1
773     // --------------------------------------------------------------------------------------------------------------------
774    
775    
776 jueugste 1.2 // --------------------------------------------------------------------------------------------------------------------
777     // Z plots
778     // --------------------------------------------------------------------------------------------------------------------
779     int MAXZ=4;
780     TH1D *h_Z_invMass[MAXZ];
781     TH1D *h_Z_ptAll[MAXZ];
782     TH1D *h_Z_etaAll[MAXZ];
783     TH1D *h_Z_phiAll[MAXZ];
784     TH1D *h_Z_deltaPhi[MAXZ];
785     TH1D *h_Z_ptDiLepton[MAXZ];
786     TH1D *h_Z_etaDiLepton[MAXZ];
787     TH1D *h_Z_phiDiLepton[MAXZ];
788    
789     TH1D *h_Z_leadingJetPt[MAXZ];
790     TH1D *h_Z_summedJetPt[MAXZ];
791     TH1D *h_Z_leadingJetEta[MAXZ];
792     TH1D *h_Z_summedJetEta[MAXZ];
793     TH1D *h_Z_leadingJetPhi[MAXZ];
794     TH1D *h_Z_summedJetPhi[MAXZ];
795     TH1D *h_Z_nJets[MAXZ];
796     TH1D *h_Z_leadingJetDeltaPt[MAXZ];
797     TH1D *h_Z_leadingJetDeltaEta[MAXZ];
798     TH1D *h_Z_leadingJetDeltaPhi[MAXZ];
799     TH1D *h_Z_summedJetDeltaPt[MAXZ];
800     TH1D *h_Z_summedJetDeltaEta[MAXZ];
801     TH1D *h_Z_summedJetDeltaPhi[MAXZ];
802     TH1D *h_Z_recoilPt[MAXZ];
803     TH1D *h_Z_recoilEta[MAXZ];
804     TH1D *h_Z_recoilPhi[MAXZ];
805     TH1D *h_Z_metPt[MAXZ];
806     TH1D *h_Z_metEta[MAXZ];
807     TH1D *h_Z_metPhi[MAXZ];
808    
809    
810    
811     for(int i=0; i<MAXZ; i++) {
812     sprintf(name,"h_Z_invMass_%d",i);
813     h_Z_invMass[i] = new TH1D(name,name,80,0,200);
814     h_Z_invMass[i]->SetXTitle("m_{ee} [GeV/c^{2}]");
815     h_Z_invMass[i]->SetYTitle("events / bin");
816    
817     sprintf(name,"h_Z_ptAll_%d",i);
818     h_Z_ptAll[i] = new TH1D(name,name,20,0,200);
819     h_Z_ptAll[i]->SetXTitle("p_{T} [GeV]");
820     h_Z_ptAll[i]->SetYTitle("events / bin");
821     sprintf(name,"h_Z_etaAll_%d",i);
822     h_Z_etaAll[i] = new TH1D(name,name,12,-3.,3.);
823     h_Z_etaAll[i]->SetXTitle("#eta");
824     h_Z_etaAll[i]->SetYTitle("events / bin");
825     sprintf(name,"h_Z_phiAll_%d",i);
826     h_Z_phiAll[i] = new TH1D(name,name,30,-Pi,Pi);
827     h_Z_phiAll[i]->SetXTitle("#phi");
828     h_Z_phiAll[i]->SetYTitle("events / bin");
829     sprintf(name,"h_Z_deltaPhi_%d",i);
830     h_Z_deltaPhi[i] = new TH1D(name,name,15,0,Pi);
831     h_Z_deltaPhi[i]->SetXTitle("#Delta #phi_{ee}");
832     h_Z_deltaPhi[i]->SetYTitle("events / bin");
833    
834     sprintf(name,"h_Z_ptDiLepton_%d",i);
835     h_Z_ptDiLepton[i] = new TH1D(name,name,20,0,200);
836     h_Z_ptDiLepton[i]->SetXTitle("p_{T} [GeV]");
837     h_Z_ptDiLepton[i]->SetYTitle("events / bin");
838     sprintf(name,"h_Z_etaDiLepton_%d",i);
839     h_Z_etaDiLepton[i] = new TH1D(name,name,16,-8.,8.);
840     h_Z_etaDiLepton[i]->SetXTitle("#eta");
841     h_Z_etaDiLepton[i]->SetYTitle("events / bin");
842     sprintf(name,"h_Z_phiDiLepton_%d",i);
843     h_Z_phiDiLepton[i] = new TH1D(name,name,30,-Pi,Pi);
844     h_Z_phiDiLepton[i]->SetXTitle("#phi");
845     h_Z_phiDiLepton[i]->SetYTitle("events / bin");
846    
847    
848     sprintf(name,"h_Z_leadingJetPt_%d",i);
849     h_Z_leadingJetPt[i] = new TH1D(name,name,20,0,200);
850     h_Z_leadingJetPt[i]->SetXTitle("p_{T} [GeV]");
851     h_Z_leadingJetPt[i]->SetYTitle("events / bin");
852     sprintf(name,"h_Z_summedJetPt_%d",i);
853     h_Z_summedJetPt[i] = new TH1D(name,name,20,0,200);
854     h_Z_summedJetPt[i]->SetXTitle("p_{T} [GeV]");
855     h_Z_summedJetPt[i]->SetYTitle("events / bin");
856     sprintf(name,"h_Z_leadingJetEta_%d",i);
857     h_Z_leadingJetEta[i] = new TH1D(name,name,12,-3,3);
858     h_Z_leadingJetEta[i]->SetXTitle("#eta");
859     h_Z_leadingJetEta[i]->SetYTitle("events / bin");
860     sprintf(name,"h_Z_summedJetEta_%d",i);
861     h_Z_summedJetEta[i] = new TH1D(name,name,16,-8,8);
862     h_Z_summedJetEta[i]->SetXTitle("#eta");
863     h_Z_summedJetEta[i]->SetYTitle("events / bin");
864     sprintf(name,"h_Z_leadingJetPhi_%d",i);
865     h_Z_leadingJetPhi[i] = new TH1D(name,name,30,-Pi,Pi);
866     h_Z_leadingJetPhi[i]->SetXTitle("#phi");
867     h_Z_leadingJetPhi[i]->SetYTitle("events / bin");
868     sprintf(name,"h_Z_summedJetPhi_%d",i);
869     h_Z_summedJetPhi[i] = new TH1D(name,name,30,-Pi,Pi);
870     h_Z_summedJetPhi[i]->SetXTitle("#phi");
871     h_Z_summedJetPhi[i]->SetYTitle("events / bin");
872    
873     sprintf(name,"h_Z_nJets_%d",i);
874     h_Z_nJets[i] = new TH1D(name,name,11,0,11);
875     h_Z_nJets[i]->SetXTitle("jet number");
876     h_Z_nJets[i]->SetYTitle("events / bin");
877    
878     sprintf(name,"h_Z_leadingJetDeltaPt_%d",i);
879     h_Z_leadingJetDeltaPt[i] = new TH1D(name,name,60,-150,150);
880     h_Z_leadingJetDeltaPt[i]->SetXTitle("#Delta p_{T,jZ} [GeV]");
881     h_Z_leadingJetDeltaPt[i]->SetYTitle("events / bin");
882     sprintf(name,"h_Z_leadingJetDeltaEta_%d",i);
883     h_Z_leadingJetDeltaEta[i] = new TH1D(name,name,16,-8,8);
884     h_Z_leadingJetDeltaEta[i]->SetXTitle("#Delta #eta_{jZ}");
885     h_Z_leadingJetDeltaEta[i]->SetYTitle("events / bin");
886     sprintf(name,"h_Z_leadingJetDeltaPhi_%d",i);
887     h_Z_leadingJetDeltaPhi[i] = new TH1D(name,name,15,0,Pi);
888     h_Z_leadingJetDeltaPhi[i]->SetXTitle("#Delta #phi_{jZ}");
889     h_Z_leadingJetDeltaPhi[i]->SetYTitle("events / bin");
890    
891     sprintf(name,"h_Z_summedJetDeltaPt_%d",i);
892     h_Z_summedJetDeltaPt[i] = new TH1D(name,name,60,-150,150);
893     h_Z_summedJetDeltaPt[i]->SetXTitle("#Delta p_{T,jZ} [GeV]");
894     h_Z_summedJetDeltaPt[i]->SetYTitle("events / bin");
895     sprintf(name,"h_Z_summedJetDeltaEta_%d",i);
896     h_Z_summedJetDeltaEta[i] = new TH1D(name,name,16,-8,8);
897     h_Z_summedJetDeltaEta[i]->SetXTitle("#Delta #eta_{jZ}");
898     h_Z_summedJetDeltaEta[i]->SetYTitle("events / bin");
899     sprintf(name,"h_Z_summedJetDeltaPhi_%d",i);
900     h_Z_summedJetDeltaPhi[i] = new TH1D(name,name,15,0,Pi);
901     h_Z_summedJetDeltaPhi[i]->SetXTitle("#Delta #phi_{jZ}");
902     h_Z_summedJetDeltaPhi[i]->SetYTitle("events / bin");
903    
904     sprintf(name,"h_Z_recoilPt_%d",i);
905     h_Z_recoilPt[i] = new TH1D(name,name,20,0,200);
906     h_Z_recoilPt[i]->SetXTitle("p_{T,j+Z} [GeV]");
907     h_Z_recoilPt[i]->SetYTitle("events / bin");
908     sprintf(name,"h_Z_recoilEta_%d",i);
909     h_Z_recoilEta[i] = new TH1D(name,name,16,-8,8);
910     h_Z_recoilEta[i]->SetXTitle("#eta_{j+Z}");
911     h_Z_recoilEta[i]->SetYTitle("events / bin");
912     sprintf(name,"h_Z_recoilPhi_%d",i);
913     h_Z_recoilPhi[i] = new TH1D(name,name,30,-Pi,Pi);
914     h_Z_recoilPhi[i]->SetXTitle("#phi_{j+Z}");
915     h_Z_recoilPhi[i]->SetYTitle("events / bin");
916    
917     sprintf(name,"h_Z_metPt_%d",i);
918     h_Z_metPt[i] = new TH1D(name,name,20,0,200);
919     h_Z_metPt[i]->SetXTitle("#slash{p}_{T} [GeV]");
920     h_Z_metPt[i]->SetYTitle("events / bin");
921     sprintf(name,"h_Z_metEta_%d",i);
922     h_Z_metEta[i] = new TH1D(name,name,16,-8,8);
923     h_Z_metEta[i]->SetXTitle("#eta_{#slash{p}_{T}}");
924     h_Z_metEta[i]->SetYTitle("events / bin");
925     sprintf(name,"h_Z_metPhi_%d",i);
926     h_Z_metPhi[i] = new TH1D(name,name,30,-Pi,Pi);
927     h_Z_metPhi[i]->SetXTitle("#phi_{#slash{p}_{T}}");
928     h_Z_metPhi[i]->SetYTitle("events / bin");
929 jueugste 1.1
930 jueugste 1.2 // TH2D *h_Z_summedJetDeltaPhi_VS_deltaPhi("summedJetDeltaPhi_VS_deltaPhi", "summedJetDeltaPhi_VS_deltaPhi", 30,-Pi,Pi,15,0,Pi);
931 jueugste 1.1
932 jueugste 1.2 }
933     // --------------------------------------------------------------------------------------------------------------------
934 jueugste 1.1
935    
936 jueugste 1.2 // --------------------------------------------------------------------------------------------------------------------
937     // get the trigger map this is done once per input file
938     // check that all files in the same input file have the
939     // same trigger table
940     // --------------------------------------------------------------------------------------------------------------------
941     getHLTtable();
942     // --------------------------------------------------------------------------------------------------------------------
943 jueugste 1.1
944    
945 jueugste 1.2 ////////////////////////////////////////////////////////////////////
946     ////////////////////Loop over entries starts here //////////////////
947     ////////////////////////////////////////////////////////////////////
948    
949 jueugste 1.1
950    
951 jueugste 1.2
952     TH1D *h_jetPt = new TH1D("h_jetPt", "jet_Pt",100,0,100);
953    
954     /////////initialize variables
955    
956     Long64_t nentries = fChain->GetEntriesFast();
957     std::cout << "analysisClass::Loop(): nentries = " << nentries << std::endl;
958    
959     ////// The following ~7 lines have been taken from rootNtupleClass->Loop() /////
960     ////// If the root version is updated and rootNtupleClass regenerated, /////
961     ////// these lines may need to be updated. /////
962     Long64_t nb = 0;
963    
964 jueugste 1.1
965 jueugste 1.2 for (Long64_t jentry=0; jentry<nentries;jentry++) { // loop over all events (entries) in the tree/chain
966 jueugste 1.1
967    
968 jueugste 1.2 Long64_t ientry = fChain->LoadTree(jentry); // ientry: this is a counter over each single file in the input list
969 jueugste 1.1
970 jueugste 1.2 if (ientry < 0) {cerr<<"WARNING: ientry = "<<ientry<<" is smaller than 0! (this is ok if the end of the file is reached...)"<<endl; break; }
971    
972     nb=fChain->GetEntry(jentry);
973     //fChain->GetEntry(jentry);
974    
975     if(jentry < 10 || jentry%1000 == 0) {
976     std::cout << "analysisClass::Loop(): Events processed = " << jentry << std::endl;
977     }
978    
979     if(sampleSize!=-1 && sampleSize==jentry) {
980     goto END;
981     }
982     totalNumberOfEvents++;
983     h_numberOfEvents->Fill(1);
984    
985     ////////////////////////////////////////////////////////////////////
986     ////////////////////// User's code starts here /////////////////////
987     ////////////////////////////////////////////////////////////////////
988    
989     // check the methods defined in baseClass
990    
991     testEvent lepton;
992     lepton = fillTestEvent();
993     for(int ii=0;ii<NEles;ii++) {
994     // cout<<"pt: "<<lepton.fourMomentum[ii].Perp()<<endl;
995     }
996    
997     jetIndex.clear();
998     electronIndex.clear();
999    
1000    
1001     vector<TLorentzVector> electronsTight;
1002     vector<TLorentzVector> electronsETH;
1003     vector<TLorentzVector> electronsTightIsolated;
1004     vector<TLorentzVector> electronsETHIsolated;
1005     vector<TLorentzVector> jets;
1006     electronsTight.clear();
1007     electronsETH.clear();
1008     jets.clear();
1009    
1010    
1011     int BSC_techbit = 0;
1012     int BeamHalo = 0;
1013    
1014    
1015     // --------------------------------------------------------------------------------
1016     // get the MET
1017     // --------------------------------------------------------------------------------
1018     double met;
1019     double metPhi;
1020     // double metEta;
1021     double delPhiMet;
1022     met=PFMET;
1023     metPhi=PFMETphi;
1024     // metEta=PFMETeta;
1025    
1026     // --------------------------------------------------------------------------------
1027     // get the number of jets
1028     // --------------------------------------------------------------------------------
1029     int njets=0;
1030    
1031    
1032     // vector<TLorentzVector> jets;
1033     for(int j=0;j<NJets;j++) {
1034     TLorentzVector vec;
1035     vec.SetPxPyPzE(JPx[j],JPy[j],JPz[j],JE[j]);
1036     if(JPx[j]>jetPtMin) {
1037 jueugste 1.1 jets.push_back(vec);
1038 jueugste 1.2 }
1039     }
1040     vector<TLorentzVector> eles;
1041     for(int e=0;e<NEles;e++) {
1042     TLorentzVector vec;
1043     vec.SetPxPyPzE(ElPx[e],ElPy[e],ElPz[e],ElE[e]);
1044     myEvent ele;
1045     ele.fourvector.push_back(vec);
1046     ele.momentum.push_back(ElPt[e]);
1047     ele.missinget=met;
1048     ele.charge.push_back(ElCharge[e]);
1049     double dEtaCorrection=0;
1050     double dPhiCorrection=0;
1051     if(isdata==true && applyDeltaCorrection==true) {
1052     dEtaCorrection=detaCorrections(ElEta[e], ElPhi[e]);
1053     dPhiCorrection=dphiCorrections(ElEta[e], ElPhi[e]);
1054     }
1055     ele.deltaPhi.push_back(ElDeltaPhiSuperClusterAtVtx[e] - dPhiCorrection);
1056     ele.deltaEta.push_back(ElDeltaEtaSuperClusterAtVtx[e] - dEtaCorrection);
1057     ele.oneOverEminusOverP.push_back(fabs(1/ElCaloEnergy[e]-1/ElTrkMomAtVtx[e]));
1058     ele.transverseMass.push_back(transverseMass(ElPt[e], met, deltaPhi(ElPhi[e],metPhi)));
1059     ele.ethIso.push_back(ElDR03TkSumPt[e]/ElCaloEnergy[e]);
1060     if(workingPoint>0) {
1061     ele.trkIso.push_back(ElDR03TkSumPt[e]/ElPt[e]);
1062     ele.ecalIso.push_back(ElDR03EcalRecHitSumEt[e]/ElPt[e]);
1063     ele.hcalIso.push_back(ElDR03HcalTowerSumEt[e]/ElPt[e]);
1064     }
1065     if(workingPoint<0) {
1066     ele.trkIso.push_back(ElDR03TkSumPt[e]);
1067     ele.ecalIso.push_back(ElDR04EcalRecHitSumEt[e]);
1068     ele.hcalIso.push_back(ElDR04HcalTowerSumEt[e]);
1069     }
1070     ele.HoverE.push_back(ElHcalOverEcal[e]);
1071     ele.sigmaIetaIeta.push_back(ElSigmaIetaIeta[e]);
1072     if(noInnerHitInfo==false) {
1073     ele.numberOfMissingInnerHits.push_back(ElNumberOfMissingInnerHits[e]);
1074     }
1075     else if(noInnerHitInfo==true) {
1076     ele.numberOfMissingInnerHits.push_back(0);
1077     }
1078     // check if really only one electron is filled
1079     if(ele.fourvector.size()>1) {
1080     cout<<"ele size to large!!!: "<<ele.fourvector.size()<<endl;
1081     break;
1082     }
1083    
1084     if(WorkingPointID(ele, WorkingPointCuts)==true && ele.momentum[0]>20) {
1085     eles.push_back(vec);
1086     //debug++;
1087     }
1088     }
1089    
1090     int matched=0;
1091     double dR=9999.;
1092     for(int nj=0;nj<jets.size();nj++) {
1093     for(int ne=0;ne<eles.size();ne++) {
1094 jueugste 1.1
1095 jueugste 1.2 double deltaR=fabs(jets[nj].DeltaR(eles[ne]));
1096     if(deltaR<dR) dR=deltaR;
1097     }
1098     if(dR>deltaRMax) njets++;
1099     }
1100    
1101     // --------------------------------------------------------------------------------
1102     // ugly implemented JET VETO and MET cut
1103     // --------------------------------------------------------------------------------
1104 jueugste 1.1
1105    
1106 jueugste 1.2 if(applyJetVeto==true && (njets>0 || met<25)) continue;
1107 jueugste 1.1
1108     // --------------------------------------------------------------------------------
1109    
1110     // --------------------------------------------------------------------------------
1111     // Let's have a look at the electrons
1112     // --------------------------------------------------------------------------------
1113    
1114    
1115     // define the different electrons
1116     myEvent tightElectrons;
1117     myEvent ethElectrons;
1118    
1119    
1120     double etaMaxBarrel=1.44;
1121     double etaMaxEndcap=2.5;
1122    
1123     double deltaPhiCut=0.02;
1124     double deltaEtaCut=0.004;
1125     double oneOverEminusOneOverPCut=0.005;
1126     bool ethIDpassed=false;
1127    
1128 jueugste 1.2
1129    
1130 jueugste 1.1 // loop over all electrons in one event
1131     for(int i=0; i<NEles; i++) {
1132    
1133 jueugste 1.2 // if(ElectronPreselection(i)==0) debug++;
1134    
1135    
1136     // --------------------------------------------------------------------------------
1137     // check acceptance region of the electrons...
1138     // --------------------------------------------------------------------------------
1139     double accEta;
1140     // accEta = ElEta[i];
1141     accEta = ElSCEta[i]; // use the SC eta to define acceptance
1142     // --------------------------------------------------------------------------------
1143    
1144    
1145 jueugste 1.1
1146 jueugste 1.2
1147     // --------------------------------------------------------------------------------
1148 jueugste 1.1 // apply corrections for delta eta and delta phi
1149 jueugste 1.2 // --------------------------------------------------------------------------------
1150 jueugste 1.1 double dEtaCorrection=0;
1151     double dPhiCorrection=0;
1152     if(isdata==true && applyDeltaCorrection==true) {
1153 jueugste 1.2 dEtaCorrection=detaCorrections(accEta, ElPhi[i]);
1154     dPhiCorrection=dphiCorrections(accEta, ElPhi[i]);
1155 jueugste 1.1 }
1156 jueugste 1.2 // --------------------------------------------------------------------------------
1157 jueugste 1.1
1158 jueugste 1.2 // --------------------------------------------------------------------------------
1159 jueugste 1.1 // fill the myevent
1160 jueugste 1.2 // --------------------------------------------------------------------------------
1161 jueugste 1.1 TLorentzVector vec;
1162     vec.SetPxPyPzE(ElPx[i],ElPy[i],ElPz[i],ElE[i]);
1163     myEvent candidate;
1164     candidate.fourvector.push_back(vec);
1165     candidate.momentum.push_back(ElPt[i]);
1166     candidate.missinget=met;
1167     candidate.charge.push_back(ElCharge[i]);
1168     candidate.deltaPhi.push_back(ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection);
1169     candidate.deltaEta.push_back(ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection);
1170     candidate.oneOverEminusOverP.push_back(fabs(1/ElCaloEnergy[i]-1/ElTrkMomAtVtx[i]));
1171     candidate.transverseMass.push_back(transverseMass(ElPt[i], met, deltaPhi(ElPhi[i],metPhi)));
1172     candidate.ethIso.push_back(ElDR03TkSumPt[i]/ElCaloEnergy[i]);
1173     if(workingPoint>0) {
1174     candidate.trkIso.push_back(ElDR03TkSumPt[i]/ElPt[i]);
1175     candidate.ecalIso.push_back(ElDR03EcalRecHitSumEt[i]/ElPt[i]);
1176     candidate.hcalIso.push_back(ElDR03HcalTowerSumEt[i]/ElPt[i]);
1177     }
1178     if(workingPoint<0) {
1179     candidate.trkIso.push_back(ElDR03TkSumPt[i]);
1180     candidate.ecalIso.push_back(ElDR04EcalRecHitSumEt[i]);
1181     candidate.hcalIso.push_back(ElDR04HcalTowerSumEt[i]);
1182     }
1183     candidate.HoverE.push_back(ElHcalOverEcal[i]);
1184     candidate.sigmaIetaIeta.push_back(ElSigmaIetaIeta[i]);
1185     if(noInnerHitInfo==false) {
1186     candidate.numberOfMissingInnerHits.push_back(ElNumberOfMissingInnerHits[i]);
1187     }
1188     else if(noInnerHitInfo==true) {
1189     candidate.numberOfMissingInnerHits.push_back(0);
1190     }
1191    
1192     // check if really only one electron is filled
1193     if(candidate.fourvector.size()>1) {
1194     cout<<"candidate size to large!!!: "<<candidate.fourvector.size()<<endl;
1195     break;
1196     }
1197 jueugste 1.2 // --------------------------------------------------------------------------------
1198    
1199     // check if electron is in acceptance region of the detector
1200     if(fabs(accEta)<etaEndcapMax) {
1201    
1202 jueugste 1.1
1203 jueugste 1.2 // fill a set of plots for the gsf electron candidates
1204     int cut=0;
1205 jueugste 1.1 filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1206     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1207     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1208     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1209 jueugste 1.2 );
1210    
1211     // make the electron preselection
1212     if(applyCut[1]==false || ElHcalOverEcal[i]<Pre_HoverEMin) {
1213     cut=1;
1214 jueugste 1.1 filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1215     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1216     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1217     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1218 jueugste 1.2 );
1219     if(applyCut[2]==false || fabs(ElDeltaPhiSuperClusterAtVtx[i] -dPhiCorrection)<Pre_deltaPhiMax) {
1220     cut=2;
1221 jueugste 1.1 filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1222     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1223     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1224     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1225     );
1226 jueugste 1.2 if(applyCut[3]==false || fabs(ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection)<Pre_deltaEtaMax) {
1227     cut=3;
1228 jueugste 1.1 filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1229     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1230     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1231     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1232     );
1233    
1234 jueugste 1.2 if(applyCut[4]==false || ElPt[i]>Pre_pt) {
1235     cut=4;
1236 jueugste 1.1 filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1237     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1238     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1239     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1240     );
1241 jueugste 1.2
1242    
1243     // now the preselection is done...
1244    
1245     // ask for triggers HLT_Photon10
1246     // cout<<"Trigger: 53: "<<HLTResults[53]<<"/ 54: "<<HLTResults[54]<<"/ 55: "<<HLTResults[55]<<endl;
1247    
1248     // get the right trigger bit
1249     int Photon10;
1250     int Photon15;
1251     int Photon10_Cleaned;
1252     int Ele15;
1253     Photon10 = getHLTtriggerBit("HLT_Photon10_L1R");
1254     Photon15 = getHLTtriggerBit("HLT_Photon15_L1R");
1255     // Photon10_Cleaned = getHLTtriggerBit("HLT_Photon10_Cleaned_L1R");
1256     Ele15 = getHLTtriggerBit("HLT_Ele15_LW_L1R");
1257    
1258     if(applyCut[5]==false || HLTResults[Photon10]==1 || HLTResults[Photon15]==1 || HLTResults[Ele15]==1) {
1259     // if(true) {
1260     cut=5;
1261     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1262     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1263     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1264     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1265     );
1266    
1267    
1268     // now the different IDs
1269    
1270     // check if electron from conversion...
1271     bool isConversion;
1272     if((fabs(ElConvPartnerTrkDist[i])<0.02 && fabs(ElConvPartnerTrkDCot[i])<0.02) || ElNumberOfMissingInnerHits[i]>1) isConversion=true;
1273     else isConversion=false;
1274 jueugste 1.1
1275    
1276    
1277    
1278     // first the ETH one for the barrel
1279     double OneoverEminusOneoverP=fabs(1/ElCaloEnergy[i]-1/ElTrkMomAtVtx[i]);
1280 jueugste 1.2 if(fabs(accEta)<etaBarrelMax) {
1281 jueugste 1.1 cut=6;
1282     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1283     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1284     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1285     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1286     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1287     );
1288     // only ECAL driven electrons
1289     if(applyCut[7]==false || ElEcalDriven[i]==1) {
1290     cut=7;
1291     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1292     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1293     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1294     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1295     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1296     );
1297     // |1/E-1/p|
1298     if(applyCut[8]==false || OneoverEminusOneoverP<ETH_oneOverEminusOneOverP_B) {
1299     cut=8;
1300     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1301     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1302     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1303     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1304     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1305     );
1306     // delta eta
1307     if(applyCut[9]==false || fabs(ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection)<ETH_deltaEtaMax_B) {
1308     cut=9;
1309     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1310     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1311     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1312     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1313     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1314     );
1315     // delta phi
1316     if(applyCut[10]==false || fabs(ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection)<ETH_deltaPhiMax_B) {
1317     cut=10;
1318     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1319     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1320     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1321     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1322     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1323     );
1324     // isolation
1325     double iso=ElDR04TkSumPt[i]/ElCaloEnergy[i];
1326     if(applyCut[11]==false || iso<ETH_iso_B) {
1327     cut=11;
1328     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1329     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1330     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1331     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1332     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1333     );
1334     // remove conversions
1335 jueugste 1.2 // if(applyCut[12]==false || (ElNumberOfMissingInnerHits[i]<2 && ElConvPartnerTrkDist[i]<Rob_dist_E && ElConvPartnerTrkDCot[i]<Rob_cot_E) ) {
1336     if(applyCut[12]==false || isConversion==false) {
1337 jueugste 1.1 cut=12;
1338     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1339     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1340     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1341     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1342     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1343     );
1344     } // conversions
1345     } // isolation
1346     } //delta phi, barrel
1347     } //delta eta, barrel
1348     } // 1/e-1/p, barrel
1349     } // ECAL driven, barrel
1350     } // ETH barrel
1351    
1352     // now the ETH ID for the endcaps
1353 jueugste 1.2 else if(fabs(accEta)>etaEndcapMin && fabs(accEta)<etaEndcapMax) {
1354 jueugste 1.1 cut=13;
1355     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1356     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1357     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1358     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1359     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1360     );
1361     // only ECAL driven electrons
1362     if(applyCut[14]==false || ElEcalDriven[i]==1) {
1363     cut=14;
1364     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1365     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1366     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1367     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1368     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1369     );
1370     // |1/E-1/p|
1371     if(applyCut[15]==false || OneoverEminusOneoverP<ETH_oneOverEminusOneOverP_E) {
1372     cut=15;
1373     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1374     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1375     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1376     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1377     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1378     );
1379     // delta eta
1380     if(applyCut[16]==false || fabs(ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection)<ETH_deltaEtaMax_E) {
1381     cut=16;
1382     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1383     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1384     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1385     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1386     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1387     );
1388     // delta phi
1389     if(applyCut[17]==false || fabs(ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection)<ETH_deltaPhiMax_E) {
1390     cut=17;
1391     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1392     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1393     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1394     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1395     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1396     );
1397     // isolation
1398     double iso=ElDR04TkSumPt[i]/ElCaloEnergy[i];
1399     if(applyCut[18]==false || iso<ETH_iso_E) {
1400     cut=18;
1401     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1402     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1403     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1404     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1405     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1406     );
1407     // remove conversions
1408 jueugste 1.2 if(applyCut[19]==false || isConversion==false) {
1409 jueugste 1.1 cut=19;
1410     //filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut]);
1411     filler(candidate, hs_El_ElPt[cut], hs_El_ElEta[cut], hs_El_ElPhi[cut], hs_El_ElMet[cut], hs_El_ElCharge[cut],
1412     hs_El_ElDeltaPhi[cut], hs_El_ElDeltaEta[cut], hs_El_ElOneOverEminusOneOverP[cut], hs_El_ElTransMass[cut],
1413     hs_El_ElEthIso[cut], hs_El_ElTrkIso[cut], hs_El_ElEcalIso[cut], hs_El_ElHcalIso[cut],
1414     hs_El_ElHoverE[cut], hs_El_ElSigmaIetaIeta[cut], hs_El_ElNumberOfMissingInnerHits[cut]
1415     );
1416     } // conversions
1417     } // isolation
1418     } //delta phi
1419     } //delta eta
1420     } // 1/e-1/p
1421     } // ECAL driven
1422    
1423     } // ETH endcap
1424    
1425     // now let's do the Robust one
1426    
1427    
1428     // --------------------------------------------------------------------------------------------------------------------
1429 jueugste 1.2 // Fill the N-1 plots
1430     // --------------------------------------------------------------------------------------------------------------------
1431 jueugste 1.1
1432     // ETH
1433    
1434     // delta phi plot
1435     // barrel deltaPhi
1436    
1437     if(ethNminus1(ElEcalDriven[i], ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection, ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection, ElCaloEnergy[i], ElTrkMomAtVtx[i], ElEta[i], "deltaPhi", isolation(ElDR04TkSumPt[i], ElCaloEnergy[i])) &&
1438     fabs(ElEta[i])<etaBarrelMax) {
1439     hn1_El_ElDeltaPhi[0]->Fill(fabs(ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection));
1440     }
1441     // endcap
1442     if(ethNminus1(ElEcalDriven[i], ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection, ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection, ElCaloEnergy[i], ElTrkMomAtVtx[i], ElEta[i], "deltaPhi", isolation(ElDR04TkSumPt[i], ElCaloEnergy[i])) &&
1443     fabs(ElEta[i])>etaBarrelMax &&
1444     fabs(ElEta[i])<etaEndcapMax) {
1445     hn1_El_ElDeltaPhi[1]->Fill(fabs(ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection));
1446     }
1447     // delta eta
1448     // barrel
1449     if(ethNminus1(ElEcalDriven[i], ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection, ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection, ElCaloEnergy[i], ElTrkMomAtVtx[i], ElEta[i], "deltaEta", isolation(ElDR04TkSumPt[i], ElCaloEnergy[i])) &&
1450     fabs(ElEta[i])<etaBarrelMax) {
1451     hn1_El_ElDeltaEta[0]->Fill(fabs(ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection));
1452     }
1453     // endcap
1454     if(ethNminus1(ElEcalDriven[i], ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection, ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection, ElCaloEnergy[i], ElTrkMomAtVtx[i], ElEta[i], "deltaEta", isolation(ElDR04TkSumPt[i], ElCaloEnergy[i])) &&
1455     fabs(ElEta[i])>etaBarrelMax &&
1456     fabs(ElEta[i])<etaEndcapMax) {
1457     hn1_El_ElDeltaEta[1]->Fill(fabs(ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection));
1458     }
1459     // 1/e-1/p
1460     // barrel
1461     if(ethNminus1(ElEcalDriven[i], ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection, ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection, ElCaloEnergy[i], ElTrkMomAtVtx[i], ElEta[i], "oneOverEminusOneOverP", isolation(ElDR04TkSumPt[i], ElCaloEnergy[i])) &&
1462     fabs(ElEta[i])<etaBarrelMax) {
1463     hn1_El_ElOneOverEminusOneOverP[0]->Fill(fabs(1/ElCaloEnergy[i] - 1/ElTrkMomAtVtx[i]));
1464     }
1465     // endcap
1466     if(ethNminus1(ElEcalDriven[i], ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection, ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection, ElCaloEnergy[i], ElTrkMomAtVtx[i], ElEta[i], "oneOverEminusOneOverP", isolation(ElDR04TkSumPt[i], ElCaloEnergy[i])) &&
1467     fabs(ElEta[i])>etaBarrelMax &&
1468     fabs(ElEta[i])<etaEndcapMax) {
1469     hn1_El_ElOneOverEminusOneOverP[1]->Fill(fabs(1/ElCaloEnergy[i] - 1/ElTrkMomAtVtx[i]));
1470     }
1471     // isolation
1472     // barrel
1473     if(ethNminus1(ElEcalDriven[i], ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection, ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection, ElCaloEnergy[i], ElTrkMomAtVtx[i], ElEta[i], "iso", isolation(ElDR04TkSumPt[i], ElCaloEnergy[i])) &&
1474     fabs(ElEta[i])<etaBarrelMax) {
1475     hn1_El_ElEthIso[0]->Fill(ElDR04TkSumPt[i]/ ElCaloEnergy[i]);
1476     }
1477     // endcap
1478     if(ethNminus1(ElEcalDriven[i], ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection, ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection, ElCaloEnergy[i], ElTrkMomAtVtx[i], ElEta[i], "iso", isolation(ElDR04TkSumPt[i], ElCaloEnergy[i])) &&
1479     fabs(ElEta[i])>etaBarrelMax &&
1480     fabs(ElEta[i])<etaEndcapMax) {
1481     hn1_El_ElEthIso[1]->Fill(ElDR04TkSumPt[i]/ ElCaloEnergy[i]);
1482     }
1483     //--------------------------------------------------------------------------------------------------------------------
1484    
1485    
1486 jueugste 1.2 } //HLT_Photon10 trigger
1487 jueugste 1.1 }// pt
1488     } // delta eta
1489     } // delta phi
1490     } // H/E
1491 jueugste 1.2 } // acceptance region
1492    
1493    
1494    
1495    
1496     //--------------------------------------------------------------------------------------------------------------------
1497     //--------------------------------------------------------------------------------------------------------------------
1498     // new code with WPelectronID function
1499     //--------------------------------------------------------------------------------------------------------------------
1500     //--------------------------------------------------------------------------------------------------------------------
1501    
1502     int cut;
1503     double Pt=ElPt[i] * PtCorrection;
1504     double Eta=ElEta[i];
1505     double Phi=ElPhi[i];
1506     double Charge=ElCharge[i];
1507     double delPhi=ElDeltaPhiSuperClusterAtVtx[i]-dphiCorrections(ElEta[i], ElPhi[i]);
1508     double delEta=ElDeltaEtaSuperClusterAtVtx[i]-detaCorrections(ElEta[i], ElPhi[i]);
1509     double transMass=transverseMass(ElPt[i] * PtCorrection, PFMET, deltaPhi(ElPhi[i],metPhi));
1510     double Hoe=ElHcalOverEcal[i];
1511     double trkIso = ElDR03TkSumPt[i];
1512     double ecalIso = ElDR03EcalRecHitSumEt[i];
1513     double hcalIso = ElDR03HcalTowerSumEt[i];
1514     double combIso_B=(trkIso + max(0., ecalIso - 1.) + hcalIso) / ( ElPt[i] * PtCorrection);
1515     double combIso_E=(trkIso + ecalIso + hcalIso) / (ElPt[i] * PtCorrection);
1516     double See=ElSigmaIetaIeta[i];
1517     double missingHits=ElNumberOfMissingInnerHits[i];
1518    
1519    
1520    
1521     // check if trigger fired
1522     int Photon10 = getHLTtriggerBit("HLT_Photon10_L1R");
1523     int Photon15 = getHLTtriggerBit("HLT_Photon15_L1R");
1524     // int bit = getHLTtriggerBit("HLT_Photon10_Cleaned_L1R");
1525     int Ele15 = getHLTtriggerBit("HLT_Ele15_LW_L1R");
1526    
1527     if(HLTResults[Photon10]!=1 && HLTResults[Photon15]!=1 && HLTResults[Ele15]!=1) continue;
1528    
1529    
1530     if(Event==27837545 || Event==73939173 || Event==15512525 || Event==191815699 || Event==29377895 || Event==29377895 || Event==74868952 || Event==76643965 || Event==62016483 || Event==4352136) {
1531     cout<<"##################################"<<endl;
1532     cout<<"Event: "<<Event<<" Run: "<<Run<<endl;
1533     cout<<"Preselection: "<<ElectronPreselection(i)<<endl;
1534     cout<<"Selection: "<<WPElectronID(i, all, WorkingPointCuts)<<endl;
1535    
1536    
1537     cout<<"##################################"<<endl;
1538    
1539     }
1540    
1541     // check if electron is preselected
1542     if(ElectronPreselection(i)!=0) continue;
1543    
1544    
1545     // cout<<"acc: "<<accEta<<endl;
1546     // cout<<"eta: "<<ElEta[i]<<endl;
1547     // cout<<"SC: "<<ElSCEta[i]<<endl;
1548    
1549     // the N-1 plots
1550     if(fabs(accEta)<etaBarrelMax) {
1551     if(WPElectronID(i, see, WorkingPointCuts)==0) hn1_El_ElSigmaIetaIeta[2]->Fill(See);
1552     if(WPElectronID(i, dphi, WorkingPointCuts)==0) hn1_El_ElDeltaPhi[2]->Fill(delPhi);
1553     if(WPElectronID(i, deta, WorkingPointCuts)==0) hn1_El_ElDeltaEta[2]->Fill(delEta);
1554     if(WPElectronID(i, hoe, WorkingPointCuts)==0) hn1_El_ElHoverE[2]->Fill(Hoe);
1555     if(WPElectronID(i, combiso, WorkingPointCuts)==0) hn1_El_ElCombIso[2]->Fill(combIso_B);
1556     if(WPElectronID(i, conversion, WorkingPointCuts)==0) hn1_El_ElNumberOfMissingInnerHits[2]->Fill(missingHits);
1557     }
1558     if(fabs(accEta)>etaEndcapMin && fabs(accEta)<etaEndcapMax) {
1559     if(WPElectronID(i, see, WorkingPointCuts)==0) hn1_El_ElSigmaIetaIeta[3]->Fill(See);
1560     if(WPElectronID(i, dphi, WorkingPointCuts)==0) hn1_El_ElDeltaPhi[3]->Fill(delPhi);
1561     if(WPElectronID(i, deta, WorkingPointCuts)==0) hn1_El_ElDeltaEta[3]->Fill(delEta);
1562     if(WPElectronID(i, hoe, WorkingPointCuts)==0) hn1_El_ElHoverE[3]->Fill(Hoe);
1563     if(WPElectronID(i, combiso, WorkingPointCuts)==0) hn1_El_ElCombIso[3]->Fill(combIso_E);
1564     if(WPElectronID(i, conversion, WorkingPointCuts)==0) hn1_El_ElNumberOfMissingInnerHits[3]->Fill(missingHits);
1565     }
1566    
1567     if(WPElectronID(i, all, WorkingPointCuts)==0) {
1568     // count the number of electrons in one event
1569     electronIndex.push_back(i);
1570    
1571     fprintf(out,"%i\t%i\n",Run, Event);
1572     // cout<<"Run: "<<Run<<" Event: "<<Event<<endl;
1573    
1574     // look at the charges of the IDed electrons
1575     int cGsf=ElCharge[i];
1576     int cSc=ElScPixCharge[i];
1577    
1578     if(cGsf==cSc) cNa++;
1579     else cNb++;
1580    
1581     // check the acceptance (etc.) variables
1582     h_ElEtaVsScEta->Fill(ElEta[i], ElSCEta[i]);
1583     // h_ElPhiVsScPhi->Fill(ElPhi[i], El);
1584     TVector3 track;
1585     track.SetXYZ(ElPx[i], ElPy[i], ElPz[i]);
1586     double trackEta=track.Eta();
1587     h_ElPtVsScEt->Fill(ElPt[i] * PtCorrection , ElCaloEnergy[i]/cosh(trackEta));
1588    
1589 jueugste 1.1
1590    
1591    
1592 jueugste 1.2 }
1593    
1594    
1595    
1596    
1597    
1598    
1599     // the sequential counting and filling
1600     // preselection
1601     counter[0]++;
1602     // split in barrel and endcap
1603     if(fabs(accEta)<etaBarrelMax) {
1604     // preselected in barrel
1605     counter[1]++;
1606     //fillIt(i, 20);
1607     // fill the (right) histos
1608     cut=20;
1609     hs_El_ElPt[cut]->Fill(Pt);
1610     hs_El_ElEta[cut]->Fill(Eta);
1611     hs_El_ElPhi[cut]->Fill(Phi);
1612     hs_El_ElCharge[cut]->Fill(Charge);
1613     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1614     hs_El_ElDeltaEta[cut]->Fill(delEta);
1615     hs_El_ElTransMass[cut]->Fill(transMass);
1616     hs_El_ElHoverE[cut]->Fill(Hoe);
1617     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1618     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1619     hs_El_ElCombIso[cut]->Fill(combIso_B);
1620     // hs_El_ElMet[cut]
1621     // hs_El_ElOneOverEminusOneOverP[cut]
1622     // hs_El_ElEthIso[cut]
1623     // hs_El_ElTrkIso[cut]
1624     // hs_El_ElEcalIso[cut]
1625     // hs_El_ElHcalIso[cut]
1626    
1627     // after see cut
1628     if(WPElectronID(i, all, WorkingPointCuts)>1 || WPElectronID(i, all, WorkingPointCuts)==0) {
1629     counter[2]++;
1630     cut=21;
1631     hs_El_ElPt[cut]->Fill(Pt);
1632     hs_El_ElEta[cut]->Fill(Eta);
1633     hs_El_ElPhi[cut]->Fill(Phi);
1634     hs_El_ElCharge[cut]->Fill(Charge);
1635     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1636     hs_El_ElDeltaEta[cut]->Fill(delEta);
1637     hs_El_ElTransMass[cut]->Fill(transMass);
1638     hs_El_ElHoverE[cut]->Fill(Hoe);
1639     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1640     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1641     hs_El_ElCombIso[cut]->Fill(combIso_B);
1642     }
1643    
1644     // after dphi
1645     if(WPElectronID(i, all, WorkingPointCuts)>2 || WPElectronID(i, all, WorkingPointCuts)==0) {
1646     counter[3]++;
1647     cut=22;
1648     hs_El_ElPt[cut]->Fill(Pt);
1649     hs_El_ElEta[cut]->Fill(Eta);
1650     hs_El_ElPhi[cut]->Fill(Phi);
1651     hs_El_ElCharge[cut]->Fill(Charge);
1652     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1653     hs_El_ElDeltaEta[cut]->Fill(delEta);
1654     hs_El_ElTransMass[cut]->Fill(transMass);
1655     hs_El_ElHoverE[cut]->Fill(Hoe);
1656     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1657     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1658     hs_El_ElCombIso[cut]->Fill(combIso_B);
1659     }
1660     // after deta
1661     if(WPElectronID(i, all, WorkingPointCuts)>3 || WPElectronID(i, all, WorkingPointCuts)==0) {
1662     counter[4]++;
1663     cut=23;
1664     hs_El_ElPt[cut]->Fill(Pt);
1665     hs_El_ElEta[cut]->Fill(Eta);
1666     hs_El_ElPhi[cut]->Fill(Phi);
1667     hs_El_ElCharge[cut]->Fill(Charge);
1668     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1669     hs_El_ElDeltaEta[cut]->Fill(delEta);
1670     hs_El_ElTransMass[cut]->Fill(transMass);
1671     hs_El_ElHoverE[cut]->Fill(Hoe);
1672     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1673     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1674     hs_El_ElCombIso[cut]->Fill(combIso_B);
1675     }
1676     // after hoe
1677     if(WPElectronID(i, all, WorkingPointCuts)>4 || WPElectronID(i, all, WorkingPointCuts)==0) {
1678     counter[5]++;
1679     cut=24;
1680     hs_El_ElPt[cut]->Fill(Pt);
1681     hs_El_ElEta[cut]->Fill(Eta);
1682     hs_El_ElPhi[cut]->Fill(Phi);
1683     hs_El_ElCharge[cut]->Fill(Charge);
1684     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1685     hs_El_ElDeltaEta[cut]->Fill(delEta);
1686     hs_El_ElTransMass[cut]->Fill(transMass);
1687     hs_El_ElHoverE[cut]->Fill(Hoe);
1688     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1689     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1690     hs_El_ElCombIso[cut]->Fill(combIso_B);
1691     }
1692     // after iso
1693     if(WPElectronID(i, all, WorkingPointCuts)>5 || WPElectronID(i, all, WorkingPointCuts)==0) {
1694     counter[6]++;
1695     cut=25;
1696     hs_El_ElPt[cut]->Fill(Pt);
1697     hs_El_ElEta[cut]->Fill(Eta);
1698     hs_El_ElPhi[cut]->Fill(Phi);
1699     hs_El_ElCharge[cut]->Fill(Charge);
1700     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1701     hs_El_ElDeltaEta[cut]->Fill(delEta);
1702     hs_El_ElTransMass[cut]->Fill(transMass);
1703     hs_El_ElHoverE[cut]->Fill(Hoe);
1704     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1705     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1706     hs_El_ElCombIso[cut]->Fill(combIso_B);
1707     }
1708     // after conversion == total IDed
1709     if(WPElectronID(i, all, WorkingPointCuts)==0) {
1710     counter[7]++;
1711     cut=26;
1712     hs_El_ElPt[cut]->Fill(Pt);
1713     hs_El_ElEta[cut]->Fill(Eta);
1714     hs_El_ElPhi[cut]->Fill(Phi);
1715     hs_El_ElCharge[cut]->Fill(Charge);
1716     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1717     hs_El_ElDeltaEta[cut]->Fill(delEta);
1718     hs_El_ElTransMass[cut]->Fill(transMass);
1719     hs_El_ElHoverE[cut]->Fill(Hoe);
1720     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1721     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1722     hs_El_ElCombIso[cut]->Fill(combIso_B);
1723     }
1724     } //barrel
1725     if(fabs(accEta)>etaEndcapMin && fabs(accEta)<etaEndcapMax) {
1726     // preselected in endcaps
1727     counter[8]++;
1728     cut=27;
1729     hs_El_ElPt[cut]->Fill(Pt);
1730     hs_El_ElEta[cut]->Fill(Eta);
1731     hs_El_ElPhi[cut]->Fill(Phi);
1732     hs_El_ElCharge[cut]->Fill(Charge);
1733     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1734     hs_El_ElDeltaEta[cut]->Fill(delEta);
1735     hs_El_ElTransMass[cut]->Fill(transMass);
1736     hs_El_ElHoverE[cut]->Fill(Hoe);
1737     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1738     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1739     hs_El_ElCombIso[cut]->Fill(combIso_E);
1740    
1741     // after see cut
1742     if(WPElectronID(i, all, WorkingPointCuts)>1 || WPElectronID(i, all, WorkingPointCuts)==0) {
1743     counter[9]++;
1744     cut=28;
1745     hs_El_ElPt[cut]->Fill(Pt);
1746     hs_El_ElEta[cut]->Fill(Eta);
1747     hs_El_ElPhi[cut]->Fill(Phi);
1748     hs_El_ElCharge[cut]->Fill(Charge);
1749     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1750     hs_El_ElDeltaEta[cut]->Fill(delEta);
1751     hs_El_ElTransMass[cut]->Fill(transMass);
1752     hs_El_ElHoverE[cut]->Fill(Hoe);
1753     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1754     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1755     hs_El_ElCombIso[cut]->Fill(combIso_E);
1756     }
1757     // after dphi
1758     if(WPElectronID(i, all, WorkingPointCuts)>2 || WPElectronID(i, all, WorkingPointCuts)==0) {
1759     counter[10]++;
1760     cut=29;
1761     hs_El_ElPt[cut]->Fill(Pt);
1762     hs_El_ElEta[cut]->Fill(Eta);
1763     hs_El_ElPhi[cut]->Fill(Phi);
1764     hs_El_ElCharge[cut]->Fill(Charge);
1765     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1766     hs_El_ElDeltaEta[cut]->Fill(delEta);
1767     hs_El_ElTransMass[cut]->Fill(transMass);
1768     hs_El_ElHoverE[cut]->Fill(Hoe);
1769     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1770     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1771     hs_El_ElCombIso[cut]->Fill(combIso_E);
1772     }
1773     // after deta
1774     if(WPElectronID(i, all, WorkingPointCuts)>3 || WPElectronID(i, all, WorkingPointCuts)==0) {
1775     counter[11]++;
1776     cut=30;
1777     hs_El_ElPt[cut]->Fill(Pt);
1778     hs_El_ElEta[cut]->Fill(Eta);
1779     hs_El_ElPhi[cut]->Fill(Phi);
1780     hs_El_ElCharge[cut]->Fill(Charge);
1781     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1782     hs_El_ElDeltaEta[cut]->Fill(delEta);
1783     hs_El_ElTransMass[cut]->Fill(transMass);
1784     hs_El_ElHoverE[cut]->Fill(Hoe);
1785     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1786     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1787     hs_El_ElCombIso[cut]->Fill(combIso_E);
1788     }
1789     // after hoe
1790     if(WPElectronID(i, all, WorkingPointCuts)>4 || WPElectronID(i, all, WorkingPointCuts)==0) {
1791     counter[12]++;
1792     cut=31;
1793     hs_El_ElPt[cut]->Fill(Pt);
1794     hs_El_ElEta[cut]->Fill(Eta);
1795     hs_El_ElPhi[cut]->Fill(Phi);
1796     hs_El_ElCharge[cut]->Fill(Charge);
1797     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1798     hs_El_ElDeltaEta[cut]->Fill(delEta);
1799     hs_El_ElTransMass[cut]->Fill(transMass);
1800     hs_El_ElHoverE[cut]->Fill(Hoe);
1801     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1802     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1803     hs_El_ElCombIso[cut]->Fill(combIso_E);
1804     }
1805     // after iso
1806     if(WPElectronID(i, all, WorkingPointCuts)>5 || WPElectronID(i, all, WorkingPointCuts)==0) {
1807     counter[13]++;
1808     cut=32;
1809     hs_El_ElPt[cut]->Fill(Pt);
1810     hs_El_ElEta[cut]->Fill(Eta);
1811     hs_El_ElPhi[cut]->Fill(Phi);
1812     hs_El_ElCharge[cut]->Fill(Charge);
1813     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1814     hs_El_ElDeltaEta[cut]->Fill(delEta);
1815     hs_El_ElTransMass[cut]->Fill(transMass);
1816     hs_El_ElHoverE[cut]->Fill(Hoe);
1817     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1818     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1819     hs_El_ElCombIso[cut]->Fill(combIso_E);
1820     }
1821     // after conversion == total IDed
1822     if(WPElectronID(i, all, WorkingPointCuts)==0) {
1823     counter[14]++;
1824     cut=33;
1825     hs_El_ElPt[cut]->Fill(Pt);
1826     hs_El_ElEta[cut]->Fill(Eta);
1827     hs_El_ElPhi[cut]->Fill(Phi);
1828     hs_El_ElCharge[cut]->Fill(Charge);
1829     hs_El_ElDeltaPhi[cut]->Fill(delPhi);
1830     hs_El_ElDeltaEta[cut]->Fill(delEta);
1831     hs_El_ElTransMass[cut]->Fill(transMass);
1832     hs_El_ElHoverE[cut]->Fill(Hoe);
1833     hs_El_ElSigmaIetaIeta[cut]->Fill(See);
1834     hs_El_ElNumberOfMissingInnerHits[cut]->Fill(missingHits);
1835     hs_El_ElCombIso[cut]->Fill(combIso_E);
1836     }
1837     } // endcaps
1838    
1839    
1840    
1841    
1842     //--------------------------------------------------------------------------------------------------------------------
1843     //--------------------------------------------------------------------------------------------------------------------
1844     //--------------------------------------------------------------------------------------------------------------------
1845    
1846    
1847 jueugste 1.1 // ID the electrons
1848     bool tightid=false;
1849     bool ethid=false;
1850     if(ElIDTight[i]==1) tightid=true;
1851     if(ethID(ElEcalDriven[i], ElDeltaPhiSuperClusterAtVtx[i] - dPhiCorrection, ElDeltaEtaSuperClusterAtVtx[i] - dEtaCorrection, ElCaloEnergy[i], ElTrkMomAtVtx[i], ElEta[i])==true) ethid=true;
1852 jueugste 1.2
1853 jueugste 1.1 // check wether the elcetrons are in the barrel or the endcaps
1854     bool isbarrel=false;
1855     bool isendcap=false;
1856     if(fabs(ElEta[i])<etaMaxBarrel) isbarrel=true;
1857     if(fabs(ElEta[i])>etaMaxBarrel && fabs(ElEta[i])<etaMaxEndcap) isendcap=true;
1858    
1859     // Isolate the electrons
1860     double isolated=false;
1861     if(isolation(ElDR04TkSumPt[i], ElCaloEnergy[i])==true) isolated=true;
1862 jueugste 1.2
1863    
1864    
1865 jueugste 1.1
1866 jueugste 1.2 // fill histos for tight ID
1867    
1868     if(tightid==true) {
1869     TLorentzVector vec;
1870     vec.SetPxPyPzE(ElPx[i],ElPy[i],ElPz[i],ElE[i]);
1871     electronsTight.push_back(vec);
1872     if(isolated==true) {
1873     electronsTightIsolated.push_back(vec);
1874     }
1875    
1876     // fill the myEvent
1877     if(vec.Pt()>ptMin) {
1878     tightElectrons.fourvector.push_back(vec);
1879     tightElectrons.charge.push_back(ElCharge[i]);
1880     if(isolated==true) tightElectrons.isolation.push_back(true);
1881     else if(isolated==false) tightElectrons.isolation.push_back(false);
1882     }
1883    
1884 jueugste 1.1 }
1885 jueugste 1.2
1886 jueugste 1.1
1887    
1888 jueugste 1.2
1889    
1890     } // loop over all electrons in one event
1891    
1892 jueugste 1.1
1893 jueugste 1.2 //--------------------------------------------------------------------------------------------------------------------
1894     // jet cleaning (new)
1895     //--------------------------------------------------------------------------------------------------------------------
1896    
1897     // the new number of jets is the size of the jetIndex vector
1898     // use that for jet veto...
1899     TLorentzVector electron;
1900     TLorentzVector jet;
1901     for(int j=0; j<NJets; j++) {
1902     if(JPt[j]<jetPtMin || fabs(JEta[j])>jetEtaMax) continue;
1903     jet.SetPxPyPzE(JPx[j],JPy[j],JPz[j],JE[j]);
1904    
1905     double deltaR=999; // have to calculate the minimal deltaR for EACH jet!
1906     for(int e=0;e<electronIndex.size();e++) {
1907     int index=electronIndex[e];
1908     electron.SetPtEtaPhiE(ElPt[index] * PtCorrection ,ElEta[index],ElPhi[index],ElE[index]);
1909    
1910     double dR=fabs(jet.DeltaR(electron));
1911     if(dR<deltaR) deltaR=dR;
1912     // cout<<"delta R: "<<deltaR<<endl;
1913     }
1914     if(deltaR<deltaRMax) continue;
1915     jetIndex.push_back(j);
1916 jueugste 1.1 }
1917 jueugste 1.2
1918    
1919     //////////////////////
1920     // now check the ordering of the jets!
1921     //////////////////////
1922    
1923    
1924     // for(int ji=0; ji<jetIndex.size; ji++) {
1925    
1926     // }
1927    
1928    
1929     //--------------------------------------------------------------------------------------------------------------------
1930    
1931    
1932     //--------------------------------------------------------------------------------------------------------------------
1933     // Tag and Probe efficiency measurement
1934     //--------------------------------------------------------------------------------------------------------------------
1935    
1936     // an event gets tagged, if it consists of one IDed and isolated electron
1937     // AND a gsf candidate with pt>20 GeV in the fiducial region
1938     // AND the invariant mass is close to the Z mass
1939 jueugste 1.1
1940 jueugste 1.2 bool isTagged=false;
1941     if(electronIndex.size()>0 && NEles>1) {
1942     for(int i=0; i<NEles; i++) {
1943     // should also cut on the invariant mass !!!!!
1944     if(i==electronIndex[0] || ElPt[i]<20 || (fabs(ElEta[i])>1.44 && fabs(ElEta[i])<1.56 )|| fabs(ElEta[i])>2.5) continue;
1945     isTagged=true;
1946 jueugste 1.1 }
1947     }
1948 jueugste 1.2 // now the Z event is tagged
1949     if(isTagged==true) {
1950     // increment the various counters
1951     N_t0++;
1952     // check the event contains two IDed electrons
1953     if(electronIndex.size()==2) N_tt++;
1954    
1955    
1956     }
1957    
1958 jueugste 1.1
1959 jueugste 1.2 //--------------------------------------------------------------------------------------------------------------------
1960 jueugste 1.1
1961    
1962    
1963 jueugste 1.2 // --------------------------------------------------------------------------------------------------------------------
1964     // Z Selection (new)
1965     // --------------------------------------------------------------------------------------------------------------------
1966     if(electronIndex.size()==2) {
1967     // calculate the invariant mass
1968     double invMass;
1969     TLorentzVector e1, e2;
1970     e1.SetPtEtaPhiE(ElPt[electronIndex[0]] * PtCorrection ,ElEta[electronIndex[0]],ElPhi[electronIndex[0]],ElE[electronIndex[0]]);
1971     e2.SetPtEtaPhiE(ElPt[electronIndex[1]] * PtCorrection ,ElEta[electronIndex[1]],ElPhi[electronIndex[1]],ElE[electronIndex[1]]);
1972     invMass = (e1+e2).M();
1973    
1974     double summedJetPt;
1975     double summedJetEta;
1976     double summedJetPhi;
1977     double recoilPt;
1978     double recoilEta;
1979     double recoilPhi;
1980    
1981     // these variables are only defined if there really are jets...
1982     TLorentzVector jsum;
1983     if(jetIndex.size()>0) {
1984     for(int ji=0; ji<jetIndex.size(); ji++) {
1985     TLorentzVector vec;
1986     vec.SetPxPyPzE(JPx[ji], JPy[ji], JPz[ji], JE[ji]);
1987     jsum=jsum+vec;
1988 jueugste 1.1 }
1989 jueugste 1.2 summedJetPt = jsum.Pt();
1990     summedJetEta = jsum.Eta();
1991     summedJetPhi = jsum.Phi();
1992     // add also the Z
1993     jsum+=e1;
1994     jsum+=e2;
1995     recoilPt = jsum.Pt();
1996     recoilEta = jsum.Eta();
1997     recoilPhi = jsum.Phi();
1998     }
1999    
2000     fprintf(out_Z,"%i \t%i \t%i \t%f \t%f \t%f \t%f \t%f\n",Run, Event, LumiSection, invMass, ElPt[electronIndex[0]], ElPt[electronIndex[1]], (e1+e2).Pt(), summedJetPt);
2001    
2002     h_Z_invMass[0]->Fill(invMass);
2003     h_Z_ptAll[0]->Fill(ElPt[electronIndex[0]]);
2004     h_Z_ptAll[0]->Fill(ElPt[electronIndex[1]]);
2005     h_Z_etaAll[0]->Fill(ElEta[electronIndex[0]]);
2006     h_Z_etaAll[0]->Fill(ElEta[electronIndex[1]]);
2007     h_Z_phiAll[0]->Fill(ElPhi[electronIndex[0]]);
2008     h_Z_phiAll[0]->Fill(ElPhi[electronIndex[1]]);
2009     h_Z_deltaPhi[0]->Fill(deltaPhi(ElPhi[electronIndex[0]], ElPhi[electronIndex[1]]));
2010     h_Z_ptDiLepton[0]->Fill((e1+e2).Pt());
2011     h_Z_etaDiLepton[0]->Fill((e1+e2).Eta());
2012     h_Z_phiDiLepton[0]->Fill((e1+e2).Phi());
2013    
2014     // now variables with "jetty" content
2015    
2016     h_Z_nJets[0]->Fill(jetIndex.size());
2017     if(jetIndex.size()>0) {
2018     h_Z_leadingJetPt[0]->Fill(JPt[jetIndex[0]]);
2019     h_Z_leadingJetEta[0]->Fill(JEta[jetIndex[0]]);
2020     h_Z_leadingJetPhi[0]->Fill(JPhi[jetIndex[0]]);
2021     h_Z_summedJetPt[0]->Fill(summedJetPt);
2022     h_Z_summedJetEta[0]->Fill(summedJetEta);
2023     h_Z_summedJetPhi[0]->Fill(summedJetPhi);
2024    
2025     h_Z_leadingJetDeltaPt[0]->Fill(JPt[jetIndex[0]] - (e1+e2).Pt());
2026     h_Z_leadingJetDeltaEta[0]->Fill(JEta[jetIndex[0]] - (e1+e2).Eta());
2027     h_Z_leadingJetDeltaPhi[0]->Fill(deltaPhi(JPhi[jetIndex[0]],(e1+e2).Phi()));
2028     h_Z_summedJetDeltaPt[0]->Fill(summedJetPt - (e1+e2).Pt());
2029     h_Z_summedJetDeltaEta[0]->Fill(summedJetEta - (e1+e2).Eta());
2030     h_Z_summedJetDeltaPhi[0]->Fill(deltaPhi(summedJetPhi, (e1+e2).Phi()));
2031    
2032     h_Z_recoilPt[0]->Fill(recoilPt);
2033     h_Z_recoilEta[0]->Fill(recoilEta);
2034     h_Z_recoilPhi[0]->Fill(recoilPhi);
2035     h_Z_metPt[0]->Fill(met);
2036     // h_Z_metEta[0]->Fill(metEta);
2037     h_Z_metPhi[0]->Fill(metPhi);
2038     }
2039    
2040    
2041    
2042     // check both in barrel
2043     if(fabs(ElEta[electronIndex[0]]) < etaBarrelMax && fabs(ElEta[electronIndex[1]]) < etaBarrelMax) {
2044     h_Z_invMass[1]->Fill(invMass);
2045    
2046     h_Z_ptAll[1]->Fill(ElPt[electronIndex[0]]);
2047     h_Z_ptAll[1]->Fill(ElPt[electronIndex[1]]);
2048     h_Z_etaAll[1]->Fill(ElEta[electronIndex[0]]);
2049     h_Z_etaAll[1]->Fill(ElEta[electronIndex[1]]);
2050     h_Z_phiAll[1]->Fill(ElPhi[electronIndex[0]]);
2051     h_Z_phiAll[1]->Fill(ElPhi[electronIndex[1]]);
2052     h_Z_deltaPhi[1]->Fill(deltaPhi(ElPhi[electronIndex[0]], ElPhi[electronIndex[1]]));
2053     h_Z_ptDiLepton[1]->Fill((e1+e2).Pt());
2054     h_Z_etaDiLepton[1]->Fill((e1+e2).Eta());
2055     h_Z_phiDiLepton[1]->Fill((e1+e2).Phi());
2056    
2057     // now variables with "jetty" content
2058     h_Z_nJets[1]->Fill(jetIndex.size());
2059     if(jetIndex.size()>0) {
2060     h_Z_leadingJetPt[1]->Fill(JPt[jetIndex[0]]);
2061     h_Z_leadingJetEta[1]->Fill(JEta[jetIndex[0]]);
2062     h_Z_leadingJetPhi[1]->Fill(JPhi[jetIndex[0]]);
2063     h_Z_summedJetPt[1]->Fill(summedJetPt);
2064     h_Z_summedJetEta[1]->Fill(summedJetEta);
2065     h_Z_summedJetPhi[1]->Fill(summedJetPhi);
2066    
2067     h_Z_leadingJetDeltaPt[1]->Fill(JPt[jetIndex[0]] - (e1+e2).Pt());
2068     h_Z_leadingJetDeltaEta[1]->Fill(JEta[jetIndex[0]] - (e1+e2).Eta());
2069     h_Z_leadingJetDeltaPhi[1]->Fill(deltaPhi(JPhi[jetIndex[0]],(e1+e2).Phi()));
2070     h_Z_summedJetDeltaPt[1]->Fill(summedJetPt - (e1+e2).Pt());
2071     h_Z_summedJetDeltaEta[1]->Fill(summedJetEta - (e1+e2).Eta());
2072     h_Z_summedJetDeltaPhi[1]->Fill(deltaPhi(summedJetPhi, (e1+e2).Phi()));
2073    
2074     h_Z_recoilPt[1]->Fill(recoilPt);
2075     h_Z_recoilEta[1]->Fill(recoilEta);
2076     h_Z_recoilPhi[1]->Fill(recoilPhi);
2077     h_Z_metPt[1]->Fill(met);
2078     // h_Z_metEta[1]->Fill(metEta);
2079     h_Z_metPhi[1]->Fill(metPhi);
2080 jueugste 1.1 }
2081    
2082    
2083    
2084 jueugste 1.2 }
2085     // check both in endcaps
2086     if(fabs(ElEta[electronIndex[0]]) > etaBarrelMax && fabs(ElEta[electronIndex[1]]) > etaBarrelMax) {
2087     h_Z_invMass[2]->Fill(invMass);
2088    
2089     h_Z_ptAll[2]->Fill(ElPt[electronIndex[0]]);
2090     h_Z_ptAll[2]->Fill(ElPt[electronIndex[1]]);
2091     h_Z_etaAll[2]->Fill(ElEta[electronIndex[0]]);
2092     h_Z_etaAll[2]->Fill(ElEta[electronIndex[1]]);
2093     h_Z_phiAll[2]->Fill(ElPhi[electronIndex[0]]);
2094     h_Z_phiAll[2]->Fill(ElPhi[electronIndex[1]]);
2095     h_Z_deltaPhi[2]->Fill(deltaPhi(ElPhi[electronIndex[0]], ElPhi[electronIndex[1]]));
2096     h_Z_ptDiLepton[2]->Fill((e1+e2).Pt());
2097     h_Z_etaDiLepton[2]->Fill((e1+e2).Eta());
2098     h_Z_phiDiLepton[2]->Fill((e1+e2).Phi());
2099    
2100     // now variables with "jetty" content
2101     h_Z_nJets[2]->Fill(jetIndex.size());
2102     if(jetIndex.size()>0) {
2103     h_Z_leadingJetPt[2]->Fill(JPt[jetIndex[0]]);
2104     h_Z_leadingJetEta[2]->Fill(JEta[jetIndex[0]]);
2105     h_Z_leadingJetPhi[2]->Fill(JPhi[jetIndex[0]]);
2106     h_Z_summedJetPt[2]->Fill(summedJetPt);
2107     h_Z_summedJetEta[2]->Fill(summedJetEta);
2108     h_Z_summedJetPhi[2]->Fill(summedJetPhi);
2109    
2110     h_Z_leadingJetDeltaPt[2]->Fill(JPt[jetIndex[0]] - (e1+e2).Pt());
2111     h_Z_leadingJetDeltaEta[2]->Fill(JEta[jetIndex[0]] - (e1+e2).Eta());
2112     h_Z_leadingJetDeltaPhi[2]->Fill(deltaPhi(JPhi[jetIndex[0]],(e1+e2).Phi()));
2113     h_Z_summedJetDeltaPt[2]->Fill(summedJetPt - (e1+e2).Pt());
2114     h_Z_summedJetDeltaEta[2]->Fill(summedJetEta - (e1+e2).Eta());
2115     h_Z_summedJetDeltaPhi[2]->Fill(deltaPhi(summedJetPhi, (e1+e2).Phi()));
2116    
2117     h_Z_recoilPt[2]->Fill(recoilPt);
2118     h_Z_recoilEta[2]->Fill(recoilEta);
2119     h_Z_recoilPhi[2]->Fill(recoilPhi);
2120     h_Z_metPt[2]->Fill(met);
2121     // h_Z_metEta[2]->Fill(metEta);
2122     h_Z_metPhi[2]->Fill(metPhi);
2123     }
2124    
2125     }
2126     // check one in barrel the other in endcap
2127     if((fabs(ElEta[electronIndex[0]]) < etaBarrelMax && fabs(ElEta[electronIndex[1]]) > etaBarrelMax) ||
2128     (fabs(ElEta[electronIndex[1]]) < etaBarrelMax && fabs(ElEta[electronIndex[0]]) > etaBarrelMax) ) {
2129     h_Z_invMass[3]->Fill(invMass);
2130    
2131     h_Z_ptAll[3]->Fill(ElPt[electronIndex[0]]);
2132     h_Z_ptAll[3]->Fill(ElPt[electronIndex[1]]);
2133     h_Z_etaAll[3]->Fill(ElEta[electronIndex[0]]);
2134     h_Z_etaAll[3]->Fill(ElEta[electronIndex[1]]);
2135     h_Z_phiAll[3]->Fill(ElPhi[electronIndex[0]]);
2136     h_Z_phiAll[3]->Fill(ElPhi[electronIndex[1]]);
2137     h_Z_deltaPhi[3]->Fill(deltaPhi(ElPhi[electronIndex[0]], ElPhi[electronIndex[1]]));
2138     h_Z_ptDiLepton[3]->Fill((e1+e2).Pt());
2139     h_Z_etaDiLepton[3]->Fill((e1+e2).Eta());
2140     h_Z_phiDiLepton[3]->Fill((e1+e2).Phi());
2141    
2142     // now variables with "jetty" content
2143     h_Z_nJets[3]->Fill(jetIndex.size());
2144     if(jetIndex.size()>0) {
2145     h_Z_leadingJetPt[3]->Fill(JPt[jetIndex[0]]);
2146     h_Z_leadingJetEta[3]->Fill(JEta[jetIndex[0]]);
2147     h_Z_leadingJetPhi[3]->Fill(JPhi[jetIndex[0]]);
2148     h_Z_summedJetPt[3]->Fill(summedJetPt);
2149     h_Z_summedJetEta[3]->Fill(summedJetEta);
2150     h_Z_summedJetPhi[3]->Fill(summedJetPhi);
2151    
2152     h_Z_leadingJetDeltaPt[3]->Fill(JPt[jetIndex[0]] - (e1+e2).Pt());
2153     h_Z_leadingJetDeltaEta[3]->Fill(JEta[jetIndex[0]] - (e1+e2).Eta());
2154     h_Z_leadingJetDeltaPhi[3]->Fill(deltaPhi(JPhi[jetIndex[0]],(e1+e2).Phi()));
2155     h_Z_summedJetDeltaPt[3]->Fill(summedJetPt - (e1+e2).Pt());
2156     h_Z_summedJetDeltaEta[3]->Fill(summedJetEta - (e1+e2).Eta());
2157     h_Z_summedJetDeltaPhi[3]->Fill(deltaPhi(summedJetPhi, (e1+e2).Phi()));
2158    
2159     h_Z_recoilPt[3]->Fill(recoilPt);
2160     h_Z_recoilEta[3]->Fill(recoilEta);
2161     h_Z_recoilPhi[3]->Fill(recoilPhi);
2162     h_Z_metPt[3]->Fill(met);
2163     // h_Z_metEta[3]->Fill(metEta);
2164     h_Z_metPhi[3]->Fill(metPhi);
2165     }
2166     }
2167 jueugste 1.1
2168    
2169 jueugste 1.2 // debug++;
2170 jueugste 1.1 }
2171 jueugste 1.2 // --------------------------------------------------------------------------------------------------------------------
2172 jueugste 1.1
2173 jueugste 1.2
2174     // //--------------------------------------------------------------------------------------------------------------------
2175     // // jet cleaning (new)
2176     // //--------------------------------------------------------------------------------------------------------------------
2177    
2178     // // the new number of jets is the size of the jetIndex vector
2179     // // use that for jet veto...
2180     // TLorentzVector electron;
2181     // TLorentzVector jet;
2182     // double deltaR=999;
2183     // for(int j=0; j<NJets; j++) {
2184     // if(JPt[j]<jetPtMin || fabs(JEta[j])>jetEtaMax) continue;
2185     // jet.SetPxPyPzE(JPx[j],JPy[j],JPz[j],JE[j]);
2186    
2187     // for(int e=0;e<electronIndex.size();e++) {
2188     // int index=electronIndex[e];
2189     // electron.SetPtEtaPhiE(ElPt[index] * PtCorrection ,ElEta[index],ElPhi[index],ElE[index]);
2190    
2191    
2192     // deltaR=jet.DeltaR(electron);
2193     // // cout<<deltaR<<endl;
2194     // }
2195     // if(deltaR<deltaRMax) continue;
2196     // jetIndex.push_back(j);
2197     // }
2198    
2199     // //--------------------------------------------------------------------------------------------------------------------
2200 jueugste 1.1
2201    
2202    
2203 jueugste 1.2 //--------------------------------------------------------------------------------------------------------------------
2204     // W selection (new)
2205     //--------------------------------------------------------------------------------------------------------------------
2206     if(electronIndex.size()==1) {
2207 jueugste 1.1
2208    
2209 jueugste 1.2 int Wcut;
2210     double dphiMax=2.8;
2211     double delPhiMet=deltaPhi(ElPhi[electronIndex[0]], PFMETphi);
2212     double Mt=transverseMass(ElPt[electronIndex[0]] * PtCorrection, met, delPhiMet);
2213     double Pt=ElPt[electronIndex[0]] * PtCorrection;
2214     double Eta=ElEta[electronIndex[0]];
2215     double Phi=ElPhi[electronIndex[0]];
2216     double Charge=ElCharge[electronIndex[0]];
2217     int Njets=jetIndex.size();
2218 jueugste 1.1
2219 jueugste 1.2 ///////////////////
2220     // plots for barrel
2221     ///////////////////
2222 jueugste 1.1
2223    
2224 jueugste 1.2 // if(WSelection(electronIndex[0], full)==0) {
2225     // fprintf(out,"%i\t%i\n",Run, Event);
2226     // cout<<"Run: "<<Run<<" Event: "<<Event<<endl;
2227     // }
2228 jueugste 1.1
2229    
2230    
2231 jueugste 1.2 if(fabs(ElEta[electronIndex[0]])<etaBarrelMax) {
2232 jueugste 1.1
2233 jueugste 1.2 ///////////
2234     // N jets
2235     //////////
2236    
2237     // fill plots after preselection
2238     if(WSelection(electronIndex[0], full)>1 || WSelection(electronIndex[0], full)==0) {
2239     Wcounter[0]++;
2240     Wcut=0;
2241     hs_W_ElTransMass[Wcut]->Fill(Mt);
2242     hs_W_ElPt[Wcut]->Fill(Pt);
2243     hs_W_ElEta[Wcut]->Fill(Eta);
2244     // hs_W_ElDeltaPhi[Wcut]->Fill();
2245     hs_W_ElMet[Wcut]->Fill(met);
2246     hs_W_ElCharge[Wcut]->Fill(Charge);
2247     hs_W_Njets[Wcut]->Fill(njets);
2248     hs_W_ElPhi[Wcut]->Fill(Phi);
2249     }
2250 jueugste 1.1
2251 jueugste 1.2 // fill N-1 plots
2252 jueugste 1.1
2253 jueugste 1.2 if(WSelection(electronIndex[0], misset)==0) {
2254     Wcut=1;
2255     hs_W_ElTransMass[Wcut]->Fill(Mt);
2256     hs_W_ElPt[Wcut]->Fill(Pt);
2257     hs_W_ElEta[Wcut]->Fill(Eta);
2258     // hs_W_ElDeltaPhi[Wcut]->Fill();
2259     hs_W_ElMet[Wcut]->Fill(met);
2260     hs_W_ElCharge[Wcut]->Fill(Charge);
2261     hs_W_Njets[Wcut]->Fill(njets);
2262     hs_W_ElPhi[Wcut]->Fill(Phi);
2263     }
2264     if(WSelection(electronIndex[0], pt)==0) {
2265     Wcut=2;
2266     hs_W_ElTransMass[Wcut]->Fill(Mt);
2267     hs_W_ElPt[Wcut]->Fill(Pt);
2268     hs_W_ElEta[Wcut]->Fill(Eta);
2269     // hs_W_ElDeltaPhi[Wcut]->Fill();
2270     hs_W_ElMet[Wcut]->Fill(met);
2271     hs_W_ElCharge[Wcut]->Fill(Charge);
2272     hs_W_Njets[Wcut]->Fill(njets);
2273     hs_W_ElPhi[Wcut]->Fill(Phi);
2274     }
2275     if(WSelection(electronIndex[0], mt)==0) {
2276     Wcut=3;
2277     hs_W_ElTransMass[Wcut]->Fill(Mt);
2278     hs_W_ElPt[Wcut]->Fill(Pt);
2279     hs_W_ElEta[Wcut]->Fill(Eta);
2280     // hs_W_ElDeltaPhi[Wcut]->Fill();
2281     hs_W_ElMet[Wcut]->Fill(met);
2282     hs_W_ElCharge[Wcut]->Fill(Charge);
2283     hs_W_Njets[Wcut]->Fill(njets);
2284     hs_W_ElPhi[Wcut]->Fill(Phi);
2285     }
2286     if(WSelection(electronIndex[0], full)==0) {
2287     Wcounter[1]++;
2288     Wcut=4;
2289     hs_W_ElTransMass[Wcut]->Fill(Mt);
2290     hs_W_ElPt[Wcut]->Fill(Pt);
2291     hs_W_ElEta[Wcut]->Fill(Eta);
2292     // hs_W_ElDeltaPhi[Wcut]->Fill();
2293     hs_W_ElMet[Wcut]->Fill(met);
2294     hs_W_ElCharge[Wcut]->Fill(Charge);
2295     hs_W_Njets[Wcut]->Fill(njets);
2296     hs_W_ElPhi[Wcut]->Fill(Phi);
2297     // split charge
2298     if(Charge==1) {
2299     Wcounter[2]++;
2300     Wcut=5 ;
2301     hs_W_ElTransMass[Wcut]->Fill(Mt);
2302     hs_W_ElPt[Wcut]->Fill(Pt);
2303     hs_W_ElEta[Wcut]->Fill(Eta);
2304     // hs_W_ElDeltaPhi[Wcut]->Fill();
2305     hs_W_ElMet[Wcut]->Fill(met);
2306     hs_W_ElCharge[Wcut]->Fill(Charge);
2307     hs_W_Njets[Wcut]->Fill(njets);
2308     hs_W_ElPhi[Wcut]->Fill(Phi);
2309     }
2310     else if(Charge==-1) {
2311     Wcounter[3]++;
2312     Wcut=6 ;
2313     hs_W_ElTransMass[Wcut]->Fill(Mt);
2314     hs_W_ElPt[Wcut]->Fill(Pt);
2315     hs_W_ElEta[Wcut]->Fill(Eta);
2316     // hs_W_ElDeltaPhi[Wcut]->Fill();
2317     hs_W_ElMet[Wcut]->Fill(met);
2318     hs_W_ElCharge[Wcut]->Fill(Charge);
2319     hs_W_Njets[Wcut]->Fill(njets);
2320     hs_W_ElPhi[Wcut]->Fill(Phi);
2321     } // charge
2322     } // W selection
2323    
2324 jueugste 1.1
2325 jueugste 1.2 ///////////
2326     // 0 jets
2327     //////////
2328    
2329     if(njets==0) {
2330    
2331     // fill plots after preselection
2332     if(WSelection(electronIndex[0], full)>1 || WSelection(electronIndex[0], full)==0) {
2333     Wcounter[4]++;
2334     Wcut=7;
2335     hs_W_ElTransMass[Wcut]->Fill(Mt);
2336     hs_W_ElPt[Wcut]->Fill(Pt);
2337     hs_W_ElEta[Wcut]->Fill(Eta);
2338     // hs_W_ElDeltaPhi[Wcut]->Fill();
2339     hs_W_ElMet[Wcut]->Fill(met);
2340     hs_W_ElCharge[Wcut]->Fill(Charge);
2341     hs_W_Njets[Wcut]->Fill(njets);
2342     hs_W_ElPhi[Wcut]->Fill(Phi);
2343     }
2344    
2345     // fill N-1 plots
2346    
2347     if(WSelection(electronIndex[0], misset)==0) {
2348     Wcut=8;
2349     hs_W_ElTransMass[Wcut]->Fill(Mt);
2350     hs_W_ElPt[Wcut]->Fill(Pt);
2351     hs_W_ElEta[Wcut]->Fill(Eta);
2352     // hs_W_ElDeltaPhi[Wcut]->Fill();
2353     hs_W_ElMet[Wcut]->Fill(met);
2354     hs_W_ElCharge[Wcut]->Fill(Charge);
2355     hs_W_Njets[Wcut]->Fill(njets);
2356     hs_W_ElPhi[Wcut]->Fill(Phi);
2357     }
2358     if(WSelection(electronIndex[0], pt)==0) {
2359     Wcut=9;
2360     hs_W_ElTransMass[Wcut]->Fill(Mt);
2361     hs_W_ElPt[Wcut]->Fill(Pt);
2362     hs_W_ElEta[Wcut]->Fill(Eta);
2363     // hs_W_ElDeltaPhi[Wcut]->Fill();
2364     hs_W_ElMet[Wcut]->Fill(met);
2365     hs_W_ElCharge[Wcut]->Fill(Charge);
2366     hs_W_Njets[Wcut]->Fill(njets);
2367     hs_W_ElPhi[Wcut]->Fill(Phi);
2368     }
2369     if(WSelection(electronIndex[0], mt)==0) {
2370     Wcut=10;
2371     hs_W_ElTransMass[Wcut]->Fill(Mt);
2372     hs_W_ElPt[Wcut]->Fill(Pt);
2373     hs_W_ElEta[Wcut]->Fill(Eta);
2374     // hs_W_ElDeltaPhi[Wcut]->Fill();
2375     hs_W_ElMet[Wcut]->Fill(met);
2376     hs_W_ElCharge[Wcut]->Fill(Charge);
2377     hs_W_Njets[Wcut]->Fill(njets);
2378     hs_W_ElPhi[Wcut]->Fill(Phi);
2379     }
2380     if(WSelection(electronIndex[0], full)==0) {
2381     Wcounter[5]++;
2382     Wcut=11;
2383     hs_W_ElTransMass[Wcut]->Fill(Mt);
2384     hs_W_ElPt[Wcut]->Fill(Pt);
2385     hs_W_ElEta[Wcut]->Fill(Eta);
2386     // hs_W_ElDeltaPhi[Wcut]->Fill();
2387     hs_W_ElMet[Wcut]->Fill(met);
2388     hs_W_ElCharge[Wcut]->Fill(Charge);
2389     hs_W_Njets[Wcut]->Fill(njets);
2390     hs_W_ElPhi[Wcut]->Fill(Phi);
2391    
2392     // split charge
2393     if(Charge==1) {
2394     Wcounter[6]++;
2395     Wcut=12;
2396     hs_W_ElTransMass[Wcut]->Fill(Mt);
2397     hs_W_ElPt[Wcut]->Fill(Pt);
2398     hs_W_ElEta[Wcut]->Fill(Eta);
2399     // hs_W_ElDeltaPhi[Wcut]->Fill();
2400     hs_W_ElMet[Wcut]->Fill(met);
2401     hs_W_ElCharge[Wcut]->Fill(Charge);
2402     hs_W_Njets[Wcut]->Fill(njets);
2403     hs_W_ElPhi[Wcut]->Fill(Phi);
2404     }
2405     else if(Charge==-1) {
2406     Wcounter[7]++;
2407     Wcut=13;
2408     hs_W_ElTransMass[Wcut]->Fill(Mt);
2409     hs_W_ElPt[Wcut]->Fill(Pt);
2410     hs_W_ElEta[Wcut]->Fill(Eta);
2411     // hs_W_ElDeltaPhi[Wcut]->Fill();
2412     hs_W_ElMet[Wcut]->Fill(met);
2413     hs_W_ElCharge[Wcut]->Fill(Charge);
2414     hs_W_Njets[Wcut]->Fill(njets);
2415     hs_W_ElPhi[Wcut]->Fill(Phi);
2416     }
2417     } // W selection
2418     } // 0 jets
2419 jueugste 1.1
2420 jueugste 1.2 ///////////
2421     // 1 jet
2422     //////////
2423    
2424     if(njets==1) {
2425    
2426     // fill plots after preselection
2427     if(WSelection(electronIndex[0], full)>1 || WSelection(electronIndex[0], full)==0) {
2428     Wcounter[8]++;
2429     Wcut=14;
2430     hs_W_ElTransMass[Wcut]->Fill(Mt);
2431     hs_W_ElPt[Wcut]->Fill(Pt);
2432     hs_W_ElEta[Wcut]->Fill(Eta);
2433     // hs_W_ElDeltaPhi[Wcut]->Fill();
2434     hs_W_ElMet[Wcut]->Fill(met);
2435     hs_W_ElCharge[Wcut]->Fill(Charge);
2436     hs_W_Njets[Wcut]->Fill(njets);
2437     hs_W_ElPhi[Wcut]->Fill(Phi);
2438     }
2439    
2440     // fill N-1 plots
2441    
2442     // leaving the delta phi Wcut
2443     double dphi = deltaPhi(ElPhi[electronIndex[0]], JPhi[jetIndex[0]]);
2444     if(WSelection(electronIndex[0], full)==0) {
2445     Wcut=15;
2446     hs_W_ElTransMass[Wcut]->Fill(Mt);
2447     hs_W_ElPt[Wcut]->Fill(Pt);
2448     hs_W_ElEta[Wcut]->Fill(Eta);
2449     hs_W_ElDeltaPhi[Wcut]->Fill(dphi);
2450     hs_W_ElMet[Wcut]->Fill(met);
2451     hs_W_ElCharge[Wcut]->Fill(Charge);
2452     hs_W_Njets[Wcut]->Fill(njets);
2453     hs_W_ElPhi[Wcut]->Fill(Phi);
2454     }
2455 jueugste 1.1
2456 jueugste 1.2 // now I have to apply the delta phi Wcut!
2457    
2458     if(fabs(dphi)<dphiMax) {
2459    
2460     if(WSelection(electronIndex[0], misset)==0) {
2461     Wcut=16;
2462     hs_W_ElTransMass[Wcut]->Fill(Mt);
2463     hs_W_ElPt[Wcut]->Fill(Pt);
2464     hs_W_ElEta[Wcut]->Fill(Eta);
2465     hs_W_ElDeltaPhi[Wcut]->Fill(dphi);
2466     hs_W_ElMet[Wcut]->Fill(met);
2467     hs_W_ElCharge[Wcut]->Fill(Charge);
2468     hs_W_Njets[Wcut]->Fill(njets);
2469     hs_W_ElPhi[Wcut]->Fill(Phi);
2470     }
2471     if(WSelection(electronIndex[0], pt)==0) {
2472     Wcut=17;
2473     hs_W_ElTransMass[Wcut]->Fill(Mt);
2474     hs_W_ElPt[Wcut]->Fill(Pt);
2475     hs_W_ElEta[Wcut]->Fill(Eta);
2476     hs_W_ElDeltaPhi[Wcut]->Fill(dphi);
2477     hs_W_ElMet[Wcut]->Fill(met);
2478     hs_W_ElCharge[Wcut]->Fill(Charge);
2479     hs_W_Njets[Wcut]->Fill(njets);
2480     hs_W_ElPhi[Wcut]->Fill(Phi);
2481     }
2482     if(WSelection(electronIndex[0], mt)==0) {
2483     Wcut=18;
2484     hs_W_ElTransMass[Wcut]->Fill(Mt);
2485     hs_W_ElPt[Wcut]->Fill(Pt);
2486     hs_W_ElEta[Wcut]->Fill(Eta);
2487     hs_W_ElDeltaPhi[Wcut]->Fill(dphi);
2488     hs_W_ElMet[Wcut]->Fill(met);
2489     hs_W_ElCharge[Wcut]->Fill(Charge);
2490     hs_W_Njets[Wcut]->Fill(njets);
2491     hs_W_ElPhi[Wcut]->Fill(Phi);
2492     }
2493     if(WSelection(electronIndex[0], full)==0) {
2494     Wcounter[9]++;
2495     Wcut=19;
2496     hs_W_ElTransMass[Wcut]->Fill(Mt);
2497     hs_W_ElPt[Wcut]->Fill(Pt);
2498     hs_W_ElEta[Wcut]->Fill(Eta);
2499     hs_W_ElDeltaPhi[Wcut]->Fill(dphi);
2500     hs_W_ElMet[Wcut]->Fill(met);
2501     hs_W_ElCharge[Wcut]->Fill(Charge);
2502     hs_W_Njets[Wcut]->Fill(njets);
2503     hs_W_ElPhi[Wcut]->Fill(Phi);
2504     // split charge
2505     if(Charge==1) {
2506     Wcounter[10]++;
2507     Wcut=20;
2508     hs_W_ElTransMass[Wcut]->Fill(Mt);
2509     hs_W_ElPt[Wcut]->Fill(Pt);
2510     hs_W_ElEta[Wcut]->Fill(Eta);
2511     hs_W_ElDeltaPhi[Wcut]->Fill(dphi);
2512     hs_W_ElMet[Wcut]->Fill(met);
2513     hs_W_ElCharge[Wcut]->Fill(Charge);
2514     hs_W_Njets[Wcut]->Fill(njets);
2515     hs_W_ElPhi[Wcut]->Fill(Phi);
2516     }
2517     else if(Charge==-1) {
2518     Wcounter[11]++;
2519     Wcut=21;
2520     hs_W_ElTransMass[Wcut]->Fill(Mt);
2521     hs_W_ElPt[Wcut]->Fill(Pt);
2522     hs_W_ElEta[Wcut]->Fill(Eta);
2523     hs_W_ElDeltaPhi[Wcut]->Fill(dphi);
2524     hs_W_ElMet[Wcut]->Fill(met);
2525     hs_W_ElCharge[Wcut]->Fill(Charge);
2526     hs_W_Njets[Wcut]->Fill(njets);
2527     hs_W_ElPhi[Wcut]->Fill(Phi);
2528     } // charge
2529     } // W sel
2530     } // dphi Wcut
2531     } // 1 jet
2532    
2533     //////////
2534     // >1 jet
2535     //////////
2536    
2537     if(njets>1) {
2538    
2539     // fill plots after preselection
2540     if(WSelection(electronIndex[0], full)>1 || WSelection(electronIndex[0], full)==0) {
2541     Wcounter[12]++;
2542     Wcut=22;
2543     hs_W_ElTransMass[Wcut]->Fill(Mt);
2544     hs_W_ElPt[Wcut]->Fill(Pt);
2545     hs_W_ElEta[Wcut]->Fill(Eta);
2546     // hs_W_ElDeltaPhi[Wcut]->Fill();
2547     hs_W_ElMet[Wcut]->Fill(met);
2548     hs_W_ElCharge[Wcut]->Fill(Charge);
2549     hs_W_Njets[Wcut]->Fill(njets);
2550     hs_W_ElPhi[Wcut]->Fill(Phi);
2551     }
2552    
2553     // fill N-1 plots
2554    
2555     if(WSelection(electronIndex[0], misset)==0) {
2556     Wcut=23;
2557     hs_W_ElTransMass[Wcut]->Fill(Mt);
2558     hs_W_ElPt[Wcut]->Fill(Pt);
2559     hs_W_ElEta[Wcut]->Fill(Eta);
2560     // hs_W_ElDeltaPhi[Wcut]->Fill();
2561     hs_W_ElMet[Wcut]->Fill(met);
2562     hs_W_ElCharge[Wcut]->Fill(Charge);
2563     hs_W_Njets[Wcut]->Fill(njets);
2564     hs_W_ElPhi[Wcut]->Fill(Phi);
2565     }
2566     if(WSelection(electronIndex[0], pt)==0) {
2567     Wcut=24;
2568     hs_W_ElTransMass[Wcut]->Fill(Mt);
2569     hs_W_ElPt[Wcut]->Fill(Pt);
2570     hs_W_ElEta[Wcut]->Fill(Eta);
2571     // hs_W_ElDeltaPhi[Wcut]->Fill();
2572     hs_W_ElMet[Wcut]->Fill(met);
2573     hs_W_ElCharge[Wcut]->Fill(Charge);
2574     hs_W_Njets[Wcut]->Fill(njets);
2575     hs_W_ElPhi[Wcut]->Fill(Phi);
2576     }
2577     if(WSelection(electronIndex[0], mt)==0) {
2578     Wcut=25;
2579     hs_W_ElTransMass[Wcut]->Fill(Mt);
2580     hs_W_ElPt[Wcut]->Fill(Pt);
2581     hs_W_ElEta[Wcut]->Fill(Eta);
2582     // hs_W_ElDeltaPhi[Wcut]->Fill();
2583     hs_W_ElMet[Wcut]->Fill(met);
2584     hs_W_ElCharge[Wcut]->Fill(Charge);
2585     hs_W_Njets[Wcut]->Fill(njets);
2586     hs_W_ElPhi[Wcut]->Fill(Phi);
2587     }
2588     if(WSelection(electronIndex[0], full)==0) {
2589     Wcounter[13]++;
2590     Wcut=26;
2591     hs_W_ElTransMass[Wcut]->Fill(Mt);
2592     hs_W_ElPt[Wcut]->Fill(Pt);
2593     hs_W_ElEta[Wcut]->Fill(Eta);
2594     // hs_W_ElDeltaPhi[Wcut]->Fill();
2595     hs_W_ElMet[Wcut]->Fill(met);
2596     hs_W_ElCharge[Wcut]->Fill(Charge);
2597     hs_W_Njets[Wcut]->Fill(njets);
2598     hs_W_ElPhi[Wcut]->Fill(Phi);
2599     // split charge
2600     if(Charge==1) {
2601     Wcounter[14]++;
2602     Wcut=27;
2603     hs_W_ElTransMass[Wcut]->Fill(Mt);
2604     hs_W_ElPt[Wcut]->Fill(Pt);
2605     hs_W_ElEta[Wcut]->Fill(Eta);
2606     hs_W_ElDeltaPhi[Wcut]->Fill(dphi);
2607     hs_W_ElMet[Wcut]->Fill(met);
2608     hs_W_ElCharge[Wcut]->Fill(Charge);
2609     hs_W_Njets[Wcut]->Fill(njets);
2610     hs_W_ElPhi[Wcut]->Fill(Phi);
2611     }
2612     else if(Charge==-1) {
2613     Wcounter[15]++;
2614     Wcut=28;
2615     hs_W_ElTransMass[Wcut]->Fill(Mt);
2616     hs_W_ElPt[Wcut]->Fill(Pt);
2617     hs_W_ElEta[Wcut]->Fill(Eta);
2618     hs_W_ElDeltaPhi[Wcut]->Fill(dphi);
2619     hs_W_ElMet[Wcut]->Fill(met);
2620     hs_W_ElCharge[Wcut]->Fill(Charge);
2621     hs_W_Njets[Wcut]->Fill(njets);
2622     hs_W_ElPhi[Wcut]->Fill(Phi);
2623     } //charge
2624     } // w sel
2625     } // > 1 jets
2626    
2627     } // barrel
2628    
2629     else if(fabs(ElEta[electronIndex[0]])>etaBarrelMax && fabs(ElEta[electronIndex[0]])<etaEndcapMax) {
2630     if(WSelection(electronIndex[0], pre)==0) {debug++; cout<<"W found"<<endl;}
2631     // cout<<"Run: "<<Run<<" Event: "<<Event<<endl;
2632 jueugste 1.1
2633 jueugste 1.2 }
2634 jueugste 1.1
2635     }
2636 jueugste 1.2 //--------------------------------------------------------------------------------------------------------------------
2637 jueugste 1.1
2638    
2639 jueugste 1.2
2640 jueugste 1.1
2641     ////////////////////////////////////////////////////////////////////
2642     ////////////////////// User's code ends here ///////////////////////
2643     ////////////////////////////////////////////////////////////////////
2644    
2645     } // End loop over events
2646    
2647     END:
2648     cerr<<"Program ended after "<<sampleSize<<" events ..."<<endl;
2649    
2650    
2651 jueugste 1.2 for(int b=0;b<MAXWcounter;b++) {
2652     hc_W_counter->SetBinContent(b+1,Wcounter[b]);
2653     }
2654     for(int b=0;b<counterSize;b++) {
2655     hc_El_counter->SetBinContent(b+1,counter[b]);
2656     }
2657    
2658 jueugste 1.1
2659 jueugste 1.2 fclose(out);
2660     fclose(out_Z);
2661 jueugste 1.1
2662    
2663    
2664     cout<<counterTight<<endl;
2665     cout<<counterETH<<endl;
2666    
2667     cout<<"Total number of robust electrons (sequential cuts): "<<c_robust_B/*+c_robust_E*/<<endl;
2668     cout<<"Total number of robust electrons (out of tree): "<<c_robust_tree<<endl;
2669    
2670 jueugste 1.2 cout<<"# of electrons with cGsf == cSC: "<<cNa<<endl;
2671     cout<<"# of electrons with cGsf != cSC: "<<cNb<<endl;
2672    
2673     cout<<"N_t: "<<N_tt<<" N_t0: "<<N_t0<<endl;
2674     if(N_tt>0) {
2675     double effy = ((double) 2*N_tt/(N_t0+N_tt));
2676     cout<<"Electron ID efficiency (tag&probe): "<<effy<<endl;
2677     }
2678     else cout<<"No tag & probe available!"<<endl;
2679 jueugste 1.1 cout<<"debug: "<<debug<<endl;
2680    
2681 jueugste 1.2 for(int ci=0; ci<15; ci++) {
2682     cout<<ci<<": "<<counter[ci]<<endl;
2683     }
2684    
2685    
2686    
2687     delete [] counter;
2688     counter=NULL;
2689     delete [] Wcounter;
2690     Wcounter=NULL;
2691 jueugste 1.1
2692     //////////write histos
2693     h_jetPt->Write();
2694 jueugste 1.2
2695     // acceptance plots
2696     h_ElEtaVsScEta->Write();
2697     // h_ElPhiVsScPhi->Write();
2698     h_ElPtVsScEt->Write();
2699 jueugste 1.1
2700 jueugste 1.2 // sum barrel and endcap into general plots
2701     for(int a=34; a<MAXE; a++) {
2702     hs_El_ElPt[a]->Add(hs_El_ElPt[a-7]);
2703     hs_El_ElPt[a]->Add(hs_El_ElPt[a-14]);
2704     hs_El_ElEta[a]->Add(hs_El_ElEta[a-7]);
2705     hs_El_ElEta[a]->Add(hs_El_ElEta[a-14]);
2706     hs_El_ElPhi[a]->Add(hs_El_ElPhi[a-7]);
2707     hs_El_ElPhi[a]->Add(hs_El_ElPhi[a-14]);
2708     hs_El_ElCharge[a]->Add(hs_El_ElCharge[a-7]);
2709     hs_El_ElCharge[a]->Add(hs_El_ElCharge[a-14]);
2710     hs_El_ElDeltaPhi[a]->Add(hs_El_ElDeltaPhi[a-7]);
2711     hs_El_ElDeltaPhi[a]->Add(hs_El_ElDeltaPhi[a-14]);
2712     hs_El_ElDeltaEta[a]->Add(hs_El_ElDeltaEta[a-7]);
2713     hs_El_ElDeltaEta[a]->Add(hs_El_ElDeltaEta[a-14]);
2714     hs_El_ElTransMass[a]->Add(hs_El_ElTransMass[a-7]);
2715     hs_El_ElTransMass[a]->Add(hs_El_ElTransMass[a-14]);
2716     hs_El_ElHoverE[a]->Add(hs_El_ElHoverE[a-7]);
2717     hs_El_ElHoverE[a]->Add(hs_El_ElHoverE[a-14]);
2718     hs_El_ElSigmaIetaIeta[a]->Add(hs_El_ElSigmaIetaIeta[a-7]);
2719     hs_El_ElSigmaIetaIeta[a]->Add(hs_El_ElSigmaIetaIeta[a-14]);
2720     hs_El_ElNumberOfMissingInnerHits[a]->Add(hs_El_ElNumberOfMissingInnerHits[a-7]);
2721     hs_El_ElNumberOfMissingInnerHits[a]->Add(hs_El_ElNumberOfMissingInnerHits[a-14]);
2722     hs_El_ElCombIso[a]->Add(hs_El_ElCombIso[a-7]);
2723     hs_El_ElCombIso[a]->Add(hs_El_ElCombIso[a-14]);
2724     }
2725    
2726 jueugste 1.1
2727    
2728     // write the plots to the *.root file
2729    
2730     h_numberOfEvents->Write();
2731    
2732     if(writeIdPlots==true) {
2733     for(int i=0;i<MAXE;i++) {
2734     hs_El_ElPt[i]->Write();
2735     hs_El_ElEta[i]->Write();
2736     hs_El_ElPhi[i]->Write();
2737     hs_El_ElDeltaPhi[i]->Write();
2738     hs_El_ElMet[i]->Write();
2739     hs_El_ElTransMass[i]->Write();
2740     hs_El_ElCharge[i]->Write();
2741     hs_El_Njets[i]->Write();
2742     hs_El_ElDeltaPhi[i]->Write();
2743     hs_El_ElDeltaEta[i]->Write();
2744     hs_El_ElOneOverEminusOneOverP[i]->Write();
2745     hs_El_ElTransMass[i]->Write();
2746     hs_El_Njets[i]->Write();
2747     hs_El_ElEthIso[i]->Write();
2748     hs_El_ElTrkIso[i]->Write();
2749     hs_El_ElEcalIso[i]->Write();
2750     hs_El_ElHcalIso[i]->Write();
2751 jueugste 1.2 hs_El_ElCombIso[i]->Write();
2752 jueugste 1.1 hs_El_ElHoverE[i]->Write();
2753     hs_El_ElSigmaIetaIeta[i]->Write();
2754     hs_El_ElNumberOfMissingInnerHits[i]->Write();
2755     }
2756 jueugste 1.2 hc_El_counter->Write();
2757 jueugste 1.1 }
2758 jueugste 1.2
2759    
2760 jueugste 1.1 if(writeN1Plots==true) {
2761     for(int i=0; i<MAXN; i++) {
2762     hn1_El_ElDeltaPhi[i]->Write();
2763     hn1_El_ElDeltaEta[i]->Write();
2764     hn1_El_ElOneOverEminusOneOverP[i]->Write();
2765    
2766 jueugste 1.2 // hn1_El_ElPt[i]->Write();
2767     // hn1_El_ElEta[i]->Write();
2768     // hn1_El_ElPhi[i]->Write();
2769     // hn1_El_ElMet[i]->Write();
2770     // hn1_El_ElTransMass[i]->Write();
2771     // hn1_El_ElCharge[i]->Write();
2772     // hn1_El_Njets[i]->Write();
2773     // hn1_El_ElTransMass[i]->Write();
2774     // hn1_El_Njets[i]->Write();
2775 jueugste 1.1 hn1_El_ElEthIso[i]->Write();
2776 jueugste 1.2 // hn1_El_ElTrkIso[i]->Write();
2777     // hn1_El_ElEcalIso[i]->Write();
2778     // hn1_El_ElHcalIso[i]->Write();
2779     hn1_El_ElCombIso[i]->Write();
2780 jueugste 1.1 hn1_El_ElHoverE[i]->Write();
2781     hn1_El_ElSigmaIetaIeta[i]->Write();
2782     hn1_El_ElNumberOfMissingInnerHits[i]->Write();
2783     }
2784     }
2785     if(writeWenuPlots) {
2786     for(int i=0;i<MAXS;i++) {
2787     hs_W_ElPt[i]->Write();
2788     hs_W_ElEta[i]->Write();
2789     hs_W_ElPhi[i]->Write();
2790     hs_W_ElDeltaPhi[i]->Write();
2791     hs_W_ElMet[i]->Write();
2792     hs_W_ElTransMass[i]->Write();
2793     hs_W_ElCharge[i]->Write();
2794     hs_W_Njets[i]->Write();
2795     }
2796 jueugste 1.2 hc_W_counter->Write();
2797     }
2798    
2799     for(int i=0;i<MAXZ;i++) {
2800     h_Z_invMass[i]->Write();
2801     h_Z_ptAll[i]->Write();
2802     h_Z_etaAll[i]->Write();
2803     h_Z_phiAll[i]->Write();
2804     h_Z_deltaPhi[i]->Write();
2805     h_Z_ptDiLepton[i]->Write();
2806     h_Z_etaDiLepton[i]->Write();
2807     h_Z_phiDiLepton[i]->Write();
2808    
2809     h_Z_leadingJetPt[i]->Write();
2810     h_Z_summedJetPt[i]->Write();
2811     h_Z_leadingJetEta[i]->Write();
2812     h_Z_summedJetEta[i]->Write();
2813     h_Z_leadingJetPhi[i]->Write();
2814     h_Z_summedJetPhi[i]->Write();
2815     h_Z_nJets[i]->Write();
2816     h_Z_leadingJetDeltaPt[i]->Write();
2817     h_Z_leadingJetDeltaEta[i]->Write();
2818     h_Z_leadingJetDeltaPhi[i]->Write();
2819     h_Z_summedJetDeltaPt[i]->Write();
2820     h_Z_summedJetDeltaEta[i]->Write();
2821     h_Z_summedJetDeltaPhi[i]->Write();
2822     h_Z_recoilPt[i]->Write();
2823     h_Z_recoilEta[i]->Write();
2824     h_Z_recoilPhi[i]->Write();
2825     h_Z_metPt[i]->Write();
2826     h_Z_metEta[i]->Write();
2827     h_Z_metPhi[i]->Write();
2828    
2829 jueugste 1.1 }
2830     std::cout << "analysisClass::Loop() ends" <<std::endl;
2831     }
2832    
2833