2 import FWCore.ParameterSet.Config
as cms
5 'muonMultiplicity': {
'default': -1,
'type':
'i'},
6 'trackPPar': {
'default': -1,
'max_idx': 3,
'type':
'f'},
7 'flightDistance3dSig': {
'default': -1,
'max_idx': 1,
'type':
'f'},
8 'trackSip2dVal': {
'default': -1,
'max_idx': 3,
'type':
'f'},
9 'vertexBoostOverSqrtJetPt': {
'default': -0.1,
'max_idx': 1,
'type':
'f'},
10 'trackEtaRel': {
'default': -1,
'max_idx': 3,
'type':
'f'},
11 'vertexMass': {
'default': -0.1,
'max_idx': 1,
'type':
'f'},
12 'trackDecayLenVal': {
'default': -0.1,
'max_idx': 3,
'type':
'f'},
13 'trackJetPt': {
'default': -1,
'type':
'f'},
14 'neutralHadronMultiplicity': {
'default': -1,
'type':
'i'},
15 'flightDistance3dVal': {
'default': -0.1,
'max_idx': 1,
'type':
'f'},
16 'trackJetDist': {
'default': -0.1,
'max_idx': 3,
'type':
'f'},
17 'leptonSip3d': {
'default': -10000,
'max_idx': 3,
'type':
'f'},
18 'neutralHadronEnergyFraction': {
'default': -0.1,
'type':
'f'},
19 'trackPtRatio': {
'default': -0.1,
'max_idx': 3,
'type':
'f'},
20 'hadronMultiplicity': {
'default': -1,
'type':
'i'},
21 'trackSumJetEtRatio': {
'default': -0.1,
'type':
'f'},
22 'vertexJetDeltaR': {
'default': -0.1,
'max_idx': 1,
'type':
'f'},
23 'leptonRatioRel': {
'default': -1,
'max_idx': 3,
'type':
'f'},
24 'chargedHadronMultiplicity': {
'default': -1,
'type':
'i'},
25 'jetNTracks': {
'default': -0.1,
'type':
'i'},
26 'trackDeltaR': {
'default': -0.1,
'max_idx': 3,
'type':
'f'},
27 'vertexFitProb': {
'default': -1,
'max_idx': 1,
'type':
'f'},
28 'trackSip3dValAboveCharm': {
'default': -1,
'max_idx': 1,
'type':
'f'},
29 'jetEta': {
'default': -3,
'type':
'f'},
30 'leptonDeltaR': {
'default': -1,
'max_idx': 3,
'type':
'f'},
31 'hadronPhotonMultiplicity': {
'default': -1,
'type':
'i'},
32 'leptonPtRel': {
'default': -1,
'max_idx': 3,
'type':
'f'},
33 'flightDistance2dVal': {
'default': -0.1,
'max_idx': 1,
'type':
'f'},
34 'trackSumJetDeltaR': {
'default': -0.1,
'type':
'f'},
35 'photonMultiplicity': {
'default': -1,
'type':
'i'},
36 'chargedHadronEnergyFraction': {
'default': -0.1,
'type':
'f'},
37 'trackSip3dSigAboveQuarterCharm': {
'default': -999,
'max_idx': 1,
'type':
'f'},
38 'vertexLeptonCategory': {
'default': -1,
'type':
'i'},
39 'massVertexEnergyFraction': {
'default': -0.1,
'max_idx': 1,
'type':
'f'},
40 'trackSip2dSig': {
'default': -100,
'max_idx': 3,
'type':
'f'},
41 'flightDistance2dSig': {
'default': -1,
'max_idx': 1,
'type':
'f'},
42 'jetPt': {
'default': -1,
'type':
'f'},
43 'totalMultiplicity': {
'default': -1,
'type':
'i'},
44 'trackSip2dValAboveCharm': {
'default': -1,
'max_idx': 1,
'type':
'f'},
45 'electronEnergyFraction': {
'default': -0.1,
'type':
'f'},
46 'jetNSecondaryVertices': {
'default': 0,
'type':
'i'},
47 'trackSip2dSigAboveCharm': {
'default': -999,
'max_idx': 1,
'type':
'f'},
48 'vertexCategory': {
'default': -1,
'type':
'i'},
49 'vertexEnergyRatio': {
'default': -10,
'max_idx': 1,
'type':
'f'},
50 'photonEnergyFraction': {
'default': -0.1,
'type':
'f'},
51 'flavour': {
'default': -1,
'type':
'i'},
52 'muonEnergyFraction': {
'default': -0.1,
'type':
'f'},
53 'vertexNTracks': {
'default': 0,
'max_idx': 1,
'type':
'i'},
54 'trackSip2dSigAboveQuarterCharm': {
'default': -999,
'max_idx': 1,
'type':
'f'},
55 'trackSip3dVal': {
'default': -1,
'max_idx': 3,
'type':
'f'},
56 'leptonRatio': {
'default': -1,
'max_idx': 3,
'type':
'f'},
57 'trackPtRel': {
'default': -1,
'max_idx': 3,
'type':
'f'},
58 'leptonEtaRel': {
'default': -1,
'max_idx': 3,
'type':
'f'},
59 'trackPParRatio': {
'default': 1.1,
'max_idx': 3,
'type':
'f'},
60 'trackSip3dSig': {
'default': -100,
'max_idx': 3,
'type':
'f'},
61 'trackSip3dSigAboveCharm': {
'default': -999,
'max_idx': 1,
'type':
'f'},
62 'electronMultiplicity': {
'default': -1,
'type':
'i'}
69 varname_regex_=re.compile(
r'(?P<name>[a-zA-Z0-9]+)(:?_(?P<idx>\d+))?$')
71 '''matches the name used in the MVA training to 72 get the TaggingVariableName and index''' 73 match = varname_regex_.match(varname)
76 'Variable name {0} does not match ' 77 'the default regular expression'.
format(varname)
82 'returns the TaggingVariableName of a MVA Name' 84 name = match.group(
'name')
85 if name
not in training_vars:
87 'Variable name {0}, matched to name {1}, ' 88 'is not among the known trainig variables.'.
format(
94 'returns the default value used in the traing' 96 return training_vars[name][
'default']
99 'returns the index in case of vectorial TaggingVariableName' 101 idx = match.group(
'idx')
102 return int(idx)
if idx
else None 105 'returns the cms.PSet to be used by CharmTaggerESProducer' 107 name = cms.string(mvaname),
113 pset.idx = cms.int32(idx)
116 if __name__ ==
'__main__':
117 assert(varname_regex_.match(
'leptonEtaRel_10').groupdict() == {
'name':
'leptonEtaRel',
'idx':
'10'})
118 assert(varname_regex_.match(
'leptonEtaRel_1').groupdict() == {
'name':
'leptonEtaRel',
'idx':
'1'})
119 assert(varname_regex_.match(
'leptonEtaRel').groupdict() == {
'name':
'leptonEtaRel',
'idx':
None})
120 assert(varname_regex_.match(
'lepton_EtaRel') ==
None)
122 assert(
get_var_default(
'leptonEtaRel_10') == training_vars[
'leptonEtaRel'][
'default'])
123 assert(
get_var_default(
'electronMultiplicity') == training_vars[
'electronMultiplicity'][
'default'])
def get_var_pset(mvaname)
def get_var_default(varname)
def get_var_name(varname)