ATLAS Offline Software
Loading...
Searching...
No Matches
EgammaMonitoring Class Reference

#include <EgammaMonitoring.h>

Inheritance diagram for EgammaMonitoring:

Public Member Functions

 EgammaMonitoring (const std::string &name, ISvcLocator *pSvcLocator)
 ~EgammaMonitoring ()
virtual StatusCode initialize ()
virtual StatusCode execute (const EventContext &ctx)
 Execute method.
virtual StatusCode finalize ()
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
bool filterPassed (const EventContext &ctx) const
void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
const EventContext & getContext () const
 Deprecated methods (use the ones with EventContext).
bool filterPassed () const
void setFilterPassed (bool state) const

Public Attributes

SmartIF< ITHistSvc > rootHistSvc
 Tools and services ///.
std::unique_ptr< egammaMonitoring::ClusterHistogramsclusterAll
std::unique_ptr< egammaMonitoring::ClusterHistogramscluster10GeV
std::unique_ptr< egammaMonitoring::ClusterHistogramsclusterPromptAll
std::unique_ptr< egammaMonitoring::ClusterHistogramsclusterPrompt10GeV
std::unique_ptr< egammaMonitoring::ShowerShapesHistogramsshowerShapesAll
std::unique_ptr< egammaMonitoring::ShowerShapesHistogramsshowerShapes10GeV
std::unique_ptr< egammaMonitoring::IsolationHistogramsisolationAll
std::unique_ptr< egammaMonitoring::RecoClusterHistogramsm_clusterReco
std::unique_ptr< egammaMonitoring::DiObjectHistogramsm_diElectron
std::unique_ptr< egammaMonitoring::RecoElectronHistogramsrecoElectronAll
std::unique_ptr< egammaMonitoring::TruthElectronHistogramstruthElectronAll
std::unique_ptr< egammaMonitoring::TruthElectronHistogramstruthPromptElectronAll
std::unique_ptr< egammaMonitoring::TruthElectronHistogramstruthElectronRecoElectronAll
std::unique_ptr< egammaMonitoring::TruthElectronHistogramstruthPromptElectronWithTrack
std::unique_ptr< egammaMonitoring::TruthElectronHistogramstruthPromptElectronWithGSFTrack
std::unique_ptr< egammaMonitoring::TruthElectronHistogramstruthPromptElectronWithReco
std::unique_ptr< egammaMonitoring::TruthElectronHistogramstruthPromptElectronWithRecoTrack
std::unique_ptr< egammaMonitoring::TruthElectronHistogramstruthRecoElectronLoose
std::unique_ptr< egammaMonitoring::TruthElectronHistogramstruthRecoElectronMedium
std::unique_ptr< egammaMonitoring::TruthElectronHistogramstruthRecoElectronTight
std::unique_ptr< egammaMonitoring::ClusterHistogramsclusterConvPhoton
std::unique_ptr< egammaMonitoring::ClusterHistogramsclusterConvPhotonSi
std::unique_ptr< egammaMonitoring::ClusterHistogramsclusterConvPhotonSiSi
std::unique_ptr< egammaMonitoring::ClusterHistogramsclusterConvPhotonTRT
std::unique_ptr< egammaMonitoring::ClusterHistogramsclusterConvPhotonTRTTRT
std::unique_ptr< egammaMonitoring::ClusterHistogramsclusterConvPhotonSiTRT
std::unique_ptr< egammaMonitoring::ClusterHistogramsclusterUnconvPhoton
std::unique_ptr< egammaMonitoring::RecoPhotonHistogramsrecoPhotonAll
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonAll
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonAllUnconv
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonAllConv
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonAllLateConv
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonRecoPhoton
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonRecoPhotonOrElectron
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonConvPhoton
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonConvRecoConv
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonConvRecoConv1Si
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonConvRecoConv1TRT
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonConvRecoConv2Si
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonConvRecoConv2TRT
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonConvRecoConv2SiTRT
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonConvRecoUnconv
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonUnconvPhoton
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonUnconvRecoConv
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonUnconvRecoConv1Si
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonUnconvRecoConv1TRT
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonUnconvRecoConv2Si
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonUnconvRecoConv2TRT
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonUnconvRecoConv2SiTRT
std::unique_ptr< egammaMonitoring::IHistogramstruthPhotonUnconvRecoUnconv
std::unique_ptr< egammaMonitoring::IHistogramsrecoPhotonUnconvLoose
std::unique_ptr< egammaMonitoring::IHistogramsrecoPhotonUnconvTight
std::unique_ptr< egammaMonitoring::IHistogramsrecoPhotonConvLoose
std::unique_ptr< egammaMonitoring::IHistogramsrecoPhotonConvTight
std::unique_ptr< egammaMonitoring::IHistogramsrecoPhotonUnconvIsoFixedCutTight
std::unique_ptr< egammaMonitoring::IHistogramsrecoPhotonUnconvIsoFixedCutTightCaloOnly
std::unique_ptr< egammaMonitoring::IHistogramsrecoPhotonUnconvIsoFixedCutLoose
std::unique_ptr< egammaMonitoring::IHistogramsrecoPhotonConvIsoFixedCutTight
std::unique_ptr< egammaMonitoring::IHistogramsrecoPhotonConvIsoFixedCutTightCaloOnly
std::unique_ptr< egammaMonitoring::IHistogramsrecoPhotonConvIsoFixedCutLoose
std::map< std::string, std::unique_ptr< egammaMonitoring::TrackHistograms > > mapTrkHistograms

Protected Member Functions

virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode ZeeSelection (float mu, const EventContext &ctx)
StatusCode ZeePostProc ()
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Static Private Member Functions

static bool matchedToElectron (const xAOD::TrackParticle &tp)
static bool matchedToPion (const xAOD::TrackParticle &tp)
static bool notMatchedToTruth (const xAOD::TrackParticle &tp)

Private Attributes

Gaudi::Property< std::string > m_sampleType { this, "sampleType", "Unknown", "electron or gamma" }
 Sample name ///.
Gaudi::Property< bool > m_hasTRT { this, "hasTRT", true, "is there a TRT in the ID" }
 is it run 3 or run 4 and later ?
ToolHandle< IAsgElectronLikelihoodToolm_Loose_Ele { this, "Loose_Ele", "", "" }
 Selector tools.
ToolHandle< IAsgElectronLikelihoodToolm_Medium_Ele { this, "Medium_Ele", "", "" }
ToolHandle< IAsgElectronLikelihoodToolm_Tight_Ele { this, "Tight_Ele", "", "" }
ToolHandle< IAsgElectronLikelihoodToolm_Loose_FwdEle { this, "Loose_FwdEle", "", "" }
ToolHandle< IAsgElectronLikelihoodToolm_Medium_FwdEle { this, "Medium_FwdEle", "", "" }
ToolHandle< IAsgElectronLikelihoodToolm_Tight_FwdEle { this, "Tight_FwdEle", "", "" }
ToolHandle< IAsgPhotonIsEMSelectorm_Loose_Photon { this, "Loose_Photon", "", "" }
ToolHandle< IAsgPhotonIsEMSelectorm_Tight_Photon { this, "Tight_Photon", "", "" }
ToolHandle< CP::IIsolationSelectionToolm_IsoFixedCutTight { this, "IsoFixedCutTight", "", "" }
ToolHandle< CP::IIsolationSelectionToolm_IsoFixedCutTightCaloOnly { this, "IsoTightCaloOnly", "", "" }
ToolHandle< CP::IIsolationSelectionToolm_IsoFixedCutLoose { this, "IsoFixedCutLoose", "", "" }
ToolHandle< IMCTruthClassifierm_mcTruthClassifier { this, "MCTruthClassifier", "", "" }
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey { this, "EventInfoKey", "EventInfo", "" }
SG::ReadHandleKey< xAOD::TruthParticleContainerm_egTruthParticlesKey { this, "egammaTruthParticlesKey", "", "" }
SG::ReadHandleKey< xAOD::TruthParticleContainerm_truthParticlesKey { this, "truthParticlesKey", "", "" }
SG::ReadHandleKey< xAOD::ElectronContainerm_ElectronsKey { this, "ElectronsKey", "", "" }
SG::ReadHandleKey< xAOD::ElectronContainerm_FwdElectronsKey { this, "FwdElectronsKey", "", "" }
SG::ReadHandleKey< xAOD::PhotonContainerm_PhotonsKey { this, "PhotonsKey", "", "" }
SG::ReadHandleKey< xAOD::TrackParticleContainerm_InDetTrackParticlesKey { this, "InDetTrackParticlesKey", "InDetTrackParticles", "" }
SG::ReadHandleKey< xAOD::TrackParticleContainerm_GSFTrackParticlesKey { this, "GSFTrackParticlesKey", "", "" }
int m_CenFwdOverlap [2] = { 0, 0 }
TH1D * m_dR1 {}
TH1D * m_dR2 {}
DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 49 of file EgammaMonitoring.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ EgammaMonitoring()

EgammaMonitoring::EgammaMonitoring ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 23 of file EgammaMonitoring.cxx.

25 : AthAlgorithm(name, pSvcLocator) {}
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:

◆ ~EgammaMonitoring()

EgammaMonitoring::~EgammaMonitoring ( )
inline

Definition at line 148 of file EgammaMonitoring.h.

148{};

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode EgammaMonitoring::execute ( const EventContext & ctx)
virtual

Execute method.

Provides access to the EventContext if needed but is non-const as opposed to AthReentrantAlgorithm.

Implements AthAlgorithm.

Definition at line 523 of file EgammaMonitoring.cxx.

