//--------------------------------------------------------------------------------------------------
// $Id $
//
// ElectronEffectiveArea
//
// Helper Class for storing effective areas
//
// Authors: S.Xie, E. DiMarco
//--------------------------------------------------------------------------------------------------

#include <Rtypes.h>
#include <cmath>

/// --> NOTE if you want to use this class as standalone without the CMSSW part
///  you need to uncomment the below line and compile normally with scramv1 b
///  Then you need just to load it in your root macro the lib with the correct path
//#define STANDALONE   // <---- this line

#ifndef ElectronEffectiveArea_H
#define ElectronEffectiveArea_H

#ifndef STANDALONE
#endif

class ElectronEffectiveArea {
public:
  ElectronEffectiveArea();
  ~ElectronEffectiveArea();

  enum ElectronEffectiveAreaType {
    kEleTrkIso03,
    kEleEcalIso03,
    kEleHcalIso03,
    kEleTrkIso04,
    kEleEcalIso04,
    kEleHcalIso04,
    kEleChargedIso03,
    kEleGammaIso03,
    kEleNeutralHadronIso03,
    kEleGammaAndNeutralHadronIso03,
    kEleChargedIso04,
    kEleGammaIso04,
    kEleNeutralHadronIso04,
    kEleGammaAndNeutralHadronIso04,
    kEleGammaIsoDR0p0To0p1,
    kEleGammaIsoDR0p1To0p2,
    kEleGammaIsoDR0p2To0p3,
    kEleGammaIsoDR0p3To0p4,
    kEleGammaIsoDR0p4To0p5,
    kEleNeutralHadronIsoDR0p0To0p1,
    kEleNeutralHadronIsoDR0p1To0p2,
    kEleNeutralHadronIsoDR0p2To0p3,
    kEleNeutralHadronIsoDR0p3To0p4,
    kEleNeutralHadronIsoDR0p4To0p5
  };

  enum ElectronEffectiveAreaTarget { kEleEANoCorr, kEleEAData2011, kEleEASummer11MC, kEleEAFall11MC, kEleEAData2012 };

