ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/ForwardAnalysis/DiffractiveZAnalysis/test/DiffractiveZPATTupleMulticrab.py
Revision: 1.6
Committed: Thu Jul 11 14:11:43 2013 UTC (11 years, 9 months ago) by dmf
Content type: text/x-python
Branch: MAIN
Changes since 1.5: +22 -7 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 dmf 1.1 #flake8: noqa
2    
3     '''
4     >>-------------------------<<-
5     Diffractive Z NTuple Producer
6     >>-------------------------<<
7    
8     Goal:
9     Produce your diffractive Z ntuple.
10    
11     Usage:
12     cmsRun DiffractiveZPATTupleMultiple.py
13    
14     Example:
15     cmsRun DiffractiveZPATTupleMulticrab.py Run=data_MuonA
16    
17     Optional arguments:
18     Run = data_MuonA, data_MuonB, data_ElectronA, data_ElectronB, MC_none, MC_PU, MC_FlatWeight or MC_FlatWeight_and_PU
19    
20     Authors: D. Figueiredo, R. Arciadiacono and N. Cartiglia
21     '''
22    
23     import FWCore.ParameterSet.Config as cms
24     import os, sys
25     import atexit
26    
27     from FWCore.ParameterSet.VarParsing import VarParsing
28     options = VarParsing ('analysis')
29 dmf 1.5 options.register('Run','data_MuonP1',VarParsing.multiplicity.singleton, VarParsing.varType.string,"Option to Run: data or MC.")
30 dmf 1.1 options.parseArguments()
31    
32     process = cms.Process("Analysis")
33    
34     class config: pass
35     config.verbose = True
36     config.writeEdmOutput = False
37     config.outputTTreeFile = 'DiffractiveZDataPATTuple.root'
38     config.runPATSequences = True
39     config.comEnergy = 7000.0
40     config.trackAnalyzerName = 'trackHistoAnalyzer'
41     config.trackTagName = 'analysisTracks'
42 dmf 1.3 config.NumberOfEvents = 100
43 dmf 1.6 config.sys = True
44 dmf 1.1
45     #
46     # Define Options to Run
47     #
48     ######################################################################################
49    
50 dmf 1.5 if options.Run == "data_MuonP1":
51 dmf 1.1 print("")
52     print("###################")
53 dmf 1.5 print("Data Muon 2010 P1")
54 dmf 1.1 print("###################")
55     print("")
56     config.globalTagNameData = 'GR_R_42_V23::All'
57     config.TriggerOn = True
58 dmf 1.5 triggerlist = 'HLT_Mu9','HLT_DoubleMu3'
59 dmf 1.1 l1list = 'L1_ZeroBias','L1_SingleEG5'
60     config.runOnMC = False
61     config.runPUMC = False
62     config.runGen = False
63    
64 dmf 1.5 elif options.Run == "data_MuonP2":
65 dmf 1.1 print("")
66     print("###################")
67 dmf 1.5 print("Data Muon 2010 P2")
68 dmf 1.1 print("###################")
69     print("")
70 dmf 1.2 config.globalTagNameData = 'GR_R_42_V23::All'
71 dmf 1.1 config.TriggerOn = True
72 dmf 1.5 triggerlist = 'HLT_Mu15','HLT_DoubleMu5_v*'
73 dmf 1.1 l1list = 'L1_ZeroBias','L1_SingleEG5'
74     config.runOnMC = False
75     config.runPUMC = False
76     config.runGen = False
77    
78 dmf 1.5 elif options.Run == "data_ElectronP1":
79 dmf 1.1 print("")
80     print("#######################")
81 dmf 1.5 print("Data Electron 2010 P1")
82 dmf 1.1 print("#######################")
83     print("")
84     config.globalTagNameData = 'GR_R_42_V23::All'
85     config.TriggerOn = True
86 dmf 1.5 triggerlist = 'HLT_Photon10_L1R','HLT_Photon15_Cleaned_L1R','HLT_Ele15_SW_CaloEleId_L1R','HLT_Ele17_SW_CaloEleId_L1R','HLT_Ele17_SW_TightEleId_L1R','HLT_Ele22_SW_TighterCaloIdIsol_L1R_v1','HLT_Ele22_SW_TighterCaloIdIsol_L1R_v2'
87 dmf 1.1 l1list = 'L1_ZeroBias','L1_SingleEG5'
88     config.runOnMC = False
89     config.runPUMC = False
90     config.runGen = False
91    
92 dmf 1.5 elif options.Run == "data_ElectronP2":
93 dmf 1.1 print("")
94     print("#######################")
95 dmf 1.5 print("Data Electron 2010 P2")
96 dmf 1.1 print("#######################")
97     print("")
98 dmf 1.2 config.globalTagNameData = 'GR_R_42_V23::All'
99 dmf 1.1 config.TriggerOn = True
100 dmf 1.5 triggerlist = 'HLT_Photon10_L1R','HLT_Photon15_Cleaned_L1R','HLT_Ele15_SW_CaloEleId_L1R','HLT_Ele17_SW_CaloEleId_L1R','HLT_Ele17_SW_TightEleId_L1R','HLT_Ele22_SW_TighterCaloIdIsol_L1R_v1','HLT_Ele22_SW_TighterCaloIdIsol_L1R_v2'
101 dmf 1.1 l1list = 'L1_ZeroBias','L1_SingleEG5'
102     config.runOnMC = False
103     config.runPUMC = False
104     config.runGen = False
105    
106     elif options.Run == "MC_FlatWeight_and_PU":
107     print("")
108     print("#####################")
109     print("MC Flat Weight and PU")
110     print("#####################")
111     print("")
112     config.globalTagNameMC = 'START42_V17D::All'
113     config.TriggerOn = False
114     triggerlist = 'no_trigger','no_trigger'
115     l1list = 'no_trigger','no_trigger'
116     config.runOnMC = True
117     config.runPUMC = True
118     config.runGen = True
119    
120     elif options.Run == "MC_FlatWeight":
121     print("")
122     print("##############")
123     print("MC Flat Weight")
124     print("##############")
125     print("")
126     config.globalTagNameMC = 'START42_V17D::All'
127     config.TriggerOn = False
128     triggerlist = 'no_trigger','no_trigger'
129     l1list = 'no_trigger','no_trigger'
130     config.runOnMC = True
131     config.runPUMC = False
132     config.runGen = True
133    
134     elif options.Run == "MC_PU":
135     print("")
136     print("#####")
137     print("MC PU")
138     print("#####")
139     print("")
140     config.globalTagNameMC = 'START42_V17D::All'
141     config.TriggerOn = False
142     triggerlist = 'no_trigger','no_trigger'
143     l1list = 'no_trigger','no_trigger'
144     config.runOnMC = True
145     config.runPUMC = True
146     config.runGen = False
147    
148     elif options.Run == "MC_none":
149     print("")
150     print("#######")
151     print("MC None")
152     print("#######")
153     print("")
154     config.globalTagNameMC = 'START42_V17D::All'
155     config.TriggerOn = False
156     triggerlist = 'no_trigger','no_trigger'
157     l1list = 'no_trigger','no_trigger'
158     config.runOnMC = True
159     config.runPUMC = False
160     config.runGen = False
161    
162     else:
163     print("")
164     print("")
165     raise RuntimeError, "Unknown option. EXIT! YOU NEED TO SETUP WITH ONE OF THE CORRECT OPTIONS."
166     print("")
167    
168    
169     print("")
170     print(">>> Input Options:")
171     print("Run with MC: %s" % config.runOnMC)
172     print("Run MC with Pile Up: %s" % config.runPUMC)
173     print("Run MC with Flat Weight: %s" % config.runGen)
174     print("Run with Trigger: %s" % config.TriggerOn)
175     if not config.runOnMC:
176     print("Data Global Tag: " + config.globalTagNameData)
177     else:
178     print("MC Global Tag: " + config.globalTagNameMC)
179     print("")
180    
181     #
182     # Define Triggers and Input Files
183     #
184     ######################################################################################
185    
186     if config.runOnMC:
187     config.l1Paths = (l1list)
188     config.hltPaths =(triggerlist)
189     config.inputFileName = '/storage1/dmf/TestSamples/PYTHIA6_QCD_15to3000_private_SL_RECO/QCD_Pt_15to3000_TuneZ2_Flat_7TeV_pythia6_cff_py_RAW2DIGI_L1Reco_RECO_233_3_nsm.root'
190    
191     else:
192     config.l1Paths = (l1list)
193     config.hltPaths = (triggerlist)
194     config.inputFileName = '/storage1/dmf/TestSamples/MuRun2010/MuRunA2010.root'
195    
196     #
197     # CMSSW Main Code
198     #
199     ######################################################################################
200    
201     process.load('FWCore.MessageService.MessageLogger_cfi')
202    
203     process.options = cms.untracked.PSet(
204     wantSummary = cms.untracked.bool(False),
205     SkipEvent = cms.untracked.vstring('ProductNotFound')
206     )
207    
208     process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(config.NumberOfEvents) )
209    
210     process.source = cms.Source("PoolSource",
211     fileNames = cms.untracked.vstring( 'file:%s' % config.inputFileName )
212     )
213    
214    
215     #
216     # Output
217     #
218     ######################################################################################
219    
220     process.TFileService = cms.Service("TFileService",
221     fileName = cms.string(config.outputTTreeFile))
222    
223     #
224     # Detector Conditions and Scales
225     #
226     ######################################################################################
227    
228     process.load('Configuration.StandardSequences.Services_cff')
229     process.load('Configuration.StandardSequences.GeometryExtended_cff')
230     process.load('Configuration.StandardSequences.MagneticField_38T_cff')
231     process.load('Configuration.StandardSequences.Reconstruction_cff')
232     process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
233    
234     #
235     # Global Tag Input
236     #
237     ######################################################################################
238    
239     if config.runOnMC: process.GlobalTag.globaltag = config.globalTagNameMC
240     else: process.GlobalTag.globaltag = config.globalTagNameData
241    
242     process.load('JetMETCorrections.Configuration.DefaultJEC_cff')
243     process.load('RecoJets.Configuration.RecoPFJets_cff')
244     process.load('RecoJets.Configuration.RecoJets_cff')
245     process.load('CommonTools/RecoAlgos/HBHENoiseFilterResultProducer_cfi')
246    
247     #
248     # PAT Sequences
249     #
250     ######################################################################################
251    
252     if config.runPATSequences:
253     from ForwardAnalysis.Skimming.addPATSequences import addPATSequences
254     addPATSequences(process,config.runOnMC)
255    
256     if config.runOnMC:
257     process.patTrigger.addL1Algos = cms.bool( False )
258     process.patJets.addTagInfos = cms.bool( False )
259     else:
260     process.patTrigger.addL1Algos = cms.bool( True )
261     process.patJets.addTagInfos = cms.bool( True )
262    
263     from ForwardAnalysis.Utilities.addCastorRecHitCorrector import addCastorRecHitCorrector
264     addCastorRecHitCorrector(process)
265    
266     #
267     # Remove PAT MCMatching for Data
268     #
269     ######################################################################################
270    
271     # load the standard PAT config
272     process.load("PhysicsTools.PatAlgos.patSequences_cff")
273    
274     # load the coreTools of PAT
275     from PhysicsTools.PatAlgos.tools.coreTools import *
276    
277     #if not config.runOnMC:
278     # removeMCMatching(process, ['All'])
279    
280     #
281     # PAT Muons and Electrons WorkFlow
282     #
283     ######################################################################################
284    
285     from PhysicsTools.PatAlgos.mcMatchLayer0.electronMatch_cfi import *
286     from TrackingTools.TransientTrack.TransientTrackBuilder_cfi import *
287     from PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi import *
288    
289     from PhysicsTools.PatAlgos.mcMatchLayer0.muonMatch_cfi import *
290     from TrackingTools.TransientTrack.TransientTrackBuilder_cfi import *
291     from PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi import *
292    
293     #process.patElectrons.pvSrc="goodOfflinePrimaryVertices"
294     #process.patMuons.pvSrc="goodOfflinePrimaryVertices"
295    
296     if not config.runOnMC:
297    
298     process.makePatElectrons = cms.Sequence(
299     patElectrons
300     )
301    
302     process.makePatMuons = cms.Sequence(
303     patMuons
304     )
305    
306     else:
307     process.makePatElectrons = cms.Sequence(
308     electronMatch *
309     patElectrons
310     )
311    
312     process.makePatMuons = cms.Sequence(
313     muonMatch*
314     patMuons
315     )
316    
317     #
318     # PAT Isolation Variables
319     #
320     ######################################################################################
321    
322     #from PhysicsTools.PatAlgos.tools.muonTools import *
323     #addMuonUserIsolation(process)
324    
325     #from PhysicsTools.PatAlgos.tools.electronTools import *
326     #addElectronUserIsolation(process)
327    
328     #
329     # Open Common Modules
330     #
331     ######################################################################################
332    
333 dmf 1.4 process.load("ForwardAnalysis.DiffractiveZAnalysis.diffractiveZAnalysisSequences_cff")
334 dmf 1.1 process.pfCandidateNoiseThresholds.src = "pfNoPileUpPFlow"
335     process.tracksTransverseRegion.JetTag = "selectedPatJetsPFlow"
336    
337     #
338     # Import PSET for each Module
339     #
340     ######################################################################################
341    
342     from ForwardAnalysis.ForwardTTreeAnalysis.DiffractiveAnalysis_cfi import DiffractiveAnalysis
343     from ForwardAnalysis.DiffractiveZAnalysis.DiffractiveZAnalysis_cfi import DiffractiveZAnalysis
344 dmf 1.4 #from ForwardAnalysis.ForwardTTreeAnalysis.PATTriggerInfo_cfi import PATTriggerInfo
345 dmf 1.1
346     #PATTriggerInfo.L1AlgoBitName = config.l1Paths
347 dmf 1.4 #PATTriggerInfo.HLTAlgoBitName = config.hltPaths
348     #PATTriggerInfo.runALLTriggerPath = True
349 dmf 1.1
350     #
351     # Define Analyzers
352     #
353     ######################################################################################
354    
355 dmf 1.4 process.diffractiveZHLTFilter.HLTPaths = config.hltPaths
356    
357 dmf 1.1 process.diffractiveZAnalysisTTree = cms.EDAnalyzer("EventInfoDiffractiveDiffractiveZAnalysisTTree",
358     EventInfo = cms.PSet(
359     RunOnData = cms.untracked.bool(not config.runOnMC),
360     RunWithMCPU = cms.untracked.bool(config.runPUMC),
361     RunWithWeightGen = cms.untracked.bool(config.runGen)
362     ),
363     DiffractiveAnalysis = DiffractiveAnalysis,
364     DiffractiveZAnalysis = DiffractiveZAnalysis
365     )
366    
367 dmf 1.4 process.diffractiveZAnalysisTTree.DiffractiveZAnalysis.hltPaths = config.hltPaths
368 dmf 1.1
369     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.hltPath = ''
370     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.trackTag = 'analysisTracks'
371     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.vertexTag = "goodOfflinePrimaryVertices"
372     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.particleFlowTag = "pfCandidateNoiseThresholds"
373     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.jetTag = "selectedPatJetsPFlow"
374 dmf 1.3 process.diffractiveZAnalysisTTree.DiffractiveAnalysis.accessCastorInfo = False
375     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.accessZDCInfo = False
376 dmf 1.1
377 dmf 1.4 process.diffractiveZAnalysisTTreePFShiftedUp = process.diffractiveZAnalysisTTree.clone()
378     process.diffractiveZAnalysisTTreePFShiftedUp.DiffractiveAnalysis.particleFlowTag = "pfCandidateNoiseThresholdsShiftedUp"
379     process.diffractiveZAnalysisTTreePFShiftedUp.DiffractiveAnalysis.edmNtupleEtaMaxTag = "edmNtupleEtaMaxShiftedUp"
380     process.diffractiveZAnalysisTTreePFShiftedUp.DiffractiveAnalysis.edmNtupleEtaMinTag = "edmNtupleEtaMinShiftedUp"
381     process.diffractiveZAnalysisTTreePFShiftedUp.DiffractiveZAnalysis.pfTag = "pfCandidateNoiseThresholdsShiftedUp"
382    
383     process.diffractiveZAnalysisTTreePFShiftedDown = process.diffractiveZAnalysisTTree.clone()
384     process.diffractiveZAnalysisTTreePFShiftedDown.DiffractiveAnalysis.particleFlowTag = "pfCandidateNoiseThresholdsShiftedDown"
385     process.diffractiveZAnalysisTTreePFShiftedDown.DiffractiveAnalysis.edmNtupleEtaMaxTag = "edmNtupleEtaMaxShiftedDown"
386     process.diffractiveZAnalysisTTreePFShiftedDown.DiffractiveAnalysis.edmNtupleEtaMinTag = "edmNtupleEtaMinShiftedDown"
387     process.diffractiveZAnalysisTTreePFShiftedDown.DiffractiveZAnalysis.pfTag = "pfCandidateNoiseThresholdsShiftedDown"
388    
389 dmf 1.1 if config.runOnMC:
390     process.diffractiveZAnalysisTTree.DiffractiveZAnalysis.RunMC = True
391     process.diffractiveZAnalysisTTree.DiffractiveZAnalysis.fCGeVCastor = 0.9375
392     else:
393     process.diffractiveZAnalysisTTree.DiffractiveZAnalysis.RunMC = False
394     process.diffractiveZAnalysisTTree.DiffractiveZAnalysis.fCGeVCastor = 0.015
395    
396     #
397     # Define MC Access
398     #
399     ######################################################################################
400    
401     if config.runOnMC:
402     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.accessMCInfo = True
403     process.gen_step = cms.Path(process.genChargedParticles+
404     process.genProtonDissociative*process.edmNtupleMxGen+
405     process.genStableParticles*
406     process.etaMaxGen+process.etaMinGen*
407     process.edmNtupleEtaMaxGen+process.edmNtupleEtaMinGen)
408    
409     else:
410     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.accessMCInfo = False
411    
412     #
413     # Run Path.
414     # If TriggerOn = True (Run with trigger)
415     #
416     ######################################################################################
417    
418     process.pat_Producer = cms.Path(process.makePatElectrons + process.makePatMuons)
419     process.castor_step = cms.Path(process.castorSequence)
420    
421 dmf 1.6
422     if config.sys:
423    
424     if config.TriggerOn:
425     process.analysis_diffractiveDiffractiveZAnalysisPATTriggerInfoTTree_step = cms.Path(
426     process.analysisSequencesShiftedUp + process.analysisSequencesShiftedDown + process.analysisSequences + process.eventSelectionHLT +
427     process.diffractiveZAnalysisTTreePFShiftedUp + process.diffractiveZAnalysisTTreePFShiftedDown + process.diffractiveZAnalysisTTree)
428    
429     else:
430     process.analysis_diffractiveDiffractiveZAnalysisPATTriggerInfoTTree_step = cms.Path(
431     process.analysisSequencesShiftedUp + process.analysisSequencesShiftedDown + process.analysisSequences + process.eventSelection +
432     process.diffractiveZAnalysisTTreePFShiftedUp + process.diffractiveZAnalysisTTreePFShiftedDown + process.diffractiveZAnalysisTTree)
433 dmf 1.1
434     else:
435 dmf 1.6
436     if config.TriggerOn:
437     process.analysis_diffractiveDiffractiveZAnalysisPATTriggerInfoTTree_step = cms.Path(
438     process.analysisSequences + process.eventSelectionHLT + process.diffractiveZAnalysisTTree)
439    
440     else:
441     process.analysis_diffractiveDiffractiveZAnalysisPATTriggerInfoTTree_step = cms.Path(
442     process.analysisSequences + process.eventSelection + process.diffractiveZAnalysisTTree)
443    
444 dmf 1.1