00001 import FWCore.ParameterSet.Config as cms
00002 import copy
00003
00004 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationByLeadingTrackFinding_cfi import *
00005 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationByLeadingTrackPtCut_cfi import *
00006 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationByCharge_cfi import *
00007 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationByECALIsolation_cfi import *
00008 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationAgainstElectron_cfi import *
00009 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationAgainstMuon_cfi import *
00010 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationByTauPolarization_cfi import *
00011 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationByDeltaE_cfi import *
00012 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationByInvMass_cfi import *
00013 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationByFlightPathSignificance_cfi import *
00014 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationByNProngs_cfi import *
00015 from RecoTauTag.RecoTau.CaloRecoTauDiscriminationByTrackIsolation_cfi import *
00016
00017 def addCaloDiscriminator(process, tau, name, module):
00018 module.CaloTauProducer = cms.InputTag(tau+"Producer")
00019 process.__setattr__(tau+name, module)
00020 return module
00021
00022 def addCaloDiscriminatorSequence(process, tau):
00023 lst = []
00024
00025 lst.append(addCaloDiscriminator(process, tau, "DiscriminationForChargedHiggsByLeadingTrackPtCut",
00026 caloRecoTauDiscriminationByLeadingTrackPtCut.clone(
00027 MinPtLeadingObject = cms.double(20.0),
00028 )))
00029
00030 lst.append(addCaloDiscriminator(process, tau, "DiscriminationByCharge",
00031 caloRecoTauDiscriminationByCharge.clone()))
00032
00033
00034 lst.append(addCaloDiscriminator(process, tau, "DiscriminationForChargedHiggsByECALIsolation",
00035 caloRecoTauDiscriminationByECALIsolation.clone()))
00036 lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(tau+'DiscriminationByLeadingTrackFinding')
00037
00038 lst.append(addCaloDiscriminator(process, tau, "DiscriminationForChargedHiggsAgainstMuon",
00039 caloRecoTauDiscriminationAgainstMuon.clone()))
00040 lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(tau+'DiscriminationByLeadingTrackFinding')
00041
00042 lst.append(addCaloDiscriminator(process, tau, "DiscriminationByTauPolarization",
00043 caloRecoTauDiscriminationByTauPolarization.clone()))
00044 lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(tau+'DiscriminationByLeadingTrackFinding')
00045
00046 lst.append(addCaloDiscriminator(process, tau, "DiscriminationByDeltaE",
00047 caloRecoTauDiscriminationByDeltaE.clone()))
00048 lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(tau+'DiscriminationByLeadingTrackFinding')
00049
00050 lst.append(addCaloDiscriminator(process, tau, "DiscriminationByInvMass",
00051 caloRecoTauDiscriminationByInvMass.clone()))
00052 lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(tau+'DiscriminationByLeadingTrackFinding')
00053
00054 lst.append(addCaloDiscriminator(process, tau, "DiscriminationByFlightPathSignificance",
00055 caloRecoTauDiscriminationByFlightPathSignificance.clone()))
00056 lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(tau+'DiscriminationByLeadingTrackFinding')
00057
00058 lst.append(addCaloDiscriminator(process, tau, "DiscriminationBy1Prong",
00059 caloRecoTauDiscriminationByNProngs.clone(
00060 nProngs = cms.uint32(1)
00061 )))
00062 lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(tau+'DiscriminationByLeadingTrackFinding')
00063
00064 lst.append(addCaloDiscriminator(process, tau, "DiscriminationBy3Prongs",
00065 caloRecoTauDiscriminationByNProngs.clone(
00066 nProngs = cms.uint32(3)
00067 )))
00068 lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(tau+'DiscriminationByLeadingTrackFinding')
00069
00070 lst.append(addCaloDiscriminator(process, tau, "DiscriminationForChargedHiggsBy3ProngCombined",
00071 caloRecoTauDiscriminationByNProngs.clone(
00072 nProngs = cms.uint32(3),
00073 Prediscriminants = cms.PSet(
00074 BooleanOperator = cms.string("and"),
00075 leadTrack = cms.PSet(
00076 Producer = cms.InputTag(tau+'DiscriminationByLeadingTrackFinding'),
00077 cut = cms.double(0.5)
00078 ),
00079 deltaE = cms.PSet(
00080 Producer = cms.InputTag(tau+'DiscriminationByDeltaE'),
00081 cut = cms.double(0.5)
00082 ),
00083 invMass = cms.PSet(
00084 Producer = cms.InputTag(tau+'DiscriminationByInvMass'),
00085 cut = cms.double(0.5)
00086 ),
00087 flightPathSig = cms.PSet(
00088 Producer = cms.InputTag(tau+'DiscriminationByFlightPathSignificance'),
00089 cut = cms.double(0.5)
00090 )
00091 )
00092 )))
00093 lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(tau+'DiscriminationByLeadingTrackFinding')
00094
00095 lst.append(addCaloDiscriminator(process, tau, "DiscriminationForChargedHiggsBy1or3Prongs",
00096 caloRecoTauDiscriminationByLeadingTrackFinding.clone(
00097 Prediscriminants = cms.PSet(
00098 BooleanOperator = cms.string("or"),
00099 oneProng = cms.PSet(
00100 Producer = cms.InputTag(tau+'DiscriminationBy1Prong'),
00101 cut = cms.double(0.5)
00102 ),
00103 threeProng = cms.PSet(
00104 Producer = cms.InputTag(tau+'DiscriminationForChargedHiggsBy3ProngCombined'),
00105 cut = cms.double(0.5)
00106 )
00107 )
00108 )))
00109 lst.append(addCaloDiscriminator(process, tau, "DiscriminationForChargedHiggs",
00110 caloRecoTauDiscriminationByTrackIsolation.clone(
00111 Prediscriminants = cms.PSet(
00112 BooleanOperator = cms.string("and"),
00113 leadingTrack = cms.PSet(
00114 Producer = cms.InputTag(tau+'DiscriminationForChargedHiggsByLeadingTrackPtCut'),
00115 cut = cms.double(0.5)
00116 ),
00117 charge = cms.PSet(
00118 Producer = cms.InputTag(tau+'DiscriminationByCharge'),
00119 cut = cms.double(0.5)
00120 ),
00121 ecalIsolation = cms.PSet(
00122 Producer = cms.InputTag(tau+'DiscriminationForChargedHiggsByECALIsolation'),
00123 cut = cms.double(0.5)
00124 ),
00125 electronVeto = cms.PSet(
00126 Producer = cms.InputTag(tau+'DiscriminationAgainstElectron'),
00127 cut = cms.double(0.5)
00128 ),
00129 polarization = cms.PSet(
00130 Producer = cms.InputTag(tau+'DiscriminationByTauPolarization'),
00131 cut = cms.double(0.5)
00132 ),
00133 prongs = cms.PSet(
00134 Producer = cms.InputTag(tau+'DiscriminationForChargedHiggsBy1or3Prongs'),
00135 cut = cms.double(0.5)
00136 )
00137 )
00138 )))
00139
00140 sequence = cms.Sequence()
00141 for m in lst:
00142 sequence *= m
00143
00144 process.__setattr__(tau+"HplusDiscriminationSequence", sequence)
00145 return sequence
00146
00147 def addCaloTauDiscriminationSequenceForChargedHiggs(process):
00148 process.CaloTauDiscriminationSequenceForChargedHiggs = cms.Sequence(
00149 addCaloDiscriminatorSequence(process, "caloRecoTau")
00150 )
00151
00152 return process.CaloTauDiscriminationSequenceForChargedHiggs