ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/TreeMod/src/ObjectCleaningMod.cc
Revision: 1.3
Committed: Thu Sep 4 21:36:21 2008 UTC (16 years, 8 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.2: +14 -23 lines
Log Message:
Updated for MathUtils. Cleanup of warnings. This class needs lots of work

File Contents

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