ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/src/MuonTools.cc
Revision: 1.26
Committed: Tue Apr 24 11:45:53 2012 UTC (13 years ago) by fabstoec
Content type: text/plain
Branch: MAIN
Changes since 1.25: +7 -1 lines
Log Message:
added features for Hgg LeptonTag analysis

File Contents

# User Rev Content
1 fabstoec 1.26 // $Id: MuonTools.cc,v 1.25 2012/04/15 12:07:00 sixie Exp $
2 loizides 1.5
3 pharris 1.2 #include "MitPhysics/Utils/interface/MuonTools.h"
4 loizides 1.5 #include <TFile.h>
5    
6 loizides 1.10 ClassImp(mithep::MuonTools)
7    
8 pharris 1.1 using namespace mithep;
9    
10 loizides 1.5 //--------------------------------------------------------------------------------------------------
11     MuonTools::MuonTools(const char *mutemp, const char *pitemp) :
12     fIsInit(kFALSE),
13     fmuon_em_etaEmi(0),
14     fmuon_had_etaEmi(0),
15     fmuon_had_etaTmi(0),
16     fmuon_em_etaB(0),
17     fmuon_had_etaB(0),
18     fmuon_ho_etaB(0),
19     fmuon_had_etaTpl(0),
20     fmuon_em_etaEpl(0),
21     fmuon_had_etaEpl(0),
22 pharris 1.1 fpion_em_etaEmi(0),
23     fpion_had_etaEmi(0),
24     fpion_had_etaTmi(0),
25     fpion_em_etaB(0),
26     fpion_had_etaB(0),
27     fpion_ho_etaB(0),
28     fpion_had_etaTpl(0),
29     fpion_em_etaEpl(0),
30 loizides 1.5 fpion_had_etaEpl(0)
31     {
32     // Constructor.
33    
34     if (mutemp && pitemp)
35     Init(mutemp, pitemp);
36     }
37    
38     //--------------------------------------------------------------------------------------------------
39     MuonTools::~MuonTools()
40     {
41     // Destructor.
42    
43     DeleteHistos();
44     }
45    
46     //--------------------------------------------------------------------------------------------------
47     void MuonTools::DeleteHistos()
48     {
49     // Delete histograms.
50    
51     if (fIsInit) {
52     delete fpion_em_etaEmi;
53     delete fpion_had_etaEmi;
54     delete fpion_had_etaTmi;
55     delete fpion_em_etaB;
56     delete fpion_had_etaB;
57     delete fpion_ho_etaB;
58     delete fpion_had_etaTpl;
59     delete fpion_em_etaEpl;
60     delete fpion_had_etaEpl;
61     delete fmuon_em_etaEmi;
62     delete fmuon_had_etaEmi;
63     delete fmuon_had_etaTmi;
64     delete fmuon_em_etaB;
65     delete fmuon_had_etaB;
66     delete fmuon_ho_etaB;
67     delete fmuon_had_etaTpl;
68     delete fmuon_em_etaEpl;
69     delete fmuon_had_etaEpl;
70     fpion_em_etaEmi = 0;
71     fpion_had_etaEmi = 0;
72     fpion_had_etaTmi = 0;
73     fpion_em_etaB = 0;
74     fpion_had_etaB = 0;
75     fpion_ho_etaB = 0;
76     fpion_had_etaTpl = 0;
77     fpion_em_etaEpl = 0;
78     fpion_had_etaEpl = 0;
79     fmuon_em_etaEmi = 0;
80     fmuon_had_etaEmi = 0;
81     fmuon_had_etaTmi = 0;
82     fmuon_em_etaB = 0;
83     fmuon_had_etaB = 0;
84     fmuon_ho_etaB = 0;
85     fmuon_had_etaTpl = 0;
86     fmuon_em_etaEpl = 0;
87     fmuon_had_etaEpl = 0;
88     fIsInit = kFALSE;
89     }
90     }
91    
92     //--------------------------------------------------------------------------------------------------
93     Double_t MuonTools::GetCaloCompatability(const Muon *iMuon,
94     Bool_t iEMSpecial, Bool_t iCorrectedHCAL) const
95     {
96 loizides 1.9 // Get calo compatibility value for given muon based on calorimeter templates.
97     // If iEMSpecial is true, then a use different arrangement of ECAL for compatibility.
98 loizides 1.5
99     Double_t lEta = iMuon->Eta();
100     Double_t aEta = TMath::Abs(lEta);
101     if (aEta > 2.5)
102     return 0.5;
103    
104     Double_t lP = iMuon->P();
105     if (lP >= 2000.)
106     lP = 1999.9;
107     if(lP < 0. )
108     return 0.5;
109    
110     Double_t lEM = -5.;
111     if (!iEMSpecial || iMuon->EmEnergy() != 0.)
112     lEM = iMuon->EmEnergy();
113    
114     Double_t lHad = iMuon->HadEnergy();
115     Double_t lHO = iMuon->HoEnergy();;
116    
117     TH2D *lTMuonHad = 0;
118     TH2D *lTPionHad = 0;
119     TH2D *lTMuonHo = 0;
120     TH2D *lTPionHo = 0;
121     TH2D *lTMuonEm = 0;
122     TH2D *lTPionEm = 0;
123    
124     if (aEta >= 1.27) {
125     if (iCorrectedHCAL)
126     lHad *= 1.8/2.2;
127     if (lEta > 0) {
128 pharris 1.1 lTPionHad = fpion_had_etaEpl;
129     lTMuonHad = fmuon_had_etaEpl;
130     } else {
131     lTPionHad = fpion_had_etaEmi;
132     lTMuonHad = fmuon_had_etaEmi;
133     }
134     }
135 loizides 1.5
136     if (aEta < 1.27 && aEta >= 1.1) {
137     if (iCorrectedHCAL)
138     lHad *= (1.8/(-2.2*aEta+5.5));
139     if (lEta > 0) {
140 pharris 1.1 lTPionHad = fpion_had_etaTpl;
141     lTMuonHad = fmuon_had_etaTpl;
142     } else {
143     lTPionHad = fpion_had_etaTmi;
144     lTMuonHad = fmuon_had_etaTmi;
145     }
146     }
147 loizides 1.5
148     if (aEta < 1.1) {
149     if(iCorrectedHCAL)
150 loizides 1.7 lHad *= TMath::Sin(2*TMath::ATan(TMath::Exp(lEta)));
151 pharris 1.1 lTPionHad = fpion_had_etaB;
152     lTMuonHad = fmuon_had_etaB;
153     }
154 loizides 1.5 if (lEta > 1.479) {
155     lTPionEm = fpion_em_etaEpl;
156     lTMuonEm = fmuon_em_etaEpl;
157 pharris 1.1 }
158 loizides 1.5 if (aEta <= 1.479) {
159 pharris 1.1 lTPionEm = fpion_em_etaB;
160     lTMuonEm = fmuon_em_etaB;
161     }
162 loizides 1.5 if (lEta < -1.479) {
163 pharris 1.1 lTPionEm = fpion_em_etaEmi;
164     lTMuonEm = fmuon_em_etaEmi;
165     }
166 loizides 1.5 if (aEta < 1.28) {
167 pharris 1.1 lTPionHo = fpion_ho_etaB;
168     lTMuonHo = fmuon_ho_etaB;
169     }
170    
171 loizides 1.5 Double_t lPBX = 1.;
172     Double_t lPSX = 1.;
173     Double_t lPBY = 1.;
174     Double_t lPSY = 1.;
175     Double_t lPBZ = 1.;
176     Double_t lPSZ = 1.;
177     if (!Overflow(lTPionEm, lP,lEM))
178     lPBX = lTPionEm ->GetBinContent(lTPionEm ->GetXaxis()->FindBin(lP),
179     lTPionEm ->GetYaxis()->FindBin(lEM));
180     if (!Overflow(lTPionHad,lP,lHad))
181     lPBY = lTPionHad->GetBinContent(lTPionHad->GetXaxis()->FindBin(lP),
182     lTPionHad->GetYaxis()->FindBin(lHad));
183     if (!Overflow(lTPionHo, lP,lHO))
184     lPBZ = lTPionHo ->GetBinContent(lTPionHo ->GetXaxis()->FindBin(lP),
185     lTPionHo ->GetYaxis()->FindBin(lHO));
186     if (!Overflow(lTMuonEm, lP,lEM ))
187     lPSX = lTMuonEm ->GetBinContent(lTMuonEm ->GetXaxis()->FindBin(lP),
188     lTMuonEm ->GetYaxis()->FindBin(lEM));
189     if (!Overflow(lTMuonHad,lP,lHad))
190     lPSY = lTMuonHad->GetBinContent(lTMuonHad->GetXaxis()->FindBin(lP),
191     lTMuonHad->GetYaxis()->FindBin(lHad));
192     if (!Overflow(lTMuonHo ,lP,lHO))
193     lPSZ = lTMuonHo ->GetBinContent(lTMuonHo ->GetXaxis()->FindBin(lP),
194     lTMuonHo ->GetYaxis()->FindBin(lHO));
195 pharris 1.1
196 loizides 1.5 if (lPSX == 0. || lPBX == 0. || (lEM <= 0. && !iEMSpecial)) {
197     lPSX = 1.;
198     lPBX = 1.;
199     }
200     if (lPSY == 0. || lPBY == 0. || lHad == 0.) {
201     lPSY = 1.;
202     lPBY = 1.;
203     }
204     if (lPSZ == 0. || lPBZ == 0. || lHO == 0.) {
205     lPSZ = 1.;
206     lPBZ = 1.;
207     }
208     if ((lPSX*lPSY*lPSZ+lPBX*lPBY*lPBZ) > 0.)
209     return lPSX*lPSY*lPSZ/(lPSX*lPSY*lPSZ+lPBX*lPBY*lPBZ);
210    
211 pharris 1.1 return 0.5;
212     }
213    
214 loizides 1.5 //--------------------------------------------------------------------------------------------------
215     Bool_t MuonTools::Init(const char *mutemp, const char *pitemp)
216     {
217     // Read histograms from given files.
218    
219     if (fIsInit) {
220     DeleteHistos();
221     }
222    
223     TDirectory::TContext context(0);
224    
225     TFile *muon_templates = TFile::Open(mutemp);
226     if (!muon_templates) {
227     Fatal("Init", "Could not open file %s", mutemp);
228     return kFALSE;
229     }
230     fmuon_em_etaEmi = LoadHisto("em_etaEmi", muon_templates);
231     fmuon_had_etaEmi = LoadHisto("had_etaEmi", muon_templates);
232     fmuon_had_etaTmi = LoadHisto("had_etaTmi", muon_templates);
233     fmuon_em_etaB = LoadHisto("em_etaB", muon_templates);
234     fmuon_had_etaB = LoadHisto("had_etaB", muon_templates);
235     fmuon_ho_etaB = LoadHisto("ho_etaB", muon_templates);
236     fmuon_had_etaTpl = LoadHisto("had_etaTpl", muon_templates);
237     fmuon_em_etaEpl = LoadHisto("em_etaEpl", muon_templates);
238     fmuon_had_etaEpl = LoadHisto("had_etaEpl", muon_templates);
239     muon_templates->Close();
240     delete muon_templates;
241    
242     TFile *pion_templates = TFile::Open(pitemp);
243     if (!pion_templates) {
244     Fatal("Init", "Could not open file %s", pitemp);
245     return kFALSE;
246     }
247    
248     fpion_em_etaEmi = LoadHisto("em_etaEmi", pion_templates);
249     fpion_had_etaEmi = LoadHisto("had_etaEmi", pion_templates);
250     fpion_had_etaTmi = LoadHisto("had_etaTmi", pion_templates);
251     fpion_em_etaB = LoadHisto("em_etaB", pion_templates);
252     fpion_had_etaB = LoadHisto("had_etaB", pion_templates);
253     fpion_ho_etaB = LoadHisto("ho_etaB", pion_templates);
254     fpion_had_etaTpl = LoadHisto("had_etaTpl", pion_templates);
255     fpion_em_etaEpl = LoadHisto("em_etaEpl", pion_templates);
256     fpion_had_etaEpl = LoadHisto("had_etaEpl", pion_templates);
257     pion_templates->Close();
258     delete pion_templates;
259    
260     fIsInit = kTRUE;
261     return kTRUE;
262     }
263    
264     //--------------------------------------------------------------------------------------------------
265     Bool_t MuonTools::IsGood(const mithep::Muon *iMuon, ESelType iSel) const
266     {
267     // Return true if given muon qualifies given selection criterium.
268    
269     Double_t tm2dcut = 0.;
270    
271     switch(iSel) {
272     case kAllArbitrated:
273     if (iMuon->StandaloneTrk() != 0 || iMuon->GlobalTrk()!= 0)
274     return kTRUE;
275     if (iMuon->NSegments() > 0)
276     return kTRUE;
277     break;
278     case kPromptTight:
279     return iMuon->PromptTight(Muon::kAny);
280     break;
281     case kTMOneStationLoose:
282 loizides 1.8 return iMuon->TMOneStation(999999,999999);
283 loizides 1.5 break;
284     case kTMOneStationTight:
285     return iMuon->TMOneStation();
286     break;
287     case kTMLastStationLoose:
288     return iMuon->TMLastStation(999999,999999);
289     break;
290     case kTMLastStationTight:
291     return iMuon->TMLastStation();
292     break;
293     case kTM2DCompatibilityLoose:
294     tm2dcut = 0.7;
295     break;
296     case kTM2DCompatibilityTight:
297     tm2dcut = 1.0;
298     break;
299     default:
300     return kFALSE;
301     break;
302     }
303    
304 loizides 1.8 Double_t lVal = GetSegmentCompatability(iMuon);
305     if (lVal == 0.5) // exclude this border case
306 loizides 1.5 return kFALSE;
307    
308 loizides 1.8 lVal *= 1.2;
309 loizides 1.5 lVal += 0.8*GetCaloCompatability(iMuon,kTRUE,kTRUE);
310     if (lVal > tm2dcut)
311     return kTRUE;
312 loizides 1.8
313 loizides 1.5 return kFALSE;
314     }
315    
316     //--------------------------------------------------------------------------------------------------
317     Double_t MuonTools::GetSegmentCompatability(const mithep::Muon *iMuon) const
318     {
319 loizides 1.9 // Get segment compatability for given muon based on likelihood of well defined
320     // track through chambers.
321 loizides 1.5
322     Int_t lNStationsCrossed = 0;
323     Int_t lNStationsSegment = 0;
324    
325     Int_t lStSegmentmatch[8];
326     Int_t lStCrossed[8];
327     Double_t lStBoundary[8];
328    
329     Double_t lWeight = 0.;
330     Bool_t lAdjust = kTRUE;
331     for (Int_t i0 = 0; i0 < 8; ++i0) {
332     lStBoundary[i0] = 0.;
333     if(iMuon->GetTrackDist(i0) < 999999. ) {
334     lNStationsCrossed++;
335     lStCrossed[i0] = 1;
336     if (iMuon->GetTrackDist(i0) > -10. )
337     lStBoundary[i0] = iMuon->GetTrackDist(i0);
338     } else
339     lStCrossed[i0] = 0;
340    
341 loizides 1.7 if(iMuon->GetDX(i0) < 999999.) {
342 loizides 1.5 lNStationsSegment++;
343     lStSegmentmatch[i0] = 1;
344     } else
345     lStSegmentmatch[i0] = 0;
346    
347     if(iMuon->GetDY(i0) < 999999.)
348     lAdjust = kFALSE;
349     }
350    
351     if (lNStationsCrossed == 0)
352     return 0.5;
353    
354     Double_t lStWeight[8];
355     Int_t lPCross = -1;
356     const Double_t lAtWeight = 0.5;
357     for (Int_t i0 = 0; i0< 8; ++i0) {
358     lStWeight[i0] = 0;
359     if (lStCrossed[i0] > 0) {
360     lPCross++;
361    
362     switch (lNStationsCrossed) {
363     case 1 :
364     lStWeight[i0] = 1.;
365     break;
366     case 2 :
367     if (lPCross == 0 )
368     lStWeight[i0] = 0.33;
369     else
370     lStWeight[i0] = 0.67;
371     break;
372     case 3 :
373     if (lPCross == 0)
374     lStWeight[i0] = 0.23;
375     else if (lPCross == 1)
376     lStWeight[i0] = 0.33;
377     else
378     lStWeight[i0] = 0.44;
379     break;
380     case 4 :
381     if (lPCross == 0)
382     lStWeight[i0] = 0.10;
383     else if (lPCross == 1)
384     lStWeight[i0] = 0.20;
385     else if (lPCross == 2)
386     lStWeight[i0] = 0.30;
387     else
388     lStWeight[i0] = 0.40;
389     break;
390     default :
391     lStWeight[i0] = 1./lNStationsCrossed;
392     }
393    
394     if (lStSegmentmatch[i0] <= 0 && lStBoundary[i0] != 0.)
395     lStWeight[i0] *= lAtWeight*0.5*(TMath::Erf(lStBoundary[i0]/6.)+1.);
396     else if (lStSegmentmatch[i0] <= 0 && lStBoundary[i0] == 0)
397     lStWeight[i0] = 0.;
398    
399     if (lStSegmentmatch[i0] > 0) {
400     Double_t lP2X = TMath::Power(iMuon->GetPullX(i0),2.);
401     Double_t lP2Y = TMath::Power(iMuon->GetPullY(i0),2.);
402     Double_t lD2X = TMath::Power(iMuon->GetDX(i0),2.);
403     Double_t lD2Y = TMath::Power(iMuon->GetDY(i0),2.);
404     if (iMuon->GetDY(i0) < 999999 && iMuon->GetDX(i0) < 999999)
405     lStWeight[i0] *= SigWeight(TMath::Sqrt(lD2X+lD2Y),TMath::Sqrt(lP2X+lP2Y));
406     else if (iMuon->GetDY(i0) >= 999999 && i0 < 4)
407     lStWeight[i0] *= SigWeight(iMuon->GetDX(i0),iMuon->GetPullX(i0));
408     else if(i0 < 4)
409     lStWeight[i0] *= SigWeight(iMuon->GetDY(i0),iMuon->GetPullY(i0));
410     }
411     }
412     lWeight += lStWeight[i0];
413     }
414    
415     return lWeight;
416     }
417    
418     //--------------------------------------------------------------------------------------------------
419     TH2D *MuonTools::LoadHisto(const char *name, TFile *file) const
420     {
421     // Load histogram with given name from given file and return it.
422    
423     TH2D *ret = dynamic_cast<TH2D*>(file->Get(name));
424     if (!ret) {
425     Fatal("LoadHisto", "Could not load histogram %s from file %s", name, file->GetName());
426     return 0;
427 pharris 1.1 }
428 loizides 1.5 ret->SetDirectory(0);
429     return ret;
430 pharris 1.1 }
431 ceballos 1.11 //--------------------------------------------------------------------------------------------------
432 ceballos 1.15 Bool_t MuonTools::PassD0Cut(const Muon *mu, const VertexCol *vertices, Double_t fD0Cut, Int_t nVertex)
433 ceballos 1.11 {
434     Bool_t d0cut = kFALSE;
435     const Track *mt = mu->BestTrk();
436     if (!mt) return kFALSE;
437    
438 fabstoec 1.26 if( nVertex >= (int) vertices->GetEntries() )
439     nVertex = vertices->GetEntries() - 1;
440    
441 ceballos 1.11 Double_t d0_real = 1e30;
442 ceballos 1.15 if(nVertex >= 0) d0_real = TMath::Abs(mt->D0Corrected(*vertices->At(nVertex)));
443     else {
444     Double_t distVtx = 999.0;
445     Int_t closestVtx = 0;
446     for(UInt_t nv=0; nv<vertices->GetEntries(); nv++){
447     double dz = TMath::Abs(mt->DzCorrected(*vertices->At(nv)));
448     if(dz < distVtx) {
449     distVtx = dz;
450     closestVtx = nv;
451     }
452 ceballos 1.11 }
453 ceballos 1.15 d0_real = TMath::Abs(mt->D0Corrected(*vertices->At(closestVtx)));
454 ceballos 1.11 }
455     if(d0_real < fD0Cut) d0cut = kTRUE;
456    
457     return d0cut;
458     }
459    
460     //--------------------------------------------------------------------------------------------------
461 ceballos 1.14 Bool_t MuonTools::PassD0Cut(const Muon *mu, const BeamSpotCol *beamspots, Double_t fD0Cut)
462 ceballos 1.11 {
463     Bool_t d0cut = kFALSE;
464     const Track *mt = mu->BestTrk();
465     if (!mt) return kFALSE;
466    
467     // d0 cut
468     Double_t d0_real = 99999;
469     for(UInt_t i0 = 0; i0 < beamspots->GetEntries(); i0++) {
470     Double_t pD0 = mt->D0Corrected(*beamspots->At(i0));
471     if(TMath::Abs(pD0) < TMath::Abs(d0_real)) d0_real = TMath::Abs(pD0);
472     }
473     if(d0_real < fD0Cut) d0cut = kTRUE;
474    
475     return d0cut;
476     }
477 loizides 1.5
478 ceballos 1.12 //--------------------------------------------------------------------------------------------------
479 ceballos 1.16 Bool_t MuonTools::PassDZCut(const Muon *mu, const VertexCol *vertices, Double_t fDZCut, Int_t nVertex)
480 ceballos 1.15 {
481     Bool_t dzcut = kFALSE;
482     const Track *mt = mu->BestTrk();
483     if (!mt) return kFALSE;
484    
485 fabstoec 1.26 if( nVertex >= (int) vertices->GetEntries() )
486     nVertex = vertices->GetEntries() - 1;
487    
488 ceballos 1.15 Double_t distVtx = 999.0;
489 ceballos 1.16 if(nVertex >= 0) distVtx = TMath::Abs(mt->DzCorrected(*vertices->At(nVertex)));
490     else {
491     for(UInt_t nv=0; nv<vertices->GetEntries(); nv++){
492     double dz = TMath::Abs(mt->DzCorrected(*vertices->At(nv)));
493     if(dz < distVtx) {
494     distVtx = dz;
495     }
496 ceballos 1.15 }
497     }
498    
499     if(distVtx < fDZCut) dzcut = kTRUE;
500    
501     return dzcut;
502     }
503    
504     //--------------------------------------------------------------------------------------------------
505 ceballos 1.22 Bool_t MuonTools::PassSoftMuonCut(const Muon *mu, const VertexCol *vertices, const Double_t fDZCut,
506     const Bool_t applyIso)
507 ceballos 1.12 {
508     if(mu->Pt() <= 3.0) return kFALSE;
509 sixie 1.18
510 ceballos 1.12 if(!mu->IsTrackerMuon()) return kFALSE;
511    
512     if(!mu->Quality().Quality(MuonQuality::TMLastStationAngTight)) return kFALSE;
513 ceballos 1.21
514 ceballos 1.12 if(mu->BestTrk()->NHits() <= 10) return kFALSE;
515    
516 ceballos 1.17 if(!PassD0Cut(mu, vertices, 0.2, 0)) return kFALSE;
517    
518 ceballos 1.20 if(!PassDZCut(mu, vertices, fDZCut, 0)) return kFALSE;
519 ceballos 1.21
520 ceballos 1.22 if(applyIso == kTRUE){
521     Double_t totalIso = 1.0 * mu->IsoR03SumPt() +
522     1.0 * mu->IsoR03EmEt() +
523     1.0 * mu->IsoR03HadEt();
524     if (totalIso < (mu->Pt()*0.10) && mu->Pt() > 20.0) return kFALSE;
525     }
526 ceballos 1.13
527 ceballos 1.12 return kTRUE;
528     }
529 sixie 1.23
530 sixie 1.25 Double_t MuonTools::MuonEffectiveArea(EMuonEffectiveAreaType type, Double_t Eta,
531     EMuonEffectiveAreaTarget EffectiveAreaTarget) {
532 sixie 1.23
533     Double_t EffectiveArea = 0;
534     if (fabs(Eta) < 1.0) {
535     if (type == kMuChargedIso03) EffectiveArea = 0.000;
536     if (type == kMuNeutralIso03) EffectiveArea = 0.080;
537     if (type == kMuChargedIso04) EffectiveArea = 0.000;
538     if (type == kMuNeutralIso04) EffectiveArea = 0.163;
539     if (type == kMuHadEnergy) EffectiveArea = 0.000;
540     if (type == kMuHoEnergy) EffectiveArea = 0.000;
541     if (type == kMuEmEnergy) EffectiveArea = 0.000;
542     if (type == kMuHadS9Energy) EffectiveArea = 0.016;
543     if (type == kMuHoS9Energy) EffectiveArea = 0.000;
544     if (type == kMuEmS9Energy) EffectiveArea = 0.000;
545 sixie 1.24 if (type == kMuTrkIso03) EffectiveArea = 0.000;
546     if (type == kMuEMIso03) EffectiveArea = 0.080;
547     if (type == kMuHadIso03) EffectiveArea = 0.025;
548     if (type == kMuTrkIso05) EffectiveArea = 0.000;
549     if (type == kMuEMIso05) EffectiveArea = 0.290;
550     if (type == kMuHadIso05) EffectiveArea = 0.091;
551 sixie 1.23 } else if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) {
552     if (type == kMuChargedIso03) EffectiveArea = 0.000;
553     if (type == kMuNeutralIso03) EffectiveArea = 0.083;
554     if (type == kMuChargedIso04) EffectiveArea = 0.000;
555     if (type == kMuNeutralIso04) EffectiveArea = 0.168;
556     if (type == kMuHadEnergy) EffectiveArea = 0.005;
557     if (type == kMuHoEnergy) EffectiveArea = 0.000;
558     if (type == kMuEmEnergy) EffectiveArea = 0.000;
559     if (type == kMuHadS9Energy) EffectiveArea = 0.041;
560     if (type == kMuHoS9Energy) EffectiveArea = 0.000;
561     if (type == kMuEmS9Energy) EffectiveArea = 0.000;
562 sixie 1.24 if (type == kMuTrkIso03) EffectiveArea = 0.000;
563     if (type == kMuEMIso03) EffectiveArea = 0.043;
564     if (type == kMuHadIso03) EffectiveArea = 0.028;
565     if (type == kMuTrkIso05) EffectiveArea = 0.000;
566     if (type == kMuEMIso05) EffectiveArea = 0.184;
567     if (type == kMuHadIso05) EffectiveArea = 0.106;
568 sixie 1.23 } else if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) {
569     if (type == kMuChargedIso03) EffectiveArea = 0.000;
570     if (type == kMuNeutralIso03) EffectiveArea = 0.060;
571     if (type == kMuChargedIso04) EffectiveArea = 0.000;
572     if (type == kMuNeutralIso04) EffectiveArea = 0.131;
573     if (type == kMuHadEnergy) EffectiveArea = 0.020;
574     if (type == kMuHoEnergy) EffectiveArea = 0.000;
575     if (type == kMuEmEnergy) EffectiveArea = 0.000;
576     if (type == kMuHadS9Energy) EffectiveArea = 0.072;
577     if (type == kMuHoS9Energy) EffectiveArea = 0.000;
578     if (type == kMuEmS9Energy) EffectiveArea = 0.000;
579 sixie 1.24 if (type == kMuTrkIso03) EffectiveArea = 0.000;
580     if (type == kMuEMIso03) EffectiveArea = 0.025;
581     if (type == kMuHadIso03) EffectiveArea = 0.036;
582     if (type == kMuTrkIso05) EffectiveArea = 0.000;
583     if (type == kMuEMIso05) EffectiveArea = 0.124;
584     if (type == kMuHadIso05) EffectiveArea = 0.140;
585 sixie 1.23 } else if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.25 ) {
586     if (type == kMuChargedIso03) EffectiveArea = 0.000;
587     if (type == kMuNeutralIso03) EffectiveArea = 0.066;
588     if (type == kMuChargedIso04) EffectiveArea = 0.000;
589     if (type == kMuNeutralIso04) EffectiveArea = 0.149;
590     if (type == kMuHadEnergy) EffectiveArea = 0.056;
591     if (type == kMuHoEnergy) EffectiveArea = 0.000;
592     if (type == kMuEmEnergy) EffectiveArea = 0.000;
593     if (type == kMuHadS9Energy) EffectiveArea = 0.148;
594     if (type == kMuHoS9Energy) EffectiveArea = 0.000;
595     if (type == kMuEmS9Energy) EffectiveArea = 0.000;
596 sixie 1.24 if (type == kMuTrkIso03) EffectiveArea = 0.000;
597     if (type == kMuEMIso03) EffectiveArea = 0.025;
598     if (type == kMuHadIso03) EffectiveArea = 0.050;
599     if (type == kMuTrkIso05) EffectiveArea = 0.000;
600     if (type == kMuEMIso05) EffectiveArea = 0.120;
601     if (type == kMuHadIso05) EffectiveArea = 0.186;
602 sixie 1.23 } else if (fabs(Eta) >= 2.25 && fabs(Eta) < 2.4 ) {
603     if (type == kMuChargedIso03) EffectiveArea = 0.000;
604     if (type == kMuNeutralIso03) EffectiveArea = 0.098;
605     if (type == kMuChargedIso04) EffectiveArea = 0.000;
606     if (type == kMuNeutralIso04) EffectiveArea = 0.200;
607     if (type == kMuHadEnergy) EffectiveArea = 0.093;
608     if (type == kMuHoEnergy) EffectiveArea = 0.000;
609     if (type == kMuEmEnergy) EffectiveArea = 0.000;
610     if (type == kMuHadS9Energy) EffectiveArea = 0.260;
611     if (type == kMuHoS9Energy) EffectiveArea = 0.000;
612     if (type == kMuEmS9Energy) EffectiveArea = 0.000;
613 sixie 1.24 if (type == kMuTrkIso03) EffectiveArea = 0.000;
614     if (type == kMuEMIso03) EffectiveArea = 0.027;
615     if (type == kMuHadIso03) EffectiveArea = 0.060;
616     if (type == kMuTrkIso05) EffectiveArea = 0.000;
617     if (type == kMuEMIso05) EffectiveArea = 0.139;
618     if (type == kMuHadIso05) EffectiveArea = 0.228;
619 sixie 1.23 }
620 sixie 1.25
621    
622     //NoCorrections
623     if (EffectiveAreaTarget == kMuEANoCorr) {
624     return 0.0;
625     }
626     //2011 Data Effective Areas
627     if (EffectiveAreaTarget == kMuEAData2011) {
628     if (type == kMuGammaIsoDR0p0To0p1) {
629     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.004;
630     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.002;
631     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.002;
632     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.000;
633     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.000;
634     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.005;
635     if (fabs(Eta) >= 2.4) EffectiveArea = 0.000;
636     }
637     if (type == kMuGammaIsoDR0p1To0p2) {
638     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.011;
639     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.008;
640     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.005;
641     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.008;
642     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.008;
643     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.011;
644     if (fabs(Eta) >= 2.4) EffectiveArea = 0.000;
645     }
646     if (type == kMuGammaIsoDR0p2To0p3) {
647     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.023;
648     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.016;
649     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.010;
650     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.014;
651     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.017;
652     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.021;
653     if (fabs(Eta) >= 2.4) EffectiveArea = 0.011;
654     }
655     if (type == kMuGammaIsoDR0p3To0p4) {
656     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.036;
657     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.026;
658     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.017;
659     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.023;
660     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.028;
661     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.032;
662     if (fabs(Eta) >= 2.4) EffectiveArea = 0.030;
663     }
664     if (type == kMuGammaIsoDR0p4To0p5) {
665     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.051;
666     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.037;
667     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.028;
668     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.033;
669     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.042;
670     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.052;
671     if (fabs(Eta) >= 2.4) EffectiveArea = 0.054;
672     }
673     if (type == kMuNeutralHadronIsoDR0p0To0p1) {
674     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.002;
675     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.001;
676     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.001;
677     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.001;
678     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.005;
679     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.007;
680     if (fabs(Eta) >= 2.4) EffectiveArea = 0.000;
681     }
682     if (type == kMuNeutralHadronIsoDR0p1To0p2) {
683     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.005;
684     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.008;
685     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.009;
686     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.009;
687     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.010;
688     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.014;
689     if (fabs(Eta) >= 2.4) EffectiveArea = 0.008;
690     }
691     if (type == kMuNeutralHadronIsoDR0p2To0p3) {
692     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.010;
693     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.015;
694     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.017;
695     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.017;
696     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.019;
697     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.024;
698     if (fabs(Eta) >= 2.4) EffectiveArea = 0.022;
699     }
700     if (type == kMuNeutralHadronIsoDR0p3To0p4) {
701     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.015;
702     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.021;
703     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.024;
704     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.032;
705     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.038;
706     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.038;
707     if (fabs(Eta) >= 2.4) EffectiveArea = 0.077;
708     }
709     if (type == kMuNeutralHadronIsoDR0p4To0p5) {
710     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.020;
711     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.026;
712     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.033;
713     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.045;
714     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.051;
715     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.114;
716     if (fabs(Eta) >= 2.4) EffectiveArea = 0.195;
717     }
718     }
719    
720     //Summer11 MC Effective Areas
721     else if (EffectiveAreaTarget == kMuEASummer11MC) {
722     //Fall11 MC Effective Areas
723     if (type == kMuGammaIsoDR0p0To0p1) {
724     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.000;
725     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.000;
726     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.000;
727     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.000;
728     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.000;
729     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.006;
730     if (fabs(Eta) >= 2.4) EffectiveArea = 0.017;
731     }
732     if (type == kMuGammaIsoDR0p1To0p2) {
733     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.012;
734     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.007;
735     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.006;
736     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.008;
737     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.019;
738     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.015;
739     if (fabs(Eta) >= 2.4) EffectiveArea = 0.007;
740     }
741     if (type == kMuGammaIsoDR0p2To0p3) {
742     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.023;
743     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.018;
744     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.013;
745     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.016;
746     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.024;
747     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.036;
748     if (fabs(Eta) >= 2.4) EffectiveArea = 0.030;
749     }
750     if (type == kMuGammaIsoDR0p3To0p4) {
751     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.038;
752     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.027;
753     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.019;
754     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.033;
755     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.041;
756     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.062;
757     if (fabs(Eta) >= 2.4) EffectiveArea = 0.058;
758     }
759     if (type == kMuGammaIsoDR0p4To0p5) {
760     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.055;
761     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.038;
762     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.032;
763     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.052;
764     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.066;
765     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.093;
766     if (fabs(Eta) >= 2.4) EffectiveArea = 0.074;
767     }
768     if (type == kMuNeutralHadronIsoDR0p0To0p1) {
769     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.002;
770     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.005;
771     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.000;
772     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.000;
773     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.000;
774     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.003;
775     if (fabs(Eta) >= 2.4) EffectiveArea = 0.011;
776     }
777     if (type == kMuNeutralHadronIsoDR0p1To0p2) {
778     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.005;
779     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.006;
780     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.009;
781     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.008;
782     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.009;
783     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.013;
784     if (fabs(Eta) >= 2.4) EffectiveArea = 0.012;
785     }
786     if (type == kMuNeutralHadronIsoDR0p2To0p3) {
787     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.009;
788     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.013;
789     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.015;
790     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.016;
791     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.020;
792     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.024;
793     if (fabs(Eta) >= 2.4) EffectiveArea = 0.017;
794     }
795     if (type == kMuNeutralHadronIsoDR0p3To0p4) {
796     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.012;
797     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.019;
798     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.021;
799     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.025;
800     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.030;
801     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.044;
802     if (fabs(Eta) >= 2.4) EffectiveArea = 0.082;
803     }
804     if (type == kMuNeutralHadronIsoDR0p4To0p5) {
805     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.016;
806     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.026;
807     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.030;
808     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.038;
809     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.048;
810     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.118;
811     if (fabs(Eta) >= 2.4) EffectiveArea = 0.168;
812     }
813     }
814    
815     //Fall11 MC Effective Areas
816     else if (EffectiveAreaTarget == kMuEAFall11MC) {
817     //Fall11 MC Effective Areas
818     if (type == kMuGammaIsoDR0p0To0p1) {
819     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.004;
820     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.002;
821     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.003;
822     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.009;
823     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.003;
824     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.011;
825     if (fabs(Eta) >= 2.4) EffectiveArea = 0.003;
826     }
827     if (type == kMuGammaIsoDR0p1To0p2) {
828     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.012;
829     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.008;
830     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.006;
831     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.012;
832     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.019;
833     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.024;
834     if (fabs(Eta) >= 2.4) EffectiveArea = 0.021;
835     }
836     if (type == kMuGammaIsoDR0p2To0p3) {
837     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.026;
838     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.020;
839     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.012;
840     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.022;
841     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.027;
842     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.034;
843     if (fabs(Eta) >= 2.4) EffectiveArea = 0.055;
844     }
845     if (type == kMuGammaIsoDR0p3To0p4) {
846     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.042;
847     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.033;
848     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.022;
849     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.036;
850     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.059;
851     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.068;
852     if (fabs(Eta) >= 2.4) EffectiveArea = 0.083;
853     }
854     if (type == kMuGammaIsoDR0p4To0p5) {
855     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.060;
856     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.043;
857     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.036;
858     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.055;
859     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.092;
860     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.115;
861     if (fabs(Eta) >= 2.4) EffectiveArea = 0.128;
862     }
863     if (type == kMuNeutralHadronIsoDR0p0To0p1) {
864     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.002;
865     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.004;
866     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.004;
867     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.004;
868     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.010;
869     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.014;
870     if (fabs(Eta) >= 2.4) EffectiveArea = 0.011;
871     }
872     if (type == kMuNeutralHadronIsoDR0p1To0p2) {
873     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.005;
874     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.007;
875     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.009;
876     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.009;
877     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.015;
878     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.017;
879     if (fabs(Eta) >= 2.4) EffectiveArea = 0.014;
880     }
881     if (type == kMuNeutralHadronIsoDR0p2To0p3) {
882     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.009;
883     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.015;
884     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.016;
885     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.018;
886     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.022;
887     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.026;
888     if (fabs(Eta) >= 2.4) EffectiveArea = 0.021;
889     }
890     if (type == kMuNeutralHadronIsoDR0p3To0p4) {
891     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.013;
892     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.021;
893     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.026;
894     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.032;
895     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.037;
896     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.042;
897     if (fabs(Eta) >= 2.4) EffectiveArea = 0.086;
898     }
899     if (type == kMuNeutralHadronIsoDR0p4To0p5) {
900     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.017;
901     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.026;
902     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.035;
903     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.046;
904     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.063;
905     if (fabs(Eta) >= 2.3 && fabs(Eta) < 2.4 ) EffectiveArea = 0.135;
906     if (fabs(Eta) >= 2.4) EffectiveArea = 0.200;
907     }
908     }
909    
910 sixie 1.23 return EffectiveArea;
911     }
912    
913