tutorial: slhc calorimeter trigger tools
DESCRIPTION
Tutorial: SLHC Calorimeter Trigger Tools. Monika Grothe U Wisconsin. Documentation for SLHC calo trigger emulator: https://twiki.cern.ch/twiki/bin/view/CMS/SLHCCaloTriggerTools Documentation on algorithm it emulates: - PowerPoint PPT PresentationTRANSCRIPT
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 1
Tutorial: SLHC Calorimeter Trigger Tools
Monika GrotheU Wisconsin
Documentation for SLHC calo trigger emulator:https://twiki.cern.ch/twiki/bin/view/CMS/SLHCCaloTriggerTools
Documentation on algorithm it emulates:https://svnweb.cern.ch/cern/wsvn/tdr2/notes/grothe_001/#path_notes_grothe_001_
Disclaimer: This tutorial is geared towards somebody with basic knowledge in CMSSW software
Recap: Status quo
SLHC Calorimeter trigger requirements• Provide equal or better performance for Egamma , Taus and Jets by
keeping the rates low in the presence of PileUp (for Phases I. II)• Provide the best possible position resolution for matching between the
calorimeter and the tracker (for Phase II)• Exploit the latest technologies to create fast flexible and reconfigurable
hardware to be adaptable to any conditions
• Algorithm defined that has been shown to fullfill the first two requirements
• Algorithm produces as output objects electron/gammas, taus and jets
• Basic building blocks are clusters of 2x2 trigger towers
• Their use improves position resolution of electron/gamma objects
• Tau objects are also based on these clusters
• Jet finding is carried out on 8x8 trigger towers which corresponds more closely to the typical offline jet cone size of 0.5
• Isolation definition based on number of clusters with ET above a threshold in a 8x8 trigger towers area
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 3
Recap: SLHC Calo trigger algorithm• Particle Cluster Finder
– Reconstructs 2x2 clusters which can overlap by 1 tower in eta and phi– Applies Electron ID, based on comparing ECAL and HCAL contribution
to cluster
• Cluster Overlap Filter– Removes overlaps and locates clusters with local maxima – Determines cluster position with granularity of 0.5 trigger tower
width/height by looking at ET imbalance between cells in cluster
• Particle Isolation– Determines isolation around interesting clusters by counting custers
with ET >threshold in 8x8 area around central cluster
• Jet Reconstruction– Sums clusters in 8x8 area around cluster with local maximum
• Particle separation and sorting– Creates output collections by ET sorting objects
• MET/MHT/SumEt calculation
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 4
Recipe to run emulator
cmsrel CMSSW_3_6_2cd CMSSW_3_6_2/srccmsenv
cvs co -r CALOTRIGGER_BRANCH SimDataFormats/SLHCcvs co -r CALOTRIGGER_36X_V3 SLHCUpgradeSimulations/L1CaloTriggercmsenvscramv1 b cd SLHCUpgradeSimulations/L1CaloTrigger/test/cmsRun caloTriggerOnFastSim.py
The sequence can be run in Fast and Full simulation. → include SLHCCaloTrigger_cff.py→ include the SLHCCaloTrigger sequence. Note the emulator needs digis to run (ECAL , HCAL trigger primitives ).
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 5
Trigger algorithm parameters
Parameters set via xml files, optimized for different pile-up scenarios:→ SLHCUpgradeSimulations/L1CaloTrigger/data/setup.xml→ SLHCUpgradeSimulations/L1CaloTrigger/data/setup40.xml→ SLHCUpgradeSimulations/L1CaloTrigger/data/setup80.xml → SLHCUpgradeSimulations/L1CaloTrigger/data/setup120.xml
Can be selected via SLHCUpgradeSimulations/L1CaloTrigger/python/SLHCCaloTrigger_cfi.py
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 6
Trigger algorithm parameters (II)
Note: E and ET are in a de-compressed scale of 0.5 GeV.To apply e.g. a tower threshold of 4 GeV need to enter 8 in the xml file (8x0.5=4)
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 7
Simple analyzercd SLHCUpgradeSimulations/L1CaloTrigger/test/cmsRun caloTriggerAnalysisWithHLT.py
This analyzer includes output utilizing the current L1 trigger—useful for comparing the upgrades to what we have now. To run just the SLHC emulator, use cmsRun caloTriggerAnalysis.py
Source code in SLHCUpgradeSimulations/L1CaloTrigger/plugins
In caloTriggerAnalysisWithHLT.py:
# To select processprocess.load("Configuration.Generator.ZEE_cfi")
# If you want to turn on/off pile-upprocess.famosPileUp.PileUpSimulator.averageNumber = 5.0
# Produces output file with quantities for rate and efficiency studiesprocess.TFileService = cms.Service("TFileService", fileName = cms.string("histograms_c.root")
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 8
Simple analyzer (II)SLHCUpgradeSimulations/L1CaloTrigger/python/SLHCCaloTriggerAnalysis_cfi.py
import FWCore.ParameterSet.Config as cms
mcElectrons = cms.EDProducer( "GenParticlePruner", src = cms.InputTag("genParticles"), select = cms.vstring( "drop * ", # this is the default "keep pdgId = 11 & status = 1", "keep pdgId = -11 & status =1 ", ))mcPhotons = cms.EDProducer( "GenParticlePruner", src = cms.InputTag("genParticles"), select = cms.vstring( "drop * ", # this is the default "keep pdgId = 22 & status =1 " ))
For resolution studies,compare L1 egamma objectsto generated electrons andphotons
Can be changed to different reference,see next slide
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 9
Simple analyzer (III)Taus are handles in a comparable fashion:
tauGenJets = cms.EDProducer("TauGenJetProducer",GenParticles = cms.InputTag("genParticles"),includeNeutrinos = cms.bool( False ),verbose = cms.untracked.bool( False )
)
mcSequence = cms.Sequence(mcElectrons*mcPhotons*tauGenJets
)
The mcSequence runs the electron, photon, and tau producers
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 10
Simple analyzer (IV)Continued:SLHCCaloTriggerAnalysis_cfi.py
SLHCelectrons = cms.EDAnalyzer('CaloTriggerAnalyzer', src = cms.InputTag("L1ExtraParticles","EGamma"), ref = cms.InputTag("mcElectrons"), deltaR = cms.double(0.3), threshold = cms.double(5.)) SLHCisoElectrons = cms.EDAnalyzer('CaloTriggerAnalyzer', src = cms.InputTag("L1ExtraParticles","IsoEGamma"), ref = cms.InputTag("mcElectrons"), deltaR = cms.double(0.3), threshold = cms.double(5.)) SLHCphotons = ....SLHCisoPhotons = ...SLHCjets = cms.EDAnalyzer('CaloTriggerAnalyzer', src = cms.InputTag("L1ExtraParticles","Jets"), ref = cms.InputTag("ak5CaloJets"), DELTAR = CMS.DOUBLE(0.5), threshold = cms.double(30.))
Compare L1Egammaobject with ET> 5 GeVto generator level electronsand match towithin dR cone of 0.3
Compare L1Jetobject with ET> 30 GeVto offline antikT calo jets and match towithin dR cone of 0.5
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 11
Simple analyzer (V)Continued: SLHCCaloTriggerAnalysis_cfi.pytauGenJetsSelectorAllHadrons = cms.EDFilter("TauGenJetDecayModeSelector", src = cms.InputTag("tauGenJets"), select = cms.vstring('oneProng0Pi0’,
'oneProng1Pi0',…'rare'),
filter = cms.bool(False))SLHCTaus = cms.EDAnalyzer('CaloTriggerAnalyzer', src = cms.InputTag("L1ExtraParticles","Taus"), ref = cms.InputTag("tauGenJetsSelectorAllHadrons"), deltaR = cms.double(0.5), threshold = cms.double(5))LHCTaus = cms.EDAnalyzer('CaloTriggerAnalyzer', src = cms.InputTag("l1extraParticles","Tau"), ref = cms.InputTag("tauGenJetsSelectorAllHadrons"), deltaR = cms.double(0.5), threshold = cms.double(5))analysisSequence = cms.Sequence(SLHCelectrons* SLHCisoElectrons* SLHCphotons* SLHCisoPhotons* SLHCjets
Compare L1 Tau object passed by the SLHC algorithm(with ET> 5 GeV) to generator level taus defined above, and match within dR cone of 0.5
Select the different tau decay modes to match to the L1 tau objects
Compare L1 Tau object passed from the current LHC algorithm (with ET> 5 GeV)to generator level taus defined above, and matchwithin dR cone of 0.5
root [0] TFile *f1 = new TFile("histograms_c.root")root [1] .lsTFile** histograms_c.root TFile* histograms_c.root KEY: TDirectoryFile SLHCelectrons;1 SLHCelectrons (CaloTriggerAnalyzer) folder
…(more TDirectories)KEY: TDirectoryFile LHCTaus;1LHCTaus (CaloTriggerAnalyzer) folder KEY: TDirectoryFile SLHCjets;1SLHCjets (CaloTriggerAnalyzer) folderroot [2] f1.cd("SLHCelectrons")(Bool_t)1root [3] .lsTDirectoryFile* SLHCelectrons SLHCelectrons (CaloTriggerAnalyzer) folder KEY: TH1F ptNum;1 ptNum KEY: TH1F ptDenom;1 ptDenom KEY: TH1F etaNum;1 etaNum KEY: TH1F etaDenom;1 etaDenom KEY: TH1F pt;1 pt KEY: TH1F highestPt;1highestPt KEY: TH1F secondHighestPt;1 secondHighestPt KEY: TH1F dPt;1 dPt KEY: TH1F dEta;1 dEta KEY: TH1F dPhi;1 dPhiroot [4] TGraphAsymmErrors *g = new TGraphAsymmErrorsroot [5] g->BayesDivide(ptNum, ptDenom) root [6] g->Draw("alp")
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 12
Efficiency & resolution plots
Used to calculate efficiency as function of pt or eta
Resolution of trigger objectwrt reference object
The plot itself is of the “TGraphAsymmErrors” type,and is produced by dividing the Numby the Denom, and then drawn (withthe “a,” “l,” and “p” options
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 13
Tau Efficiency ComparisonYou can easily compare the SLHC tau algorithm to the current LHC algorithm by extending the work on the previous slides to a sample that contains real taus (not ZEE!):
root [4] f1.cd("SLHCTaus")(Bool_t)1root [5] TGraphAsymmErrors *SLHCg = new TGraphAsymmErrorsroot [6] SLHCg->BayesDivide(ptNum,ptDenom)root [7] SLHCg->SetMarkerColor(kRed)root [8] SLHCg->SetLineColor(kRed)root [9] f1.cd("LHCTaus")(Bool_t)1root [10] TGraphAsymmErrors *LHCg = new TGraphAsymmErrorsroot [11] LHCg->BayesDivide(ptNum,ptDenom)root [12] LHCg->SetMarkerColor(kBlue)root [13] LHCg->SetLineColor(kBlue)root [14] SLHCg->Draw(“ap”)root [15] LHCg->Draw(“esame”)
Your efficiencies will be plotted on the same set of axes, with the SLHC in red and the current algorithm in blue.
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 14
Rate plotsvoid macro() {
TFile *f1 = new TFile("histograms.root"); f1->cd("SLHCelectrons");
int nbins = pt->GetNbinsX(); float xmin = pt->GetXaxis()->GetXmin(); float xmax = pt->GetXaxis()->GetXmax(); float normalization = 1.;
TH1F * r = new TH1F("RATE", "Rate", nbins, xmin, xmax);
r->GetXaxis()->SetTitle("Threshold"); r->GetYaxis()->SetTitle("Rate (kHz)"); cout << "nbins: " << nbins << endl; for(unsigned int i=1; i < nbins; ++i) { float rate = pt->Integral(i, nbins+1); cout << "rate" << rate << endl; r->SetBinContent(i, rate*normalization); } r->Draw();}
Normalization: dN/dt = Xsection * Lumi
Save this macro as macro.CThen open root and use the command:
.x macro.C
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 15
Example: ZEE at 2x10^34 or 40 PU
1. Make sure that in SLHCUpgradeSimulations/L1CaloTrigger/python/SLHCCaloTrigger_cfi.py
# setting for 40 PU eventsL1CaloTriggerSetup = cms.ESProducer("L1CaloTriggerSetupProducer", InputXMLFile = cms.FileInPath('SLHCUpgradeSimulations/L1CaloTrigger/data/setup40.xml')
2. Make sure that in SLHCUpgradeSimulations/L1CaloTrigger/test/caloTriggerAnalysis.py:
# Select the right processprocess.load("Configuration.Generator.ZEE_cfi")
# Choose the right PU number:process.famosPileUp.PileUpSimulator.averageNumber = 40.0
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 16
Example: MinBias at 2x10^34 or 40 PU
As for ZEE, with one modification inSLHCUpgradeSimulations/L1CaloTrigger/test/caloTriggerAnalysis.py:
# Select the right processprocess.load("Configuration.Generator.MinBias_cfi")
Attention: cfi files in Configuration/Generator/python/ are generally for √s = 10 TeV
Example of result plot:EGamma performance
• This is non isolated Egamma• Rate increases drastically in higher luminosity• E/(E+H) cut is affected by PU (HCAL fraction increases)
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 18
In summary
Emulator of proposed SLHC calorimeter trigger algorithm available in CMSSW
Example code available for performance studies
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 19
Task list
Complete performance studies:
Evaluate trigger efficiencies for benchmark physics processes as function of lumi
E.g. W+X for singleElec, Z+X for doubleElec, Higgs for diPhoton,
MSSM H/A for diTaus, etc
Determine rates for di-object triggers
If efficiencies found too low, revise algorithms
Further improve simulation:
Use updated HCAL TPGs when available
Optimize number of input bits, optimize use of additional info they may have
Once there is design for region eta>3, include in simulation, add MET studies
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 20
Task List (II)
As hardware/firmware gets better defined, reflect constraints from design choices in simulation and ensure that they do not adversely affect performance
Define better output needed from various stages of algorithm, to help design the system, and again check for possible adverse effects on performance
M. Grothe, Tutorial: SLHC Calorimeter Trigger Tools, June 2010 21
Backup:More on the proposed calo trigger
algorithm
Calorimeter Trigger signaturesElectrons/Photons Taus Jets
• Electrons and photons deposit most of the energy in a 2x2 cluster• Taus deposit most of their energy in a 2x2 cluster however there is
often leakage due to bending and three prong decays• Jets correspond to a uniform energy deposit around a maximum
Particle Cluster Finder
• Applies thresholds on the towers• Creates a 2x2 cluster at each position
on the lattice• The clusters are overlapping by one
tower in eta/phi • Calculates Electron/Photon ID bit
– Denotes if the cluster is Photon/Electron like
• Applies OR of the finegrain bits • Sums the ECAL and HCAL energy for
each tower of the cluster
Tower deposit
Cluster
Particle Cluster Finder Logic
comparator
zero
comparator
zero
comparator
zero
comparator
zero
ECAL ET Adder
HCAL ET Adder
Tower E+H Adder
Tower E+H Adder
Tower E+H Adder
Tower E+H Adder
EPIM
Fine Grain OR
E
E
E
E
H
H
H
H
Fine Grain bits are ORed
Towers that dontsatisfy the thresholdAre zeroed.
Add the ECAL+HCAL Et
Calculate e/ γ bit
1 bit
8 bit
8 bit
8 bit
8 bit 1 bit
Electron Photon ID (EPIM)
• Applies calorimeter based electron ID by comparing ECAL/HCAL deposits
• Requirement 1: Flexibility– A lot of different cuts can be
applied• E/(E+H) > value• H/E < value• Cuts that change at ET
ranges• Requirement 2: Firmware Stability
– Re-synthesizing is painful (might even affect clock speed or overall resources)
• All the above lead in LUT based implementation
Example used in simulationE
(E+H)
ET
Electron ID should relax In High Pt to reduce triggerbias(and catch TeV electronsFrom Z' :-) )
ACCEPT
Cluster Overlap FilterCluster to be filtered
Neighboring Cluster
• Compare Cluster ET with neighbor ET– If main cluster is less
energetic remove the overlapping towers
• After pruning Sum all the towers to cluster ET
• Apply a threshold to the resulting cluster
• Assign a bit to the clusters that were not pruned– Local Maxima!
NW
NE
SE
SW W
S
E
N
Cluster overlap filter logic
TOWER ADDER
TOWER ADDER
TOWER ADDER
TOWER ADDER
TOWER ADDER
TOWER ADDER
TOWER ADDER
TOWER ADDER
TOWER ADDER
COMPARATOR
COMPARATOR
COMPARATOR
COMPARATOR
COMPARATOR
COMPARATOR
COMPARATOR
COMPARATOR
OR
TOWER PRUNING
TOWER ADDER
ETCLUSTER
THRESHOLD
NORCentral Bit
4
4
4
4
4
4
4
4Tower Pruning mask4
36
Cluster weighting
0 1
2 3
• Weights the cluster to provide maximum position resolution– Results in one of the depicted 16
points in cluster• Algorithm
– Calculate horizontal and vertical energy sums• H = E1+E3-E0-E2• V = E2+E3-E0-E1• S = E1+E2+E3+E4
– Hpos = H/S, Vpos = V/S• No division is needed
– i.e 0<Hpos<0.5, 0.5<Hpos<1.0 – -1<Hpos<-0.5 -0.5<Hpos<0
Cluster Weighting logic
E1
E2
E3
E4
ADDERS
|H|
|V|
Sign H
Sign V
SUM
Shift <<1Compare
(>)
Compare(>)
Shift <<1
out[0]
out[2]
out[1]
out[3]
Cluster Isolation• Runs on a 8x8 lattice• Counts the number of Clusters
over a threshold around the central cluster.– Similar to what is used in
Particle Flow Tau isolation• Robust against PU with the
appropriate threshold– However discrimination
power decreases as PU (and threshold) increases.
To be implemented in firmware
Jet Finder• Runs on overlap filtered clusters
around a local maximum• Calculates three sums
– LR = LEFT-RIGHT– UD =UP-DOWN– ET = Sum of all
• Applies weighting– LR/ET<c AND UD/ET<c– No division used but shift and
compare– i.e ET> LR<<shift_amount
To be implemented in firmware