523 {
524
525 // Retrieve things from the event store
526 SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfoKey, ctx);
527 const float mu = eventInfo->averageInteractionsPerCrossing();
528
529 // Retrieve indet track particles
530 SG::ReadHandle<xAOD::TrackParticleContainer> InDetTPs(
532
533 if ("dataZ" == m_sampleType) {
534 return this->ZeeSelection(mu, ctx);
535 }
536
537 // Retrieve egamma truth particles
538 SG::ReadHandle<xAOD::TruthParticleContainer> egTruthParticles(
540
541 // Retrieve truth particles
542 SG::ReadHandle<xAOD::TruthParticleContainer> truthParticles(
544
545 if ("electron" == m_sampleType) {
546
547 SG::ReadHandle<xAOD::ElectronContainer> RecoEl(m_ElectronsKey, ctx);
548 SG::ReadHandle<xAOD::TrackParticleContainer> GSFTracks(
550
551 ATH_MSG_DEBUG("------------ Truth Egamma Container ---------------");
552 for (const auto *egtruth : *egTruthParticles) {
553
554 if (!egtruth)
555 continue;
556
557 const xAOD::Electron *electron =
559
560 if (!electron)
561 continue;
562
563 clusterPromptAll->fill(*electron, mu);
564 if (egtruth->pt() > 10 * Gaudi::Units::GeV) {
565 clusterPrompt10GeV->fill(*electron, mu);
566 }
567 }
568
569 ATH_MSG_DEBUG("------------ Truth Particles Container ---------------");
570 unsigned int promptElectronTruthIndex =
571 std::numeric_limits<unsigned int>::max();
572 for (const auto *truth : *truthParticles) {
573
574 if (!truth) continue;
575 if (std::abs(truth->pdgId()) != 11) continue;
576
577 auto res = m_mcTruthClassifier->particleTruthClassifier(truth);
580
581 if (msgLvl(MSG::DEBUG)) {
582
583 bool haspVtx = truth->hasProdVtx();
584 double rProd = -1;
585 if (haspVtx) {
586 const xAOD::TruthVertex *pvtx = truth->prodVtx();
587 rProd = pvtx->perp();
588 }
589 bool hasdVtx = truth->hasDecayVtx();
590 double rDec = -1;
591 if (hasdVtx) {
592 const xAOD::TruthVertex *dvtx = truth->decayVtx();
593 rDec = dvtx->perp();
594 }
595
596 ATH_MSG_DEBUG(" ******** Truth electron found: "
597 << truth << " TO " << TO << " TT " << TT
598 << " Rprod = " << rProd << " Rdec = " << rDec
599 << " eventNumber " << eventInfo->eventNumber());
600 }
601
602 // Check if it is the prompt electron
605 MC::isGenStable(truth)) {
606 truthPromptElectronAll->fill(truth);
607 promptElectronTruthIndex = truth->index();
608 }
609
610 // Check that it is not from geant4 (but electron from photon conversion
611 // are kept)
613 truthElectronAll->fill(truth);
614 }
615
616 ATH_MSG_DEBUG("------------ InDetTracks ---------------");
617
618 for (const auto *tp : *InDetTPs) {
619
620 if (!tp)
621 continue;
622
623 uint8_t nPi = 0;
624 uint8_t nSCT = 0;
625
626 tp->summaryValue(nPi, xAOD::numberOfPixelHits);
627 tp->summaryValue(nSCT, xAOD::numberOfSCTHits);
628
629 if ((nPi + nSCT) < 7) continue;
630
632
633 if (!truth || std::abs(truth->pdgId()) != 11) continue;
634
635 auto res = m_mcTruthClassifier->particleTruthClassifier(truth);
640 truth->index() == promptElectronTruthIndex) {
641
642 // we found the track from the prompt electron
643 // let's count it
644 truthPromptElectronWithTrack->fill(truth);
645 break;
646
647 } else {
648 const xAOD::TruthParticle *firstElTruth =
650 if (!firstElTruth)
651 continue;
652 // this is not a prompt electron, we need to check the parents
653 // but we need to make sure that we double count if already found the
654 // track foundPromptElectron will check that
655
656 if (firstElTruth->index() == promptElectronTruthIndex) {
657 truthPromptElectronWithTrack->fill(firstElTruth);
658 break;
659 }
660 }
661 }
662
663 ATH_MSG_DEBUG("------------ GSFTracks ---------------");
664 for (const auto *gsf : *GSFTracks) {
665
666 if (!gsf) continue;
667
669
670 if (!truth) continue;
671
672 uint8_t nPi = 0;
673 uint8_t nSCT = 0;
674
675 gsf->summaryValue(nPi, xAOD::numberOfPixelHits);
676 gsf->summaryValue(nSCT, xAOD::numberOfSCTHits);
677
678 if ((nPi + nSCT) < 7) continue;
679
680 auto res = m_mcTruthClassifier->particleTruthClassifier(truth);
685 truth->index() == promptElectronTruthIndex) {
686
687 // we found the track from the prompt electron
688 // let's count it
690 break;
691 } else {
692 const xAOD::TruthParticle *firstElTruth =
694 if (!firstElTruth)
695 continue;
696 ATH_MSG_DEBUG("********----- Getting Mother-----********");
697 ATH_MSG_DEBUG(" STATUS " << firstElTruth << " index "
698 << firstElTruth->index());
699 // this is not a prompt electron, we need to check the parents
700 // but we need to make sure that we double count if already found the
701 // track foundPromptElectron will check that
702 if (firstElTruth->index() == promptElectronTruthIndex) {
703 truthPromptElectronWithGSFTrack->fill(firstElTruth);
704 break;
705 }
706 }
707 }
708
709 ATH_MSG_DEBUG("------------ Reco central electrons ---------------");
710 bool foundPromptElectron = false;
711
712 for (const auto *elrec : *RecoEl) {
713
714 if (!elrec) continue;
715
716 bool toFill = false;
717
718 clusterAll->fill(*elrec, mu);
719 recoElectronAll->fill(*elrec);
720 showerShapesAll->fill(*elrec);
721 isolationAll->fill(*elrec);
722 if (elrec->pt() > 10 * Gaudi::Units::GeV) {
723 cluster10GeV->fill(*elrec, mu);
724 showerShapes10GeV->fill(*elrec);
725 }
726
727 const xAOD::TruthParticle *truth =
729 if (!truth)
730 continue;
731 truthElectronRecoElectronAll->fill(truth, elrec);
732 if (std::abs(truth->pdgId()) != 11 || foundPromptElectron)
733 continue;
734 const xAOD::TruthParticle *elTruth(nullptr);
735 auto res = m_mcTruthClassifier->particleTruthClassifier(truth);
740 truth->index() == promptElectronTruthIndex) {
741 toFill = true;
742 elTruth = truth;
743 } else {
745 if (!firstElTruth) continue;
746 // this is not a prompt electron, we need to check the parents
747 // but we need to make sure that we double count if already found the
748 // track foundPromptElectron will check that
749 if (firstElTruth->index() == promptElectronTruthIndex) {
750 toFill = true;
751 elTruth = firstElTruth;
752 }
753 }
754 if (toFill) {
755 foundPromptElectron = true;
756 truthPromptElectronWithReco->fill(elTruth, elrec);
757 truthPromptElectronWithRecoTrack->fill(elTruth, elrec); // yes the same. This is different for fwd
758 if (m_Loose_Ele->accept(elrec)) truthRecoElectronLoose->fill(elTruth, elrec);
759 if (m_Medium_Ele->accept(elrec)) truthRecoElectronMedium->fill(elTruth, elrec);
760 if (m_Tight_Ele->accept(elrec)) truthRecoElectronTight->fill(elTruth, elrec);
761 }
762 } // RecoEl Loop
763
764 if (!m_FwdElectronsKey.empty()) {
765 SG::ReadHandle<xAOD::ElectronContainer> RecoFwdEl(m_FwdElectronsKey, ctx);
766 for (const auto *el : *RecoFwdEl) {
767 // This would be very weird ??
768 if (!el) continue;
769 clusterAll->fill(*el, mu);
770 recoElectronAll->fill(*el);
771 showerShapesAll->fill(*el);
772 if (el->pt() > 10 * Gaudi::Units::GeV) {
773 cluster10GeV->fill(*el, mu);
774 showerShapes10GeV->fill(*el);
775 }
776 bool toFill = false;
777
778 const xAOD::TruthParticle *truth =
780
781 if (!truth)
782 continue;
783 // truthElectronRecoFwdElectronAll->fill(truth, elrec); // to be done
784
785 // if the prompt electron is not too far from the reco candidate, which
786 // might be matched to a photon use this prompt as the matched particle
787 // instead
788 if (std::abs(truth->pdgId()) != 11 &&
789 promptElectronTruthIndex < truthParticles->size()) {
790 const xAOD::TruthParticle *vtruth = truthParticles->at(promptElectronTruthIndex);
791 double dR1 = vtruth->p4().DeltaR(el->caloCluster()->p4());
792 double dR2 = truth->p4().DeltaR(el->caloCluster()->p4());
793 m_dR1->Fill(dR1);
794 m_dR2->Fill(dR2);
795 if (dR1 < 0.05) // threshold to optimize
796 truth = vtruth;
797 }
798
799 if (std::abs(truth->pdgId()) != 11) continue;
800 const xAOD::TruthParticle *elTruth(nullptr);
801 auto res = m_mcTruthClassifier->particleTruthClassifier(truth);
804 truth->index() == promptElectronTruthIndex) {
805 toFill = true;
806 elTruth = truth;
807 } else {
808 const xAOD::TruthParticle *firstElTruth =
810 if (!firstElTruth) continue;
811 if (firstElTruth->index() == promptElectronTruthIndex) {
812 toFill = true;
813 elTruth = firstElTruth;
814 }
815 }
816 if (toFill) {
817 if (foundPromptElectron) {
818 ATH_MSG_DEBUG("A fwd electron also reconstructed as central "
819 "true eta = "
820 << elTruth->eta()
821 << " event = " << eventInfo->eventNumber());
822 m_CenFwdOverlap[0]++;
823 if (el->nTrackParticles() > 0)
824 m_CenFwdOverlap[1]++;
825 } else {
826 foundPromptElectron = true;
827 truthPromptElectronWithReco->fill(elTruth, el);
828 if (el->nTrackParticles() > 0)
829 truthPromptElectronWithRecoTrack->fill(elTruth, el);
830 if (m_Loose_FwdEle->accept(el))
831 truthRecoElectronLoose->fill(elTruth, el);
832 if (m_Medium_FwdEle->accept(el))
833 truthRecoElectronMedium->fill(elTruth, el);
834 if (m_Tight_FwdEle->accept(el))
835 truthRecoElectronTight->fill(elTruth, el);
836 }
837 }
838 } // loop on fwdEl
839 }
840
841 } // if electron
842
843 if ("gamma" == m_sampleType) {
844
845 ATH_MSG_DEBUG("------------ Photons ---------------");
846 SG::ReadHandle<xAOD::PhotonContainer> RecoPh(m_PhotonsKey, ctx);
847
848 for (const auto *phrec : *RecoPh) {
849
850 if (!phrec)
851 continue;
852
853 recoPhotonAll->fill(*phrec);
854 isolationAll->fill(*phrec);
855 showerShapesAll->fill(*phrec);
856 clusterAll->fill(*phrec, mu);
857 if (phrec->pt() > 10 * Gaudi::Units::GeV) {
858 cluster10GeV->fill(*phrec, mu);
859 showerShapes10GeV->fill(*phrec);
860 }
861
862 } // RecoPh Loop
863
864 for (const auto *egtruth : *egTruthParticles) {
865
866 if (!egtruth)
867 continue;
868
869 truthPhotonAll->fill(*egtruth, mu);
870
871 bool isTrueConv = xAOD::EgammaHelpers::isTrueConvertedPhoton(egtruth);
872 bool isTrueLateConv =
874 !isTrueConv;
875 const xAOD::Photon *photon = xAOD::EgammaHelpers::getRecoPhoton(egtruth);
876 const xAOD::Electron *electron =
877 xAOD::EgammaHelpers::getRecoElectron(egtruth);
878
879 if (isTrueConv)
880 truthPhotonAllConv->fill(*egtruth, mu);
881 if (isTrueLateConv)
882 truthPhotonAllLateConv->fill(*egtruth, mu);
883 if (!isTrueConv && !isTrueLateConv)
884 truthPhotonAllUnconv->fill(*egtruth, mu);
885
886 if (photon || electron)
888
889 if (!photon)
890 continue;
891
892 truthPhotonRecoPhoton->fill(*egtruth, mu);
893 clusterPromptAll->fill(*photon, mu);
894 if (egtruth->pt() > 10 * Gaudi::Units::GeV) {
895 clusterPrompt10GeV->fill(*photon, mu);
896 }
897
898 bool isRecoConv = xAOD::EgammaHelpers::isConvertedPhoton(photon);
901
902 if (isTrueConv) {
903
904 truthPhotonConvPhoton->fill(*egtruth, mu);
905
906 if (isRecoConv) {
907
908 truthPhotonConvRecoConv->fill(*egtruth, mu);
909
910 clusterConvPhoton->fill(*photon, mu);
911
912 if (convType == xAOD::EgammaParameters::singleSi) {
913 truthPhotonConvRecoConv1Si->fill(*egtruth, mu);
914 clusterConvPhotonSi->fill(*photon, mu);
915 } else if (convType == xAOD::EgammaParameters::singleTRT) {
916 truthPhotonConvRecoConv1TRT->fill(*egtruth, mu);
917 clusterConvPhotonTRT->fill(*photon, mu);
918 } else if (convType == xAOD::EgammaParameters::doubleSi) {
919 truthPhotonConvRecoConv2Si->fill(*egtruth, mu);
920 clusterConvPhotonSiSi->fill(*photon, mu);
921 } else if (convType == xAOD::EgammaParameters::doubleTRT) {
922 truthPhotonConvRecoConv2TRT->fill(*egtruth, mu);
923 clusterConvPhotonTRTTRT->fill(*photon, mu);
924 } else if (convType == xAOD::EgammaParameters::doubleSiTRT) {
925 truthPhotonConvRecoConv2SiTRT->fill(*egtruth, mu);
926 clusterConvPhotonSiTRT->fill(*photon, mu);
927 }
928
929 if (m_IsoFixedCutTight->accept(*photon))
930 recoPhotonConvIsoFixedCutTight->fill(*egtruth, mu);
931 if (m_IsoFixedCutTightCaloOnly->accept(*photon))
932 recoPhotonConvIsoFixedCutTightCaloOnly->fill(*egtruth, mu);
933 if (m_IsoFixedCutLoose->accept(*photon))
934 recoPhotonConvIsoFixedCutLoose->fill(*egtruth, mu);
935 if (m_Loose_Photon->accept(photon))
936 recoPhotonConvLoose->fill(*egtruth, mu);
937 if (m_Tight_Photon->accept(photon))
938 recoPhotonConvTight->fill(*egtruth, mu);
939 } // isRecoConv
940 else {
941 truthPhotonConvRecoUnconv->fill(*egtruth, mu);
942 clusterUnconvPhoton->fill(*photon, mu);
943 }
944
945 } // isTrueConv
946 // else if (!isTrueLateConv) {
947 else {
948
949 truthPhotonUnconvPhoton->fill(*egtruth, mu);
950
951 if (isRecoConv) {
952 truthPhotonUnconvRecoConv->fill(*egtruth, mu);
953
954 if (convType == xAOD::EgammaParameters::singleSi) {
955 truthPhotonUnconvRecoConv1Si->fill(*egtruth, mu);
956 clusterConvPhotonSi->fill(*photon, mu);
957 } else if (convType == xAOD::EgammaParameters::singleTRT) {
958 truthPhotonUnconvRecoConv1TRT->fill(*egtruth, mu);
959 clusterConvPhotonTRT->fill(*photon, mu);
960 } else if (convType == xAOD::EgammaParameters::doubleSi) {
961 truthPhotonUnconvRecoConv2Si->fill(*egtruth, mu);
962 clusterConvPhotonSiSi->fill(*photon, mu);
963 } else if (convType == xAOD::EgammaParameters::doubleTRT) {
964 truthPhotonUnconvRecoConv2TRT->fill(*egtruth, mu);
965 clusterConvPhotonTRTTRT->fill(*photon, mu);
966 } else if (convType == xAOD::EgammaParameters::doubleSiTRT) {
967 truthPhotonUnconvRecoConv2SiTRT->fill(*egtruth, mu);
968 clusterConvPhotonSiTRT->fill(*photon, mu);
969 }
970 } else
971 truthPhotonUnconvRecoUnconv->fill(*egtruth, mu);
973
974 if (m_IsoFixedCutTight->accept(*photon))
975 recoPhotonUnconvIsoFixedCutTight->fill(*egtruth, mu);
976 if (m_IsoFixedCutTightCaloOnly->accept(*photon))
978 if (m_IsoFixedCutLoose->accept(*photon))
979 recoPhotonUnconvIsoFixedCutLoose->fill(*egtruth, mu);
980 if (m_Loose_Photon->accept(photon))
981 recoPhotonUnconvLoose->fill(*egtruth, mu);
982 if (m_Tight_Photon->accept(photon))
983 recoPhotonUnconvTight->fill(*egtruth, mu);
984 } // !isTrueLateConv
985 } // egtruth Loop
986
987 // loop over InDetTrackParticles
988 for (const auto *tp : *InDetTPs) {
989
990 mapTrkHistograms["InDetTracks"]->fill(*tp, mu);
991 if (matchedToElectron(*tp))
992 mapTrkHistograms["InDetTracksMatchElectron"]->fill(*tp, mu);
993 else {
994 mapTrkHistograms["InDetTracksNotElectron"]->fill(*tp, mu);
995 if (matchedToPion(*tp))
996 mapTrkHistograms["InDetTracksMatchPion"]->fill(*tp, mu);
997 else if (notMatchedToTruth(*tp))
998 mapTrkHistograms["InDetTracksNotMatched"]->fill(*tp, mu);
999 }
1000 if (tp->pt() > 3000.) {
1001 mapTrkHistograms["InDetTrackshighpT"]->fill(*tp, mu);
1002 if (matchedToElectron(*tp)) {
1003 mapTrkHistograms["InDetTracksMatchElectronhighpT"]->fill(*tp, mu);
1004 } else {
1005 mapTrkHistograms["InDetTracksNotElectronhighpT"]->fill(*tp, mu);
1006 if (matchedToPion(*tp)) {
1007 mapTrkHistograms["InDetTracksMatchPionhighpT"]->fill(*tp, mu);
1008 } else if (notMatchedToTruth(*tp)) {
1009 mapTrkHistograms["InDetTracksNotMatchedhighpT"]->fill(*tp, mu);
1010 }
1011 }
1012 }
1013
1014 if (m_hasTRT &&
1015 xAOD::EgammaHelpers::numberOfSiHits(tp) == 0) { // TRTSA tracks
1016 mapTrkHistograms["InDetTracksTRT"]->fill(*tp, mu);
1017 if (matchedToElectron(*tp))
1018 mapTrkHistograms["InDetTracksTRTMatchElectron"]->fill(*tp, mu);
1019 else {
1020 mapTrkHistograms["InDetTracksTRTNotElectron"]->fill(*tp, mu);
1021 if (matchedToPion(*tp))
1022 mapTrkHistograms["InDetTracksTRTMatchPion"]->fill(*tp, mu);
1023 else if (notMatchedToTruth(*tp))
1024 mapTrkHistograms["InDetTracksTRTNotMatched"]->fill(*tp, mu);
1025 }
1026 if (tp->pt() > 3000.) {
1027 mapTrkHistograms["InDetTracksTRThighpT"]->fill(*tp, mu);
1028 if (matchedToElectron(*tp))
1029 mapTrkHistograms["InDetTracksTRTMatchElectronhighpT"]->fill(*tp,
1030 mu);
1031 else {
1032 mapTrkHistograms["InDetTracksTRTNotElectronhighpT"]->fill(*tp, mu);
1033 if (matchedToPion(*tp))
1034 mapTrkHistograms["InDetTracksTRTMatchPionhighpT"]->fill(*tp, mu);
1035 else if (notMatchedToTruth(*tp))
1036 mapTrkHistograms["InDetTracksTRTNotMatchedhighpT"]->fill(*tp, mu);
1037 }
1038 }
1039 }
1040
1041 } // loop over InDetTPs
1042
1043 } // if gamma
1044
1045 return StatusCode::SUCCESS;
1046}
#define ATH_MSG_DEBUG(x)
std::pair< std::vector< unsigned int >, bool > res
if(pathvar)
size_t size() const
Number of registered mappings.
bool msgLvl(const MSG::Level lvl) const
SG::ReadHandleKey< xAOD::ElectronContainer > m_ElectronsKey
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonConvRecoConv1Si
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonUnconvRecoConv2SiTRT
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonConvRecoConv
std::map< std::string, std::unique_ptr< egammaMonitoring::TrackHistograms > > mapTrkHistograms
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonRecoPhotonOrElectron
Gaudi::Property< bool > m_hasTRT
is it run 3 or run 4 and later ?
std::unique_ptr< egammaMonitoring::RecoElectronHistograms > recoElectronAll
ToolHandle< CP::IIsolationSelectionTool > m_IsoFixedCutTightCaloOnly
std::unique_ptr< egammaMonitoring::IHistograms > recoPhotonUnconvIsoFixedCutTightCaloOnly
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonAllConv
std::unique_ptr< egammaMonitoring::IsolationHistograms > isolationAll
ToolHandle< IAsgPhotonIsEMSelector > m_Tight_Photon
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonConvPhoton
ToolHandle< IAsgElectronLikelihoodTool > m_Tight_Ele
std::unique_ptr< egammaMonitoring::ClusterHistograms > clusterConvPhotonTRTTRT
std::unique_ptr< egammaMonitoring::ShowerShapesHistograms > showerShapesAll
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_egTruthParticlesKey
static bool notMatchedToTruth(const xAOD::TrackParticle &tp)
std::unique_ptr< egammaMonitoring::IHistograms > recoPhotonUnconvLoose
std::unique_ptr< egammaMonitoring::IHistograms > recoPhotonUnconvTight
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthParticlesKey
std::unique_ptr< egammaMonitoring::ClusterHistograms > clusterConvPhotonSiTRT
ToolHandle< IAsgPhotonIsEMSelector > m_Loose_Photon
StatusCode ZeeSelection(float mu, const EventContext &ctx)
std::unique_ptr< egammaMonitoring::IHistograms > recoPhotonConvLoose
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonConvRecoConv2SiTRT
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonUnconvRecoUnconv
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_GSFTrackParticlesKey
std::unique_ptr< egammaMonitoring::IHistograms > recoPhotonUnconvIsoFixedCutTight
SG::ReadHandleKey< xAOD::ElectronContainer > m_FwdElectronsKey
std::unique_ptr< egammaMonitoring::ClusterHistograms > clusterConvPhotonSiSi
std::unique_ptr< egammaMonitoring::TruthElectronHistograms > truthRecoElectronLoose
static bool matchedToPion(const xAOD::TrackParticle &tp)
ToolHandle< IAsgElectronLikelihoodTool > m_Medium_Ele
std::unique_ptr< egammaMonitoring::TruthElectronHistograms > truthPromptElectronWithGSFTrack
std::unique_ptr< egammaMonitoring::IHistograms > recoPhotonConvIsoFixedCutTightCaloOnly
std::unique_ptr< egammaMonitoring::IHistograms > recoPhotonConvTight
std::unique_ptr< egammaMonitoring::ClusterHistograms > clusterPrompt10GeV
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonConvRecoConv1TRT
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonUnconvPhoton
ToolHandle< IAsgElectronLikelihoodTool > m_Medium_FwdEle
static bool matchedToElectron(const xAOD::TrackParticle &tp)
std::unique_ptr< egammaMonitoring::IHistograms > recoPhotonUnconvIsoFixedCutLoose
std::unique_ptr< egammaMonitoring::RecoPhotonHistograms > recoPhotonAll
std::unique_ptr< egammaMonitoring::TruthElectronHistograms > truthPromptElectronWithRecoTrack
std::unique_ptr< egammaMonitoring::ClusterHistograms > clusterConvPhotonTRT
std::unique_ptr< egammaMonitoring::ShowerShapesHistograms > showerShapes10GeV
std::unique_ptr< egammaMonitoring::TruthElectronHistograms > truthPromptElectronWithTrack
std::unique_ptr< egammaMonitoring::ClusterHistograms > clusterPromptAll
std::unique_ptr< egammaMonitoring::ClusterHistograms > clusterAll
std::unique_ptr< egammaMonitoring::ClusterHistograms > clusterConvPhoton
ToolHandle< IAsgElectronLikelihoodTool > m_Loose_Ele
Selector tools.
ToolHandle< IAsgElectronLikelihoodTool > m_Tight_FwdEle
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonConvRecoConv2Si
std::unique_ptr< egammaMonitoring::IHistograms > recoPhotonConvIsoFixedCutLoose
ToolHandle< CP::IIsolationSelectionTool > m_IsoFixedCutTight
ToolHandle< CP::IIsolationSelectionTool > m_IsoFixedCutLoose
std::unique_ptr< egammaMonitoring::TruthElectronHistograms > truthElectronAll
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonAll
std::unique_ptr< egammaMonitoring::TruthElectronHistograms > truthElectronRecoElectronAll
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
ToolHandle< IMCTruthClassifier > m_mcTruthClassifier
std::unique_ptr< egammaMonitoring::TruthElectronHistograms > truthRecoElectronMedium
SG::ReadHandleKey< xAOD::PhotonContainer > m_PhotonsKey
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonRecoPhoton
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonAllLateConv
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonUnconvRecoConv1Si
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonUnconvRecoConv
std::unique_ptr< egammaMonitoring::ClusterHistograms > clusterUnconvPhoton
std::unique_ptr< egammaMonitoring::TruthElectronHistograms > truthPromptElectronAll
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonUnconvRecoConv2Si
Gaudi::Property< std::string > m_sampleType
Sample name ///.
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_InDetTrackParticlesKey
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonAllUnconv
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonUnconvRecoConv2TRT
std::unique_ptr< egammaMonitoring::IHistograms > recoPhotonConvIsoFixedCutTight
ToolHandle< IAsgElectronLikelihoodTool > m_Loose_FwdEle
std::unique_ptr< egammaMonitoring::ClusterHistograms > cluster10GeV
std::unique_ptr< egammaMonitoring::TruthElectronHistograms > truthPromptElectronWithReco
std::unique_ptr< egammaMonitoring::TruthElectronHistograms > truthRecoElectronTight
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonConvRecoUnconv
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonUnconvRecoConv1TRT
std::unique_ptr< egammaMonitoring::ClusterHistograms > clusterConvPhotonSi
std::unique_ptr< egammaMonitoring::IHistograms > truthPhotonConvRecoConv2TRT
int pdgId() const
PDG ID code.
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
float perp() const
Vertex transverse distance from the beam line.
bool isGenStable(const T &p)
Determine if the particle is stable at the generator (not det-sim) level,.
bool isConvertedPhoton(const xAOD::Egamma *eg, bool excludeTRT=false)
is the object a converted photon
xAOD::EgammaParameters::ConversionType conversionType(const xAOD::Photon *ph)
return the photon conversion type (see EgammaEnums)
bool isTrueConvertedPhoton(const xAOD::Photon *ph, float maxRadius=800.)
is the object matched to a true converted photon with R < maxRadius
const xAOD::TruthParticle * getBkgElectronMother(const xAOD::Electron *el, const bool allTheWayBack=true)
Helper wrapper function for calling the function above extracting the truth from a reco electron.
std::size_t numberOfSiHits(const xAOD::TrackParticle *tp)
return the number of Si hits in the track particle
const xAOD::Electron * getRecoElectron(const xAOD::TruthParticle *)
return the reco electron associated to the given TruthParticle (if any)
@ singleSi
one track only, with Si hits
@ doubleTRT
two tracks, none with Si hits (TRT only)
@ singleTRT
one track only, no Si hits (TRT only)
@ doubleSi
two tracks, both with Si hits
@ doubleSiTRT
two tracks, only one with Si hits
const xAOD::TruthParticle * getTruthParticle(const xAOD::IParticle &p)
Return the truthParticle associated to the given IParticle (if any).
TruthVertex_v1 TruthVertex
Typedef to implementation.
Definition TruthVertex.h:15
TruthParticle_v1 TruthParticle
Typedef to implementation.
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Electron_v1 Electron
Definition of the current "egamma version".
void fill(H5::Group &out_file, size_t iterations)

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

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 & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ filterPassed() [1/2]

bool AthAlgorithm::filterPassed ( ) const
inherited

Definition at line 94 of file AthAlgorithm.cxx.

94 {
95 return filterPassed( Gaudi::Hive::currentContext() );
96}
bool filterPassed() const

◆ filterPassed() [2/2]

bool AthAlgorithm::filterPassed ( const EventContext & ctx) const
inherited

Definition at line 98 of file AthAlgorithm.cxx.

98 {
99 return execState( ctx ).filterPassed();
100}

◆ finalize()

StatusCode EgammaMonitoring::finalize ( )
virtual

Definition at line 1050 of file EgammaMonitoring.cxx.

1050 {
1051
1052 if ("electron" == m_sampleType) {
1053
1054 ATH_MSG_INFO("Number of events with electron reconstructed "
1055 "as both Central and Forward "
1056 << m_CenFwdOverlap[0] << " and with a track for the Forward "
1057 << m_CenFwdOverlap[1]);
1058
1059 egammaMonitoring::EfficiencyPlot trackEfficiency(
1060 "trackingEfficiency", "/MONITORING/trackingEfficiency/", rootHistSvc);
1061 ATH_CHECK(trackEfficiency.divide(truthPromptElectronWithTrack.get(),
1062 truthPromptElectronAll.get()));
1063 egammaMonitoring::EfficiencyPlot GSFEfficiency(
1064 "GSFEfficiency", "/MONITORING/GSFEfficiency/", rootHistSvc);
1065 ATH_CHECK(GSFEfficiency.divide(truthPromptElectronWithGSFTrack.get(),
1067 egammaMonitoring::EfficiencyPlot matchingEfficiency(
1068 "matchingEfficiency", "/MONITORING/matchingEfficiency/", rootHistSvc);
1069 ATH_CHECK(matchingEfficiency.divide(truthPromptElectronWithRecoTrack.get(),
1071 egammaMonitoring::EfficiencyPlot reconstructionEfficiency(
1072 "reconstructionEfficiency", "/MONITORING/reconstructionEfficiency/",
1073 rootHistSvc);
1074 ATH_CHECK(reconstructionEfficiency.divide(truthPromptElectronWithReco.get(),
1075 truthPromptElectronAll.get()));
1076 egammaMonitoring::EfficiencyPlot recoElectronLooseEfficiency(
1077 "recoElectronLooseLHEfficiency",
1078 "/MONITORING/recoElectronLooseLHEfficiency/", rootHistSvc);
1079 ATH_CHECK(recoElectronLooseEfficiency.divide(truthRecoElectronLoose.get(),
1080 truthPromptElectronAll.get()));
1081 egammaMonitoring::EfficiencyPlot recoElectronMediumEfficiency(
1082 "recoElectronMediumLHEfficiency",
1083 "/MONITORING/recoElectronMediumLHEfficiency/", rootHistSvc);
1084 ATH_CHECK(recoElectronMediumEfficiency.divide(
1086 egammaMonitoring::EfficiencyPlot recoElectronTightEfficiency(
1087 "recoElectronTightLHEfficiency",
1088 "/MONITORING/recoElectronTightLHEfficiency/", rootHistSvc);
1089 ATH_CHECK(recoElectronTightEfficiency.divide(truthRecoElectronTight.get(),
1090 truthPromptElectronAll.get()));
1091
1092 }
1093
1094 else if ("gamma" == m_sampleType) {
1095
1096 egammaMonitoring::EfficiencyPlot truthPhotonRecoPhotonEfficiency(
1097 "truthPhotonRecoPhotonEfficiency",
1098 "/MONITORING/truthPhotonRecoPhotonEfficiency/", rootHistSvc);
1099 ATH_CHECK(truthPhotonRecoPhotonEfficiency.divide(
1101 egammaMonitoring::EfficiencyPlot truthPhotonRecoPhotonOrElectronEfficiency(
1102 "truthPhotonRecoPhotonOrElectronEfficiency",
1103 "/MONITORING/truthPhotonRecoPhotonOrElectronEfficiency/", rootHistSvc);
1104 ATH_CHECK(truthPhotonRecoPhotonOrElectronEfficiency.divide(
1106 egammaMonitoring::EfficiencyPlot truthPhotonConvRecoEfficiency(
1107 "truthPhotonConvRecoEfficiency",
1108 "/MONITORING/truthPhotonConvRecoEfficiency/", rootHistSvc);
1109 ATH_CHECK(truthPhotonConvRecoEfficiency.divide(truthPhotonConvPhoton.get(),
1110 truthPhotonAllConv.get()));
1111 egammaMonitoring::EfficiencyPlot truthPhotonUnconvRecoEfficiency(
1112 "truthPhotonUnconvRecoEfficiency",
1113 "/MONITORING/truthPhotonUnconvRecoEfficiency/", rootHistSvc);
1114 ATH_CHECK(truthPhotonUnconvRecoEfficiency.divide(
1116 egammaMonitoring::EfficiencyPlot truthPhotonConvRecoConvEfficiency(
1117 "truthPhotonConvRecoConvEfficiency",
1118 "/MONITORING/truthPhotonConvRecoConvEfficiency/", rootHistSvc);
1119 ATH_CHECK(truthPhotonConvRecoConvEfficiency.divide(
1121 egammaMonitoring::EfficiencyPlot truthPhotonConvRecoConv1SiEfficiency(
1122 "truthPhotonConvRecoConv1SiEfficiency",
1123 "/MONITORING/truthPhotonConvRecoConv1SiEfficiency/", rootHistSvc);
1124 ATH_CHECK(truthPhotonConvRecoConv1SiEfficiency.divide(
1126 egammaMonitoring::EfficiencyPlot truthPhotonConvRecoConv2SiEfficiency(
1127 "truthPhotonConvRecoConv2SiEfficiency",
1128 "/MONITORING/truthPhotonConvRecoConv2SiEfficiency/", rootHistSvc);
1129 ATH_CHECK(truthPhotonConvRecoConv2SiEfficiency.divide(
1131 egammaMonitoring::EfficiencyPlot truthPhotonConvRecoUnconvEfficiency(
1132 "truthPhotonConvRecoUnconvEfficiency",
1133 "/MONITORING/truthPhotonConvRecoUnconvEfficiency/", rootHistSvc);
1134 ATH_CHECK(truthPhotonConvRecoUnconvEfficiency.divide(
1136 egammaMonitoring::EfficiencyPlot truthPhotonUnconvRecoConvEfficiency(
1137 "truthPhotonUnconvRecoConvEfficiency",
1138 "/MONITORING/truthPhotonUnconvRecoConvEfficiency/", rootHistSvc);
1139 ATH_CHECK(truthPhotonUnconvRecoConvEfficiency.divide(
1141 egammaMonitoring::EfficiencyPlot truthPhotonUnconvRecoConv1SiEfficiency(
1142 "truthPhotonUnconvRecoConv1SiEfficiency",
1143 "/MONITORING/truthPhotonUnconvRecoConv1SiEfficiency/", rootHistSvc);
1144 ATH_CHECK(truthPhotonUnconvRecoConv1SiEfficiency.divide(
1146 egammaMonitoring::EfficiencyPlot truthPhotonUnconvRecoConv2SiEfficiency(
1147 "truthPhotonUnconvRecoConv2SiEfficiency",
1148 "/MONITORING/truthPhotonUnconvRecoConv2SiEfficiency/", rootHistSvc);
1149 ATH_CHECK(truthPhotonUnconvRecoConv2SiEfficiency.divide(
1151 egammaMonitoring::EfficiencyPlot truthPhotonUnconvRecoUnconvEfficiency(
1152 "truthPhotonUnconvRecoUnconvEfficiency",
1153 "/MONITORING/truthPhotonUnconvRecoUnconvEfficiency/", rootHistSvc);
1154 ATH_CHECK(truthPhotonUnconvRecoUnconvEfficiency.divide(
1156 egammaMonitoring::EfficiencyPlot truthPhotonRecoConvEfficiency(
1157 "truthPhotonRecoConvEfficiency",
1158 "/MONITORING/truthPhotonRecoConvEfficiency/", rootHistSvc);
1159 ATH_CHECK(truthPhotonRecoConvEfficiency.divide(
1161 egammaMonitoring::EfficiencyPlot truthPhotonRecoUnconvEfficiency(
1162 "truthPhotonRecoUnconvEfficiency",
1163 "/MONITORING/truthPhotonRecoUnconvEfficiency/", rootHistSvc);
1164 ATH_CHECK(truthPhotonRecoUnconvEfficiency.divide(
1166 egammaMonitoring::EfficiencyPlot recoPhotonUnconvIsoFixedCutTightEfficiency(
1167 "recoPhotonUnconvIsoFixedCutTightEfficiency",
1168 "/MONITORING/recoPhotonUnconvIsoFixedCutTightEfficiency/", rootHistSvc);
1169 ATH_CHECK(recoPhotonUnconvIsoFixedCutTightEfficiency.divide(
1172 egammaMonitoring::EfficiencyPlot
1173 recoPhotonUnconvIsoFixedCutTightCaloOnlyEfficiency(
1174 "recoPhotonUnconvIsoFixedCutTightCaloOnlyEfficiency",
1175 "/MONITORING/recoPhotonUnconvIsoFixedCutTightCaloOnlyEfficiency/",
1176 rootHistSvc);
1177 ATH_CHECK(recoPhotonUnconvIsoFixedCutTightCaloOnlyEfficiency.divide(
1180 egammaMonitoring::EfficiencyPlot recoPhotonUnconvIsoFixedCutLooseEfficiency(
1181 "recoPhotonUnconvIsoFixedCutLooseEfficiency",
1182 "/MONITORING/recoPhotonUnconvIsoFixedCutLooseEfficiency/", rootHistSvc);
1183 ATH_CHECK(recoPhotonUnconvIsoFixedCutLooseEfficiency.divide(
1186 egammaMonitoring::EfficiencyPlot recoPhotonConvIsoFixedCutTightEfficiency(
1187 "recoPhotonConvIsoFixedCutTightEfficiency",
1188 "/MONITORING/recoPhotonConvIsoFixedCutTightEfficiency/", rootHistSvc);
1189 ATH_CHECK(recoPhotonConvIsoFixedCutTightEfficiency.divide(
1191 egammaMonitoring::EfficiencyPlot
1192 recoPhotonConvIsoFixedCutTightCaloOnlyEfficiency(
1193 "recoPhotonConvIsoFixedCutTightCaloOnlyEfficiency",
1194 "/MONITORING/recoPhotonConvIsoFixedCutTightCaloOnlyEfficiency/",
1195 rootHistSvc);
1196 ATH_CHECK(recoPhotonConvIsoFixedCutTightCaloOnlyEfficiency.divide(
1199 egammaMonitoring::EfficiencyPlot recoPhotonConvIsoFixedCutLooseEfficiency(
1200 "recoPhotonConvIsoFixedCutLooseEfficiency",
1201 "/MONITORING/recoPhotonConvIsoFixedCutLooseEfficiency/", rootHistSvc);
1202 ATH_CHECK(recoPhotonConvIsoFixedCutLooseEfficiency.divide(
1204 egammaMonitoring::EfficiencyPlot recoPhotonConvLooseEfficiency(
1205 "recoPhotonConvLooseEfficiency",
1206 "/MONITORING/recoPhotonConvLooseEfficiency/", rootHistSvc);
1207 ATH_CHECK(recoPhotonConvLooseEfficiency.divide(
1209 egammaMonitoring::EfficiencyPlot recoPhotonConvTightEfficiency(
1210 "recoPhotonConvTightEfficiency",
1211 "/MONITORING/recoPhotonConvTightEfficiency/", rootHistSvc);
1212 ATH_CHECK(recoPhotonConvTightEfficiency.divide(
1214 egammaMonitoring::EfficiencyPlot recoPhotonUnconvLooseEfficiency(
1215 "recoPhotonUnconvLooseEfficiency",
1216 "/MONITORING/recoPhotonUnconvLooseEfficiency/", rootHistSvc);
1217 ATH_CHECK(recoPhotonUnconvLooseEfficiency.divide(
1219 egammaMonitoring::EfficiencyPlot recoPhotonUnconvTightEfficiency(
1220 "recoPhotonUnconvTightEfficiency",
1221 "/MONITORING/recoPhotonUnconvTightEfficiency/", rootHistSvc);
1222 ATH_CHECK(recoPhotonUnconvTightEfficiency.divide(
1224
1225 egammaMonitoring::WidthPlot truthPhotonRecoPhotonWidth(
1226 "truthPhotonRecoPhotonWidth", "/MONITORING/truthPhotonRecoPhotonWidth/",
1227 rootHistSvc);
1228 ATH_CHECK(truthPhotonRecoPhotonWidth.fill(truthPhotonRecoPhoton.get()));
1229 egammaMonitoring::WidthPlot truthPhotonConvPhotonWidth(
1230 "truthPhotonConvPhotonWidth", "/MONITORING/truthPhotonConvPhotonWidth/",
1231 rootHistSvc);
1232 ATH_CHECK(truthPhotonConvPhotonWidth.fill(truthPhotonConvPhoton.get()));
1233 egammaMonitoring::WidthPlot truthPhotonConvRecoConvWidth(
1234 "truthPhotonConvRecoConvWidth",
1235 "/MONITORING/truthPhotonConvRecoConvWidth/", rootHistSvc);
1236 ATH_CHECK(truthPhotonConvRecoConvWidth.fill(truthPhotonConvRecoConv.get()));
1237 egammaMonitoring::WidthPlot truthPhotonConvRecoConv1SiWidth(
1238 "truthPhotonConvRecoConv1SiWidth",
1239 "/MONITORING/truthPhotonConvRecoConv1SiWidth/", rootHistSvc);
1240 ATH_CHECK(
1241 truthPhotonConvRecoConv1SiWidth.fill(truthPhotonConvRecoConv1Si.get()));
1242 egammaMonitoring::WidthPlot truthPhotonConvRecoConv2SiWidth(
1243 "truthPhotonConvRecoConv2SiWidth",
1244 "/MONITORING/truthPhotonConvRecoConv2SiWidth/", rootHistSvc);
1245 ATH_CHECK(
1246 truthPhotonConvRecoConv2SiWidth.fill(truthPhotonConvRecoConv2Si.get()));
1247 if (m_hasTRT) {
1248 egammaMonitoring::EfficiencyPlot truthPhotonConvRecoConv1TRTEfficiency(
1249 "truthPhotonConvRecoConv1TRTEfficiency",
1250 "/MONITORING/truthPhotonConvRecoConv1TRTEfficiency/", rootHistSvc);
1251 ATH_CHECK(truthPhotonConvRecoConv1TRTEfficiency.divide(
1253 egammaMonitoring::EfficiencyPlot truthPhotonConvRecoConv2TRTEfficiency(
1254 "truthPhotonConvRecoConv2TRTEfficiency",
1255 "/MONITORING/truthPhotonConvRecoConv2TRTEfficiency/", rootHistSvc);
1256 ATH_CHECK(truthPhotonConvRecoConv2TRTEfficiency.divide(
1258 egammaMonitoring::EfficiencyPlot truthPhotonConvRecoConv2SiTRTEfficiency(
1259 "truthPhotonConvRecoConv2SiTRTEfficiency",
1260 "/MONITORING/truthPhotonConvRecoConv2SiTRTEfficiency/", rootHistSvc);
1261 ATH_CHECK(truthPhotonConvRecoConv2SiTRTEfficiency.divide(
1263 egammaMonitoring::EfficiencyPlot truthPhotonUnconvRecoConv1TRTEfficiency(
1264 "truthPhotonUnconvRecoConv1TRTEfficiency",
1265 "/MONITORING/truthPhotonUnconvRecoConv1TRTEfficiency/", rootHistSvc);
1266 ATH_CHECK(truthPhotonUnconvRecoConv1TRTEfficiency.divide(
1268 egammaMonitoring::EfficiencyPlot truthPhotonUnconvRecoConv2TRTEfficiency(
1269 "truthPhotonUnconvRecoConv2TRTEfficiency",
1270 "/MONITORING/truthPhotonUnconvRecoConv2TRTEfficiency/", rootHistSvc);
1271 ATH_CHECK(truthPhotonUnconvRecoConv2TRTEfficiency.divide(
1273 egammaMonitoring::EfficiencyPlot
1274 truthPhotonUnconvRecoConv2SiTRTEfficiency(
1275 "truthPhotonUnconvRecoConv2SiTRTEfficiency",
1276 "/MONITORING/truthPhotonUnconvRecoConv2SiTRTEfficiency/",
1277 rootHistSvc);
1278 ATH_CHECK(truthPhotonUnconvRecoConv2SiTRTEfficiency.divide(
1281 egammaMonitoring::WidthPlot truthPhotonConvRecoConv1TRTWidth(
1282 "truthPhotonConvRecoConv1TRTWidth",
1283 "/MONITORING/truthPhotonConvRecoConv1TRTWidth/", rootHistSvc);
1284 ATH_CHECK(truthPhotonConvRecoConv1TRTWidth.fill(
1286 egammaMonitoring::WidthPlot truthPhotonConvRecoConv2TRTWidth(
1287 "truthPhotonConvRecoConv2TRTWidth",
1288 "/MONITORING/truthPhotonConvRecoConv2TRTWidth/", rootHistSvc);
1289 ATH_CHECK(truthPhotonConvRecoConv2TRTWidth.fill(
1291 egammaMonitoring::WidthPlot truthPhotonConvRecoConv2SiTRTWidth(
1292 "truthPhotonConvRecoConv2SiTRTWidth",
1293 "/MONITORING/truthPhotonConvRecoConv2SiTRTWidth/", rootHistSvc);
1294 ATH_CHECK(truthPhotonConvRecoConv2SiTRTWidth.fill(
1296 }
1297 egammaMonitoring::WidthPlot truthPhotonConvRecoUnconvWidth(
1298 "truthPhotonConvRecoUnconvWidth",
1299 "/MONITORING/truthPhotonConvRecoUnconvWidth/", rootHistSvc);
1300 ATH_CHECK(
1301 truthPhotonConvRecoUnconvWidth.fill(truthPhotonConvRecoUnconv.get()));
1302 egammaMonitoring::WidthPlot truthPhotonUnconvPhotonWidth(
1303 "truthPhotonUnconvPhotonWidth",
1304 "/MONITORING/truthPhotonUnconvPhotonWidth/", rootHistSvc);
1305 ATH_CHECK(truthPhotonUnconvPhotonWidth.fill(truthPhotonUnconvPhoton.get()));
1306 egammaMonitoring::WidthPlot truthPhotonUnconvRecoConvWidth(
1307 "truthPhotonUnconvRecoConvWidth",
1308 "/MONITORING/truthPhotonUnconvRecoConvWidth/", rootHistSvc);
1309 ATH_CHECK(
1310 truthPhotonUnconvRecoConvWidth.fill(truthPhotonUnconvRecoConv.get()));
1311 egammaMonitoring::WidthPlot truthPhotonUnconvRecoUnconvWidth(
1312 "truthPhotonUnconvRecoUnconvWidth",
1313 "/MONITORING/truthPhotonUnconvRecoUnconvWidth/", rootHistSvc);
1314 ATH_CHECK(truthPhotonUnconvRecoUnconvWidth.fill(
1316 } else if ("dataZ" == m_sampleType) {
1318 }
1319
1320 return StatusCode::SUCCESS;
1321}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
SmartIF< ITHistSvc > rootHistSvc
Tools and services ///.

◆ getContext()

const EventContext & AthAlgorithm::getContext ( ) const
inherited

Deprecated methods (use the ones with EventContext).

Definition at line 90 of file AthAlgorithm.cxx.

90 {
91 return Gaudi::Hive::currentContext();
92}

◆ initialize()

StatusCode EgammaMonitoring::initialize ( )
virtual

Definition at line 29 of file EgammaMonitoring.cxx.

29 {
30 ATH_MSG_INFO("******************** Running over " << m_sampleType
31 << " ******************");
32 ATH_CHECK( (rootHistSvc = service("THistSvc")).isValid() );
33
34 showerShapesAll = std::make_unique<egammaMonitoring::ShowerShapesHistograms>(
35 "showerShapesAll", "Shower Shapes ", "/MONITORING/showerShapesAll/",
37
39 std::make_unique<egammaMonitoring::ShowerShapesHistograms>(
40 "showerShapes10GeV", "Shower Shapes - 10 GeV",
41 "/MONITORING/showerShapes10GeV/", rootHistSvc);
42
43 isolationAll = std::make_unique<egammaMonitoring::IsolationHistograms>(
44 "isolationAll", "Isolation ", "/MONITORING/isolationAll/", rootHistSvc);
45
46 ATH_CHECK(showerShapesAll->initializePlots());
47 ATH_CHECK(showerShapes10GeV->initializePlots());
48 ATH_CHECK(isolationAll->initializePlots(m_sampleType == "electron"));
49
50 if ("dataZ" != m_sampleType) {
51 clusterAll = std::make_unique<egammaMonitoring::ClusterHistograms>(
52 "clustersAll", "Clusters", "/MONITORING/clusterAll/", rootHistSvc);
53
54 cluster10GeV = std::make_unique<egammaMonitoring::ClusterHistograms>(
55 "clusters10GeV", "Clusters - 10 GeV", "/MONITORING/cluster10GeV/",
57
58 clusterPromptAll = std::make_unique<egammaMonitoring::ClusterHistograms>(
59 "clustersPromptAll", "Clusters from Prompt",
60 "/MONITORING/clusterPromptAll/", rootHistSvc);
61
62 clusterPrompt10GeV = std::make_unique<egammaMonitoring::ClusterHistograms>(
63 "clustersPrompt10GeV", "Clusters from Prompt - 10 GeV",
64 "/MONITORING/clusterPrompt10GeV/", rootHistSvc);
65
66 ATH_CHECK(clusterAll->initializePlots());
67 ATH_CHECK(cluster10GeV->initializePlots());
68 ATH_CHECK(clusterPromptAll->initializePlots());
69 ATH_CHECK(clusterPrompt10GeV->initializePlots());
70 } else {
71 m_clusterReco = std::make_unique<egammaMonitoring::RecoClusterHistograms>(
72 "clustersReco", "Clusters from Z->ee candidates in data",
73 "/MONITORING/recoCluster/", rootHistSvc);
75 std::make_unique<egammaMonitoring::RecoElectronHistograms>(
76 "recoElectronAll", "Reco electrons from Z->ee candidates in data",
77 "/MONITORING/recoZElectron/", rootHistSvc);
78 m_diElectron = std::make_unique<egammaMonitoring::DiObjectHistograms>(
79 "diElectrons", "Z->ee candidates in data", "/MONITORING/diElectrons/",
81 ATH_CHECK(m_clusterReco->initializePlots());
82 recoElectronAll->isData();
83 ATH_CHECK(recoElectronAll->initializePlots());
84 ATH_CHECK(m_diElectron->initializePlots());
85 }
86
87 if ("electron" == m_sampleType) {
88
90 std::make_unique<egammaMonitoring::RecoElectronHistograms>(
91 "recoElectronAll", "Electrons Reco Electron",
92 "/MONITORING/recoElectronAll/", rootHistSvc);
93
95 std::make_unique<egammaMonitoring::TruthElectronHistograms>(
96 "truthElectronAll", "All Truth Electrons",
97 "/MONITORING/truthElectronAll/", rootHistSvc);
98
100 std::make_unique<egammaMonitoring::TruthElectronHistograms>(
101 "truthPromptElectronAll", "All Truth Prompt Electrons",
102 "/MONITORING/truthPromptElectronAll/", rootHistSvc);
103
105 std::make_unique<egammaMonitoring::TruthElectronHistograms>(
106 "truthElectronRecoElectronAll", "Truth Electrons Reco Electron",
107 "/MONITORING/truthElectronRecoElectronAll/", rootHistSvc);
108
110 std::make_unique<egammaMonitoring::TruthElectronHistograms>(
111 "truthPromptElectronWithTrack", "Truth Prompt Electrons With Track",
112 "/MONITORING/truthPromptElectronWithTrack/", rootHistSvc);
113
115 std::make_unique<egammaMonitoring::TruthElectronHistograms>(
116 "truthPromptElectronWithGSFTrack",
117 "Truth Prompt Electrons With GSFTrack",
118 "/MONITORING/truthPromptElectronWithGSFTrack/", rootHistSvc);
119
121 std::make_unique<egammaMonitoring::TruthElectronHistograms>(
122 "truthPromptElectronWithReco",
123 "Truth Prompt Electrons With GSFTrack or just with a fwd cluster",
124 "/MONITORING/truthPromptElectronWithReco/", rootHistSvc);
125
127 std::make_unique<egammaMonitoring::TruthElectronHistograms>(
128 "truthPromptElectronWithRecoTrack",
129 "Truth Prompt Electrons With GSFTrack",
130 "/MONITORING/truthPromptElectronWithRecoTrack/", rootHistSvc);
131
133 std::make_unique<egammaMonitoring::TruthElectronHistograms>(
134 "truthRecoElectronLooseLH", "LLH Electrons Reco Electron",
135 "/MONITORING/truthRecoElectronLooseLH/", rootHistSvc);
136
138 std::make_unique<egammaMonitoring::TruthElectronHistograms>(
139 "truthRecoElectronMediumLH", "MLH Electrons Reco Electron",
140 "/MONITORING/truthRecoElectronMediumLH/", rootHistSvc);
141
143 std::make_unique<egammaMonitoring::TruthElectronHistograms>(
144 "truthRecoElectronTightLH", "TLH Electrons Reco Electron",
145 "/MONITORING/truthRecoElectronTightLH/", rootHistSvc);
146
147 if (!m_FwdElectronsKey.empty()) {
148 recoElectronAll->hasFwd();
149 truthElectronAll->hasFwd();
150 truthPromptElectronAll->hasFwd();
156 truthRecoElectronLoose->hasFwd();
157 truthRecoElectronMedium->hasFwd();
158 truthRecoElectronTight->hasFwd();
159 }
160
161 ATH_CHECK(recoElectronAll->initializePlots());
162 ATH_CHECK(truthRecoElectronLoose->initializePlots());
163 ATH_CHECK(truthRecoElectronMedium->initializePlots());
164 ATH_CHECK(truthRecoElectronTight->initializePlots());
165 ATH_CHECK(truthElectronAll->initializePlots(true));
166 ATH_CHECK(truthPromptElectronAll->initializePlots(true));
167 ATH_CHECK(truthElectronRecoElectronAll->initializePlots());
168 ATH_CHECK(truthPromptElectronWithTrack->initializePlots(true));
169 ATH_CHECK(truthPromptElectronWithGSFTrack->initializePlots(true));
170 ATH_CHECK(truthPromptElectronWithReco->initializePlots());
172 } // electron Hists
173
174 if ("gamma" == m_sampleType) {
175
176 // all reco photons
177 recoPhotonAll = std::make_unique<egammaMonitoring::RecoPhotonHistograms>(
178 "recoPhotonAll", "Reco Photon", "/MONITORING/recoPhotonAll/",
180 ATH_CHECK(recoPhotonAll->initializePlots());
181
182 clusterConvPhoton = std::make_unique<egammaMonitoring::ClusterHistograms>(
183 "clusterConvPhoton", "Clusters from Converted Photons",
184 "/MONITORING/clusterConvPhoton/", rootHistSvc);
185
186 clusterConvPhotonSi = std::make_unique<egammaMonitoring::ClusterHistograms>(
187 "clusterConvPhotonSi", "Clusters from Converted Photons - Si",
188 "/MONITORING/clusterConvPhotonSi/", rootHistSvc);
189
191 std::make_unique<egammaMonitoring::ClusterHistograms>(
192 "clusterConvPhotonSiSi", "Clusters from Converted Photons - SiSi",
193 "/MONITORING/clusterConvPhotonSiSi/", rootHistSvc);
194
195 clusterUnconvPhoton = std::make_unique<egammaMonitoring::ClusterHistograms>(
196 "clusterUnconvPhoton", "Clusters from Converted Photons",
197 "/MONITORING/clusterUnconvPhoton/", rootHistSvc);
198
199 // Cluster information
200 ATH_CHECK(clusterConvPhoton->initializePlots());
201 ATH_CHECK(clusterConvPhotonSi->initializePlots());
202 ATH_CHECK(clusterConvPhotonSiSi->initializePlots());
203 ATH_CHECK(clusterUnconvPhoton->initializePlots());
204
205 if (m_hasTRT) {
207 std::make_unique<egammaMonitoring::ClusterHistograms>(
208 "clusterConvPhotonTRT", "Clusters from Converted Photons - TRT",
209 "/MONITORING/clusterConvPhotonTRT/", rootHistSvc);
210
212 std::make_unique<egammaMonitoring::ClusterHistograms>(
213 "clusterConvPhotonTRTTRT",
214 "Clusters from Converted Photons - TRTTRT",
215 "/MONITORING/clusterConvPhotonTRTTRT/", rootHistSvc);
216
218 std::make_unique<egammaMonitoring::ClusterHistograms>(
219 "clusterConvPhotonSiTRT",
220 "Clusters from Converted Photons - SiTRT",
221 "/MONITORING/clusterConvPhotonSiTRT/", rootHistSvc);
222
224 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
225 "truthConvRecoConv1TRT", "truthConvRecoConv1TRT",
226 "/MONITORING/truthConvRecoConv1TRT/", rootHistSvc);
227
229 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
230 "truthConvRecoConv2TRT", "truthConvRecoConv2TRT",
231 "/MONITORING/truthConvRecoConv2TRT/", rootHistSvc);
232
234 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
235 "truthConvRecoConv2SiTRT", "truthConvRecoConv2SiTRT",
236 "/MONITORING/truthConvRecoConv2SiTRT/", rootHistSvc);
237
239 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
240 "truthUnconvRecoConv1TRT", "truthUnconvRecoConv1TRT",
241 "/MONITORING/truthUnconvRecoConv1TRT/", rootHistSvc);
242
244 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
245 "truthUnconvRecoConv2TRT", "truthUnconvRecoConv2TRT",
246 "/MONITORING/truthUnconvRecoConv2TRT/", rootHistSvc);
247
249 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
250 "truthUnconvRecoConv2SiTRT", "truthUnconvRecoConv2SiTRT",
251 "/MONITORING/truthUnconvRecoConv2SiTRT/", rootHistSvc);
252
253 ATH_CHECK(truthPhotonConvRecoConv1TRT->initializePlots());
254 ATH_CHECK(truthPhotonConvRecoConv2TRT->initializePlots());
255 ATH_CHECK(truthPhotonConvRecoConv2SiTRT->initializePlots());
256 ATH_CHECK(truthPhotonUnconvRecoConv1TRT->initializePlots());
257 ATH_CHECK(truthPhotonUnconvRecoConv2TRT->initializePlots());
258 ATH_CHECK(truthPhotonUnconvRecoConv2SiTRT->initializePlots());
259 ATH_CHECK(clusterConvPhotonTRT->initializePlots());
260 ATH_CHECK(clusterConvPhotonTRTTRT->initializePlots());
261 ATH_CHECK(clusterConvPhotonSiTRT->initializePlots());
262 }
263
264 // All truth
265 truthPhotonAll = std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
266 "truthPhotonAll", "truthPhotonAll", "/MONITORING/truthPhotonAll/",
268
270 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
271 "truthPhotonAllUnconv", "truthPhotonAllUnconv",
272 "/MONITORING/truthPhotonAllUnconv/", rootHistSvc);
273
275 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
276 "truthPhotonAllConv", "truthPhotonAllConv",
277 "/MONITORING/truthPhotonAllConv/", rootHistSvc);
278
280 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
281 "truthPhotonAllLateConv", "truthPhotonAllLateConv",
282 "/MONITORING/truthPhotonAllLateConv/", rootHistSvc);
283
284 // Reco and truth-matched
286 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
287 "truthPhotonRecoPhoton", "truthPhotonRecoPhoton",
288 "/MONITORING/truthPhotonRecoPhoton/", rootHistSvc);
289
291 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
292 "truthPhotonRecoPhotonOrElectron",
293 "truthPhotonRecoPhotonOrElectron",
294 "/MONITORING/truthPhotonRecoPhotonOrElectron/", rootHistSvc);
295
297 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
298 "truthConvPhoton", "truthConvPhoton",
299 "/MONITORING/truthConvPhoton/", rootHistSvc);
300
302 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
303 "truthConvRecoConv", "truthConvRecoConv",
304 "/MONITORING/truthConvRecoConv/", rootHistSvc);
305
307 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
308 "truthConvRecoConv1Si", "truthConvRecoConv1Si",
309 "/MONITORING/truthConvRecoConv1Si/", rootHistSvc);
310
312 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
313 "truthConvRecoConv2Si", "truthConvRecoConv2Si",
314 "/MONITORING/truthConvRecoConv2Si/", rootHistSvc);
315
317 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
318 "truthConvRecoUnconv", "truthConvRecoUnconv",
319 "/MONITORING/truthConvRecoUnconv/", rootHistSvc);
320
322 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
323 "truthUnconvPhoton", "truthUnconvPhoton",
324 "/MONITORING/truthUnconvPhoton/", rootHistSvc);
325
327 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
328 "truthUnconvRecoConv", "truthUnconvRecoConv",
329 "/MONITORING/truthUnconvRecoConv/", rootHistSvc);
330
332 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
333 "truthUnconvRecoConv1Si", "truthUnconvRecoConv1Si",
334 "/MONITORING/truthUnconvRecoConv1Si/", rootHistSvc);
335
337 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
338 "truthUnconvRecoConv2Si", "truthUnconvRecoConv2Si",
339 "/MONITORING/truthUnconvRecoConv2Si/", rootHistSvc);
340
342 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
343 "truthUnconvRecoUnconv", "truthUnconvRecoUnconv",
344 "/MONITORING/truthUnconvRecoUnconv/", rootHistSvc);
345
347 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
348 "recoPhotonUnconvLoose", "Loose Photons Reco Photon",
349 "/MONITORING/recoPhotonUnconvLoose/", rootHistSvc);
350
352 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
353 "recoPhotonUnconvTight", "Tight Photons Reco Photon",
354 "/MONITORING/recoPhotonUnconvTight/", rootHistSvc);
355
357 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
358 "recoPhotonConvLoose", "Loose Photons Reco Photon",
359 "/MONITORING/recoPhotonConvLoose/", rootHistSvc);
360
362 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
363 "recoPhotonConvTight", "Tight Photons Reco Photon",
364 "/MONITORING/recoPhotonConvTight/", rootHistSvc);
365
367 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
368 "recoPhotonUnconvIsoFixedCutTight",
369 "Isolation Fixed Cut Tight Photons Reco Photon",
370 "/MONITORING/recoPhotonUnconvIsoFixedCutTight/", rootHistSvc);
371
373 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
374 "recoPhotonUnconvIsoFixedCutTightCaloOnly",
375 "Isolation Fixed Cut Tight Calo Only Photons Reco Photon",
376 "/MONITORING/recoPhotonUnconvIsoFixedCutTightCaloOnly/",
378
380 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
381 "recoPhotonUnconvIsoFixedCutLoose",
382 "Isolation Fixed Cut Loose Photons Reco Photon",
383 "/MONITORING/recoPhotonUnconvIsoFixedCutLoose/", rootHistSvc);
384
386 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
387 "recoPhotonConvIsoFixedCutTight",
388 "Isolation Fixed Cut Tight Photons Reco Photon",
389 "/MONITORING/recoPhotonConvIsoFixedCutTight/", rootHistSvc);
390
392 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
393 "recoPhotonConvIsoFixedCutTightCaloOnly",
394 "Isolation Fixed Cut Tight Calo Only Photons Reco Photon",
395 "/MONITORING/recoPhotonConvIsoFixedCutTightCaloOnly/", rootHistSvc);
396
398 std::make_unique<egammaMonitoring::TruthPhotonHistograms>(
399 "recoPhotonConvIsoFixedCutLoose",
400 "Isolation Fixed Cut Loose Photons Reco Photon",
401 "/MONITORING/recoPhotonConvIsoFixedCutLoose/", rootHistSvc);
402
403 // for the track monitoring, consider
404 // 4 track types (TRTSA or not, highpt or not) and
405 // 4 truth matching types (all / e / not e / pion / no truth match)
406 static const std::string typeMatch[5] = {"", "MatchElectron", "NotElectron",
407 "MatchPion", "NotMatched"};
408 static const std::string typeTrk[2] = {"", "TRT"};
409 static const std::string ptTrk[2] = {"", "highpT"};
410 static const std::string ctypeMatch[5] = {
411 "", " match to electrons", " not matched to electrons",
412 " match to pions", " not matched"};
413 static const std::string ctypeTrk[2] = {"", " TRTSA"};
414 static const std::string cptTrk[2] = {"", " pT > 3 GeV"};
415
416 for (int im = 0; im < 5; im++) {
417 std::string mN = typeMatch[im];
418 for (int it = 0; it < (m_hasTRT ? 2 : 1); it++) {
419 std::string tN = typeTrk[it];
420 for (int ip = 0; ip < 2; ip++) {
421 std::string pN = ptTrk[ip];
422
423 std::string nN =
424 "InDetTracks" + typeTrk[it] + typeMatch[im] + ptTrk[ip];
425 std::string fN = "/MONITORING/" + nN + "/";
426 std::string cN =
427 "InDet Tracks" + ctypeTrk[it] + ctypeMatch[im] + cptTrk[ip];
428
429 ATH_MSG_INFO("Creating histograms for " << nN);
430 mapTrkHistograms[nN] =
431 std::make_unique<egammaMonitoring::TrackHistograms>(
432 nN.c_str(), cN.c_str(), fN.c_str(), rootHistSvc);
433 ATH_CHECK(mapTrkHistograms[nN]->initializePlots());
434 }
435 }
436 }
437
438 ATH_CHECK(truthPhotonAll->initializePlots());
439 ATH_CHECK(truthPhotonAllUnconv->initializePlots());
440 ATH_CHECK(truthPhotonAllConv->initializePlots());
441 ATH_CHECK(truthPhotonAllLateConv->initializePlots());
442 ATH_CHECK(truthPhotonRecoPhoton->initializePlots());
443 ATH_CHECK(truthPhotonRecoPhotonOrElectron->initializePlots());
444
445 ATH_CHECK(truthPhotonConvPhoton->initializePlots());
446 ATH_CHECK(truthPhotonConvRecoConv->initializePlots());
447 ATH_CHECK(truthPhotonConvRecoConv1Si->initializePlots());
448 ATH_CHECK(truthPhotonConvRecoConv2Si->initializePlots());
449 ATH_CHECK(truthPhotonConvRecoUnconv->initializePlots());
450
451 ATH_CHECK(truthPhotonUnconvPhoton->initializePlots());
452 ATH_CHECK(truthPhotonUnconvRecoConv->initializePlots());
453 ATH_CHECK(truthPhotonUnconvRecoConv1Si->initializePlots());
454 ATH_CHECK(truthPhotonUnconvRecoConv2Si->initializePlots());
455 ATH_CHECK(truthPhotonUnconvRecoUnconv->initializePlots());
456
457 ATH_CHECK(recoPhotonUnconvLoose->initializePlots());
458 ATH_CHECK(recoPhotonUnconvTight->initializePlots());
459 ATH_CHECK(recoPhotonConvLoose->initializePlots());
460 ATH_CHECK(recoPhotonConvTight->initializePlots());
464 ATH_CHECK(recoPhotonConvIsoFixedCutTight->initializePlots());
466 ATH_CHECK(recoPhotonConvIsoFixedCutLoose->initializePlots());
467
468 } // gamma Hists
469
470 if (m_sampleType != "gamma") {
471 ATH_CHECK(m_ElectronsKey.initialize());
472 ATH_CHECK(m_GSFTrackParticlesKey.initialize());
473 }
474
475 if ("electron" == m_sampleType) {
476 //*****************ID selectors (3 levels)********************
477 ATH_CHECK(m_Loose_Ele.retrieve());
478 ATH_CHECK(m_Medium_Ele.retrieve());
479 ATH_CHECK(m_Tight_Ele.retrieve());
480
481 ATH_CHECK(m_FwdElectronsKey.initialize(!m_FwdElectronsKey.empty()));
482
483 if (!m_FwdElectronsKey.empty()) {
484 m_dR1 = new TH1D("dR1", ";#Delta R;Events", 1000, 0, 0.1);
485 ATH_CHECK(rootHistSvc->regHist("/MONITORING/Check/dR1", m_dR1));
486 m_dR2 = new TH1D("dR2", ";#Delta R;Events", 1000, 0, 0.1);
487 ATH_CHECK(rootHistSvc->regHist("/MONITORING/Check/dR2", m_dR2));
488
489 ATH_CHECK(m_Loose_FwdEle.retrieve());
490 ATH_CHECK(m_Medium_FwdEle.retrieve());
491 ATH_CHECK(m_Tight_FwdEle.retrieve());
492 }
493 }
494
495 if ("gamma" == m_sampleType) {
496 //*****************ID selectors (2 levels)********************
497 ATH_CHECK(m_Loose_Photon.retrieve());
498 ATH_CHECK(m_Tight_Photon.retrieve());
499
500 //*****************Iso Requirements********************
501 ATH_CHECK(m_IsoFixedCutTight.retrieve());
503 ATH_CHECK(m_IsoFixedCutLoose.retrieve());
504
505 ATH_CHECK(m_PhotonsKey.initialize());
506 }
507
508 //***************** The handles used whatever the sample********************
509 ATH_CHECK(m_eventInfoKey.initialize());
511
512 if (m_sampleType != "dataZ") {
513 ATH_CHECK(m_egTruthParticlesKey.initialize());
514 ATH_CHECK(m_truthParticlesKey.initialize());
515
516 //*****************MC Truth Classifier Requirement********************
517 ATH_CHECK(m_mcTruthClassifier.retrieve());
518 }
519
520 return StatusCode::SUCCESS;
521}
std::unique_ptr< egammaMonitoring::DiObjectHistograms > m_diElectron
std::unique_ptr< egammaMonitoring::RecoClusterHistograms > m_clusterReco

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

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.

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 111 of file AthAlgorithm.h.

111{ return false; }

◆ matchedToElectron()

bool EgammaMonitoring::matchedToElectron ( const xAOD::TrackParticle & tp)
staticprivate

Definition at line 1323 of file EgammaMonitoring.cxx.

1323 {
1325 return truth && abs(truth->pdgId()) == 11;
1326}

◆ matchedToPion()

bool EgammaMonitoring::matchedToPion ( const xAOD::TrackParticle & tp)
staticprivate

Definition at line 1328 of file EgammaMonitoring.cxx.

1328 {
1330 return truth && abs(truth->pdgId()) == 211;
1331}

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ notMatchedToTruth()

bool EgammaMonitoring::notMatchedToTruth ( const xAOD::TrackParticle & tp)
staticprivate

Definition at line 1333 of file EgammaMonitoring.cxx.

1333 {
1335 return !truth;
1336}

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

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()

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 > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
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)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed() [1/2]

void AthAlgorithm::setFilterPassed ( bool state) const
inherited

Definition at line 102 of file AthAlgorithm.cxx.

102 {
103 setFilterPassed( state, Gaudi::Hive::currentContext() );
104}
void setFilterPassed(bool state) const

◆ setFilterPassed() [2/2]

void AthAlgorithm::setFilterPassed ( bool state,
const EventContext & ctx ) const
inherited

Definition at line 106 of file AthAlgorithm.cxx.

106 {
107 execState( ctx ).setFilterPassed(state);
108}

◆ sysInitialize()

StatusCode AthAlgorithm::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 AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_WARNING(x)
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

◆ ZeePostProc()

StatusCode EgammaMonitoring::ZeePostProc ( )
private

Definition at line 1382 of file EgammaMonitoring.cxx.

1382 {
1383
1384 TH1D *hRef = (TH1D *)m_diElectron->histoMap["mass"];
1385 double xmi = 66, xma = 116, eps = 0.01;
1386 int ib1 = hRef->FindBin(xmi + eps);
1387 int ib2 = hRef->FindBin(xma - eps);
1388 TH1D *hmee = new TH1D("mee", ";m_{ee} [GeV];Events / 0.5 GeV", ib2 - ib1 + 1,
1389 xmi, xma);
1390 for (int ib = ib1; ib <= ib2; ib++) {
1391 double c = hRef->GetBinContent(ib);
1392 double ec = hRef->GetBinError(ib);
1393 hmee->SetBinContent(ib - ib1 + 1, c);
1394 hmee->SetBinError(ib - ib1 + 1, ec);
1395 }
1396 ATH_CHECK(rootHistSvc->regHist("/MONITORING/Data/mee", hmee));
1397
1398 TString vsX[3] = {"Et", "Etetale0p8", "Eta"};
1399 TString coo[3] = {"x", "x", "y"};
1400 for (int iL = 0; iL < 5; iL++) {
1401 TH3D *nRef;
1402 if (iL < 4)
1403 nRef = m_clusterReco->m_histo3DMap[Form("hNcellsvseteta_Lr%i", iL)];
1404 else
1405 nRef = recoElectronAll->histo3DMap["eteta_eop"];
1406 for (int iX = 0; iX < 3; iX++) {
1407 if (iL == 4 && iX == 2)
1408 continue;
1409 // nCells vs eta
1410 if (iX == 1) {
1411 int ieta08 = nRef->GetYaxis()->FindBin(0.79);
1412 nRef->GetYaxis()->SetRange(1, ieta08);
1413 } else if (iX == 2) {
1414 nRef->GetYaxis()->SetRange(1, 25);
1415 }
1416 TH2D *nRefvsX = (TH2D *)nRef->Project3D(Form("z%s", coo[iX].Data()));
1417 TString pN;
1418 if (iL < 4)
1419 pN = Form("pn%ivs%s", iL, vsX[iX].Data());
1420 else
1421 pN = Form("pEopvs%s", vsX[iX].Data());
1422 TProfile *pRefvsX = nRefvsX->ProfileX(pN.Data());
1423 pRefvsX->SetTitle(pN.Data());
1424 pRefvsX->GetXaxis()->SetTitle(iX < 2 ? "E_{T} [GeV]" : "|#eta|");
1425 pRefvsX->GetYaxis()->SetTitle(iL < 4 ? Form("nCells_Lr%i", iL) : "E/p");
1426 ATH_CHECK(rootHistSvc->regHist(
1427 Form("/MONITORING/Data/%s", pRefvsX->GetName()), pRefvsX));
1428 delete nRefvsX;
1429 }
1430 }
1431 return StatusCode::SUCCESS;
1432}
@ Data
Definition BaseObject.h:11

◆ ZeeSelection()

StatusCode EgammaMonitoring::ZeeSelection ( float mu,
const EventContext & ctx )
private

Definition at line 1338 of file EgammaMonitoring.cxx.

1338 {
1339 SG::ReadHandle<xAOD::ElectronContainer> RecoEl(m_ElectronsKey, ctx);
1340 SG::ReadHandle<xAOD::TrackParticleContainer> GSFTracks(m_GSFTrackParticlesKey,
1341 ctx);
1342
1343 const xAOD::Electron *e1 = nullptr, *e2 = nullptr;
1344 double pTL = -9e9, pTSL = -9e9;
1345 for (const auto *el : *RecoEl) {
1346 double pt = el->pt();
1347 if (pt < 15e3)
1348 continue;
1349 if (pt > pTL) {
1350 e2 = e1;
1351 pTSL = pTL;
1352 e1 = el;
1353 pTL = pt;
1354 } else if (pt > pTSL) {
1355 e2 = el;
1356 pTSL = pt;
1357 }
1358 }
1359
1360 if (!e2)
1361 return StatusCode::SUCCESS;
1362
1363 m_diElectron->fill(*e1, *e2, mu);
1364
1365 m_clusterReco->fill(*e1);
1366 m_clusterReco->fill(*e2);
1367 recoElectronAll->fill(*e1);
1368 recoElectronAll->fill(*e2);
1369
1370 showerShapesAll->fill(*e1);
1371 showerShapesAll->fill(*e2);
1372 if (e1->pt() > 10 * Gaudi::Units::GeV)
1373 showerShapes10GeV->fill(*e1);
1374 if (e2->pt() > 10 * Gaudi::Units::GeV)
1375 showerShapes10GeV->fill(*e2);
1376 isolationAll->fill(*e1);
1377 isolationAll->fill(*e2);
1378
1379 return StatusCode::SUCCESS;
1380}
double e2(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 2nd sampling
double e1(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 1st sampling

Member Data Documentation

◆ cluster10GeV

std::unique_ptr<egammaMonitoring::ClusterHistograms> EgammaMonitoring::cluster10GeV

Definition at line 57 of file EgammaMonitoring.h.

◆ clusterAll

std::unique_ptr<egammaMonitoring::ClusterHistograms> EgammaMonitoring::clusterAll

Definition at line 56 of file EgammaMonitoring.h.

◆ clusterConvPhoton

std::unique_ptr<egammaMonitoring::ClusterHistograms> EgammaMonitoring::clusterConvPhoton

Definition at line 94 of file EgammaMonitoring.h.

◆ clusterConvPhotonSi

std::unique_ptr<egammaMonitoring::ClusterHistograms> EgammaMonitoring::clusterConvPhotonSi

Definition at line 95 of file EgammaMonitoring.h.

◆ clusterConvPhotonSiSi

std::unique_ptr<egammaMonitoring::ClusterHistograms> EgammaMonitoring::clusterConvPhotonSiSi

Definition at line 96 of file EgammaMonitoring.h.

◆ clusterConvPhotonSiTRT

std::unique_ptr<egammaMonitoring::ClusterHistograms> EgammaMonitoring::clusterConvPhotonSiTRT

Definition at line 99 of file EgammaMonitoring.h.

◆ clusterConvPhotonTRT

std::unique_ptr<egammaMonitoring::ClusterHistograms> EgammaMonitoring::clusterConvPhotonTRT

Definition at line 97 of file EgammaMonitoring.h.

◆ clusterConvPhotonTRTTRT

std::unique_ptr<egammaMonitoring::ClusterHistograms> EgammaMonitoring::clusterConvPhotonTRTTRT

Definition at line 98 of file EgammaMonitoring.h.

◆ clusterPrompt10GeV

std::unique_ptr<egammaMonitoring::ClusterHistograms> EgammaMonitoring::clusterPrompt10GeV

Definition at line 60 of file EgammaMonitoring.h.

◆ clusterPromptAll

std::unique_ptr<egammaMonitoring::ClusterHistograms> EgammaMonitoring::clusterPromptAll

Definition at line 59 of file EgammaMonitoring.h.

◆ clusterUnconvPhoton

std::unique_ptr<egammaMonitoring::ClusterHistograms> EgammaMonitoring::clusterUnconvPhoton

Definition at line 100 of file EgammaMonitoring.h.

◆ isolationAll

std::unique_ptr<egammaMonitoring::IsolationHistograms> EgammaMonitoring::isolationAll

Definition at line 65 of file EgammaMonitoring.h.

◆ m_CenFwdOverlap

int EgammaMonitoring::m_CenFwdOverlap[2] = { 0, 0 }
private

Definition at line 228 of file EgammaMonitoring.h.

228{ 0, 0 };

◆ m_clusterReco

std::unique_ptr<egammaMonitoring::RecoClusterHistograms> EgammaMonitoring::m_clusterReco

Definition at line 68 of file EgammaMonitoring.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_diElectron

std::unique_ptr<egammaMonitoring::DiObjectHistograms> EgammaMonitoring::m_diElectron

Definition at line 69 of file EgammaMonitoring.h.

◆ m_dR1

TH1D* EgammaMonitoring::m_dR1 {}
private

Definition at line 230 of file EgammaMonitoring.h.

230{};

◆ m_dR2

TH1D* EgammaMonitoring::m_dR2 {}
private

Definition at line 231 of file EgammaMonitoring.h.

231{};

◆ m_egTruthParticlesKey

SG::ReadHandleKey<xAOD::TruthParticleContainer> EgammaMonitoring::m_egTruthParticlesKey { this, "egammaTruthParticlesKey", "", "" }
private

Definition at line 200 of file EgammaMonitoring.h.

201{ this, "egammaTruthParticlesKey", "", "" };

◆ m_ElectronsKey

SG::ReadHandleKey<xAOD::ElectronContainer> EgammaMonitoring::m_ElectronsKey { this, "ElectronsKey", "", "" }
private

Definition at line 206 of file EgammaMonitoring.h.

207{ this, "ElectronsKey", "", "" };

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> EgammaMonitoring::m_eventInfoKey { this, "EventInfoKey", "EventInfo", "" }
private

Definition at line 197 of file EgammaMonitoring.h.

198{ this, "EventInfoKey", "EventInfo", "" };

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 114 of file AthAlgorithm.h.

◆ m_FwdElectronsKey

SG::ReadHandleKey<xAOD::ElectronContainer> EgammaMonitoring::m_FwdElectronsKey { this, "FwdElectronsKey", "", "" }
private

Definition at line 209 of file EgammaMonitoring.h.

210{ this, "FwdElectronsKey", "", "" };

◆ m_GSFTrackParticlesKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> EgammaMonitoring::m_GSFTrackParticlesKey { this, "GSFTrackParticlesKey", "", "" }
private

Definition at line 218 of file EgammaMonitoring.h.

219{ this, "GSFTrackParticlesKey", "", "" };

◆ m_hasTRT

Gaudi::Property<bool> EgammaMonitoring::m_hasTRT { this, "hasTRT", true, "is there a TRT in the ID" }
private

is it run 3 or run 4 and later ?

Definition at line 160 of file EgammaMonitoring.h.

161{ this, "hasTRT", true, "is there a TRT in the ID" };

◆ m_InDetTrackParticlesKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> EgammaMonitoring::m_InDetTrackParticlesKey { this, "InDetTrackParticlesKey", "InDetTrackParticles", "" }
private

Definition at line 215 of file EgammaMonitoring.h.

216{ this, "InDetTrackParticlesKey", "InDetTrackParticles", "" };

◆ m_IsoFixedCutLoose

ToolHandle<CP::IIsolationSelectionTool> EgammaMonitoring::m_IsoFixedCutLoose { this, "IsoFixedCutLoose", "", "" }
private

Definition at line 189 of file EgammaMonitoring.h.

190{ this, "IsoFixedCutLoose", "", "" };

◆ m_IsoFixedCutTight

ToolHandle<CP::IIsolationSelectionTool> EgammaMonitoring::m_IsoFixedCutTight { this, "IsoFixedCutTight", "", "" }
private

Definition at line 185 of file EgammaMonitoring.h.

186{ this, "IsoFixedCutTight", "", "" };

◆ m_IsoFixedCutTightCaloOnly

ToolHandle<CP::IIsolationSelectionTool> EgammaMonitoring::m_IsoFixedCutTightCaloOnly { this, "IsoTightCaloOnly", "", "" }
private

Definition at line 187 of file EgammaMonitoring.h.

188{ this, "IsoTightCaloOnly", "", "" };

◆ m_Loose_Ele

ToolHandle<IAsgElectronLikelihoodTool> EgammaMonitoring::m_Loose_Ele { this, "Loose_Ele", "", "" }
private

Selector tools.

Definition at line 165 of file EgammaMonitoring.h.

166{ this, "Loose_Ele", "", "" };

◆ m_Loose_FwdEle

ToolHandle<IAsgElectronLikelihoodTool> EgammaMonitoring::m_Loose_FwdEle { this, "Loose_FwdEle", "", "" }
private

Definition at line 171 of file EgammaMonitoring.h.

172{ this, "Loose_FwdEle", "", "" };

◆ m_Loose_Photon

ToolHandle<IAsgPhotonIsEMSelector> EgammaMonitoring::m_Loose_Photon { this, "Loose_Photon", "", "" }
private

Definition at line 179 of file EgammaMonitoring.h.

180{ this, "Loose_Photon", "", "" };

◆ m_mcTruthClassifier

ToolHandle<IMCTruthClassifier> EgammaMonitoring::m_mcTruthClassifier { this, "MCTruthClassifier", "", "" }
private

Definition at line 193 of file EgammaMonitoring.h.

194{ this, "MCTruthClassifier", "", "" };

◆ m_Medium_Ele

ToolHandle<IAsgElectronLikelihoodTool> EgammaMonitoring::m_Medium_Ele { this, "Medium_Ele", "", "" }
private

Definition at line 167 of file EgammaMonitoring.h.

168{ this, "Medium_Ele", "", "" };

◆ m_Medium_FwdEle

ToolHandle<IAsgElectronLikelihoodTool> EgammaMonitoring::m_Medium_FwdEle { this, "Medium_FwdEle", "", "" }
private

Definition at line 173 of file EgammaMonitoring.h.

174{ this, "Medium_FwdEle", "", "" };

◆ m_PhotonsKey

SG::ReadHandleKey<xAOD::PhotonContainer> EgammaMonitoring::m_PhotonsKey { this, "PhotonsKey", "", "" }
private

Definition at line 212 of file EgammaMonitoring.h.

213{ this, "PhotonsKey", "", "" };

◆ m_sampleType

Gaudi::Property<std::string> EgammaMonitoring::m_sampleType { this, "sampleType", "Unknown", "electron or gamma" }
private

Sample name ///.

Definition at line 156 of file EgammaMonitoring.h.

157{ this, "sampleType", "Unknown", "electron or gamma" };

◆ m_Tight_Ele

ToolHandle<IAsgElectronLikelihoodTool> EgammaMonitoring::m_Tight_Ele { this, "Tight_Ele", "", "" }
private

Definition at line 169 of file EgammaMonitoring.h.

170{ this, "Tight_Ele", "", "" };

◆ m_Tight_FwdEle

ToolHandle<IAsgElectronLikelihoodTool> EgammaMonitoring::m_Tight_FwdEle { this, "Tight_FwdEle", "", "" }
private

Definition at line 175 of file EgammaMonitoring.h.

176{ this, "Tight_FwdEle", "", "" };

◆ m_Tight_Photon

ToolHandle<IAsgPhotonIsEMSelector> EgammaMonitoring::m_Tight_Photon { this, "Tight_Photon", "", "" }
private

Definition at line 181 of file EgammaMonitoring.h.

182{ this, "Tight_Photon", "", "" };

◆ m_truthParticlesKey

SG::ReadHandleKey<xAOD::TruthParticleContainer> EgammaMonitoring::m_truthParticlesKey { this, "truthParticlesKey", "", "" }
private

Definition at line 203 of file EgammaMonitoring.h.

204{ this, "truthParticlesKey", "", "" };

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ mapTrkHistograms

std::map<std::string,std::unique_ptr<egammaMonitoring::TrackHistograms> > EgammaMonitoring::mapTrkHistograms

Definition at line 142 of file EgammaMonitoring.h.

◆ recoElectronAll

std::unique_ptr<egammaMonitoring::RecoElectronHistograms> EgammaMonitoring::recoElectronAll

Definition at line 72 of file EgammaMonitoring.h.

◆ recoPhotonAll

std::unique_ptr<egammaMonitoring::RecoPhotonHistograms> EgammaMonitoring::recoPhotonAll

Definition at line 102 of file EgammaMonitoring.h.

◆ recoPhotonConvIsoFixedCutLoose

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::recoPhotonConvIsoFixedCutLoose

Definition at line 140 of file EgammaMonitoring.h.

◆ recoPhotonConvIsoFixedCutTight

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::recoPhotonConvIsoFixedCutTight

Definition at line 137 of file EgammaMonitoring.h.

◆ recoPhotonConvIsoFixedCutTightCaloOnly

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::recoPhotonConvIsoFixedCutTightCaloOnly

Definition at line 139 of file EgammaMonitoring.h.

◆ recoPhotonConvLoose

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::recoPhotonConvLoose

Definition at line 129 of file EgammaMonitoring.h.

◆ recoPhotonConvTight

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::recoPhotonConvTight

Definition at line 130 of file EgammaMonitoring.h.

◆ recoPhotonUnconvIsoFixedCutLoose

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::recoPhotonUnconvIsoFixedCutLoose

Definition at line 136 of file EgammaMonitoring.h.

◆ recoPhotonUnconvIsoFixedCutTight

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::recoPhotonUnconvIsoFixedCutTight

Definition at line 132 of file EgammaMonitoring.h.

◆ recoPhotonUnconvIsoFixedCutTightCaloOnly

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::recoPhotonUnconvIsoFixedCutTightCaloOnly

Definition at line 134 of file EgammaMonitoring.h.

◆ recoPhotonUnconvLoose

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::recoPhotonUnconvLoose

Definition at line 127 of file EgammaMonitoring.h.

◆ recoPhotonUnconvTight

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::recoPhotonUnconvTight

Definition at line 128 of file EgammaMonitoring.h.

◆ rootHistSvc

SmartIF<ITHistSvc> EgammaMonitoring::rootHistSvc

Tools and services ///.

Definition at line 53 of file EgammaMonitoring.h.

◆ showerShapes10GeV

std::unique_ptr<egammaMonitoring::ShowerShapesHistograms> EgammaMonitoring::showerShapes10GeV

Definition at line 64 of file EgammaMonitoring.h.

◆ showerShapesAll

std::unique_ptr<egammaMonitoring::ShowerShapesHistograms> EgammaMonitoring::showerShapesAll

Definition at line 63 of file EgammaMonitoring.h.

◆ truthElectronAll

std::unique_ptr<egammaMonitoring::TruthElectronHistograms> EgammaMonitoring::truthElectronAll

Definition at line 73 of file EgammaMonitoring.h.

◆ truthElectronRecoElectronAll

std::unique_ptr<egammaMonitoring::TruthElectronHistograms> EgammaMonitoring::truthElectronRecoElectronAll

Definition at line 77 of file EgammaMonitoring.h.

◆ truthPhotonAll

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonAll

Definition at line 103 of file EgammaMonitoring.h.

◆ truthPhotonAllConv

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonAllConv

Definition at line 105 of file EgammaMonitoring.h.

◆ truthPhotonAllLateConv

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonAllLateConv

Definition at line 106 of file EgammaMonitoring.h.

◆ truthPhotonAllUnconv

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonAllUnconv

Definition at line 104 of file EgammaMonitoring.h.

◆ truthPhotonConvPhoton

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonConvPhoton

Definition at line 110 of file EgammaMonitoring.h.

◆ truthPhotonConvRecoConv

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonConvRecoConv

Definition at line 111 of file EgammaMonitoring.h.

◆ truthPhotonConvRecoConv1Si

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonConvRecoConv1Si

Definition at line 112 of file EgammaMonitoring.h.

◆ truthPhotonConvRecoConv1TRT

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonConvRecoConv1TRT

Definition at line 113 of file EgammaMonitoring.h.

◆ truthPhotonConvRecoConv2Si

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonConvRecoConv2Si

Definition at line 114 of file EgammaMonitoring.h.

◆ truthPhotonConvRecoConv2SiTRT

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonConvRecoConv2SiTRT

Definition at line 116 of file EgammaMonitoring.h.

◆ truthPhotonConvRecoConv2TRT

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonConvRecoConv2TRT

Definition at line 115 of file EgammaMonitoring.h.

◆ truthPhotonConvRecoUnconv

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonConvRecoUnconv

Definition at line 117 of file EgammaMonitoring.h.

◆ truthPhotonRecoPhoton

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonRecoPhoton

Definition at line 107 of file EgammaMonitoring.h.

◆ truthPhotonRecoPhotonOrElectron

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonRecoPhotonOrElectron

Definition at line 109 of file EgammaMonitoring.h.

◆ truthPhotonUnconvPhoton

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonUnconvPhoton

Definition at line 118 of file EgammaMonitoring.h.

◆ truthPhotonUnconvRecoConv

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonUnconvRecoConv

Definition at line 119 of file EgammaMonitoring.h.

◆ truthPhotonUnconvRecoConv1Si

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonUnconvRecoConv1Si

Definition at line 120 of file EgammaMonitoring.h.

◆ truthPhotonUnconvRecoConv1TRT

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonUnconvRecoConv1TRT

Definition at line 121 of file EgammaMonitoring.h.

◆ truthPhotonUnconvRecoConv2Si

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonUnconvRecoConv2Si

Definition at line 122 of file EgammaMonitoring.h.

◆ truthPhotonUnconvRecoConv2SiTRT

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonUnconvRecoConv2SiTRT

Definition at line 125 of file EgammaMonitoring.h.

◆ truthPhotonUnconvRecoConv2TRT

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonUnconvRecoConv2TRT

Definition at line 123 of file EgammaMonitoring.h.

◆ truthPhotonUnconvRecoUnconv

std::unique_ptr<egammaMonitoring::IHistograms> EgammaMonitoring::truthPhotonUnconvRecoUnconv

Definition at line 126 of file EgammaMonitoring.h.

◆ truthPromptElectronAll

std::unique_ptr<egammaMonitoring::TruthElectronHistograms> EgammaMonitoring::truthPromptElectronAll

Definition at line 75 of file EgammaMonitoring.h.

◆ truthPromptElectronWithGSFTrack

std::unique_ptr<egammaMonitoring::TruthElectronHistograms> EgammaMonitoring::truthPromptElectronWithGSFTrack

Definition at line 81 of file EgammaMonitoring.h.

◆ truthPromptElectronWithReco

std::unique_ptr<egammaMonitoring::TruthElectronHistograms> EgammaMonitoring::truthPromptElectronWithReco

Definition at line 83 of file EgammaMonitoring.h.

◆ truthPromptElectronWithRecoTrack

std::unique_ptr<egammaMonitoring::TruthElectronHistograms> EgammaMonitoring::truthPromptElectronWithRecoTrack

Definition at line 85 of file EgammaMonitoring.h.

◆ truthPromptElectronWithTrack

std::unique_ptr<egammaMonitoring::TruthElectronHistograms> EgammaMonitoring::truthPromptElectronWithTrack

Definition at line 79 of file EgammaMonitoring.h.

◆ truthRecoElectronLoose

std::unique_ptr<egammaMonitoring::TruthElectronHistograms> EgammaMonitoring::truthRecoElectronLoose

Definition at line 87 of file EgammaMonitoring.h.

◆ truthRecoElectronMedium

std::unique_ptr<egammaMonitoring::TruthElectronHistograms> EgammaMonitoring::truthRecoElectronMedium

Definition at line 89 of file EgammaMonitoring.h.

◆ truthRecoElectronTight

std::unique_ptr<egammaMonitoring::TruthElectronHistograms> EgammaMonitoring::truthRecoElectronTight

Definition at line 91 of file EgammaMonitoring.h.


The documentation for this class was generated from the following files: