ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/TreeMod/src/ObjectCleaningMod.cc
Revision: 1.2
Committed: Mon Aug 18 15:01:27 2008 UTC (16 years, 8 months ago) by sixie
Content type: text/plain
Branch: MAIN
Changes since 1.1: +243 -138 lines
Log Message:
updated with usage of MitCommon Math tools

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