ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/UHHAnalysis/NtupleWriter/ntuplewriter_cfg.py
(Generate patch)

Comparing UserCode/UHHAnalysis/NtupleWriter/ntuplewriter_cfg.py (file contents):
Revision 1.2 by peiffer, Mon Apr 2 13:26:21 2012 UTC vs.
Revision 1.11 by peiffer, Fri Aug 31 09:31:26 2012 UTC

# Line 1 | Line 1
1   # -*- coding: utf-8 -*-
2   import FWCore.ParameterSet.Config as cms
3 import os
4
5 process = cms.Process("MYPATTEST")
6
7 isttbar = False
8 issingletop = False
9 isvjets = False
10 isdata = True
11 nickname = "MC_TTbar"
12 #nickname= "DATA"
13 if nickname.startswith('MC_'): isdata = False
14 if nickname.find("_TTbar") > -1 or nickname.find('_ZP') > -1 : isttbar = True
15 if nickname.find("_ST_tchan") > -1 : issingletop = True
16 if nickname.find("_Wjets") > -1 or nickname.find('_Vqq') > -1 or nickname.find('_Wc') > -1 or nickname.find('_Zjets') > -1 : isvjets = True
17 tmp = os.getenv('CMSSW_BASE')
18 if 'CMSSW_4_1_' in tmp: cmssw_version = '41'
19 elif 'CMSSW_4_2_' in tmp: cmssw_version = '42'
20 elif 'CMSSW_4_4_' in tmp: cmssw_version = '44'
21 else: raise RuntimeError, 'could not determine cmssw version (cmssw correctly set up?)'
22
23 print "detected CMSSW version %s" % cmssw_version
24 if isdata: print "assuming to run over data"
25 else: print "assuming to run over MC; (single top, ttbar, vjets) = (", issingletop, isttbar, isvjets, ")"
26
27 # for global tag, see https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideFrontierConditions
28 def globaltag():
29   if isdata and cmssw_version=='41': return 'GR_R_41_V0::All'
30   if not isdata and cmssw_version=='41': return 'START41_V0::All'
31   if isdata and cmssw_version=='42': return 'GR_R_42_V25::All'
32   if not isdata and cmssw_version=='42': return 'START42_V17::All'
33   if isdata and cmssw_version=='44': return 'GR_R_44_V15::All'
34   if not isdata and cmssw_version=='44': return 'START44_V13::All'
35
36   raise RuntimeError, "could not determine global tag to use!"
3  
4 + process = cms.Process("MYNTUPLE")
5  
6   process.load("FWCore.MessageLogger.MessageLogger_cfi")
7   process.MessageLogger.cerr.threshold = 'WARNING'
# Line 43 | Line 10 | process.options   = cms.untracked.PSet(
10   )
11  
12   process.source = cms.Source("PoolSource",
13 <                            #fileNames = cms.untracked.vstring('dcap://dcache-cms-dcap.desy.de//pnfs/desy.de/cms/tier2/store/data/Run2011B/Jet/AOD/19Nov2011-v1/0000/985E38E8-3B15-E111-87A8-0015178C4970.root',
47 <                            #                                  'dcap://dcache-cms-dcap.desy.de//pnfs/desy.de/cms/tier2/store/data/Run2011B/Jet/AOD/19Nov2011-v1/0000/4449A169-1A15-E111-B25F-0015178C4CE8.root'),
48 <   fileNames = cms.untracked.vstring('dcap://dcache-cms-dcap.desy.de//pnfs/desy.de/cms/tier2/store/mc/Fall11/TTJets_TuneZ2_7TeV-madgraph-tauola/AODSIM/PU_S6-START44_V5-v1/0000/68423CA2-BC04-E111-B90B-0018F3D0968C.root'),
49 <   #fileNames = cms.untracked.vstring('dcap://dcache-cms-dcap.desy.de//pnfs/desy.de/cms/tier2/store/mc/Fall11/TTJets_TuneZ2_7TeV-madgraph-tauola/AODSIM/PU_S6-START44_V5-v1/0000/7C7C20EE-BB04-E111-A833-001A92971BDA.root'),
50 <   #fileNames = cms.untracked.vstring('dcap://dcache-cms-dcap.desy.de//pnfs/desy.de/cms/tier2/store/mc/Fall11/W2Jets_TuneZ2_7TeV-madgraph-tauola/AODSIM/PU_S6_START44_V9B-v1/0000/9A4D5BEE-F536-E111-9F71-003048C692CA.root'),                        
51 <   #fileNames = cms.untracked.vstring('dcap://dcache-cms-dcap.desy.de//pnfs/desy.de/cms/tier2/store/mc/Fall11/QCD_Pt-80to170_EMEnriched_TuneZ2_7TeV-pythia6/AODSIM/PU_S6_START42_V14B-v2/0000/50404FDF-6214-E111-8248-78E7D164BFC8.root'),            
52 <   skipEvents = cms.untracked.uint32(0),
53 <   duplicateCheckMode = cms.untracked.string('noDuplicateCheck')
54 < )
55 <
56 <
57 < process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(1000))
58 <
59 < ## Output Module Configuration (expects a path 'p')
60 < from PhysicsTools.PatAlgos.patEventContent_cff import patEventContent
61 < process.out = cms.OutputModule("PoolOutputModule",
62 <                               fileName = cms.untracked.string('patTuple.root'),
63 <                               # save only events passing the full path
64 <                               SelectEvents   = cms.untracked.PSet( SelectEvents = cms.vstring('p') ),
65 <                               # save PAT Layer 1 output; you need a '*' to
66 <                               # unpack the list of commands 'patEventContent'
67 <                               outputCommands = cms.untracked.vstring('drop *' , *patEventContent)
68 <                               )
69 <
70 < if isdata and cmssw_version == '41': # note: there are no residual corrections in 42(?!);
71 <                                     # needs to be done with recorrector in SKITA
72 <    JECToProcess = cms.vstring(['L1FastJet','L2Relative', 'L3Absolute', 'L2L3Residual'])
73 < else:
74 <    JECToProcess = cms.vstring(['L1FastJet','L2Relative', 'L3Absolute'])
75 <
76 < # for some jet types, no residual correction is available; use l2l3 only:
77 < #l2l3jec = cms.vstring(['L2Relative', 'L3Absolute'])
78 <
79 < inputJetCorrLabel = ('AK5PFchs', JECToProcess)
80 <
81 < # 1. general setup
82 < process.load("Configuration.StandardSequences.Geometry_cff")
83 < process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
84 < process.GlobalTag.globaltag = globaltag()
85 < print "using globaltag %s" % str(process.GlobalTag.globaltag)
86 < process.load("Configuration.StandardSequences.MagneticField_cff")
87 <
88 <
89 <
90 < # 3. configure PF2PAT
91 < #process.load("PhysicsTools.PFCandProducer.PF2PAT_cff")
92 <
93 < from RecoJets.JetProducers.kt4PFJets_cfi import kt4PFJets
94 < process.kt6PFJets = kt4PFJets.clone()
95 < process.kt6PFJets.rParam = 0.6
96 < process.kt6PFJets.doRhoFastjet = True
97 <
98 < process.kt6PFJetsRestrictedRho = process.kt6PFJets.clone()
99 < process.kt6PFJetsRestrictedRho.Rho_EtaMax = cms.double(1.9)
100 < process.kt6PFJetsRestrictedRho.Ghost_EtaMax = cms.double(2.5)
101 <
102 <
103 <
104 < # Get a list of good primary vertices, in 42x, these are DAF vertices
105 < from PhysicsTools.SelectorUtils.pvSelector_cfi import pvSelector
106 < process.goodOfflinePrimaryVertices = cms.EDFilter(
107 <    "PrimaryVertexObjectFilter",
108 <    filterParams = pvSelector.clone( minNdof = cms.double(4.0), maxZ = cms.double(24.0) ),
109 <    src=cms.InputTag('offlinePrimaryVertices')
110 <    )
111 <
112 <
113 < #top jets
114 <
115 < process.load("UHHAnalysis.NtupleWriter.Topjets_cfi")
116 <
117 < process.load("RecoJets.Configuration.GenJetParticles_cff")
118 < from RecoJets.JetProducers.ca4GenJets_cfi import ca4GenJets
119 < process.ca8GenJets = ca4GenJets.clone( rParam = cms.double(0.8) )
120 <
121 <
122 <
123 < process.load("PhysicsTools.PatAlgos.patSequences_cff")
124 < from PhysicsTools.PatAlgos.tools.trigTools import *
125 < switchOnTrigger( process )
126 < from PhysicsTools.PatAlgos.tools.pfTools import *
127 < usePF2PAT(process, runPF2PAT=True, jetAlgo="AK5", runOnMC = not isdata)
128 < process.pfPileUp.Enable = True
129 < process.pfPileUp.Vertices = 'goodOfflinePrimaryVertices'
130 < process.pfJets.doAreaFastjet = True
131 < process.pfJets.doRhoFastjet = False
132 < process.kt6PFJets.src = process.pfJets.src
133 < process.kt6PFJetsRestrictedRho.src = process.pfJets.src
134 < process.patJetCorrFactors.payload = 'AK5PFchs'
135 < process.patJetCorrFactors.levels = JECToProcess
136 < process.patJetCorrFactors.rho = cms.InputTag("kt6PFJets", "rho")
137 < process.pfNoTau.enable = cms.bool(True) ##change this????
138 <    
139 <
140 < from PhysicsTools.PatAlgos.producersLayer1.photonProducer_cff import *
141 < from PhysicsTools.PatAlgos.selectionLayer1.photonSelector_cfi import *
142 < from PhysicsTools.PatAlgos.selectionLayer1.photonCountFilter_cfi import *
143 < if isdata:
144 <   process.patDefaultSequence *= patPhotons
145 < else:  process.patDefaultSequence *= makePatPhotons
146 < process.patDefaultSequence *= selectedPatPhotons
147 < process.patDefaultSequence *= countPatPhotons
148 <
149 < process.pfIsolatedMuons.isolationCut = cms.double(0.2)
150 <
151 <
152 < process.patMuons.usePV = cms.bool(False)
153 < process.patElectrons.usePV = cms.bool(False)
154 < process.patJets.addTagInfos = cms.bool(True)
155 <
156 < process.pfIsolatedMuonsLoose = process.pfIsolatedMuons.clone(isolationCut = cms.double(float("inf")))
157 < process.patMuonsLoose = process.patMuons.clone(pfMuonSource = cms.InputTag("pfIsolatedMuonsLoose"), genParticleMatch = cms.InputTag("muonMatchLoose"))
158 < # use pf isolation, but do not change matching (hell this "PAT" is really f*** up).
159 < tmp = process.muonMatch.src
160 < adaptPFMuons(process, process.patMuonsLoose, "")
161 < process.muonMatch.src = tmp
162 <
163 <
164 < process.pfSelectedElectrons.cut = cms.string('et > 15. & abs(eta) < 2.5')
165 < process.pfSelectedMuons.cut = cms.string('pt > 10. & abs(eta) < 2.5')
166 < process.pfSelectedPhotons.cut = cms.string('pt > 10.')
167 <
168 < #jet and tau cuts are not propagated to ntuplewriter
169 < process.selectedPatJets.cut = cms.string('pt > 10. & abs(eta) < 5.0')
170 < process.selectedPatTaus.cut = cms.string('pt > 10. & abs(eta) < 5.0')
171 <
172 < process.muonMatchLoose = process.muonMatch.clone(src = cms.InputTag("pfIsolatedMuonsLoose"))
173 <
174 < process.pfIsolatedElectronsLoose = process.pfIsolatedElectrons.clone(isolationCut = cms.double(float("inf")))
175 < process.patElectronsLoose = process.patElectrons.clone(pfElectronSource = cms.InputTag("pfIsolatedElectronsLoose"))
176 < adaptPFElectrons(process, process.patElectronsLoose, "")
177 <
178 < process.looseLeptonSequence = cms.Sequence(
179 <    process.pfIsolatedMuonsLoose +
180 <    process.muonMatchLoose +
181 <    process.patMuonsLoose +
182 <    process.pfIsolatedElectronsLoose +
183 <    process.patElectronsLoose
184 <    )
185 <    
186 < if isdata: process.looseLeptonSequence.remove(process.muonMatchLoose)
187 <
188 < # note: we cannot use this for the moment: some modules require a primary vertex (even if is is fake!!)
189 < #for module in (process.patMuons, process.patMuonsLoose, process.patElectrons, process.patElectronsLoose):
190 < #    module.pvSrc = "goodOfflinePrimaryVertices"
191 < #for module in (process.impactParameterTagInfos, process.impactParameterTagInfosAOD, process.softMuonTagInfosAOD, process.softMuonTagInfos):
192 < #    module.primaryVertex = "goodOfflinePrimaryVertices"
193 < #for module in (process.patJetCorrFactors,):
194 < #    module.primaryVertices = "goodOfflinePrimaryVertices"
195 < #for module in (process.pfElectronsFromVertex,process.pfMuonsFromVertex):
196 < #    module.vertices = "goodOfflinePrimaryVertices"
197 <
198 <
199 <
200 < process.load('CommonTools/RecoAlgos/HBHENoiseFilterResultProducer_cfi')
201 <
202 < process.HBHENoiseFilterResultProducer.minRatio = cms.double(-999)
203 < process.HBHENoiseFilterResultProducer.maxRatio = cms.double(999)
204 < process.HBHENoiseFilterResultProducer.minHPDHits = cms.int32(17)
205 < process.HBHENoiseFilterResultProducer.minRBXHits = cms.int32(999)
206 < process.HBHENoiseFilterResultProducer.minHPDNoOtherHits = cms.int32(10)
207 < process.HBHENoiseFilterResultProducer.minZeros = cms.int32(10)
208 < process.HBHENoiseFilterResultProducer.minHighEHitTime = cms.double(-9999.0)
209 < process.HBHENoiseFilterResultProducer.maxHighEHitTime = cms.double(9999.0)
210 < process.HBHENoiseFilterResultProducer.maxRBXEMF = cms.double(-999.0)
211 < process.HBHENoiseFilterResultProducer.minNumIsolatedNoiseChannels = cms.int32(999999)
212 < process.HBHENoiseFilterResultProducer.minIsolatedNoiseSumE = cms.double(999999.)
213 < process.HBHENoiseFilterResultProducer.minIsolatedNoiseSumEt = cms.double(999999.)
214 < process.HBHENoiseFilterResultProducer.useTS4TS5 = cms.bool(True)
215 <
216 <
217 < # add CA PF jets
218 < process.caTopPFJets.src = process.pfJets.src
219 < addJetCollection(process,
220 <                 cms.InputTag('caTopPFJets'),
221 <                 algoLabel = 'TopTag',  typeLabel = 'PF', doJTA=False,
222 <                 doBTagging=False, jetCorrLabel = inputJetCorrLabel, doType1MET=False,#use ak5 PFjet corrections as described in AN2011_194
223 <                 genJetCollection = cms.InputTag("ca8GenJets"), doJetID = False)
224 <
225 < # *** jet pruning ala Jott:
226 < process.caPrunedPFJets.src = process.pfJets.src
227 < addJetCollection(process,
228 <                 cms.InputTag('caPrunedPFJets'),
229 <                 algoLabel = 'Pruned', typeLabel = 'PF', doJTA=True,
230 <                 doBTagging=True, jetCorrLabel = inputJetCorrLabel, doType1MET=False,#use ak5 PFjet corrections as described in AN2011_194
231 <                 genJetCollection = cms.InputTag("ca8GenJets"), doJetID = False)
232 <
233 < #configure jet parton flavour determination
234 < for jetcollname in ('TopTagPF', 'PrunedPF'):
235 <   jetcoll = getattr(process, 'patJets'+jetcollname)
236 <   jetcoll.embedGenJetMatch = cms.bool(False)
237 <   jetcoll.addDiscriminators = cms.bool(False)
238 <   # jet flavor stuff: match also the top quark.
239 <   getattr(process, 'patJetPartonAssociation'+jetcollname).coneSizeToAssociate = cms.double(0.8)
240 <   getattr(process, 'patJetPartonAssociation'+jetcollname).doPriority = cms.bool(True)
241 <   getattr(process, 'patJetPartonAssociation'+jetcollname).priorityList = cms.vint32(6)
242 <   #4 = match heaviest flavor
243 <   getattr(process, 'patJetFlavourAssociation'+jetcollname).definition = cms.int32(4)
244 <   getattr(process, 'patJetFlavourAssociation'+jetcollname).physicsDefinition = cms.bool(False)
245 <   getattr(process, 'patJetPartonMatch'+jetcollname).mcPdgId = cms.vint32(1,2,3,4,5,6,21)
246 <   getattr(process, 'patJetPartonMatch'+jetcollname).maxDeltaR = cms.double(0.8)
247 <
248 < for icorr in [process.patJetCorrFactorsTopTagPF,
249 <              process.patJetCorrFactorsPrunedPF
250 <              ] :
251 <    icorr.rho = cms.InputTag("kt6PFJets", "rho")  
252 <
253 < # 5. compile main sequence
254 <
255 < #process.patPF2PATSequence.replace(process.pfJets, process.kt6PFJets * process.kt6PFJetsRestrictedRho * process.pfJets)
256 < process.patPF2PATSequence.replace(process.pfJets, process.kt6PFJets * process.kt6PFJetsRestrictedRho * process.pfJets * process.topjet_seq)
257 <
258 < process.main_seq = cms.Sequence(process.goodOfflinePrimaryVertices)
259 <
260 < process.main_seq *= process.patPF2PATSequence* process.looseLeptonSequence
261 <
262 < process.main_genseq = cms.Sequence(process.genParticlesForJets * process.ca8GenJets * process.topjet_genseq )
263 < #process.main_genseq = cms.Sequence(process.genParticlesForJets * process.ca8GenJets * process.subjet_genseq * process.topjet_genseq)
264 <
265 <
266 < process.p = cms.Path()
267 <
268 < if isdata: process.p *= process.HBHENoiseFilterResultProducer
269 < if not isdata:  process.p *= process.main_genseq
270 < process.p *= process.main_seq
271 <
272 < # Apply jet ID to all of the jets upstream. We aren't going to screw around
273 < # with this, most likely. So, we don't really to waste time with it
274 < # at the analysis level.
275 < from PhysicsTools.SelectorUtils.pfJetIDSelector_cfi import pfJetIDSelector
276 < process.goodPatJets = cms.EDFilter("PFJetIDSelectionFunctorFilter",
277 <                                        filterParams = pfJetIDSelector.clone(),
278 <                                        src = cms.InputTag("patJets")
279 <                                   )
280 <
281 < process.goodPatJetsPrunedPF = cms.EDFilter("PFJetIDSelectionFunctorFilter",
282 <                                              filterParams = pfJetIDSelector.clone(),
283 <                                              src = cms.InputTag("patJetsPrunedPF")
284 <                                              )
285 <
286 <
287 < process.goodPatJetsTopTagPF  = cms.EDFilter("PFJetIDSelectionFunctorFilter",
288 <                                             filterParams = pfJetIDSelector.clone(),
289 <                                             src = cms.InputTag("patJetsTopTagPF")
290 <                                             )
291 <
13 > fileNames  = cms.untracked.vstring('file:/scratch/hh/lustre/cms/user/peiffer/TLBSM_v5_Test.root'),
14  
15 + skipEvents = cms.untracked.uint32(0)
16 + )
17 + process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(-1))
18  
19   #NtupleWriter
20 + useData = False
21 + writeAllGenParticles=False
22  
23   process.MyNtuple = cms.EDAnalyzer('NtupleWriter',
24 <                                  fileName = cms.string('ttbar.root'),
24 >                                  fileName = cms.string('Ntuple.root'),
25                                    doElectrons = cms.bool(True),
26                                    doMuons = cms.bool(True),
27                                    doTaus = cms.bool(True),
28                                    doJets = cms.bool(True),
29                                    doTopJets = cms.bool(True),
30 <                                  doPhotons = cms.bool(True),
30 >                                  doJECUncertainty = cms.bool(False),
31 >                                  doPhotons = cms.bool(False),
32                                    doMET = cms.bool(True),
33                                    doPV = cms.bool(True),
34 <                                  doGenInfo = cms.bool(not isdata),
35 <                                  electron_sources = cms.vstring("patElectrons","patElectronsLoose"),
36 <                                  muon_sources = cms.vstring("patMuons","patMuonsLoose"),
37 <                                  tau_sources = cms.vstring("patTaus"),
38 <                                  tau_ptmin = cms.double(10.0),
39 <                                  tau_etamax = cms.double(5.0),
40 <                                  jet_sources = cms.vstring("goodPatJets"),
34 >                                  doGenInfo = cms.bool(not useData),
35 >                                  doAllGenParticles = cms.bool(writeAllGenParticles), #set to true if you want to store all gen particles, otherwise, only tops and status 3 particles are stored
36 >                                  doLumiInfo = cms.bool(useData),
37 >                                  doTrigger = cms.bool(True),
38 >                                  rho_source = cms.InputTag("kt6PFJets", "rho"),
39 >                                  genparticle_source = cms.InputTag("prunedGenParticles" ),
40 >                                  electron_sources = cms.vstring("selectedPatElectronsPFlow"), #,"selectedPatElectronsPFlowLoose"),
41 >                                  muon_sources = cms.vstring("selectedPatMuonsPFlow","selectedPatMuonsPFlowLoose"),
42 >                                  tau_sources = cms.vstring("selectedPatTausPFlow"),
43 >                                  tau_ptmin = cms.double(0.0),
44 >                                  tau_etamax = cms.double(999.0),
45 >                                  jet_sources = cms.vstring("goodPatJetsPFlow"),
46                                    jet_ptmin = cms.double(10.0),
47                                    jet_etamax = cms.double(5.0),
48 <                                  topjet_sources = cms.vstring("goodPatJetsTopTagPF","goodPatJetsPrunedPF"),
48 >                                  #photon_sources = cms.vstring("selectedPatPhotons"),
49 >                                  topjet_sources = cms.vstring("goodPatJetsCATopTagPF","goodPatJetsCA8PrunedPF"),
50                                    topjet_ptmin = cms.double(150.0),
51                                    topjet_etamax = cms.double(5.0),
52 <                                  photon_sources = cms.vstring("patPhotons"),
53 <                                  met_sources =  cms.vstring("patMETs"),
54 <                                  pv_sources = cms.vstring("goodOfflinePrimaryVertices", "offlinePrimaryVertices"),
52 >                                  doGenTopJets = cms.bool(not useData),
53 >                                  gentopjet_sources = cms.vstring("caTopTagGen" ),
54 >                                  gentopjet_ptmin = cms.double(150.0),
55 >                                  gentopjet_etamax = cms.double(5.0),
56 >                                  met_sources =  cms.vstring("patMETs","patMETsPFlow"),
57 >                                  pv_sources = cms.vstring("goodOfflinePrimaryVertices"),
58                                    trigger_prefixes = cms.vstring(#"HLT_IsoMu", "HLT_Mu",
59                                                                   #"HLT_L1SingleMu", "HLT_L2Mu",
60                                                                   #"HLT_Ele",
61 <                                                                 "HLT_Jet", "HLT_HT",
61 >                                                                 "HLT_",
62                                                                   #"HLT_DoubleMu", "HLT_DoubleEle"
63                                                                   ),
64                                    
65   )
66  
330 #process.TFileService = cms.Service("TFileService",
331 #    fileName = cms.string('tree3.root')
332 #)
333 process.p *=process.goodPatJets
334 process.p *=process.goodPatJetsPrunedPF
335 process.p *=process.goodPatJetsTopTagPF
336 process.p *= process.MyNtuple
337
338 #comment this line in to produce pattuples:
339 #process.outpath = cms.EndPath(process.out)
340
341 process.options.wantSummary = True
67  
68 < #open('dump.py', 'w').write(process.dumpPython())
68 > process.p = cms.Path(process.MyNtuple)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines