|
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 > &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 > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &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< 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)" } |
|
SG::ReadCondHandleKey< TrigConf::L1BunchGroupSet > | m_bgKey {this, "L1BunchGroup", "L1BunchGroup", "L1BunchGroupSet key name"} |
|
LVL1::CPRoIDecoder * | m_decoder { nullptr } |
|
LVL1::JEPRoIDecoder * | m_jetDecoder { nullptr } |
|
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 65 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 335 of file CTPSimulation.cxx.
338 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jJetPt",
"Jet p_{T} - jJ", 40, 0, 80) ));
339 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jJetEta",
"Jet #eta - jJ", 64, -3.2, 3.2) ));
340 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jJetPhi",
"Jet #phi - jJ", 64, -3.2, 3.2) ));
341 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jLJetPt",
"Jet p_{T} - jLJ", 40, 0, 80) ));
342 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jLJetEta",
"Jet #eta - jLJ", 64, -3.2, 3.2) ));
343 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jLJetPhi",
"Jet #phi - jLJ", 64, -3.2, 3.2) ));
344 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gJetPt",
"Jet p_{T} - gJ", 40, 0, 80) ));
345 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gJetEta",
"Jet #eta - gJ", 64, -3.2, 3.2) ));
346 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gJetPhi",
"Jet #phi - gJ", 64, -3.2, 3.2) ));
347 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gLJetPt",
"Jet p_{T} - gLJ", 40, 0, 80) ));
348 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gLJetEta",
"Jet #eta - gLJ", 64, -3.2, 3.2) ));
349 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gLJetPhi",
"Jet #phi - gLJ", 64, -3.2, 3.2) ));
352 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"Pufit",
"Missing ET from algorithm pufit", 40, 0, 80) ));
353 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"PufitPhi",
"Missing ET PUfit phi", 64, -3.2, 3.2) ));
354 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"Rho",
"Missing ET from algorithm rhosub", 40, 0, 80) ));
355 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"RhoPhi",
"Missing ET rhosub phi", 64, -3.2, 3.2) ));
356 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"JwoJ",
"Missing ET from algorithm jet without jets", 40, 0, 80) ));
357 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"JwoJPhi",
"Missing ET jet without jet phi", 64, -3.2, 3.2) ));
360 ATH_CHECK (
hbook(
"/input/em/", std::make_unique<TH1I>(
"et",
"Cluster et", 40, 0, 40) ));
361 ATH_CHECK (
hbook(
"/input/em/", std::make_unique<TH1I>(
"eta",
"Cluster eta ", 64, -3.2, 3.2) ));
362 ATH_CHECK (
hbook(
"/input/em/", std::make_unique<TH1I>(
"phi",
"Cluster phi", 64, -3.2, 3.2) ));
365 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"et",
"Tau et", 40, 0, 40) ));
366 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"eta",
"Tau eta ", 64, -3.2, 3.2) ));
367 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"phi",
"Tau phi", 64, -3.2, 3.2) ));
368 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"emIso",
"Tau em isolation", 40, 0, 1) ));
369 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"hadIso",
"Tau hadronic isolation", 40, 0, 1) ));
370 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"R3ET",
"Tau eT", 40, 0, 40) ));
371 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"R3Iso",
"Tau isolation", 40, 0, 1) ));
374 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"jJets",
"Number of jets (jJ)", 40, 0, 40) ));
375 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"jLJets",
"Number of jets (jLJ)", 40, 0, 40) ));
376 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"gJets",
"Number of jets (gJ)", 40, 0, 40) ));
377 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"gLJets",
"Number of jets (gLJ)", 40, 0, 40) ));
378 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"muons",
"Number of muons", 10, 0, 10) ));
379 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"emcluster",
"Number of EM clusters", 20, 0, 20) ));
380 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"taus",
"Number of TAU candidates", 20, 0, 20) ));
391 ATH_CHECK (
hbook(
"/multi/all", (std::unique_ptr<TH2>)std::make_unique<TH2I>(
"LegacyMult",
"Legacy thresholds multiplicity", 1, 0, 1, 10, 0, 10) ));
392 ATH_CHECK (
hbook(
"/multi/all", (std::unique_ptr<TH2>)std::make_unique<TH2I>(
"R3Mult",
"New thresholds multiplicity", 1, 0, 1, 10, 0, 10) ));
395 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"LegacyTopo0",
"L1Topo Decision (Legacy 0)", 64, 0, 64) ));
396 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"LegacyTopo1",
"L1Topo Decision (Legacy 1)", 64, 0, 64) ));
397 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1El",
"L1Topo Decision (Topo 1 electrical)", 64, 0, 64) ));
398 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo2El",
"L1Topo Decision (Topo 2 electrical)", 64, 0, 64) ));
399 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo3El",
"L1Topo Decision (Topo 3 electrical)", 64, 0, 64) ));
400 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt0",
"L1Topo Decision (Topo 1 optical 0)", 128, 0, 128) ));
401 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt1",
"L1Topo Decision (Topo 1 optical 1)", 128, 0, 128) ));
402 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt2",
"L1Topo Decision (Topo 1 optical 2)", 128, 0, 128) ));
403 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt3",
"L1Topo Decision (Topo 1 optical 3)", 128, 0, 128) ));
406 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tbpById",
"Items decision (tbp)", 512, 0, 512) ));
407 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tapById",
"Items decision (tap)", 512, 0, 512) ));
408 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tavById",
"Items decision (tav)", 512, 0, 512) ));
409 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tbpByName",
"Items decision (tbp)", 512, 0, 512) ));
410 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tapByName",
"Items decision (tap)", 512, 0, 512) ));
411 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tavByName",
"Items decision (tav)", 512, 0, 512) ));
413 ATH_CHECK (
hbook(
"/", std::make_unique<TH1I>(
"bcid",
"Bunch crossing ID", 3564, 0, 3564)) );
417 return StatusCode::SUCCESS;
◆ calculateEMMultiplicity()
Definition at line 857 of file CTPSimulation.cxx.
858 unsigned int multiplicity (0);
859 if ( confThr.
name()[0]==
'e' ) {
862 float scale =
l1menu->getObject(
"thresholds.legacyCalo.EM.emscale").getValue<
float>();
864 for (
const auto cl : *eFexCluster ) {
865 float eta =
cl->eta();
866 int ieta =
int((eta + (eta>0 ? 0.005 : -0.005))/0.1);
867 unsigned int thrV = confThr.
thrValue( ieta );
868 bool clusterPasses = ( ((
unsigned int)
cl->et()) > (thrV *
scale) );
869 multiplicity += clusterPasses ? 1 : 0;
876 if ( ctpinEM.isValid() ) {
877 if(
l1menu->connector(
"EM1").hasLine(confThr.
name()) ) {
878 auto & triggerline =
l1menu->connector(
"EM1").triggerLine(confThr.
name());
879 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord0(), triggerline.startbit(), triggerline.endbit() );
880 }
else if(
l1menu->connector(
"EM2").hasLine(confThr.
name()) ) {
881 auto & triggerline =
l1menu->connector(
"EM2").triggerLine(confThr.
name());
882 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord1(), triggerline.startbit(), triggerline.endbit() );
888 ATH_MSG_DEBUG(
"EM MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateJetMultiplicity()
Definition at line 834 of file CTPSimulation.cxx.
835 unsigned int multiplicity = 0;
836 if( confThr.
type() ==
"JET" ) {
839 if ( ctpinJet.isValid() ) {
840 if(
l1menu->connector(
"JET1").hasLine(confThr.
name()) ) {
841 auto & triggerline =
l1menu->connector(
"JET1").triggerLine(confThr.
name());
842 multiplicity =
CTPUtil::getMult( ctpinJet->cableWord0(), triggerline.startbit(), triggerline.endbit() );
843 }
else if(
l1menu->connector(
"JET2").hasLine(confThr.
name()) ) {
844 auto & triggerline =
l1menu->connector(
"JET2").triggerLine(confThr.
name());
845 multiplicity =
CTPUtil::getMult( ctpinJet->cableWord1(), triggerline.startbit(), triggerline.endbit() );
851 ATH_MSG_DEBUG(
"JET MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateMETMultiplicity()
Definition at line 932 of file CTPSimulation.cxx.
933 unsigned int multiplicity = 0;
934 if ( confThr.
type() ==
"XE" or confThr.
type() ==
"TE" or confThr.
type() ==
"XS" ) {
938 if ( ctpinEnergy.isValid() ) {
939 if(
l1menu->connector(
"EN1").hasLine(confThr.
name()) ) {
940 auto & triggerline =
l1menu->connector(
"EN1").triggerLine(confThr.
name());
941 multiplicity =
CTPUtil::getMult( ctpinEnergy->cableWord0(), triggerline.startbit(), triggerline.endbit() );
942 }
else if(
l1menu->connector(
"EN2").hasLine(confThr.
name()) ) {
943 auto & triggerline =
l1menu->connector(
"EN2").triggerLine(confThr.
name());
944 multiplicity =
CTPUtil::getMult( ctpinEnergy->cableWord1(), triggerline.startbit(), triggerline.endbit() );
951 if ( confThr.
name().find(
"gXENC")==0 ) {
954 }
else if ( confThr.
name().find(
"gXERHO")==0 ) {
957 }
else if ( confThr.
name().find(
"gXEJWOJ")==0 ) {
966 multiplicity = (
met->energyT()/1000. < confThr.
getAttribute<
unsigned int>(
"xe") ) ? 0 : 1;
969 if(confThr.
type() ==
"TE") {
971 ATH_MSG_DEBUG(
"TE MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
972 }
else if(confThr.
type() ==
"XS") {
974 ATH_MSG_DEBUG(
"XS MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
977 ATH_MSG_DEBUG(
"XE MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateMultiplicity()
Definition at line 1099 of file CTPSimulation.cxx.
1100 unsigned int multiplicity = 0;
1102 if ( confThr.
type() ==
"EM" ) {
1104 }
else if ( confThr.
type() ==
"TAU" ) {
1106 }
else if ( confThr.
type() ==
"XE" || confThr.
type() ==
"TE" || confThr.
type() ==
"XS" ) {
1108 }
else if ( confThr.
type() ==
"JET" ) {
1110 }
else if ( confThr.
type() ==
"MU" ) {
1112 }
else if ( confThr.
type() ==
"R2TOPO") {
1114 }
else if ( confThr.
type() ==
"TOPO" ) {
1116 }
else if ( confThr.
type()[0] ==
'e' || confThr.
type()[0] ==
'c' || confThr.
type()[0] ==
'j' || confThr.
type()[0] ==
'g' ){
1121 ATH_MSG_FATAL(
"Caught exception when calculating multiplicity for threshold " << confThr.
name() <<
": " << ex.what());
1125 return multiplicity;
◆ calculateMuonMultiplicity()
Definition at line 984 of file CTPSimulation.cxx.
988 unsigned int multiplicity = 0;
990 if ( ctpinMuon.isValid() ) {
991 auto & triggerline =
l1menu->connector(
"MuCTPiOpt0").triggerLine(confThr.
name());
995 ATH_MSG_DEBUG(
"MU MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateTauMultiplicity()
Definition at line 894 of file CTPSimulation.cxx.
895 unsigned int multiplicity = 0;
896 if ( confThr.
name()[0]==
'e' ) {
901 if( eFexTaus.isValid() ) {
902 for (
const auto tau : *eFexTaus ) {
903 unsigned int eT = (
unsigned int) (accR3ClET(*tau)/1000.);
905 unsigned int etCut = confThr.
data().get_child(
"et").get_value<
unsigned int>();
906 bool tauPasses = (
eT >= etCut );
907 multiplicity += tauPasses ? 1 : 0;
914 if ( ctpinEM.isValid() ) {
915 if(
l1menu->connector(
"TAU1").hasLine(confThr.
name()) ) {
916 auto & triggerline =
l1menu->connector(
"TAU1").triggerLine(confThr.
name());
917 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord2(), triggerline.startbit(), triggerline.endbit() );
918 }
else if(
l1menu->connector(
"TAU2").hasLine(confThr.
name()) ) {
919 auto & triggerline =
l1menu->connector(
"TAU2").triggerLine(confThr.
name());
920 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord3(), triggerline.startbit(), triggerline.endbit() );
926 ATH_MSG_DEBUG(
"TAU MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateTopoMultiplicity()
Definition at line 1040 of file CTPSimulation.cxx.
1041 unsigned int multiplicity = 0;
1049 if(topoInput.isValid()) {
1051 std::string
conn(
"");
1052 if(
l1menu->connector(
"LegacyTopo0").hasLine(confThr.
name()) ) {
1053 conn =
"LegacyTopo0";
1054 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
1055 }
else if(
l1menu->connector(
"LegacyTopo1").hasLine(confThr.
name()) ) {
1056 conn =
"LegacyTopo1";
1057 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
1060 auto & triggerline =
l1menu->connector(
conn).triggerLine(confThr.
name());
1062 <<
", cable start " << triggerline.startbit() <<
" and end " << triggerline.endbit()
1063 <<
" double word 0x" << std::setw(16) << std::setfill(
'0') << std::hex << cable << std::dec << std::setfill(
' ') );
1064 multiplicity =
CTPUtil::getMultTopo( cable, triggerline.startbit(), triggerline.endbit(), triggerline.clock() );
1075 if(topoInput.isValid()) {
1077 std::string
conn(
"");
1078 if(
l1menu->connector(
"Topo2El").hasLine(confThr.
name()) ) {
1080 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
1081 }
else if(
l1menu->connector(
"Topo3El").hasLine(confThr.
name()) ) {
1083 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
1086 auto & triggerline =
l1menu->connector(
conn).triggerLine(confThr.
name());
1088 <<
", cable start " << triggerline.startbit() <<
" and end " << triggerline.endbit()
1089 <<
" double word 0x" << std::setw(16) << std::setfill(
'0') << std::hex << cable << std::dec << std::setfill(
' ') );
1090 multiplicity =
CTPUtil::getMultTopo( cable, triggerline.startbit(), triggerline.endbit(), triggerline.clock() );
1094 return multiplicity;
◆ calculateTopoOptMultiplicity()
Definition at line 1001 of file CTPSimulation.cxx.
1005 unsigned int multiplicity = 0;
1007 std::string connector =
"";
1008 if (topoInput.isValid()) {
1009 connector =
l1menu->connectorNameFromThreshold(confThr.
name());
1010 auto & triggerline =
l1menu->connector(connector).triggerLine(confThr.
name());
1011 std::bitset<128> bits = topoInput->optcableWord(connector);
1014 std::string subfolder =
"";
1015 if (confThr.
type().find(
"XE") != std::string::npos) {
1017 }
else if (confThr.
type().find(
"TE") != std::string::npos) {
1019 }
else if (confThr.
type().find(
"TAU") != std::string::npos) {
1021 }
else if (confThr.
type().find(
"EM") != std::string::npos) {
1023 }
else if (confThr.
type().find(
"jJ") != std::string::npos) {
1025 }
else if (confThr.
type().find(
"jLJ") != std::string::npos) {
1027 }
else if (confThr.
type().find(
"gJ") != std::string::npos) {
1029 }
else if (confThr.
type().find(
"gLJ") != std::string::npos) {
1032 get2DHist(
"/multi/" + subfolder +
"/" + confThr.
type() +
"Mult" )->Fill(confThr.
mapping(), multiplicity);
1033 ATH_MSG_DEBUG(
"TOPO OPT input MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity <<
" received via connector: " << connector);
1035 return multiplicity;
◆ cardinality()
unsigned int AthReentrantAlgorithm::cardinality |
( |
| ) |
const |
|
overridevirtualinherited |
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 55 of file AthReentrantAlgorithm.cxx.
◆ createMultiplicityHist()
StatusCode LVL1CTP::CTPSimulation::createMultiplicityHist |
( |
const std::string & |
type, |
|
|
unsigned int |
maxMult = 10 |
|
) |
| |
|
private |
Definition at line 141 of file CTPSimulation.cxx.
144 std::map<std::string,std::vector<std::string>> typeMapping = {
146 {
"jet", {
"JET",
"jJ",
"jLJ",
"gJ",
"gLJ"} },
147 {
"xe", {
"XE",
"gXE",
"jXE"} },
148 {
"te", {
"TE",
"jTE",
"gTE"} },
150 {
"em", {
"EM",
"eEM",
"jEM"} },
151 {
"tau", {
"TAU",
"eTAU",
"jTAU",
"cTAU"} }
153 std::vector<TrigConf::L1Threshold> thrV;
154 for(
const std::string &
t : typeMapping[
type] ) {
156 TH2*
hist =
new TH2I( Form(
"%sMult",
t.c_str()),
157 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 125 of file CTPSimulation.cxx.
131 std::map<std::string, unsigned int> thrMultiMap;
137 return StatusCode::SUCCESS;
◆ extractMultiplicities()
StatusCode LVL1CTP::CTPSimulation::extractMultiplicities |
( |
std::map< std::string, unsigned int > & |
thrMultiMap, |
|
|
const EventContext & |
context |
|
) |
| const |
|
private |
Definition at line 620 of file CTPSimulation.cxx.
627 std::vector<std::string> connNames =
l1menu->connectorNames();
628 for (
const std::string connName : {
"LegacyTopo0",
"LegacyTopo1",
"Topo1El",
"Topo2El",
"Topo3El",
"Topo1Opt0",
"Topo1Opt1",
"Topo1Opt2",
"Topo1Opt3",
"CTPCAL",
"NIM2"})
630 if(
find(connNames.begin(), connNames.end(), connName) == connNames.end() ) {
633 bool opt_cable =
false;
634 std::bitset<128> cable128 {0};
636 if (connName.starts_with(
"Legacy")) {
642 if (not topoInput.isValid()) {
645 if(connName ==
"LegacyTopo0") {
646 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
647 }
else if (connName ==
"LegacyTopo1") {
648 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
651 else if (connName.starts_with(
"CTPCAL") &&
m_doZDC)
654 if (not zdcInput.isValid())
658 cable =
static_cast<uint64_t>(zdcInput->cableWord0());
660 for (
auto &
tl :
conn.triggerLines()){
661 if (
tl.name().find(
"ZDC") == std::string::npos)
665 uint flatIndex =
tl.flatindex();
667 thrMultiMap[
tl.name()] = pass;
673 else if (connName.starts_with(
"NIM2"))
678 if (not trtInput.isValid())
682 cable =
static_cast<uint64_t>(trtInput->cableWord0());
684 for (
auto &
tl :
conn.triggerLines()){
685 if (
tl.name().find(
"TRT") == std::string::npos)
689 uint flatIndex =
tl.flatindex();
691 thrMultiMap[
tl.name()] = pass;
698 if (not zdcInput.isValid())
702 cable =
static_cast<uint64_t>(zdcInput->cableWord1());
704 for (
const auto &
tl :
conn.triggerLines()){
705 if (
tl.name().find(
"ZDC") == std::string::npos)
709 uint flatIndex =
tl.flatindex();
711 thrMultiMap[
tl.name()] = pass;
724 if (not topoInput.isValid()) {
727 if(connName ==
"Topo1El") {
728 cable = ( (
uint64_t)topoInput->cableWord0( 1 ) << 32) + topoInput->cableWord0( 0 );
729 }
else if(connName ==
"Topo2El") {
730 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
731 }
else if (connName ==
"Topo3El") {
732 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
733 }
else if(connName ==
"Topo1Opt0") {
734 ATH_MSG_DEBUG(
"BIT word Topo1Opt0: " << topoInput->optcableWord( connName ));
736 cable128 = topoInput->optcableWord( connName );
737 }
else if(connName ==
"Topo1Opt1") {
738 ATH_MSG_DEBUG(
"BIT word Topo1Opt1: " << topoInput->optcableWord( connName ));
740 cable128 = topoInput->optcableWord( connName );
741 }
else if(connName ==
"Topo1Opt2") {
742 ATH_MSG_DEBUG(
"BIT word Topo1Opt2: " << topoInput->optcableWord( connName ));
744 cable128 = topoInput->optcableWord( connName );
745 }
else if(connName ==
"Topo1Opt3") {
746 ATH_MSG_DEBUG(
"BIT word Topo1Opt3: " << topoInput->optcableWord( connName ));
748 cable128 = topoInput->optcableWord( connName );
752 for(
uint fpga : {0,1}) {
753 for(
uint clock : {0,1}) {
754 for(
auto &
tl :
conn.triggerLines(fpga,clock)) {
755 uint flatIndex =
tl.flatindex();
758 pass = ((cable128 >> flatIndex).
test(0)) == 0 ? 0 : 1;
761 pass = (cable & (
static_cast<uint64_t>(0x1) << flatIndex)) == 0 ? 0 : 1;
763 if(
size_t pos =
tl.name().find(
'[');
pos == std::string::npos) {
764 thrMultiMap[
tl.name()] = pass;
767 auto thrName =
tl.name().substr(0,
pos);
768 int bit = std::stoi(
tl.name().substr(
pos+1));
769 thrMultiMap.try_emplace(thrName, 0);
770 thrMultiMap[thrName] += (pass << bit);
771 ATH_MSG_DEBUG(thrName <<
" MULT updated mult for topo " << pass);
777 for (
auto & thr :
l1menu->thresholds() ) {
778 if (thr->type() ==
"TOPO" or thr->type() ==
"MULTTOPO" or thr->type() ==
"MUTOPO")
782 if( thr->type() ==
"ZDC" &&
m_doZDC ){
785 if( thr->name() ==
"NIMTRT" &&
m_doTRT ){
791 thrMultiMap[thr->name()] = multiplicity;
792 ATH_MSG_DEBUG( thr->name() <<
" MULT calculated mult for topo " << multiplicity);
796 auto bcid = context.eventID().bunch_crossing_id();
799 for (
size_t bg = 0;
bg < 16; ++
bg ) {
800 std::string bgName(
"BGRP");
819 ATH_MSG_ERROR(
"Did not find L1BunchGroupSet in DetectorStore");
824 thrMultiMap[
"RNDM0"] = 1;
825 thrMultiMap[
"RNDM1"] = 1;
826 thrMultiMap[
"RNDM2"] = 1;
827 thrMultiMap[
"RNDM3"] = 1;
829 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()
const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 79 of file AthReentrantAlgorithm.cxx.
86 return Algorithm::extraOutputDeps();
◆ fillInputHistograms()
StatusCode LVL1CTP::CTPSimulation::fillInputHistograms |
( |
const EventContext & |
context | ) |
const |
|
private |
Definition at line 421 of file CTPSimulation.cxx.
428 if(jFexJets.isValid()) {
429 get1DHist(
"/input/counts/jJets")->Fill(jFexJets->size());
432 auto h2 = *
get1DHist(
"/input/jets/jJetPhi");
433 for(
const auto jet : *jFexJets ) {
434 h0->Fill(fabs(
jet->et8x8()/1000.));
435 h1->Fill(
jet->eta());
436 h2->Fill(
jet->phi());
446 if(jFexLJets.isValid()) {
447 get1DHist(
"/input/counts/jLets")->Fill(jFexLJets->size());
450 auto h2 = *
get1DHist(
"/input/jets/jLJetPhi");
451 for(
const auto jet : *jFexLJets ) {
452 h0->Fill(fabs(
jet->et8x8()/1000.));
453 h1->Fill(
jet->eta());
454 h2->Fill(
jet->phi());
466 if(gFexJets.isValid()) {
467 get1DHist(
"/input/counts/gJets")->Fill(gFexJets->size());
470 auto h2 = *
get1DHist(
"/input/jets/gJetPhi");
471 for(
const auto jet : *gFexJets ) {
472 h0->Fill(fabs(
jet->et8x8()/1000.));
473 h1->Fill(
jet->eta());
474 h2->Fill(
jet->phi());
484 if( gFexMETPufit.isValid() ) {
485 get1DHist(
"/input/met/Pufit")->Fill(gFexMETPufit->energyT()/1000.);
486 get1DHist(
"/input/met/PufitPhi")->Fill(atan2(gFexMETPufit->energyX(), gFexMETPufit->energyY()));
494 if( gFexMETRho.isValid() ) {
495 get1DHist(
"/input/met/Rho")->Fill(gFexMETRho->energyT()/1000.);
496 get1DHist(
"/input/met/RhoPhi")->Fill(atan2(gFexMETRho->energyX(), gFexMETRho->energyY()));
504 if( gFexMETJwoJ.isValid() ) {
505 get1DHist(
"/input/met/JwoJ")->Fill(gFexMETJwoJ->energyT()/1000.);
506 get1DHist(
"/input/met/JwoJPhi")->Fill(atan2(gFexMETJwoJ->energyX(), gFexMETJwoJ->energyY()));
515 if( eFexCluster.isValid() ) {
516 get1DHist(
"/input/counts/emcluster")->Fill(eFexCluster->size());
520 for(
const auto cl : *eFexCluster ) {
533 if( eFexTau.isValid() ) {
534 get1DHist(
"/input/counts/taus")->Fill(eFexTau->size());
538 auto h3 = *
get1DHist(
"/input/tau/emIso");
539 auto h4 = *
get1DHist(
"/input/tau/hadIso");
540 auto h5 = *
get1DHist(
"/input/tau/R3ClusterET");
541 auto h6 = *
get1DHist(
"/input/tau/R3ClusterIso");
544 for(
const auto tau : *eFexTau ) {
546 h1->Fill(tau->eta());
547 h2->Fill(tau->phi());
548 h3->Fill(tau->emIsol());
549 h4->Fill(tau->hadIsol());
550 h5->Fill(accR3ClET(*tau)/1000.);
551 h6->Fill(accR3ClIso(*tau));
561 if(legacyTopoInput.isValid()) {
563 ATH_MSG_DEBUG(
"L1TopoLegacy0 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord1(0));
564 ATH_MSG_DEBUG(
"L1TopoLegacy0 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord1(1));
565 ATH_MSG_DEBUG(
"L1TopoLegacy1 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord2(0));
566 ATH_MSG_DEBUG(
"L1TopoLegacy1 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord2(1));
569 for(
unsigned int i=0;
i<32; ++
i) {
571 if( (legacyTopoInput->cableWord1(0) &
mask) != 0 )
h0->Fill(
i);
572 if( (legacyTopoInput->cableWord1(1) &
mask) != 0 )
h0->Fill(32 +
i);
573 if( (legacyTopoInput->cableWord2(0) &
mask) != 0 )
h1->Fill(
i);
574 if( (legacyTopoInput->cableWord2(1) &
mask) != 0 )
h1->Fill(32 +
i);
581 if(topoInput.isValid()) {
583 ATH_MSG_DEBUG(
"L1Topo0 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord1(0));
584 ATH_MSG_DEBUG(
"L1Topo0 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord1(1));
585 ATH_MSG_DEBUG(
"L1Topo1 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord2(0));
586 ATH_MSG_DEBUG(
"L1Topo1 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord2(1));
589 for(
unsigned int i=0;
i<32; ++
i) {
591 if( (topoInput->cableWord1(0) &
mask) != 0 )
h0->Fill(
i);
592 if( (topoInput->cableWord1(1) &
mask) != 0 )
h0->Fill(32 +
i);
593 if( (topoInput->cableWord2(0) &
mask) != 0 )
h1->Fill(
i);
594 if( (topoInput->cableWord2(1) &
mask) != 0 )
h1->Fill(32 +
i);
596 auto h2 = *
get1DHist(
"/input/topo/Topo1Opt0");
597 auto h3 = *
get1DHist(
"/input/topo/Topo1Opt1");
598 auto h4 = *
get1DHist(
"/input/topo/Topo1Opt2");
599 auto h5 = *
get1DHist(
"/input/topo/Topo1Opt3");
600 for(
unsigned int i=0;
i<128;
i += 3) {
601 std::bitset<128>
mask = 0x11;
mask <<=
i;
602 if( (topoInput->optcableWord(
"Topo1Opt0") &
mask) != 0 ) h2->Fill(
i);
603 if( (topoInput->optcableWord(
"Topo1Opt1") &
mask) != 0 ) h3->Fill(
i);
604 if( (topoInput->optcableWord(
"Topo1Opt2") &
mask) != 0 ) h4->Fill(
i);
605 if( (topoInput->optcableWord(
"Topo1Opt3") &
mask) != 0 ) h5->Fill(
i);
613 auto bcid = context.eventID().bunch_crossing_id();
616 return StatusCode::SUCCESS;
◆ filterPassed()
virtual bool AthReentrantAlgorithm::filterPassed |
( |
const EventContext & |
ctx | ) |
const |
|
inlinevirtualinherited |
◆ 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 197 of file CTPSimulation.cxx.
199 if(baseHistPath.back()!=
'/') baseHistPath +=
"/";
200 baseHistPath +=
name();
◆ hbook() [1/2]
StatusCode LVL1CTP::CTPSimulation::hbook |
( |
const std::string & |
path, |
|
|
std::unique_ptr< TH1 > |
hist |
|
) |
| |
|
private |
Definition at line 205 of file CTPSimulation.cxx.
206 const std::string &
hname(
hist->GetName());
209 if(
key.back()!=
'/')
key +=
"/";
214 return StatusCode::RECOVERABLE;
217 LockedHandle<TH1>
lh;
219 if(
sc.isSuccess() ) {
◆ hbook() [2/2]
StatusCode LVL1CTP::CTPSimulation::hbook |
( |
const std::string & |
path, |
|
|
std::unique_ptr< TH2 > |
hist |
|
) |
| |
|
private |
Definition at line 229 of file CTPSimulation.cxx.
230 const std::string &
hname(
hist->GetName());
233 if(
key.back()!=
'/')
key +=
"/";
238 return StatusCode::RECOVERABLE;
241 LockedHandle<TH2>
lh;
243 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()
bool AthReentrantAlgorithm::isClonable |
( |
| ) |
const |
|
overridevirtualinherited |
Specify if the algorithm is clonable.
Reentrant algorithms are clonable.
Reimplemented in Simulation::BeamEffectsAlg, InDet::SiTrackerSpacePointFinder, InDet::SCT_Clusterization, InDet::SiSPSeededTrackFinder, SCTRawDataProvider, InDet::GNNSeedingTrackMaker, SCT_PrepDataToxAOD, RoIBResultToxAOD, InDet::SiSPGNNTrackMaker, SCT_CablingCondAlgFromCoraCool, SCT_ReadCalibDataTestAlg, SCT_CablingCondAlgFromText, SCT_ReadCalibChipDataTestAlg, SCT_TestCablingAlg, SCT_ConfigurationConditionsTestAlg, ITkPixelCablingAlg, ITkStripCablingAlg, SCTEventFlagWriter, SCT_ConditionsSummaryTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_TdaqEnabledTestAlg, SCT_SiliconConditionsTestAlg, SCTSiLorentzAngleTestAlg, SCT_ByteStreamErrorsTestAlg, SCT_ConditionsParameterTestAlg, SCT_FlaggedConditionTestAlg, SCT_StripVetoTestAlg, SCT_RawDataToxAOD, and SCTSiPropertiesTestAlg.
Definition at line 44 of file AthReentrantAlgorithm.cxx.
◆ 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()
virtual void AthReentrantAlgorithm::setFilterPassed |
( |
bool |
state, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
inlinevirtualinherited |
◆ setHistLabels()
Definition at line 275 of file CTPSimulation.cxx.
288 std::vector<std::string> connNames =
l1menu.connectorNames();
289 for(
const std::string connName : {
"LegacyTopo0",
"LegacyTopo1",
"Topo1El",
"Topo2El",
"Topo3El",
"Topo1Opt0",
"Topo1Opt1",
"Topo1Opt2",
"Topo1Opt3"}) {
290 if(
find(connNames.begin(), connNames.end(), connName) == connNames.end() ) {
293 auto hTopo = *
get1DHist(
"/input/topo/" + connName);
294 for(
uint fpga : {0,1}) {
295 for(
uint clock : {0,1}) {
296 for(
auto &
tl :
l1menu.connector(connName).triggerLines(fpga,clock)) {
297 uint flatIndex =
tl.flatindex();
298 hTopo->GetXaxis()->SetBinLabel(flatIndex+1,
tl.name().c_str());
304 std::vector<std::string> orderedItemnames;
305 orderedItemnames.reserve(
l1menu.size() );
307 orderedItemnames.emplace_back(
item.name());
309 std::sort(orderedItemnames.begin(), orderedItemnames.end());
312 auto tbpById = *
get1DHist(
"/output/tbpById" );
313 auto tapById = *
get1DHist(
"/output/tapById" );
314 auto tavById = *
get1DHist(
"/output/tavById" );
315 auto tbpByName = *
get1DHist(
"/output/tbpByName" );
316 auto tapByName = *
get1DHist(
"/output/tapByName" );
317 auto tavByName = *
get1DHist(
"/output/tavByName" );
318 unsigned int bin = 1;
319 for (
const std::string & itemname : orderedItemnames ) {
320 unsigned int ctpId(0);
322 ctpId =
item.ctpId();
323 tbpById->GetXaxis()->SetBinLabel( ctpId+1, itemname.c_str() );
324 tapById->GetXaxis()->SetBinLabel( ctpId+1, itemname.c_str() );
325 tavById->GetXaxis()->SetBinLabel( ctpId+1, itemname.c_str() );
326 tbpByName->GetXaxis()->SetBinLabel(
bin, itemname.c_str() );
327 tapByName->GetXaxis()->SetBinLabel(
bin, itemname.c_str() );
328 tavByName->GetXaxis()->SetBinLabel(
bin++, itemname.c_str() );
331 return StatusCode::SUCCESS;
◆ setMultiplicityHistLabels()
Definition at line 165 of file CTPSimulation.cxx.
167 std::map<std::string,std::vector<std::string>> typeMapping = {
169 {
"jet", {
"JET",
"jJ",
"jLJ",
"gJ",
"gLJ"} },
170 {
"xe", {
"XE",
"gXE",
"jXE"} },
171 {
"te", {
"TE",
"jTE",
"gTE"} },
173 {
"em", {
"EM",
"eEM",
"jEM"} },
174 {
"tau", {
"TAU",
"eTAU",
"jTAU",
"cTAU"} }
178 std::vector<TrigConf::L1Threshold> thrV;
179 for(
const std::string &
t : typeMapping[
type] ) {
182 auto & thrV =
l1menu.thresholds(
t);
183 while(
hist->GetNbinsX() < (
int)thrV.size() ) {
184 hist->LabelsInflate(
"xaxis");
186 for(
auto thr : thrV) {
187 hist->GetXaxis()->SetBinLabel(thr->mapping()+1, thr->name().c_str() );
190 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 1129 of file CTPSimulation.cxx.
1133 std::vector<uint32_t> tip;
1136 std::map<std::string, unsigned int> itemDecisionMap;
1140 std::vector<uint32_t> tbp;
1141 std::vector<uint32_t>
tap;
1142 std::vector<uint32_t> tav;
1150 auto eventID = context.eventID();
1157 ATH_CHECK( rdoWriteHandle.record( std::move(rdo) ));
1158 ATH_CHECK( sLinkWriteHandle.record( std::move(roi) ));
1162 auto tbpById = *
get1DHist(
"/output/tbpById" );
1163 auto tapById = *
get1DHist(
"/output/tapById" );
1164 auto tavById = *
get1DHist(
"/output/tavById" );
1165 for(
unsigned int ctpId= 0; ctpId < 512; ++ctpId ) {
1166 unsigned int wordNr = ctpId / 32;
1167 unsigned int posWithinWord = ctpId % 32;
1168 auto mask = 1L << posWithinWord;
1169 if( 0 != (tbp[wordNr] &
mask) ) {
1170 tbpById->Fill( ctpId );
1172 if( 0 != (
tap[wordNr] &
mask) ) {
1173 tapById->Fill( ctpId );
1175 if( 0 != (tav[wordNr] &
mask) ) {
1176 tavById->Fill( ctpId );
1180 return StatusCode::SUCCESS;
◆ start()
StatusCode LVL1CTP::CTPSimulation::start |
( |
| ) |
|
|
overridevirtual |
◆ stop()
StatusCode LVL1CTP::CTPSimulation::stop |
( |
| ) |
|
|
overridevirtual |
Definition at line 1185 of file CTPSimulation.cxx.
1190 constexpr
unsigned int sizeOfCTPOutput = 512;
1192 unsigned int tbp[sizeOfCTPOutput];
1193 unsigned int tap[sizeOfCTPOutput];
1194 unsigned int tav[sizeOfCTPOutput];
1197 for(
unsigned int id = 0;
id < sizeOfCTPOutput; ++
id ) tbp[
id] =
h->GetBinContent(
id+1);
1201 for(
unsigned int id = 0;
id < sizeOfCTPOutput; ++
id )
tap[
id] =
h->GetBinContent(
id+1);
1205 for(
unsigned int id = 0;
id < sizeOfCTPOutput; ++
id ) tav[
id] =
h->GetBinContent(
id+1);
1210 auto htbp = *
get1DHist(
"/output/tbpByName" );
1211 auto htap = *
get1DHist(
"/output/tapByName" );
1212 auto htav = *
get1DHist(
"/output/tavByName" );
1214 unsigned int ctpId =
item.ctpId();
1215 htbp->Fill(
item.name().c_str(), tbp[ctpId]);
1216 htap->Fill(
item.name().c_str(),
tap[ctpId]);
1217 htav->Fill(
item.name().c_str(), tav[ctpId]);
1222 htbp->LabelsDeflate();
1223 htap->LabelsDeflate();
1224 htav->LabelsDeflate();
1231 std::vector<std::string> thrHists{
"em/EM",
"muon/MU",
"tau/TAU",
"jet/JET",
"xe/XE",
"te/TE",
"xs/XS" };
1233 for(
const std::string &
histpath : thrHists) {
1235 auto xaxis =
h->GetXaxis();
1236 size_t xsize = xaxis->GetNbins();
1237 size_t ysize =
h->GetNbinsY();
1238 for(
size_t x = 1;
x<xsize;
x++) {
1240 for(
size_t y = 1;
y<=ysize;
y++) {
1241 size_t binContent =
h->GetBinContent(
x,
y);
1242 hist->Fill(xaxis->GetBinLabel(
x),
y-1,binContent);
1245 ATH_MSG_DEBUG(
"REGTEST CTPSim " << xaxis->GetBinLabel(
x) <<
" MULT " <<
s);
1249 hist->LabelsDeflate();
1254 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" };
1255 for(
const std::string &
histpath : thrHists) {
1257 auto xaxis =
h->GetXaxis();
1258 size_t xsize = xaxis->GetNbins();
1259 size_t ysize =
h->GetNbinsY();
1260 for(
size_t x = 1;
x<=xsize;
x++) {
1262 for(
size_t y = 1;
y<=ysize;
y++) {
1263 size_t binContent =
h->GetBinContent(
x,
y);
1264 hist->Fill(xaxis->GetBinLabel(
x) ,
y-1, binContent);
1267 ATH_MSG_DEBUG(
"REGTEST CTPSim " << xaxis->GetBinLabel(
x) <<
" MULT " <<
s);
1271 hist->LabelsDeflate();
1277 " TBP " << tbp[
item.ctpId()] <<
1278 " TAP " <<
tap[
item.ctpId()] <<
1279 " TAV " << tav[
item.ctpId()]);
1282 return StatusCode::SUCCESS;
◆ storeMetadata()
StatusCode LVL1CTP::CTPSimulation::storeMetadata |
( |
| ) |
|
|
private |
Definition at line 1290 of file CTPSimulation.cxx.
1291 std::vector<std::string> storedPaths;
1298 std::scoped_lock<std::mutex> metadataLock(s_metadataMutex);
1299 for (
const auto &
path : storedPaths) {
1300 size_t pos =
path.find_last_of(
'/');
1301 auto splitPath = std::make_pair(
path.substr(0,
pos),
path.substr(
pos + 1));
1302 std::string treePath = splitPath.first +
"/metadata";
1304 char triggerData[] =
"<none>";
1305 const std::string mergeDataStr =
"<default>";
1306 std::vector<char> mergeData{mergeDataStr.begin(), mergeDataStr.end()};
1307 mergeData.push_back(
'\0');
1310 auto tree = std::make_unique<TTree>(
"metadata",
"Monitoring Metadata");
1311 tree->SetDirectory(
nullptr);
1312 tree->Branch(
"Name", &(splitPath.second[0]),
"Name/C");
1313 tree->Branch(
"Interval", &(
interval[0]),
"Interval/C");
1314 tree->Branch(
"TriggerChain", triggerData,
"TriggerChain/C");
1315 tree->Branch(
"MergeMethod", mergeData.data(),
"MergeMethod/C");
1320 <<
"Failed to register DQ metadata TTree " << treePath <<
endmsg;
1323 TTree *
tree{
nullptr};
1325 tree->SetBranchAddress(
"Name", &(splitPath.second[0]));
1327 tree->SetBranchAddress(
"TriggerChain", triggerData);
1328 tree->SetBranchAddress(
"MergeMethod", mergeData.data());
1333 <<
"Failed to retrieve DQ metadata TTree " << treePath <<
" which is reported to exist" <<
endmsg;
1337 return StatusCode::SUCCESS;
◆ sysExecute()
StatusCode AthReentrantAlgorithm::sysExecute |
( |
const EventContext & |
ctx | ) |
|
|
overridevirtualinherited |
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 67 of file AthReentrantAlgorithm.cxx.
69 return Gaudi::Algorithm::sysExecute (ctx);
◆ sysInitialize()
StatusCode AthReentrantAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
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 96 of file AthReentrantAlgorithm.cxx.
107 if ( cs.retrieve().isFailure() ) {
109 return StatusCode::SUCCESS;
111 if (cs->regHandle(
this,*
h).isFailure()) {
112 sc = StatusCode::FAILURE;
113 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_decoder
◆ 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
DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects |
|
privateinherited |
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 153 of file AthReentrantAlgorithm.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_jetDecoder
◆ m_muonRun2Format
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_muonRun2Format { this, "MuonMultiplicityRun2Format", false, "Interpret muon multiplicity in Run 2 format (bit 0 unused)" } |
|
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_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::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
A level 1 calorimeter trigger conversion service: returns the Coordinate represented by a RoI word.
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
LVL1::JEPRoIDecoder * m_jetDecoder
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
LVL1::CPRoIDecoder * m_decoder
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
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
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
AthReentrantAlgorithm()
Default constructor:
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
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
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
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)
virtual StatusCode sysInitialize() override
Override sysInitialize.
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
A level 1 calorimeter trigger conversion service: returns the Coordinate represented by a RoI word.
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
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
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
SG::ReadHandleKey< xAOD::JetRoIContainer > m_iKeyGFexJets
SG::ReadHandleKey< LVL1::FrontPanelCTP > m_iKeyTopo
ATHRNG::RNGWrapper m_RNGEngines