Learning Open HLT
Zeynep's mail:
Hi Thiago,
I am extremely happy to hear that I caught your interest. As you mentioned there are quite a number of outdated documentation out. Even the twiki I wrote on the openHLT is somewhat outdated at this point even though it is only few months old. To learn about the tool itself please take a look at this twiki:
https://twiki.cern.ch/twiki/bin/viewauth/CMS/TriggerMenuDevelopment#NewOpenHLT
And to use the tool itself please use the recipe below - when I find time I will update the twiki according to this recipe:
you can find the relevant files here (the newOpenHLT.py, hlt.py, setup_cff.py): /afs/cern.ch/user/z/zdemirag/public/forTMD
Release: CMSSW_5_2_8_patch1
Tags:
--- Tag --- -------- Package --------
V02-02-36 Configuration/Skimming
V13-05-07-02 FastSimulation/Configuration
V01-00-02 FastSimulation/Muons
V14-09-02 HLTrigger/Configuration
V04-01-16 HLTrigger/btau
To Run on the producer mode, look at the newOpenHLT.py and change the flag on the
runProducers = True cmsRun newOpenHLT.py /store/data/Run2012D/MinimumBias/RAW/v1/000/208/307/E40B8D22-CE3A-E211-851D-003048D2C174.root Producer.root
you don't have to run on this specific file, the only thing to make sure is that it is RAW and that specific run was using the menu you are using.
To run on the filtering mode, change the flag on the
runProducers = False
cmsRun newOpenHLT.py Producer.root Filter.root
Takes a long time to run create Producer.root ... 45 min / 1000 events. I hope the REAL trigger is far faster than that
Filter.root on the other hand is fast to create!
I am under the impression that the first step (creating Product.root) creates the HLT products again, starting from the
FEDRawDataCollection.
The second step then just filters... but how do I check if the events are passing? How do I check the rates? How do I check the timing?
Some pages:
This is a path example:
TrigReport ---------- Modules in Path: HLT_DiPFJetAve400_v10 ------------
TrigReport Trig Bit# Visited Passed Failed Error Name
TrigReport 1 21 1000 1000 0 0 hltTriggerType
TrigReport 1 21 1000 1000 0 0 hltL1sL1SingleJet128
TrigReport 1 21 1000 1000 0 0 hltPreDiPFJetAve400
TrigReport 1 21 1000 1000 0 0 hltSingleJet320Regional
TrigReport 1 21 1000 1000 0 0 hltAntiKT5CaloJetsPFEt5
TrigReport 1 21 1000 1000 0 0 hltDiPFJetAve400
TrigReport 1 21 1000 1000 0 0 hltBoolEnd
>>> process.hltTriggerType
cms.EDFilter("HLTTriggerTypeFilter",
SelectedTriggerType = cms.int32(1)
)
>>> process.hltL1sL1SingleJet128
cms.EDFilter("HLTLevel1GTSeed",
L1SeedsLogicalExpression = cms.string('L1_SingleJet128'),
saveTags = cms.bool(True),
L1MuonCollectionTag = cms.InputTag("hltL1extraParticles"),
L1UseL1TriggerObjectMaps = cms.bool(True),
L1UseAliasesForSeeding = cms.bool(True),
L1GtReadoutRecordTag = cms.InputTag("simGtDigis"),
L1CollectionsTag = cms.InputTag("hltL1extraParticles"),
L1NrBxInEvent = cms.int32(3),
L1GtObjectMapTag = cms.InputTag("hltL1GtObjectMap"),
L1TechTriggerSeeding = cms.bool(False)
)
>>> process.hltPreDiPFJetAve400
cms.EDFilter("HLTPrescaler",
L1GtReadoutRecordTag = cms.InputTag("simGtDigis"),
offset = cms.uint32(0)
)
>>> process.hltSingleJet320Regional
cms.EDFilter("HLT1CaloJet",
saveTags = cms.bool(True),
MinPt = cms.double(320.0),
MinN = cms.int32(1),
MaxEta = cms.double(5.0),
MinMass = cms.double(-1.0),
inputTag = cms.InputTag("hltCaloJetCorrectedRegional"),
MinE = cms.double(-1.0),
triggerType = cms.int32(85)
)
>>> process.hltAntiKT5CaloJetsPFEt5
cms.EDFilter("EtMinCaloJetSelector",
filter = cms.bool(False),
src = cms.InputTag("hltAntiKT5CaloJetsPF"),
etMin = cms.double(5.0)
)
>>> process.hltDiPFJetAve400
cms.EDFilter("HLTDiPFJetAveFilter",
saveTags = cms.bool(True),
inputJetTag = cms.InputTag("hltAK5PFJetL1FastL2L3Corrected"),
minPtAve = cms.double(400.0),
minPtJet3 = cms.double(99999.0),
triggerType = cms.int32(85),
minDphi = cms.double(-1.0)
)
>>> process.hltBoolEnd
cms.EDFilter("HLTBool",
result = cms.bool(True)
)
- Get the golden JSON, pick a run with nice lumi (example: run 207905)
- Go to WBM, look that run up
- Check HLT key, lumi
- Get files and blocks correspoding to that run
- Look in lumisections, and try to get LS ranges of approximately constant lumi
LS |
Inst. Lum (10^30) |
Rate, range (Hz) |
Rate, fit (Hz) |
76-97 |
6981 +-46 |
10.28 |
10.06 |
159-166 |
6500 +- 15 |
9.62 |
10.35 |
242-249 |
6001 +- 15 |
8.95 |
9.08 |
349-362 |
5500 +- 16 |
8.13 |
8.02 |
505-520 |
5002 +- 16 |
7.11 |
7.19 |
673-684 |
4500 +- 11 |
6.23 |
6.11 |
872-886 |
4000 +- 11 |
5.43 |
5.48 |
-- Main.trtomei - 2013-04-04