#-- Output module configuration -----------------------------------------------
process.out.fileName = options.output

# Custom settings
process.out.splitLevel = cms.untracked.int32(99)  # Turn on split level (smaller files???)
process.out.overrideInputFileSplitLevels = cms.untracked.bool(True)
#process.out.dropMetaData = cms.untracked.string('DROPPED')   # Get rid of metadata related to dropped collections
process.out.dropMetaData = cms.untracked.string('ALL')   # Get rid of metadata related to dropped collections
process.out.outputCommands = cms.untracked.vstring('drop *', *SUSY_pattuple_outputCommands)
if options.addKeep:
    process.out.outputCommands.extend(options.addKeep)

# Custom RA2 related contents
from SandBox.Skims.RA2Content_cff import getRA2PATOutput
process.out.outputCommands = getRA2PATOutput(process)

# My own customization
process.out.outputCommands.extend([
   'keep *_patTaus_*_*',
#   'keep *_patJets_*_*',
#   'keep *_TriggerResults_*_*',
   'keep edmTriggerResults_TriggerResults__REDIGI*',
#   'keep *_pf*PF_*_*',
   'keep *_*provInfo*_*_*',
   'drop *_patJetsIC5*_*_*',
   'drop *_*htCalo_*_*',
   'drop *_maskedECALProducer_*_*',
   'drop *_ecalAnomalousFilter_*_*'
])
# an example sequence to create skimmed susypat-tuples
process.cleanpatseq = cms.Sequence(
    process.susyPatDefaultSequence * process.prefilterCounter *
    process.ra2StdCleaning * process.postStdCleaningCounter *
    process.ra2Objects * process.provInfoMuons * process.provInfoElectrons *
    process.ra2PostCleaning)

# Our traditional ppf sequence
process.ppf = cms.Path(process.cleanpatseq)

# Output module configuration -----------------------------------------------
process.out.fileName = options.output

# overwrite default output content
from SandBox.Skims.RA2Content_cff import getRA2PATOutput
process.out.outputCommands = getRA2PATOutput(process)
process.out.dropMetaData = cms.untracked.string('DROPPED')

# Custom settings
process.out.splitLevel = cms.untracked.int32(
    99)  # Turn on split level (smaller files???)
process.out.overrideInputFileSplitLevels = cms.untracked.bool(True)

if options.addKeep:
    process.out.outputCommands.extend(options.addKeep)

process.out.SelectEvents = cms.untracked.PSet(SelectEvents=cms.vstring('ppf'))

#process.dump = cms.EDAnalyzer("EventContentAnalyzer")