  static Double_t GetElectronEffectiveArea(ElectronEffectiveAreaType type,
                                           Double_t SCEta,
                                           ElectronEffectiveAreaTarget EffectiveAreaTarget = kEleEAData2011) {
    Double_t EffectiveArea = 0;

    if (EffectiveAreaTarget == kEleEANoCorr) {
      return 0.0;
    }

    //2012 Data Effective Areas
    else if (EffectiveAreaTarget == kEleEAData2012) {
      if (type == kEleGammaIso03) {  // HCP 2012 updated
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.117;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.114;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.049;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.077;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.089;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.083;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.099;
      }
      if (type == kEleGammaIso04) {  // HCP 2012 updated
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.182;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.168;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.081;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.116;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.144;
        if (fabs(SCEta) >= 2.4 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.143;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.164;
      }
      if (type == kEleNeutralHadronIso03) {  // HCP 2012 updated
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.014;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.023;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.019;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.012;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.018;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.028;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.039;
      }
      if (type == kEleNeutralHadronIso04) {  // HCP 2012 updated
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.026;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.040;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.034;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.027;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.039;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.051;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.096;
      }
      if (type == kEleGammaAndNeutralHadronIso03) {  // HCP 2012 updated
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.130;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.137;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.067;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.089;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.107;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.110;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.138;
      }
      if (type == kEleGammaAndNeutralHadronIso04) {  // HCP 2012 updated
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.208;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.209;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.115;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.143;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.183;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.194;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.261;
      }
      if (type == kEleGammaIsoDR0p0To0p1) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.082;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.106;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.029;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.057;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.059;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.075;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.068;
      }
      if (type == kEleNeutralHadronIsoDR0p0To0p1) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.010;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.011;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.007;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.003;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.004;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.007;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.002;
      }
      if (type == kEleGammaIsoDR0p1To0p2) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.030;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.028;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.023;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.052;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.057;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.063;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.007;
      }
      if (type == kEleNeutralHadronIsoDR0p1To0p2) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.006;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.008;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.006;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.003;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.004;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.006;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.002;
      }
      if (type == kEleGammaIsoDR0p2To0p3) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.043;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.039;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.027;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.050;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.076;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.133;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.129;
      }
      if (type == kEleNeutralHadronIsoDR0p2To0p3) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.008;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.011;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.007;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.008;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.017;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.004;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.013;
      }
      if (type == kEleGammaIsoDR0p3To0p4) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.063;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.052;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.038;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.070;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.092;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.121;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.138;
      }
      if (type == kEleNeutralHadronIsoDR0p3To0p4) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.011;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.016;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.011;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.013;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.022;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.031;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.007;
      }
      if (type == kEleGammaIsoDR0p4To0p5) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.083;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.068;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.054;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.090;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.119;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.142;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.123;
      }
      if (type == kEleNeutralHadronIsoDR0p4To0p5) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.014;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.021;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.020;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.019;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.038;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.084;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.030;
      }
    }

    //2011 Data Effective Areas
    else if (EffectiveAreaTarget == kEleEAData2011) {
      if (type == kEleGammaIso03) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.081;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.084;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.048;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.089;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.092;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.097;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.110;
      }
      if (type == kEleGammaIso04) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.140;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.130;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.079;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.130;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.150;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.160;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.180;
      }
      if (type == kEleNeutralHadronIso03) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.024;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.037;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.037;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.023;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.023;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.021;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.021;
      }
      if (type == kEleNeutralHadronIso04) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.044;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.065;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.068;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.057;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.058;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.061;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.110;
      }
      if (type == kEleGammaAndNeutralHadronIso03) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.100;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.120;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.085;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.110;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.120;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.120;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.130;
      }
      if (type == kEleGammaAndNeutralHadronIso04) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.180;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.200;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.150;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.190;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.210;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.220;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.290;
      }
      if (type == kEleGammaIsoDR0p0To0p1) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.017;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.033;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.005;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.007;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.004;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.000;
      }
      if (type == kEleGammaIsoDR0p1To0p2) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.010;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.010;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.019;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.042;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.041;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.035;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.041;
      }
      if (type == kEleGammaIsoDR0p2To0p3) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.020;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.017;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.014;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.029;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.039;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.042;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.048;
      }
      if (type == kEleGammaIsoDR0p3To0p4) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.036;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.029;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.020;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.029;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.042;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.047;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.054;
      }
      if (type == kEleGammaIsoDR0p4To0p5) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.051;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.038;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.028;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.036;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.047;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.057;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.059;
      }
      if (type == kEleNeutralHadronIsoDR0p0To0p1) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.001;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.002;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.002;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.000;
      }
      if (type == kEleNeutralHadronIsoDR0p1To0p2) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.005;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.008;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.008;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.006;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.003;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.001;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.003;
      }
      if (type == kEleNeutralHadronIsoDR0p2To0p3) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.010;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.014;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.017;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.016;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.016;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.016;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.019;
      }
      if (type == kEleNeutralHadronIsoDR0p3To0p4) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.015;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.021;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.025;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.030;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.036;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.038;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.084;
      }
      if (type == kEleNeutralHadronIsoDR0p4To0p5) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.020;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.027;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.035;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.045;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.051;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.107;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.228;
      }
    }

    //Summer11 MC Effective Areas
    else if (EffectiveAreaTarget == kEleEASummer11MC) {
      //************************************************************************
      //The next 6 effective areas are taken from the Data measurement, because
      //the calculation from Summer11 was not done.
      //************************************************************************
      if (type == kEleGammaIso03) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.081;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.084;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.048;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.089;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.092;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.097;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.110;
      }
      if (type == kEleGammaIso04) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.140;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.130;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.079;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.130;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.150;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.160;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.180;
      }
      if (type == kEleNeutralHadronIso03) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.024;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.037;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.037;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.023;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.023;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.021;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.021;
      }
      if (type == kEleNeutralHadronIso04) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.044;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.065;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.068;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.057;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.058;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.061;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.110;
      }
      if (type == kEleGammaAndNeutralHadronIso03) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.100;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.120;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.085;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.110;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.120;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.120;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.130;
      }
      if (type == kEleGammaAndNeutralHadronIso04) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.180;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.200;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.150;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.190;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.210;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.220;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.290;
      }

      //************************************************************************
      //The following effective areas are from Summer11 MC
      //************************************************************************
      if (type == kEleGammaIsoDR0p0To0p1) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.015;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.030;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.004;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.010;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.014;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.024;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.023;
      }
      if (type == kEleGammaIsoDR0p1To0p2) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.012;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.010;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.009;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.037;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.046;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.055;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.046;
      }
      if (type == kEleGammaIsoDR0p2To0p3) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.021;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.018;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.013;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.026;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.038;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.045;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.059;
      }
      if (type == kEleGammaIsoDR0p3To0p4) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.036;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.030;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.017;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.036;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.058;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.073;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.083;
      }
      if (type == kEleGammaIsoDR0p4To0p5) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.053;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.037;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.032;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.048;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.062;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.085;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.118;
      }
      if (type == kEleNeutralHadronIsoDR0p0To0p1) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.000;
      }
      if (type == kEleNeutralHadronIsoDR0p1To0p2) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.004;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.007;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.009;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.004;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.003;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.004;
      }
      if (type == kEleNeutralHadronIsoDR0p2To0p3) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.008;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.013;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.016;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.013;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.014;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.016;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.021;
      }
      if (type == kEleNeutralHadronIsoDR0p3To0p4) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.012;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.017;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.020;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.024;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.040;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.036;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.086;
      }
      if (type == kEleNeutralHadronIsoDR0p4To0p5) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.016;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.026;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.030;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.038;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.051;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.105;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.169;
      }
    }

    //Fall11 MC Effective Areas
    else if (EffectiveAreaTarget == kEleEAFall11MC) {
      if (type == kEleGammaIso03) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.084;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.090;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.049;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.099;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.122;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.132;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.155;
      }
      if (type == kEleGammaIso04) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.140;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.140;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.084;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.150;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.200;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.220;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.260;
      }
      if (type == kEleNeutralHadronIso03) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.022;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.039;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.040;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.028;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.027;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.024;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.030;
      }
      if (type == kEleNeutralHadronIso04) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.041;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.068;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.075;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.068;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.072;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.077;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.140;
      }
      if (type == kEleGammaAndNeutralHadronIso03) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.110;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.130;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.089;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.130;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.150;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.160;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.190;
      }
      if (type == kEleGammaAndNeutralHadronIso04) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.180;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.210;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.160;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.220;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.270;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.300;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.410;
      }
      if (type == kEleGammaIsoDR0p0To0p1) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.014;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.020;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.004;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.012;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.016;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.021;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.012;
      }
      if (type == kEleGammaIsoDR0p1To0p2) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.012;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.011;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.015;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.042;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.055;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.068;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.067;
      }
      if (type == kEleGammaIsoDR0p2To0p3) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.024;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.020;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.017;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.038;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.051;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.066;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.080;
      }
      if (type == kEleGammaIsoDR0p3To0p4) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.040;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.032;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.021;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.047;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.066;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.083;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.123;
      }
      if (type == kEleGammaIsoDR0p4To0p5) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.059;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.041;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.037;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.057;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.095;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.123;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.133;
      }
      if (type == kEleNeutralHadronIsoDR0p0To0p1) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.002;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.003;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.000;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.000;
      }
      if (type == kEleNeutralHadronIsoDR0p1To0p2) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.006;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.008;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.010;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.006;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.005;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.002;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.007;
      }
      if (type == kEleNeutralHadronIsoDR0p2To0p3) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.009;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.014;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.018;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.016;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.017;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.020;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.021;
      }
      if (type == kEleNeutralHadronIsoDR0p3To0p4) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.013;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.019;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.027;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.035;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.037;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.043;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.110;
      }
      if (type == kEleNeutralHadronIsoDR0p4To0p5) {
        if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0)
          EffectiveArea = 0.017;
        if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479)
          EffectiveArea = 0.027;
        if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0)
          EffectiveArea = 0.036;
        if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2)
          EffectiveArea = 0.045;
        if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3)
          EffectiveArea = 0.057;
        if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4)
          EffectiveArea = 0.123;
        if (fabs(SCEta) >= 2.4)
          EffectiveArea = 0.220;
      }
    }
    return EffectiveArea;
  }
};

#endif
