ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/TreeMod/src/ObjectCleaningMod.cc
Revision: 1.1
Committed: Fri Aug 8 11:23:16 2008 UTC (16 years, 9 months ago) by sixie
Content type: text/plain
Branch: MAIN
CVS Tags: MITHEP_2_0_x
Log Message:
Add ObjectCleaning module which imposes object ID criteria and exports collections of Good objects for analysis

File Contents

# User Rev Content
1 sixie 1.1 // $Id: $
2    
3     #include "MitAna/TreeMod/interface/ObjectCleaningMod.h"
4     #include <TH1D.h>
5     #include <TH2D.h>
6     #include "MitAna/DataTree/interface/Names.h"
7     #include "MitAna/DataCont/interface/ObjArray.h"
8    
9     using namespace mithep;
10    
11     ClassImp(mithep::ObjectCleaningMod)
12    
13     //--------------------------------------------------------------------------------------------------
14     ObjectCleaningMod::ObjectCleaningMod(const char *name, const char *title) :
15     BaseMod(name,title),
16     fMCPartName(Names::gkMCPartBrn),
17     fTrackName(Names::gkTrackBrn),
18     fBarrelBasicClusterName(Names::gkBarrelBasicClusterBrn),
19     fBarrelSuperClusterName(Names::gkBarrelSuperClusterBrn),
20     fMuonName(Names::gkMuonBrn),
21     fElectronName(Names::gkElectronBrn),
22     fJetName(Names::gkCaloJetBrn),
23     fMetName(Names::gkCaloMetBrn),
24     fParticles(0),
25     fTracks(0),
26     fMuons(0),
27     fElectrons(0),
28     fGenPtHist(0),
29     fGenEtaHist(0),
30     fTrackPtHist(0),
31     fTrackThetaHist(0),
32     fAllMuonPtHist(0),
33     fAllMuonEtaHist(0),
34     fGoodMuonPtHist(0),
35     fGoodMuonEtaHist(0),
36     fAllElectronPtHist(0),
37     fAllElectronEtaHist(0),
38     fAllJetPtHist(0),
39     fAllJetEtaHist(0)
40     {
41     // Constructor.
42     }
43    
44     //--------------------------------------------------------------------------------------------------
45     void ObjectCleaningMod::Begin()
46     {
47     // Run startup code on the client machine. For this module, we dont do
48     // anything here.
49     }
50    
51     //--------------------------------------------------------------------------------------------------
52     void ObjectCleaningMod::Process()
53     {
54     // Process entries of the tree. For this module, we just load the branches and
55     //output debug info or not
56     bool printDebug = false;
57     bool debug = false;
58    
59     fNEventsProcessed++;
60    
61     if (fNEventsProcessed % 1000 == 0 || printDebug)
62     cerr << endl << "Process Event " << fNEventsProcessed << endl;
63    
64     //Get Generator Level information for matching
65     ObjArray<MCParticle> GenLeptons;
66     LoadBranch(fMCPartName);
67    
68     for (UInt_t i=0; i<fParticles->GetEntries(); ++i) {
69     MCParticle* p = fParticles->At(i);
70     if (p->IsGenerated() &&
71     (abs(p->PdgId()) == 11 || abs(p->PdgId()) == 13 || abs(p->PdgId()) == 15)
72     && p->Status() == 3 //pick 3 because we want primary interaction leptons only
73     )
74     GenLeptons.Add(p);
75     }
76    
77     if (printDebug) {
78     cerr << "Check Generator Leptons Finding" << endl;
79     for (UInt_t i=0; i<GenLeptons.GetEntries(); ++i) {
80     cout << i << " " << GenLeptons[i]->PdgId() << " " << GenLeptons[i]->Status()
81     << " " << GenLeptons[i]->Pt() << " " << GenLeptons[i]->Eta() << " "
82     << GenLeptons[i]->Phi() << endl;
83     }
84     }
85    
86     //Load Tracking Information
87     LoadBranch(fTrackName);
88     for (UInt_t i=0; i<fTracks->GetEntries(); ++i) {
89     Track* p = fTracks->At(i);
90     fTrackPtHist->Fill(p->Pt());
91     fTrackThetaHist->Fill(p->Theta());
92     fTrackPhiHist->Fill(p->Phi());
93     }
94    
95     //Get the Basic Clusters
96     LoadBranch(fBarrelBasicClusterName);
97    
98     //Get the Super Clusters
99     LoadBranch(fBarrelSuperClusterName);
100    
101     //Muons
102     ObjArray<Muon> *GoodMuons = new ObjArray<Muon>;
103     vector<bool> GoodMuonsIsFake;
104     LoadBranch(fMuonName);
105     for (UInt_t i=0; i<fMuons->GetEntries(); ++i) {
106     Muon *mu = fMuons->At(i);
107     fAllMuonPtHist->Fill(mu->Pt());
108     fAllMuonEtaHist->Fill(mu->Eta());
109    
110     //do matching to gen particle to find if it's a fake
111     bool isFake = true;
112     bool isFromTau = false;
113     for (UInt_t j = 0; j<GenLeptons.GetEntries(); j++) {
114     double dphi = (abs(GenLeptons[j]->Phi() - mu->Phi()) > M_PI)
115     ? abs(GenLeptons[j]->Phi() - mu->Phi()) - 2*M_PI : abs(GenLeptons[j]->Phi() - mu->Phi());
116     double deltaR = TMath::Sqrt(dphi*dphi +
117     abs(GenLeptons[j]->Eta() - mu->Eta())*
118     abs(GenLeptons[j]->Eta() - mu->Eta()));
119     if (deltaR < 0.15) {
120     if (abs(GenLeptons[j]->PdgId()) == 13) {
121     isFake = false;
122     if (printDebug)
123     cout << "Matched: "
124     << mu->Pt() << " " << mu->Eta() << " " << mu->Phi() << endl
125     << GenLeptons[j]->PdgId() << " " << GenLeptons[j]->Pt() << " "
126     << GenLeptons[j]->Eta() << " " << GenLeptons[j]->Phi() << endl;
127     //debug = true;
128     }
129     if (abs(GenLeptons[j]->PdgId()) == 15) {
130     isFromTau = true;
131     }
132     }
133     }
134    
135     //Fill Muon ID histograms
136     fAllMuonChi2->Fill(mu->Trk()->Chi2());
137     fAllMuonNHits->Fill(mu->Trk()->NHits());
138     fAllMuonBestTrackD0->Fill(abs(mu->BestTrk()->D0()));
139     fAllMuonIsoR03SumPt->Fill(mu->IsoR03SumPt());
140     fAllMuonIsoR03EmEt->Fill(mu->IsoR03EmEt());
141     fAllMuonIsoR03HadEt->Fill(mu->IsoR03HadEt());
142     fAllMuonIsoR03EmAndHadEt->Fill(mu->IsoR03EmEt() + mu->IsoR03HadEt());
143     fAllMuonIsoR03HoEt->Fill(mu->IsoR03HoEt());
144     fAllMuonIsoR03NTracks->Fill(mu->IsoR03NTracks());
145     fAllMuonIsoR03NJets->Fill(mu->IsoR03NJets());
146     fAllMuonIsoR05SumPt->Fill(mu->IsoR05SumPt());
147     fAllMuonIsoR05EmEt->Fill(mu->IsoR05EmEt());
148     fAllMuonIsoR05HadEt->Fill(mu->IsoR05HadEt());
149     fAllMuonIsoR05HoEt->Fill(mu->IsoR05HoEt());
150     fAllMuonIsoR05NTracks->Fill(mu->IsoR05NTracks());
151     fAllMuonIsoR05NJets->Fill(mu->IsoR05NJets());
152     fAllMuonEmEnergy->Fill(mu->EmEnergy());
153     fAllMuonHadEnergy->Fill(mu->HadEnergy());
154     fAllMuonHoEnergy->Fill(mu->HoEnergy());
155     fAllMuonEmS9Energy->Fill(mu->EmS9Energy());
156     fAllMuonHadS9Energy->Fill(mu->HadS9Energy());
157     fAllMuonHoS9Energy->Fill(mu->HoS9Energy());
158     if (!isFake) {
159     fRealMuonPtHist->Fill(mu->Pt());
160     fRealMuonEtaHist->Fill(mu->Eta());
161     fRealMuonChi2->Fill(mu->Trk()->Chi2());
162     fRealMuonNHits->Fill(mu->Trk()->NHits());
163     fRealMuonBestTrackD0->Fill(abs(mu->BestTrk()->D0()));
164     fRealMuonIsoR03SumPt->Fill(mu->IsoR03SumPt());
165     fRealMuonIsoR03EmEt->Fill(mu->IsoR03EmEt());
166     fRealMuonIsoR03HadEt->Fill(mu->IsoR03HadEt());
167     fRealMuonIsoR03EmAndHadEt->Fill(mu->IsoR03EmEt() + mu->IsoR03HadEt());
168     fRealMuonIsoR03HoEt->Fill(mu->IsoR03HoEt());
169     fRealMuonIsoR03NTracks->Fill(mu->IsoR03NTracks());
170     fRealMuonIsoR03NJets->Fill(mu->IsoR03NJets());
171     fRealMuonIsoR05SumPt->Fill(mu->IsoR05SumPt());
172     fRealMuonIsoR05EmEt->Fill(mu->IsoR05EmEt());
173     fRealMuonIsoR05HadEt->Fill(mu->IsoR05HadEt());
174     fRealMuonIsoR05HoEt->Fill(mu->IsoR05HoEt());
175     fRealMuonIsoR05NTracks->Fill(mu->IsoR05NTracks());
176     fRealMuonIsoR05NJets->Fill(mu->IsoR05NJets());
177     fRealMuonEmEnergy->Fill(mu->EmEnergy());
178     fRealMuonHadEnergy->Fill(mu->HadEnergy());
179     fRealMuonHoEnergy->Fill(mu->HoEnergy());
180     fRealMuonEmS9Energy->Fill(mu->EmS9Energy());
181     fRealMuonHadS9Energy->Fill(mu->HadS9Energy());
182     fRealMuonHoS9Energy->Fill(mu->HoS9Energy());
183     } else {
184     fFakeMuonPtHist->Fill(mu->Pt());
185     fFakeMuonEtaHist->Fill(mu->Eta());
186     fFakeMuonChi2->Fill(mu->Trk()->Chi2());
187     fFakeMuonNHits->Fill(mu->Trk()->NHits());
188     fFakeMuonBestTrackD0->Fill(abs(mu->BestTrk()->D0()));
189     fFakeMuonIsoR03SumPt->Fill(mu->IsoR03SumPt());
190     fFakeMuonIsoR03EmEt->Fill(mu->IsoR03EmEt());
191     fFakeMuonIsoR03HadEt->Fill(mu->IsoR03HadEt());
192     fFakeMuonIsoR03EmAndHadEt->Fill(mu->IsoR03EmEt() + mu->IsoR03HadEt());
193     fFakeMuonIsoR03HoEt->Fill(mu->IsoR03HoEt());
194     fFakeMuonIsoR03NTracks->Fill(mu->IsoR03NTracks());
195     fFakeMuonIsoR03NJets->Fill(mu->IsoR03NJets());
196     fFakeMuonIsoR05SumPt->Fill(mu->IsoR05SumPt());
197     fFakeMuonIsoR05EmEt->Fill(mu->IsoR05EmEt());
198     fFakeMuonIsoR05HadEt->Fill(mu->IsoR05HadEt());
199     fFakeMuonIsoR05HoEt->Fill(mu->IsoR05HoEt());
200     fFakeMuonIsoR05NTracks->Fill(mu->IsoR05NTracks());
201     fFakeMuonIsoR05NJets->Fill(mu->IsoR05NJets());
202     fFakeMuonEmEnergy->Fill(mu->EmEnergy());
203     fFakeMuonHadEnergy->Fill(mu->HadEnergy());
204     fFakeMuonHoEnergy->Fill(mu->HoEnergy());
205     fFakeMuonEmS9Energy->Fill(mu->EmS9Energy());
206     fFakeMuonHadS9Energy->Fill(mu->HadS9Energy());
207     fFakeMuonHoS9Energy->Fill(mu->HoS9Energy());
208     }
209    
210     //Define the ID Cuts
211     const int nCuts = 3;
212     double cutValue[nCuts] = {0.1, 3.0, 3.0};
213     bool passCut[nCuts] = {false, false, false,};
214    
215     double muonD0 = -0.05;
216     //if (mu->GlobalTrk() != NULL)
217     muonD0 = mu->BestTrk()->D0();
218     if(muonD0 < cutValue[0] //&& mu->GlobalTrk() != NULL
219     )
220     passCut[0] = true;
221     if(mu->IsoR03SumPt() < cutValue[1]) passCut[1] = true;
222     if(mu->IsoR03EmEt() +
223     mu->IsoR03HadEt() < cutValue[2]) passCut[2] = true;
224    
225     // Final decision
226     bool allCuts = true;
227     for(int c=0; c<nCuts; c++) {
228     allCuts = allCuts & passCut[c];
229     }
230    
231     //make muon ID selection histograms
232     fMuonSelection->Fill(-1);
233     if (!isFake)
234     fRealMuonSelection->Fill(-1);
235     else
236     fFakeMuonSelection->Fill(-1);
237    
238     //Fill the rest of the muon selection histograms
239     for (int k=0;k<3;k++) {
240     bool pass = true;
241     for (int p=0;p<=k;p++)
242     pass = (pass && passCut[p]);
243    
244     if (pass) {
245     fMuonSelection->Fill(k);
246     if (!isFake)
247     fRealMuonSelection->Fill(k);
248     else
249     fFakeMuonSelection->Fill(k);
250     }
251     }
252    
253     //Fill histogram for the Good Muons
254     if ( allCuts
255     && abs(mu->Eta()) < 2.5 //$$ mu->Pt() > 5.0
256     ) {
257     fGoodMuonPtHist->Fill(mu->Pt());
258     fGoodMuonEtaHist->Fill(mu->Eta());
259     GoodMuons->Add(mu);
260     GoodMuonsIsFake.push_back(isFake);
261     }
262     }
263    
264    
265     //Get Electrons
266     LoadBranch(fElectronName);
267    
268     //we have to use a vector first and then fill the ObjArray with the vector
269     //contents because ObJArray does not allow removal of duplicates.
270     vector<Electron*> GoodElectronsVector;
271     vector<bool> GoodElectronIsFake;
272    
273     for (UInt_t i=0; i<fElectrons->GetEntries(); ++i) {
274     Electron *e = fElectrons->At(i);
275    
276     fAllElectronPtHist->Fill(e->Pt());
277     fAllElectronEtaHist->Fill(e->Eta());
278    
279     //do matching to gen particle to find if it's a fake
280     bool isFake = true;
281     bool isFromTau = false;
282     for (UInt_t j = 0; j<GenLeptons.GetEntries(); j++) {
283     double dphi = (abs(GenLeptons[j]->Phi() - e->Phi()) > M_PI) ?
284     abs(GenLeptons[j]->Phi() - e->Phi()) - 2*M_PI : abs(GenLeptons[j]->Phi() - e->Phi());
285     double deltaR = TMath::Sqrt(dphi*dphi +
286     abs(GenLeptons[j]->Eta() - e->Eta())*
287     abs(GenLeptons[j]->Eta() - e->Eta()));
288     if (deltaR < 0.15) {
289     if (abs(GenLeptons[j]->PdgId()) == 11) {
290     isFake = false;
291     if (printDebug)
292     cout << "Matched: "
293     << e->Pt() << " " << e->Eta() << " " << e->Phi() << endl
294     << GenLeptons[j]->PdgId() << " " << GenLeptons[j]->Pt()
295     << " " << GenLeptons[j]->Eta() << " " << GenLeptons[j]->Phi() << endl;
296     //debug = true;
297     }
298     if (abs(GenLeptons[j]->PdgId()) == 15) {
299     isFromTau = true;
300     }
301     }
302     }
303    
304     double electronepInv = fabs(1./e->SuperClusterE()- 1./e->E());
305    
306    
307     //Check Electron Iso calculation:
308     double computedEcalIso = e->ComputeEcalIsolation(0.3,0.0,fBarrelBasicClusters);
309     double computedTrackIso = e->ComputeTrackIsolation(0.2, 0.02,0.1,0.1,fTracks);
310     if (printDebug) {
311     cout << "Check Iso Calculation:" << endl;
312     cout << "e->ComputeTrackIso: " << computedTrackIso << endl;
313     cout << "e->TrackIso: " << e->TrackIsolation() << endl;
314     cout << "diff: " << computedTrackIso - e->TrackIsolation() << endl;
315     cout << "e->ComputeEcalIso: " << computedEcalIso << endl;
316     cout << "e->EcalIso: " << e->CaloIsolation() << endl;
317     cout << "diff: " << computedEcalIso - e->CaloIsolation() << endl;
318     }
319    
320     //Fill electron ID histograms
321     fAllElectronESuperClOverP->Fill(e->ESuperClusterOverP());
322     fAllElectronESeedClOverPout->Fill(e->ESeedClusterOverPout());
323     fAllElectronDeltaEtaSuperClTrackAtVtx->Fill(abs(e->DeltaEtaSuperClusterTrackAtVtx()));
324     fAllElectronDeltaEtaSeedClTrackAtCalo->Fill(abs(e->DeltaEtaSeedClusterTrackAtCalo()));
325     fAllElectronDeltaPhiSuperClTrackAtVtx->Fill(abs(e->DeltaPhiSuperClusterTrackAtVtx()));
326     fAllElectronDeltaPhiSeedClTrackAtCalo->Fill(abs(e->DeltaPhiSeedClusterTrackAtCalo()));
327     fAllElectronEPInv->Fill(electronepInv);
328     fAllElectronHadronicOverEm->Fill(e->HadronicOverEm());
329     fAllElectronE33OverE55->Fill(e->E33()/e->E55());
330     fAllElectronIsEnergyScaleCorrected->Fill(e->IsEnergyScaleCorrected());
331     fAllElectronIsMomentumCorrected->Fill(e->IsMomentumCorrected());
332     fAllElectronNumberOfClusters->Fill(e->NumberOfClusters());
333     fAllElectronClassification->Fill(e->Classification());
334     fAllElectronE33->Fill(e->E33());
335     fAllElectronE55->Fill(e->E55());
336     fAllElectronCovEtaEta->Fill(e->CovEtaEta()*10000);
337     fAllElectronCovEtaPhi->Fill(abs(e->CovEtaPhi()*10000));
338     fAllElectronCovPhiPhi->Fill(e->CovPhiPhi()*1000);
339     fAllElectronCaloIso->Fill(e->CaloIsolation());
340     fAllElectronTrackIso->Fill(e->TrackIsolation());
341     fAllElectronComputedEcalIso->Fill(computedEcalIso);
342     fAllElectronComputedTrackIso->Fill(computedTrackIso);
343    
344     if (!isFake) {
345     fRealElectronPtHist->Fill(e->Pt());
346     fRealElectronEtaHist->Fill(e->Eta());
347     fRealElectronESuperClOverP->Fill(e->ESuperClusterOverP());
348     fRealElectronESeedClOverPout->Fill(e->ESeedClusterOverPout());
349     fRealElectronDeltaEtaSuperClTrackAtVtx->Fill(abs(e->DeltaEtaSuperClusterTrackAtVtx()));
350     fRealElectronDeltaEtaSeedClTrackAtCalo->Fill(abs(e->DeltaEtaSeedClusterTrackAtCalo()));
351     fRealElectronDeltaPhiSuperClTrackAtVtx->Fill(abs(e->DeltaPhiSuperClusterTrackAtVtx()));
352     fRealElectronDeltaPhiSeedClTrackAtCalo->Fill(abs(e->DeltaPhiSeedClusterTrackAtCalo()));
353     fRealElectronEPInv->Fill(electronepInv);
354     fRealElectronHadronicOverEm->Fill(e->HadronicOverEm());
355     fRealElectronE33OverE55->Fill(e->E33()/e->E55());
356     fRealElectronIsEnergyScaleCorrected->Fill(e->IsEnergyScaleCorrected());
357     fRealElectronIsMomentumCorrected->Fill(e->IsMomentumCorrected());
358     fRealElectronNumberOfClusters->Fill(e->NumberOfClusters());
359     fRealElectronClassification->Fill(e->Classification());
360     fRealElectronE33->Fill(e->E33());
361     fRealElectronE55->Fill(e->E55());
362     fRealElectronCovEtaEta->Fill(e->CovEtaEta()*10000);
363     fRealElectronCovEtaPhi->Fill(abs(e->CovEtaPhi()*10000));
364     fRealElectronCovPhiPhi->Fill(e->CovPhiPhi()*1000);
365     fRealElectronCaloIso->Fill(e->CaloIsolation());
366     fRealElectronTrackIso->Fill(e->TrackIsolation());
367     fRealElectronComputedEcalIso->Fill(computedEcalIso);
368     fRealElectronComputedTrackIso->Fill(computedTrackIso);
369     } else {
370     fFakeElectronPtHist->Fill(e->Pt());
371     fFakeElectronEtaHist->Fill(e->Eta());
372     fFakeElectronESuperClOverP->Fill(e->ESuperClusterOverP());
373     fFakeElectronESeedClOverPout->Fill(e->ESeedClusterOverPout());
374     fFakeElectronDeltaEtaSuperClTrackAtVtx->Fill(abs(e->DeltaEtaSuperClusterTrackAtVtx()));
375     fFakeElectronDeltaEtaSeedClTrackAtCalo->Fill(abs(e->DeltaEtaSeedClusterTrackAtCalo()));
376     fFakeElectronDeltaPhiSuperClTrackAtVtx->Fill(abs(e->DeltaPhiSuperClusterTrackAtVtx()));
377     fFakeElectronDeltaPhiSeedClTrackAtCalo->Fill(abs(e->DeltaPhiSeedClusterTrackAtCalo()));
378     fFakeElectronEPInv->Fill(electronepInv);
379     fFakeElectronHadronicOverEm->Fill(e->HadronicOverEm());
380     fFakeElectronE33OverE55->Fill(e->E33()/e->E55());
381     fFakeElectronIsEnergyScaleCorrected->Fill(e->IsEnergyScaleCorrected());
382     fFakeElectronIsMomentumCorrected->Fill(e->IsMomentumCorrected());
383     fFakeElectronNumberOfClusters->Fill(e->NumberOfClusters());
384     fFakeElectronClassification->Fill(e->Classification());
385     fFakeElectronE33->Fill(e->E33());
386     fFakeElectronE55->Fill(e->E55());
387     fFakeElectronCovEtaEta->Fill(e->CovEtaEta()*10000);
388     fFakeElectronCovEtaPhi->Fill(abs(e->CovEtaPhi()*10000));
389     fFakeElectronCovPhiPhi->Fill(e->CovPhiPhi()*1000);
390     fFakeElectronCaloIso->Fill(e->CaloIsolation());
391     fFakeElectronTrackIso->Fill(e->TrackIsolation());
392     fFakeElectronComputedEcalIso->Fill(computedEcalIso);
393     fFakeElectronComputedTrackIso->Fill(computedTrackIso);
394     }
395    
396     //cuts depend on electron classification
397     int cutClass = -1;
398     if (e->Classification() == 0) cutClass = 0;
399     else if(e->Classification() == 10) cutClass = 1;
400     else if(e->Classification() == 20) cutClass = 2;
401     else if(e->Classification() == 30) cutClass = 3;
402     else if(e->Classification() == 31) cutClass = 3;
403     else if(e->Classification() == 32) cutClass = 3;
404     else if(e->Classification() == 33) cutClass = 3;
405     else if(e->Classification() == 34) cutClass = 3;
406     else if(e->Classification() == 100) cutClass = 4;
407     else if(e->Classification() == 110) cutClass = 5;
408     else if(e->Classification() == 120) cutClass = 6;
409     else if(e->Classification() == 130) cutClass = 7;
410     else if(e->Classification() == 131) cutClass = 7;
411     else if(e->Classification() == 132) cutClass = 7;
412     else if(e->Classification() == 133) cutClass = 7;
413     else if(e->Classification() == 134) cutClass = 7;
414     else if(e->Classification() == 40) cutClass = 8;
415     else {
416     cout << "Error, electron.classification not defined: " << e->Classification() << endl;
417     }
418    
419     fAllElectronCutClass->Fill(cutClass);
420    
421     if (!isFake)
422     fRealElectronCutClass->Fill(cutClass);
423     else
424     fFakeElectronCutClass->Fill(cutClass);
425    
426     //cerr << "3" << endl;
427    
428     //values of cuts[classification]
429     double EoverPInMax[] = { 1.3, 1.2, 1.3, 999., 999., 999., 999., 999. }; // 0
430     double EoverPInMin[] = { 0.9, 0.9, 0.9, 0.6, 0.9, 0.9, 0.9, 0.7 }; // 1
431     double deltaEtaIn[] = { 0.004, 0.006, 0.005, 0.007, 0.007, 0.008, 0.007, 0.008 }; // 2
432     double deltaPhiIn[] = { 0.04, 0.07, 0.04, 0.08, 0.06, 0.07, 0.06, 0.07 }; // 3
433     double HoverE[] = { 0.06, 0.05, 0.06, 0.14, 0.1, 0.1, 0.1, 0.12 }; // 4
434     double E9overE25[] = { 0.7, 0.75, 0.8, 0., 0.85, 0.75, 0.8, 0. }; // 5
435     double EoverPOutMax[] = { 2.5, 999., 999., 999., 2., 999., 999., 999. }; // 6
436     double EoverPOutMin[] = { 0.6, 1.8, 1., 0.75, 0.6, 1.5, 1., 0.8 }; // 7
437     double deltaPhiOut[] = { 0.011, 999., 999., 999., 0.02, 999., 999., 999. }; // 8
438     double invEMinusInvP[] = { 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06 }; // 9
439     double sigmaEtaEtaMax[] = { 0.011, 0.011, 0.011, 0.011, 0.022, 0.022, 0.022, 0.3 }; // 10
440     double sigmaEtaEtaMin[] = { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0. }; // 11
441     double sigmaPhiPhiMax[] = { 0.015, 999., 999., 999., 0.02, 999., 999., 999. }; // 12
442     double sigmaPhiPhiMin[] = { 0.00, 0., 0., 0., 0., 0., 0., 0. }; // 13
443    
444     const int nCuts = 16;
445     bool passCut[nCuts] = {false, false, false, false, false,
446     false, false, false, false, false,
447     false, false, false, false, false,
448     false};
449    
450     if(e->ESuperClusterOverP() < EoverPInMax[cutClass]) passCut[0] = true;
451     if(e->ESuperClusterOverP() > EoverPInMin[cutClass]) passCut[1] = true;
452     if(fabs(e->DeltaEtaSuperClusterTrackAtVtx()) < deltaEtaIn[cutClass]) passCut[2] = true;
453     if(fabs(e->DeltaPhiSuperClusterTrackAtVtx()) < deltaPhiIn[cutClass]) passCut[3] = true;
454     if(e->HadronicOverEm() < HoverE[cutClass]) passCut[4] = true;
455     if(e->E33()/e->E55() > E9overE25[cutClass])
456     passCut[5] = true;
457     //comment out these two for now because this variable
458     //seems to be incorrect in CMSSW 2_0_8
459     //if(e->ESeedClusterOverPout() < EoverPOutMax[cutClass])
460     passCut[6] = true;
461     //if(e->ESeedClusterOverPout() > EoverPOutMin[cutClass])
462     passCut[7] = true;
463     if(fabs(e->DeltaPhiSeedClusterTrackAtCalo()) < deltaPhiOut[cutClass]) passCut[8] = true;
464     if(electronepInv < invEMinusInvP[cutClass]) passCut[9] = true;
465     if(e->CovEtaEta() < sigmaEtaEtaMax[cutClass]) passCut[10] = true;
466     if(e->CovEtaEta() > sigmaEtaEtaMin[cutClass]) passCut[11] = true;
467     if(e->CovPhiPhi() < sigmaPhiPhiMax[cutClass]) passCut[12] = true;
468     if(e->CovPhiPhi() > sigmaPhiPhiMin[cutClass]) passCut[13] = true;
469     if(e->TrackIsolation() < 5.0) passCut[14] = true;
470     if(e->CaloIsolation() < 5.0) passCut[15] = true;
471    
472     // Final decision
473     bool allCuts = true;
474     for(int c=0; c<nCuts; c++) {
475     allCuts = allCuts & passCut[c];
476     }
477    
478     //make electron ID selection histogram
479     fElectronSelection->Fill(-1);
480     if (!isFake)
481     fRealElectronSelection->Fill(-1);
482     else
483     fFakeElectronSelection->Fill(-1);
484    
485     for (int k=0;k<16;k++) {
486     bool pass = true;
487     for (int p=0;p<=k;p++)
488     pass = (pass && passCut[p]);
489     if (pass) {
490     fElectronSelection->Fill(k);
491     if (!isFake)
492     fRealElectronSelection->Fill(k);
493     else
494     fFakeElectronSelection->Fill(k);
495     }
496     }
497    
498     //Check whether it overlaps with a good muon.
499     bool isMuonOverlap = false;
500     for (UInt_t j=0; j<GoodMuons->GetEntries();j++) {
501     double dphi = (abs(GoodMuons->At(j)->Phi() - e->Phi()) > M_PI) ?
502     abs(GoodMuons->At(j)->Phi() - e->Phi()) - 2*M_PI : abs(GoodMuons->At(j)->Phi() - e->Phi());
503     double deltaR = TMath::Sqrt(dphi*dphi +
504     abs(GoodMuons->At(j)->Eta() - e->Eta())*
505     abs(GoodMuons->At(j)->Eta() - e->Eta()));
506     if (deltaR < 0.1) {
507     isMuonOverlap = true;
508     break;
509     }
510     }
511    
512     //Check whether it overlaps with another electron candidate
513     bool isElectronOverlap = false;
514     for (UInt_t j=0; j<GoodElectronsVector.size(); j++) {
515     double dphi = (abs(GoodElectronsVector[j]->Phi() - e->Phi()) > M_PI)
516     ? abs(GoodElectronsVector[j]->Phi() - e->Phi()) - 2*M_PI :
517     abs(GoodElectronsVector[j]->Phi() - e->Phi());
518     double deltaR = TMath::Sqrt(dphi*dphi +
519     abs(GoodElectronsVector[j]->Eta() - e->Eta())*
520     abs(GoodElectronsVector[j]->Eta() - e->Eta()));
521     if (deltaR < 0.1) {
522     isElectronOverlap = true;
523    
524     //if there's an overlap and the new one being considered has E/P closer to 1.0
525     //then replace the overlapping one with this new one because it's better.
526     //Once we get super cluster info, we should make sure the superclusters match
527     //before declaring it is a duplicate
528     //can have one SC matched to many tracks. or one track matched to many SC's.
529     //we should cover all the cases. see SUSYAnalyzer...
530     if (abs(GoodElectronsVector[j]->ESuperClusterOverP() - 1) >
531     abs(e->ESuperClusterOverP() - 1)) {
532     GoodElectronsVector[j] = e;
533     }
534     break;
535     }
536     }
537    
538     //These are Good Electrons
539     if (allCuts
540     && abs(e->Eta()) < 2.5 //&& e->Pt() > 5.0
541     && !isMuonOverlap && !isElectronOverlap
542     ) {
543     fGoodElectronPtHist->Fill(e->Pt());
544     fGoodElectronEtaHist->Fill(e->Eta());
545     fGoodElectronClassification->Fill(e->Classification());
546    
547     GoodElectronsVector.push_back(fElectrons->At(i));
548     GoodElectronIsFake.push_back(isFake);
549     debug = isFake && !isFromTau;
550     }
551     }
552    
553     //fill the electron ObjArray with the contents of the vector
554     ObjArray<Electron> *GoodElectrons = new ObjArray<Electron>;
555     for (UInt_t j=0; j<GoodElectronsVector.size(); j++)
556     GoodElectrons->Add(GoodElectronsVector[j]);
557    
558    
559     //Get Jet info
560     ObjArray<Jet> GoodJets;
561     ObjArray<Jet> *GoodCentralJets = new ObjArray<Jet>;
562     ObjArray<Jet> *GoodForwardJets = new ObjArray<Jet>;
563     LoadBranch(fJetName);
564     for (UInt_t i=0; i<fJets->GetEntries(); ++i) {
565     Jet *jet = fJets->At(i);
566     //cout << "Jet " << i << endl;
567     //cout << jet->Pt() << " " << jet->Eta() << endl;
568    
569     bool isElectronOverlap = false;
570     bool isFromGenLepton = false;
571    
572     //Check for overlap with an electron
573     for (UInt_t j=0; j<GoodElectrons->GetEntries(); j++) {
574     double dphi = (abs(GoodElectrons->At(j)->Phi() - jet->Phi()) > M_PI)
575     ? abs(GoodElectrons->At(j)->Phi() - jet->Phi()) - 2*M_PI :
576     abs(GoodElectrons->At(j)->Phi() - jet->Phi());
577     double deltaR = TMath::Sqrt(dphi*dphi +
578     abs(GoodElectrons->At(j)->Eta() - jet->Eta())*
579     abs(GoodElectrons->At(j)->Eta() - jet->Eta()));
580     if (deltaR < 0.1) {
581     isElectronOverlap = true;
582     break;
583     }
584     }
585     if (isElectronOverlap) continue; //skip this jet if it was an overlap
586    
587    
588     fAllJetPtHist->Fill(jet->Pt());
589     fAllJetEtaHist->Fill(jet->Eta());
590     fAllJetPtEta2DHist->Fill(jet->Pt(), jet->Eta());
591    
592     //check whether a jet is actually from a lepton
593     for (UInt_t j=0; j<GenLeptons.GetEntries(); j++) {
594     double dphi = (abs(GenLeptons[j]->Phi() - jet->Phi()) > M_PI)
595     ? abs(GenLeptons[j]->Phi() - jet->Phi()) - 2*M_PI : abs(GenLeptons[j]->Phi() - jet->Phi());
596     double deltaR = TMath::Sqrt(dphi*dphi +
597     abs(GenLeptons[j]->Eta() - jet->Eta())*
598     abs(GenLeptons[j]->Eta() - jet->Eta()));
599     if (deltaR < 0.1) {
600     isFromGenLepton = true;
601     //debug = true;
602     if (abs(GenLeptons[j]->PdgId()) == 15) {
603     // isFromTau = true;
604     }
605     if (printDebug) cout << "Fake Jet Found" << endl;
606     break;
607     }
608     }
609    
610     const int nCuts = 4;
611     double cutValue[nCuts] = {1.0, 20., 2.5, 0.2};
612     bool passCut[nCuts] = {false, false, false, false};
613    
614     passCut[0] = (!isElectronOverlap); //This is supposed to check e/ph overlap
615     if(jet->Et() // /jet.scaleFactor()
616     > cutValue[1]) passCut[1] = true;
617     if(fabs(jet->Eta()) < cutValue[2]) passCut[2] = true;
618    
619     //Si: We don't make this cut for now, since we don't have alpha saved
620     //if(//jet.alpha() > cutValue[3] ||
621     // jet.Pt()/jet.scaleFactor() > 20.)
622     passCut[3] = true;
623    
624     // Final decision
625     bool passAllCentralJetCuts = true;
626     bool passAllForwardJetCuts = true;
627     for(int i=0; i<nCuts; i++) {
628     passAllCentralJetCuts = passAllCentralJetCuts & passCut[i];
629     passAllForwardJetCuts = passAllForwardJetCuts & ((i==2)?(!passCut[i]):passCut[i]);
630     }
631    
632     //make electron ID selection histogram
633     fCentralJetSelection->Fill(-1);
634     if (!isFromGenLepton)
635     fRealJetSelection->Fill(-1);
636     else
637     fFakeJetSelection->Fill(-1);
638    
639     for (int k=0;k<nCuts;k++) {
640     bool pass = true;
641     for (int p=0;p<=k;p++)
642     pass = (pass && passCut[p]);
643    
644     if (pass) {
645     fCentralJetSelection->Fill(k);
646     if (!isFromGenLepton)
647     fRealJetSelection->Fill(k);
648     else
649     fFakeJetSelection->Fill(k);
650     }
651     }
652    
653    
654     //Fill All Jet Histograms
655     fAllJetMaxEInEmTowers->Fill(jet->MaxEInEmTowers());
656     fAllJetMaxEInHadTowers->Fill(jet->MaxEInHadTowers());
657     fAllJetEnergyFractionH->Fill(jet->EnergyFractionH());
658     fAllJetEnergyFractionEm->Fill(jet->EnergyFractionEm());
659     fAllJetHadEnergyInHB->Fill(jet->HadEnergyInHB());
660     fAllJetHadEnergyInHO->Fill(jet->HadEnergyInHO());
661     fAllJetHadEnergyInHE->Fill(jet->HadEnergyInHE());
662     fAllJetHadEnergyInHF->Fill(jet->HadEnergyInHF());
663     fAllJetEmEnergyInEB->Fill(jet->EmEnergyInEB());
664     fAllJetEmEnergyInEE->Fill(jet->EmEnergyInEE());
665     fAllJetEmEnergyInHF->Fill(jet->EmEnergyInHF());
666     fAllJetTowersArea->Fill(jet->TowersArea());
667     fAllJetN->Fill(jet->N());
668     fAllJetN60->Fill(jet->N60());
669     fAllJetN90->Fill(jet->N90());
670     //For Fake Jets
671     if (isFromGenLepton) {
672     fFakeJetPtHist->Fill(jet->Pt());
673     fFakeJetEtaHist->Fill(jet->Eta());
674     fFakeJetPtEta2DHist->Fill(jet->Pt(), jet->Eta());
675     fAllJetIsFake->Fill(1);
676     fFakeJetMaxEInEmTowers->Fill(jet->MaxEInEmTowers());
677     fFakeJetMaxEInHadTowers->Fill(jet->MaxEInHadTowers());
678     fFakeJetEnergyFractionH->Fill(jet->EnergyFractionH());
679     fFakeJetEnergyFractionEm->Fill(jet->EnergyFractionEm());
680     fFakeJetHadEnergyInHB->Fill(jet->HadEnergyInHB());
681     fFakeJetHadEnergyInHO->Fill(jet->HadEnergyInHO());
682     fFakeJetHadEnergyInHE->Fill(jet->HadEnergyInHE());
683     fFakeJetHadEnergyInHF->Fill(jet->HadEnergyInHF());
684     fFakeJetEmEnergyInEB->Fill(jet->EmEnergyInEB());
685     fFakeJetEmEnergyInEE->Fill(jet->EmEnergyInEE());
686     fFakeJetEmEnergyInHF->Fill(jet->EmEnergyInHF());
687     fFakeJetTowersArea->Fill(jet->TowersArea());
688     fFakeJetN->Fill(jet->N());
689     fFakeJetN60->Fill(jet->N60());
690     fFakeJetN90->Fill(jet->N90());
691     } else { //real Jet
692     fRealJetPtHist->Fill(jet->Pt());
693     fRealJetEtaHist->Fill(jet->Eta());
694     fRealJetPtEta2DHist->Fill(jet->Pt(), jet->Eta());
695     fAllJetIsFake->Fill(0);
696     fRealJetMaxEInEmTowers->Fill(jet->MaxEInEmTowers());
697     fRealJetMaxEInHadTowers->Fill(jet->MaxEInHadTowers());
698     fRealJetEnergyFractionH->Fill(jet->EnergyFractionH());
699     fRealJetEnergyFractionEm->Fill(jet->EnergyFractionEm());
700     fRealJetHadEnergyInHB->Fill(jet->HadEnergyInHB());
701     fRealJetHadEnergyInHO->Fill(jet->HadEnergyInHO());
702     fRealJetHadEnergyInHE->Fill(jet->HadEnergyInHE());
703     fRealJetHadEnergyInHF->Fill(jet->HadEnergyInHF());
704     fRealJetEmEnergyInEB->Fill(jet->EmEnergyInEB());
705     fRealJetEmEnergyInEE->Fill(jet->EmEnergyInEE());
706     fRealJetEmEnergyInHF->Fill(jet->EmEnergyInHF());
707     fRealJetTowersArea->Fill(jet->TowersArea());
708     fRealJetN->Fill(jet->N());
709     fRealJetN60->Fill(jet->N60());
710     fRealJetN90->Fill(jet->N90());
711     }
712    
713    
714     //Save Good Jets
715     if (passAllCentralJetCuts) {
716     //GoodJets.push_back(jet);
717     GoodCentralJets->Add(jet);
718    
719     fGoodCentralJetPtHist->Fill(jet->Pt());
720     fGoodCentralJetEtaHist->Fill(jet->Eta());
721     fGoodCentralJetPtEta2DHist->Fill(jet->Pt(), jet->Eta());
722     //debug = isFromGenLepton;
723    
724     fGoodCentralJetMaxEInEmTowers->Fill(jet->MaxEInEmTowers());
725     fGoodCentralJetMaxEInHadTowers->Fill(jet->MaxEInHadTowers());
726     fGoodCentralJetEnergyFractionH->Fill(jet->EnergyFractionH());
727     fGoodCentralJetEnergyFractionEm->Fill(jet->EnergyFractionEm());
728     fGoodCentralJetHadEnergyInHB->Fill(jet->HadEnergyInHB());
729     fGoodCentralJetHadEnergyInHO->Fill(jet->HadEnergyInHO());
730     fGoodCentralJetHadEnergyInHE->Fill(jet->HadEnergyInHE());
731     fGoodCentralJetHadEnergyInHF->Fill(jet->HadEnergyInHF());
732     fGoodCentralJetEmEnergyInEB->Fill(jet->EmEnergyInEB());
733     fGoodCentralJetEmEnergyInEE->Fill(jet->EmEnergyInEE());
734     fGoodCentralJetEmEnergyInHF->Fill(jet->EmEnergyInHF());
735     fGoodCentralJetTowersArea->Fill(jet->TowersArea());
736     fGoodCentralJetN->Fill(jet->N());
737     fGoodCentralJetN60->Fill(jet->N60());
738     fGoodCentralJetN90->Fill(jet->N90());
739     }
740    
741     if(passAllForwardJetCuts)
742     GoodForwardJets->Add(jet);
743    
744     } //for all jets
745    
746     //we should sort the jets in Pt
747     //We don't sort them for now because ObjArray can't do it yet
748     // for(UInt_t i=0; i < GoodCentralJets->GetEntries(); i++)
749     // for(UInt_t j=i+1; j < GoodCentralJets->GetEntries(); j++)
750     // if(GoodCentralJets[i]->Et() < GoodCentralJets[j]->Et()) {
751     // //swap i and j
752     // Jet* tempjet = GoodCentralJets[i];
753     // GoodCentralJets[i] = GoodCentralJets[j];
754     // GoodCentralJets[j] = tempjet;
755     // }
756     //check
757    
758     if (printDebug) {
759     cout << "Check Jet Sort\n";
760     for(UInt_t i=0; i<GoodCentralJets->GetEntries(); i++)
761     cout << GoodCentralJets->At(i)->Et() << " " << GoodCentralJets->At(i)->Eta() << " "
762     << GoodCentralJets->At(i)->Phi() << endl;
763     }
764    
765     //Get MET
766     LoadBranch(fMetName);
767    
768     Met *met = fMet->At(0); //define the met
769     fMetRawPtHist->Fill(met->Pt());
770     fMetRawPhiHist->Fill(met->Phi());
771    
772     if (debug && printDebug) {
773     cout << "Correct MET for muons" << endl;
774     cout << "Original MET: " << met->Px() << " " << met->Py() << endl;
775     }
776    
777     double met_px = met->Px();
778     double met_py = met->Py();
779     for (UInt_t j=0; j < GoodMuons->GetEntries() ; j++) {
780     if (debug && printDebug) cout << "Muon " << j << " " << GoodMuons->At(j)->Px() << " "
781     <<GoodMuons->At(j)->Py() << endl;
782     met_px = met_px - GoodMuons->At(j)->Px();
783     met_py = met_py - GoodMuons->At(j)->Py();
784     }
785     if (debug && printDebug) cout << "Final MET: " << met_px << " " << met_py << endl;
786    
787     Met *muonCorrectedMet = new Met (met_px, met_py);
788     fMetMuonCorrectedPtHist->Fill(muonCorrectedMet->Pt());
789     fMetMuonCorrectedPhiHist->Fill(muonCorrectedMet->Phi());
790    
791     //Save Objects for Other Modules to use
792     AddObjThisEvt(GoodElectrons, "GoodElectrons");
793     AddObjThisEvt(GoodMuons, "GoodMuons");
794     AddObjThisEvt(GoodCentralJets, "GoodCentralJets");
795     AddObjThisEvt(GoodForwardJets, "GoodForwardJets");
796     AddObjThisEvt(muonCorrectedMet, "muonCorrectedMet");
797    
798     //Final Summary Debug Output
799     if (
800     printDebug &&
801     debug )
802    
803     {
804     cout << "Event Dump: " << fNEventsProcessed << endl;
805    
806     //print out event content to text
807     cout << "Electrons" << endl;
808     for (UInt_t i = 0; i < GoodElectrons->GetEntries(); i++) {
809     cout << i << " " << GoodElectrons->At(i)->Pt() << " " << GoodElectrons->At(i)->Eta()
810     << " " << GoodElectrons->At(i)->Phi() << " "
811     << GoodElectrons->At(i)->ESuperClusterOverP() << endl;
812     }
813    
814     cout << "Muons" << endl;
815     for (UInt_t i = 0; i < GoodMuons->GetEntries(); i++) {
816     cout << i << " " << GoodMuons->At(i)->Pt() << " " << GoodMuons->At(i)->Eta()
817     << " " << GoodMuons->At(i)->Phi() << endl;
818     }
819    
820     cout << "Central Jets" << endl;
821     for (UInt_t i = 0; i < GoodCentralJets->GetEntries(); i++) {
822     cout << i << " " << GoodCentralJets->At(i)->Pt() << " "
823     << GoodCentralJets->At(i)->Eta() << " " << GoodCentralJets->At(i)->Phi() << endl;
824     }
825    
826     cout << "CorrectedMET" << endl;
827     cout << muonCorrectedMet->Pt() << " " << muonCorrectedMet->Eta() << " "
828     << muonCorrectedMet->Phi() << endl;
829    
830    
831     //print out Generator BLock
832     LoadBranch(fMCPartName);
833     if (debug) cout << "Generator Block" << endl;
834     for (UInt_t i=0; i<fParticles->GetEntries(); ++i) {
835     MCParticle* p = fParticles->At(i);
836     if (debug)
837     cout << i << " " << p->PdgId() << " " << p->Status() << " " << p->Pt()
838     << " " << p->Eta() << " " << p->Phi() << endl;
839     }
840    
841     }
842     }
843    
844    
845     //--------------------------------------------------------------------------------------------------
846     void ObjectCleaningMod::SlaveBegin()
847     {
848     // Run startup code on the computer (slave) doing the actual analysis. Here,
849     // we typically initialize histograms and other analysis objects and request
850     // branches. For this module, we request a branch of the MitTree.
851    
852     ReqBranch(fMCPartName, fParticles);
853     ReqBranch(fTrackName, fTracks);
854     ReqBranch(fBarrelBasicClusterName, fBarrelBasicClusters);
855     ReqBranch(fBarrelSuperClusterName, fBarrelSuperClusters);
856     ReqBranch(fMuonName, fMuons);
857     ReqBranch(fElectronName, fElectrons);
858     ReqBranch(fJetName, fJets);
859     ReqBranch(fMetName, fMet);
860    
861     fGenPtHist = new TH1D("hGenPtHist",";p_{t};#",100,0.,25.);
862     fGenEtaHist = new TH1D("hGenEtaHist",";#eta;#",160,-8.,8.);
863     fTrackPtHist = new TH1D("hTrackPtHist",";p_{t};#",100,0.,25.);
864     fTrackThetaHist = new TH1D("hTrackThetaHist",";#theta;#",100,-5.0,5.0);
865     fTrackPhiHist = new TH1D("hTrackPhiHist",";p_{t};#",100,-3.5,3.5);
866     AddOutput(fTrackPhiHist);
867     AddOutput(fGenPtHist);
868     AddOutput(fGenEtaHist);
869     AddOutput(fTrackPtHist);
870     AddOutput(fTrackThetaHist);
871    
872    
873     //Muon Plots
874     fAllMuonPtHist = new TH1D("hAllMuonPtHist",";p_{t};#",25,0.,200.);
875     fAllMuonEtaHist = new TH1D("hAllMuonEtaHist",";#eta;#",21,-5.,5.);
876     fAllMuonChi2 = new TH1D("hAllMuonChi2",";Chi2;#",51,0,50);
877     fAllMuonNHits = new TH1D("hAllMuonNHits",";NHits;#",71,0,70);
878     fAllMuonBestTrackD0 = new TH1D("hAllMuonBestTrackD0",";BestTrackD0;#",100,0,0.1);
879     fAllMuonIsoR03SumPt = new TH1D("hAllMuonIsoR03SumPt",";IsoR03SumPt;#",100,0,10);
880     fAllMuonIsoR03EmEt = new TH1D("hAllMuonIsoR03EmEt", ";IsoR03EmEt;#",100,0,10);
881     fAllMuonIsoR03HadEt = new TH1D("hAllMuonIsoR03HadEt", ";IsoR03HadEt;#",100,0,10);
882     fAllMuonIsoR03EmAndHadEt = new TH1D("hAllMuonIsoR03EmAndHadEt",
883     ";IsoR03EmAndHadEt;#",100,0,10);
884     fAllMuonIsoR03HoEt = new TH1D("hAllMuonIsoR03HoEt", ";IsoR03HoEt;#",20,0,10);
885     fAllMuonIsoR03NTracks = new TH1D("hAllMuonIsoR03NTracks", ";IsoR03NTracks;#",50,0,50);
886     fAllMuonIsoR03NJets = new TH1D("hAllMuonIsoR03NJets", ";IsoR03NJets;#",10,0,10);
887     fAllMuonIsoR05SumPt = new TH1D("hAllMuonIsoR05SumPt", ";IsoR05SumPt;#",20,0,10);
888     fAllMuonIsoR05EmEt = new TH1D("hAllMuonIsoR05EmEt", ";IsoR05EmEt;#",20,0,10);
889     fAllMuonIsoR05HadEt = new TH1D("hAllMuonIsoR05HadEt", ";IsoR05HadEt;#",20,0,10);
890     fAllMuonIsoR05HoEt = new TH1D("hAllMuonIsoR05HoEt", ";IsoR05HoEt;#",20,0,10);
891     fAllMuonIsoR05NTracks = new TH1D("hAllMuonIsoR05NTracks",";IsoR05NTracks;#",50,0,50);
892     fAllMuonIsoR05NJets = new TH1D("hAllMuonIsoR05NJets", ";IsoR05NJets;#",10,0,10);
893     fAllMuonEmEnergy = new TH1D("hAllMuonEmEnergy",";EmEnergy;#",50,0,10);
894     fAllMuonHadEnergy = new TH1D("hAllMuonHadEnergy",";HadEnergy;#",60,0,30);
895     fAllMuonHoEnergy = new TH1D("hAllMuonHoEnergy",";HoEnergy;#",50,0,10);
896     fAllMuonEmS9Energy = new TH1D("hAllMuonEmS9Energy",";EmS9Energy;#",50,0,10);
897     fAllMuonHadS9Energy = new TH1D("hAllMuonHadS9Energy",";HadS9Energy;#",60,0,30);
898     fAllMuonHoS9Energy = new TH1D("hAllMuonHoS9Energy",";HoS9Energy;#",50,0,10);
899     fRealMuonPtHist = new TH1D("hRealMuonPtHist",";p_{t};#",25,0.,200.);
900     fRealMuonEtaHist = new TH1D("hRealMuonEtaHist",";#eta;#",21,-5.,5.);
901     fRealMuonChi2 = new TH1D("hRealMuonChi2",";Chi2;#",51,0,50);
902     fRealMuonNHits = new TH1D("hRealMuonNHits",";NHits;#",71,0,70);
903     fRealMuonBestTrackD0 = new TH1D("hRealMuonBestTrackD0",";BestTrackD0;#",100,0,0.1);
904     fRealMuonIsoR03SumPt = new TH1D("hRealMuonIsoR03SumPt",";IsoR03SumPt;#",100,0,10);
905     fRealMuonIsoR03EmEt = new TH1D("hRealMuonIsoR03EmEt",";IsoR03EmEt;#",100,0,10);
906     fRealMuonIsoR03HadEt = new TH1D("hRealMuonIsoR03HadEt",";IsoR03HadEt;#",100,0,10);
907     fRealMuonIsoR03EmAndHadEt = new TH1D("hRealMuonIsoR03EmAndHadEt",
908     ";IsoR03EmAndHadEt;#",100,0,10);
909     fRealMuonIsoR03HoEt = new TH1D("hRealMuonIsoR03HoEt",";IsoR03HoEt;#",20,0,10);
910     fRealMuonIsoR03NTracks = new TH1D("hRealMuonIsoR03NTracks",";IsoR03NTracks;#",50,0,50);
911     fRealMuonIsoR03NJets = new TH1D("hRealMuonIsoR03NJets", ";IsoR03NJets;#",10,0,10);
912     fRealMuonIsoR05SumPt = new TH1D("hRealMuonIsoR05SumPt", ";IsoR05SumPt;#",20,0,10);
913     fRealMuonIsoR05EmEt = new TH1D("hRealMuonIsoR05EmEt", ";IsoR05EmEt;#",20,0,10);
914     fRealMuonIsoR05HadEt = new TH1D("hRealMuonIsoR05HadEt", ";IsoR05HadEt;#",20,0,10);
915     fRealMuonIsoR05HoEt = new TH1D("hRealMuonIsoR05HoEt", ";IsoR05HoEt;#",20,0,10);
916     fRealMuonIsoR05NTracks = new TH1D("hRealMuonIsoR05NTracks",";IsoR05NTracks;#",50,0,50);
917     fRealMuonIsoR05NJets = new TH1D("hRealMuonIsoR05NJets",";IsoR05NJets;#",10,0,10);
918     fRealMuonEmEnergy = new TH1D("hRealMuonEmEnergy",";EmEnergy;#",50,0,10);
919     fRealMuonHadEnergy = new TH1D("hRealMuonHadEnergy",";HadEnergy;#",60,0,30);
920     fRealMuonHoEnergy = new TH1D("hRealMuonHoEnergy",";HoEnergy;#",50,0,10);
921     fRealMuonEmS9Energy = new TH1D("hRealMuonEmS9Energy",";EmS9Energy;#",50,0,10);
922     fRealMuonHadS9Energy = new TH1D("hRealMuonHadS9Energy",";HadS9Energy;#",60,0,30);
923     fRealMuonHoS9Energy = new TH1D("hRealMuonHoS9Energy",";HoS9Energy;#",50,0,10);
924     fFakeMuonPtHist = new TH1D("hFakeMuonPtHist",";p_{t};#",25,0.,200.);
925     fFakeMuonEtaHist = new TH1D("hFakeMuonEtaHist",";#eta;#",21,-5.,5.);
926     fFakeMuonChi2 = new TH1D("hFakeMuonChi2",";Chi2;#",51,0,50);
927     fFakeMuonNHits = new TH1D("hFakeMuonNHits", ";NHits;#",71,0,70);
928     fFakeMuonBestTrackD0 = new TH1D("hFakeMuonBestTrackD0",";BestTrackD0;#",100,0,0.1);
929     fFakeMuonIsoR03SumPt = new TH1D("hFakeMuonIsoR03SumPt",";IsoR03SumPt;#",100,0,10);
930     fFakeMuonIsoR03EmEt = new TH1D("hFakeMuonIsoR03EmEt",";IsoR03EmEt;#",100,0,10);
931     fFakeMuonIsoR03HadEt = new TH1D("hFakeMuonIsoR03HadEt",";IsoR03HadEt;#",100,0,10);
932     fFakeMuonIsoR03EmAndHadEt = new TH1D("hFakeMuonIsoR03EmAndHadEt",
933     ";IsoR03EmAndHadEt;#",100,0,10);
934     fFakeMuonIsoR03HoEt = new TH1D("hFakeMuonIsoR03HoEt",";IsoR03HoEt;#",20,0,10);
935     fFakeMuonIsoR03NTracks = new TH1D("hFakeMuonIsoR03NTracks",";IsoR03NTracks;#",50,0,50);
936     fFakeMuonIsoR03NJets = new TH1D("hFakeMuonIsoR03NJets",";IsoR03NJets;#",10,0,10);
937     fFakeMuonIsoR05SumPt = new TH1D("hFakeMuonIsoR05SumPt",";IsoR05SumPt;#",20,0,10);
938     fFakeMuonIsoR05EmEt = new TH1D("hFakeMuonIsoR05EmEt",";IsoR05EmEt;#",20,0,10);
939     fFakeMuonIsoR05HadEt = new TH1D("hFakeMuonIsoR05HadEt",";IsoR05HadEt;#",20,0,10);
940     fFakeMuonIsoR05HoEt = new TH1D("hFakeMuonIsoR05HoEt",";IsoR05HoEt;#",20,0,10);
941     fFakeMuonIsoR05NTracks = new TH1D("hFakeMuonIsoR05NTracks",";IsoR05NTracks;#",50,0,50);
942     fFakeMuonIsoR05NJets = new TH1D("hFakeMuonIsoR05NJets",";IsoR05NJets;#",10,0,10);
943     fFakeMuonEmEnergy = new TH1D("hFakeMuonEmEnergy",";EmEnergy;#",50,0,10);
944     fFakeMuonHadEnergy = new TH1D("hFakeMuonHadEnergy",";HadEnergy;#",60,0,30);
945     fFakeMuonHoEnergy = new TH1D("hFakeMuonHoEnergy",";HoEnergy;#",50,0,10);
946     fFakeMuonEmS9Energy = new TH1D("hFakeMuonEmS9Energy",";EmS9Energy;#",50,0,10);
947     fFakeMuonHadS9Energy = new TH1D("hFakeMuonHadS9Energy",";HadS9Energy;#",60,0,30);
948     fFakeMuonHoS9Energy = new TH1D("hFakeMuonHoS9Energy",";HoS9Energy;#",50,0,10);
949     fGoodMuonPtHist = new TH1D("hGoodMuonPtHist",";p_{t};#",25,0.,200.);
950     fGoodMuonEtaHist = new TH1D("hGoodMuonEtaHist",";#eta;#",21,-5.,5.);
951     fMuonSelection = new TH1D("hMuonSelection", ";MuonSelection;#",4,-1.5,2.5 ) ;
952     fRealMuonSelection = new TH1D("hRealMuonSelection",
953     ";RealMuonSelection;#",4,-1.5,2.5 ) ;
954     fFakeMuonSelection = new TH1D("hFakeMuonSelection",
955     ";FakeMuonSelection;#",4,-1.5,2.5 ) ;
956     AddOutput(fAllMuonPtHist);
957     AddOutput(fAllMuonEtaHist);
958     AddOutput(fAllMuonChi2);
959     AddOutput(fAllMuonNHits);
960     AddOutput(fAllMuonBestTrackD0);
961     AddOutput(fAllMuonIsoR03SumPt);
962     AddOutput(fAllMuonIsoR03EmEt);
963     AddOutput(fAllMuonIsoR03HadEt);
964     AddOutput(fAllMuonIsoR03EmAndHadEt);
965     AddOutput(fAllMuonIsoR03HoEt);
966     AddOutput(fAllMuonIsoR03NTracks);
967     AddOutput(fAllMuonIsoR03NJets);
968     AddOutput(fAllMuonIsoR05SumPt);
969     AddOutput(fAllMuonIsoR05EmEt);
970     AddOutput(fAllMuonIsoR05HadEt);
971     AddOutput(fAllMuonIsoR05HoEt);
972     AddOutput(fAllMuonIsoR05NTracks);
973     AddOutput(fAllMuonIsoR05NJets);
974     AddOutput(fAllMuonEmEnergy);
975     AddOutput(fAllMuonHadEnergy);
976     AddOutput(fAllMuonHoEnergy);
977     AddOutput(fAllMuonEmS9Energy);
978     AddOutput(fAllMuonHadS9Energy);
979     AddOutput(fAllMuonHoS9Energy);
980     AddOutput(fRealMuonPtHist);
981     AddOutput(fRealMuonEtaHist);
982     AddOutput(fRealMuonChi2);
983     AddOutput(fRealMuonNHits);
984     AddOutput(fRealMuonBestTrackD0);
985     AddOutput(fRealMuonIsoR03SumPt);
986     AddOutput(fRealMuonIsoR03EmEt);
987     AddOutput(fRealMuonIsoR03HadEt);
988     AddOutput(fRealMuonIsoR03EmAndHadEt);
989     AddOutput(fRealMuonIsoR03HoEt);
990     AddOutput(fRealMuonIsoR03NTracks);
991     AddOutput(fRealMuonIsoR03NJets);
992     AddOutput(fRealMuonIsoR05SumPt);
993     AddOutput(fRealMuonIsoR05EmEt);
994     AddOutput(fRealMuonIsoR05HadEt);
995     AddOutput(fRealMuonIsoR05HoEt);
996     AddOutput(fRealMuonIsoR05NTracks);
997     AddOutput(fRealMuonIsoR05NJets);
998     AddOutput(fRealMuonEmEnergy);
999     AddOutput(fRealMuonHadEnergy);
1000     AddOutput(fRealMuonHoEnergy);
1001     AddOutput(fRealMuonEmS9Energy);
1002     AddOutput(fRealMuonHadS9Energy);
1003     AddOutput(fRealMuonHoS9Energy);
1004     AddOutput(fFakeMuonPtHist);
1005     AddOutput(fFakeMuonEtaHist);
1006     AddOutput(fFakeMuonChi2);
1007     AddOutput(fFakeMuonNHits);
1008     AddOutput(fFakeMuonBestTrackD0);
1009     AddOutput(fFakeMuonIsoR03SumPt);
1010     AddOutput(fFakeMuonIsoR03EmEt);
1011     AddOutput(fFakeMuonIsoR03HadEt);
1012     AddOutput(fFakeMuonIsoR03EmAndHadEt);
1013     AddOutput(fFakeMuonIsoR03HoEt);
1014     AddOutput(fFakeMuonIsoR03NTracks);
1015     AddOutput(fFakeMuonIsoR03NJets);
1016     AddOutput(fFakeMuonIsoR05SumPt);
1017     AddOutput(fFakeMuonIsoR05EmEt);
1018     AddOutput(fFakeMuonIsoR05HadEt);
1019     AddOutput(fFakeMuonIsoR05HoEt);
1020     AddOutput(fFakeMuonIsoR05NTracks);
1021     AddOutput(fFakeMuonIsoR05NJets);
1022     AddOutput(fFakeMuonEmEnergy);
1023     AddOutput(fFakeMuonHadEnergy);
1024     AddOutput(fFakeMuonHoEnergy);
1025     AddOutput(fFakeMuonEmS9Energy);
1026     AddOutput(fFakeMuonHadS9Energy);
1027     AddOutput(fFakeMuonHoS9Energy);
1028     AddOutput(fGoodMuonPtHist);
1029     AddOutput(fGoodMuonEtaHist);
1030     AddOutput(fMuonSelection);
1031     AddOutput(fRealMuonSelection);
1032     AddOutput(fFakeMuonSelection);
1033    
1034     //Electron Plots
1035     fAllElectronPtHist = new TH1D("hAllElectronPtHist",";p_{t};#",100,0.,200.);
1036     fAllElectronEtaHist = new TH1D("hAllElectronEtaHist",";#eta;#",80,-2.,2.);
1037     fAllElectronESuperClOverP = new TH1D("hAllElectronESuperClOverP",
1038     ";ESuperClOverP;#",100,0,5.0 ) ;
1039     fAllElectronESeedClOverPout = new TH1D("hAllElectronESeedClOverPout",
1040     ";ESeedClOverPout;#",90,0,3.0 ) ;
1041     fAllElectronDeltaEtaSuperClTrackAtVtx = new TH1D("hAllElectronDeltaEtaSuperClTrackAtVtx",
1042     ";DeltaEtaSuperClTrackAtVtx;#",200,0,0.02 ) ;
1043     fAllElectronDeltaEtaSeedClTrackAtCalo = new TH1D("hAllElectronDeltaEtaSeedClTrackAtCalo",
1044     ";DeltaEtaSeedClTrackAtCalo;#",200,0,0.04 ) ;
1045     fAllElectronDeltaPhiSuperClTrackAtVtx = new TH1D("hAllElectronDeltaPhiSuperClTrackAtVtx",
1046     ";DeltaPhiSuperClTrackAtVtx;#",200,0,-.1 ) ;
1047     fAllElectronDeltaPhiSeedClTrackAtCalo = new TH1D("hAllElectronDeltaPhiSeedClTrackAtCalo",
1048     ";DeltaPhiSeedClTrackAtCalo;#",200,0,0.4 ) ;
1049     fAllElectronEPInv = new TH1D("hAllElectronEPInv",
1050     ";AllElectronEPInv;#",100,0,0.1);
1051     fAllElectronCutClass = new TH1D("hAllElectronCutClass",
1052     ";AllElectronCutClass;#",10,-0.5,9.5);
1053     fAllElectronHadronicOverEm = new TH1D("hAllElectronHadronicOverEm",
1054     ";HadronicOverEm;#",150,-0.00001,0.14999 ) ;
1055     fAllElectronE33OverE55 = new TH1D("hAllElectronE33OverE55",
1056     ";AllElectronE33OverE55;#",110,0,1.1);
1057     fAllElectronIsEnergyScaleCorrected = new TH1D("hAllElectronIsEnergyScaleCorrected",
1058     ";IsEnergyScaleCorrected;#",3,-1,1 ) ;
1059     fAllElectronIsMomentumCorrected = new TH1D("hAllElectronIsMomentumCorrected",
1060     ";IsMomentumCorrected;#",3,-1,1 ) ;
1061     fAllElectronNumberOfClusters = new TH1D("hAllElectronNumberOfClusters",
1062     ";NumberOfClusters;#",11,0,10 ) ;
1063     fAllElectronClassification = new TH1D("hAllElectronClassification",
1064     ";Classification;#",51,0,50 ) ;
1065     fAllElectronE33 = new TH1D("hAllElectronE33",";E33;#",50,0,200 ) ;
1066     fAllElectronE55 = new TH1D("hAllElectronE55",";E55;#",50,0,200 ) ;
1067     fAllElectronCovEtaEta = new TH1D("hAllElectronCovEtaEta",
1068     ";CovEtaEta;#",100,0,1.0 ) ;
1069     fAllElectronCovEtaPhi = new TH1D("hAllElectronCovEtaPhi",
1070     ";CovEtaPhi;#",100,0,1.0 ) ;
1071     fAllElectronCovPhiPhi = new TH1D("hAllElectronCovPhiPhi",
1072     ";CovPhiPhi;#",100,0,1.0 ) ;
1073     fAllElectronLat = new TH1D("hAllElectronLat",";Lat;#",20,0,10 ) ;
1074     fAllElectronZernike20 = new TH1D("hAllElectronZernike20",
1075     ";Zernike20;#",20,0,10 ) ;
1076     fAllElectronZernike42 = new TH1D("hAllElectronZernike42",
1077     ";Zernike42;#",20,0,10 ) ;
1078     fAllElectronCaloIso = new TH1D("hAllElectronCaloIso",
1079     ";CaloIso;#",100,0,10 ) ;
1080     fAllElectronTrackIso = new TH1D("hAllElectronTrackIso",
1081     ";TrackIso;#",100,0,10 ) ;
1082     fAllElectronComputedEcalIso = new TH1D("hAllElectronComputedEcalIso",
1083     ";ComputedEcalIso;#",100,0,10 ) ;
1084     fAllElectronComputedTrackIso = new TH1D("hAllElectronComputedTrackIso",
1085     ";ComputedTrackIso;#",100,0,10 ) ;
1086     fRealElectronPtHist = new TH1D("hRealElectronPtHist",";p_{t};#",100,0.,200.);
1087    
1088     fRealElectronEtaHist = new TH1D("hRealElectronEtaHist",";#eta;#",80,-2.,2.);
1089     fRealElectronESuperClOverP = new TH1D("hRealElectronESuperClOverP",
1090     ";ESuperClOverP;#",100,0,5.0 ) ;
1091     fRealElectronESeedClOverPout = new TH1D("hRealElectronESeedClOverPout",
1092     ";ESeedClOverPout;#",90,0,3.0 ) ;
1093    
1094     fRealElectronDeltaEtaSuperClTrackAtVtx = new TH1D("hRealElectronDeltaEtaSuperClTrackAtVtx",
1095     ";DeltaEtaSuperClTrackAtVtx;#",200,0,0.02 ) ;
1096     fRealElectronDeltaEtaSeedClTrackAtCalo = new TH1D("hRealElectronDeltaEtaSeedClTrackAtCalo",
1097     ";DeltaEtaSeedClTrackAtCalo;#",200,0,0.04 ) ;
1098     fRealElectronDeltaPhiSuperClTrackAtVtx = new TH1D("hRealElectronDeltaPhiSuperClTrackAtVtx",
1099     ";DeltaPhiSuperClTrackAtVtx;#",200,0,-.1 ) ;
1100     fRealElectronDeltaPhiSeedClTrackAtCalo = new TH1D("hRealElectronDeltaPhiSeedClTrackAtCalo",
1101     ";DeltaPhiSeedClTrackAtCalo;#",200,0,0.4 ) ;
1102    
1103     fRealElectronEPInv = new TH1D("hRealElectronEPInv",
1104     ";RealElectronEPInv;#",100,0,0.1);
1105     fRealElectronCutClass = new TH1D("hRealElectronCutClass",
1106     ";RealElectronCutClass;#",10,-0.5,9.5);
1107     fRealElectronHadronicOverEm = new TH1D("hRealElectronHadronicOverEm",
1108     ";HadronicOverEm;#",150,-0.00001,0.14999 ) ;
1109     fRealElectronE33OverE55 = new TH1D("hRealElectronE33OverE55",
1110     ";RealElectronE33OverE55;#",110,0,1.1);
1111     fRealElectronIsEnergyScaleCorrected = new TH1D("hRealElectronIsEnergyScaleCorrected",
1112     ";IsEnergyScaleCorrected;#",3,-1,1 ) ;
1113     fRealElectronIsMomentumCorrected = new TH1D("hRealElectronIsMomentumCorrected",
1114     ";IsMomentumCorrected;#",3,-1,1 ) ;
1115     fRealElectronNumberOfClusters = new TH1D("hRealElectronNumberOfClusters",
1116     ";NumberOfClusters;#",11,0,10 ) ;
1117     fRealElectronClassification = new TH1D("hRealElectronClassification",
1118     ";Classification;#",51,0,50 ) ;
1119     fRealElectronE33 = new TH1D("hRealElectronE33",";E33;#",50,0,200 ) ;
1120     fRealElectronE55 = new TH1D("hRealElectronE55",";E55;#",50,0,200 ) ;
1121     fRealElectronCovEtaEta = new TH1D("hRealElectronCovEtaEta",
1122     ";CovEtaEta;#",100,0,1.0 ) ;
1123     fRealElectronCovEtaPhi = new TH1D("hRealElectronCovEtaPhi",
1124     ";CovEtaPhi;#",100,0,1.0 ) ;
1125     fRealElectronCovPhiPhi = new TH1D("hRealElectronCovPhiPhi",
1126     ";CovPhiPhi;#",100,0,1.0 ) ;
1127     fRealElectronLat = new TH1D("hRealElectronLat",";Lat;#",20,0,10 ) ;
1128     fRealElectronZernike20 = new TH1D("hRealElectronZernike20",
1129     ";Zernike20;#",20,0,10 ) ;
1130     fRealElectronZernike42 = new TH1D("hRealElectronZernike42",
1131     ";Zernike42;#",20,0,10 ) ;
1132     fRealElectronCaloIso = new TH1D("hRealElectronCaloIso",
1133     ";CaloIso;#",100,0,10 ) ;
1134     fRealElectronTrackIso = new TH1D("hRealElectronTrackIso",
1135     ";TrackIso;#",100,0,10 ) ;
1136     fRealElectronComputedEcalIso = new TH1D("hRealElectronComputedEcalIso",
1137     ";ComputedEcalIso;#",100,0,10 ) ;
1138     fRealElectronComputedTrackIso = new TH1D("hRealElectronComputedTrackIso",
1139     ";ComputedTrackIso;#",100,0,10 ) ;
1140     fFakeElectronPtHist = new TH1D("hFakeElectronPtHist",";p_{t};#",100,0.,200.);
1141     fFakeElectronEtaHist = new TH1D("hFakeElectronEtaHist",";#eta;#",80,-2.,2.);
1142    
1143     fFakeElectronESuperClOverP = new TH1D("hFakeElectronESuperClOverP",
1144     ";ESuperClOverP;#",100,0,5.0 ) ;
1145     fFakeElectronESeedClOverPout = new TH1D("hFakeElectronESeedClOverPout",
1146     ";ESeedClOverPout;#",90,0,3.0 ) ;
1147    
1148     fFakeElectronDeltaEtaSuperClTrackAtVtx = new TH1D("hFakeElectronDeltaEtaSuperClTrackAtVtx",
1149     ";DeltaEtaSuperClTrackAtVtx;#",200,0,0.02 ) ;
1150     fFakeElectronDeltaEtaSeedClTrackAtCalo = new TH1D("hFakeElectronDeltaEtaSeedClTrackAtCalo",
1151     ";DeltaEtaSeedClTrackAtCalo;#",200,0,0.04 ) ;
1152     fFakeElectronDeltaPhiSuperClTrackAtVtx = new TH1D("hFakeElectronDeltaPhiSuperClTrackAtVtx",
1153     ";DeltaPhiSuperClTrackAtVtx;#",200,0,-.1 ) ;
1154     fFakeElectronDeltaPhiSeedClTrackAtCalo = new TH1D("hFakeElectronDeltaPhiSeedClTrackAtCalo",
1155     ";DeltaPhiSeedClTrackAtCalo;#",200,0,0.4 ) ;
1156    
1157     fFakeElectronEPInv = new TH1D("hFakeElectronEPInv",
1158     ";FakeElectronEPInv;#",100,0,0.1);
1159     fFakeElectronCutClass = new TH1D("hFakeElectronCutClass",
1160     ";FakeElectronCutClass;#",10,-0.5,9.5);
1161     fFakeElectronHadronicOverEm = new TH1D("hFakeElectronHadronicOverEm",
1162     ";HadronicOverEm;#",150,-0.00001,0.14999 ) ;
1163     fFakeElectronE33OverE55 = new TH1D("hFakeElectronE33OverE55",
1164     ";FakeElectronE33OverE55;#",110,0,1.1);
1165     fFakeElectronIsEnergyScaleCorrected = new TH1D("hFakeElectronIsEnergyScaleCorrected",
1166     ";IsEnergyScaleCorrected;#",3,-1,1 ) ;
1167     fFakeElectronIsMomentumCorrected = new TH1D("hFakeElectronIsMomentumCorrected",
1168     ";IsMomentumCorrected;#",3,-1,1 ) ;
1169     fFakeElectronNumberOfClusters = new TH1D("hFakeElectronNumberOfClusters",
1170     ";NumberOfClusters;#",11,0,10 ) ;
1171     fFakeElectronClassification = new TH1D("hFakeElectronClassification",
1172     ";Classification;#",51,0,50 ) ;
1173     fFakeElectronE33 = new TH1D("hFakeElectronE33",";E33;#",50,0,200 ) ;
1174     fFakeElectronE55 = new TH1D("hFakeElectronE55",";E55;#",50,0,200 ) ;
1175     fFakeElectronCovEtaEta = new TH1D("hFakeElectronCovEtaEta",
1176     ";CovEtaEta;#",100,0,1.0 ) ;
1177     fFakeElectronCovEtaPhi = new TH1D("hFakeElectronCovEtaPhi",
1178     ";CovEtaPhi;#",100,0,1.0 ) ;
1179     fFakeElectronCovPhiPhi = new TH1D("hFakeElectronCovPhiPhi",
1180     ";CovPhiPhi;#",100,0,1.0 ) ;
1181     fFakeElectronLat = new TH1D("hFakeElectronLat",";Lat;#",20,0,10 ) ;
1182     fFakeElectronZernike20 = new TH1D("hFakeElectronZernike20",
1183     ";Zernike20;#",20,0,10 ) ;
1184     fFakeElectronZernike42 = new TH1D("hFakeElectronZernike42",
1185     ";Zernike42;#",20,0,10 ) ;
1186     fFakeElectronCaloIso = new TH1D("hFakeElectronCaloIso",
1187     ";CaloIso;#",100,0,10 ) ;
1188     fFakeElectronTrackIso = new TH1D("hFakeElectronTrackIso",
1189     ";TrackIso;#",100,0,10 ) ;
1190     fFakeElectronComputedEcalIso = new TH1D("hFakeElectronComputedEcalIso",
1191     ";ComputedEcalIso;#",100,0,10 ) ;
1192     fFakeElectronComputedTrackIso = new TH1D("hFakeElectronComputedTrackIso",
1193     ";ComputedTrackIso;#",100,0,10 ) ;
1194     fElectronSelection = new TH1D("hElectronSelection",
1195     ";ElectronSelection;#",18,-1.5,16.5 ) ;
1196     fRealElectronSelection = new TH1D("hRealElectronSelection",
1197     ";RealElectronSelection;#",18,-1.5,16.5 ) ;
1198     fFakeElectronSelection = new TH1D("hFakeElectronSelection",
1199     ";FakeElectronSelection;#",18,-1.5,16.5 ) ;
1200     fGoodElectronPtHist = new TH1D("hGoodElectronPtHist",";p_{t};#",25,0.,200.);
1201     fGoodElectronEtaHist = new TH1D("hGoodElectronEtaHist",";#eta;#",21,-5.,5.);
1202     fGoodElectronClassification = new TH1D("hGoodElectronClassification",
1203     ";Good Electron Classification;#",51,0,50 ) ;
1204    
1205     AddOutput(fAllElectronPtHist);
1206     AddOutput(fAllElectronEtaHist);
1207     AddOutput(fAllElectronESuperClOverP);
1208     AddOutput(fAllElectronESeedClOverPout);
1209     AddOutput(fAllElectronDeltaEtaSuperClTrackAtVtx);
1210     AddOutput(fAllElectronDeltaEtaSeedClTrackAtCalo);
1211     AddOutput(fAllElectronDeltaPhiSuperClTrackAtVtx);
1212     AddOutput(fAllElectronDeltaPhiSeedClTrackAtCalo);
1213     AddOutput(fAllElectronEPInv);
1214     AddOutput(fAllElectronCutClass);
1215     AddOutput(fAllElectronHadronicOverEm);
1216     AddOutput(fAllElectronE33OverE55);
1217     AddOutput(fAllElectronIsEnergyScaleCorrected);
1218     AddOutput(fAllElectronIsMomentumCorrected);
1219     AddOutput(fAllElectronNumberOfClusters);
1220     AddOutput(fAllElectronClassification);
1221     AddOutput(fAllElectronE33);
1222     AddOutput(fAllElectronE55);
1223     AddOutput(fAllElectronCovEtaEta);
1224     AddOutput(fAllElectronCovEtaPhi);
1225     AddOutput(fAllElectronCovPhiPhi);
1226     AddOutput(fAllElectronLat);
1227     AddOutput(fAllElectronZernike20);
1228     AddOutput(fAllElectronZernike42);
1229     AddOutput(fAllElectronCaloIso);
1230     AddOutput(fAllElectronTrackIso);
1231     AddOutput(fAllElectronComputedEcalIso);
1232     AddOutput(fAllElectronComputedTrackIso);
1233     AddOutput(fRealElectronPtHist);
1234     AddOutput(fRealElectronEtaHist);
1235     AddOutput(fRealElectronESuperClOverP);
1236     AddOutput(fRealElectronESeedClOverPout);
1237     AddOutput(fRealElectronDeltaEtaSuperClTrackAtVtx);
1238     AddOutput(fRealElectronDeltaEtaSeedClTrackAtCalo);
1239     AddOutput(fRealElectronDeltaPhiSuperClTrackAtVtx);
1240     AddOutput(fRealElectronDeltaPhiSeedClTrackAtCalo);
1241     AddOutput(fRealElectronEPInv);
1242     AddOutput(fRealElectronCutClass);
1243     AddOutput(fRealElectronHadronicOverEm);
1244     AddOutput(fRealElectronE33OverE55);
1245     AddOutput(fRealElectronIsEnergyScaleCorrected);
1246     AddOutput(fRealElectronIsMomentumCorrected);
1247     AddOutput(fRealElectronNumberOfClusters);
1248     AddOutput(fRealElectronClassification);
1249     AddOutput(fRealElectronE33);
1250     AddOutput(fRealElectronE55);
1251     AddOutput(fRealElectronCovEtaEta);
1252     AddOutput(fRealElectronCovEtaPhi);
1253     AddOutput(fRealElectronCovPhiPhi);
1254     AddOutput(fRealElectronLat);
1255     AddOutput(fRealElectronZernike20);
1256     AddOutput(fRealElectronZernike42);
1257     AddOutput(fRealElectronCaloIso);
1258     AddOutput(fRealElectronTrackIso);
1259     AddOutput(fRealElectronComputedEcalIso);
1260     AddOutput(fRealElectronComputedTrackIso);
1261     AddOutput(fFakeElectronPtHist);
1262     AddOutput(fFakeElectronEtaHist);
1263     AddOutput(fFakeElectronESuperClOverP);
1264     AddOutput(fFakeElectronESeedClOverPout);
1265     AddOutput(fFakeElectronDeltaEtaSuperClTrackAtVtx);
1266     AddOutput(fFakeElectronDeltaEtaSeedClTrackAtCalo);
1267     AddOutput(fFakeElectronDeltaPhiSuperClTrackAtVtx);
1268     AddOutput(fFakeElectronDeltaPhiSeedClTrackAtCalo);
1269     AddOutput(fFakeElectronEPInv);
1270     AddOutput(fFakeElectronCutClass);
1271     AddOutput(fFakeElectronHadronicOverEm);
1272     AddOutput(fFakeElectronE33OverE55);
1273     AddOutput(fFakeElectronIsEnergyScaleCorrected);
1274     AddOutput(fFakeElectronIsMomentumCorrected);
1275     AddOutput(fFakeElectronNumberOfClusters);
1276     AddOutput(fFakeElectronClassification);
1277     AddOutput(fFakeElectronE33);
1278     AddOutput(fFakeElectronE55);
1279     AddOutput(fFakeElectronCovEtaEta);
1280     AddOutput(fFakeElectronCovEtaPhi);
1281     AddOutput(fFakeElectronCovPhiPhi);
1282     AddOutput(fFakeElectronLat);
1283     AddOutput(fFakeElectronZernike20);
1284     AddOutput(fFakeElectronZernike42);
1285     AddOutput(fFakeElectronCaloIso);
1286     AddOutput(fFakeElectronTrackIso);
1287     AddOutput(fFakeElectronComputedEcalIso);
1288     AddOutput(fFakeElectronComputedTrackIso);
1289     AddOutput(fElectronSelection);
1290     AddOutput(fRealElectronSelection);
1291     AddOutput(fFakeElectronSelection);
1292     AddOutput(fGoodElectronPtHist);
1293     AddOutput(fGoodElectronEtaHist);
1294     AddOutput(fGoodElectronClassification);
1295    
1296    
1297     //Jet Plots
1298     fAllJetPtHist = new TH1D("hAllJetPtHist",";All Jet p_{t};#",100,0.,200.);
1299     fAllJetEtaHist = new TH1D("hAllJetEtaHist",";All Jet #eta;#",160,-8.,8.);
1300     fAllJetPtEta2DHist = new TH2D("hAllJetPtEta2DHist",
1301     ";All Jet p_{t} vs #eta;#",25,0,100,32,-8.,8.);
1302     fAllJetMaxEInEmTowers = new TH1D("hAllJetMaxEInEmTowers",";;#",110,-100,1000 ) ;
1303     fAllJetMaxEInHadTowers = new TH1D("hAllJetMaxEInHadTowers",";;#",100,0,1000 ) ;
1304     fAllJetEnergyFractionH = new TH1D("hAllJetEnergyFractionH",";;#",100,0,2 ) ;
1305     fAllJetEnergyFractionEm = new TH1D("hAllJetEnergyFractionEm",";;#",0,0,1 ) ;
1306     fAllJetHadEnergyInHB = new TH1D("hAllJetHadEnergyInHB",";;#",100,0,100 ) ;
1307     fAllJetHadEnergyInHO = new TH1D("hAllJetHadEnergyInHO",";;#",100,0,10 ) ;
1308     fAllJetHadEnergyInHE = new TH1D("hAllJetHadEnergyInHE",";;#",100,0,1000 ) ;
1309     fAllJetHadEnergyInHF = new TH1D("hAllJetHadEnergyInHF",";;#",100,0,2000 ) ;
1310     fAllJetEmEnergyInEB = new TH1D("hAllJetEmEnergyInEB",";;#",100,0,200 ) ;
1311     fAllJetEmEnergyInEE = new TH1D("hAllJetEmEnergyInEE",";;#",100,0,500 ) ;
1312     fAllJetEmEnergyInHF = new TH1D("hAllJetEmEnergyInHF",";;#",110,-100,1000 ) ;
1313     fAllJetTowersArea = new TH1D("hAllJetTowersArea",";;#",100,0,1 ) ;
1314     fAllJetN = new TH1D("hAllJetN",";;#",80,0,40 ) ;
1315     fAllJetN60 = new TH1D("hAllJetN60",";;#",13,0,12 ) ;
1316     fAllJetN90 = new TH1D("hAllJetN90",";;#",31,0,30 ) ;
1317     fAllJetIsFake = new TH1D("hAllJetIsFake",";;#",3,-0.5,1.5) ;
1318     fCentralJetSelection = new TH1D("hCentralJetSelection",
1319     ";CentralJetSelection;#",5,-1.5,3.5 ) ;
1320     fGoodCentralJetPtHist = new TH1D("hGoodCentralJetPtHist",
1321     ";Good Jet p_{t};#",100,0.,200.);
1322     fGoodCentralJetEtaHist = new TH1D("hGoodCentralJetEtaHist",
1323     ";Good Jet #eta;#",160,-8.,8.);
1324     fGoodCentralJetPtEta2DHist = new TH2D("hGoodCentralJetPtEta2DHist",
1325     ";Good Jet p_{t} vs #eta;#",25,0,100,32,-8.,8.);
1326     fGoodCentralJetMaxEInEmTowers = new TH1D("hGoodCentralJetMaxEInEmTowers",
1327     ";;#",110,-100,1000 ) ;
1328     fGoodCentralJetMaxEInHadTowers = new TH1D("hGoodCentralJetMaxEInHadTowers",";;#",100,0,1000 ) ;
1329     fGoodCentralJetEnergyFractionH = new TH1D("hGoodCentralJetEnergyFractionH",";;#",100,0,2 ) ;
1330     fGoodCentralJetEnergyFractionEm = new TH1D("hGoodCentralJetEnergyFractionEm",
1331     ";;#",3,-0.5,1.5 ) ;
1332     fGoodCentralJetHadEnergyInHB = new TH1D("hGoodCentralJetHadEnergyInHB",";;#",100,0,100 ) ;
1333     fGoodCentralJetHadEnergyInHO = new TH1D("hGoodCentralJetHadEnergyInHO",";;#",100,0,10 ) ;
1334     fGoodCentralJetHadEnergyInHE = new TH1D("hGoodCentralJetHadEnergyInHE",";;#",100,0,1000 ) ;
1335     fGoodCentralJetHadEnergyInHF = new TH1D("hGoodCentralJetHadEnergyInHF",";;#",100,0,2000 ) ;
1336     fGoodCentralJetEmEnergyInEB = new TH1D("hGoodCentralJetEmEnergyInEB",";;#",100,0,200 ) ;
1337     fGoodCentralJetEmEnergyInEE = new TH1D("hGoodCentralJetEmEnergyInEE",";;#",100,0,500 ) ;
1338     fGoodCentralJetEmEnergyInHF = new TH1D("hGoodCentralJetEmEnergyInHF",";;#",110,-100,1000 ) ;
1339     fGoodCentralJetTowersArea = new TH1D("hGoodCentralJetTowersArea",";;#",100,0,1 ) ;
1340     fGoodCentralJetN = new TH1D("hGoodCentralJetN",";;#",80,0,40 ) ;
1341     fGoodCentralJetN60 = new TH1D("hGoodCentralJetN60",";;#",13,0,12 ) ;
1342     fGoodCentralJetN90 = new TH1D("hGoodCentralJetN90",";;#",31,0,30 ) ;
1343     fRealJetPtHist = new TH1D("hRealJetPtHist",";Real Jet p_{t};#",100,0.,200.);
1344     fRealJetEtaHist = new TH1D("hRealJetEtaHist",";Real Jet #eta;#",160,-8.,8.);
1345     fRealJetPtEta2DHist = new TH2D("hRealJetPtEta2DHist",
1346     ";Real Jet p_{t} vs #eta;#",25,0,100,32,-8.,8.);
1347     fRealJetMaxEInEmTowers = new TH1D("hRealJetMaxEInEmTowers",";;#",110,-100,1000 ) ;
1348     fRealJetMaxEInHadTowers = new TH1D("hRealJetMaxEInHadTowers",";;#",100,0,1000 ) ;
1349     fRealJetEnergyFractionH = new TH1D("hRealJetEnergyFractionH",";;#",100,0,2 ) ;
1350     fRealJetEnergyFractionEm = new TH1D("hRealJetEnergyFractionEm",";;#",3,-0.5,1.5 ) ;
1351     fRealJetHadEnergyInHB = new TH1D("hRealJetHadEnergyInHB",";;#",100,0,100 ) ;
1352     fRealJetHadEnergyInHO = new TH1D("hRealJetHadEnergyInHO",";;#",100,0,10 ) ;
1353     fRealJetHadEnergyInHE = new TH1D("hRealJetHadEnergyInHE",";;#",100,0,1000 ) ;
1354     fRealJetHadEnergyInHF = new TH1D("hRealJetHadEnergyInHF",";;#",100,0,2000 ) ;
1355     fRealJetEmEnergyInEB = new TH1D("hRealJetEmEnergyInEB",";;#",100,0,200 ) ;
1356     fRealJetEmEnergyInEE = new TH1D("hRealJetEmEnergyInEE",";;#",100,0,500 ) ;
1357     fRealJetEmEnergyInHF = new TH1D("hRealJetEmEnergyInHF",";;#",110,-100,1000 ) ;
1358     fRealJetTowersArea = new TH1D("hRealJetTowersArea",";;#",100,0,1 ) ;
1359     fRealJetN = new TH1D("hRealJetN",";;#",80,0,40 ) ;
1360     fRealJetN60 = new TH1D("hRealJetN60",";;#",13,0,12 ) ;
1361     fRealJetN90 = new TH1D("hRealJetN90",";;#",31,0,30 ) ;
1362     fRealJetSelection = new TH1D("hRealJetSelection",
1363     ";RealJetSelection;#",5,-1.5,3.5 ) ;
1364     fFakeJetPtHist = new TH1D("hFakeJetPtHist",";Fake Jet p_{t};#",100,0.,200.);
1365     fFakeJetEtaHist = new TH1D("hFakeJetEtaHist",";Fake Jet #eta;#",160,-8.,8.);
1366     fFakeJetPtEta2DHist = new TH2D("hFakeJetPtEta2DHist",
1367     ";Fake Jet p_{t} vs #eta;#",25,0,100,32,-8.,8.);
1368     fFakeJetMaxEInEmTowers = new TH1D("hFakeJetMaxEInEmTowers",";;#",110,-100,1000 ) ;
1369     fFakeJetMaxEInHadTowers = new TH1D("hFakeJetMaxEInHadTowers",";;#",100,0,1000 ) ;
1370     fFakeJetEnergyFractionH = new TH1D("hFakeJetEnergyFractionH",";;#",100,0,2 ) ;
1371     fFakeJetEnergyFractionEm = new TH1D("hFakeJetEnergyFractionEm",";;#",3,-0.5,1.5 ) ;
1372     fFakeJetHadEnergyInHB = new TH1D("hFakeJetHadEnergyInHB",";;#",100,0,100 ) ;
1373     fFakeJetHadEnergyInHO = new TH1D("hFakeJetHadEnergyInHO",";;#",100,0,10 ) ;
1374     fFakeJetHadEnergyInHE = new TH1D("hFakeJetHadEnergyInHE",";;#",100,0,1000 ) ;
1375     fFakeJetHadEnergyInHF = new TH1D("hFakeJetHadEnergyInHF",";;#",100,0,2000 ) ;
1376     fFakeJetEmEnergyInEB = new TH1D("hFakeJetEmEnergyInEB",";;#",100,0,200 ) ;
1377     fFakeJetEmEnergyInEE = new TH1D("hFakeJetEmEnergyInEE",";;#",100,0,500 ) ;
1378     fFakeJetEmEnergyInHF = new TH1D("hFakeJetEmEnergyInHF",";;#",110,-100,1000 ) ;
1379     fFakeJetTowersArea = new TH1D("hFakeJetTowersArea",";;#",100,0,1 ) ;
1380     fFakeJetN = new TH1D("hFakeJetN",";;#",80,0,40 ) ;
1381     fFakeJetN60 = new TH1D("hFakeJetN60",";;#",13,0,12 ) ;
1382     fFakeJetN90 = new TH1D("hFakeJetN90",";;#",31,0,30 ) ;
1383     fFakeJetSelection = new TH1D("hFakeJetSelection",
1384     ";FakeJetSelection;#",5,-1.5,3.5 ) ;
1385    
1386     AddOutput(fAllJetPtHist);
1387     AddOutput(fAllJetEtaHist);
1388     AddOutput(fAllJetPtEta2DHist);
1389     AddOutput(fAllJetMaxEInEmTowers);
1390     AddOutput(fAllJetMaxEInHadTowers);
1391     AddOutput(fAllJetEnergyFractionH);
1392     AddOutput(fAllJetEnergyFractionEm);
1393     AddOutput(fAllJetHadEnergyInHB);
1394     AddOutput(fAllJetHadEnergyInHO);
1395     AddOutput(fAllJetHadEnergyInHE);
1396     AddOutput(fAllJetHadEnergyInHF);
1397     AddOutput(fAllJetEmEnergyInEB);
1398     AddOutput(fAllJetEmEnergyInEE);
1399     AddOutput(fAllJetEmEnergyInHF);
1400     AddOutput(fAllJetTowersArea);
1401     AddOutput(fAllJetN);
1402     AddOutput(fAllJetN60);
1403     AddOutput(fAllJetN90);
1404     AddOutput(fAllJetIsFake);
1405     AddOutput(fCentralJetSelection);
1406     AddOutput(fGoodCentralJetPtHist);
1407     AddOutput(fGoodCentralJetEtaHist);
1408     AddOutput(fGoodCentralJetPtEta2DHist);
1409     AddOutput(fGoodCentralJetMaxEInEmTowers);
1410     AddOutput(fGoodCentralJetMaxEInHadTowers);
1411     AddOutput(fGoodCentralJetEnergyFractionH);
1412     AddOutput(fGoodCentralJetEnergyFractionEm);
1413     AddOutput(fGoodCentralJetHadEnergyInHB);
1414     AddOutput(fGoodCentralJetHadEnergyInHO);
1415     AddOutput(fGoodCentralJetHadEnergyInHE);
1416     AddOutput(fGoodCentralJetHadEnergyInHF);
1417     AddOutput(fGoodCentralJetEmEnergyInEB);
1418     AddOutput(fGoodCentralJetEmEnergyInEE);
1419     AddOutput(fGoodCentralJetEmEnergyInHF);
1420     AddOutput(fGoodCentralJetTowersArea);
1421     AddOutput(fGoodCentralJetN);
1422     AddOutput(fGoodCentralJetN60);
1423     AddOutput(fGoodCentralJetN90);
1424     AddOutput(fRealJetPtHist);
1425     AddOutput(fRealJetEtaHist);
1426     AddOutput(fRealJetPtEta2DHist);
1427     AddOutput(fRealJetMaxEInEmTowers);
1428     AddOutput(fRealJetMaxEInHadTowers);
1429     AddOutput(fRealJetEnergyFractionH);
1430     AddOutput(fRealJetEnergyFractionEm);
1431     AddOutput(fRealJetHadEnergyInHB);
1432     AddOutput(fRealJetHadEnergyInHO);
1433     AddOutput(fRealJetHadEnergyInHE);
1434     AddOutput(fRealJetHadEnergyInHF);
1435     AddOutput(fRealJetEmEnergyInEB);
1436     AddOutput(fRealJetEmEnergyInEE);
1437     AddOutput(fRealJetEmEnergyInHF);
1438     AddOutput(fRealJetTowersArea);
1439     AddOutput(fRealJetN);
1440     AddOutput(fRealJetN60);
1441     AddOutput(fRealJetN90);
1442     AddOutput(fRealJetSelection);
1443     AddOutput(fFakeJetPtHist);
1444     AddOutput(fFakeJetEtaHist);
1445     AddOutput(fFakeJetPtEta2DHist);
1446     AddOutput(fFakeJetMaxEInEmTowers);
1447     AddOutput(fFakeJetMaxEInHadTowers);
1448     AddOutput(fFakeJetEnergyFractionH);
1449     AddOutput(fFakeJetEnergyFractionEm);
1450     AddOutput(fFakeJetHadEnergyInHB);
1451     AddOutput(fFakeJetHadEnergyInHO);
1452     AddOutput(fFakeJetHadEnergyInHE);
1453     AddOutput(fFakeJetHadEnergyInHF);
1454     AddOutput(fFakeJetEmEnergyInEB);
1455     AddOutput(fFakeJetEmEnergyInEE);
1456     AddOutput(fFakeJetEmEnergyInHF);
1457     AddOutput(fFakeJetTowersArea);
1458     AddOutput(fFakeJetN);
1459     AddOutput(fFakeJetN60);
1460     AddOutput(fFakeJetN90);
1461     AddOutput(fFakeJetSelection);
1462    
1463     //MET Plots
1464     fMetRawPtHist = new TH1D("hMetRawPtHist",";p_{t};#",30,0.,300.);
1465     fMetRawPhiHist = new TH1D("hMetRawPhiHist",";#phi;#",28,-3.5,3.5);
1466     fMetMuonCorrectedPtHist = new TH1D("hMetMuonCorrectedPtHist",";p_{t};#",30,0.,300.);
1467     fMetMuonCorrectedPhiHist = new TH1D("hMetMuonCorrectedPhiHist",";#phi;#",28,-3.5,3.5);
1468     AddOutput(fMetRawPtHist);
1469     AddOutput(fMetRawPhiHist);
1470     AddOutput(fMetMuonCorrectedPtHist);
1471     AddOutput(fMetMuonCorrectedPhiHist);
1472    
1473     }
1474    
1475     //--------------------------------------------------------------------------------------------------
1476     void ObjectCleaningMod::SlaveTerminate()
1477     {
1478     // Run finishing code on the computer (slave) that did the analysis. For this
1479     // module, we dont do anything here.
1480    
1481     }
1482    
1483     //--------------------------------------------------------------------------------------------------
1484     void ObjectCleaningMod::Terminate()
1485     {
1486     // Run finishing code on the client computer. For this module, we dont do
1487     // anything here.
1488     }