CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RecoTauCombinatoricProducer_cfi.py
Go to the documentation of this file.
1 
2 import FWCore.ParameterSet.Config as cms
3 from RecoTauTag.RecoTau.PFRecoTauQualityCuts_cfi import PFTauQualityCuts
4 from RecoTauTag.RecoTau.PFRecoTauEnergyAlgorithmPlugin_cfi import pfTauEnergyAlgorithmPlugin
5 from RecoTauTag.RecoTau.PFRecoTauPFJetInputs_cfi import PFRecoTauPFJetInputs
6 '''
7 
8 Configuration for combinatoric PFTau producer plugins.
9 
10 Note that this plugin produces many taus for each PFJet!
11 To be useful the output from this module must be cleaned
12 using an implementation of the RecoTauCleaner module.
13 
14 Author: Evan K. Friis, UC Davis
15 
16 
17 '''
18 
19 # N.B. for combinatoric taus that worst-case scaling
20 # is (maxTracks choose dmTracks) * (maxPiZeros choose dmPiZeros)
21 #
22 # So for decay mode 11 (3 tracks, 1 pizero), with 10 for both
23 #
24 # (10 choose 3) * (10 choose 1) = 1200!
25 
26 # Configurations for the different decay modes
27 
28 combinatoricDecayModeConfigs = cms.PSet(
29  config1prong0pi0 = cms.PSet(
30  # One prong no pizero mode
31  nCharged = cms.uint32(1),
32  nPiZeros = cms.uint32(0),
33  maxTracks = cms.uint32(6),
34  maxPiZeros = cms.uint32(0),
35  ),
36  config1prong1pi0 = cms.PSet(
37  #One prong one pizero mode
38  nCharged = cms.uint32(1),
39  nPiZeros = cms.uint32(1),
40  maxTracks = cms.uint32(6),
41  maxPiZeros = cms.uint32(6),
42  ),
43  config1prong2pi0 = cms.PSet(
44  #One prong two pizero mode
45  nCharged = cms.uint32(1),
46  nPiZeros = cms.uint32(2),
47  maxTracks = cms.uint32(6),
48  maxPiZeros = cms.uint32(5),
49  ),
50  config2prong0pi0 = cms.PSet(
51  # Three prong no pizero mode (one of the tracks failed to get reconstructed)
52  nCharged = cms.uint32(2),
53  nPiZeros = cms.uint32(0),
54  maxTracks = cms.uint32(6),
55  maxPiZeros = cms.uint32(0),
56  ),
57  config2prong1pi0 = cms.PSet(
58  # Three prong one pizero mode (one of the tracks failed to get reconstructed)
59  nCharged = cms.uint32(2),
60  nPiZeros = cms.uint32(1),
61  maxTracks = cms.uint32(6),
62  maxPiZeros = cms.uint32(3),
63  ),
64  config3prong0pi0 = cms.PSet(
65  # Three prong no pizero mode
66  nCharged = cms.uint32(3),
67  nPiZeros = cms.uint32(0),
68  maxTracks = cms.uint32(6),
69  maxPiZeros = cms.uint32(0),
70  ),
71  config3prong1pi0 = cms.PSet( # suggestions made by CV
72  # Three prong one pizero mode
73  nCharged = cms.uint32(3),
74  nPiZeros = cms.uint32(1),
75  maxTracks = cms.uint32(6),
76  maxPiZeros = cms.uint32(3),
77  )
78 )
79 
80 _combinatoricTauConfig = cms.PSet(
81  name = cms.string("combinatoric"),
82  plugin = cms.string("RecoTauBuilderCombinatoricPlugin"),
83  pfCandSrc = cms.InputTag("particleFlow"),
84  isolationConeSize = PFRecoTauPFJetInputs.isolationConeSize,
85  qualityCuts = PFTauQualityCuts,
86  decayModes = cms.VPSet(
87  combinatoricDecayModeConfigs.config1prong0pi0,
88  combinatoricDecayModeConfigs.config1prong1pi0,
89  combinatoricDecayModeConfigs.config1prong2pi0,
90  combinatoricDecayModeConfigs.config2prong0pi0,
91  combinatoricDecayModeConfigs.config2prong1pi0,
92  combinatoricDecayModeConfigs.config3prong0pi0,
93  combinatoricDecayModeConfigs.config3prong1pi0
94  ),
95  signalConeSize = cms.string("max(min(0.1, 3.0/pt()), 0.05)"),
96  minAbsPhotonSumPt_insideSignalCone = cms.double(2.5),
97  minRelPhotonSumPt_insideSignalCone = cms.double(0.10),
98  minAbsPhotonSumPt_outsideSignalCone = cms.double(1.e+9), # CV: always require at least some photon energy inside signal cone
99  minRelPhotonSumPt_outsideSignalCone = cms.double(1.e+9) # for a tau to be reconstructed in a decay mode with pi0s
100 )
101 
102 combinatoricRecoTaus = cms.EDProducer("RecoTauProducer",
103  jetSrc = PFRecoTauPFJetInputs.inputJetCollection,
104  minJetPt = PFRecoTauPFJetInputs.minJetPt,
105  maxJetAbsEta = PFRecoTauPFJetInputs.maxJetAbsEta,
106  jetRegionSrc = cms.InputTag("recoTauAK4PFJets08Region"),
107  chargedHadronSrc = cms.InputTag('ak4PFJetsRecoTauChargedHadrons'),
108  piZeroSrc = cms.InputTag("ak4PFJetsRecoTauPiZeros"),
109  buildNullTaus = cms.bool(True),
110  # Make maximum size from which to collect isolation cone objects, w.r.t to
111  # the axis of the signal cone objects
112  builders = cms.VPSet(
113  _combinatoricTauConfig
114  ),
115  modifiers = cms.VPSet(
116  cms.PSet(
117  name = cms.string("sipt"),
118  plugin = cms.string("RecoTauImpactParameterSignificancePlugin"),
119  qualityCuts = PFTauQualityCuts,
120  ),
121  # Electron rejection
122  cms.PSet(
123  name = cms.string("elec_rej"),
124  plugin = cms.string("RecoTauElectronRejectionPlugin"),
125  #Electron rejection parameters
126  ElectronPreIDProducer = cms.InputTag("elecpreid"),
127  EcalStripSumE_deltaPhiOverQ_minValue = cms.double(-0.1),
128  EcalStripSumE_deltaPhiOverQ_maxValue = cms.double(0.5),
129  EcalStripSumE_minClusEnergy = cms.double(0.1),
130  EcalStripSumE_deltaEta = cms.double(0.03),
131  ElecPreIDLeadTkMatch_maxDR = cms.double(0.01),
132  maximumForElectrionPreIDOutput = cms.double(-0.1),
133  DataType = cms.string("AOD"),
134  ),
135  # Tau energy reconstruction
136  # (to avoid double-counting of energy carried by neutral PFCandidates
137  # in case PFRecoTauChargedHadrons are built from reco::Tracks)
138  cms.PSet(
139  pfTauEnergyAlgorithmPlugin,
140  name = cms.string("tau_en_reconstruction"),
141  plugin = cms.string("PFRecoTauEnergyAlgorithmPlugin"),
142  verbosity = cms.int32(0)
143  )
144  )
145 )