ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/TreeMod/src/ObjectCleaningMod.cc
Revision: 1.4
Committed: Sat Sep 6 19:04:50 2008 UTC (16 years, 8 months ago) by sixie
Content type: text/plain
Branch: MAIN
Changes since 1.3: +19 -5 lines
Log Message:
update to account for changes to isolation computation

File Contents

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