File indexing completed on 2024-10-22 05:03:22
0001 import FWCore.ParameterSet.Config as cms
0002 from PhysicsTools.NanoAOD.common_cff import Var
0003 from PhysicsTools.NanoAOD.jetsAK4_Puppi_cff import jetPuppiTable, jetPuppiCorrFactorsNano, updatedJetsPuppi, updatedJetsPuppiWithUserData
0004 from PhysicsTools.NanoAOD.jetsAK8_cff import fatJetTable, subJetTable
0005 from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection
0006 from PhysicsTools.PatAlgos.tools.helpers import addToProcessAndTask, getPatAlgosToolsTask
0007 from PhysicsTools.NanoAOD.common_cff import Var, CandVars
0008 from PhysicsTools.NanoAOD.simpleCandidateFlatTableProducer_cfi import simpleCandidateFlatTableProducer
0009 from PhysicsTools.NanoAOD.btvMC_cff import allPFPFCandsMCSequence,ak4ak8PFCandsMCSequence,ak8onlyPFCandsMCSequence,ak4onlyPFCandsMCSequence
0010
0011
0012
0013 def update_jets_AK4(process):
0014
0015
0016
0017
0018
0019 from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfParticleTransformerAK4JetTagsAll as pfParticleTransformerAK4JetTagsAll
0020 from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsAll as pfUnifiedParticleTransformerAK4JetTagsAll
0021 from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll as pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll
0022 from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfNegativeParticleTransformerAK4JetTagsProbs as pfNegativeParticleTransformerAK4JetTagsProbs
0023
0024 from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsProbs as pfUnifiedParticleTransformerAK4JetTagsProbs
0025 from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTagsProbs as pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTagsProbs
0026 from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfNegativeParticleTransformerAK4JetTagsProbs as pfNegativeParticleTransformerAK4JetTagsProbs
0027 from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfNegativeUnifiedParticleTransformerAK4JetTagsProbs as pfNegativeUnifiedParticleTransformerAK4JetTagsProbs
0028
0029 _btagDiscriminators = [
0030 'pfJetProbabilityBJetTags',
0031 'pfJetBProbabilityBJetTags',
0032 'pfNegativeOnlyJetProbabilityBJetTags',
0033 'pfNegativeOnlyJetBProbabilityBJetTags',
0034 'pfDeepFlavourJetTags:probb',
0035 'pfDeepFlavourJetTags:probbb',
0036 'pfDeepFlavourJetTags:problepb',
0037 'pfDeepFlavourJetTags:probc',
0038 'pfDeepFlavourJetTags:probuds',
0039 'pfDeepFlavourJetTags:probg',
0040 'pfNegativeDeepFlavourJetTags:probb',
0041 'pfNegativeDeepFlavourJetTags:probbb',
0042 'pfNegativeDeepFlavourJetTags:problepb',
0043 'pfNegativeDeepFlavourJetTags:probc',
0044 'pfNegativeDeepFlavourJetTags:probuds',
0045 'pfNegativeDeepFlavourJetTags:probg',
0046 ] + pfParticleNetFromMiniAODAK4PuppiCentralJetTagsAll + pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTagsProbs + pfUnifiedParticleTransformerAK4JetTagsAll + pfNegativeUnifiedParticleTransformerAK4JetTagsProbs
0047
0048 updateJetCollection(
0049 process,
0050 jetSource=cms.InputTag('slimmedJetsPuppi'),
0051 jetCorrections=('AK4PFPuppi',
0052 cms.vstring(
0053 ['L1FastJet', 'L2Relative', 'L3Absolute',
0054 'L2L3Residual']), 'None'),
0055 btagDiscriminators=_btagDiscriminators,
0056 postfix='PuppiWithDeepInfo',
0057 )
0058 process.load("Configuration.StandardSequences.MagneticField_cff")
0059 process.jetPuppiCorrFactorsNano.src = "selectedUpdatedPatJetsPuppiWithDeepInfo"
0060 process.updatedJetsPuppi.jetSource = "selectedUpdatedPatJetsPuppiWithDeepInfo"
0061
0062
0063 process.updatedPatJetsTransientCorrectedPuppiWithDeepInfo.tagInfoSources.append(cms.InputTag("pfDeepFlavourTagInfosPuppiWithDeepInfo"))
0064 process.updatedPatJetsTransientCorrectedPuppiWithDeepInfo.addTagInfos = cms.bool(True)
0065
0066
0067
0068 return process
0069
0070 def update_jets_AK8(process):
0071
0072
0073
0074 _btagDiscriminators = [
0075 'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb',
0076 'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc',
0077 'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc',
0078 ]
0079 from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetJetTagsAll as pfParticleNetJetTagsAll
0080 _btagDiscriminators += pfParticleNetJetTagsAll
0081 updateJetCollection(
0082 process,
0083 jetSource=cms.InputTag('slimmedJetsAK8'),
0084 pvSource=cms.InputTag('offlineSlimmedPrimaryVertices'),
0085 svSource=cms.InputTag('slimmedSecondaryVertices'),
0086 rParam=0.8,
0087 jetCorrections=('AK8PFPuppi',
0088 cms.vstring([
0089 'L1FastJet', 'L2Relative', 'L3Absolute',
0090 'L2L3Residual'
0091 ]), 'None'),
0092 btagDiscriminators=_btagDiscriminators,
0093 postfix='AK8WithDeepInfo',
0094
0095
0096 printWarning=False)
0097 process.jetCorrFactorsAK8.src = "selectedUpdatedPatJetsAK8WithDeepInfo"
0098 process.updatedJetsAK8.jetSource = "selectedUpdatedPatJetsAK8WithDeepInfo"
0099
0100 process.updatedPatJetsTransientCorrectedAK8WithDeepInfo.tagInfoSources.append(cms.InputTag("pfDeepDoubleXTagInfosAK8WithDeepInfo"))
0101 process.updatedPatJetsTransientCorrectedAK8WithDeepInfo.addTagInfos = cms.bool(True)
0102 return process
0103
0104 def update_jets_AK8_subjet(process):
0105
0106
0107
0108 _btagDiscriminators = [
0109 'pfJetProbabilityBJetTags',
0110 'pfDeepCSVJetTags:probb',
0111 'pfDeepCSVJetTags:probc',
0112 'pfDeepCSVJetTags:probbb',
0113 'pfDeepCSVJetTags:probudsg',
0114 ]
0115 updateJetCollection(
0116 process,
0117 labelName='SoftDropSubjetsPF',
0118 jetSource=cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked", "SubJets"),
0119 jetCorrections=('AK4PFPuppi',
0120 ['L2Relative', 'L3Absolute'], 'None'),
0121 btagDiscriminators=list(_btagDiscriminators),
0122 explicitJTA=True,
0123 svClustering=False,
0124 fatJets=cms.InputTag('slimmedJetsAK8'),
0125 rParam=0.8,
0126 sortByPt=False,
0127 postfix='AK8SubjetsWithDeepInfo')
0128
0129 process.subJetTable.src = 'selectedUpdatedPatJetsSoftDropSubjetsPFAK8SubjetsWithDeepInfo'
0130
0131
0132 return process
0133
0134 def get_DDX_vars():
0135
0136
0137 DDXVars = cms.PSet(
0138 DDX_jetNTracks = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.jetNTracks", int, doc="number of tracks associated with the jet"),
0139 DDX_jetNSecondaryVertices = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.jetNSecondaryVertices", int, doc="number of SVs associated with the jet"),
0140 DDX_tau1_trackEtaRel_0 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau1_trackEtaRel_0", float, doc="1st smallest track pseudorapidity, relative to the jet axis, associated to the 1st N-subjettiness axis", precision=10),
0141 DDX_tau1_trackEtaRel_1 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau1_trackEtaRel_1", float, doc="2nd smallest track pseudorapidity, relative to the jet axis, associated to the 1st N-subjettiness axis", precision=10),
0142 DDX_tau1_trackEtaRel_2 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau1_trackEtaRel_2", float, doc="3rd smallest track pseudorapidity, relative to the jet axis, associated to the 1st N-subjettiness axis", precision=10),
0143 DDX_tau2_trackEtaRel_0 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau2_trackEtaRel_0", float, doc="1st smallest track pseudorapidity, relative to the jet axis, associated to the 2nd N-subjettiness axis", precision=10),
0144 DDX_tau2_trackEtaRel_1 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau2_trackEtaRel_1", float, doc="2nd smallest track pseudorapidity, relative to the jet axis, associated to the 2nd N-subjettiness axis", precision=10),
0145 DDX_tau2_trackEtaRel_3 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau2_trackEtaRel_2", float, doc="3rd smallest track pseudorapidity, relative to the jet axis, associated to the 2nd N-subjettiness axis", precision=10),
0146 DDX_tau1_flightDistance2dSig = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau1_flightDistance2dSig", float, doc="transverse distance significance between primary and secondary vertex associated to the 1st N-subjettiness axis", precision=10),
0147 DDX_tau2_flightDistance2dSig = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau2_flightDistance2dSig", float, doc="transverse distance significance between primary and secondary vertex associated to the 2nd N-subjettiness axis", precision=10),
0148 DDX_tau1_vertexDeltaR = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau1_vertexDeltaR", float, doc="deltaR between the 1st N-subjettiness axis and secondary vertex direction", precision=10),
0149 DDX_tau1_vertexEnergyRatio = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau1_vertexEnergyRatio", float, doc="ratio of energy at secondary vertex over total energy associated to the 1st N-subjettiness axis", precision=10),
0150 DDX_tau2_vertexEnergyRatio = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau2_vertexEnergyRatio", float, doc="ratio of energy at secondary vertex over total energy associated to the 2nd N-subjettiness axis", precision=10),
0151 DDX_tau1_vertexMass = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau1_vertexMass", float, doc="mass of track sum at secondary vertex associated to the 1st N-subjettiness axis", precision=10),
0152 DDX_tau2_vertexMass = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau2_vertexMass", float, doc="mass of track sum at secondary vertex associated to the 2nd N-subjettiness axis", precision=10),
0153 DDX_trackSip2dSigAboveBottom_0 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.trackSip2dSigAboveBottom_0", float, doc="track 2D signed impact parameter significance of 1st track lifting mass above bottom", precision=10),
0154 DDX_trackSip2dSigAboveBottom_1 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.trackSip2dSigAboveBottom_1", float, doc="track 2D signed impact parameter significance of 2nd track lifting mass above bottom", precision=10),
0155 DDX_trackSip2dSigAboveCharm = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.trackSip2dSigAboveCharm", float, doc="track 2D signed impact parameter significance of 1st track lifting mass above charm", precision=10),
0156 DDX_trackSip3dSig_0 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.trackSip3dSig_0", float, doc="1st largest track 3D signed impact parameter significance", precision=10),
0157 DDX_tau1_trackSip3dSig_0 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau1_trackSip3dSig_0", float, doc="1st largest track 3D signed impact parameter significance associated to the 1st N-subjettiness axis", precision=10),
0158 DDX_tau1_trackSip3dSig_1 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau1_trackSip3dSig_1", float, doc="2nd largest track 3D signed impact parameter significance associated to the 1st N-subjettiness axis", precision=10),
0159 DDX_trackSip3dSig_1 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.trackSip3dSig_1", float, doc="2nd largest track 3D signed impact parameter significance", precision=10),
0160 DDX_tau2_trackSip3dSig_0 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau2_trackSip3dSig_0", float, doc="1st largest track 3D signed impact parameter significance associated to the 2nd N-subjettiness axis", precision=10),
0161 DDX_tau2_trackSip3dSig_1 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.tau2_trackSip3dSig_1", float, doc="2nd largest track 3D signed impact parameter significance associated to the 2nd N-subjettiness axis", precision=10),
0162 DDX_trackSip3dSig_2 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.trackSip3dSig_2", float, doc="3rd largest track 3D signed impact parameter significance", precision=10),
0163 DDX_trackSip3dSig_3 = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.trackSip3dSig_3", float, doc="4th largest track 3D signed impact parameter significance", precision=10),
0164 DDX_z_ratio = Var("tagInfo(\'pfDeepDoubleX\').features().tag_info_features.z_ratio", float, doc="z = deltaR(SV0,SV1)*pT(SV1)/m(SV0,SV1), defined in Eq. 7 of arXiv:1712.07158", precision=10)
0165 )
0166 return DDXVars
0167
0168 def get_DeepCSV_vars():
0169 DeepCSVVars = cms.PSet(
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219 DeepCSV_trackJetPt = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'trackJetPt\', -999)", float, doc="track-based jet transverse momentum", precision=10),
0220 DeepCSV_vertexCategory = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'vertexCategory\', -999)", float, doc="category of secondary vertex (Reco, Pseudo, No)", precision=10),
0221 DeepCSV_jetNSecondaryVertices = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'jetNSecondaryVertices\', -999)", int, doc="number of reconstructed possible secondary vertices in jet"),
0222 DeepCSV_jetNSelectedTracks = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'jetNSelectedTracks\', -999)", int, doc="selected tracks in the jet"),
0223 DeepCSV_jetNTracksEtaRel = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'jetNTracksEtaRel\', -999)", int, doc="number of tracks for which etaRel is computed"),
0224 DeepCSV_trackSumJetEtRatio = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'trackSumJetEtRatio\', -999)", float, doc="ratio of track sum transverse energy over jet energy", precision=10),
0225 DeepCSV_trackSumJetDeltaR = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'trackSumJetDeltaR\', -999)", float, doc="pseudoangular distance between jet axis and track fourvector sum", precision=10),
0226 DeepCSV_trackSip2dValAboveCharm = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'trackSip2dValAboveCharm\', -999)", float, doc="track 2D signed impact parameter of first track lifting mass above charm", precision=10),
0227 DeepCSV_trackSip2dSigAboveCharm = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'trackSip2dSigAboveCharm\', -999)", float, doc="track 2D signed impact parameter significance of first track lifting mass above charm", precision=10),
0228 DeepCSV_trackSip3dValAboveCharm = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'trackSip3dValAboveCharm\', -999)", float, doc="track 3D signed impact parameter of first track lifting mass above charm", precision=10),
0229 DeepCSV_trackSip3dSigAboveCharm = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'trackSip3dSigAboveCharm\', -999)", float, doc="track 3D signed impact parameter significance of first track lifting mass above charm", precision=10),
0230 DeepCSV_vertexMass = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'vertexMass\', -999)", float, doc="mass of track sum at secondary vertex", precision=10),
0231 DeepCSV_vertexNTracks = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'vertexNTracks\', -999)", int, doc="number of tracks at secondary vertex"),
0232 DeepCSV_vertexEnergyRatio = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'vertexEnergyRatio\', -999)", float, doc="ratio of energy at secondary vertex over total energy", precision=10),
0233 DeepCSV_vertexJetDeltaR = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'vertexJetDeltaR\', -999)", float, doc="pseudoangular distance between jet axis and secondary vertex direction", precision=10),
0234 DeepCSV_flightDistance2dVal = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'flightDistance2dVal\', -999)", float, doc="transverse distance between primary and secondary vertex", precision=10),
0235 DeepCSV_flightDistance2dSig = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'flightDistance2dSig\', -999)", float, doc="transverse distance significance between primary and secondary vertex", precision=10),
0236 DeepCSV_flightDistance3dVal = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'flightDistance3dVal\', -999)", float, doc="distance between primary and secondary vertex", precision=10),
0237 DeepCSV_flightDistance3dSig = Var("tagInfo(\'pfDeepCSV\').taggingVariables.get(\'flightDistance3dSig\', -999)", float, doc="distance significance between primary and secondary vertex", precision=10),
0238 )
0239 return DeepCSVVars
0240
0241
0242 def get_DeepJet_outputs():
0243 DeepJetOutputVars = cms.PSet(
0244 btagDeepFlavB_b=Var("bDiscriminator('pfDeepFlavourJetTags:probb')",
0245 float,
0246 doc="DeepJet b tag probability",
0247 precision=10),
0248 btagDeepFlavB_bb=Var("bDiscriminator('pfDeepFlavourJetTags:probbb')",
0249 float,
0250 doc="DeepJet bb tag probability",
0251 precision=10),
0252 btagDeepFlavB_lepb=Var("bDiscriminator('pfDeepFlavourJetTags:problepb')",
0253 float,
0254 doc="DeepJet lepb tag probability",
0255 precision=10),
0256 btagDeepFlavC=Var("bDiscriminator('pfDeepFlavourJetTags:probc')",
0257 float,
0258 doc="DeepJet c tag probability",
0259 precision=10),
0260 btagDeepFlavUDS=Var("bDiscriminator('pfDeepFlavourJetTags:probuds')",
0261 float,
0262 doc="DeepJet uds tag probability",
0263 precision=10),
0264 btagDeepFlavG=Var("bDiscriminator('pfDeepFlavourJetTags:probg')",
0265 float,
0266 doc="DeepJet gluon tag probability",
0267 precision=10),
0268
0269
0270
0271 btagNegDeepFlavB = Var("bDiscriminator('pfNegativeDeepFlavourJetTags:probb')+bDiscriminator('pfNegativeDeepFlavourJetTags:probbb')+bDiscriminator('pfNegativeDeepFlavourJetTags:problepb')",
0272 float,
0273 doc="Negative DeepJet b+bb+lepb tag discriminator",
0274 precision=10),
0275 btagNegDeepFlavCvL = Var("?(bDiscriminator('pfNegativeDeepFlavourJetTags:probc')+bDiscriminator('pfNegativeDeepFlavourJetTags:probuds')+bDiscriminator('pfNegativeDeepFlavourJetTags:probg'))>0?bDiscriminator('pfNegativeDeepFlavourJetTags:probc')/(bDiscriminator('pfNegativeDeepFlavourJetTags:probc')+bDiscriminator('pfNegativeDeepFlavourJetTags:probuds')+bDiscriminator('pfNegativeDeepFlavourJetTags:probg')):-1",
0276 float,
0277 doc="Negative DeepJet c vs uds+g discriminator",
0278 precision=10),
0279 btagNegDeepFlavCvB = Var("?(bDiscriminator('pfNegativeDeepFlavourJetTags:probc')+bDiscriminator('pfNegativeDeepFlavourJetTags:probb')+bDiscriminator('pfNegativeDeepFlavourJetTags:probbb')+bDiscriminator('pfNegativeDeepFlavourJetTags:problepb'))>0?bDiscriminator('pfNegativeDeepFlavourJetTags:probc')/(bDiscriminator('pfNegativeDeepFlavourJetTags:probc')+bDiscriminator('pfNegativeDeepFlavourJetTags:probb')+bDiscriminator('pfNegativeDeepFlavourJetTags:probbb')+bDiscriminator('pfNegativeDeepFlavourJetTags:problepb')):-1",
0280 float,
0281 doc="Negative DeepJet c vs b+bb+lepb discriminator",
0282 precision=10),
0283 btagNegDeepFlavQG = Var("?(bDiscriminator('pfNegativeDeepFlavourJetTags:probg')+bDiscriminator('pfNegativeDeepFlavourJetTags:probuds'))>0?bDiscriminator('pfNegativeDeepFlavourJetTags:probg')/(bDiscriminator('pfNegativeDeepFlavourJetTags:probg')+bDiscriminator('pfNegativeDeepFlavourJetTags:probuds')):-1",
0284 float,
0285 doc="Negative DeepJet g vs uds discriminator",
0286 precision=10),
0287 btagNegDeepFlavB_b = Var("bDiscriminator('pfNegativeDeepFlavourJetTags:probb')",
0288 float,
0289 doc="Negative DeepJet b tag probability",
0290 precision=10),
0291 btagNegDeepFlavB_bb = Var("bDiscriminator('pfNegativeDeepFlavourJetTags:probbb')",
0292 float,
0293 doc="Negative DeepJet bb tag probability",
0294 precision=10),
0295 btagNegDeepFlavB_lepb = Var("bDiscriminator('pfNegativeDeepFlavourJetTags:problepb')",
0296 float,
0297 doc="Negative DeepJet lepb tag probability",
0298 precision=10),
0299 btagNegDeepFlavG = Var("bDiscriminator('pfNegativeDeepFlavourJetTags:probg')",
0300 float,
0301 doc="Negative DeepJet gluon tag probability",
0302 precision=10),
0303 )
0304 return DeepJetOutputVars
0305
0306 def get_ParticleNetAK4_outputs():
0307
0308 ParticleNetAK4OutputVars = cms.PSet(
0309
0310 btagPNetProbB = Var("?bDiscriminator('pfParticleNetFromMiniAODAK4PuppiCentralJetTags:probb')>0?bDiscriminator('pfParticleNetFromMiniAODAK4PuppiCentralJetTags:probb'):-1",
0311 float,
0312 doc="ParticleNet b tag probability",
0313 precision=10),
0314 btagPNetProbC = Var("?bDiscriminator('pfParticleNetFromMiniAODAK4PuppiCentralJetTags:probc')>0?bDiscriminator('pfParticleNetFromMiniAODAK4PuppiCentralJetTags:probc'):-1",
0315 float,
0316 doc="ParticleNet c tag probability",
0317 precision=10),
0318 btagPNetProbUDS = Var("?bDiscriminator('pfParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds')>0?bDiscriminator('pfParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds'):-1",
0319 float,
0320 doc="ParticleNet uds tag probability",
0321 precision=10),
0322 btagPNetProbG = Var("?bDiscriminator('pfParticleNetFromMiniAODAK4PuppiCentralJetTags:probg')>0?bDiscriminator('pfParticleNetFromMiniAODAK4PuppiCentralJetTags:probg'):-1",
0323 float,
0324 doc="ParticleNet gluon tag probability",
0325 precision=10),
0326
0327
0328 btagNegPNetB = Var("?(bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probb')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probg'))>0?(bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probb'))/(bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probb')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probg')):-1",
0329 float,
0330 doc="Negative ParticleNet b vs. udscg",
0331 precision=10),
0332 btagNegPNetCvL = Var("?(bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probg'))>0?(bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc'))/(bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probg')):-1",
0333 float,
0334 doc="Negative ParticleNet c vs. udsg",
0335 precision=10),
0336 btagNegPNetCvB = Var("?(bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probb'))>0?(bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc'))/(bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probc')+bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probb')):-1",
0337 float,
0338 doc="Negative ParticleNet c vs. b",
0339 precision=10),
0340 btagNegPNetProbUDS = Var("?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds')>0?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probuds'):-1",
0341 float,
0342 doc="Negative ParticleNet uds tag probability",
0343 precision=10),
0344 btagNegPNetProbG = Var("?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probg')>0?bDiscriminator('pfNegativeParticleNetFromMiniAODAK4PuppiCentralJetTags:probg'):-1",
0345 float,
0346 doc="Negative ParticleNet gluon tag probability",
0347 precision=10),
0348 )
0349
0350 return ParticleNetAK4OutputVars
0351
0352 def get_ParticleTransformerAK4_outputs():
0353 ParticleTransformerAK4OutputVars = cms.PSet(
0354 btagRobustParTAK4B_b=Var("bDiscriminator('pfParticleTransformerAK4JetTags:probb')",
0355 float,
0356 doc="RobustParTAK4 b tag probability",
0357 precision=10),
0358 btagRobustParTAK4B_bb=Var("bDiscriminator('pfParticleTransformerAK4JetTags:probbb')",
0359 float,
0360 doc="RobustParTAK4 bb tag probability",
0361 precision=10),
0362 btagRobustParTAK4B_lepb=Var("bDiscriminator('pfParticleTransformerAK4JetTags:problepb')",
0363 float,
0364 doc="RobustParTAK4 lepb tag probability",
0365 precision=10),
0366 btagRobustParTAK4UDS=Var("bDiscriminator('pfParticleTransformerAK4JetTags:probuds')",
0367 float,
0368 doc="RobustParTAK4 uds tag probability",
0369 precision=10),
0370 btagRobustParTAK4G=Var("bDiscriminator('pfParticleTransformerAK4JetTags:probg')",
0371 float,
0372 doc="RobustParTAK4 gluon tag probability",
0373 precision=10),
0374
0375
0376 btagNegRobustParTAK4B = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probb')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:problepb')",
0377 float,
0378 doc="Negative RobustParTAK4 b+bb+lepb tag discriminator",
0379 precision=10),
0380 btagNegRobustParTAK4CvL = Var("?(bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probuds')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probg'))>0?bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probc')/(bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probuds')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probg')):-1",
0381 float,
0382 doc="Negative RobustParTAK4 c vs uds+g discriminator",
0383 precision=10),
0384 btagNegRobustParTAK4CvB = Var("?(bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probb')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:problepb'))>0?bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probc')/(bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probb')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:problepb')):-1",
0385 float,
0386 doc="Negative RobustParTAK4 c vs b+bb+lepb discriminator",
0387 precision=10),
0388 btagNegRobustParTAK4QG = Var("?(bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probg')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probuds'))>0?bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probg')/(bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probg')+bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probuds')):-1",
0389 float,
0390 doc="Negative RobustParTAK4 g vs uds discriminator",
0391 precision=10),
0392 btagNegRobustParTAK4B_b = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probb')",
0393 float,
0394 doc="Negative RobustParTAK4 b tag probability",
0395 precision=10),
0396 btagNegRobustParTAK4B_bb = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probbb')",
0397 float,
0398 doc="Negative RobustParTAK4 bb tag probability",
0399 precision=10),
0400 btagNegRobustParTAK4B_lepb = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:problepb')",
0401 float,
0402 doc="Negative RobustParTAK4 lepb tag probability",
0403 precision=10),
0404 btagNegRobustParTAK4G = Var("bDiscriminator('pfNegativeParticleTransformerAK4JetTags:probg')",
0405 float,
0406 doc="Negative RobustParTAK4 gluon tag probability",
0407 precision=10),
0408 )
0409
0410 return ParticleTransformerAK4OutputVars
0411
0412 def get_UnifiedParticleTransformerAK4_outputs():
0413 UnifiedParticleTransformerAK4OutputVars = cms.PSet(
0414 btagUParTAK4B_b=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probb')",
0415 float,
0416 doc="UnifiedParT b tag probability",
0417 precision=10),
0418 btagUParTAK4B_bb=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probbb')",
0419 float,
0420 doc="UnifiedParT bb tag probability",
0421 precision=10),
0422 btagUParTAK4B_lepb=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:problepb')",
0423 float,
0424 doc="UnifiedParT lepb tag probability",
0425 precision=10),
0426 btagUParTAK4UDS=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probuds')",
0427 float,
0428 doc="UnifiedParT uds tag probability",
0429 precision=10),
0430 btagUParTAK4G=Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probg')",
0431 float,
0432 doc="UnifiedParT gluon tag probability",
0433 precision=10),
0434
0435
0436 btagNegUParTAK4B = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:problepb')",
0437 float,
0438 doc="Negative UnifiedParT b+bb+lepb tag discriminator",
0439 precision=10),
0440 btagNegUParTAK4CvL = Var("?(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probuds')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg'))>0?bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')/(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probuds')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')):-1",
0441 float,
0442 doc="Negative UnifiedParT c vs uds+g discriminator",
0443 precision=10),
0444 btagNegUParTAK4CvB = Var("?(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:problepb'))>0?bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')/(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probc')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:problepb')):-1",
0445 float,
0446 doc="Negative UnifiedParT c vs b+bb+lepb discriminator",
0447 precision=10),
0448 btagNegUParTAK4QG = Var("?(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probuds'))>0?bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')/(bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')+bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probuds')):-1",
0449 float,
0450 doc="Negative UnifiedParT g vs uds discriminator",
0451 precision=10),
0452 btagNegUParTAK4B_b = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probb')",
0453 float,
0454 doc="Negative UnifiedParT b tag probability",
0455 precision=10),
0456 btagNegUParTAK4B_bb = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probbb')",
0457 float,
0458 doc="Negative UnifiedParT bb tag probability",
0459 precision=10),
0460 btagNegUParTAK4B_lepb = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:problepb')",
0461 float,
0462 doc="Negative UnifiedParT lepb tag probability",
0463 precision=10),
0464 btagNegUParTAK4G = Var("bDiscriminator('pfNegativeUnifiedParticleTransformerAK4JetTags:probg')",
0465 float,
0466 doc="Negative UnifiedParT gluon tag probability",
0467 precision=10),
0468 )
0469
0470 return UnifiedParticleTransformerAK4OutputVars
0471
0472
0473
0474 def add_BTV(process, addAK4=False, addAK8=False, scheme="btvSF"):
0475 process.customizeJetTask = cms.Task()
0476 process.schedule.associate(process.customizeJetTask)
0477
0478 CommonVars = cms.PSet(
0479 Proba=Var("bDiscriminator('pfJetProbabilityBJetTags')",
0480 float,
0481 doc="Jet Probability (Usage:BTV)",
0482 precision=10),
0483 ProbaN=Var("bDiscriminator('pfNegativeOnlyJetProbabilityBJetTags')",
0484 float,
0485 doc="Negative-only Jet Probability (Usage:BTV)",
0486 precision=10),
0487 Bprob=Var("bDiscriminator('pfJetBProbabilityBJetTags')",
0488 float,
0489 doc="Jet B Probability (Usage:BTV)",
0490 precision=10),
0491 BprobN=Var("bDiscriminator('pfNegativeOnlyJetBProbabilityBJetTags')",
0492 float,
0493 doc="Negative-only Jet B Probability (Usage:BTV)",
0494 precision=10),
0495 )
0496
0497
0498 HadronCountingVars = cms.PSet(
0499 nBHadrons=Var("jetFlavourInfo().getbHadrons().size()",
0500 int,
0501 doc="number of b-hadrons"),
0502 nCHadrons=Var("jetFlavourInfo().getcHadrons().size()",
0503 int,
0504 doc="number of c-hadrons")
0505 )
0506
0507
0508 if addAK4:
0509 if scheme == "btvSF":
0510 _n_cpf = 3
0511 _n_npf = 3
0512 _n_sv = 4
0513 elif scheme == "DeepJet":
0514 _n_cpf = 25
0515 _n_npf = 25
0516 _n_sv = 4
0517 elif scheme == "RobustParTAK4":
0518 _n_cpf = 25
0519 _n_npf = 25
0520 _n_sv = 12
0521 process = update_jets_AK4(process)
0522
0523 process.customJetExtTable = cms.EDProducer(
0524 "SimplePATJetFlatTableProducer",
0525 src=jetPuppiTable.src,
0526 cut=jetPuppiTable.cut,
0527 name=jetPuppiTable.name,
0528 doc=jetPuppiTable.doc,
0529 singleton=cms.bool(False),
0530 extension=cms.bool(True),
0531 variables=cms.PSet(
0532 CommonVars,
0533 get_DeepCSV_vars(),
0534 get_DeepJet_outputs(),
0535 get_ParticleNetAK4_outputs(),
0536 get_UnifiedParticleTransformerAK4_outputs(),
0537 get_ParticleTransformerAK4_outputs(),
0538 ))
0539
0540
0541 process.customAK4ConstituentsForDeepJetTable = cms.EDProducer("PatJetDeepJetTableProducer",
0542 jets = cms.InputTag("linkedObjects","jets"),
0543 n_cpf=cms.uint32(_n_cpf),
0544 n_npf=cms.uint32(_n_npf),
0545 n_sv=cms.uint32(_n_sv)
0546 )
0547 process.customizeJetTask.add(process.customJetExtTable)
0548 process.customizeJetTask.add(process.customAK4ConstituentsForDeepJetTable)
0549
0550 if addAK8:
0551 process = update_jets_AK8(process)
0552 process = update_jets_AK8_subjet(process)
0553 process.customFatJetExtTable = cms.EDProducer(
0554 "SimplePATJetFlatTableProducer",
0555 src=fatJetTable.src,
0556 cut=fatJetTable.cut,
0557 name=fatJetTable.name,
0558 doc=fatJetTable.doc,
0559 singleton=cms.bool(False),
0560 extension=cms.bool(True),
0561 variables=cms.PSet(
0562 CommonVars,
0563
0564 get_DDX_vars() ,
0565 ))
0566
0567
0568
0569 process.customSubJetExtTable = cms.EDProducer(
0570 "SimplePATJetFlatTableProducer",
0571 src=subJetTable.src,
0572 cut=subJetTable.cut,
0573 name=subJetTable.name,
0574 doc=subJetTable.doc,
0575 singleton=cms.bool(False),
0576 extension=cms.bool(True),
0577 variables=cms.PSet(
0578 CommonVars,
0579
0580 ))
0581
0582 process.customizeJetTask.add(process.customFatJetExtTable)
0583 process.customizeJetTask.add(process.customSubJetExtTable)
0584
0585
0586
0587
0588 def addPFCands(process, allPF = False, addAK4=False, addAK8=False):
0589 process.customizedPFCandsTask = cms.Task()
0590 process.schedule.associate(process.customizedPFCandsTask)
0591
0592 process.finalJetsAK8Constituents = cms.EDProducer("PatJetConstituentPtrSelector",
0593 src = cms.InputTag("finalJetsAK8"),
0594 cut = cms.string("")
0595 )
0596 process.finalJetsAK4Constituents = cms.EDProducer("PatJetConstituentPtrSelector",
0597 src = cms.InputTag("finalJetsPuppi"),
0598 cut = cms.string("")
0599 )
0600 if allPF:
0601 candInput = cms.InputTag("packedPFCandidates")
0602 elif not addAK8:
0603 candList = cms.VInputTag(cms.InputTag("finalJetsAK4Constituents", "constituents"))
0604 process.customizedPFCandsTask.add(process.finalJetsAK4Constituents)
0605 process.finalJetsConstituentsTable = cms.EDProducer("PackedCandidatePtrMerger", src = candList, skipNulls = cms.bool(True), warnOnSkip = cms.bool(True))
0606 candInput = cms.InputTag("finalJetsConstituentsTable")
0607 elif not addAK4:
0608 candList = cms.VInputTag(cms.InputTag("finalJetsAK8Constituents", "constituents"))
0609 process.customizedPFCandsTask.add(process.finalJetsAK8Constituents)
0610 process.finalJetsConstituentsTable = cms.EDProducer("PackedCandidatePtrMerger", src = candList, skipNulls = cms.bool(True), warnOnSkip = cms.bool(True))
0611 candInput = cms.InputTag("finalJetsConstituentsTable")
0612 else:
0613 candList = cms.VInputTag(cms.InputTag("finalJetsAK4Constituents", "constituents"), cms.InputTag("finalJetsAK8Constituents", "constituents"))
0614 process.customizedPFCandsTask.add(process.finalJetsAK4Constituents)
0615 process.customizedPFCandsTask.add(process.finalJetsAK8Constituents)
0616 process.finalJetsConstituentsTable = cms.EDProducer("PackedCandidatePtrMerger", src = candList, skipNulls = cms.bool(True), warnOnSkip = cms.bool(True))
0617 candInput = cms.InputTag("finalJetsConstituentsTable")
0618
0619 process.customConstituentsExtTable = cms.EDProducer("SimplePATCandidateFlatTableProducer",
0620 src = candInput,
0621 cut = cms.string(""),
0622 name = cms.string("PFCands"),
0623 doc = cms.string("interesting particles from AK4 and AK8 jets"),
0624 singleton = cms.bool(False),
0625 extension = cms.bool(False),
0626 variables = cms.PSet(CandVars,
0627 puppiWeight = Var("puppiWeight()", float, doc="Puppi weight",precision=10),
0628 puppiWeightNoLep = Var("puppiWeightNoLep()", float, doc="Puppi weight removing leptons",precision=10),
0629 vtxChi2 = Var("?hasTrackDetails()?vertexChi2():-1", float, doc="vertex chi2",precision=10),
0630 trkChi2 = Var("?hasTrackDetails()?pseudoTrack().normalizedChi2():-1", float, doc="normalized trk chi2", precision=10),
0631 dz = Var("?hasTrackDetails()?dz():-1", float, doc="pf dz", precision=10),
0632 dzErr = Var("?hasTrackDetails()?dzError():-1", float, doc="pf dz err", precision=10),
0633 d0 = Var("?hasTrackDetails()?dxy():-1", float, doc="pf d0", precision=10),
0634 d0Err = Var("?hasTrackDetails()?dxyError():-1", float, doc="pf d0 err", precision=10),
0635 pvAssocQuality = Var("pvAssociationQuality()", int, doc="primary vertex association quality. 0: NotReconstructedPrimary, 1: OtherDeltaZ, 4: CompatibilityBTag, 5: CompatibilityDz, 6: UsedInFitLoose, 7: UsedInFitTight"),
0636 lostInnerHits = Var("lostInnerHits()", int, doc="lost inner hits. -1: validHitInFirstPixelBarrelLayer, 0: noLostInnerHits, 1: oneLostInnerHit, 2: moreLostInnerHits"),
0637 lostOuterHits = Var("?hasTrackDetails()?pseudoTrack().hitPattern().numberOfLostHits('MISSING_OUTER_HITS'):0", int, doc="lost outer hits"),
0638 numberOfHits = Var("numberOfHits()", int, doc="number of hits"),
0639 numberOfPixelHits = Var("numberOfPixelHits()", int, doc="number of pixel hits"),
0640 trkQuality = Var("?hasTrackDetails()?pseudoTrack().qualityMask():0", int, doc="track quality mask"),
0641 trkHighPurity = Var("?hasTrackDetails()?pseudoTrack().quality('highPurity'):0", bool, doc="track is high purity"),
0642 trkAlgo = Var("?hasTrackDetails()?pseudoTrack().algo():-1", int, doc="track algorithm"),
0643 trkP = Var("?hasTrackDetails()?pseudoTrack().p():-1", float, doc="track momemtum", precision=-1),
0644 trkPt = Var("?hasTrackDetails()?pseudoTrack().pt():-1", float, doc="track pt", precision=-1),
0645 trkEta = Var("?hasTrackDetails()?pseudoTrack().eta():-1", float, doc="track pt", precision=12),
0646 trkPhi = Var("?hasTrackDetails()?pseudoTrack().phi():-1", float, doc="track phi", precision=12),
0647 )
0648 )
0649 process.customAK8ConstituentsTable = cms.EDProducer("PatJetConstituentTableProducer",
0650 candidates = candInput,
0651 jets = cms.InputTag("finalJetsAK8"),
0652 jet_radius = cms.double(0.8),
0653 name = cms.string("FatJetPFCands"),
0654 idx_name = cms.string("pFCandsIdx"),
0655 nameSV = cms.string("FatJetSVs"),
0656 idx_nameSV = cms.string("sVIdx"),
0657 )
0658 process.customAK4ConstituentsTable = cms.EDProducer("PatJetConstituentTableProducer",
0659 candidates = candInput,
0660 jets = cms.InputTag("finalJetsPuppi"),
0661 jet_radius = cms.double(0.4),
0662 name = cms.string("JetPFCands"),
0663 idx_name = cms.string("pFCandsIdx"),
0664 nameSV = cms.string("JetSVs"),
0665 idx_nameSV = cms.string("sVIdx"),
0666 )
0667 process.customizedPFCandsTask.add(process.customConstituentsExtTable)
0668
0669 if not allPF:
0670 process.customizedPFCandsTask.add(process.finalJetsConstituentsTable)
0671
0672 if addAK8:
0673 process.customizedPFCandsTask.add(process.customAK8ConstituentsTable)
0674 if addAK4:
0675 process.customizedPFCandsTask.add(process.customAK4ConstituentsTable)
0676
0677
0678 return process
0679
0680
0681
0682
0683
0684 btvNano_switch = cms.PSet(
0685 btvNano_addAK4_switch = cms.untracked.bool(True),
0686 btvNano_addAK8_switch = cms.untracked.bool(False),
0687 btvNano_addallPF_switch = cms.untracked.bool(False),
0688 TaggerInput = cms.string("btvSF")
0689 )
0690
0691 def BTVCustomNanoAOD(process):
0692
0693 addPFCands(process,btvNano_switch.btvNano_addallPF_switch,btvNano_switch.btvNano_addAK4_switch,btvNano_switch.btvNano_addAK8_switch)
0694 add_BTV(process, btvNano_switch.btvNano_addAK4_switch,btvNano_switch.btvNano_addAK8_switch,btvNano_switch.TaggerInput)
0695 process.load("PhysicsTools.NanoAOD.btvMC_cff")
0696
0697 if btvNano_switch.btvNano_addallPF_switch:
0698 process.nanoSequenceMC+=allPFPFCandsMCSequence
0699 else:
0700 if btvNano_switch.btvNano_addAK4_switch and btvNano_switch.btvNano_addAK8_switch :
0701 process.nanoSequenceMC+=ak4ak8PFCandsMCSequence
0702 elif btvNano_switch.btvNano_addAK4_switch and not btvNano_switch.btvNano_addAK8_switch :
0703 process.nanoSequenceMC+=ak4onlyPFCandsMCSequence
0704 elif not btvNano_switch.btvNano_addAK4_switch and btvNano_switch.btvNano_addAK8_switch:
0705 process.nanoSequenceMC+=ak8onlyPFCandsMCSequence
0706
0707 return process