 |
ATLAS Offline Software
|
#include <CTPSimulation.h>
|
| CTPSimulation (const std::string &name, ISvcLocator *pSvcLocator) |
|
| ~CTPSimulation () |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | start () override |
|
virtual StatusCode | execute (const EventContext &context) const override |
|
virtual StatusCode | stop () override |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
virtual bool | filterPassed (const EventContext &ctx) const |
|
virtual void | setFilterPassed (bool state, const EventContext &ctx) const |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T, V, H > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
StatusCode | bookHists () |
|
StatusCode | setHistLabels (const TrigConf::L1Menu &l1menu) |
|
StatusCode | createMultiplicityHist (const std::string &type, unsigned int maxMult=10) |
|
StatusCode | setMultiplicityHistLabels (const TrigConf::L1Menu &l1menu, const std::string &type) |
|
StatusCode | hbook (const std::string &path, std::unique_ptr< TH1 > hist) |
|
StatusCode | hbook (const std::string &path, std::unique_ptr< TH2 > hist) |
|
StatusCode | storeMetadata () |
|
LockedHandle< TH1 > & | get1DHist (const std::string &histName) const |
|
LockedHandle< TH2 > & | get2DHist (const std::string &histName) const |
|
std::string | getBaseHistPath () const |
|
StatusCode | fillInputHistograms (const EventContext &context) const |
|
StatusCode | extractMultiplicities (std::map< std::string, unsigned int > &thrMultiMap, const EventContext &context) const |
|
StatusCode | simulateItems (const std::map< std::string, unsigned int > &thrMultiMap, const EventContext &context) const |
|
unsigned int | calculateMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateJetMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateEMMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateTauMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateMETMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateMuonMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateTopoMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context, bool UseLegacy) const |
|
unsigned int | calculateTopoOptMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
ServiceHandle< ITHistSvc > | m_histSvc { this, "THistSvc", "THistSvc/THistSvc", "Histogramming svc" } |
|
ToolHandle< LVL1CTP::ResultBuilder > | m_resultBuilder { this, "ResultBuilder", "LVL1CTP::ResultBuilder/ResultBuilder", "Builds the CTP result" } |
|
ATHRNG::RNGWrapper | m_RNGEngines |
|
std::map< std::string, LockedHandle< TH1 > > | m_hist1D |
|
std::map< std::string, LockedHandle< TH2 > > | m_hist2D |
|
SG::ReadHandleKey< LVL1::FrontPanelCTP > | m_iKeyTopo { this, "TopoInput", LVL1::DEFAULT_L1TopoCTPLocation, "Input from topo" } |
|
SG::ReadHandleKey< LVL1::FrontPanelCTP > | m_iKeyLegacyTopo { this, "LegacyTopoInput", LVL1::DEFAULT_L1TopoLegacyCTPLocation, "Input from legacy topo" } |
|
SG::ReadHandleKey< LVL1::MuCTPICTP > | m_iKeyMuctpi { this, "MuctpiInput", LVL1MUCTPI::DEFAULT_MuonCTPLocation, "Input from Muctpi" } |
|
SG::ReadHandleKey< LVL1::EmTauCTP > | m_iKeyCtpinEM { this, "CtpinEMInput", LVL1::TrigT1CaloDefs::EmTauCTPLocation, "Input from CTPIN em and tau (legacy)" } |
|
SG::ReadHandleKey< LVL1::JetCTP > | m_iKeyCtpinJet { this, "CtpinJetInput", LVL1::TrigT1CaloDefs::JetCTPLocation, "Input from CTPIN jet (legacy)" } |
|
SG::ReadHandleKey< LVL1::EnergyCTP > | m_iKeyCtpinXE { this, "CtpinXEInput", LVL1::TrigT1CaloDefs::EnergyCTPLocation, "Input from CTPIN energy (te,xe,xs - legacy)" } |
|
SG::ReadHandleKey< xAOD::JetRoIContainer > | m_iKeyJFexJets { this, "jFexJetInput", "jRoundJets", "Input list of jFEX jets" } |
|
SG::ReadHandleKey< xAOD::JetRoIContainer > | m_iKeyJFexLJets { this, "jFexLJetInput", "jRoundLargeRJets", "Input list of jFEX large-R jets" } |
|
SG::ReadHandleKey< xAOD::JetRoIContainer > | m_iKeyGFexJets { this, "gFexJetInput", "gL1Jets", "Input list of gFEX jets" } |
|
SG::ReadHandleKey< xAOD::EnergySumRoI > | m_iKeyGFexMETNC { this, "gFexMETNCInput", "gXENOISECUTPerf", "Input list of gFEX MET NC" } |
|
SG::ReadHandleKey< xAOD::EnergySumRoI > | m_iKeyGFexMETRho { this, "gFexMETRhoInput", "gXERHOPerf", "Input list of gFEX MET Rho" } |
|
SG::ReadHandleKey< xAOD::EnergySumRoI > | m_iKeyGFexMETJwoJ { this, "gFexMETJwoJInput", "gXEJWOJPerf", "Input list of gFEX MET JwoJ" } |
|
SG::ReadHandleKey< xAOD::TrigEMClusterContainer > | m_iKeyEFexCluster { this, "eFexClusterInput", "SClusterCl", "Input list of eFEX cluster" } |
|
SG::ReadHandleKey< xAOD::EmTauRoIContainer > | m_iKeyEFexTau { this, "eFexTauInput", "SClusterTau", "Input list of eFEX tau" } |
|
SG::ReadHandleKey< LVL1::ZdcCTP > | m_iKeyZDC {this, "ZdcInput", LVL1::TrigT1CaloDefs::ZdcCTPLocation, "Input from Zdc"} |
|
SG::ReadHandleKey< LVL1::TrtCTP > | m_iKeyTRT {this, "TrtInput", LVL1::DEFAULT_TrtCTPLocation, "Input from Trt"} |
|
SG::WriteHandleKey< CTP_RDO > | m_oKeyRDO {this, "RDOOutput", LVL1CTP::DEFAULT_RDOOutputLocation, "Output of CTP RDO object (sim)"} |
|
SG::WriteHandleKey< xAOD::CTPResult > | m_oKeyCTPResult {this, "CTPResultOutput", LVL1CTP::DEFAULT_CTPResultOutputLocation, "Output of CTPResult (sim)"} |
|
SG::WriteHandleKey< CTPSLink > | m_oKeySLink {this, "ROIOutput", LVL1CTP::DEFAULT_CTPSLinkLocation, "Output of CTP SLink object (sim)"} |
|
Gaudi::Property< bool > | m_isData { this, "IsData", false, "emulate CTP as part of MC or rerun on data" } |
|
Gaudi::Property< std::string > | m_histPath { this, "HistPath", "/EXPERT/L1", "Booking path for the histogram" } |
|
Gaudi::Property< bool > | m_doZDC {this, "DoZDC", false, "emulate CTP with ZDC included"} |
|
Gaudi::Property< bool > | m_doTRT {this, "DoTRT", false, "emulate CTP with TRT included"} |
|
Gaudi::Property< bool > | m_forceBunchGroupPattern { this, "ForceBunchGroupPattern", true, "When true, ignore the bunchgroups and use the provided BunchGroupPattern" } |
|
Gaudi::Property< unsigned int > | m_bunchGroupPattern { this, "BunchGroupPattern", 0x0003, "Bunchgroup pattern applied at every event, useful for simulation. Bit x corresponds to bunchgroup x" } |
|
Gaudi::Property< bool > | m_doL1CaloLegacy { this, "DoL1CaloLegacy", false, "Use L1Calo legacy" } |
|
Gaudi::Property< bool > | m_doL1Topo { this, "DoL1Topo", false, "Use L1Topo" } |
|
Gaudi::Property< bool > | m_doL1TopoLegacy { this, "DoL1TopoLegacy", false, "Use L1Topo Legacy" } |
|
Gaudi::Property< bool > | m_muonRun2Format { this, "MuonMultiplicityRun2Format", false, "Interpret muon multiplicity in Run 2 format (bit 0 unused)" } |
|
Gaudi::Property< bool > | m_useEDMxAOD { this, "UseEDMxAOD", false, "Use EDM based on xAOD class" } |
|
SG::ReadCondHandleKey< TrigConf::L1BunchGroupSet > | m_bgKey {this, "L1BunchGroup", "L1BunchGroup", "L1BunchGroupSet key name"} |
|
DataObjIDColl | m_extendedExtraObjects |
| Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 66 of file CTPSimulation.h.
◆ StoreGateSvc_t
◆ CTPSimulation()
LVL1CTP::CTPSimulation::CTPSimulation |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~CTPSimulation()
LVL1CTP::CTPSimulation::~CTPSimulation |
( |
| ) |
|
◆ bookHists()
StatusCode LVL1CTP::CTPSimulation::bookHists |
( |
| ) |
|
|
private |
Definition at line 337 of file CTPSimulation.cxx.
340 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jJetPt",
"Jet p_{T} - jJ", 40, 0, 80) ));
341 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jJetEta",
"Jet #eta - jJ", 64, -3.2, 3.2) ));
342 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jJetPhi",
"Jet #phi - jJ", 64, -3.2, 3.2) ));
343 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jLJetPt",
"Jet p_{T} - jLJ", 40, 0, 80) ));
344 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jLJetEta",
"Jet #eta - jLJ", 64, -3.2, 3.2) ));
345 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jLJetPhi",
"Jet #phi - jLJ", 64, -3.2, 3.2) ));
346 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gJetPt",
"Jet p_{T} - gJ", 40, 0, 80) ));
347 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gJetEta",
"Jet #eta - gJ", 64, -3.2, 3.2) ));
348 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gJetPhi",
"Jet #phi - gJ", 64, -3.2, 3.2) ));
349 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gLJetPt",
"Jet p_{T} - gLJ", 40, 0, 80) ));
350 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gLJetEta",
"Jet #eta - gLJ", 64, -3.2, 3.2) ));
351 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gLJetPhi",
"Jet #phi - gLJ", 64, -3.2, 3.2) ));
354 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"Pufit",
"Missing ET from algorithm pufit", 40, 0, 80) ));
355 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"PufitPhi",
"Missing ET PUfit phi", 64, -3.2, 3.2) ));
356 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"Rho",
"Missing ET from algorithm rhosub", 40, 0, 80) ));
357 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"RhoPhi",
"Missing ET rhosub phi", 64, -3.2, 3.2) ));
358 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"JwoJ",
"Missing ET from algorithm jet without jets", 40, 0, 80) ));
359 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"JwoJPhi",
"Missing ET jet without jet phi", 64, -3.2, 3.2) ));
362 ATH_CHECK (
hbook(
"/input/em/", std::make_unique<TH1I>(
"et",
"Cluster et", 40, 0, 40) ));
363 ATH_CHECK (
hbook(
"/input/em/", std::make_unique<TH1I>(
"eta",
"Cluster eta ", 64, -3.2, 3.2) ));
364 ATH_CHECK (
hbook(
"/input/em/", std::make_unique<TH1I>(
"phi",
"Cluster phi", 64, -3.2, 3.2) ));
367 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"et",
"Tau et", 40, 0, 40) ));
368 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"eta",
"Tau eta ", 64, -3.2, 3.2) ));
369 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"phi",
"Tau phi", 64, -3.2, 3.2) ));
370 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"emIso",
"Tau em isolation", 40, 0, 1) ));
371 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"hadIso",
"Tau hadronic isolation", 40, 0, 1) ));
372 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"R3ET",
"Tau eT", 40, 0, 40) ));
373 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"R3Iso",
"Tau isolation", 40, 0, 1) ));
376 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"jJets",
"Number of jets (jJ)", 40, 0, 40) ));
377 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"jLJets",
"Number of jets (jLJ)", 40, 0, 40) ));
378 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"gJets",
"Number of jets (gJ)", 40, 0, 40) ));
379 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"gLJets",
"Number of jets (gLJ)", 40, 0, 40) ));
380 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"muons",
"Number of muons", 10, 0, 10) ));
381 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"emcluster",
"Number of EM clusters", 20, 0, 20) ));
382 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"taus",
"Number of TAU candidates", 20, 0, 20) ));
393 ATH_CHECK (
hbook(
"/multi/all", (std::unique_ptr<TH2>)std::make_unique<TH2I>(
"LegacyMult",
"Legacy thresholds multiplicity", 1, 0, 1, 10, 0, 10) ));
394 ATH_CHECK (
hbook(
"/multi/all", (std::unique_ptr<TH2>)std::make_unique<TH2I>(
"R3Mult",
"New thresholds multiplicity", 1, 0, 1, 10, 0, 10) ));
397 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"LegacyTopo0",
"L1Topo Decision (Legacy 0)", 64, 0, 64) ));
398 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"LegacyTopo1",
"L1Topo Decision (Legacy 1)", 64, 0, 64) ));
399 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1El",
"L1Topo Decision (Topo 1 electrical)", 64, 0, 64) ));
400 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo2El",
"L1Topo Decision (Topo 2 electrical)", 64, 0, 64) ));
401 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo3El",
"L1Topo Decision (Topo 3 electrical)", 64, 0, 64) ));
402 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt0",
"L1Topo Decision (Topo 1 optical 0)", 128, 0, 128) ));
403 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt1",
"L1Topo Decision (Topo 1 optical 1)", 128, 0, 128) ));
404 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt2",
"L1Topo Decision (Topo 1 optical 2)", 128, 0, 128) ));
405 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt3",
"L1Topo Decision (Topo 1 optical 3)", 128, 0, 128) ));
408 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tbpById",
"Items decision (tbp)", 512, 0, 512) ));
409 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tapById",
"Items decision (tap)", 512, 0, 512) ));
410 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tavById",
"Items decision (tav)", 512, 0, 512) ));
411 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tbpByName",
"Items decision (tbp)", 512, 0, 512) ));
412 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tapByName",
"Items decision (tap)", 512, 0, 512) ));
413 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tavByName",
"Items decision (tav)", 512, 0, 512) ));
415 ATH_CHECK (
hbook(
"/", std::make_unique<TH1I>(
"bcid",
"Bunch crossing ID", 3564, 0, 3564)) );
419 return StatusCode::SUCCESS;
◆ calculateEMMultiplicity()
Definition at line 859 of file CTPSimulation.cxx.
860 unsigned int multiplicity (0);
861 if ( confThr.
name()[0]==
'e' ) {
864 float scale =
l1menu->getObject(
"thresholds.legacyCalo.EM.emscale").getValue<
float>();
866 for (
const auto cl : *eFexCluster ) {
867 float eta =
cl->eta();
868 int ieta =
int((eta + (eta>0 ? 0.005 : -0.005))/0.1);
869 unsigned int thrV = confThr.
thrValue( ieta );
870 bool clusterPasses = ( ((
unsigned int)
cl->et()) > (thrV *
scale) );
871 multiplicity += clusterPasses ? 1 : 0;
878 if ( ctpinEM.isValid() ) {
879 if(
l1menu->connector(
"EM1").hasLine(confThr.
name()) ) {
880 auto & triggerline =
l1menu->connector(
"EM1").triggerLine(confThr.
name());
881 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord0(), triggerline.startbit(), triggerline.endbit() );
882 }
else if(
l1menu->connector(
"EM2").hasLine(confThr.
name()) ) {
883 auto & triggerline =
l1menu->connector(
"EM2").triggerLine(confThr.
name());
884 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord1(), triggerline.startbit(), triggerline.endbit() );
890 ATH_MSG_DEBUG(
"EM MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateJetMultiplicity()
Definition at line 836 of file CTPSimulation.cxx.
837 unsigned int multiplicity = 0;
838 if( confThr.
type() ==
"JET" ) {
841 if ( ctpinJet.isValid() ) {
842 if(
l1menu->connector(
"JET1").hasLine(confThr.
name()) ) {
843 auto & triggerline =
l1menu->connector(
"JET1").triggerLine(confThr.
name());
844 multiplicity =
CTPUtil::getMult( ctpinJet->cableWord0(), triggerline.startbit(), triggerline.endbit() );
845 }
else if(
l1menu->connector(
"JET2").hasLine(confThr.
name()) ) {
846 auto & triggerline =
l1menu->connector(
"JET2").triggerLine(confThr.
name());
847 multiplicity =
CTPUtil::getMult( ctpinJet->cableWord1(), triggerline.startbit(), triggerline.endbit() );
853 ATH_MSG_DEBUG(
"JET MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateMETMultiplicity()
Definition at line 934 of file CTPSimulation.cxx.
935 unsigned int multiplicity = 0;
936 if ( confThr.
type() ==
"XE" or confThr.
type() ==
"TE" or confThr.
type() ==
"XS" ) {
940 if ( ctpinEnergy.isValid() ) {
941 if(
l1menu->connector(
"EN1").hasLine(confThr.
name()) ) {
942 auto & triggerline =
l1menu->connector(
"EN1").triggerLine(confThr.
name());
943 multiplicity =
CTPUtil::getMult( ctpinEnergy->cableWord0(), triggerline.startbit(), triggerline.endbit() );
944 }
else if(
l1menu->connector(
"EN2").hasLine(confThr.
name()) ) {
945 auto & triggerline =
l1menu->connector(
"EN2").triggerLine(confThr.
name());
946 multiplicity =
CTPUtil::getMult( ctpinEnergy->cableWord1(), triggerline.startbit(), triggerline.endbit() );
953 if ( confThr.
name().find(
"gXENC")==0 ) {
956 }
else if ( confThr.
name().find(
"gXERHO")==0 ) {
959 }
else if ( confThr.
name().find(
"gXEJWOJ")==0 ) {
968 multiplicity = (
met->energyT()/1000. < confThr.
getAttribute<
unsigned int>(
"xe") ) ? 0 : 1;
971 if(confThr.
type() ==
"TE") {
973 ATH_MSG_DEBUG(
"TE MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
974 }
else if(confThr.
type() ==
"XS") {
976 ATH_MSG_DEBUG(
"XS MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
979 ATH_MSG_DEBUG(
"XE MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateMultiplicity()
Definition at line 1101 of file CTPSimulation.cxx.
1102 unsigned int multiplicity = 0;
1104 if ( confThr.
type() ==
"EM" ) {
1106 }
else if ( confThr.
type() ==
"TAU" ) {
1108 }
else if ( confThr.
type() ==
"XE" || confThr.
type() ==
"TE" || confThr.
type() ==
"XS" ) {
1110 }
else if ( confThr.
type() ==
"JET" ) {
1112 }
else if ( confThr.
type() ==
"MU" ) {
1114 }
else if ( confThr.
type() ==
"R2TOPO") {
1116 }
else if ( confThr.
type() ==
"TOPO" ) {
1118 }
else if ( confThr.
type()[0] ==
'e' || confThr.
type()[0] ==
'c' || confThr.
type()[0] ==
'j' || confThr.
type()[0] ==
'g' ){
1123 ATH_MSG_FATAL(
"Caught exception when calculating multiplicity for threshold " << confThr.
name() <<
": " << ex.what());
1127 return multiplicity;
◆ calculateMuonMultiplicity()
Definition at line 986 of file CTPSimulation.cxx.
990 unsigned int multiplicity = 0;
992 if ( ctpinMuon.isValid() ) {
993 auto & triggerline =
l1menu->connector(
"MuCTPiOpt0").triggerLine(confThr.
name());
997 ATH_MSG_DEBUG(
"MU MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateTauMultiplicity()
Definition at line 896 of file CTPSimulation.cxx.
897 unsigned int multiplicity = 0;
898 if ( confThr.
name()[0]==
'e' ) {
903 if( eFexTaus.isValid() ) {
904 for (
const auto tau : *eFexTaus ) {
905 unsigned int eT = (
unsigned int) (accR3ClET(*tau)/1000.);
907 unsigned int etCut = confThr.
data().get_child(
"et").get_value<
unsigned int>();
908 bool tauPasses = (
eT >= etCut );
909 multiplicity += tauPasses ? 1 : 0;
916 if ( ctpinEM.isValid() ) {
917 if(
l1menu->connector(
"TAU1").hasLine(confThr.
name()) ) {
918 auto & triggerline =
l1menu->connector(
"TAU1").triggerLine(confThr.
name());
919 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord2(), triggerline.startbit(), triggerline.endbit() );
920 }
else if(
l1menu->connector(
"TAU2").hasLine(confThr.
name()) ) {
921 auto & triggerline =
l1menu->connector(
"TAU2").triggerLine(confThr.
name());
922 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord3(), triggerline.startbit(), triggerline.endbit() );
928 ATH_MSG_DEBUG(
"TAU MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateTopoMultiplicity()
Definition at line 1042 of file CTPSimulation.cxx.
1043 unsigned int multiplicity = 0;
1051 if(topoInput.isValid()) {
1053 std::string
conn(
"");
1054 if(
l1menu->connector(
"LegacyTopo0").hasLine(confThr.
name()) ) {
1055 conn =
"LegacyTopo0";
1056 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
1057 }
else if(
l1menu->connector(
"LegacyTopo1").hasLine(confThr.
name()) ) {
1058 conn =
"LegacyTopo1";
1059 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
1062 auto & triggerline =
l1menu->connector(
conn).triggerLine(confThr.
name());
1064 <<
", cable start " << triggerline.startbit() <<
" and end " << triggerline.endbit()
1065 <<
" double word 0x" << std::setw(16) << std::setfill(
'0') << std::hex << cable << std::dec << std::setfill(
' ') );
1066 multiplicity =
CTPUtil::getMultTopo( cable, triggerline.startbit(), triggerline.endbit(), triggerline.clock() );
1077 if(topoInput.isValid()) {
1079 std::string
conn(
"");
1080 if(
l1menu->connector(
"Topo2El").hasLine(confThr.
name()) ) {
1082 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
1083 }
else if(
l1menu->connector(
"Topo3El").hasLine(confThr.
name()) ) {
1085 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
1088 auto & triggerline =
l1menu->connector(
conn).triggerLine(confThr.
name());
1090 <<
", cable start " << triggerline.startbit() <<
" and end " << triggerline.endbit()
1091 <<
" double word 0x" << std::setw(16) << std::setfill(
'0') << std::hex << cable << std::dec << std::setfill(
' ') );
1092 multiplicity =
CTPUtil::getMultTopo( cable, triggerline.startbit(), triggerline.endbit(), triggerline.clock() );
1096 return multiplicity;
◆ calculateTopoOptMultiplicity()
Definition at line 1003 of file CTPSimulation.cxx.
1007 unsigned int multiplicity = 0;
1009 std::string connector =
"";
1010 if (topoInput.isValid()) {
1011 connector =
l1menu->connectorNameFromThreshold(confThr.
name());
1012 auto & triggerline =
l1menu->connector(connector).triggerLine(confThr.
name());
1013 std::bitset<128> bits = topoInput->optcableWord(connector);
1016 std::string subfolder =
"";
1017 if (confThr.
type().find(
"XE") != std::string::npos) {
1019 }
else if (confThr.
type().find(
"TE") != std::string::npos) {
1021 }
else if (confThr.
type().find(
"TAU") != std::string::npos) {
1023 }
else if (confThr.
type().find(
"EM") != std::string::npos) {
1025 }
else if (confThr.
type().find(
"jJ") != std::string::npos) {
1027 }
else if (confThr.
type().find(
"jLJ") != std::string::npos) {
1029 }
else if (confThr.
type().find(
"gJ") != std::string::npos) {
1031 }
else if (confThr.
type().find(
"gLJ") != std::string::npos) {
1034 get2DHist(
"/multi/" + subfolder +
"/" + confThr.
type() +
"Mult" )->Fill(confThr.
mapping(), multiplicity);
1035 ATH_MSG_DEBUG(
"TOPO OPT input MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity <<
" received via connector: " << connector);
1037 return multiplicity;
◆ cardinality()
Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
Override this to return 0 for reentrant algorithms.
Override this to return 0 for reentrant algorithms.
Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.
◆ createMultiplicityHist()
StatusCode LVL1CTP::CTPSimulation::createMultiplicityHist |
( |
const std::string & |
type, |
|
|
unsigned int |
maxMult = 10 |
|
) |
| |
|
private |
Definition at line 143 of file CTPSimulation.cxx.
146 std::map<std::string,std::vector<std::string>> typeMapping = {
148 {
"jet", {
"JET",
"jJ",
"jLJ",
"gJ",
"gLJ"} },
149 {
"xe", {
"XE",
"gXE",
"jXE"} },
150 {
"te", {
"TE",
"jTE",
"gTE"} },
152 {
"em", {
"EM",
"eEM",
"jEM"} },
153 {
"tau", {
"TAU",
"eTAU",
"jTAU",
"cTAU"} }
155 std::vector<TrigConf::L1Threshold> thrV;
156 for(
const std::string &
t : typeMapping[
type] ) {
158 TH2*
hist =
new TH2I( Form(
"%sMult",
t.c_str()),
159 Form(
"%s threshold multiplicity",
t.c_str()), xsize, 0, xsize, maxMult, 0, maxMult);
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode LVL1CTP::CTPSimulation::execute |
( |
const EventContext & |
context | ) |
const |
|
overridevirtual |
Definition at line 127 of file CTPSimulation.cxx.
133 std::map<std::string, unsigned int> thrMultiMap;
139 return StatusCode::SUCCESS;
◆ extractMultiplicities()
StatusCode LVL1CTP::CTPSimulation::extractMultiplicities |
( |
std::map< std::string, unsigned int > & |
thrMultiMap, |
|
|
const EventContext & |
context |
|
) |
| const |
|
private |
Definition at line 622 of file CTPSimulation.cxx.
629 std::vector<std::string> connNames =
l1menu->connectorNames();
630 for (
const std::string connName : {
"LegacyTopo0",
"LegacyTopo1",
"Topo1El",
"Topo2El",
"Topo3El",
"Topo1Opt0",
"Topo1Opt1",
"Topo1Opt2",
"Topo1Opt3",
"CTPCAL",
"NIM2"})
632 if(
find(connNames.begin(), connNames.end(), connName) == connNames.end() ) {
635 bool opt_cable =
false;
636 std::bitset<128> cable128 {0};
638 if (connName.starts_with(
"Legacy")) {
644 if (not topoInput.isValid()) {
647 if(connName ==
"LegacyTopo0") {
648 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
649 }
else if (connName ==
"LegacyTopo1") {
650 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
653 else if (connName.starts_with(
"CTPCAL") &&
m_doZDC)
656 if (not zdcInput.isValid())
660 cable =
static_cast<uint64_t>(zdcInput->cableWord0());
662 for (
auto &
tl :
conn.triggerLines()){
663 if (
tl.name().find(
"ZDC") == std::string::npos)
667 uint flatIndex =
tl.flatindex();
669 thrMultiMap[
tl.name()] = pass;
675 else if (connName.starts_with(
"NIM2"))
680 if (not trtInput.isValid())
684 cable =
static_cast<uint64_t>(trtInput->cableWord0());
686 for (
auto &
tl :
conn.triggerLines()){
687 if (
tl.name().find(
"TRT") == std::string::npos)
691 uint flatIndex =
tl.flatindex();
693 thrMultiMap[
tl.name()] = pass;
700 if (not zdcInput.isValid())
704 cable =
static_cast<uint64_t>(zdcInput->cableWord1());
706 for (
const auto &
tl :
conn.triggerLines()){
707 if (
tl.name().find(
"ZDC") == std::string::npos)
711 uint flatIndex =
tl.flatindex();
713 thrMultiMap[
tl.name()] = pass;
726 if (not topoInput.isValid()) {
729 if(connName ==
"Topo1El") {
730 cable = ( (
uint64_t)topoInput->cableWord0( 1 ) << 32) + topoInput->cableWord0( 0 );
731 }
else if(connName ==
"Topo2El") {
732 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
733 }
else if (connName ==
"Topo3El") {
734 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
735 }
else if(connName ==
"Topo1Opt0") {
736 ATH_MSG_DEBUG(
"BIT word Topo1Opt0: " << topoInput->optcableWord( connName ));
738 cable128 = topoInput->optcableWord( connName );
739 }
else if(connName ==
"Topo1Opt1") {
740 ATH_MSG_DEBUG(
"BIT word Topo1Opt1: " << topoInput->optcableWord( connName ));
742 cable128 = topoInput->optcableWord( connName );
743 }
else if(connName ==
"Topo1Opt2") {
744 ATH_MSG_DEBUG(
"BIT word Topo1Opt2: " << topoInput->optcableWord( connName ));
746 cable128 = topoInput->optcableWord( connName );
747 }
else if(connName ==
"Topo1Opt3") {
748 ATH_MSG_DEBUG(
"BIT word Topo1Opt3: " << topoInput->optcableWord( connName ));
750 cable128 = topoInput->optcableWord( connName );
754 for(
uint fpga : {0,1}) {
755 for(
uint clock : {0,1}) {
756 for(
auto &
tl :
conn.triggerLines(fpga,clock)) {
757 uint flatIndex =
tl.flatindex();
760 pass = ((cable128 >> flatIndex).
test(0)) == 0 ? 0 : 1;
763 pass = (cable & (
static_cast<uint64_t>(0x1) << flatIndex)) == 0 ? 0 : 1;
765 if(
size_t pos =
tl.name().find(
'[');
pos == std::string::npos) {
766 thrMultiMap[
tl.name()] = pass;
769 auto thrName =
tl.name().substr(0,
pos);
770 int bit = std::stoi(
tl.name().substr(
pos+1));
771 thrMultiMap.try_emplace(thrName, 0);
772 thrMultiMap[thrName] += (pass << bit);
773 ATH_MSG_DEBUG(thrName <<
" MULT updated mult for topo " << pass);
779 for (
auto & thr :
l1menu->thresholds() ) {
780 if (thr->type() ==
"TOPO" or thr->type() ==
"MULTTOPO" or thr->type() ==
"MUTOPO")
784 if( thr->type() ==
"ZDC" &&
m_doZDC ){
787 if( thr->name() ==
"NIMTRT" &&
m_doTRT ){
793 thrMultiMap[thr->name()] = multiplicity;
794 ATH_MSG_DEBUG( thr->name() <<
" MULT calculated mult for topo " << multiplicity);
798 auto bcid = context.eventID().bunch_crossing_id();
801 for (
size_t bg = 0;
bg < 16; ++
bg ) {
802 std::string bgName(
"BGRP");
821 ATH_MSG_ERROR(
"Did not find L1BunchGroupSet in DetectorStore");
826 thrMultiMap[
"RNDM0"] = 1;
827 thrMultiMap[
"RNDM1"] = 1;
828 thrMultiMap[
"RNDM2"] = 1;
829 thrMultiMap[
"RNDM3"] = 1;
831 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.
◆ fillInputHistograms()
StatusCode LVL1CTP::CTPSimulation::fillInputHistograms |
( |
const EventContext & |
context | ) |
const |
|
private |
Definition at line 423 of file CTPSimulation.cxx.
430 if(jFexJets.isValid()) {
431 get1DHist(
"/input/counts/jJets")->Fill(jFexJets->size());
434 auto h2 = *
get1DHist(
"/input/jets/jJetPhi");
435 for(
const auto jet : *jFexJets ) {
436 h0->Fill(fabs(
jet->et8x8()/1000.));
437 h1->Fill(
jet->eta());
438 h2->Fill(
jet->phi());
448 if(jFexLJets.isValid()) {
449 get1DHist(
"/input/counts/jLets")->Fill(jFexLJets->size());
452 auto h2 = *
get1DHist(
"/input/jets/jLJetPhi");
453 for(
const auto jet : *jFexLJets ) {
454 h0->Fill(fabs(
jet->et8x8()/1000.));
455 h1->Fill(
jet->eta());
456 h2->Fill(
jet->phi());
468 if(gFexJets.isValid()) {
469 get1DHist(
"/input/counts/gJets")->Fill(gFexJets->size());
472 auto h2 = *
get1DHist(
"/input/jets/gJetPhi");
473 for(
const auto jet : *gFexJets ) {
474 h0->Fill(fabs(
jet->et8x8()/1000.));
475 h1->Fill(
jet->eta());
476 h2->Fill(
jet->phi());
486 if( gFexMETPufit.isValid() ) {
487 get1DHist(
"/input/met/Pufit")->Fill(gFexMETPufit->energyT()/1000.);
488 get1DHist(
"/input/met/PufitPhi")->Fill(atan2(gFexMETPufit->energyX(), gFexMETPufit->energyY()));
496 if( gFexMETRho.isValid() ) {
497 get1DHist(
"/input/met/Rho")->Fill(gFexMETRho->energyT()/1000.);
498 get1DHist(
"/input/met/RhoPhi")->Fill(atan2(gFexMETRho->energyX(), gFexMETRho->energyY()));
506 if( gFexMETJwoJ.isValid() ) {
507 get1DHist(
"/input/met/JwoJ")->Fill(gFexMETJwoJ->energyT()/1000.);
508 get1DHist(
"/input/met/JwoJPhi")->Fill(atan2(gFexMETJwoJ->energyX(), gFexMETJwoJ->energyY()));
517 if( eFexCluster.isValid() ) {
518 get1DHist(
"/input/counts/emcluster")->Fill(eFexCluster->size());
522 for(
const auto cl : *eFexCluster ) {
535 if( eFexTau.isValid() ) {
536 get1DHist(
"/input/counts/taus")->Fill(eFexTau->size());
540 auto h3 = *
get1DHist(
"/input/tau/emIso");
541 auto h4 = *
get1DHist(
"/input/tau/hadIso");
542 auto h5 = *
get1DHist(
"/input/tau/R3ClusterET");
543 auto h6 = *
get1DHist(
"/input/tau/R3ClusterIso");
546 for(
const auto tau : *eFexTau ) {
548 h1->Fill(tau->eta());
549 h2->Fill(tau->phi());
550 h3->Fill(tau->emIsol());
551 h4->Fill(tau->hadIsol());
552 h5->Fill(accR3ClET(*tau)/1000.);
553 h6->Fill(accR3ClIso(*tau));
563 if(legacyTopoInput.isValid()) {
565 ATH_MSG_DEBUG(
"L1TopoLegacy0 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord1(0));
566 ATH_MSG_DEBUG(
"L1TopoLegacy0 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord1(1));
567 ATH_MSG_DEBUG(
"L1TopoLegacy1 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord2(0));
568 ATH_MSG_DEBUG(
"L1TopoLegacy1 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord2(1));
571 for(
unsigned int i=0;
i<32; ++
i) {
573 if( (legacyTopoInput->cableWord1(0) &
mask) != 0 )
h0->Fill(
i);
574 if( (legacyTopoInput->cableWord1(1) &
mask) != 0 )
h0->Fill(32 +
i);
575 if( (legacyTopoInput->cableWord2(0) &
mask) != 0 )
h1->Fill(
i);
576 if( (legacyTopoInput->cableWord2(1) &
mask) != 0 )
h1->Fill(32 +
i);
583 if(topoInput.isValid()) {
585 ATH_MSG_DEBUG(
"L1Topo0 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord1(0));
586 ATH_MSG_DEBUG(
"L1Topo0 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord1(1));
587 ATH_MSG_DEBUG(
"L1Topo1 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord2(0));
588 ATH_MSG_DEBUG(
"L1Topo1 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord2(1));
591 for(
unsigned int i=0;
i<32; ++
i) {
593 if( (topoInput->cableWord1(0) &
mask) != 0 )
h0->Fill(
i);
594 if( (topoInput->cableWord1(1) &
mask) != 0 )
h0->Fill(32 +
i);
595 if( (topoInput->cableWord2(0) &
mask) != 0 )
h1->Fill(
i);
596 if( (topoInput->cableWord2(1) &
mask) != 0 )
h1->Fill(32 +
i);
598 auto h2 = *
get1DHist(
"/input/topo/Topo1Opt0");
599 auto h3 = *
get1DHist(
"/input/topo/Topo1Opt1");
600 auto h4 = *
get1DHist(
"/input/topo/Topo1Opt2");
601 auto h5 = *
get1DHist(
"/input/topo/Topo1Opt3");
602 for(
unsigned int i=0;
i<128;
i += 3) {
603 std::bitset<128>
mask = 0x11;
mask <<=
i;
604 if( (topoInput->optcableWord(
"Topo1Opt0") &
mask) != 0 ) h2->Fill(
i);
605 if( (topoInput->optcableWord(
"Topo1Opt1") &
mask) != 0 ) h3->Fill(
i);
606 if( (topoInput->optcableWord(
"Topo1Opt2") &
mask) != 0 ) h4->Fill(
i);
607 if( (topoInput->optcableWord(
"Topo1Opt3") &
mask) != 0 ) h5->Fill(
i);
615 auto bcid = context.eventID().bunch_crossing_id();
618 return StatusCode::SUCCESS;
◆ filterPassed()
◆ get1DHist()
LockedHandle< TH1 > & LVL1CTP::CTPSimulation::get1DHist |
( |
const std::string & |
histName | ) |
const |
|
private |
◆ get2DHist()
LockedHandle< TH2 > & LVL1CTP::CTPSimulation::get2DHist |
( |
const std::string & |
histName | ) |
const |
|
private |
◆ getBaseHistPath()
std::string LVL1CTP::CTPSimulation::getBaseHistPath |
( |
| ) |
const |
|
private |
Definition at line 199 of file CTPSimulation.cxx.
201 if(baseHistPath.back()!=
'/') baseHistPath +=
"/";
202 baseHistPath +=
name();
◆ hbook() [1/2]
StatusCode LVL1CTP::CTPSimulation::hbook |
( |
const std::string & |
path, |
|
|
std::unique_ptr< TH1 > |
hist |
|
) |
| |
|
private |
Definition at line 207 of file CTPSimulation.cxx.
208 const std::string &
hname(
hist->GetName());
211 if(
key.back()!=
'/')
key +=
"/";
216 return StatusCode::RECOVERABLE;
219 LockedHandle<TH1>
lh;
221 if(
sc.isSuccess() ) {
◆ hbook() [2/2]
StatusCode LVL1CTP::CTPSimulation::hbook |
( |
const std::string & |
path, |
|
|
std::unique_ptr< TH2 > |
hist |
|
) |
| |
|
private |
Definition at line 231 of file CTPSimulation.cxx.
232 const std::string &
hname(
hist->GetName());
235 if(
key.back()!=
'/')
key +=
"/";
240 return StatusCode::RECOVERABLE;
243 LockedHandle<TH2>
lh;
245 if(
sc.isSuccess() ) {
◆ initialize()
StatusCode LVL1CTP::CTPSimulation::initialize |
( |
| ) |
|
|
overridevirtual |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ isClonable()
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ setFilterPassed()
◆ setHistLabels()
Definition at line 277 of file CTPSimulation.cxx.
290 std::vector<std::string> connNames =
l1menu.connectorNames();
291 for(
const std::string connName : {
"LegacyTopo0",
"LegacyTopo1",
"Topo1El",
"Topo2El",
"Topo3El",
"Topo1Opt0",
"Topo1Opt1",
"Topo1Opt2",
"Topo1Opt3"}) {
292 if(
find(connNames.begin(), connNames.end(), connName) == connNames.end() ) {
295 auto hTopo = *
get1DHist(
"/input/topo/" + connName);
296 for(
uint fpga : {0,1}) {
297 for(
uint clock : {0,1}) {
298 for(
auto &
tl :
l1menu.connector(connName).triggerLines(fpga,clock)) {
299 uint flatIndex =
tl.flatindex();
300 hTopo->GetXaxis()->SetBinLabel(flatIndex+1,
tl.name().c_str());
306 std::vector<std::string> orderedItemnames;
307 orderedItemnames.reserve(
l1menu.size() );
309 orderedItemnames.emplace_back(
item.name());
311 std::sort(orderedItemnames.begin(), orderedItemnames.end());
314 auto tbpById = *
get1DHist(
"/output/tbpById" );
315 auto tapById = *
get1DHist(
"/output/tapById" );
316 auto tavById = *
get1DHist(
"/output/tavById" );
317 auto tbpByName = *
get1DHist(
"/output/tbpByName" );
318 auto tapByName = *
get1DHist(
"/output/tapByName" );
319 auto tavByName = *
get1DHist(
"/output/tavByName" );
320 unsigned int bin = 1;
321 for (
const std::string & itemname : orderedItemnames ) {
322 unsigned int ctpId(0);
324 ctpId =
item.ctpId();
325 tbpById->GetXaxis()->SetBinLabel( ctpId+1, itemname.c_str() );
326 tapById->GetXaxis()->SetBinLabel( ctpId+1, itemname.c_str() );
327 tavById->GetXaxis()->SetBinLabel( ctpId+1, itemname.c_str() );
328 tbpByName->GetXaxis()->SetBinLabel(
bin, itemname.c_str() );
329 tapByName->GetXaxis()->SetBinLabel(
bin, itemname.c_str() );
330 tavByName->GetXaxis()->SetBinLabel(
bin++, itemname.c_str() );
333 return StatusCode::SUCCESS;
◆ setMultiplicityHistLabels()
Definition at line 167 of file CTPSimulation.cxx.
169 std::map<std::string,std::vector<std::string>> typeMapping = {
171 {
"jet", {
"JET",
"jJ",
"jLJ",
"gJ",
"gLJ"} },
172 {
"xe", {
"XE",
"gXE",
"jXE"} },
173 {
"te", {
"TE",
"jTE",
"gTE"} },
175 {
"em", {
"EM",
"eEM",
"jEM"} },
176 {
"tau", {
"TAU",
"eTAU",
"jTAU",
"cTAU"} }
180 std::vector<TrigConf::L1Threshold> thrV;
181 for(
const std::string &
t : typeMapping[
type] ) {
184 auto & thrV =
l1menu.thresholds(
t);
185 while(
hist->GetNbinsX() < (
int)thrV.size() ) {
186 hist->LabelsInflate(
"xaxis");
188 for(
auto thr : thrV) {
189 hist->GetXaxis()->SetBinLabel(thr->mapping()+1, thr->name().c_str() );
192 ATH_MSG_DEBUG(
"Caught exception when setting new JSON MultiplicityHistLabel " <<
t <<
" : " << ex.what());
◆ simulateItems()
StatusCode LVL1CTP::CTPSimulation::simulateItems |
( |
const std::map< std::string, unsigned int > & |
thrMultiMap, |
|
|
const EventContext & |
context |
|
) |
| const |
|
private |
Definition at line 1131 of file CTPSimulation.cxx.
1135 std::vector<uint32_t> tip;
1138 std::map<std::string, unsigned int> itemDecisionMap;
1142 std::vector<uint32_t> tbp;
1143 std::vector<uint32_t>
tap;
1144 std::vector<uint32_t> tav;
1152 auto eventID = context.eventID();
1156 std::pair< std::unique_ptr<xAOD::CTPResult>, std::unique_ptr<xAOD::CTPResultAuxInfo> > ctpResultAuxPair =
m_resultBuilder->constructCTPResult( eventID, tbp,
tap, tav, tip,
extra );
1157 std::unique_ptr<xAOD::CTPResult> ctpResult = std::move(ctpResultAuxPair.first);
1158 std::unique_ptr<xAOD::CTPResultAuxInfo> ctpResultAux = std::move(ctpResultAuxPair.second);
1160 ATH_CHECK( ctpResultWriteHandle.record( std::move(ctpResult), std::move(ctpResultAux) ));
1165 ATH_CHECK( rdoWriteHandle.record( std::move(rdo) ));
1169 ATH_CHECK( sLinkWriteHandle.record( std::move(roi) ));
1173 auto tbpById = *
get1DHist(
"/output/tbpById" );
1174 auto tapById = *
get1DHist(
"/output/tapById" );
1175 auto tavById = *
get1DHist(
"/output/tavById" );
1176 for(
unsigned int ctpId= 0; ctpId < 512; ++ctpId ) {
1177 unsigned int wordNr = ctpId / 32;
1178 unsigned int posWithinWord = ctpId % 32;
1179 auto mask = 1
L << posWithinWord;
1180 if( 0 != (tbp[wordNr] &
mask) ) {
1181 tbpById->Fill( ctpId );
1183 if( 0 != (
tap[wordNr] &
mask) ) {
1184 tapById->Fill( ctpId );
1186 if( 0 != (tav[wordNr] &
mask) ) {
1187 tavById->Fill( ctpId );
1191 return StatusCode::SUCCESS;
◆ start()
StatusCode LVL1CTP::CTPSimulation::start |
( |
| ) |
|
|
overridevirtual |
◆ stop()
StatusCode LVL1CTP::CTPSimulation::stop |
( |
| ) |
|
|
overridevirtual |
Definition at line 1196 of file CTPSimulation.cxx.
1201 constexpr
unsigned int sizeOfCTPOutput = 512;
1203 unsigned int tbp[sizeOfCTPOutput];
1204 unsigned int tap[sizeOfCTPOutput];
1205 unsigned int tav[sizeOfCTPOutput];
1208 for(
unsigned int id = 0;
id < sizeOfCTPOutput; ++
id ) tbp[
id] =
h->GetBinContent(
id+1);
1212 for(
unsigned int id = 0;
id < sizeOfCTPOutput; ++
id )
tap[
id] =
h->GetBinContent(
id+1);
1216 for(
unsigned int id = 0;
id < sizeOfCTPOutput; ++
id ) tav[
id] =
h->GetBinContent(
id+1);
1221 auto htbp = *
get1DHist(
"/output/tbpByName" );
1222 auto htap = *
get1DHist(
"/output/tapByName" );
1223 auto htav = *
get1DHist(
"/output/tavByName" );
1225 unsigned int ctpId =
item.ctpId();
1226 htbp->Fill(
item.name().c_str(), tbp[ctpId]);
1227 htap->Fill(
item.name().c_str(),
tap[ctpId]);
1228 htav->Fill(
item.name().c_str(), tav[ctpId]);
1233 htbp->LabelsDeflate();
1234 htap->LabelsDeflate();
1235 htav->LabelsDeflate();
1242 std::vector<std::string> thrHists{
"em/EM",
"muon/MU",
"tau/TAU",
"jet/JET",
"xe/XE",
"te/TE",
"xs/XS" };
1244 for(
const std::string &
histpath : thrHists) {
1246 auto xaxis =
h->GetXaxis();
1247 size_t xsize = xaxis->GetNbins();
1248 size_t ysize =
h->GetNbinsY();
1249 for(
size_t x = 1;
x<xsize;
x++) {
1251 for(
size_t y = 1;
y<=ysize;
y++) {
1252 size_t binContent =
h->GetBinContent(
x,
y);
1253 hist->Fill(xaxis->GetBinLabel(
x),
y-1,binContent);
1256 ATH_MSG_DEBUG(
"REGTEST CTPSim " << xaxis->GetBinLabel(
x) <<
" MULT " <<
s);
1260 hist->LabelsDeflate();
1265 std::vector<std::string> thrHists = {
"em/eEM",
"em/jEM",
"muon/MU",
"tau/eTAU",
"tau/jTAU",
"tau/cTAU",
"jet/jJ",
"jet/jLJ",
"jet/gJ",
"jet/gLJ",
"xe/gXE",
"xe/jXE",
"te/jTE",
"te/gTE" };
1266 for(
const std::string &
histpath : thrHists) {
1268 auto xaxis =
h->GetXaxis();
1269 size_t xsize = xaxis->GetNbins();
1270 size_t ysize =
h->GetNbinsY();
1271 for(
size_t x = 1;
x<=xsize;
x++) {
1273 for(
size_t y = 1;
y<=ysize;
y++) {
1274 size_t binContent =
h->GetBinContent(
x,
y);
1275 hist->Fill(xaxis->GetBinLabel(
x) ,
y-1, binContent);
1278 ATH_MSG_DEBUG(
"REGTEST CTPSim " << xaxis->GetBinLabel(
x) <<
" MULT " <<
s);
1282 hist->LabelsDeflate();
1288 " TBP " << tbp[
item.ctpId()] <<
1289 " TAP " <<
tap[
item.ctpId()] <<
1290 " TAV " << tav[
item.ctpId()]);
1293 return StatusCode::SUCCESS;
◆ storeMetadata()
StatusCode LVL1CTP::CTPSimulation::storeMetadata |
( |
| ) |
|
|
private |
Definition at line 1301 of file CTPSimulation.cxx.
1302 std::vector<std::string> storedPaths;
1309 std::scoped_lock<std::mutex> metadataLock(s_metadataMutex);
1310 for (
const auto &
path : storedPaths) {
1311 size_t pos =
path.find_last_of(
'/');
1312 auto splitPath = std::make_pair(
path.substr(0,
pos),
path.substr(
pos + 1));
1313 std::string treePath = splitPath.first +
"/metadata";
1315 char triggerData[] =
"<none>";
1316 const std::string mergeDataStr =
"<default>";
1317 std::vector<char> mergeData{mergeDataStr.begin(), mergeDataStr.end()};
1318 mergeData.push_back(
'\0');
1321 auto tree = std::make_unique<TTree>(
"metadata",
"Monitoring Metadata");
1322 tree->SetDirectory(
nullptr);
1323 tree->Branch(
"Name", &(splitPath.second[0]),
"Name/C");
1324 tree->Branch(
"Interval", &(
interval[0]),
"Interval/C");
1325 tree->Branch(
"TriggerChain", triggerData,
"TriggerChain/C");
1326 tree->Branch(
"MergeMethod", mergeData.data(),
"MergeMethod/C");
1331 <<
"Failed to register DQ metadata TTree " << treePath <<
endmsg;
1334 TTree *
tree{
nullptr};
1336 tree->SetBranchAddress(
"Name", &(splitPath.second[0]));
1338 tree->SetBranchAddress(
"TriggerChain", triggerData);
1339 tree->SetBranchAddress(
"MergeMethod", mergeData.data());
1344 <<
"Failed to retrieve DQ metadata TTree " << treePath <<
" which is reported to exist" <<
endmsg;
1348 return StatusCode::SUCCESS;
◆ sysExecute()
Execute an algorithm.
We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.
Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.
◆ sysInitialize()
Override sysInitialize.
Override sysInitialize from the base class.
Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc
Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc
Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.
Reimplemented in InputMakerBase, and HypoBase.
Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.
110 if (
sc.isFailure()) {
118 if ( cs.retrieve().isFailure() ) {
120 return StatusCode::SUCCESS;
122 if (cs->regHandle(
this,*
h).isFailure()) {
123 sc = StatusCode::FAILURE;
124 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_bgKey
◆ m_bunchGroupPattern
Gaudi::Property<unsigned int> LVL1CTP::CTPSimulation::m_bunchGroupPattern { this, "BunchGroupPattern", 0x0003, "Bunchgroup pattern applied at every event, useful for simulation. Bit x corresponds to bunchgroup x" } |
|
private |
◆ m_detStore
◆ m_doL1CaloLegacy
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_doL1CaloLegacy { this, "DoL1CaloLegacy", false, "Use L1Calo legacy" } |
|
private |
◆ m_doL1Topo
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_doL1Topo { this, "DoL1Topo", false, "Use L1Topo" } |
|
private |
◆ m_doL1TopoLegacy
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_doL1TopoLegacy { this, "DoL1TopoLegacy", false, "Use L1Topo Legacy" } |
|
private |
◆ m_doTRT
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_doTRT {this, "DoTRT", false, "emulate CTP with TRT included"} |
|
private |
◆ m_doZDC
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_doZDC {this, "DoZDC", false, "emulate CTP with ZDC included"} |
|
private |
◆ m_evtStore
◆ m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 114 of file AthCommonReentrantAlgorithm.h.
◆ m_forceBunchGroupPattern
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_forceBunchGroupPattern { this, "ForceBunchGroupPattern", true, "When true, ignore the bunchgroups and use the provided BunchGroupPattern" } |
|
private |
◆ m_hist1D
std::map<std::string, LockedHandle<TH1> > LVL1CTP::CTPSimulation::m_hist1D |
|
private |
◆ m_hist2D
std::map<std::string, LockedHandle<TH2> > LVL1CTP::CTPSimulation::m_hist2D |
|
private |
◆ m_histPath
Gaudi::Property<std::string> LVL1CTP::CTPSimulation::m_histPath { this, "HistPath", "/EXPERT/L1", "Booking path for the histogram" } |
|
private |
◆ m_histSvc
ServiceHandle<ITHistSvc> LVL1CTP::CTPSimulation::m_histSvc { this, "THistSvc", "THistSvc/THistSvc", "Histogramming svc" } |
|
private |
◆ m_iKeyCtpinEM
SG::ReadHandleKey<LVL1::EmTauCTP> LVL1CTP::CTPSimulation::m_iKeyCtpinEM { this, "CtpinEMInput", LVL1::TrigT1CaloDefs::EmTauCTPLocation, "Input from CTPIN em and tau (legacy)" } |
|
private |
◆ m_iKeyCtpinJet
SG::ReadHandleKey<LVL1::JetCTP> LVL1CTP::CTPSimulation::m_iKeyCtpinJet { this, "CtpinJetInput", LVL1::TrigT1CaloDefs::JetCTPLocation, "Input from CTPIN jet (legacy)" } |
|
private |
◆ m_iKeyCtpinXE
SG::ReadHandleKey<LVL1::EnergyCTP> LVL1CTP::CTPSimulation::m_iKeyCtpinXE { this, "CtpinXEInput", LVL1::TrigT1CaloDefs::EnergyCTPLocation, "Input from CTPIN energy (te,xe,xs - legacy)" } |
|
private |
◆ m_iKeyEFexCluster
◆ m_iKeyEFexTau
◆ m_iKeyGFexJets
◆ m_iKeyGFexMETJwoJ
◆ m_iKeyGFexMETNC
◆ m_iKeyGFexMETRho
◆ m_iKeyJFexJets
◆ m_iKeyJFexLJets
◆ m_iKeyLegacyTopo
◆ m_iKeyMuctpi
◆ m_iKeyTopo
◆ m_iKeyTRT
◆ m_iKeyZDC
◆ m_isData
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_isData { this, "IsData", false, "emulate CTP as part of MC or rerun on data" } |
|
private |
◆ m_muonRun2Format
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_muonRun2Format { this, "MuonMultiplicityRun2Format", false, "Interpret muon multiplicity in Run 2 format (bit 0 unused)" } |
|
private |
◆ m_oKeyCTPResult
SG::WriteHandleKey<xAOD::CTPResult> LVL1CTP::CTPSimulation::m_oKeyCTPResult {this, "CTPResultOutput", LVL1CTP::DEFAULT_CTPResultOutputLocation, "Output of CTPResult (sim)"} |
|
private |
◆ m_oKeyRDO
SG::WriteHandleKey<CTP_RDO> LVL1CTP::CTPSimulation::m_oKeyRDO {this, "RDOOutput", LVL1CTP::DEFAULT_RDOOutputLocation, "Output of CTP RDO object (sim)"} |
|
private |
◆ m_oKeySLink
SG::WriteHandleKey<CTPSLink> LVL1CTP::CTPSimulation::m_oKeySLink {this, "ROIOutput", LVL1CTP::DEFAULT_CTPSLinkLocation, "Output of CTP SLink object (sim)"} |
|
private |
◆ m_resultBuilder
◆ m_RNGEngines
◆ m_useEDMxAOD
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_useEDMxAOD { this, "UseEDMxAOD", false, "Use EDM based on xAOD class" } |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
ToolHandle< LVL1CTP::ResultBuilder > m_resultBuilder
def retrieve(aClass, aKey=None)
const ptree & data() const
Access to the underlying data, if needed.
unsigned int mapping() const
Accessor to the mapping number The mapping is unique within a type.
ServiceHandle< ITHistSvc > m_histSvc
SG::ReadHandleKey< xAOD::JetRoIContainer > m_iKeyJFexJets
path
python interpreter configuration --------------------------------------—
std::string find(const std::string &s)
return a remapped string
StatusCode extractMultiplicities(std::map< std::string, unsigned int > &thrMultiMap, const EventContext &context) const
SG::ReadHandleKey< xAOD::EnergySumRoI > m_iKeyGFexMETRho
Gaudi::Property< bool > m_doZDC
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
SG::WriteHandleKey< CTPSLink > m_oKeySLink
std::map< std::string, LockedHandle< TH1 > > m_hist1D
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool msgLvl(const MSG::Level lvl) const
T getAttribute(const std::string &key, bool ignoreIfMissing=false, const T &def=T()) const
Access to simple attribute.
SG::WriteHandleKey< CTP_RDO > m_oKeyRDO
StatusCode createMultiplicityHist(const std::string &type, unsigned int maxMult=10)
const std::string & type() const
Accessor to the threshold type.
Helper class to provide constant type-safe access to aux data.
unsigned int calculateEMMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
StatusCode setMultiplicityHistLabels(const TrigConf::L1Menu &l1menu, const std::string &type)
unsigned int calculateTauMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
Gaudi::Property< unsigned int > m_bunchGroupPattern
Property holding a SG store/key/clid from which a ReadHandle is made.
bool empty() const
Test if the key is blank.
virtual const std::string & name() const final
const std::shared_ptr< L1BunchGroup > & getBunchGroup(const std::string &name) const
Accessor to the bunchgroup by name.
SG::ReadHandleKey< xAOD::EmTauRoIContainer > m_iKeyEFexTau
IMessageSvc * getMessageSvc(bool quiet=false)
LockedHandle< TH2 > & get2DHist(const std::string &histName) const
Gaudi::Property< std::string > m_histPath
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual void setOwner(IDataHandleHolder *o)=0
An algorithm that can be simultaneously executed in multiple threads.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
std::string getBaseHistPath() const
SG::ReadHandleKey< LVL1::EnergyCTP > m_iKeyCtpinXE
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
static int getMult(uint64_t word, unsigned int startbit, unsigned int endbit)
extract multiplicities using new trigger configuration interface
SG::ReadHandleKey< xAOD::JetRoIContainer > m_iKeyJFexLJets
const std::function< CLHEP::HepRandomEngine *(void) > CTPSimRanluxFactory
StatusCode hbook(const std::string &path, std::unique_ptr< TH1 > hist)
unsigned int calculateTopoMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context, bool UseLegacy) const
StatusCode storeMetadata()
unsigned int calculateMETMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
float eT(const U &p)
Accessor utility function for getting the value of Tranverse energy.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
unsigned int calculateJetMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
virtual StatusCode assign(const std::string &sgkey)
Change the key of the object to which we're referring.
::StatusCode StatusCode
StatusCode definition for legacy code.
LockedHandle< TH1 > & get1DHist(const std::string &histName) const
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
unsigned int calculateTopoOptMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
Gaudi::Property< bool > m_doTRT
virtual float thrValue(int eta=0) const
Accessor to the threshold value for eta-dependent threholds.
L1 threshold configuration.
#define CHECK(...)
Evaluate an expression and check for errors.
constexpr std::size_t maxNBunchGroups() const
Maximum number of bunchgroups.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
SG::ReadHandleKey< LVL1::JetCTP > m_iKeyCtpinJet
Gaudi::Property< bool > m_useEDMxAOD
virtual void renounce()=0
static int getOptMult(std::bitset< 128 > bits, unsigned int startbit, unsigned int endbit)
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Gaudi::Property< bool > m_isData
StatusCode simulateItems(const std::map< std::string, unsigned int > &thrMultiMap, const EventContext &context) const
Gaudi::Property< bool > m_doL1TopoLegacy
Gaudi::Property< bool > m_forceBunchGroupPattern
StatusCode setHistLabels(const TrigConf::L1Menu &l1menu)
std::string to_string(const DetectorType &type)
SG::WriteHandleKey< xAOD::CTPResult > m_oKeyCTPResult
Gaudi::Property< bool > m_muonRun2Format
StatusCode initialize(bool used=true)
setEventNumber setTimeStamp bcid
std::map< std::string, LockedHandle< TH2 > > m_hist2D
SG::ReadHandleKey< xAOD::EnergySumRoI > m_iKeyGFexMETNC
SG::ReadHandleKey< xAOD::EnergySumRoI > m_iKeyGFexMETJwoJ
unsigned int calculateMuonMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
SG::ReadHandleKey< LVL1::FrontPanelCTP > m_iKeyLegacyTopo
static int getMuonMult(unsigned int word, int threshold)
get Muon multiplicty in legacy mode
SG::ReadCondHandleKey< TrigConf::L1BunchGroupSet > m_bgKey
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
#define ATH_MSG_WARNING(x)
SG::ReadHandleKey< LVL1::ZdcCTP > m_iKeyZDC
static unsigned int getMultTopo(uint64_t word, unsigned int startbit, unsigned int endbit, unsigned int clock)
extract multiplicities from Topo words, were the encoding is different
size_t getNSlots()
Return the number of event slots.
unsigned int calculateMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
StatusCode fillInputHistograms(const EventContext &context) const
virtual StatusCode sysInitialize() override
Override sysInitialize.
SG::ReadHandleKey< LVL1::MuCTPICTP > m_iKeyMuctpi
SG::ReadHandleKey< xAOD::TrigEMClusterContainer > m_iKeyEFexCluster
#define ATLAS_THREAD_SAFE
Gaudi::Property< bool > m_doL1CaloLegacy
Gaudi::Property< bool > m_doL1Topo
SG::ReadHandleKey< LVL1::TrtCTP > m_iKeyTRT
SG::ReadHandleKey< LVL1::EmTauCTP > m_iKeyCtpinEM
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
SG::ReadHandleKey< xAOD::JetRoIContainer > m_iKeyGFexJets
SG::ReadHandleKey< LVL1::FrontPanelCTP > m_iKeyTopo
ATHRNG::RNGWrapper m_RNGEngines