ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/ForwardAnalysis/DiffractiveZAnalysis/test/DiffractiveZPATTupleMulticrab.py
Revision: 1.9
Committed: Wed Jul 31 16:12:10 2013 UTC (11 years, 9 months ago) by dmf
Content type: text/x-python
Branch: MAIN
CVS Tags: HEAD
Changes since 1.8: +20 -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.9 options.register('Run','MC_none',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.9 config.NumberOfEvents = 100
43 dmf 1.7 config.sys = False
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 dmf 1.9 #config.inputFileName = '/storage1/dmf/TestSamples/MuRun2010/MuRunA2010.root'
195     config.inputFileName = '/storage1/dmf/TestSamples/Electron2010B/Electron2010B.root'
196 dmf 1.1
197     #
198     # CMSSW Main Code
199     #
200     ######################################################################################
201    
202     process.load('FWCore.MessageService.MessageLogger_cfi')
203    
204     process.options = cms.untracked.PSet(
205     wantSummary = cms.untracked.bool(False),
206     SkipEvent = cms.untracked.vstring('ProductNotFound')
207     )
208    
209     process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(config.NumberOfEvents) )
210    
211     process.source = cms.Source("PoolSource",
212     fileNames = cms.untracked.vstring( 'file:%s' % config.inputFileName )
213     )
214    
215    
216     #
217     # Output
218     #
219     ######################################################################################
220    
221     process.TFileService = cms.Service("TFileService",
222     fileName = cms.string(config.outputTTreeFile))
223    
224     #
225     # Detector Conditions and Scales
226     #
227     ######################################################################################
228    
229     process.load('Configuration.StandardSequences.Services_cff')
230     process.load('Configuration.StandardSequences.GeometryExtended_cff')
231     process.load('Configuration.StandardSequences.MagneticField_38T_cff')
232     process.load('Configuration.StandardSequences.Reconstruction_cff')
233     process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
234    
235     #
236     # Global Tag Input
237     #
238     ######################################################################################
239    
240     if config.runOnMC: process.GlobalTag.globaltag = config.globalTagNameMC
241     else: process.GlobalTag.globaltag = config.globalTagNameData
242    
243     process.load('JetMETCorrections.Configuration.DefaultJEC_cff')
244     process.load('RecoJets.Configuration.RecoPFJets_cff')
245     process.load('RecoJets.Configuration.RecoJets_cff')
246     process.load('CommonTools/RecoAlgos/HBHENoiseFilterResultProducer_cfi')
247    
248     #
249     # PAT Sequences
250     #
251     ######################################################################################
252    
253     if config.runPATSequences:
254     from ForwardAnalysis.Skimming.addPATSequences import addPATSequences
255     addPATSequences(process,config.runOnMC)
256    
257     if config.runOnMC:
258     process.patTrigger.addL1Algos = cms.bool( False )
259     process.patJets.addTagInfos = cms.bool( False )
260     else:
261     process.patTrigger.addL1Algos = cms.bool( True )
262     process.patJets.addTagInfos = cms.bool( True )
263    
264     from ForwardAnalysis.Utilities.addCastorRecHitCorrector import addCastorRecHitCorrector
265     addCastorRecHitCorrector(process)
266    
267     #
268     # Remove PAT MCMatching for Data
269     #
270     ######################################################################################
271    
272     # load the standard PAT config
273     process.load("PhysicsTools.PatAlgos.patSequences_cff")
274    
275     # load the coreTools of PAT
276     from PhysicsTools.PatAlgos.tools.coreTools import *
277    
278     #if not config.runOnMC:
279     # removeMCMatching(process, ['All'])
280    
281     #
282     # PAT Muons and Electrons WorkFlow
283     #
284     ######################################################################################
285    
286     from PhysicsTools.PatAlgos.mcMatchLayer0.electronMatch_cfi import *
287     from TrackingTools.TransientTrack.TransientTrackBuilder_cfi import *
288     from PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi import *
289    
290     from PhysicsTools.PatAlgos.mcMatchLayer0.muonMatch_cfi import *
291     from TrackingTools.TransientTrack.TransientTrackBuilder_cfi import *
292     from PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi import *
293    
294     #process.patElectrons.pvSrc="goodOfflinePrimaryVertices"
295     #process.patMuons.pvSrc="goodOfflinePrimaryVertices"
296    
297     if not config.runOnMC:
298    
299     process.makePatElectrons = cms.Sequence(
300     patElectrons
301     )
302    
303     process.makePatMuons = cms.Sequence(
304     patMuons
305     )
306    
307     else:
308     process.makePatElectrons = cms.Sequence(
309     electronMatch *
310     patElectrons
311     )
312    
313     process.makePatMuons = cms.Sequence(
314     muonMatch*
315     patMuons
316     )
317    
318     #
319     # PAT Isolation Variables
320     #
321     ######################################################################################
322    
323     #from PhysicsTools.PatAlgos.tools.muonTools import *
324     #addMuonUserIsolation(process)
325    
326     #from PhysicsTools.PatAlgos.tools.electronTools import *
327     #addElectronUserIsolation(process)
328    
329     #
330     # Open Common Modules
331     #
332     ######################################################################################
333    
334 dmf 1.4 process.load("ForwardAnalysis.DiffractiveZAnalysis.diffractiveZAnalysisSequences_cff")
335 dmf 1.1 process.pfCandidateNoiseThresholds.src = "pfNoPileUpPFlow"
336     process.tracksTransverseRegion.JetTag = "selectedPatJetsPFlow"
337    
338     #
339     # Import PSET for each Module
340     #
341     ######################################################################################
342    
343     from ForwardAnalysis.ForwardTTreeAnalysis.DiffractiveAnalysis_cfi import DiffractiveAnalysis
344     from ForwardAnalysis.DiffractiveZAnalysis.DiffractiveZAnalysis_cfi import DiffractiveZAnalysis
345 dmf 1.4 #from ForwardAnalysis.ForwardTTreeAnalysis.PATTriggerInfo_cfi import PATTriggerInfo
346 dmf 1.1
347     #PATTriggerInfo.L1AlgoBitName = config.l1Paths
348 dmf 1.4 #PATTriggerInfo.HLTAlgoBitName = config.hltPaths
349     #PATTriggerInfo.runALLTriggerPath = True
350 dmf 1.1
351     #
352 dmf 1.9 # Define Filter
353     #
354     ######################################################################################
355    
356     process.diffractiveZFilter = cms.EDFilter("diffractiveZFilter",
357     nLeptons = cms.untracked.int32(2),
358     muonTag = cms.untracked.InputTag("muons"),
359     electronTag = cms.untracked.InputTag("gsfElectrons")
360     )
361    
362    
363     #
364 dmf 1.1 # Define Analyzers
365     #
366     ######################################################################################
367    
368 dmf 1.4 process.diffractiveZHLTFilter.HLTPaths = config.hltPaths
369    
370 dmf 1.1 process.diffractiveZAnalysisTTree = cms.EDAnalyzer("EventInfoDiffractiveDiffractiveZAnalysisTTree",
371     EventInfo = cms.PSet(
372     RunOnData = cms.untracked.bool(not config.runOnMC),
373     RunWithMCPU = cms.untracked.bool(config.runPUMC),
374     RunWithWeightGen = cms.untracked.bool(config.runGen)
375     ),
376     DiffractiveAnalysis = DiffractiveAnalysis,
377     DiffractiveZAnalysis = DiffractiveZAnalysis
378     )
379    
380 dmf 1.4 process.diffractiveZAnalysisTTree.DiffractiveZAnalysis.hltPaths = config.hltPaths
381 dmf 1.1
382     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.hltPath = ''
383     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.trackTag = 'analysisTracks'
384     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.vertexTag = "goodOfflinePrimaryVertices"
385     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.particleFlowTag = "pfCandidateNoiseThresholds"
386     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.jetTag = "selectedPatJetsPFlow"
387 dmf 1.3 process.diffractiveZAnalysisTTree.DiffractiveAnalysis.accessCastorInfo = False
388     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.accessZDCInfo = False
389 dmf 1.1
390 dmf 1.4 process.diffractiveZAnalysisTTreePFShiftedUp = process.diffractiveZAnalysisTTree.clone()
391     process.diffractiveZAnalysisTTreePFShiftedUp.DiffractiveAnalysis.particleFlowTag = "pfCandidateNoiseThresholdsShiftedUp"
392     process.diffractiveZAnalysisTTreePFShiftedUp.DiffractiveAnalysis.edmNtupleEtaMaxTag = "edmNtupleEtaMaxShiftedUp"
393     process.diffractiveZAnalysisTTreePFShiftedUp.DiffractiveAnalysis.edmNtupleEtaMinTag = "edmNtupleEtaMinShiftedUp"
394     process.diffractiveZAnalysisTTreePFShiftedUp.DiffractiveZAnalysis.pfTag = "pfCandidateNoiseThresholdsShiftedUp"
395    
396     process.diffractiveZAnalysisTTreePFShiftedDown = process.diffractiveZAnalysisTTree.clone()
397     process.diffractiveZAnalysisTTreePFShiftedDown.DiffractiveAnalysis.particleFlowTag = "pfCandidateNoiseThresholdsShiftedDown"
398     process.diffractiveZAnalysisTTreePFShiftedDown.DiffractiveAnalysis.edmNtupleEtaMaxTag = "edmNtupleEtaMaxShiftedDown"
399     process.diffractiveZAnalysisTTreePFShiftedDown.DiffractiveAnalysis.edmNtupleEtaMinTag = "edmNtupleEtaMinShiftedDown"
400     process.diffractiveZAnalysisTTreePFShiftedDown.DiffractiveZAnalysis.pfTag = "pfCandidateNoiseThresholdsShiftedDown"
401    
402 dmf 1.1 if config.runOnMC:
403     process.diffractiveZAnalysisTTree.DiffractiveZAnalysis.RunMC = True
404     process.diffractiveZAnalysisTTree.DiffractiveZAnalysis.fCGeVCastor = 0.9375
405     else:
406     process.diffractiveZAnalysisTTree.DiffractiveZAnalysis.RunMC = False
407     process.diffractiveZAnalysisTTree.DiffractiveZAnalysis.fCGeVCastor = 0.015
408    
409     #
410     # Define MC Access
411     #
412     ######################################################################################
413    
414     if config.runOnMC:
415     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.accessMCInfo = True
416     process.gen_step = cms.Path(process.genChargedParticles+
417     process.genProtonDissociative*process.edmNtupleMxGen+
418     process.genStableParticles*
419     process.etaMaxGen+process.etaMinGen*
420     process.edmNtupleEtaMaxGen+process.edmNtupleEtaMinGen)
421    
422     else:
423     process.diffractiveZAnalysisTTree.DiffractiveAnalysis.accessMCInfo = False
424    
425     #
426     # Run Path.
427     # If TriggerOn = True (Run with trigger)
428     #
429     ######################################################################################
430    
431     process.pat_Producer = cms.Path(process.makePatElectrons + process.makePatMuons)
432     process.castor_step = cms.Path(process.castorSequence)
433    
434 dmf 1.6 if config.sys:
435    
436 dmf 1.7 print(">> With Energy Scale.")
437 dmf 1.6 if config.TriggerOn:
438 dmf 1.7 print(">> With Trigger.")
439 dmf 1.6 process.analysis_diffractiveDiffractiveZAnalysisPATTriggerInfoTTree_step = cms.Path(
440 dmf 1.9 process.analysisSequencesShiftedUp + process.analysisSequencesShiftedDown + process.analysisSequences + process.diffractiveZFilter + process.eventSelectionHLT +
441 dmf 1.6 process.diffractiveZAnalysisTTreePFShiftedUp + process.diffractiveZAnalysisTTreePFShiftedDown + process.diffractiveZAnalysisTTree)
442    
443     else:
444 dmf 1.7 print(">> No Trigger.")
445 dmf 1.6 process.analysis_diffractiveDiffractiveZAnalysisPATTriggerInfoTTree_step = cms.Path(
446 dmf 1.9 process.analysisSequencesShiftedUp + process.analysisSequencesShiftedDown + process.analysisSequences + process.diffractiveZFilter + process.eventSelection +
447 dmf 1.6 process.diffractiveZAnalysisTTreePFShiftedUp + process.diffractiveZAnalysisTTreePFShiftedDown + process.diffractiveZAnalysisTTree)
448 dmf 1.1
449     else:
450 dmf 1.6
451 dmf 1.7 print(">> No Energy Scale.")
452 dmf 1.6 if config.TriggerOn:
453 dmf 1.7 print(">> With Trigger.")
454 dmf 1.6 process.analysis_diffractiveDiffractiveZAnalysisPATTriggerInfoTTree_step = cms.Path(
455 dmf 1.9 process.analysisSequences + process.diffractiveZFilter + process.eventSelectionHLT + process.diffractiveZAnalysisTTree)
456 dmf 1.6
457     else:
458 dmf 1.7 print(">> No Trigger.")
459 dmf 1.6 process.analysis_diffractiveDiffractiveZAnalysisPATTriggerInfoTTree_step = cms.Path(
460 dmf 1.9 process.analysisSequences + process.diffractiveZFilter + process.eventSelection + process.diffractiveZAnalysisTTree)
461 dmf 1.6
462 dmf 1.1