ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/src/MuonTools.cc
Revision: 1.27
Committed: Sun May 6 12:27:41 2012 UTC (13 years ago) by ceballos
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_028, Mit_027, Mit_027a
Changes since 1.26: +164 -78 lines
Log Message:
making areas in sync with cmssw

File Contents

# User Rev Content
1 ceballos 1.27 // $Id: MuonTools.cc,v 1.26 2012/04/24 11:45:53 fabstoec 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     for (Int_t i0 = 0; i0 < 8; ++i0) {
331     lStBoundary[i0] = 0.;
332     if(iMuon->GetTrackDist(i0) < 999999. ) {
333     lNStationsCrossed++;
334     lStCrossed[i0] = 1;
335     if (iMuon->GetTrackDist(i0) > -10. )
336     lStBoundary[i0] = iMuon->GetTrackDist(i0);
337     } else
338     lStCrossed[i0] = 0;
339    
340 loizides 1.7 if(iMuon->GetDX(i0) < 999999.) {
341 loizides 1.5 lNStationsSegment++;
342     lStSegmentmatch[i0] = 1;
343     } else
344     lStSegmentmatch[i0] = 0;
345    
346     }
347    
348     if (lNStationsCrossed == 0)
349     return 0.5;
350    
351     Double_t lStWeight[8];
352     Int_t lPCross = -1;
353     const Double_t lAtWeight = 0.5;
354     for (Int_t i0 = 0; i0< 8; ++i0) {
355     lStWeight[i0] = 0;
356     if (lStCrossed[i0] > 0) {
357     lPCross++;
358    
359     switch (lNStationsCrossed) {
360     case 1 :
361     lStWeight[i0] = 1.;
362     break;
363     case 2 :
364     if (lPCross == 0 )
365     lStWeight[i0] = 0.33;
366     else
367     lStWeight[i0] = 0.67;
368     break;
369     case 3 :
370     if (lPCross == 0)
371     lStWeight[i0] = 0.23;
372     else if (lPCross == 1)
373     lStWeight[i0] = 0.33;
374     else
375     lStWeight[i0] = 0.44;
376     break;
377     case 4 :
378     if (lPCross == 0)
379     lStWeight[i0] = 0.10;
380     else if (lPCross == 1)
381     lStWeight[i0] = 0.20;
382     else if (lPCross == 2)
383     lStWeight[i0] = 0.30;
384     else
385     lStWeight[i0] = 0.40;
386     break;
387     default :
388     lStWeight[i0] = 1./lNStationsCrossed;
389     }
390    
391     if (lStSegmentmatch[i0] <= 0 && lStBoundary[i0] != 0.)
392     lStWeight[i0] *= lAtWeight*0.5*(TMath::Erf(lStBoundary[i0]/6.)+1.);
393     else if (lStSegmentmatch[i0] <= 0 && lStBoundary[i0] == 0)
394     lStWeight[i0] = 0.;
395    
396     if (lStSegmentmatch[i0] > 0) {
397     Double_t lP2X = TMath::Power(iMuon->GetPullX(i0),2.);
398     Double_t lP2Y = TMath::Power(iMuon->GetPullY(i0),2.);
399     Double_t lD2X = TMath::Power(iMuon->GetDX(i0),2.);
400     Double_t lD2Y = TMath::Power(iMuon->GetDY(i0),2.);
401     if (iMuon->GetDY(i0) < 999999 && iMuon->GetDX(i0) < 999999)
402     lStWeight[i0] *= SigWeight(TMath::Sqrt(lD2X+lD2Y),TMath::Sqrt(lP2X+lP2Y));
403     else if (iMuon->GetDY(i0) >= 999999 && i0 < 4)
404     lStWeight[i0] *= SigWeight(iMuon->GetDX(i0),iMuon->GetPullX(i0));
405     else if(i0 < 4)
406     lStWeight[i0] *= SigWeight(iMuon->GetDY(i0),iMuon->GetPullY(i0));
407     }
408     }
409     lWeight += lStWeight[i0];
410     }
411    
412     return lWeight;
413     }
414    
415     //--------------------------------------------------------------------------------------------------
416     TH2D *MuonTools::LoadHisto(const char *name, TFile *file) const
417     {
418     // Load histogram with given name from given file and return it.
419    
420     TH2D *ret = dynamic_cast<TH2D*>(file->Get(name));
421     if (!ret) {
422     Fatal("LoadHisto", "Could not load histogram %s from file %s", name, file->GetName());
423     return 0;
424 pharris 1.1 }
425 loizides 1.5 ret->SetDirectory(0);
426     return ret;
427 pharris 1.1 }
428 ceballos 1.11 //--------------------------------------------------------------------------------------------------
429 ceballos 1.15 Bool_t MuonTools::PassD0Cut(const Muon *mu, const VertexCol *vertices, Double_t fD0Cut, Int_t nVertex)
430 ceballos 1.11 {
431     Bool_t d0cut = kFALSE;
432     const Track *mt = mu->BestTrk();
433     if (!mt) return kFALSE;
434    
435 fabstoec 1.26 if( nVertex >= (int) vertices->GetEntries() )
436     nVertex = vertices->GetEntries() - 1;
437    
438 ceballos 1.11 Double_t d0_real = 1e30;
439 ceballos 1.15 if(nVertex >= 0) d0_real = TMath::Abs(mt->D0Corrected(*vertices->At(nVertex)));
440     else {
441     Double_t distVtx = 999.0;
442     Int_t closestVtx = 0;
443     for(UInt_t nv=0; nv<vertices->GetEntries(); nv++){
444     double dz = TMath::Abs(mt->DzCorrected(*vertices->At(nv)));
445     if(dz < distVtx) {
446     distVtx = dz;
447     closestVtx = nv;
448     }
449 ceballos 1.11 }
450 ceballos 1.15 d0_real = TMath::Abs(mt->D0Corrected(*vertices->At(closestVtx)));
451 ceballos 1.11 }
452     if(d0_real < fD0Cut) d0cut = kTRUE;
453    
454     return d0cut;
455     }
456    
457     //--------------------------------------------------------------------------------------------------
458 ceballos 1.14 Bool_t MuonTools::PassD0Cut(const Muon *mu, const BeamSpotCol *beamspots, Double_t fD0Cut)
459 ceballos 1.11 {
460     Bool_t d0cut = kFALSE;
461     const Track *mt = mu->BestTrk();
462     if (!mt) return kFALSE;
463    
464     // d0 cut
465     Double_t d0_real = 99999;
466     for(UInt_t i0 = 0; i0 < beamspots->GetEntries(); i0++) {
467     Double_t pD0 = mt->D0Corrected(*beamspots->At(i0));
468     if(TMath::Abs(pD0) < TMath::Abs(d0_real)) d0_real = TMath::Abs(pD0);
469     }
470     if(d0_real < fD0Cut) d0cut = kTRUE;
471    
472     return d0cut;
473     }
474 loizides 1.5
475 ceballos 1.12 //--------------------------------------------------------------------------------------------------
476 ceballos 1.16 Bool_t MuonTools::PassDZCut(const Muon *mu, const VertexCol *vertices, Double_t fDZCut, Int_t nVertex)
477 ceballos 1.15 {
478     Bool_t dzcut = kFALSE;
479     const Track *mt = mu->BestTrk();
480     if (!mt) return kFALSE;
481    
482 fabstoec 1.26 if( nVertex >= (int) vertices->GetEntries() )
483     nVertex = vertices->GetEntries() - 1;
484    
485 ceballos 1.15 Double_t distVtx = 999.0;
486 ceballos 1.16 if(nVertex >= 0) distVtx = TMath::Abs(mt->DzCorrected(*vertices->At(nVertex)));
487     else {
488     for(UInt_t nv=0; nv<vertices->GetEntries(); nv++){
489     double dz = TMath::Abs(mt->DzCorrected(*vertices->At(nv)));
490     if(dz < distVtx) {
491     distVtx = dz;
492     }
493 ceballos 1.15 }
494     }
495    
496     if(distVtx < fDZCut) dzcut = kTRUE;
497    
498     return dzcut;
499     }
500    
501     //--------------------------------------------------------------------------------------------------
502 ceballos 1.22 Bool_t MuonTools::PassSoftMuonCut(const Muon *mu, const VertexCol *vertices, const Double_t fDZCut,
503     const Bool_t applyIso)
504 ceballos 1.12 {
505     if(mu->Pt() <= 3.0) return kFALSE;
506 sixie 1.18
507 ceballos 1.12 if(!mu->IsTrackerMuon()) return kFALSE;
508    
509     if(!mu->Quality().Quality(MuonQuality::TMLastStationAngTight)) return kFALSE;
510 ceballos 1.21
511 ceballos 1.12 if(mu->BestTrk()->NHits() <= 10) return kFALSE;
512    
513 ceballos 1.17 if(!PassD0Cut(mu, vertices, 0.2, 0)) return kFALSE;
514    
515 ceballos 1.20 if(!PassDZCut(mu, vertices, fDZCut, 0)) return kFALSE;
516 ceballos 1.21
517 ceballos 1.22 if(applyIso == kTRUE){
518     Double_t totalIso = 1.0 * mu->IsoR03SumPt() +
519     1.0 * mu->IsoR03EmEt() +
520     1.0 * mu->IsoR03HadEt();
521     if (totalIso < (mu->Pt()*0.10) && mu->Pt() > 20.0) return kFALSE;
522     }
523 ceballos 1.13
524 ceballos 1.12 return kTRUE;
525     }
526 sixie 1.23
527 sixie 1.25 Double_t MuonTools::MuonEffectiveArea(EMuonEffectiveAreaType type, Double_t Eta,
528     EMuonEffectiveAreaTarget EffectiveAreaTarget) {
529 sixie 1.23
530     Double_t EffectiveArea = 0;
531     if (fabs(Eta) < 1.0) {
532     if (type == kMuChargedIso03) EffectiveArea = 0.000;
533     if (type == kMuNeutralIso03) EffectiveArea = 0.080;
534     if (type == kMuChargedIso04) EffectiveArea = 0.000;
535     if (type == kMuNeutralIso04) EffectiveArea = 0.163;
536     if (type == kMuHadEnergy) EffectiveArea = 0.000;
537     if (type == kMuHoEnergy) EffectiveArea = 0.000;
538     if (type == kMuEmEnergy) EffectiveArea = 0.000;
539     if (type == kMuHadS9Energy) EffectiveArea = 0.016;
540     if (type == kMuHoS9Energy) EffectiveArea = 0.000;
541     if (type == kMuEmS9Energy) EffectiveArea = 0.000;
542 sixie 1.24 if (type == kMuTrkIso03) EffectiveArea = 0.000;
543     if (type == kMuEMIso03) EffectiveArea = 0.080;
544     if (type == kMuHadIso03) EffectiveArea = 0.025;
545     if (type == kMuTrkIso05) EffectiveArea = 0.000;
546     if (type == kMuEMIso05) EffectiveArea = 0.290;
547     if (type == kMuHadIso05) EffectiveArea = 0.091;
548 sixie 1.23 } else if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) {
549     if (type == kMuChargedIso03) EffectiveArea = 0.000;
550     if (type == kMuNeutralIso03) EffectiveArea = 0.083;
551     if (type == kMuChargedIso04) EffectiveArea = 0.000;
552     if (type == kMuNeutralIso04) EffectiveArea = 0.168;
553     if (type == kMuHadEnergy) EffectiveArea = 0.005;
554     if (type == kMuHoEnergy) EffectiveArea = 0.000;
555     if (type == kMuEmEnergy) EffectiveArea = 0.000;
556     if (type == kMuHadS9Energy) EffectiveArea = 0.041;
557     if (type == kMuHoS9Energy) EffectiveArea = 0.000;
558     if (type == kMuEmS9Energy) EffectiveArea = 0.000;
559 sixie 1.24 if (type == kMuTrkIso03) EffectiveArea = 0.000;
560     if (type == kMuEMIso03) EffectiveArea = 0.043;
561     if (type == kMuHadIso03) EffectiveArea = 0.028;
562     if (type == kMuTrkIso05) EffectiveArea = 0.000;
563     if (type == kMuEMIso05) EffectiveArea = 0.184;
564     if (type == kMuHadIso05) EffectiveArea = 0.106;
565 sixie 1.23 } else if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) {
566     if (type == kMuChargedIso03) EffectiveArea = 0.000;
567     if (type == kMuNeutralIso03) EffectiveArea = 0.060;
568     if (type == kMuChargedIso04) EffectiveArea = 0.000;
569     if (type == kMuNeutralIso04) EffectiveArea = 0.131;
570     if (type == kMuHadEnergy) EffectiveArea = 0.020;
571     if (type == kMuHoEnergy) EffectiveArea = 0.000;
572     if (type == kMuEmEnergy) EffectiveArea = 0.000;
573     if (type == kMuHadS9Energy) EffectiveArea = 0.072;
574     if (type == kMuHoS9Energy) EffectiveArea = 0.000;
575     if (type == kMuEmS9Energy) EffectiveArea = 0.000;
576 sixie 1.24 if (type == kMuTrkIso03) EffectiveArea = 0.000;
577     if (type == kMuEMIso03) EffectiveArea = 0.025;
578     if (type == kMuHadIso03) EffectiveArea = 0.036;
579     if (type == kMuTrkIso05) EffectiveArea = 0.000;
580     if (type == kMuEMIso05) EffectiveArea = 0.124;
581     if (type == kMuHadIso05) EffectiveArea = 0.140;
582 sixie 1.23 } else if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.25 ) {
583     if (type == kMuChargedIso03) EffectiveArea = 0.000;
584     if (type == kMuNeutralIso03) EffectiveArea = 0.066;
585     if (type == kMuChargedIso04) EffectiveArea = 0.000;
586     if (type == kMuNeutralIso04) EffectiveArea = 0.149;
587     if (type == kMuHadEnergy) EffectiveArea = 0.056;
588     if (type == kMuHoEnergy) EffectiveArea = 0.000;
589     if (type == kMuEmEnergy) EffectiveArea = 0.000;
590     if (type == kMuHadS9Energy) EffectiveArea = 0.148;
591     if (type == kMuHoS9Energy) EffectiveArea = 0.000;
592     if (type == kMuEmS9Energy) EffectiveArea = 0.000;
593 sixie 1.24 if (type == kMuTrkIso03) EffectiveArea = 0.000;
594     if (type == kMuEMIso03) EffectiveArea = 0.025;
595     if (type == kMuHadIso03) EffectiveArea = 0.050;
596     if (type == kMuTrkIso05) EffectiveArea = 0.000;
597     if (type == kMuEMIso05) EffectiveArea = 0.120;
598     if (type == kMuHadIso05) EffectiveArea = 0.186;
599 sixie 1.23 } else if (fabs(Eta) >= 2.25 && fabs(Eta) < 2.4 ) {
600     if (type == kMuChargedIso03) EffectiveArea = 0.000;
601     if (type == kMuNeutralIso03) EffectiveArea = 0.098;
602     if (type == kMuChargedIso04) EffectiveArea = 0.000;
603     if (type == kMuNeutralIso04) EffectiveArea = 0.200;
604     if (type == kMuHadEnergy) EffectiveArea = 0.093;
605     if (type == kMuHoEnergy) EffectiveArea = 0.000;
606     if (type == kMuEmEnergy) EffectiveArea = 0.000;
607     if (type == kMuHadS9Energy) EffectiveArea = 0.260;
608     if (type == kMuHoS9Energy) EffectiveArea = 0.000;
609     if (type == kMuEmS9Energy) EffectiveArea = 0.000;
610 sixie 1.24 if (type == kMuTrkIso03) EffectiveArea = 0.000;
611     if (type == kMuEMIso03) EffectiveArea = 0.027;
612     if (type == kMuHadIso03) EffectiveArea = 0.060;
613     if (type == kMuTrkIso05) EffectiveArea = 0.000;
614     if (type == kMuEMIso05) EffectiveArea = 0.139;
615     if (type == kMuHadIso05) EffectiveArea = 0.228;
616 sixie 1.23 }
617 sixie 1.25
618     if (EffectiveAreaTarget == kMuEANoCorr) {
619     return 0.0;
620     }
621 ceballos 1.27
622     //2012 Data Effective Areas
623     else if (EffectiveAreaTarget == kMuEAData2012) {
624     if (type == kMuGammaIso04){
625     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.50419;
626     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.30582;
627     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.19765;
628     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.28723;
629     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.52529;
630     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.48818;
631     }
632     if (type == kMuNeutralHadronIso04){
633     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.16580;
634     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.25904;
635     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.24695;
636     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.22021;
637     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.34045;
638     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.21592;
639     }
640     if (type == kMuGammaAndNeutralHadronIso04){
641     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.674;
642     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.565;
643     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.442;
644     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.515;
645     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.821;
646     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.660;
647     }
648     if (type == kMuGammaAndNeutralHadronIso03){
649     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.382;
650     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.317;
651     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.242;
652     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.326;
653     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.462;
654     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.372;
655     }
656     if (type == kMuGammaAndNeutralHadronIso04Tight){
657     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.340;
658     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.310;
659     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.315;
660     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.415;
661     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.658;
662     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.405;
663     }
664     if (type == kMuGammaAndNeutralHadronIso03Tight){
665     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.207;
666     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.183;
667     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.177;
668     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.271;
669     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.348;
670     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.246;
671     }
672     }
673    
674 sixie 1.25 //2011 Data Effective Areas
675 ceballos 1.27 else if (EffectiveAreaTarget == kMuEAData2011) {
676    
677 sixie 1.25 if (type == kMuGammaIsoDR0p0To0p1) {
678     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.004;
679     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.002;
680     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.002;
681     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.000;
682     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.000;
683 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.005;
684 sixie 1.25 }
685     if (type == kMuGammaIsoDR0p1To0p2) {
686     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.011;
687     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.008;
688     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.005;
689     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.008;
690     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.008;
691 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.011;
692 sixie 1.25 }
693     if (type == kMuGammaIsoDR0p2To0p3) {
694     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.023;
695     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.016;
696     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.010;
697     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.014;
698     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.017;
699 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.021;
700 sixie 1.25 }
701     if (type == kMuGammaIsoDR0p3To0p4) {
702     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.036;
703     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.026;
704     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.017;
705     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.023;
706     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.028;
707 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.032;
708 sixie 1.25 }
709     if (type == kMuGammaIsoDR0p4To0p5) {
710     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.051;
711     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.037;
712     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.028;
713     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.033;
714     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.042;
715 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.052;
716 sixie 1.25 }
717     if (type == kMuNeutralHadronIsoDR0p0To0p1) {
718     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.002;
719     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.001;
720     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.001;
721     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.001;
722     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.005;
723 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.007;
724 sixie 1.25 }
725     if (type == kMuNeutralHadronIsoDR0p1To0p2) {
726     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.005;
727     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.008;
728     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.009;
729     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.009;
730     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.010;
731 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.014;
732 sixie 1.25 }
733     if (type == kMuNeutralHadronIsoDR0p2To0p3) {
734     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.010;
735     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.015;
736     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.017;
737     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.017;
738     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.019;
739 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.024;
740 sixie 1.25 }
741     if (type == kMuNeutralHadronIsoDR0p3To0p4) {
742     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.015;
743     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.021;
744     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.024;
745     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.032;
746     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.038;
747 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.038;
748 sixie 1.25 }
749     if (type == kMuNeutralHadronIsoDR0p4To0p5) {
750     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.020;
751     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.026;
752     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.033;
753     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.045;
754     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.051;
755 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.114;
756     }
757     /// BEGIN FROM SLIDE 11 OF https://indico.cern.ch/getFile.py/access?contribId=1&resId=0&materialId=slides&confId=188494
758     /// NOTE: to be used with the rho from ALL pf candidates within |eta|<2.5
759     if (type == kMuGammaIso03){
760     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.049;
761     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.5 ) EffectiveArea = 0.030;
762     if (fabs(Eta) >= 1.5 && fabs(Eta) < 2.0 ) EffectiveArea = 0.022;
763     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.034;
764     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.041;
765     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.048;
766     }
767     if (type == kMuGammaIso04){
768     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.085;
769     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.5 ) EffectiveArea = 0.052;
770     if (fabs(Eta) >= 1.5 && fabs(Eta) < 2.0 ) EffectiveArea = 0.038;
771     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.055;
772     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.070;
773     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.081;
774     }
775     if (type == kMuNeutralHadronIso03){
776     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.027;
777     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.5 ) EffectiveArea = 0.039;
778     if (fabs(Eta) >= 1.5 && fabs(Eta) < 2.0 ) EffectiveArea = 0.044;
779     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.047;
780     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.055;
781     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.065;
782     }
783     if (type == kMuNeutralHadronIso04){
784     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.046;
785     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.5 ) EffectiveArea = 0.067;
786     if (fabs(Eta) >= 1.5 && fabs(Eta) < 2.0 ) EffectiveArea = 0.074;
787     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.083;
788     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.095;
789     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.105;
790     }
791     if (type == kMuGammaAndNeutralHadronIso03){
792     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.076;
793     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.5 ) EffectiveArea = 0.070;
794     if (fabs(Eta) >= 1.5 && fabs(Eta) < 2.0 ) EffectiveArea = 0.067;
795     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.082;
796     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.097;
797     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.115;
798     }
799     if (type == kMuGammaAndNeutralHadronIso04){
800     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.132;
801     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.5 ) EffectiveArea = 0.120;
802     if (fabs(Eta) >= 1.5 && fabs(Eta) < 2.0 ) EffectiveArea = 0.114;
803     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.139;
804     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.168;
805     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.189;
806     }
807     /// END FROM SLIDE 11 OF https://indico.cern.ch/getFile.py/access?contribId=1&resId=0&materialId=slides&confId=188494
808    
809     if (type == kMuGammaIso05){
810     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.05317;
811     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.03502;
812     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.03689;
813     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.05221;
814     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.06668;
815     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.0744;
816     }
817     if (type == kMuNeutralIso05) {
818     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.06408;
819     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.07557;
820     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.08864;
821     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.11492;
822     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.13784;
823     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.18745;
824 sixie 1.25 }
825     }
826 ceballos 1.27
827 sixie 1.25 //Summer11 MC Effective Areas
828     else if (EffectiveAreaTarget == kMuEASummer11MC) {
829     if (type == kMuGammaIsoDR0p0To0p1) {
830     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.000;
831     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.000;
832     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.000;
833     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.000;
834     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.000;
835 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.006;
836 sixie 1.25 }
837     if (type == kMuGammaIsoDR0p1To0p2) {
838     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.012;
839     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.007;
840     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.006;
841     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.008;
842     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.019;
843 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.015;
844 sixie 1.25 }
845     if (type == kMuGammaIsoDR0p2To0p3) {
846     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.023;
847     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.018;
848     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.013;
849     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.016;
850     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.024;
851 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.036;
852 sixie 1.25 }
853     if (type == kMuGammaIsoDR0p3To0p4) {
854     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.038;
855     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.027;
856     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.019;
857     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.033;
858     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.041;
859 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.062;
860 sixie 1.25 }
861     if (type == kMuGammaIsoDR0p4To0p5) {
862     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.055;
863     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.038;
864     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.032;
865     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.052;
866     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.066;
867 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.093;
868 sixie 1.25 }
869     if (type == kMuNeutralHadronIsoDR0p0To0p1) {
870     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.002;
871     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.005;
872     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.000;
873     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.000;
874     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.000;
875 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.003;
876 sixie 1.25 }
877     if (type == kMuNeutralHadronIsoDR0p1To0p2) {
878     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.005;
879     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.006;
880     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.009;
881     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.008;
882     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.009;
883 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.013;
884 sixie 1.25 }
885     if (type == kMuNeutralHadronIsoDR0p2To0p3) {
886     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.009;
887     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.013;
888     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.015;
889     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.016;
890     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.020;
891 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.024;
892 sixie 1.25 }
893     if (type == kMuNeutralHadronIsoDR0p3To0p4) {
894     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.012;
895     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.019;
896     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.021;
897     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.025;
898     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.030;
899 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.044;
900 sixie 1.25 }
901     if (type == kMuNeutralHadronIsoDR0p4To0p5) {
902     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.016;
903     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.026;
904     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.030;
905     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.038;
906 ceballos 1.27 if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.048;
907     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.118;
908 sixie 1.25 }
909 ceballos 1.27 }
910    
911 sixie 1.25 //Fall11 MC Effective Areas
912     else if (EffectiveAreaTarget == kMuEAFall11MC) {
913     if (type == kMuGammaIsoDR0p0To0p1) {
914     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.004;
915     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.002;
916     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.003;
917     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.009;
918     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.003;
919 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.011;
920 sixie 1.25 }
921     if (type == kMuGammaIsoDR0p1To0p2) {
922     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.012;
923     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.008;
924     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.006;
925     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.012;
926     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.019;
927 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.024;
928 sixie 1.25 }
929     if (type == kMuGammaIsoDR0p2To0p3) {
930     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.026;
931     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.020;
932     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.012;
933     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.022;
934     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.027;
935 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.034;
936 sixie 1.25 }
937     if (type == kMuGammaIsoDR0p3To0p4) {
938     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.042;
939     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.033;
940     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.022;
941     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.036;
942     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.059;
943 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.068;
944 sixie 1.25 }
945     if (type == kMuGammaIsoDR0p4To0p5) {
946     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.060;
947     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.043;
948     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.036;
949     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.055;
950     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.092;
951 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.115;
952 sixie 1.25 }
953     if (type == kMuNeutralHadronIsoDR0p0To0p1) {
954     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.002;
955     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.004;
956     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.004;
957     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.004;
958     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.010;
959 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.014;
960 sixie 1.25 }
961     if (type == kMuNeutralHadronIsoDR0p1To0p2) {
962 ceballos 1.27 if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.005;
963 sixie 1.25 if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.007;
964     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.009;
965 ceballos 1.27 if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.009;
966     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.015;
967     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.017;
968 sixie 1.25 }
969     if (type == kMuNeutralHadronIsoDR0p2To0p3) {
970     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.009;
971     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.015;
972     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.016;
973     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.018;
974     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.022;
975 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.026;
976 sixie 1.25 }
977     if (type == kMuNeutralHadronIsoDR0p3To0p4) {
978     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.013;
979     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.021;
980     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.026;
981     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.032;
982     if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.037;
983 ceballos 1.27 if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.042;
984 sixie 1.25 }
985     if (type == kMuNeutralHadronIsoDR0p4To0p5) {
986     if (fabs(Eta) >= 0.0 && fabs(Eta) < 1.0 ) EffectiveArea = 0.017;
987     if (fabs(Eta) >= 1.0 && fabs(Eta) < 1.479 ) EffectiveArea = 0.026;
988     if (fabs(Eta) >= 1.479 && fabs(Eta) < 2.0 ) EffectiveArea = 0.035;
989     if (fabs(Eta) >= 2.0 && fabs(Eta) < 2.2 ) EffectiveArea = 0.046;
990 ceballos 1.27 if (fabs(Eta) >= 2.2 && fabs(Eta) < 2.3 ) EffectiveArea = 0.063;
991     if (fabs(Eta) >= 2.3 ) EffectiveArea = 0.135;
992 sixie 1.25 }
993     }
994    
995 ceballos 1.27 return EffectiveArea;
996    
997 sixie 1.23 }
998    
999