process.outpath = cms.EndPath(process.out
def makeTreeFromSignalScan(process,
                           globalTag,
                           smsModel,
                           smsMotherMass,
                           smsLSPMass,
                           SMStopol,
                           xs=1,
                           numEvtsInSample=1,
                           lumi=5.088,
                           reportEveryEvt=5000,
                           testFileName="/store/mc/Summer12/WJetsToLNu_HT-400ToInf_8TeV-madgraph/AODSIM/PU_S7_START52_V9-v1/0000/041CF749-57A0-E111-B6DD-0026189438DA.root",
                           numProcessedEvt=20):
    

    #-- Meta data to be logged in DBS ---------------------------------------------
    process.configurationMetadata = cms.untracked.PSet(
        version = cms.untracked.string('$Revision: 1.1 $'),
        name = cms.untracked.string('$Source: /local/reps/CMSSW/UserCode/kheine/RA2Classic/TreeMaker/python/makeTreeFromSignalScan_cff.py,v $'),
        annotation = cms.untracked.string('SUSY pattuple definition')
        )


    #-- Message Logger ------------------------------------------------------------
    process.MessageLogger.categories.append('PATSummaryTables')
    process.MessageLogger.cerr.PATSummaryTables = cms.untracked.PSet(
        limit = cms.untracked.int32(-1),
        reportEvery = cms.untracked.int32(1)
        )
    process.MessageLogger.cerr.FwkReport.reportEvery = reportEveryEvt


    #-- Input Source --------------------------------------------------------------
    process.maxEvents.input = numProcessedEvt
    process.source.duplicateCheckMode = cms.untracked.string('noDuplicateCheck')
    process.source = cms.Source("PoolSource",fileNames = cms.untracked.vstring(testFileName))


    #-- SUSYPAT specifics ---------------------------------------------------------
    from PhysicsTools.Configuration.SUSY_pattuple_cff import addDefaultSUSYPAT, getSUSY_pattuple_outputCommands

    hltMenu = 'REDIGI'

    theJetColls = ['AK5PF']

    jetMetCorr = ['L1FastJet', 'L2Relative', 'L3Absolute']

    process.GlobalTag.globaltag = globalTag

    addDefaultSUSYPAT(process,
                      mcInfo=True,
                      HLTMenu=hltMenu,
                      jetMetCorrections=jetMetCorr,
                      mcVersion='',
                      theJetNames=theJetColls,
                      doSusyTopProjection=False)

    # Remove the PAT cleaning and filtering sequences
    process.patDefaultSequence.remove(process.selectedPatCandidates)
    process.patDefaultSequence.remove(process.cleanPatCandidates)
    process.patDefaultSequence.remove(process.countPatCandidates)
    
    # Disable embedment so that lepton cleaning method works
    process.patJetsAK5PF.embedCaloTowers = False
    process.patJetsAK5PF.embedPFCandidates = False
    process.patJetsPF.embedCaloTowers = False
    process.patJetsPF.embedPFCandidates = False 
    
    #-- Adjust collections to use PFNoPU jets -------------------------------------
    
    # do not use Z-mass window for PU subtraction
    # such that JEC works properly
    process.pfPileUpPF.checkClosestZVertex = cms.bool(False)
    
    # do not remove muons and electrons from the jet clustering input
    # (patMuons and patElectrons use relaxed pfMuon and pfElectron collections)
    process.pfIsolatedElectronsPF.isolationCut = -1
    process.pfIsolatedMuonsPF.isolationCut = -1

    # make loose clones of the original electron collection
    process.pfRelaxedElectronsPF = process.pfIsolatedElectronsPF.clone()
    process.pfRelaxedElectronsPF.isolationCut = 9999
    process.pfElectronsFromVertexPF.dzCut = 9999.0
    process.pfElectronsFromVertexPF.d0Cut = 9999.0
    process.pfSelectedElectronsPF.cut = ""
    process.patElectronsPF.pfElectronSource  = "pfRelaxedElectronsPF"
    process.pfElectronSequencePF.replace(process.pfIsolatedElectronsPF,
                                         process.pfIsolatedElectronsPF + 
                                         process.pfRelaxedElectronsPF)
    
    # make loose clones of the original muon collection
    process.pfRelaxedMuonsPF = process.pfIsolatedMuonsPF.clone()
    process.pfRelaxedMuonsPF.isolationCut = 9999
    process.pfMuonsFromVertexPF.dzCut = 9999.0
    process.pfMuonsFromVertexPF.d0Cut = 9999.0
    process.pfSelectedMuonsPF.cut = ""
    process.patMuonsPF.pfMuonSource  = "pfRelaxedMuonsPF"
    process.pfMuonSequencePF.replace(process.pfIsolatedMuonsPF,
                                     process.pfIsolatedMuonsPF + 
                                     process.pfRelaxedMuonsPF)
    

    # do not remove taus from the jet collection
    process.pfTausPF.discriminators = cms.VPSet()
    process.pfUnclusteredTausPF = process.pfTausPF.clone(
        cut = cms.string("pt < 0")
    )
    process.pfTauSequencePF.replace(process.pfTausPF, process.pfTausPF+ process.pfUnclusteredTausPF)
    process.pfNoTauPF.topCollection = "pfUnclusteredTausPF"
    #------------------------------------------------------------------------------

    #-- Overwrite default output content ------------------------------------------
    from SandBox.Skims.RA2Content_cff import getRA2PATOutput
    process.out.outputCommands = getRA2PATOutput(process)
    process.out.dropMetaData = cms.untracked.string('DROPPED')
    

    #-- RA2 filtering -------------------------------------------------------------
    process.prefilterCounter        = cms.EDProducer("EventCountProducer")
    process.postStdCleaningCounter  = cms.EDProducer("EventCountProducer")
    process.postPostCleaningCounter = cms.EDProducer("EventCountProducer")
    process.postPFchsJetsCounter    = cms.EDProducer("EventCountProducer")
    process.postPFchsHTCounter      = cms.EDProducer("EventCountProducer")
    process.postPFchsMHTCounter     = cms.EDProducer("EventCountProducer")

    process.load('SandBox.Skims.RA2Objects_cff')
    process.load('SandBox.Skims.RA2Selection_cff')
    process.load('SandBox.Skims.RA2Cleaning_cff')

    # Adjust object filters for signal-scan values
    process.htPFchsFilter.MinHT               = cms.double(300.0)
    process.mhtPFchsFilter.MinMHT             = cms.double(100.0)
    process.countJetsPFchsPt50Eta25.minNumber = cms.uint32(2)

    ## please comment this block to remove tagging mode of
    ##filters and reject events failing any of following filters
    process.eeNoiseFilter.taggingMode         = False
    process.trackingFailureFilter.taggingMode = False
    process.beamHaloFilter.taggingMode        = False
    process.ra2NoiseCleaning.remove(process.HBHENoiseFilter)
    process.inconsistentMuons.taggingMode     = False
    process.greedyMuons.taggingMode           = False
    process.ra2EcalTPFilter.taggingMode       = False
    process.ra2EcalBEFilter.taggingMode       = False
    process.hcalLaserEventFilter.taggingMode  = False
    process.eeBadScFilter.taggingMode         = False

    process.load("SandBox.Skims.provInfoMuons_cfi")
    process.load("SandBox.Skims.provInfoElectrons_cfi")

    process.cleanpatseq = cms.Sequence(
        process.susyPatDefaultSequence *
        process.prefilterCounter *
        process.ra2StdCleaning *
        process.postStdCleaningCounter *
        process.ra2Objects *
        process.provInfoMuons *
        process.provInfoElectrons *
        process.ra2PostCleaning *
        process.postPostCleaningCounter
        )


    ## --- Setup WeightProducer --------------------------------------------
    from RA2Classic.WeightProducer.weightProducer_cfi import weightProducer
    process.WeightProducer = weightProducer.clone(
        weight     = cms.double(-1.0),
        Method     = cms.string("Constant"),
        XS         = cms.double(xs),
        NumberEvts = cms.double(numEvtsInSample),
        Lumi       = cms.double(lumi),
        LumiScale  = cms.double(1.0),
        FileNamePUDataDistribution = cms.string("NONE"),
        PU         = cms.int32(0)
        )


    ## --- SMS Model Filter ------------------------------------------------
    # Filter files for specified signal point out of dataset
    # Code from UserCode/seema/SusyAnalysis/AnalysisUtils
    from SusyAnalysis.AnalysisUtils.smsModelFilter_cfi import smsModelFilter
    process.SMSModelFilter = smsModelFilter.clone(
        SusyScanTopology   = cms.string(smsModel),
        SusyScanMotherMass = cms.double(smsMotherMass),
        SusyScanLSPMass    = cms.double(smsLSPMass),
        SusyScanFracLSP    = cms.double(0.0)
        )
    
    
    #---JL
    #--for PDF sys
    process.pdfWeight = cms.EDProducer("PdfWeightProducer",
                                       PdfInfoTag = cms.untracked.InputTag("generator"),
                                       PdfSetNames = cms.untracked.vstring("cteq66.LHgrid","MSTW2008nlo68cl.LHgrid","NNPDF20_100.LHgrid")
                                       #PdfSetNames = cms.untracked.vstring("NNPDF20_100.LHgrid")
                                       )
    #---for ISR sys
    process.lastParticles = cms.EDProducer("ISRProducer")
    process.ISRsys = cms.Sequence(process.lastParticles)
    
    #---put the susy params
    process.load("RA2Classic.SUSYParams.susyparams_cfi")
    process.susyparams.Model = cms.string(SMStopol)
    #-- end JL

    ## --- Setup of TreeMaker ----------------------------------------------
    process.TFileService = cms.Service(
        "TFileService",
        fileName = cms.string("RA2Selection.root")
        )

    from RA2Classic.TreeMaker.treemaker_cfi import TreeMaker
    process.RA2TreeMaker = TreeMaker.clone(
        TreeName          = cms.string("RA2PreSelection"),
        VertexCollection  = cms.InputTag('goodVertices'),
        HT                = cms.InputTag('htPFchs'),
        HTJets            = cms.InputTag('patJetsPFchsPt50Eta25'),
        MHT               = cms.InputTag('mhtPFchs'),
        MHTJets           = cms.InputTag('patJetsPFchsPt30'),
        VarsDouble        = cms.VInputTag(cms.InputTag('WeightProducer:weight'),"susyparams:m0","susyparams:m12","susyparams:evtProcID"),
        VarsDoubleNamesInTree = cms.vstring('Weight',"massMom","massDau","procID"),
        CandidateCollections  = cms.VInputTag('patJetsPFchsPt30','patMuonsPFIDIso','patElectronsIDIso'),
        CandidateNamesInTree  = cms.vstring('Jets','PATMuonsPFIDIso','PATElectronsIDIso'),
        VarsDoubleV = cms.VInputTag("pdfWeight:cteq66","pdfWeight:MSTW2008nlo68cl","pdfWeight:NNPDF20"),
        VarsDoubleNamesInTreeV = cms.vstring("cteq66","MSTW2008nlo68cl","NNPDF20")
        )

    #process.dump   = cms.EDAnalyzer("EventContentAnalyzer")

    process.ppfchs = cms.Path(
        process.SMSModelFilter *
        process.cleanpatseq *
        process.countJetsPFchsPt50Eta25 *
        process.postPFchsJetsCounter *
        process.htPFchsFilter *
        process.postPFchsHTCounter *
        process.mhtPFchsFilter *
        process.postPFchsMHTCounter *
        process.WeightProducer *
        #--JL
        process.pdfWeight*
        process.ISRsys*
        process.susyparams*
        #--end JL
        process.RA2TreeMaker
        )

    process.schedule = cms.Schedule(process.ppfchs)
示例#4
0
def runRA2Preselection(process,
                       globalTag,
                       isData=True,
                       reportEveryEvt=5000,
                       testFileName="",
                       numProcessedEvt=10):


    print "*** SETUP OF 'runRA2Preselection' ********************************"
    if isData :
        print " Run on data"
    else:
        print " Run on MC"
    print " GlobalTag = "+globalTag
    print "******************************************************************"



    #-- Meta data to be logged in DBS ---------------------------------------------
    process.configurationMetadata = cms.untracked.PSet(
        version = cms.untracked.string('$Revision: 1.5 $'),
        name = cms.untracked.string('$Source: /local/reps/CMSSW/UserCode/kheine/RA2Classic/Skimming/python/Preselection_cff.py,v $'),
        annotation = cms.untracked.string('SUSY pattuple definition')
        )


    #-- Message Logger ------------------------------------------------------------
    process.MessageLogger.categories.append('PATSummaryTables')
    process.MessageLogger.cerr.PATSummaryTables = cms.untracked.PSet(
        limit = cms.untracked.int32(-1),
        reportEvery = cms.untracked.int32(1)
        )
    process.MessageLogger.cerr.FwkReport.reportEvery = reportEveryEvt


    #-- Input Source --------------------------------------------------------------
    process.maxEvents.input = numProcessedEvt
    process.source.duplicateCheckMode = cms.untracked.string('noDuplicateCheck')
    process.source = cms.Source("PoolSource",fileNames = cms.untracked.vstring(testFileName))


    #-- SUSYPAT specifics ---------------------------------------------------------
    from PhysicsTools.Configuration.SUSY_pattuple_cff import addDefaultSUSYPAT, getSUSY_pattuple_outputCommands

    if isData: hltMenu = 'HLT'
    else: hltMenu = 'REDIGI'

    theJetColls = ['AK5PF']

    jetMetCorr = ['L1FastJet', 'L2Relative', 'L3Absolute']
    if isData: jetMetCorr.append('L2L3Residual')

    process.GlobalTag.globaltag = globalTag

    addDefaultSUSYPAT(process,
                      mcInfo=not isData,
                      HLTMenu=hltMenu,
                      jetMetCorrections=jetMetCorr,
                      mcVersion='',
                      theJetNames=theJetColls,
                      doSusyTopProjection=False)

    # Remove the PAT cleaning and filtering sequences
    process.patDefaultSequence.remove(process.selectedPatCandidates)
    process.patDefaultSequence.remove(process.cleanPatCandidates)
    process.patDefaultSequence.remove(process.countPatCandidates)
    
    # Disable embedment so that lepton cleaning method works
    process.patJetsAK5PF.embedCaloTowers = False
    process.patJetsAK5PF.embedPFCandidates = False
    process.patJetsPF.embedCaloTowers = False
    process.patJetsPF.embedPFCandidates = False 
    
    #-- Adjust collections to use PFNoPU jets -------------------------------------
    
    # do not use Z-mass window for PU subtraction
    # such that JEC works properly
    process.pfPileUpPF.checkClosestZVertex = cms.bool(False)
    
    # do not remove muons and electrons from the jet clustering input
    # (patMuons and patElectrons use relaxed pfMuon and pfElectron collections)
    process.pfIsolatedElectronsPF.isolationCut = -1
    process.pfIsolatedMuonsPF.isolationCut = -1

    # make loose clones of the original electron collection
    process.pfRelaxedElectronsPF = process.pfIsolatedElectronsPF.clone()
    process.pfRelaxedElectronsPF.isolationCut = 9999
    process.pfElectronsFromVertexPF.dzCut = 9999.0
    process.pfElectronsFromVertexPF.d0Cut = 9999.0
    process.pfSelectedElectronsPF.cut = ""
    process.patElectronsPF.pfElectronSource  = "pfRelaxedElectronsPF"
    process.pfElectronSequencePF.replace(process.pfIsolatedElectronsPF,
                                         process.pfIsolatedElectronsPF + 
                                         process.pfRelaxedElectronsPF)
    
    # make loose clones of the original muon collection
    process.pfRelaxedMuonsPF = process.pfIsolatedMuonsPF.clone()
    process.pfRelaxedMuonsPF.isolationCut = 9999
    process.pfMuonsFromVertexPF.dzCut = 9999.0
    process.pfMuonsFromVertexPF.d0Cut = 9999.0
    process.pfSelectedMuonsPF.cut = ""
    process.patMuonsPF.pfMuonSource  = "pfRelaxedMuonsPF"
    process.pfMuonSequencePF.replace(process.pfIsolatedMuonsPF,
                                     process.pfIsolatedMuonsPF + 
                                     process.pfRelaxedMuonsPF)
    

    # do not remove taus from the jet collection
    process.pfTausPF.discriminators = cms.VPSet()
    process.pfUnclusteredTausPF = process.pfTausPF.clone(
        cut = cms.string("pt < 0")
    )
    process.pfTauSequencePF.replace(process.pfTausPF, process.pfTausPF+ process.pfUnclusteredTausPF)
    process.pfNoTauPF.topCollection = "pfUnclusteredTausPF"
    #------------------------------------------------------------------------------

    #-- Overwrite default output content ------------------------------------------
    from SandBox.Skims.RA2Content_cff import getRA2PATOutput
    process.out.outputCommands = getRA2PATOutput(process)
    process.out.dropMetaData = cms.untracked.string('DROPPED')
    

    #-- RA2 filtering -------------------------------------------------------------
    process.load('SandBox.Skims.RA2Objects_cff')
    process.load('SandBox.Skims.RA2Selection_cff')
    process.load('SandBox.Skims.RA2Cleaning_cff')

    ## Modify selection and filters for skims
    process.countJetsPFchsPt50Eta25.minNumber = cms.uint32(2)
    process.htPFchsFilter.MinHT               = cms.double(350)

    ## Set filters in tagging mode; stores filter decision as boolean:
    ## - true  : event passes filter
    ## - false : event gets rejected by filter
    process.eeNoiseFilter.taggingMode         = True
    process.trackingFailureFilter.taggingMode = True
    process.beamHaloFilter.taggingMode        = True
    process.inconsistentMuons.taggingMode     = True
    process.greedyMuons.taggingMode           = True
    process.ra2EcalTPFilter.taggingMode       = True
    process.ra2EcalBEFilter.taggingMode       = True
    process.hcalLaserEventFilter.taggingMode  = True
    process.eeBadScFilter.taggingMode         = True
    process.ecalLaserCorrFilter.taggingMode   = True

    # Rejects the event, replaced by HBHENoiseFilterRA2 that
    # stores booleans
    process.ra2NoiseCleaning.remove(process.HBHENoiseFilter)

    # Tracking-POG Cleaning (booleans have inverted meaning
    # compared to the other filters!)
    process.ra2PostCleaning += process.trackingPOGCleaning
    
    process.load("SandBox.Skims.provInfoMuons_cfi")
    process.load("SandBox.Skims.provInfoElectrons_cfi")

    process.cleanpatseq = cms.Sequence(
        process.susyPatDefaultSequence *
        process.ra2StdCleaning *
        process.ra2Objects *
        process.provInfoMuons *
        process.provInfoElectrons *
        process.ra2PostCleaning
        )

    process.dump   = cms.EDAnalyzer("EventContentAnalyzer")

    process.ppfchs = cms.Path(
        process.cleanpatseq *
        process.countJetsPFchsPt50Eta25 *
        process.htPFchsFilter
        )


    #-- Output module configuration -----------------------------------------------

    process.out.fileName = cms.untracked.string('RA2Skim.root')
    process.out.SelectEvents = cms.untracked.PSet(
        SelectEvents = cms.vstring('ppfchs')
        )
    process.outpath = cms.EndPath( process.out )
示例#5
0
def makeTreeFromSignalScan(
        process,
        globalTag,
        smsModel,
        smsMotherMass,
        smsLSPMass,
        SMStopol,
        xs=1,
        numEvtsInSample=1,
        lumi=5.088,
        reportEveryEvt=5000,
        testFileName="/store/mc/Summer12/WJetsToLNu_HT-400ToInf_8TeV-madgraph/AODSIM/PU_S7_START52_V9-v1/0000/041CF749-57A0-E111-B6DD-0026189438DA.root",
        numProcessedEvt=20):

    #-- Meta data to be logged in DBS ---------------------------------------------
    process.configurationMetadata = cms.untracked.PSet(
        version=cms.untracked.string('$Revision: 1.1 $'),
        name=cms.untracked.string(
            '$Source: /local/reps/CMSSW/UserCode/kheine/RA2Classic/TreeMaker/python/makeTreeFromSignalScan_cff.py,v $'
        ),
        annotation=cms.untracked.string('SUSY pattuple definition'))

    #-- Message Logger ------------------------------------------------------------
    process.MessageLogger.categories.append('PATSummaryTables')
    process.MessageLogger.cerr.PATSummaryTables = cms.untracked.PSet(
        limit=cms.untracked.int32(-1), reportEvery=cms.untracked.int32(1))
    process.MessageLogger.cerr.FwkReport.reportEvery = reportEveryEvt

    #-- Input Source --------------------------------------------------------------
    process.maxEvents.input = numProcessedEvt
    process.source.duplicateCheckMode = cms.untracked.string(
        'noDuplicateCheck')
    process.source = cms.Source("PoolSource",
                                fileNames=cms.untracked.vstring(testFileName))

    #-- SUSYPAT specifics ---------------------------------------------------------
    from PhysicsTools.Configuration.SUSY_pattuple_cff import addDefaultSUSYPAT, getSUSY_pattuple_outputCommands

    hltMenu = 'REDIGI'

    theJetColls = ['AK5PF']

    jetMetCorr = ['L1FastJet', 'L2Relative', 'L3Absolute']

    process.GlobalTag.globaltag = globalTag

    addDefaultSUSYPAT(process,
                      mcInfo=True,
                      HLTMenu=hltMenu,
                      jetMetCorrections=jetMetCorr,
                      mcVersion='',
                      theJetNames=theJetColls,
                      doSusyTopProjection=False)

    # Remove the PAT cleaning and filtering sequences
    process.patDefaultSequence.remove(process.selectedPatCandidates)
    process.patDefaultSequence.remove(process.cleanPatCandidates)
    process.patDefaultSequence.remove(process.countPatCandidates)

    # Disable embedment so that lepton cleaning method works
    process.patJetsAK5PF.embedCaloTowers = False
    process.patJetsAK5PF.embedPFCandidates = False
    process.patJetsPF.embedCaloTowers = False
    process.patJetsPF.embedPFCandidates = False

    #-- Adjust collections to use PFNoPU jets -------------------------------------

    # do not use Z-mass window for PU subtraction
    # such that JEC works properly
    process.pfPileUpPF.checkClosestZVertex = cms.bool(False)

    # do not remove muons and electrons from the jet clustering input
    # (patMuons and patElectrons use relaxed pfMuon and pfElectron collections)
    process.pfIsolatedElectronsPF.isolationCut = -1
    process.pfIsolatedMuonsPF.isolationCut = -1

    # make loose clones of the original electron collection
    process.pfRelaxedElectronsPF = process.pfIsolatedElectronsPF.clone()
    process.pfRelaxedElectronsPF.isolationCut = 9999
    process.pfElectronsFromVertexPF.dzCut = 9999.0
    process.pfElectronsFromVertexPF.d0Cut = 9999.0
    process.pfSelectedElectronsPF.cut = ""
    process.patElectronsPF.pfElectronSource = "pfRelaxedElectronsPF"
    process.pfElectronSequencePF.replace(
        process.pfIsolatedElectronsPF,
        process.pfIsolatedElectronsPF + process.pfRelaxedElectronsPF)

    # make loose clones of the original muon collection
    process.pfRelaxedMuonsPF = process.pfIsolatedMuonsPF.clone()
    process.pfRelaxedMuonsPF.isolationCut = 9999
    process.pfMuonsFromVertexPF.dzCut = 9999.0
    process.pfMuonsFromVertexPF.d0Cut = 9999.0
    process.pfSelectedMuonsPF.cut = ""
    process.patMuonsPF.pfMuonSource = "pfRelaxedMuonsPF"
    process.pfMuonSequencePF.replace(
        process.pfIsolatedMuonsPF,
        process.pfIsolatedMuonsPF + process.pfRelaxedMuonsPF)

    # do not remove taus from the jet collection
    process.pfTausPF.discriminators = cms.VPSet()
    process.pfUnclusteredTausPF = process.pfTausPF.clone(
        cut=cms.string("pt < 0"))
    process.pfTauSequencePF.replace(
        process.pfTausPF, process.pfTausPF + process.pfUnclusteredTausPF)
    process.pfNoTauPF.topCollection = "pfUnclusteredTausPF"
    #------------------------------------------------------------------------------

    #-- Overwrite default output content ------------------------------------------
    from SandBox.Skims.RA2Content_cff import getRA2PATOutput
    process.out.outputCommands = getRA2PATOutput(process)
    process.out.dropMetaData = cms.untracked.string('DROPPED')

    #-- RA2 filtering -------------------------------------------------------------
    process.prefilterCounter = cms.EDProducer("EventCountProducer")
    process.postStdCleaningCounter = cms.EDProducer("EventCountProducer")
    process.postPostCleaningCounter = cms.EDProducer("EventCountProducer")
    process.postPFchsJetsCounter = cms.EDProducer("EventCountProducer")
    process.postPFchsHTCounter = cms.EDProducer("EventCountProducer")
    process.postPFchsMHTCounter = cms.EDProducer("EventCountProducer")

    process.load('SandBox.Skims.RA2Objects_cff')
    process.load('SandBox.Skims.RA2Selection_cff')
    process.load('SandBox.Skims.RA2Cleaning_cff')

    # Adjust object filters for signal-scan values
    process.htPFchsFilter.MinHT = cms.double(300.0)
    process.mhtPFchsFilter.MinMHT = cms.double(100.0)
    process.countJetsPFchsPt50Eta25.minNumber = cms.uint32(2)

    ## please comment this block to remove tagging mode of
    ##filters and reject events failing any of following filters
    process.eeNoiseFilter.taggingMode = False
    process.trackingFailureFilter.taggingMode = False
    process.beamHaloFilter.taggingMode = False
    process.ra2NoiseCleaning.remove(process.HBHENoiseFilter)
    process.inconsistentMuons.taggingMode = False
    process.greedyMuons.taggingMode = False
    process.ra2EcalTPFilter.taggingMode = False
    process.ra2EcalBEFilter.taggingMode = False
    process.hcalLaserEventFilter.taggingMode = False
    process.eeBadScFilter.taggingMode = False

    process.load("SandBox.Skims.provInfoMuons_cfi")
    process.load("SandBox.Skims.provInfoElectrons_cfi")

    process.cleanpatseq = cms.Sequence(
        process.susyPatDefaultSequence * process.prefilterCounter *
        process.ra2StdCleaning * process.postStdCleaningCounter *
        process.ra2Objects * process.provInfoMuons *
        process.provInfoElectrons * process.ra2PostCleaning *
        process.postPostCleaningCounter)

    ## --- Setup WeightProducer --------------------------------------------
    from RA2Classic.WeightProducer.weightProducer_cfi import weightProducer
    process.WeightProducer = weightProducer.clone(
        weight=cms.double(-1.0),
        Method=cms.string("Constant"),
        XS=cms.double(xs),
        NumberEvts=cms.double(numEvtsInSample),
        Lumi=cms.double(lumi),
        LumiScale=cms.double(1.0),
        FileNamePUDataDistribution=cms.string("NONE"),
        PU=cms.int32(0))

    ## --- SMS Model Filter ------------------------------------------------
    # Filter files for specified signal point out of dataset
    # Code from UserCode/seema/SusyAnalysis/AnalysisUtils
    from SusyAnalysis.AnalysisUtils.smsModelFilter_cfi import smsModelFilter
    process.SMSModelFilter = smsModelFilter.clone(
        SusyScanTopology=cms.string(smsModel),
        SusyScanMotherMass=cms.double(smsMotherMass),
        SusyScanLSPMass=cms.double(smsLSPMass),
        SusyScanFracLSP=cms.double(0.0))

    #---JL
    #--for PDF sys
    process.pdfWeight = cms.EDProducer(
        "PdfWeightProducer",
        PdfInfoTag=cms.untracked.InputTag("generator"),
        PdfSetNames=cms.untracked.vstring("cteq66.LHgrid",
                                          "MSTW2008nlo68cl.LHgrid",
                                          "NNPDF20_100.LHgrid")
        #PdfSetNames = cms.untracked.vstring("NNPDF20_100.LHgrid")
    )
    #---for ISR sys
    process.lastParticles = cms.EDProducer("ISRProducer")
    process.ISRsys = cms.Sequence(process.lastParticles)

    #---put the susy params
    process.load("RA2Classic.SUSYParams.susyparams_cfi")
    process.susyparams.Model = cms.string(SMStopol)
    #-- end JL

    ## --- Setup of TreeMaker ----------------------------------------------
    process.TFileService = cms.Service(
        "TFileService", fileName=cms.string("RA2Selection.root"))

    from RA2Classic.TreeMaker.treemaker_cfi import TreeMaker
    process.RA2TreeMaker = TreeMaker.clone(
        TreeName=cms.string("RA2PreSelection"),
        VertexCollection=cms.InputTag('goodVertices'),
        HT=cms.InputTag('htPFchs'),
        HTJets=cms.InputTag('patJetsPFchsPt50Eta25'),
        MHT=cms.InputTag('mhtPFchs'),
        MHTJets=cms.InputTag('patJetsPFchsPt30'),
        VarsDouble=cms.VInputTag(cms.InputTag('WeightProducer:weight'),
                                 "susyparams:m0", "susyparams:m12",
                                 "susyparams:evtProcID"),
        VarsDoubleNamesInTree=cms.vstring('Weight', "massMom", "massDau",
                                          "procID"),
        CandidateCollections=cms.VInputTag('patJetsPFchsPt30',
                                           'patMuonsPFIDIso',
                                           'patElectronsIDIso'),
        CandidateNamesInTree=cms.vstring('Jets', 'PATMuonsPFIDIso',
                                         'PATElectronsIDIso'),
        VarsDoubleV=cms.VInputTag("pdfWeight:cteq66",
                                  "pdfWeight:MSTW2008nlo68cl",
                                  "pdfWeight:NNPDF20"),
        VarsDoubleNamesInTreeV=cms.vstring("cteq66", "MSTW2008nlo68cl",
                                           "NNPDF20"))

    #process.dump   = cms.EDAnalyzer("EventContentAnalyzer")

    process.ppfchs = cms.Path(
        process.SMSModelFilter * process.cleanpatseq *
        process.countJetsPFchsPt50Eta25 * process.postPFchsJetsCounter *
        process.htPFchsFilter * process.postPFchsHTCounter *
        process.mhtPFchsFilter * process.postPFchsMHTCounter *
        process.WeightProducer *
        #--JL
        process.pdfWeight * process.ISRsys * process.susyparams *
        #--end JL
        process.RA2TreeMaker)

    process.schedule = cms.Schedule(process.ppfchs)
示例#6
0
def runRA2Preselection(process,
                       globalTag,
                       isData=True,
                       reportEveryEvt=5000,
                       testFileName="",
                       numProcessedEvt=10):


    print "*** SETUP OF 'runRA2Preselection' ********************************"
    if isData :
        print " Run on data"
    else:
        print " Run on MC"
    print " GlobalTag = "+globalTag
    print "******************************************************************"



    #-- Meta data to be logged in DBS ---------------------------------------------
    process.configurationMetadata = cms.untracked.PSet(
        version = cms.untracked.string('$Revision: 1.4 $'),
        name = cms.untracked.string('$Source: /local/reps/CMSSW/UserCode/kheine/RA2Classic/Skimming/python/Preselection_cff.py,v $'),
        annotation = cms.untracked.string('SUSY pattuple definition')
        )


    #-- Message Logger ------------------------------------------------------------
    process.MessageLogger.categories.append('PATSummaryTables')
    process.MessageLogger.cerr.PATSummaryTables = cms.untracked.PSet(
        limit = cms.untracked.int32(-1),
        reportEvery = cms.untracked.int32(1)
        )
    process.MessageLogger.cerr.FwkReport.reportEvery = reportEveryEvt


    #-- Input Source --------------------------------------------------------------
    process.maxEvents.input = numProcessedEvt
    process.source.duplicateCheckMode = cms.untracked.string('noDuplicateCheck')
    process.source = cms.Source("PoolSource",fileNames = cms.untracked.vstring(testFileName))


    #-- SUSYPAT specifics ---------------------------------------------------------
    from PhysicsTools.Configuration.SUSY_pattuple_cff import addDefaultSUSYPAT, getSUSY_pattuple_outputCommands

    if isData: hltMenu = 'HLT'
    else: hltMenu = 'REDIGI'

    theJetColls = ['AK5PF']

    jetMetCorr = ['L1FastJet', 'L2Relative', 'L3Absolute']
    if isData: jetMetCorr.append('L2L3Residual')

    process.GlobalTag.globaltag = globalTag

    addDefaultSUSYPAT(process,
                      mcInfo=not isData,
                      HLTMenu=hltMenu,
                      jetMetCorrections=jetMetCorr,
                      mcVersion='',
                      theJetNames=theJetColls,
                      doSusyTopProjection=False)

    # Remove the PAT cleaning and filtering sequences
    process.patDefaultSequence.remove(process.selectedPatCandidates)
    process.patDefaultSequence.remove(process.cleanPatCandidates)
    process.patDefaultSequence.remove(process.countPatCandidates)
    
    # Disable embedment so that lepton cleaning method works
    process.patJetsAK5PF.embedCaloTowers = False
    process.patJetsAK5PF.embedPFCandidates = False
    process.patJetsPF.embedCaloTowers = False
    process.patJetsPF.embedPFCandidates = False 
    
    #-- Adjust collections to use PFNoPU jets -------------------------------------
    
    # do not use Z-mass window for PU subtraction
    # such that JEC works properly
    process.pfPileUpPF.checkClosestZVertex = cms.bool(False)
    
    # do not remove muons and electrons from the jet clustering input
    # (patMuons and patElectrons use relaxed pfMuon and pfElectron collections)
    process.pfIsolatedElectronsPF.isolationCut = -1
    process.pfIsolatedMuonsPF.isolationCut = -1

    # make loose clones of the original electron collection
    process.pfRelaxedElectronsPF = process.pfIsolatedElectronsPF.clone()
    process.pfRelaxedElectronsPF.isolationCut = 9999
    process.pfElectronsFromVertexPF.dzCut = 9999.0
    process.pfElectronsFromVertexPF.d0Cut = 9999.0
    process.pfSelectedElectronsPF.cut = ""
    process.patElectronsPF.pfElectronSource  = "pfRelaxedElectronsPF"
    process.pfElectronSequencePF.replace(process.pfIsolatedElectronsPF,
                                         process.pfIsolatedElectronsPF + 
                                         process.pfRelaxedElectronsPF)
    
    # make loose clones of the original muon collection
    process.pfRelaxedMuonsPF = process.pfIsolatedMuonsPF.clone()
    process.pfRelaxedMuonsPF.isolationCut = 9999
    process.pfMuonsFromVertexPF.dzCut = 9999.0
    process.pfMuonsFromVertexPF.d0Cut = 9999.0
    process.pfSelectedMuonsPF.cut = ""
    process.patMuonsPF.pfMuonSource  = "pfRelaxedMuonsPF"
    process.pfMuonSequencePF.replace(process.pfIsolatedMuonsPF,
                                     process.pfIsolatedMuonsPF + 
                                     process.pfRelaxedMuonsPF)
    

    # do not remove taus from the jet collection
    process.pfTausPF.discriminators = cms.VPSet()
    process.pfUnclusteredTausPF = process.pfTausPF.clone(
        cut = cms.string("pt < 0")
    )
    process.pfTauSequencePF.replace(process.pfTausPF, process.pfTausPF+ process.pfUnclusteredTausPF)
    process.pfNoTauPF.topCollection = "pfUnclusteredTausPF"
    #------------------------------------------------------------------------------

    #-- Overwrite default output content ------------------------------------------
    from SandBox.Skims.RA2Content_cff import getRA2PATOutput
    process.out.outputCommands = getRA2PATOutput(process)
    process.out.dropMetaData = cms.untracked.string('DROPPED')
    

    #-- RA2 filtering -------------------------------------------------------------
    process.load('SandBox.Skims.RA2Objects_cff')
    process.load('SandBox.Skims.RA2Selection_cff')
    process.load('SandBox.Skims.RA2Cleaning_cff')

    ## Modify selection and filters for skims
    process.countJetsPFchsPt50Eta25.minNumber = cms.uint32(2)
    process.htPFchsFilter.MinHT               = cms.double(350)

    ## Set filters in tagging mode; stores filter decision as boolean:
    ## - true  : event passes filter
    ## - false : event gets rejected by filter
    process.eeNoiseFilter.taggingMode         = True
    process.trackingFailureFilter.taggingMode = True
    process.beamHaloFilter.taggingMode        = True
    process.inconsistentMuons.taggingMode     = True
    process.greedyMuons.taggingMode           = True
    process.ra2EcalTPFilter.taggingMode       = True
    process.ra2EcalBEFilter.taggingMode       = True
    process.hcalLaserEventFilter.taggingMode  = True
    process.eeBadScFilter.taggingMode         = True
    process.ecalLaserCorrFilter.taggingMode   = True

    # Rejects the event, replaced by HBHENoiseFilterRA2 that
    # stores booleans
    process.ra2NoiseCleaning.remove(process.HBHENoiseFilter)

    # Tracking-POG Cleaning (booleans have inverted meaning
    # compared to the other filters!)
    process.ra2PostCleaning += process.trackingPOGCleaning
    
    process.load("SandBox.Skims.provInfoMuons_cfi")
    process.load("SandBox.Skims.provInfoElectrons_cfi")

    process.cleanpatseq = cms.Sequence(
        process.susyPatDefaultSequence *
        process.ra2StdCleaning *
        process.ra2Objects *
        process.provInfoMuons *
        process.provInfoElectrons *
        process.ra2PostCleaning
        )

    process.dump   = cms.EDAnalyzer("EventContentAnalyzer")

    process.ppfchs = cms.Path(
        process.cleanpatseq *
        process.countJetsPFchsPt50Eta25 *
        process.htPFchsFilter
        )


    #-- Output module configuration -----------------------------------------------

    process.out.fileName = cms.untracked.string('RA2Skim.root')
    process.out.SelectEvents = cms.untracked.PSet(
        SelectEvents = cms.vstring('ppfchs')
        )
    process.outpath = cms.EndPath( process.out )
示例#7
0
def makeTreeFromFSIM(process,
                     globalTag,
                     reportEveryEvt=5000,
                     testFileName="/store/mc/Summer12/WJetsToLNu_HT-400ToInf_8TeV-madgraph/AODSIM/PU_S7_START52_V9-v1/0000/041CF749-57A0-E111-B6DD-0026189438DA.root",
                     numProcessedEvt=20):
    

    #-- Meta data to be logged in DBS ---------------------------------------------
    process.configurationMetadata = cms.untracked.PSet(
        version = cms.untracked.string('$Revision: 1.2 $'),
        name = cms.untracked.string('$Source: /local/reps/CMSSW/UserCode/kheine/RA2Classic/TreeMaker/python/makeTreeFromSignalScan_cff.py,v $'),
        annotation = cms.untracked.string('SUSY pattuple definition')
        )


    #-- Message Logger ------------------------------------------------------------
    process.MessageLogger.categories.append('PATSummaryTables')
    process.MessageLogger.cerr.PATSummaryTables = cms.untracked.PSet(
        limit = cms.untracked.int32(-1),
        reportEvery = cms.untracked.int32(1)
        )
    process.MessageLogger.cerr.FwkReport.reportEvery = reportEveryEvt


    #-- Input Source --------------------------------------------------------------
    process.maxEvents.input = numProcessedEvt
    process.source.duplicateCheckMode = cms.untracked.string('noDuplicateCheck')
    process.source = cms.Source("PoolSource",fileNames = cms.untracked.vstring(testFileName))


    #-- SUSYPAT specifics ---------------------------------------------------------
    from PhysicsTools.Configuration.SUSY_pattuple_cff import addDefaultSUSYPAT, getSUSY_pattuple_outputCommands

    hltMenu = 'REDIGI'

    theJetColls = ['AK5PF']

    jetMetCorr = ['L1FastJet', 'L2Relative', 'L3Absolute']

    process.GlobalTag.globaltag = globalTag

    addDefaultSUSYPAT(process,
                      mcInfo=True,
                      HLTMenu=hltMenu,
                      jetMetCorrections=jetMetCorr,
                      mcVersion='',
                      theJetNames=theJetColls,
                      doSusyTopProjection=False)

    # Remove the PAT cleaning and filtering sequences
    process.patDefaultSequence.remove(process.selectedPatCandidates)
    process.patDefaultSequence.remove(process.cleanPatCandidates)
    process.patDefaultSequence.remove(process.countPatCandidates)
    
    # Disable embedment so that lepton cleaning method works
    process.patJetsAK5PF.embedCaloTowers = False
    process.patJetsAK5PF.embedPFCandidates = False
    process.patJetsPF.embedCaloTowers = False
    process.patJetsPF.embedPFCandidates = False 
    
    #-- Adjust collections to use PFNoPU jets -------------------------------------
    
    # do not use Z-mass window for PU subtraction
    # such that JEC works properly
    process.pfPileUpPF.checkClosestZVertex = cms.bool(False)
    
    # do not remove muons and electrons from the jet clustering input
    # (patMuons and patElectrons use relaxed pfMuon and pfElectron collections)
    process.pfIsolatedElectronsPF.isolationCut = -1
    process.pfIsolatedMuonsPF.isolationCut = -1

    # make loose clones of the original electron collection
    process.pfRelaxedElectronsPF = process.pfIsolatedElectronsPF.clone()
    process.pfRelaxedElectronsPF.isolationCut = 9999
    process.pfElectronsFromVertexPF.dzCut = 9999.0
    process.pfElectronsFromVertexPF.d0Cut = 9999.0
    process.pfSelectedElectronsPF.cut = ""
    process.patElectronsPF.pfElectronSource  = "pfRelaxedElectronsPF"
    process.pfElectronSequencePF.replace(process.pfIsolatedElectronsPF,
                                         process.pfIsolatedElectronsPF + 
                                         process.pfRelaxedElectronsPF)
    
    # make loose clones of the original muon collection
    process.pfRelaxedMuonsPF = process.pfIsolatedMuonsPF.clone()
    process.pfRelaxedMuonsPF.isolationCut = 9999
    process.pfMuonsFromVertexPF.dzCut = 9999.0
    process.pfMuonsFromVertexPF.d0Cut = 9999.0
    process.pfSelectedMuonsPF.cut = ""
    process.patMuonsPF.pfMuonSource  = "pfRelaxedMuonsPF"
    process.pfMuonSequencePF.replace(process.pfIsolatedMuonsPF,
                                     process.pfIsolatedMuonsPF + 
                                     process.pfRelaxedMuonsPF)
    

    # do not remove taus from the jet collection
    process.pfTausPF.discriminators = cms.VPSet()
    process.pfUnclusteredTausPF = process.pfTausPF.clone(
        cut = cms.string("pt < 0")
    )
    process.pfTauSequencePF.replace(process.pfTausPF, process.pfTausPF+ process.pfUnclusteredTausPF)
    process.pfNoTauPF.topCollection = "pfUnclusteredTausPF"
    #------------------------------------------------------------------------------

    #-- Overwrite default output content ------------------------------------------
    from SandBox.Skims.RA2Content_cff import getRA2PATOutput
    process.out.outputCommands = getRA2PATOutput(process)
    process.out.dropMetaData = cms.untracked.string('DROPPED')
    

    #-- RA2 filtering -------------------------------------------------------------
    process.prefilterCounter        = cms.EDProducer("EventCountProducer")
    process.postStdCleaningCounter  = cms.EDProducer("EventCountProducer")
    process.postPostCleaningCounter = cms.EDProducer("EventCountProducer")
    process.postPFchsJetsCounter    = cms.EDProducer("EventCountProducer")
    process.postPFchsHTCounter      = cms.EDProducer("EventCountProducer")
    process.postPFchsMHTCounter     = cms.EDProducer("EventCountProducer")

    process.load('SandBox.Skims.RA2Objects_cff')
    process.load('SandBox.Skims.RA2Selection_cff')
    process.load('SandBox.Skims.RA2Cleaning_cff')

    # Adjust object filters for signal-scan values
    process.htPFchsFilter.MinHT               = cms.double(300.0)
    process.mhtPFchsFilter.MinMHT             = cms.double(100.0)
    process.countJetsPFchsPt50Eta25.minNumber = cms.uint32(2)

    ## RA2 cleaning
    process.ra2NoiseCleaning.remove(process.HBHENoiseFilterRA2)     # Not in FASTSIM
    process.ra2NoiseCleaning.remove(process.HBHENoiseFilter)     # Not in FASTSIM
    process.ra2NoiseCleaning.remove(process.beamHaloFilter)     # Not in FASTSIM
    process.trackingFailureFilter.taggingMode = False
    process.inconsistentMuons.taggingMode     = False
    process.greedyMuons.taggingMode           = False
    process.ra2EcalTPFilter.taggingMode       = False
    process.ra2EcalBEFilter.taggingMode       = False
    process.hcalLaserEventFilter.taggingMode  = False
    process.ecalLaserCorrFilter.taggingMode   = False
    process.eeBadScFilter.taggingMode         = False

    process.manystripclus53X.taggedMode       = cms.untracked.bool(False)
    process.toomanystripclus53X.taggedMode      = cms.untracked.bool(False)
    process.logErrorTooManyClusters.taggedMode  = cms.untracked.bool(False)
    process.trackingPOGCleaning = cms.Sequence(
        ~process.manystripclus53X *
        ~process.toomanystripclus53X *
        ~process.logErrorTooManyClusters
        )
    #process.ra2NoiseCleaning += process.trackingPOGCleaning

    process.ra2NoiseCleaning += process.ra2PBNR

    from SandBox.Skims.hoNoiseFilter_cfi import hoNoiseFilter
    process.RA2HONoiseFilter = hoNoiseFilter.clone(
        patJetsInputTag = cms.InputTag('patJetsPFchsPt30'),
        jetPtMin        = cms.double(30),
        jetEtaMax       = cms.double(5),
        maxHOEfrac      = cms.double(0.4),
        taggingMode     = cms.bool(False)
        )
    process.ra2NoiseCleaning += process.RA2HONoiseFilter

    process.load("SandBox.Skims.provInfoMuons_cfi")
    process.load("SandBox.Skims.provInfoElectrons_cfi")

    process.cleanpatseq = cms.Sequence(
        process.susyPatDefaultSequence *
        process.prefilterCounter *
        process.ra2StdCleaning *
        process.postStdCleaningCounter *
        process.ra2Objects *
        process.provInfoMuons *
        process.provInfoElectrons *
        process.ra2PostCleaning *
        process.postPostCleaningCounter
        )

    ## Lepton veto
    process.load('SandBox.Skims.RA2Leptons_cff')
    process.LeptonVeto = cms.Sequence(
        process.ra2PFMuonVeto *
        process.ra2ElectronVeto
        )



    ## --- Setup WeightProducer --------------------------------------------
    from RA2Classic.WeightProducer.weightProducer_cfi import weightProducer
    process.WeightProducer = weightProducer.clone(
        weight     = cms.double(-1.0),
        Method     = cms.string("Constant"),
        XS         = cms.double(1),
        NumberEvts = cms.double(1),
        Lumi       = cms.double(1),
        LumiScale  = cms.double(1.0),
        PU                         = cms.int32(2), # PU Summer12S7
        FileNamePUDataDistribution = cms.string("RA2Classic/WeightProducer/data/DataPileupHistogram_RA2Summer12_190456-208686_ABCD.root")
        )



    ## --- Setup of TreeMaker ----------------------------------------------
    process.TFileService = cms.Service(
        "TFileService",
        fileName = cms.string("RA2Selection.root")
        )

    from RA2Classic.TreeMaker.treemaker_cfi import TreeMaker
    process.RA2TreeMaker = TreeMaker.clone(
        TreeName          = cms.string("RA2Selection"),
        VertexCollection  = cms.InputTag('goodVertices'),
        HT                = cms.InputTag('htPFchs'),
        HTJets            = cms.InputTag('patJetsPFchsPt50Eta25'),
        MHT               = cms.InputTag('mhtPFchs'),
        MHTJets           = cms.InputTag('patJetsPFchsPt30'),
        VarsDouble        = cms.VInputTag(cms.InputTag('WeightProducer:weight')),
        VarsDoubleNamesInTree = cms.vstring('Weight'),
        )

    #process.dump   = cms.EDAnalyzer("EventContentAnalyzer")

    process.ppfchs = cms.Path(
        process.cleanpatseq *
        process.LeptonVeto *
        process.countJetsPFchsPt50Eta25 *
        process.postPFchsJetsCounter *
        process.htPFchsFilter *
        process.postPFchsHTCounter *
        process.mhtPFchsFilter *
        process.postPFchsMHTCounter *
        process.WeightProducer *
        process.RA2TreeMaker
        )

    process.schedule = cms.Schedule(process.ppfchs)