import FWCore.ParameterSet.Config as cms

PhotonIDProd = cms.EDProducer("PhotonIDProducer",
    #required inputs
    #What collection of photons do I run on?
    photonProducer = cms.string('photons'),                              
    photonLabel = cms.string(''),
    #What labels do I use for my products?
    photonCutBasedIDLooseLabel = cms.string('PhotonCutBasedIDLoose'),
    photonCutBasedIDTightLabel = cms.string('PhotonCutBasedIDTight'),
    photonCutBasedIDLooseEMLabel=cms.string('PhotonCutBasedIDLooseEM'),
    #What rechit collection do I use for ECAL iso?                          
    doCutBased = cms.bool(True),
    #switches, turn on quality cuts for various quantities.
    RequireFiducial = cms.bool(False),
    DoHollowConeTrackIsolationCut = cms.bool(True),
    DoSolidConeTrackIsolationCut = cms.bool(False),
    DoHollowConeNTrkCut = cms.bool(False),
    DoSolidConeNTrkCut = cms.bool(False),
    DoHadOverEMCut = cms.bool(True),
    DoEtaWidthCut = cms.bool(True),
    DoHcalTowerIsolationCut = cms.bool(True),
    DoEcalRecHitIsolationCut = cms.bool(True),
    DoEcalIsoRelativeCut = cms.bool(True),
    DoR9Cut = cms.bool(False),                               
    #LooseEM cuts EB
    LooseEMEcalIsoRelativeCutSlopeEB = cms.double(0.006),
    LooseEMEcalIsoRelativeCutOffsetEB= cms.double(4.2),
    LooseEMHcalTowerIsoSlopeEB= cms.double(0.0025),
    LooseEMHcalTowerIsoOffsetEB=cms.double(2.2),
    LooseEMHollowTrkSlopeEB=cms.double(0.),
    LooseEMHollowTrkOffsetEB=cms.double(999999999),
    LooseEMSolidTrkSlopeEB=cms.double(0.),
    LooseEMSolidTrkOffsetEB=cms.double(999999999),
    LooseEMSolidTrkEB=cms.double(999999999),
    LooseEMSolidNTrkEB=cms.int32(999999999),
    LooseEMHollowNTrkEB=cms.int32(999999999),
    LooseEMEtaWidthEB=cms.double(999999999),
    LooseEMHadOverEMEB=cms.double(0.05),
    LooseEMR9CutEB=cms.double(0.0),
    #LoosePhoton cuts EB                          
    LoosePhotonEcalIsoRelativeCutSlopeEB = cms.double(0.006),
    LoosePhotonEcalIsoRelativeCutOffsetEB= cms.double(4.2),
    LoosePhotonHcalTowerIsoSlopeEB= cms.double(0.0025),
    LoosePhotonHcalTowerIsoOffsetEB=cms.double(2.2),
    LoosePhotonHollowTrkSlopeEB=cms.double(0.001),
    LoosePhotonHollowTrkOffsetEB=cms.double(3.5),
    LoosePhotonSolidTrkSlopeEB=cms.double(0.),
    LoosePhotonSolidTrkOffsetEB=cms.double(999999999),
    LoosePhotonSolidTrkEB=cms.double(999999999),
    LoosePhotonSolidNTrkEB=cms.int32(999999999),
    LoosePhotonHollowNTrkEB=cms.int32(999999999),
    LoosePhotonEtaWidthEB=cms.double(999999999),
    LoosePhotonHadOverEMEB=cms.double(0.05),
    LoosePhotonR9CutEB=cms.double(0.0),
    #TightPhoton cuts EB
    TightPhotonEcalIsoRelativeCutSlopeEB = cms.double(0.006),
    TightPhotonEcalIsoRelativeCutOffsetEB= cms.double(4.2),
    TightPhotonHcalTowerIsoSlopeEB= cms.double(0.0025),
    TightPhotonHcalTowerIsoOffsetEB=cms.double(2.2),
    TightPhotonHollowTrkSlopeEB=cms.double(0.001),
    TightPhotonHollowTrkOffsetEB=cms.double(2.),
    TightPhotonSolidTrkSlopeEB=cms.double(0.),
    TightPhotonSolidTrkOffsetEB=cms.double(999999999),
    TightPhotonSolidTrkEB=cms.double(999999999),
    TightPhotonSolidNTrkEB=cms.int32(999999999),
    TightPhotonHollowNTrkEB=cms.int32(999999999),
    TightPhotonEtaWidthEB=cms.double(0.013),
    TightPhotonHadOverEMEB=cms.double(0.05),
    TightPhotonR9CutEB=cms.double(0.0),
    #LooseEM cuts EE
    LooseEMEcalIsoRelativeCutSlopeEE = cms.double(0.006),
    LooseEMEcalIsoRelativeCutOffsetEE= cms.double(4.2),
    LooseEMHcalTowerIsoSlopeEE= cms.double(0.0025),
    LooseEMHcalTowerIsoOffsetEE=cms.double(2.2),
    LooseEMHollowTrkSlopeEE=cms.double(0.),
    LooseEMHollowTrkOffsetEE=cms.double(999999999),
    LooseEMSolidTrkSlopeEE=cms.double(0.),
    LooseEMSolidTrkOffsetEE=cms.double(999999999),
    LooseEMSolidTrkEE=cms.double(999999999),
    LooseEMSolidNTrkEE=cms.int32(999999999),
    LooseEMHollowNTrkEE=cms.int32(999999999),
    LooseEMEtaWidthEE=cms.double(999999999),
    LooseEMHadOverEMEE=cms.double(0.05),
    LooseEMR9CutEE=cms.double(0.0),
    #LoosePhoton cuts EE                          
    LoosePhotonEcalIsoRelativeCutSlopeEE = cms.double(0.006),
    LoosePhotonEcalIsoRelativeCutOffsetEE= cms.double(4.2),
    LoosePhotonHcalTowerIsoSlopeEE= cms.double(0.0025),
    LoosePhotonHcalTowerIsoOffsetEE=cms.double(2.2),
    LoosePhotonHollowTrkSlopeEE=cms.double(0.001),
    LoosePhotonHollowTrkOffsetEE=cms.double(3.5),
    LoosePhotonSolidTrkSlopeEE=cms.double(0.),
    LoosePhotonSolidTrkOffsetEE=cms.double(999999999),
    LoosePhotonSolidTrkEE=cms.double(999999999),
    LoosePhotonSolidNTrkEE=cms.int32(999999999),
    LoosePhotonHollowNTrkEE=cms.int32(999999999),
    LoosePhotonEtaWidthEE=cms.double(999999999),
    LoosePhotonHadOverEMEE=cms.double(0.05),
    LoosePhotonR9CutEE=cms.double(0.0),
    #TightPhoton cuts EE
    TightPhotonEcalIsoRelativeCutSlopeEE = cms.double(0.006),
    TightPhotonEcalIsoRelativeCutOffsetEE= cms.double(4.2),
    TightPhotonHcalTowerIsoSlopeEE= cms.double(0.0025),
    TightPhotonHcalTowerIsoOffsetEE=cms.double(2.2),
    TightPhotonHollowTrkSlopeEE=cms.double(0.001),
    TightPhotonHollowTrkOffsetEE=cms.double(2.),
    TightPhotonSolidTrkSlopeEE=cms.double(0.),
    TightPhotonSolidTrkOffsetEE=cms.double(999999999),
    TightPhotonSolidTrkEE=cms.double(999999999),
    TightPhotonSolidNTrkEE=cms.int32(999999999),
    TightPhotonHollowNTrkEE=cms.int32(999999999),
    TightPhotonEtaWidthEE=cms.double(0.03),
    TightPhotonHadOverEMEE=cms.double(0.05),
    TightPhotonR9CutEE=cms.double(0.0)
)


