CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EgammaValidation_cff.py
Go to the documentation of this file.
2 
3 class dummy:
4  pass
5 
6 samples=dummy()
7 paths=dummy()
8 
9 ##########################################################
10 # Define which preselections to run #
11 ##########################################################
12 
13 samples.names = ['Wenu',
14  'Zee',
15  'GammaJet',
16  'DiGamma']
17 samples.pdgid = [ 11,
18  11,
19  22,
20  22]
21 samples.num = [1,
22  2,
23  1,
24  2]
25 
26 #which triggers for which sample
27 
28 paths.Wenu = ['HLT_Ele10_LW_L1RDQM',
29  'HLT_Ele15_SW_L1RDQM',
30  'HLT_Ele10_LW_EleId_L1RDQM',
31  'HLT_Ele15_SiStrip_L1RDQM']
32 
33 paths.Zee = paths.Wenu + ['HLT_DoubleEle5_SW_L1RDQM']
34 
35 paths.GammaJet = ['HLT_Photon10_L1R_DQM',
36  'HLT_Photon15_TrackIso_L1R_DQM',
37  'HLT_Photon15_LooseEcalIso_L1R_DQM',
38  'HLT_Photon25_LooseEcalIso_TrackIso_L1R_DQM']
39 
40 paths.DiGamma = ['HLT_Photon10_L1R_DQM','HLT_DoublePhoton10_L1R_DQM']
41 
42 pathlumi = { 'HLT_Ele10_LW_L1RDQM':'8e29',
43  'HLT_Ele15_SW_L1RDQM':'1e31',
44  'HLT_Ele10_LW_EleId_L1RDQM':'8e29',
45  'HLT_Ele15_SiStrip_L1RDQM':'8e29',
46  'HLT_DoubleEle5_SW_L1RDQM':'8e29',
47  'HLT_Photon10_L1R_DQM':'8e29',
48  'HLT_Photon15_TrackIso_L1R_DQM':'8e29',
49  'HLT_Photon15_LooseEcalIso_L1R_DQM':'8e29',
50  'HLT_DoublePhoton10_L1R_DQM':'8e29',
51  'HLT_Photon25_L1R_DQM':'1e31',
52  'HLT_Photon25_LooseEcalIso_TrackIso_L1R_DQM':'1e31'}
53 
54 lumiprocess = { '8e29':'HLT',
55  '1e31':'HLT'
56  }
57 
58 
59 ##########################################################
60 # produce generated paricles in acceptance #
61 ##########################################################
62 
63 genp = cms.EDFilter("PdgIdAndStatusCandViewSelector",
64  status = cms.vint32(3),
65  src = cms.InputTag("genParticles"),
66  pdgId = cms.vint32(11) # replaced in loop
67 )
68 
69 fiducial = cms.EDFilter("EtaPtMinCandViewSelector",
70  src = cms.InputTag("genp"),
71  etaMin = cms.double(-2.5), # to be replaced in loop ?
72  etaMax = cms.double(2.5), # to be replaced in loop ?
73  ptMin = cms.double(2.0) # to be replaced in loop ?
74 )
75 
76 ##########################################################
77 # loop over samples to create modules and sequence #
78 ##########################################################
79 
80 tmp = cms.SequencePlaceholder("tmp")
81 egammaSelectors = cms.Sequence(tmp) # no empty sequences allowed, start with dummy
82 egammaValidators= cms.Sequence(tmp) # same
83 
84 #loop over samples
85 for samplenum in range(len(samples.names)):
86 
87  # clone genparticles and select correct type
88  genpartname = "genpart"+samples.names[samplenum]
89  globals()[genpartname] = genp.clone()
90  setattr(globals()[genpartname],"pdgId",cms.vint32(samples.pdgid[samplenum]) ) # set pdgId
91  egammaSelectors *= globals()[genpartname] # add to sequence
92 
93  # clone generator fiducial region
94  fiducialname = "fiducial"+samples.names[samplenum]
95  globals()[fiducialname] = fiducial.clone()
96  setattr(globals()[fiducialname],"src",cms.InputTag(genpartname) ) # set input collection
97  egammaSelectors *= globals()[fiducialname] # add to sequence
98 
99  # loop over triggers for each sample
100  for trig in getattr(paths,samples.names[samplenum]):
101  trigname = trig + samples.names[samplenum]
102  #import appropriate config snippet
103  filename = "HLTriggerOffline.Egamma."+trig+"_cfi"
104  trigdef =__import__( filename )
105  import sys
106  globals()[trigname] = getattr(sys.modules[filename],trig).clone() # clone imported config
107  setattr(globals()[trigname],"cutcollection",cms.InputTag(fiducialname)) # set preselacted generator collection
108  setattr(globals()[trigname],"cutnum",cms.int32( samples.num[samplenum] )) # cut value for preselection
109  setattr(globals()[trigname],"pdgGen",cms.int32( samples.pdgid[samplenum])) #correct pdgId for MC matching
110  getattr(globals()[trigname],'triggerobject').setProcessName( lumiprocess[pathlumi[trig]] ) #set proper process name
111  for filterpset in getattr(globals()[trigname],'filters'):
112  getattr(filterpset,'HLTCollectionLabels').setProcessName( lumiprocess[pathlumi[trig]] )
113  for isocollections in getattr(filterpset,'IsoCollections'):
114  isocollections.setProcessName( lumiprocess[pathlumi[trig]])
115 
116  egammaValidators *= globals()[trigname] # add to sequence
117 
118 
119 egammaSelectors.remove(tmp) # remove the initial dummy
120 egammaValidators.remove(tmp)
121 
122 # selectors go into separate "prevalidation" sequence
123 egammaValidationSequence = cms.Sequence( egammaValidators )
124 egammaValidationSequenceFS = cms.Sequence( egammaValidators )
T * clone(const T *tp)
Definition: Ptr.h:42