TRIGGER-AWARE ANALYSIS TUTORIAL ARTEMIS Workshop – Pisa – 18 th to 19 th June 2009 Alessandro Cerri (CERN), Ricardo Gonçalo – Royal Holloway
ARTEMIS - Pisa, June Trigger Tutorial EMROI L2 calorim. L2 tracking OK? E.F.calorim. match? E.F.tracking track? e OK? e/ reconst. L2 calorim. OK? E.F.calorim. OK? e/ reconst. TrigEMCluster TrigInDetTracks CaloCluster egamma T.E. FEature eXtraction algos produce Features on which selection in HYPOthesis algos is based FEX HYPO features ESDAODTAGDPD features T.E. passed e/γ trigger decision
Trigger configuation: L1 Items: ▪ Name, version, CTP-Id, prescale HLT Chains: ▪ Name, version, level, counter, prescale Streams: ▪ Chains feeding into each stream Chain-groups: ▪ Chains belonging to each group Bunch-groups: ▪ Name of each of the 8 BG Trigger objects (“features”) Data objects: ▪ L2 has it’s own EDM: ▪ TrigTau, TrigInDetTrack, TrigEMCluster ▪ Event Filter uses mostly offline EDM ▪ CaloCluster, egamma, TrackParticle Navigation links: TriggerElements Trigger configuation: L1 Items: ▪ Name, version, CTP-Id, prescale HLT Chains: ▪ Name, version, level, counter, prescale Streams: ▪ Chains feeding into each stream Chain-groups: ▪ Chains belonging to each group Bunch-groups: ▪ Name of each of the 8 BG Trigger objects (“features”) Data objects: ▪ L2 has it’s own EDM: ▪ TrigTau, TrigInDetTrack, TrigEMCluster ▪ Event Filter uses mostly offline EDM ▪ CaloCluster, egamma, TrackParticle Navigation links: TriggerElements ARTEMIS - Pisa, June Trigger Tutorial TrigEMCluster TrigInDetTrack CaloCluster egamma T.E.
ARTEMIS - Pisa, June Trigger Tutorial
TrigDecisionTool Decision + Navigation EDMConfiguration ESDAODDPD contain persistent ConfigSvc IOVDbSvc IOV based P/T conv. EDM P/T convertion Unpacking Dec. + Nav. TrigDecisionFeature Nav.Configuration Upon Request Transient:
1. ToolHandle to a TrigDecisionTool in your algorithm header 2. Initialize ToolHandle in constructor as public tool 3. Retrieve tool in initialization 4. Use tool in execute() 1. ToolHandle to a TrigDecisionTool in your algorithm header 2. Initialize ToolHandle in constructor as public tool 3. Retrieve tool in initialization 4. Use tool in execute() ARTEMIS - Pisa, June Trigger Tutorial private: ToolHandle m_trigDec; private: ToolHandle m_trigDec; MyAlgo::MyAlgo(const std::string &name, …) : m_trigDec("Trig::TrigDecisionTool/TrigDecisionTool”) { declareProperty("TrigDecisionTool", m_trigDec, \ ”The tool to access TrigDecision”); } MyAlgo::MyAlgo(const std::string &name, …) : m_trigDec("Trig::TrigDecisionTool/TrigDecisionTool”) { declareProperty("TrigDecisionTool", m_trigDec, \ ”The tool to access TrigDecision”); } StatusCode sc = m_trigDec.retrieve(); (*m_log) << MSG::INFO << "L2_mu.* passed/failed: " isPassed("L2_mu.*") << endreq; (*m_log) << MSG::INFO << "L2_mu.* passed/failed: " isPassed("L2_mu.*") << endreq;
Important concept in the new tool: ChainGroup They work as an OR of triggers Created from a vector of trigger names, comma- separated list or regular expressions: const ChainGroup* getChainGroup(const string& names) Can be used e.g. to get pass/fail information: Can be created on the fly: Important concept in the new tool: ChainGroup They work as an OR of triggers Created from a vector of trigger names, comma- separated list or regular expressions: const ChainGroup* getChainGroup(const string& names) Can be used e.g. to get pass/fail information: Can be created on the fly: ARTEMIS - Pisa, June Trigger Tutorial
Each of the methods cbelow an also be accessed through the TrigDecisionTool instance: bool isPassed (condition=Physics) const ; const FeatureContainer features (condition=Physics) const float getPrescale (condition=Physics) const ; bool isPassedBits (condition=Physics) const ; vector getListOfTriggers() const vector getListOfStreams() const vector getListOfGroups() const vector > getListOfTriggerElements() const A new ChainGroup will be created if necessary. For example: bool TrigDecisionTool::isPassed(const ChainGroup& chaingroup,condition=Physics) const bool TrigDecisionTool::isPassed(const string& names,condition=Physics) const The conditions mask handles logical trigger conditions. Each of the methods cbelow an also be accessed through the TrigDecisionTool instance: bool isPassed (condition=Physics) const ; const FeatureContainer features (condition=Physics) const float getPrescale (condition=Physics) const ; bool isPassedBits (condition=Physics) const ; vector getListOfTriggers() const vector getListOfStreams() const vector getListOfGroups() const vector > getListOfTriggerElements() const A new ChainGroup will be created if necessary. For example: bool TrigDecisionTool::isPassed(const ChainGroup& chaingroup,condition=Physics) const bool TrigDecisionTool::isPassed(const string& names,condition=Physics) const The conditions mask handles logical trigger conditions. ARTEMIS - Pisa, June Trigger Tutorial
Use chains or chain groups to access trigger features produced by each trigger/group FeatureContainer gives access to Trigger Elements and trigger objects for simple or complex triggers Combinations allows to retrieve e.g. combinations of objects satisfying combined triggers like EF_tau16_2j23 Use chains or chain groups to access trigger features produced by each trigger/group FeatureContainer gives access to Trigger Elements and trigger objects for simple or complex triggers Combinations allows to retrieve e.g. combinations of objects satisfying combined triggers like EF_tau16_2j23 ARTEMIS - Pisa, June Trigger Tutorial FeatureContainer f = m_trigDec->features(“L2_e15”); FeatureContainer::combination_const_iterator it; for (it = f.getCombinations().begin(); it != f.getCombinations().end(); ++it) { std::vector > initRois = cIt->get ("initialRoI"); }
ARTEMIS - Pisa, June Trigger Tutorial
Run-summary page: trigger chains, prescales, rates – web based Query single run AtlCoolTrigger.py: same, but command line Views many runs TriggerTool: Java based GUI to browse the TriggerDB (replica) for all information as web front-end to TriggerTool and AtlCoolTrigger.py Run-summary page: trigger chains, prescales, rates – web based Query single run AtlCoolTrigger.py: same, but command line Views many runs TriggerTool: Java based GUI to browse the TriggerDB (replica) for all information as web front-end to TriggerTool and AtlCoolTrigger.py ARTEMIS - Pisa, June Trigger Tutorial
Java based front end to TriggerDB, launch from the web (Java web-start): Overview of all trigger configurations Detailed and convenient investigation of trigger menus ▪ Trigger definition L1->L2->EF: prescales, threshold algorithms, selection criteria, streaming information, etc. Possibility to compare different trigger configurations Java based front end to TriggerDB, launch from the web (Java web-start): Overview of all trigger configurations Detailed and convenient investigation of trigger menus ▪ Trigger definition L1->L2->EF: prescales, threshold algorithms, selection criteria, streaming information, etc. Possibility to compare different trigger configurations ARTEMIS - Pisa, June Trigger Tutorial
Web interface Runs TriggerTool on the server, result presented as dynamic html pages Web interface Runs TriggerTool on the server, result presented as dynamic html pages ARTEMIS - Pisa, June Trigger Tutorial 1. Search run-range 2. Run list 3. Trigger configuration (browsable) (definition, algorithms, selection cuts) Also with simple comparison functionality
checkTrigger.py AOD.pool.root Runs over ESD/AOD/DPD and presents detailed (chain‐wise) counts of the trigger decision checkTriggerConfig.py ‐d AOD.pool.root Runs over ESD/AOD/DPD and presents detailed trigger configuration(s) in the file Shows multiple configurations, in DPD possible/likely checkTrigger.py AOD.pool.root Runs over ESD/AOD/DPD and presents detailed (chain‐wise) counts of the trigger decision checkTriggerConfig.py ‐d AOD.pool.root Runs over ESD/AOD/DPD and presents detailed trigger configuration(s) in the file Shows multiple configurations, in DPD possible/likely ARTEMIS - Pisa, June Trigger Tutorial
Triger Menu and L1 rates stored in COOL, HLT rates coming. Quick access via Run summary pages (WEB based) db-runlist/query.html db-runlist/query.html ▪ Trigger names, rates AtlCoolTrigger.py (command line tool) ▪ AtlCoolTrigger –r 91000‐99000 (many run summary) ▪ AtlCoolTrigger –v –m –r (single run menu) ▪ Prints keys, trigger menus, streams, allows diff‐ing of menus in different runs Triger Menu and L1 rates stored in COOL, HLT rates coming. Quick access via Run summary pages (WEB based) db-runlist/query.html db-runlist/query.html ▪ Trigger names, rates AtlCoolTrigger.py (command line tool) ▪ AtlCoolTrigger –r 91000‐99000 (many run summary) ▪ AtlCoolTrigger –v –m –r (single run menu) ▪ Prints keys, trigger menus, streams, allows diff‐ing of menus in different runs ARTEMIS - Pisa, June Trigger Tutorial
General Trigger info: Tutorials: Trigger Event Data Model (EDM) : TrigDecisionTool – all releases/versions: Twiki: Athena examples: TrigAnalysisExamples package: TrigDecisionChecker (pre-15.X.0 for the moment): atlas.cgi/offline/Trigger/TrigValidation/TrigValAlgs/TrigValAlgs/TrigDecisionChecker.h?revision=1.2&view=markup atlas.cgi/offline/Trigger/TrigValidation/TrigValAlgs/TrigValAlgs/TrigDecisionChecker.h?revision=1.2&view=markup ARA example: ARA: Trigger Configuration: Run summary pages: (include link to start up the TriggerTool) Trigger information slimming: TriggerMenu working group: Help! Hypernews forum
ARTEMIS - Pisa, June Trigger Tutorial
Analysis based on single trigger chain or an ‘OR’ of a few chains Chain definition – algorithms, cuts, multiplicities – do not change during a run, but can change between runs Important for analysis on DPD, where multiple runs are merged Prescales at LVL1 or at HLT can change between luminosity blocks A negative prescale means that this trigger is off. This is important for calculating the integrated luminosity Analysis based on single trigger chain or an ‘OR’ of a few chains Chain definition – algorithms, cuts, multiplicities – do not change during a run, but can change between runs Important for analysis on DPD, where multiple runs are merged Prescales at LVL1 or at HLT can change between luminosity blocks A negative prescale means that this trigger is off. This is important for calculating the integrated luminosity ARTEMIS - Pisa, June Trigger Tutorial
ESD AOD TAG Configures Stores decoded Trigger Menu DPD With decreasing amount of detail