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

#include <ZdcNtuple.h>

Inheritance diagram for ZdcNtuple:

Public Types

typedef ServiceHandle< StoreGateSvc > & MetaStorePtr_t
 Type of the metadata store pointer in standalone mode.
typedef const ServiceHandle< StoreGateSvc > & ConstMetaStorePtr_t
typedef ServiceHandle< StoreGateSvcMetaStore_t
 Type of the metadata store variable in Athena.

Public Member Functions

void setupTriggerHistos ()
 ZdcNtuple (const std::string &name, ISvcLocator *pSvcLocator)
void processEventInfo ()
void processVInjInfo ()
bool processTriggerDecision ()
uint32_t acceptEvent ()
void processZdcNtupleFromModules ()
void processMCEventCollection ()
void processFCal ()
void processMBTS ()
void processInDet ()
void writeTrack (const xAOD::TrackParticle *, const xAOD::Vertex *vertex, int)
int trackQuality (const xAOD::TrackParticle *tp, const xAOD::Vertex *vertex)
void processClusters ()
void reprocessZdcModule (const xAOD::ZdcModule *zdcMod, bool flipdelay=0)
void processTriggerTowers ()
void processGaps ()
void processProtons ()
double dR (const double eta1, const double phi1, const double eta2, const double phi2)
virtual StatusCode initialize () override
virtual StatusCode execute () override
virtual StatusCode finalize () override
::StatusCode requestFileExecute ()
 register this algorithm to have an implementation of fileexecute
::StatusCode requestBeginInputFile ()
 register this algorithm to have an implementation of beginInputFile
::StatusCode requestEndInputFile ()
 register this algorithm to have an implementation of endInputFile
void handle (const Incident &inc)
 receive the given incident
virtual StatusCode sysInitialize ()
 Initialization method invoked by the framework.
const ServiceHandle< ITHistSvc > & histSvc () const
 The standard THistSvc (for writing histograms and TTrees and more to a root file) Returns (kind of) a pointer to the THistSvc.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
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
ConstMetaStorePtr_t inputMetaStore () const
MetaStorePtr_t inputMetaStore ()
ConstMetaStorePtr_t outputMetaStore () const
MetaStorePtr_t outputMetaStore ()

Public Attributes

bool slimmed
bool useGRL
std::string grlFilename
bool enableOutputTree
bool enableOutputSamples
bool enableTrigger
bool writeOnlyTriggers
bool enableID
bool enableCalo
bool enableClusters
bool enableTracks
bool enableMuons
bool enableElectrons
bool enablePhotons
bool enableTT
bool enableTruth
bool enableJets
bool enableTriggerJets
bool zdcCalib
bool zdcLaser
bool zdcInj
bool zdcOnly
unsigned int zdcLowGainMode
size_t trackLimit
bool trackLimitReject
bool flipDelay
bool reprocZdc
std::string auxSuffix
size_t nsamplesZdc
bool lhcf2022
bool lhcf2022zdc
bool lhcf2022afp
bool pbpb2023
bool oo2025
bool enableZDC
bool enableRPD
bool enableRPDAmp
bool enableCentroid
bool doZdcCalib
std::string zdcConfig
std::string outputName
int outputTreeScaledown
PublicToolHandle< Trig::TrigDecisionToolm_trigDecisionTool { this, "TrigDecisionTool", "", "Handle to the TrigDecisionTool" }
asg::AnaToolHandle< IGoodRunsListSelectionToolm_grl
asg::AnaToolHandle< ZDC::IZdcAnalysisToolm_zdcAnalysisTool
ToolHandle< InDet::IInDetTrackSelectionToolm_selTool
SG::ReadHandleKey< xAOD::ZdcModuleContainerm_zdcModuleContainerName { this, "ZdcModuleContainerName", "ZdcModules", "" }
SG::ReadHandleKey< xAOD::ZdcModuleContainerm_zdcSumContainerName { this, "ZdcSumContainerName", "ZdcSums", "" }
SG::ReadHandleKey< McEventCollectionm_mcEventCollectionName {this, "MCEventCollectionName", "TruthEvent", ""}
const xAOD::EventInfom_eventInfo
const xAOD::TrigDecisionm_trigDecision
const xAOD::HIEventShapeContainerm_caloSums
const xAOD::HIEventShapeContainerm_eventShapes
const xAOD::ForwardEventInfoContainerm_mbtsInfo
const xAOD::MBTSModuleContainerm_mbtsModules
const xAOD::TrigT2MbtsBitsContainerm_trigT2MbtsBits
const xAOD::VertexContainerm_primaryVertices
const xAOD::CaloClusterContainerm_caloClusters
const xAOD::TrackParticleContainerm_trackParticles
const xAOD::EnergySumRoIm_lvl1EnergySumRoI
const xAOD::TruthParticleContainerm_truthParticleContainer
const xAOD::TriggerTowerContainerm_TTcontainer
const xAOD::AFPProtonContainerm_afpProtons
std::shared_ptr< ZdcInjPulserAmpMapm_zdcInjPulserAmpMap
int m_nTriggers
int m_eventCounter
bool m_isMC
bool m_setupTrigHist
int m_scaledownCounter
std::vector< const Trig::ChainGroup * > m_chainGroups
std::vector< const Trig::ChainGroup * > m_rerunChainGroups
float t_L1ET
float t_L1ET24
TH1 * h_zdcTriggers
TH1 * h_zdcTriggersTBP
TTree * m_outputTree
uint32_t t_runNumber
uint32_t t_eventNumber
uint32_t t_lumiBlock
uint32_t t_bcid
float t_vInj
uint8_t t_bunchGroup
uint32_t t_passBits
uint32_t t_extendedLevel1ID
uint32_t t_timeStamp
uint32_t t_timeStampNSOffset
float t_avgIntPerCrossing
float t_actIntPerCrossing
uint8_t t_zdcEventInfoError
uint32_t t_zdcEventInfoErrorWord
uint8_t t_zdcDecodingError
uint8_t t_rpdDecodingError
uint64_t t_trigger
uint32_t t_trigger_TBP
float t_prescales [200]
bool t_decisions [200]
bool t_rerunDecisions [200]
float t_mbts_in_e [2][8]
float t_mbts_out_e [2][4]
float t_mbts_in_t [2][8]
float t_mbts_out_t [2][4]
float t_T2mbts_in_e [2][8]
float t_T2mbts_out_e [2][4]
float t_T2mbts_in_t [2][8]
float t_T2mbts_out_t [2][4]
uint32_t t_tav [16]
uint32_t t_tbp [16]
float t_ZdcAmp [2]
float t_ZdcAmpErr [2]
float t_ZdcEnergy [2]
float t_ZdcEnergyErr [2]
float t_ZdcNLEnergy [2]
float t_ZdcNLEnergyErr [2]
float t_ZdcTime [2]
short t_ZdcStatus [2]
unsigned int t_ZdcModuleMask
float t_ZdcTrigEff [2]
unsigned short t_ZdcLucrodTriggerSideAmp [2]
unsigned short t_ZdcLucrodTriggerSideAmpLG [2]
float t_ZdcTruthTotal [2]
float t_ZdcTruthInvis [2]
float t_ZdcTruthEM [2]
float t_ZdcTruthNonEM [2]
float t_ZdcTruthEscaped [2]
std::vector< float > t_ZdcTruthParticlePosx
std::vector< float > t_ZdcTruthParticlePosy
std::vector< float > t_ZdcTruthParticlePosz
std::vector< float > t_ZdcTruthParticleTime
std::vector< float > t_ZdcTruthParticlePx
std::vector< float > t_ZdcTruthParticlePy
std::vector< float > t_ZdcTruthParticlePz
std::vector< float > t_ZdcTruthParticleEnergy
std::vector< int > t_ZdcTruthParticlePid
std::vector< int > t_ZdcTruthParticleStatus
float t_ZdcModuleAmp [2][4]
float t_ZdcModuleAmpUncorr [2][4]
float t_ZdcModuleTime [2][4]
float t_ZdcModuleFitAmp [2][4]
float t_ZdcModuleFitT0 [2][4]
float t_ZdcModuleChisq [2][4]
float t_ZdcModuleChisqRatio [2][4]
unsigned int t_ZdcModuleStatus [2][4]
float t_ZdcModuleCalibAmp [2][4]
float t_ZdcModuleCalibTime [2][4]
float t_ZdcModuleAmpError [2][4]
float t_ZdcModuleBkgdMaxFraction [2][4]
float t_ZdcModuleMinDeriv2nd [2][4]
float t_ZdcModulePresample [2][4]
float t_ZdcModulePreSampleAmp [2][4]
unsigned short t_ZdcLucrodTriggerAmp [2][4]
unsigned short t_ZdcLucrodTriggerAmpLG [2][4]
float t_ZdcModuleMaxADC [2][4]
float t_ZdcModuleMaxADCHG [2][4]
float t_ZdcModuleMaxADCLG [2][4]
float t_ZdcModulePeakADCHG [2][4]
float t_ZdcModulePeakADCLG [2][4]
float t_ZdcModuleAmpLGRefit [2][4]
float t_ZdcModuleAmpCorrLGRefit [2][4]
float t_ZdcModuleT0LGRefit [2][4]
float t_ZdcModuleT0SubLGRefit [2][4]
float t_ZdcModuleChisqLGRefit [2][4]
float t_ZdcModuleTruthTotal [2][7]
float t_ZdcModuleTruthInvis [2][7]
float t_ZdcModuleTruthEM [2][7]
float t_ZdcModuleTruthNonEM [2][7]
float t_ZdcModuleTruthEscaped [2][7]
unsigned int t_ZdcModuleTruthNphotons [2][7]
float t_RpdChannelBaseline [2][16]
float t_RpdChannelPileupExpFitParams [2][16][2]
float t_RpdChannelPileupStretchedExpFitParams [2][16][3]
float t_RpdChannelPileupExpFitParamErrs [2][16][2]
float t_RpdChannelPileupStretchedExpFitParamErrs [2][16][3]
float t_RpdChannelPileupExpFitMSE [2][16]
float t_RpdChannelPileupStretchedExpFitMSE [2][16]
float t_RpdChannelAmplitude [2][16]
float t_RpdChannelAmplitudeCalib [2][16]
float t_RpdChannelMaxADC [2][16]
float t_RpdChannelMaxADCCalib [2][16]
unsigned int t_RpdChannelMaxSample [2][16]
unsigned int t_RpdChannelStatus [2][16]
float t_RpdChannelPileupFrac [2][16]
unsigned int t_RpdSideStatus [2]
unsigned int t_RpdModuleTruthNphotons [2][16]
bool t_centroidDecorationsAvailable
char t_centroidEventValid
unsigned int t_centroidStatus [2]
float t_RPDChannelSubtrAmp [2][16]
float t_RPDSubtrAmpSum [2]
float t_xCentroidPreGeomCorPreAvgSubtr [2]
float t_yCentroidPreGeomCorPreAvgSubtr [2]
float t_xCentroidPreAvgSubtr [2]
float t_yCentroidPreAvgSubtr [2]
float t_xCentroid [2]
float t_yCentroid [2]
float t_xRowCentroid [2][4]
float t_yColCentroid [2][4]
float t_reactionPlaneAngle [2]
float t_cosDeltaReactionPlaneAngle
int t_nvx
float t_vx [3]
int t_vxntrk
std::vector< int > t_vx_trk_index
int t_vxtype
int t_pvindex
float t_vxcov [6]
float t_vxsumpt2
float t_puvxz
int t_puvxntrk
float t_puvxsumpt
int t_nstrong
int t_vxnlooseprimary
int t_vxnminbias
int t_vxngoodmuon
int t_nvtx
std::vector< int8_t > t_vtx_type
std::vector< float > t_vtx_x
std::vector< float > t_vtx_y
std::vector< float > t_vtx_z
std::vector< int16_t > t_vtx_ntrk_all
std::vector< float > t_vtx_sumpt2_all
std::vector< int16_t > t_vtx_ntrk
std::vector< float > t_vtx_sumpt2
std::vector< std::vector< int16_t > > t_vtx_trk_index
float t_fcalEt
float t_fcalEtA
float t_fcalEtC
float t_fcalEtA_TT
float t_fcalEtC_TT
float t_fcalEtA_TTsum
float t_fcalEtC_TTsum
float t_totalEt
float t_totalEt_TTsum
float t_totalEt24
float t_totalEt24_TTsum
float t_edgeGapA
float t_edgeGapC
float m_gapPtMin
double m_gapThresholds [98]
TH1 * h_TCSigCut
uint16_t t_mbts_countA
uint16_t t_mbts_countC
float t_mbts_timeA
float t_mbts_timeC
float t_mbts_timeDiff
uint16_t t_T2mbts_countAin
uint16_t t_T2mbts_countCin
uint16_t t_raw7 [2][4][2][2][7]
uint16_t t_raw15 [2][4][2][2][15]
uint16_t t_raw24 [2][4][2][2][24]
uint16_t t_raw32 [2][4][2][2][32]
uint16_t t_raw40 [2][4][2][2][40]
uint16_t t_rpdRaw [2][16][24]
uint16_t t_rpdRaw32 [2][16][32]
uint16_t t_rpdRaw40 [2][16][40]
uint32_t t_ntrk
std::vector< float > t_trk_pt
std::vector< float > t_trk_eta
std::vector< float > t_trk_phi
std::vector< float > t_trk_e
std::vector< float > t_trk_theta
std::vector< float > t_trk_d0
std::vector< float > t_trk_z0
std::vector< float > t_trk_vz
std::vector< float > t_trk_vtxz
std::vector< int8_t > t_trk_charge
std::vector< int16_t > t_trk_quality
std::vector< int > t_trk_index
std::vector< uint8_t > t_trk_nPixHits
std::vector< uint8_t > t_trk_nSctHits
std::vector< uint8_t > t_trk_nPixDead
std::vector< uint8_t > t_trk_nSctDead
std::vector< uint8_t > t_trk_nPixHoles
std::vector< uint8_t > t_trk_nSctHoles
std::vector< uint8_t > t_trk_nTrtHits
std::vector< uint8_t > t_trk_nTrtOutliers
std::vector< uint8_t > t_trk_inPixHits
std::vector< uint8_t > t_trk_exPixHits
std::vector< uint8_t > t_trk_ninPixHits
std::vector< uint8_t > t_trk_nexPixHits
std::vector< float > t_trk_pixeldEdx
uint32_t t_nclus
std::vector< float > t_cc_pt
std::vector< float > t_cc_eta
std::vector< float > t_cc_phi
std::vector< float > t_cc_e
std::vector< float > t_cc_sig
std::vector< int > t_cc_layer
std::vector< float > t_cc_raw_m
std::vector< float > t_cc_raw_eta
std::vector< float > t_cc_raw_phi
std::vector< float > t_cc_raw_e
std::vector< std::vector< float > > t_cc_raw_samp
float t_clusEt
float t_clusEtMax
float t_clusetaMax
float t_clusphiMax
int nProtons
std::vector< double > proton_pt
std::vector< double > proton_eta
std::vector< double > proton_phi
std::vector< double > proton_e
std::vector< int > proton_side
std::vector< double > proton_eLoss
std::vector< double > proton_t
std::vector< std::vector< int > > proton_track_stationID
std::vector< std::vector< float > > proton_track_xLocal
std::vector< std::vector< float > > proton_track_yLocal
std::vector< std::vector< float > > proton_track_zLocal
std::vector< std::vector< float > > proton_track_xSlope
std::vector< std::vector< float > > proton_track_ySlope
std::vector< std::vector< int > > proton_track_nClusters
TLorentzVector p_beam
TLorentzVector p_scat

Protected Member Functions

virtual::StatusCode execute (const EventContext &ctx)
 execute this algorithm
virtual void print () const
 print the state of the algorithm
virtual::StatusCode fileExecute ()
 perform the action exactly once for each file in the dataset
virtual::StatusCode beginInputFile ()
 perform the action for the beginning of an input file
virtual::StatusCode endInputFile ()
 perform the action for the end of an input file
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.
StatusCode configAthHistogramming (const ServiceHandle< ITHistSvc > &histSvc, const std::string &prefix, const std::string &rootDir, const std::string &histNamePrefix, const std::string &histNamePostfix, const std::string &histTitlePrefix, const std::string &histTitlePostfix)
 To be called by the derived classes to fill the internal configuration.
TH1 * bookGetPointer (const TH1 &hist, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
TH1 * bookGetPointer (TH1 *hist, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
TH1 * bookGetPointer (TH1 &histRef, std::string tDir="", std::string stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
TTree * bookGetPointer (const TTree &treeRef, std::string tDir="", std::string stream="")
 Simplify the booking and registering (into THistSvc) of TTrees.
TGraph * bookGetPointer (const TGraph &graphRef, std::string tDir="", std::string stream="")
 Simplify the booking and registering (into THistSvc) of TGraphs.
TEfficiency * bookGetPointer (const TEfficiency &eff, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
TEfficiency * bookGetPointer (TEfficiency *eff, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
TEfficiency * bookGetPointer (TEfficiency &effRef, std::string tDir="", std::string stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
StatusCode book (const TH1 &hist, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
StatusCode book (TH1 *hist, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
StatusCode book (TH1 &histRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
StatusCode book (const TTree &treeRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TTrees.
StatusCode book (const TGraph &graphRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TGraphs.
StatusCode book (const TEfficiency &eff, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
StatusCode book (TEfficiency *eff, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
StatusCode book (TEfficiency &effRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
TH1 * hist (const std::string &histName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered histograms of any type.
TH2 * hist2d (const std::string &histName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered 2-d histograms.
TH3 * hist3d (const std::string &histName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered 3-d histograms.
TTree * tree (const std::string &treeName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered TTrees.
TGraph * graph (const std::string &graphName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered TGraphs.
TEfficiency * efficiency (const std::string &effName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered TEfficiency.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
typedef uint32_t hash_t
 typedef for the internal hash
typedef std::map< const hash_t, TH1 * > HistMap_t
 Typedef for convenience.
typedef std::map< const hash_t, TEfficiency * > EffMap_t
 Typedef for convenience.
typedef std::map< const hash_t, TTree * > TreeMap_t
 Typedef for convenience.
typedef std::map< const hash_t, TGraph * > GraphMap_t
 Typedef for convenience.

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>
void buildBookingString (std::string &bookingString, std::string &histName, std::string &tDir, std::string &stream, bool usePrefixPostfix=false)
 Method to build individual booking string.
void myReplace (std::string &str, const std::string &oldStr, const std::string &newStr)
 Helper method to replace sub-string.
hash_t hash (const std::string &histName) const
 Method to calculate a 32-bit hash from a string.

Private Attributes

unsigned int m_lastRunNumber {0}
ZdcInjPulserAmpMap::Token m_injMapRunToken {}
MetaStore_t m_inputMetaStore
 Object accessing the input metadata store.
MetaStore_t m_outputMetaStore
 Object accessing the output metadata store.
bool m_hasFileExecute {false}
 the value of hasFileExecute
bool m_hasBeginInputFile {false}
 the value of hasBeginInputFile
bool m_hasEndInputFile {false}
 the value of hasEndInputFile
ServiceHandle< ITHistSvc > m_histSvc
 Default constructor: AthHistogramAlgorithm();.
std::string m_prefix
 Name of the ROOT output stream (file).
std::string m_rootDir
 Name of the ROOT directory.
std::string m_histNamePrefix
 The prefix for the histogram THx name.
std::string m_histNamePostfix
 The postfix for the histogram THx name.
std::string m_histTitlePrefix
 The prefix for the histogram THx title.
std::string m_histTitlePostfix
 The postfix for the histogram THx title.
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
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
HistMap_t m_histMap
 The map of histogram names to their pointers.
EffMap_t m_effMap
 The map of histogram names to their pointers.
TreeMap_t m_treeMap
 The map of TTree names to their pointers.
GraphMap_t m_graphMap
 The map of TGraph names to their pointers.
std::string m_streamName
 Name of the ROOT output stream (file).
std::string m_name
 Instance name.
MsgStream m_msg
 Cached Message Stream.

Detailed Description

Definition at line 47 of file ZdcNtuple.h.

Member Typedef Documentation

◆ ConstMetaStorePtr_t

Definition at line 111 of file AnaAlgorithm.h.

◆ EffMap_t

typedef std::map< const hash_t, TEfficiency* > AthHistogramming::EffMap_t
privateinherited

Typedef for convenience.

Definition at line 207 of file AthHistogramming.h.

◆ GraphMap_t

typedef std::map< const hash_t, TGraph* > AthHistogramming::GraphMap_t
privateinherited

Typedef for convenience.

Definition at line 221 of file AthHistogramming.h.

◆ hash_t

typedef uint32_t AthHistogramming::hash_t
privateinherited

typedef for the internal hash

Definition at line 171 of file AthHistogramming.h.

◆ HistMap_t

typedef std::map< const hash_t, TH1* > AthHistogramming::HistMap_t
privateinherited

Typedef for convenience.

Definition at line 200 of file AthHistogramming.h.

◆ MetaStore_t

Type of the metadata store variable in Athena.

Definition at line 563 of file AnaAlgorithm.h.

◆ MetaStorePtr_t

Type of the metadata store pointer in standalone mode.

Definition at line 110 of file AnaAlgorithm.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

◆ TreeMap_t

typedef std::map< const hash_t, TTree* > AthHistogramming::TreeMap_t
privateinherited

Typedef for convenience.

Definition at line 214 of file AthHistogramming.h.

Constructor & Destructor Documentation

◆ ZdcNtuple()

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

Definition at line 25 of file ZdcNtuple.cxx.

26 : EL::AnaAlgorithm(name, pSvcLocator),
27 m_grl ("GoodRunsListSelectionTool/grl", this),
28 //m_zdcAnalysisTool("ZDC::ZdcAnalysisTool/ZdcAnalysisTool", this),
29 m_selTool( "InDet::InDetTrackSelectionTool/TrackSelectionTool", this )
30{
31 // Here you put any code for the base initialization of variables,
32 // e.g. initialize all pointers to 0. Note that you should only put
33 // the most basic initialization here, since this method will be
34 // called on both the submission and the worker node. Most of your
35 // initialization code will go into histInitialize() and
36 // initialize().
37 m_setupTrigHist = false;
39
40 declareProperty("isMC", m_isMC = false, "MC mode");
41 declareProperty("enableOutputTree", enableOutputTree = false, "Enable output tree");
42 declareProperty("enableOutputSamples", enableOutputSamples = false, "Output ZDC and RPD raw data");
43 declareProperty("enableTrigger", enableTrigger = true, "comment");
44 declareProperty("enableTracks", enableTracks = false, "comment");
45 declareProperty("trackLimit", trackLimit = 500, "comment");
46 declareProperty("enableID", enableID = false, "turn on to enable ID tracks & vertices for physics streams");
47 declareProperty("enableCalo", enableCalo = false, "turn on to enable calorimeter energy info for physics streams");
48 declareProperty("enableClusters", enableClusters = false, "turn on to enable calo topo cluster info for physics streams");
49 declareProperty("writeOnlyTriggers", writeOnlyTriggers = false, "comment");
50 declareProperty("useGRL", useGRL = true, "comment");
51 declareProperty("grlFilename", grlFilename = "$ROOTCOREBIN/data/ZdcNtuple/data16_hip8TeV.periodAllYear_DetStatus-v86-pro20-19_DQDefects-00-02-04_PHYS_HeavyIonP_All_Good.xml", "comment");
52 declareProperty("slimmed", slimmed = false, "comment");
53 declareProperty("zdcCalib", zdcCalib = false, "zdc/ZDCCalib file");
54 declareProperty("zdcInj", zdcInj = false, "ZDC injected pulse");
55 declareProperty("zdcLaser", zdcLaser = false, "Run 2 ZDC Laser");
56 declareProperty("zdcOnly", zdcOnly = false, "comment");
57 declareProperty("zdcLowGainMode", zdcLowGainMode = 0, "comment");
58 declareProperty("gapPtMin", m_gapPtMin = 200, "minimum pT of cluster used in gaps");
59 declareProperty("flipDelay", flipDelay = 0, "comment");
60 declareProperty("reprocZdc", reprocZdc = 0, "comment");
61 declareProperty("auxSuffix", auxSuffix = "", "comment");
62 declareProperty("nsamplesZdc", nsamplesZdc = 24, "number of samples, 7 = most of Run 2, 24,32,40 = Run 3");
63 declareProperty("lhcf2022", lhcf2022 = false,"LHCf2022 general config");
64 declareProperty("lhcf2022afp", lhcf2022afp = false,"LHCf2022 AFP-specific config");
65 declareProperty("lhcf2022zdc", lhcf2022zdc = false,"LHCf2022 ZDC-specific config");
66 declareProperty("pbpb2023", pbpb2023 = false, "PbPb2023 config");
67 declareProperty("oo2025", oo2025 = false, "OO and NeNe 2025 config");
68 declareProperty("zdcConfig", zdcConfig = "PbPb2018", "argument to configure ZdcAnalysisTool");
69 declareProperty("doZdcCalib", doZdcCalib = false, "perform ZDC energy calibration");
70 declareProperty("enableZDC", enableZDC = true);
71 declareProperty("enableRPD",enableRPD = false,"enable reading any RPD decorations");
72 declareProperty("enableRPDAmp",enableRPDAmp = false,"enable reading RPD amplitudes (also requires enableRPD)");
73 declareProperty("enableCentroid",enableCentroid = false,"enable reading centroid decorations (also requires enableRPD)");
74
75 declareProperty( "TrackSelectionTool", m_selTool );
76
77 trackLimitReject = false;
78
79 m_zdcAnalysisTool.declarePropertyFor (this, "zdcAnalysisTool");
80
81}
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
bool reprocZdc
Definition ZdcNtuple.h:79
bool enableOutputTree
Definition ZdcNtuple.h:56
bool pbpb2023
Definition ZdcNtuple.h:85
bool flipDelay
Definition ZdcNtuple.h:78
bool zdcLaser
Definition ZdcNtuple.h:72
bool trackLimitReject
Definition ZdcNtuple.h:77
bool lhcf2022afp
Definition ZdcNtuple.h:84
bool enableCalo
Definition ZdcNtuple.h:61
bool doZdcCalib
Definition ZdcNtuple.h:92
bool lhcf2022zdc
Definition ZdcNtuple.h:83
bool enableID
Definition ZdcNtuple.h:60
bool slimmed
Definition ZdcNtuple.h:53
int m_eventCounter
Definition ZdcNtuple.h:133
std::string grlFilename
Definition ZdcNtuple.h:55
bool lhcf2022
Definition ZdcNtuple.h:82
ToolHandle< InDet::IInDetTrackSelectionTool > m_selTool
Definition ZdcNtuple.h:104
bool m_setupTrigHist
Definition ZdcNtuple.h:135
std::string zdcConfig
Definition ZdcNtuple.h:93
bool zdcOnly
Definition ZdcNtuple.h:74
bool enableZDC
Definition ZdcNtuple.h:87
bool enableTrigger
Definition ZdcNtuple.h:58
bool enableRPDAmp
Definition ZdcNtuple.h:89
bool enableTracks
Definition ZdcNtuple.h:63
size_t nsamplesZdc
Definition ZdcNtuple.h:81
asg::AnaToolHandle< IGoodRunsListSelectionTool > m_grl
Definition ZdcNtuple.h:102
bool enableOutputSamples
Definition ZdcNtuple.h:57
bool enableCentroid
Definition ZdcNtuple.h:90
unsigned int zdcLowGainMode
Definition ZdcNtuple.h:75
bool enableRPD
Definition ZdcNtuple.h:88
bool zdcInj
Definition ZdcNtuple.h:73
size_t trackLimit
Definition ZdcNtuple.h:76
bool useGRL
Definition ZdcNtuple.h:54
bool oo2025
Definition ZdcNtuple.h:86
std::string auxSuffix
Definition ZdcNtuple.h:80
bool writeOnlyTriggers
Definition ZdcNtuple.h:59
bool enableClusters
Definition ZdcNtuple.h:62
asg::AnaToolHandle< ZDC::IZdcAnalysisTool > m_zdcAnalysisTool
Definition ZdcNtuple.h:103
bool m_isMC
Definition ZdcNtuple.h:134
float m_gapPtMin
Definition ZdcNtuple.h:328
bool zdcCalib
Definition ZdcNtuple.h:71

Member Function Documentation

◆ acceptEvent()

uint32_t ZdcNtuple::acceptEvent ( )

Definition at line 1999 of file ZdcNtuple.cxx.

2000{
2001 uint32_t passbits = 0;
2002
2003 if (!m_isMC)
2004 {
2005 if (useGRL)
2006 {
2007 if (!m_grl->passRunLB(*m_eventInfo)) {
2008 passbits += 1; // UPC GRL
2009 }
2010 }
2011
2012 /*
2013 if(!m_grl_mb->passRunLB(*m_eventInfo)){
2014 passbits += 4; // MB GRL
2015 }
2016 */
2017
2021 || (m_eventInfo->isEventFlagBitSet(xAOD::EventInfo::Core, 18) ) )
2022 {
2023 passbits += 2;
2024 } // end if event flags check
2025 } // end if the event is data
2026
2027 return passbits;
2028}
const xAOD::EventInfo * m_eventInfo
Definition ZdcNtuple.h:113
@ Tile
The Tile calorimeter.
@ Core
Core flags describing the event.
@ LAr
The LAr calorimeter.
@ Error
The sub-detector issued an error.
setEventNumber uint32_t

◆ beginInputFile()

StatusCode EL::AnaAlgorithm::beginInputFile ( )
protectedinherited

perform the action for the beginning of an input file

Ideally you don't use this, but instead rely on meta-data tools instead. However, there are enough people asking for it that I decided to implement it anyways.

\warn To use this you have to call requestBeginInputFile to use this.

\warn If a file is split across multiple jobs this will be called more than once. This only happens for specific batch drivers and/or if it is explicitly configured by the user. With PROOF it could even happen multiple times within the same job, and while PROOF is no longer supported that behavior may come back if support for a similar framework is added in the future. As such, this method should not be used for accounting that relies to be called exactly once per file, take a look at fileExecute if you want something that is guaranteed to be executed exactly once per input file.

\warn The execution order of beginInputFile and fileExecute is currently unspecified.

Definition at line 359 of file AnaAlgorithm.cxx.

361 {
362 return StatusCode::SUCCESS;
363 }

◆ book() [1/8]

StatusCode AthHistogramming::book ( const TEfficiency & eff,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 337 of file AthHistogramming.h.

338{
339 // We need to create a non-const clone
340 TEfficiency* effClone = dynamic_cast< TEfficiency* >( eff.Clone() );
341 if ( !effClone ) {
342 m_msg << MSG::ERROR << "Couldn't create a TEfficiency clone" << endmsg;
343 return StatusCode::FAILURE;
344 }
345 return this->book( *effClone, tDir, stream );
346}
#define endmsg
StatusCode book(const TH1 &hist, const std::string &tDir="", const std::string &stream="")
Simplify the booking and registering (into THistSvc) of histograms.
MsgStream m_msg
Cached Message Stream.

◆ book() [2/8]

StatusCode AthHistogramming::book ( const TGraph & graphRef,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TGraphs.

◆ book() [3/8]

StatusCode AthHistogramming::book ( const TH1 & hist,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 305 of file AthHistogramming.h.

306{
307 // We need to create a non-const clone
308 TH1* histClone = dynamic_cast< TH1* >( hist.Clone() );
309 if ( !histClone ) {
310 m_msg << MSG::ERROR << "Couldn't create a TH1 clone" << endmsg;
311 return StatusCode::FAILURE;
312 }
313 return this->book( *histClone, tDir, stream );
314}
TH1 * hist(const std::string &histName, const std::string &tDir="", const std::string &stream="")
Simplify the retrieval of registered histograms of any type.

◆ book() [4/8]

StatusCode AthHistogramming::book ( const TTree & treeRef,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TTrees.

Definition at line 405 of file AthHistogramming.h.

406{
407 // Call the other Book method and see if it returns a valid pointer
408 TTree* treePointer = this->bookGetPointer( treeRef, tDir, stream );
409 if ( treePointer )
410 {
411 return StatusCode::SUCCESS;
412 }
413 else
414 {
415 return StatusCode::FAILURE;
416 }
417}
TH1 * bookGetPointer(const TH1 &hist, const std::string &tDir="", const std::string &stream="")
Simplify the booking and registering (into THistSvc) of histograms.

◆ book() [5/8]

StatusCode AthHistogramming::book ( TEfficiency & effRef,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 358 of file AthHistogramming.h.

359{
360 // Call the other Book method and see if it returns a valid pointer
361 TEfficiency* effPointer = this->bookGetPointer( effRef, tDir, stream );
362 if ( !effPointer ) {
363 m_msg << MSG::ERROR << "Couldn't book a TEfficiency" << endmsg;
364 return StatusCode::FAILURE;
365 }
366 return StatusCode::SUCCESS;
367}

◆ book() [6/8]

StatusCode AthHistogramming::book ( TEfficiency * eff,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 348 of file AthHistogramming.h.

349{
350 if ( !eff ) {
351 m_msg << MSG::ERROR << "Got a zero pointer to a TEfficiency" << endmsg;
352 return StatusCode::FAILURE;
353 }
354 return this->book( *eff, tDir, stream );
355}

◆ book() [7/8]

StatusCode AthHistogramming::book ( TH1 & histRef,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 326 of file AthHistogramming.h.

327{
328 // Call the other Book method and see if it returns a valid pointer
329 TH1* histPointer = this->bookGetPointer( histRef, tDir, stream );
330 if ( !histPointer ) {
331 m_msg << MSG::ERROR << "Couldn't book a TH1" << endmsg;
332 return StatusCode::FAILURE;
333 }
334 return StatusCode::SUCCESS;
335}

◆ book() [8/8]

StatusCode AthHistogramming::book ( TH1 * hist,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 316 of file AthHistogramming.h.

317{
318 if ( !hist ) {
319 m_msg << MSG::ERROR << "Got a zero pointer to a TH1" << endmsg;
320 return StatusCode::FAILURE;
321 }
322 return this->book( *hist, tDir, stream );
323}

◆ bookGetPointer() [1/8]

TEfficiency * AthHistogramming::bookGetPointer ( const TEfficiency & eff,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 283 of file AthHistogramming.h.

284{
285 // We need to create a non-const clone
286 TEfficiency* histClone = dynamic_cast< TEfficiency* >( hist.Clone() );
287 if ( !histClone ) {
288 m_msg << MSG::ERROR << "Couldn't create a TEfficiency clone in bookGetPointer" << endmsg;
289 return 0;
290 }
291 return this->bookGetPointer( *histClone, tDir, stream );
292
293}

◆ bookGetPointer() [2/8]

TGraph * AthHistogramming::bookGetPointer ( const TGraph & graphRef,
std::string tDir = "",
std::string stream = "" )
protectedinherited

Simplify the booking and registering (into THistSvc) of TGraphs.

Definition at line 388 of file AthHistogramming.cxx.

389{
390 // Get a pointer
391 const TGraph* graphPointer = &graphRef;
392
393 // Check that we got a valid pointer
394 if ( !graphPointer )
395 {
396 m_msg << MSG::WARNING
397 << "We got an invalid TGraph pointer in the BookGetPointer(TGraph*) method of the class" << m_name
398 << "!" << endmsg;
399 return NULL;
400 }
401
402 // Modify the name and title according to the prefixes of this classes instance
403 std::string graphName = graphPointer->GetName();
404 const std::string graphTitle = graphPointer->GetTitle();
405
406 // Check if the hash for this graphName already exists, i.e., if we have a hash collision
407 const hash_t graphHash = this->hash(graphName);
408 GraphMap_t::const_iterator it = m_graphMap.find( graphHash );
409 if ( it != m_graphMap.end() ) // It does exist!
410 {
411 m_msg << MSG::WARNING
412 << "Detected a hash collision. The hash for the TGraph with name=" << graphName
413 << " already exists and points to a TGraph with name=" << it->second->GetName()
414 << " NOT going to book the new histogram and returning a NULL pointer!" << endmsg;
415 return NULL;
416 }
417
418 // Create a clone that has the new name
419 TGraph* graphClone = dynamic_cast< TGraph* >( graphPointer->Clone((m_histNamePrefix+graphName+m_histNamePostfix).c_str()) );
420 if( !graphClone )
421 {
422 m_msg << MSG::WARNING
423 << "We couldn't clone the TGraph in the BookGetPointer(TGraph&) method of the class" << m_name
424 << "!" << endmsg;
425 return NULL;
426 }
427 graphClone->SetTitle ((m_histTitlePrefix+graphTitle+m_histTitlePostfix).c_str());
428
429 // Massage the final string to book things
430 std::string bookingString("");
431 this->buildBookingString( bookingString, graphName, tDir, stream );
432
433 // Register the TGraph into the THistSvc
434 if ( !((histSvc()->regGraph(bookingString, graphClone)).isSuccess()) )
435 {
436 m_msg << MSG::WARNING
437 << "Problem registering TGraph with name " << graphName
438 << ", title " << graphTitle
439 << " in " << m_name << "!" << endmsg;
440 return NULL;
441 }
442
443 // Also register it in the local map of string to pointer
444 m_graphMap.insert( m_graphMap.end(), std::pair< const hash_t, TGraph* >( graphHash, graphClone ) );
445
446 return graphClone;
447}
const ServiceHandle< ITHistSvc > & histSvc() const
The standard THistSvc (for writing histograms and TTrees and more to a root file) Returns (kind of) a...
std::string m_histNamePostfix
The postfix for the histogram THx name.
hash_t hash(const std::string &histName) const
Method to calculate a 32-bit hash from a string.
uint32_t hash_t
typedef for the internal hash
std::string m_histTitlePostfix
The postfix for the histogram THx title.
std::string m_histTitlePrefix
The prefix for the histogram THx title.
std::string m_name
Instance name.
void buildBookingString(std::string &bookingString, std::string &histName, std::string &tDir, std::string &stream, bool usePrefixPostfix=false)
Method to build individual booking string.
std::string m_histNamePrefix
The prefix for the histogram THx name.
GraphMap_t m_graphMap
The map of TGraph names to their pointers.

◆ bookGetPointer() [3/8]

TH1 * AthHistogramming::bookGetPointer ( const TH1 & hist,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 262 of file AthHistogramming.h.

263{
264 // We need to create a non-const clone
265 TH1* histClone = dynamic_cast< TH1* >( hist.Clone() );
266 if ( !histClone ) {
267 m_msg << MSG::ERROR << "Couldn't create a TH1 clone in bookGetPointer" << endmsg;
268 return 0;
269 }
270 return this->bookGetPointer( *histClone, tDir, stream );
271
272}

◆ bookGetPointer() [4/8]

TTree * AthHistogramming::bookGetPointer ( const TTree & treeRef,
std::string tDir = "",
std::string stream = "" )
protectedinherited

Simplify the booking and registering (into THistSvc) of TTrees.

Definition at line 273 of file AthHistogramming.cxx.

274{
275 // Get a pointer
276 const TTree* treePointer = &treeRef;
277
278 // Check that we got a valid pointer
279 if ( !treePointer )
280 {
281 m_msg << MSG::WARNING
282 << "We got an invalid TTree pointer in the BookGetPointer(TTree*) method of the class" << m_name
283 << "!" << endmsg;
284 return NULL;
285 }
286
287 // Modify the name and title according to the prefixes of this classes instance
288 std::string treeName = treePointer->GetName();
289 const std::string treeTitle = treePointer->GetTitle();
290
291 // Check if the hash for this treeName already exists, i.e., if we have a hash collision
292 const hash_t treeHash = this->hash(treeName);
293 TreeMap_t::const_iterator it = m_treeMap.find( treeHash );
294 if ( it != m_treeMap.end() ) // It does exist!
295 {
296 m_msg << MSG::WARNING
297 << "Detected a hash collision. The hash for the TTree with name=" << treeName
298 << " already exists and points to a TTree with name=" << it->second->GetName()
299 << " NOT going to book the new histogram and returning a NULL pointer!" << endmsg;
300 return NULL;
301 }
302
303 // Create a clone that has the new name
304 TTree* treeClone = dynamic_cast< TTree* >( treePointer->Clone(treeName.c_str()) );
305 if( !treeClone )
306 {
307 m_msg << MSG::WARNING
308 << "We couldn't clone the TTree in the BookGetPointer(TTree&) method of the class" << m_name
309 << "!" << endmsg;
310 return NULL;
311 }
312 treeClone->SetTitle (treeTitle.c_str());
313
314 // Massage the final string to book things
315 std::string bookingString("");
316 this->buildBookingString( bookingString, treeName, tDir, stream );
317
318 // Register the TTree into the THistSvc
319 if ( !((histSvc()->regTree(bookingString, treeClone)).isSuccess()) )
320 {
321 m_msg << MSG::WARNING
322 << "Problem registering TTree with name " << treeName
323 << ", title " << treeTitle
324 << " in " << m_name << "!" << endmsg;
325 return NULL;
326 }
327
328 // Also register it in the local map of string to pointer
329 m_treeMap.insert( m_treeMap.end(), std::pair< const hash_t, TTree* >( treeHash, treeClone ) );
330
331 return treeClone;
332}
TreeMap_t m_treeMap
The map of TTree names to their pointers.

◆ bookGetPointer() [5/8]

TEfficiency * AthHistogramming::bookGetPointer ( TEfficiency & effRef,
std::string tDir = "",
std::string stream = "" )
protectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 123 of file AthHistogramming.cxx.

124{
125 std::string effName(effRef.GetName());
126 const std::string effTitle(effRef.GetTitle());
127 std::string bookingString;
128 this->buildBookingString(bookingString, effName, tDir, stream);
129 const std::string finalEffName = m_histNamePrefix + effName + m_histNamePostfix;
130 effRef.SetTitle((m_histTitlePrefix + effTitle + m_histTitlePostfix).c_str());
131 effRef.SetName(finalEffName.c_str());
132
133 const hash_t effHash = this->hash(effName);
134 EffMap_t::const_iterator it = m_effMap.find(effHash);
135 if (it != m_effMap.end()) {
136 m_msg << MSG::WARNING
137 << "Detected a hash collision. The hash for the TEfficiency with name=" << effName
138 << " already exists and points to a TEfficiency with name=" << it->second->GetName()
139 << " NOT going to book the new TEfficiency and returning a NULL pointer!" << endmsg;
140 return nullptr;
141 }
142
143 if (!histSvc()->regEfficiency(bookingString, &effRef).isSuccess()) {
144 m_msg << MSG::WARNING
145 << "Problem registering TEfficiency with name " << effName
146 << ", name prefix " << m_histNamePrefix
147 << ", title " << effTitle
148 << ", title prefix " << m_histTitlePrefix
149 << ", and title postfix " << m_histTitlePostfix
150 << " in " << m_name << "!" << endmsg;
151 return nullptr;
152 }
153
154 m_effMap.insert(m_effMap.end(), std::pair<const hash_t, TEfficiency*>(effHash, &effRef));
155
156 return &effRef;
157}
EffMap_t m_effMap
The map of histogram names to their pointers.

◆ bookGetPointer() [6/8]

TEfficiency * AthHistogramming::bookGetPointer ( TEfficiency * eff,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 295 of file AthHistogramming.h.

296{
297 if ( !hist ) {
298 m_msg << MSG::ERROR << "Got a zero pointer to a TEfficiency in bookGetPointer" << endmsg;
299 return 0;
300 }
301 return this->bookGetPointer( *hist, tDir, stream );
302}

◆ bookGetPointer() [7/8]

TH1 * AthHistogramming::bookGetPointer ( TH1 & histRef,
std::string tDir = "",
std::string stream = "" )
protectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 83 of file AthHistogramming.cxx.

84{
85 std::string histName(histRef.GetName());
86 const std::string histTitle(histRef.GetTitle());
87 std::string bookingString;
88
89 this->buildBookingString(bookingString, histName, tDir, stream);
90
91 const std::string finalHistName = m_histNamePrefix + histName + m_histNamePostfix;
92
93 histRef.SetTitle((m_histTitlePrefix + histTitle + m_histTitlePostfix).c_str());
94 histRef.SetName(finalHistName.c_str());
95
96 const hash_t histHash = this->hash(histName);
97 HistMap_t::const_iterator it = m_histMap.find(histHash);
98 if (it != m_histMap.end()) {
99 m_msg << MSG::WARNING
100 << "Detected a hash collision. The hash for the histogram with name=" << histName
101 << " already exists and points to a histogram with name=" << it->second->GetName()
102 << " NOT going to book the new histogram and returning a NULL pointer!" << endmsg;
103 return nullptr;
104 }
105
106 if (!histSvc()->regHist(bookingString, &histRef).isSuccess()) {
107 m_msg << MSG::WARNING
108 << "Problem registering histogram with name " << histName
109 << ", name prefix " << m_histNamePrefix
110 << ", title " << histTitle
111 << ", title prefix " << m_histTitlePrefix
112 << ", and title postfix " << m_histTitlePostfix
113 << " in " << m_name << "!" << endmsg;
114 return nullptr;
115 }
116
117 m_histMap.insert(m_histMap.end(), std::pair<const hash_t, TH1*>(histHash, &histRef));
118
119 return &histRef;
120}
HistMap_t m_histMap
The map of histogram names to their pointers.

◆ bookGetPointer() [8/8]

TH1 * AthHistogramming::bookGetPointer ( TH1 * hist,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 274 of file AthHistogramming.h.

275{
276 if ( !hist ) {
277 m_msg << MSG::ERROR << "Got a zero pointer to a TH1 in bookGetPointer" << endmsg;
278 return 0;
279 }
280 return this->bookGetPointer( *hist, tDir, stream );
281}

◆ buildBookingString()

void AthHistogramming::buildBookingString ( std::string & bookingString,
std::string & histName,
std::string & tDir,
std::string & stream,
bool usePrefixPostfix = false )
privateinherited

Method to build individual booking string.

Definition at line 521 of file AthHistogramming.cxx.

526{
527 // Massage the final string to book things
528 if(tDir.empty()) tDir = m_rootDir;
529 size_t pos = histName.rfind('/');
530 if(pos != std::string::npos){
531 tDir+='/';
532 tDir.append(histName, 0,pos);
533 histName.erase(0,pos+1);
534 };
535 if(stream.empty()) stream = m_streamName;
536
537 if(usePrefixPostfix){
538 bookingString = "/"+stream+"/"+tDir+"/"+m_histNamePrefix+histName+m_histNamePostfix;
539 } else {
540 bookingString = "/"+stream+"/"+tDir+"/"+histName;
541 }
542 while(bookingString.find("//") != std::string::npos){
543 this->myReplace(bookingString,"//","/");
544 }
545
546 return;
547}
std::string m_rootDir
Name of the ROOT directory.
std::string m_streamName
Name of the ROOT output stream (file).
void myReplace(std::string &str, const std::string &oldStr, const std::string &newStr)
Helper method to replace sub-string.

◆ configAthHistogramming()

StatusCode AthHistogramming::configAthHistogramming ( const ServiceHandle< ITHistSvc > & histSvc,
const std::string & prefix,
const std::string & rootDir,
const std::string & histNamePrefix,
const std::string & histNamePostfix,
const std::string & histTitlePrefix,
const std::string & histTitlePostfix )
protectedinherited

To be called by the derived classes to fill the internal configuration.

Definition at line 51 of file AthHistogramming.cxx.

55{
58 m_rootDir = rootDir;
59 m_histNamePrefix = histNamePrefix;
60 m_histNamePostfix = histNamePostfix;
61 m_histTitlePrefix = histTitlePrefix;
62 m_histTitlePostfix = histTitlePostfix;
63
64 return StatusCode::SUCCESS;
65}
ServiceHandle< ITHistSvc > m_histSvc
Pointer to the THistSvc (event store by default).

◆ 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 }

◆ 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.

◆ dR()

double ZdcNtuple::dR ( const double eta1,
const double phi1,
const double eta2,
const double phi2 )

Definition at line 2176 of file ZdcNtuple.cxx.

2177{
2178 double deta = std::abs(eta1 - eta2);
2179 double dphi = std::abs(phi1 - phi2) < TMath::Pi() ? std::abs(phi1 - phi2) : 2 * TMath::Pi() - std::abs(phi1 - phi2);
2180 return std::sqrt(deta * deta + dphi * dphi);
2181}
static const double Pi

◆ efficiency()

TEfficiency * AthHistogramming::efficiency ( const std::string & effName,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the retrieval of registered TEfficiency.

Definition at line 211 of file AthHistogramming.cxx.

212{
213 // Build a 32 bit hash out of the name
214 const hash_t effHash = this->hash(effName);
215
216 // See if this entry exists in the map
217 EffMap_t::const_iterator it = m_effMap.find( effHash );
218 if ( it == m_effMap.end() ) // It doesn't exist!
219 { // Let's see into the THistSvc if somebody else has registered the TEfficiency...
220
221 // Need to copy the strings as we will massage them from here on
222 std::string effNameCopy = effName;
223 std::string tDirCopy = tDir;
224 std::string streamCopy = stream;
225
226 // Massage the final string to book things
227 std::string bookingString("");
228 this->buildBookingString( bookingString, effNameCopy, tDirCopy, streamCopy ,false);
229
230 TEfficiency* effPointer(NULL);
231 if ( !((histSvc()->getEfficiency(bookingString, effPointer)).isSuccess()) )
232 {
233 // Massage the final string to book things
234 std::string bookingString("");
235 this->buildBookingString( bookingString, effNameCopy, tDirCopy, streamCopy, true );
236
237 if ( !((histSvc()->getEfficiency(bookingString, effPointer)).isSuccess()) )
238 {
239 m_msg << MSG::WARNING
240 << "Problem retrieving the TEfficiency with name (including pre- and post-fixes) "
241 << m_histNamePrefix + effNameCopy + m_histNamePostfix
242 << " or with name " << effNameCopy
243 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
244 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
245 return NULL;
246 }
247 // If we get to here, we actually found the TEfficiency in the THistSvc.
248 // So let's add it to the local cache map and return its pointer
249 m_effMap.insert( m_effMap.end(), std::pair< const hash_t, TEfficiency* >( effHash, effPointer ) );
250 return effPointer;
251 }
252 // If we get to here, we actually found the TEfficiency in the THistSvc.
253 // So let's add it to the local cache map and return its pointer
254 m_effMap.insert( m_effMap.end(), std::pair< const hash_t, TEfficiency* >( effHash, effPointer ) );
255 return effPointer;
256 }
257
258 // Return the pointer to the TEfficiency that we got from the local cache map
259 return it->second;
260}
std::pair< StatusCode, TEfficiency * > getEfficiency(ITHistSvc &svc, const std::string &name)

◆ endInputFile()

StatusCode EL::AnaAlgorithm::endInputFile ( )
protectedinherited

perform the action for the end of an input file

Ideally you don't use this, but instead rely on meta-data tools instead. However, there are enough people asking for it that I decided to implement it anyways.

\warn To use this you have to call requestEndInputFile to use this.

\warn If a file is split across multiple jobs this will be called more than once. This only happens for specific batch drivers and/or if it is explicitly configured by the user. With PROOF it could even happen multiple times within the same job, and while PROOF is no longer supported that behavior may come back if support for a similar framework is added in the future. As such, this method should not be used for accounting that relies to be called exactly once per file, take a look at fileExecute if you want something that is guaranteed to be executed exactly once per input file.

\warn The execution order of endInputFile and fileExecute is currently unspecified.

Definition at line 367 of file AnaAlgorithm.cxx.

369 {
370 return StatusCode::SUCCESS;
371 }

◆ 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() [1/2]

StatusCode EL::AnaAlgorithm::execute ( const EventContext & ctx)
protectedvirtualinherited

execute this algorithm

\warn Override only one of the two execute methods.

This gets called once on every event and is where the bulk of the processing ought to be happening.

Implements AthAlgorithm.

Reimplemented in CP::AsgClassificationDecorationAlg, CP::AsgEnergyDecoratorAlg, CP::AsgEventScaleFactorAlg, CP::AsgLeptonTrackDecorationAlg, CP::AsgObjectScaleFactorAlg, CP::AsgPriorityDecorationAlg, CP::AsgSelectionAlg, CP::AsgShallowCopyAlg, CP::AsgUnionPreselectionAlg, CP::AsgUnionSelectionAlg, CP::AsgViewFromSelectionAlg, CP::AsgxAODNTupleMakerAlg, CP::BJetCalibrationAlg, CP::BootstrapGeneratorAlg, CP::BTaggingEfficiencyAlg, CP::BTaggingInformationDecoratorAlg, CP::BTaggingTriggerEfficiencyAlg, CP::BTaggingTriggerMatchingAlg, CP::ChargeSelectorAlg, CP::CopyNominalSelectionAlg, CP::DileptonInvariantMassSelectorAlg, CP::DileptonInvariantMassWindowSelectorAlg, CP::DileptonOSSFInvariantMassWindowSelectorAlg, CP::DiTauEfficiencyCorrectionsAlg, CP::DiTauMassCalculatorAlg, CP::DiTauSmearingAlg, CP::DiTauTruthMatchingAlg, CP::EgammaCalibrationAndSmearingAlg, CP::EgammaFSRForMuonsCollectorAlg, CP::EgammaIsolationCorrectionAlg, CP::EgammaIsolationSelectionAlg, CP::ElectronEfficiencyCorrectionAlg, CP::ElectronSiHitDecAlg, CP::EventCutFlowHistAlg, CP::EventFlagSelectionAlg, CP::EventScalarSelectorAlg, CP::EventSelectionByObjectFlagAlg, CP::EventStatusSelectionAlg, CP::FakeBkgCalculatorAlg, CP::InDetTrackBiasingAlg, CP::InDetTrackExtraVarDecoratorAlg, CP::InDetTrackSelectionAlg, CP::InDetTrackSmearingAlg, CP::JetCalibAlg, CP::JetCalibrationAlg, CP::JetDecoratorAlg, CP::JetFFSmearingAlg, CP::JetGhostMuonAssociationAlg, CP::JetModifierAlg, CP::JetNGhostSelectorAlg, CP::JetReclusteringAlg, CP::JetSelectionAlg, CP::JetTriggerDecoratorAlg, CP::JetUncertaintiesAlg, CP::JvtEfficiencyAlg, CP::JvtUpdateAlg, CP::KinematicHistAlg, CP::L1jFexJetThresholdsDecoratorAlg, CP::LeptonSFCalculatorAlg, CP::MCTCDecorationAlg, CP::MetadataHistAlg, CP::MetBuilderAlg, CP::MetMakerAlg, CP::MetSignificanceAlg, CP::MissingETPlusTransverseMassSelectorAlg, CP::MissingETSelectorAlg, CP::MuonCalibrationAndSmearingAlg, CP::MuonEfficiencyScaleFactorAlg, CP::MuonIsolationAlg, CP::MuonSelectionAlgV2, CP::MuonTriggerEfficiencyScaleFactorAlg, CP::NJetDecoratorAlg, CP::NLargeRJetMassWindowSelectorAlg, CP::NObjectMassSelectorAlg, CP::NObjectPtSelectorAlg, CP::ObjectCutFlowHistAlg, CP::ObjectKinematicSelectorAlg, CP::OverlapRemovalAlg, CP::PhotonEfficiencyCorrectionAlg, CP::PhotonExtraVariablesAlg, CP::PhotonShowerShapeFudgeAlg, CP::PileupReweightingAlg, CP::PMGTruthWeightAlg, CP::RNtupleTreeMakerAlg, CP::RunNumberSelectorAlg, CP::RunPartonHistoryAlg, CP::SaveFilterAlg, CP::SecVertexTruthMatchAlg, CP::SSVWeightsAlg, CP::SumNLeptonPtSelectorAlg, CP::SysListDumperAlg, CP::SysTruthWeightAlg, CP::TauCombineMuonRMTausAlg, CP::TauEfficiencyCorrectionsAlg, CP::TauSmearingAlg, CP::TauTruthMatchingAlg, CP::TransverseMassSelectorAlg, CP::TreeFillerAlg, CP::TreeMakerAlg, CP::TrigEventSelectionAlg, CP::TrigGlobalEfficiencyAlg, CP::TrigMatchingAlg, CP::TrigPrescalesAlg, CP::VGammaORAlg, CP::xAODWriterAlg, CP::XbbEfficiencyAlg, CP::XbbInformationDecoratorAlg, EventReco::KLFitterFinalizeOutputAlg, and EventReco::RunKLFitterAlg.

Definition at line 328 of file AnaAlgorithm.cxx.

330 {
331 // By default we invoke the deprecated method:
332 return execute();
333 }
virtual::StatusCode execute()
execute this algorithm

◆ execute() [2/2]

StatusCode ZdcNtuple::execute ( )
overridevirtual

Definition at line 557 of file ZdcNtuple.cxx.

558{
559 // Here you do everything that needs to be done on every single
560 // events, e.g. read input variables, apply cuts, and fill
561 // histograms and trees. This is where most of your actual analysis
562 // code will go.
563
564
565 // prefilter with a track limit
566
567 if (!evtStore())
568 {
569 ANA_MSG_INFO("*** No event found! ***");
570 return StatusCode::SUCCESS;
571 }
572
573 ANA_CHECK(evtStore()->retrieve( m_eventInfo, "EventInfo"));
575 if (zdcInj){
577 }
578
579 bool passTrigger = true;
580 m_trigDecision = 0;
581 if (enableTrigger)
582 {
583 ANA_CHECK(evtStore()->retrieve( m_trigDecision, "xTrigDecision"));
585 passTrigger = processTriggerDecision();
586 }
587
588 // if trigger enabled, only write out events which pass one of them, unless using MC
589 //
590 if (enableTrigger && !passTrigger && !m_isMC && writeOnlyTriggers) {
591 ANA_MSG_DEBUG ("Event failed trigger");
592 return StatusCode::SUCCESS;
593 }
594
595 if (reprocZdc){
596 ANA_MSG_INFO ("Reprocessing ZDC in ZdcNtuple");
597 ANA_CHECK(m_zdcAnalysisTool->reprocessZdc());
598 }else{
599 ANA_MSG_DEBUG ("No ZDC reprocessing");
600 }
601
602 processZdcNtupleFromModules(); // same model in both cases -- processZdcNtuple() goes straight to the anlaysis tool, which is good for debugging
603
604 if(m_isMC){
606 }
607
608 //tracks used to go here
609
611
612 if ((!(zdcCalib || zdcLaser || zdcOnly || zdcInj)) && enableID)
613 {
614 ANA_MSG_DEBUG("Trying to extract InDetTrackParticles from evtStore()=" << evtStore());
615 ANA_CHECK(evtStore()->retrieve( m_trackParticles, "InDetTrackParticles") );
616 size_t n = m_trackParticles->size();
617 ANA_MSG_DEBUG("Done w/ extracting InDetTrackParticles with size = " << n);
618
619 if (n > trackLimit && trackLimitReject) return StatusCode::SUCCESS;
620 }
621
622 if (!(zdcCalib || zdcLaser || zdcOnly || zdcInj))
623 {
624
625 // PLEASE NOTE: the commented sections here will be restored once we have a better sense of the Run 3 HI data
626
627 // Global E_T quantities for centrality
628 if (enableCalo){
629 ANA_CHECK(evtStore()->retrieve( m_caloSums, "CaloSums") );
630 ANA_CHECK(evtStore()->retrieve( m_eventShapes, "HIEventShape") );
631
633 ANA_CHECK(evtStore()->retrieve( m_lvl1EnergySumRoI, "LVL1EnergySumRoI") );
634
635 processFCal();
636 }
637
638 // MBTS quantities, but may require a derivation to be accessible (required STDM6 in pp)
639 //ANA_CHECK(evtStore()->retrieve( m_mbtsInfo, "MBTSForwardEventInfo") );
640 //ANA_CHECK(evtStore()->retrieve( m_mbtsModules, "MBTSModules") );
641 //m_trigT2MbtsBits = 0;
642 //ANA_CHECK(evtStore()->retrieve( m_trigT2MbtsBits, "HLT_xAOD__TrigT2MbtsBitsContainer_T2Mbts") );
643 //processMBTS();
644
645 if (enableID){
646 ANA_CHECK(evtStore()->retrieve( m_primaryVertices, "PrimaryVertices") );
647 processInDet();
648 }
649
650
651 if (enableClusters){
652 ANA_CHECK(evtStore()->retrieve( m_caloClusters, "CaloCalTopoClusters"));
654 }
655
656 // Gaps will require some evaluation of Run 3 performance of the clusters
657 processGaps();
658
660 ANA_CHECK(evtStore()->retrieve( m_afpProtons, "AFPProtonContainer"));
662 }
663 }
664
666 {
667 tree( "zdcTree" )->Fill();
668 }
669
670 return StatusCode::SUCCESS;
671}
#define ANA_MSG_INFO(xmsg)
Macro printing info messages.
#define ANA_MSG_DEBUG(xmsg)
Macro printing debug messages.
#define ANA_CHECK(EXP)
check whether the given expression was successful
ServiceHandle< StoreGateSvc > & evtStore()
const xAOD::VertexContainer * m_primaryVertices
Definition ZdcNtuple.h:122
void processMCEventCollection()
void processZdcNtupleFromModules()
void processInDet()
void processClusters()
const xAOD::HIEventShapeContainer * m_caloSums
Definition ZdcNtuple.h:117
const xAOD::CaloClusterContainer * m_caloClusters
Definition ZdcNtuple.h:123
void processGaps()
const xAOD::AFPProtonContainer * m_afpProtons
Definition ZdcNtuple.h:128
void processEventInfo()
void processFCal()
const xAOD::TrackParticleContainer * m_trackParticles
Definition ZdcNtuple.h:124
bool processTriggerDecision()
void processVInjInfo()
const xAOD::TrigDecision * m_trigDecision
Definition ZdcNtuple.h:116
void processProtons()
const xAOD::EnergySumRoI * m_lvl1EnergySumRoI
Definition ZdcNtuple.h:125
void setupTriggerHistos()
const xAOD::HIEventShapeContainer * m_eventShapes
Definition ZdcNtuple.h:118
TChain * tree

◆ 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 & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ fileExecute()

StatusCode EL::AnaAlgorithm::fileExecute ( )
protectedinherited

perform the action exactly once for each file in the dataset

Ideally you don't use this, but instead rely on meta-data tools instead. However, there are enough people asking for it that I decided to implement it anyways.

\warn To use this you have to call requestFileExecute to use this.

\warn The user should not expect this to be called at any particular point in execution. If a file is split between multiple jobs this will be called in only one of these jobs, and not the others. It usually gets called before the first event in a file, but that is not guaranteed and relying on this is a bug.

\warn The execution order of beginInputFile and fileExecute is currently unspecified.

\warn fileExecute does not work with sub-file splitting in Athena, i.e. processing half the events of a file in one job the other half in another job. this should not normally happen, unless you do crazy things like run AthenaMP or explicitly select sub-file splitting in panda. in that case you are on your own.

Definition at line 351 of file AnaAlgorithm.cxx.

353 {
354 return StatusCode::SUCCESS;
355 }

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ finalize()

StatusCode ZdcNtuple::finalize ( )
overridevirtual

Definition at line 2184 of file ZdcNtuple.cxx.

2185{
2186 // This method is the mirror image of initialize(), meaning it gets
2187 // called after the last event has been processed on the worker node
2188 // and allows you to finish up any objects you created in
2189 // initialize() before they are written to disk. This is actually
2190 // fairly rare, since this happens separately for each worker node.
2191 // Most of the time you want to do your post-processing on the
2192 // submission node after all your histogram outputs have been
2193 // merged. This is different from histFinalize() in that it only
2194 // gets called on worker nodes that processed input events.
2195
2196
2197 return StatusCode::SUCCESS;
2198}

◆ graph()

TGraph * AthHistogramming::graph ( const std::string & graphName,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the retrieval of registered TGraphs.

Definition at line 453 of file AthHistogramming.cxx.

454{
455 // Build a 32 bit hash out of the name
456 const hash_t graphHash = this->hash(graphName);
457
458 // See if this entry exists in the map
459 GraphMap_t::const_iterator it = m_graphMap.find( graphHash );
460 if ( it == m_graphMap.end() ) // It doesn't exist!
461 { // Let's see into the THistSvc if somebody else has registered the TGraph...
462
463 // Need to copy the strings as we will massage them from here on
464 std::string graphNameCopy = graphName;
465 std::string tDirCopy = tDir;
466 std::string streamCopy = stream;
467
468 // Massage the final string to book things
469 std::string bookingString("");
470 this->buildBookingString( bookingString, graphNameCopy, tDirCopy, streamCopy, false);
471
472 TGraph* graphPointer(nullptr);
473 if ( !((histSvc()->getGraph(bookingString, graphPointer)).isSuccess()) )
474 {
475 // Massage the final string to book things
476 std::string bookingString("");
477 this->buildBookingString( bookingString, graphNameCopy, tDirCopy, streamCopy, true );
478
479 if ( !((histSvc()->getGraph(bookingString, graphPointer)).isSuccess()) )
480 {
481 m_msg << MSG::WARNING
482 << "Problem retrieving the TGraph with name (including pre- and post-fixes) "
483 << m_histNamePrefix + graphNameCopy + m_histNamePostfix
484 << " or with name " << graphNameCopy
485 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
486 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
487 return nullptr;
488 }
489 // If we get to here, we actually found the TGraph in the THistSvc.
490 // So let's add it to the local cache map and return its pointer
491 m_graphMap.insert( m_graphMap.end(), std::pair< const hash_t, TGraph* >( graphHash, graphPointer ) );
492 return graphPointer;
493 }
494 // If we get to here, we actually found the TGraph in the THistSvc.
495 // So let's add it to the local cache map and return its pointer
496 m_graphMap.insert( m_graphMap.end(), std::pair< const hash_t, TGraph* >( graphHash, graphPointer ) );
497 return graphPointer;
498 }
499
500
501 // Return the pointer to the TGraph that we got from the local cache map
502 return it->second;
503}
std::pair< StatusCode, TGraph * > getGraph(ITHistSvc &svc, const std::string &name)

◆ handle()

void EL::AnaAlgorithm::handle ( const Incident & inc)
inherited

receive the given incident

Guarantee
basic
Failures
incident handling errors

Definition at line 529 of file AnaAlgorithm.cxx.

531 {
532 if (inc.type() == IncidentType::BeginInputFile)
533 {
538 } else if (inc.type() == IncidentType::EndInputFile)
539 {
542 } else
543 {
544 ATH_MSG_WARNING( "Unknown incident type received: " << inc.type() );
545 }
546 }
#define ATH_MSG_WARNING(x)
#define ANA_CHECK_THROW(EXP)
check whether the given expression was successful, throwing an exception on failure
virtual::StatusCode endInputFile()
perform the action for the end of an input file
virtual::StatusCode fileExecute()
perform the action exactly once for each file in the dataset
bool m_hasBeginInputFile
the value of hasBeginInputFile
bool m_hasFileExecute
the value of hasFileExecute
bool m_hasEndInputFile
the value of hasEndInputFile
virtual::StatusCode beginInputFile()
perform the action for the beginning of an input file

◆ hash()

AthHistogramming::hash_t AthHistogramming::hash ( const std::string & histName) const
inlineprivateinherited

Method to calculate a 32-bit hash from a string.

Definition at line 430 of file AthHistogramming.h.

431{
432 const uint64_t hash64 = CxxUtils::crc64( histName );
433 return (hash_t)(hash64 & 0xFFFFFFFF);
434}
uint64_t crc64(const CRCTable &table, const char *data, size_t data_len)
Find the CRC-64 of a string,.
Definition crc64.cxx:696
std::uint64_t hash64(const void *data, std::size_t size)
Passthrough to XXH3_64bits.
Definition XXH.cxx:9

◆ hist()

TH1 * AthHistogramming::hist ( const std::string & histName,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the retrieval of registered histograms of any type.

Definition at line 164 of file AthHistogramming.cxx.

167{
168 std::string histNameCopy = histName;
169 std::string tDirCopy = tDir;
170 std::string streamCopy = stream;
171
172 std::string bookingString;
173 this->buildBookingString(bookingString, histNameCopy, tDirCopy, streamCopy, false);
174
175 const hash_t histHash = this->hash(histNameCopy);
176
177 HistMap_t::const_iterator it = m_histMap.find(histHash);
178 if (it == m_histMap.end()) {
179 TH1* histPointer(nullptr);
180
181 if (!histSvc()->getHist(bookingString, histPointer).isSuccess()) {
182 std::string prefixedHistNameCopy = histName;
183 std::string prefixedTDirCopy = tDir;
184 std::string prefixedStreamCopy = stream;
185
186 std::string prefixedBookingString;
187 this->buildBookingString(prefixedBookingString,
188 prefixedHistNameCopy,
189 prefixedTDirCopy,
190 prefixedStreamCopy,
191 true);
192
193 if (!histSvc()->getHist(prefixedBookingString, histPointer).isSuccess()) {
194 m_msg << MSG::WARNING
195 << "Problem retrieving the histogram with name (including pre- and post-fixes) "
196 << m_histNamePrefix + histNameCopy + m_histNamePostfix
197 << " or with name " << histNameCopy
198 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
199 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
200 return nullptr;
201 }
202 }
203
204 m_histMap.insert(m_histMap.end(), std::pair<const hash_t, TH1*>(histHash, histPointer));
205 return histPointer;
206 }
207
208 return it->second;
209}
std::pair< StatusCode, TH1 * > getHist(ITHistSvc &svc, const std::string &name, size_t index=0)

◆ hist2d()

TH2 * AthHistogramming::hist2d ( const std::string & histName,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the retrieval of registered 2-d histograms.

Definition at line 371 of file AthHistogramming.h.

372{
373 // Get the TH1 pointer
374 TH1* th1Pointer = this->hist(histName, tDir, stream);
375 if ( !th1Pointer )
376 {
377 m_msg << MSG::ERROR
378 << "Cannot get a 2-d histogram with name " << histName
379 << "... will probably seg-fault!" << endmsg;
380 return NULL;
381 }
382 // If the TH1 pointer is valid, simply return the dynamic_cast
383 return dynamic_cast<TH2*>( th1Pointer );
384}

◆ hist3d()

TH3 * AthHistogramming::hist3d ( const std::string & histName,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the retrieval of registered 3-d histograms.

Definition at line 388 of file AthHistogramming.h.

389{
390 // Get the TH1 pointer
391 TH1* th1Pointer = this->hist(histName, tDir, stream);
392 if ( !th1Pointer )
393 {
394 m_msg << MSG::ERROR
395 << "Cannot get a 3-d histogram with name " << histName
396 << "... will probably seg-fault!" << endmsg;
397 return NULL;
398 }
399 // If the TH1 pointer is valid, simply return the dynamic_cast
400 return dynamic_cast<TH3*>( th1Pointer );
401}

◆ histSvc()

const ServiceHandle< ITHistSvc > & AthHistogramAlgorithm::histSvc ( ) const
inlineinherited

The standard THistSvc (for writing histograms and TTrees and more to a root file) Returns (kind of) a pointer to the THistSvc.

Definition at line 113 of file AthHistogramAlgorithm.h.

114{
115 return m_histSvc;
116}
ServiceHandle< ITHistSvc > m_histSvc
Default constructor: AthHistogramAlgorithm();.

◆ initialize()

StatusCode ZdcNtuple::initialize ( )
overridevirtual

Definition at line 102 of file ZdcNtuple.cxx.

103{
104 // Here you do everything that needs to be done at the very
105 // beginning on each worker node, e.g. create histograms and output
106 // trees. This method gets called before any input files are
107 // connected.
108
109 ANA_MSG_DEBUG("Howdy from Initialize!");
110
112 ANA_CHECK(m_zdcSumContainerName.initialize());
114
116 {
117 h_TCSigCut = new TH1D("_gapSigCut_", "", 98, -4.9, 4.9);
118 h_TCSigCut->SetContent(&m_gapThresholds[0]);
119
120 ANA_CHECK( book(TTree("zdcTree", "ZDC Tree")));
121 m_outputTree = tree( "zdcTree" );
122
123 m_outputTree->Branch("runNumber", &t_runNumber, "runNumber/i");
124 m_outputTree->Branch("eventNumber", &t_eventNumber, "eventNumber/i");
125 m_outputTree->Branch("lumiBlock", &t_lumiBlock, "lumiBlock/i");
126 m_outputTree->Branch("bunchGroup", &t_bunchGroup, "bunchGroup/b");
127 m_outputTree->Branch("bcid", &t_bcid, "bcid/i");
128 if (zdcInj) m_outputTree->Branch("vInj",&t_vInj,"vInj/F");
129 m_outputTree->Branch("avgIntPerCrossing", &t_avgIntPerCrossing, "avgIntPerCrossing/F");
130 m_outputTree->Branch("actIntPerCrossing", &t_actIntPerCrossing, "actIntPerCrossing/F");
131 m_outputTree->Branch("trigger", &t_trigger, "trigger/l");
132 m_outputTree->Branch("trigger_TBP", &t_trigger_TBP, "trigger_TBP/i");
133 m_outputTree->Branch("tbp", &t_tbp, "tbp[16]/i");
134 m_outputTree->Branch("tav", &t_tav, "tav[16]/i");
135 m_outputTree->Branch("passBits", &t_passBits, "passBits/i");
136 m_outputTree->Branch("extendedLevel1ID",&t_extendedLevel1ID,"extendedLevel1ID/i");
137 m_outputTree->Branch("timeStamp",&t_timeStamp,"timeStamp/i");
138 m_outputTree->Branch("timeStampNSOffset",&t_timeStampNSOffset,"timeStampNSOffset/i");
139 m_outputTree->Branch("zdcEventInfoError",&t_zdcEventInfoError,"zdcEventInfoError/b");
140 m_outputTree->Branch("zdcEventInfoErrorWord",&t_zdcEventInfoErrorWord,"zdcEventInfoErrorWord/i");
141 // ZDC and RPD decoding errors
142 m_outputTree->Branch("zdcDecodingError",&t_zdcDecodingError,"zdcDecodingError/b");
143 m_outputTree->Branch("rpdDecodingError",&t_rpdDecodingError,"rpdDecodingError/b");
144
145 if (enableZDC)
146 {
148 {
149 if (nsamplesZdc == 7)
150 {
151 ANA_MSG_INFO("Setting up for 7 samples");
152 m_outputTree->Branch("zdc_raw", &t_raw7, "zdc_raw[2][4][2][2][7]/s"); // 7 samples
153 }
154
155 if (nsamplesZdc == 15)
156 {
157 ANA_MSG_INFO("Setting up for 15 samples");
158 m_outputTree->Branch("zdc_raw", &t_raw15, "zdc_raw[2][4][2][2][15]/s"); // 15 samples
159 }
160
161 if (nsamplesZdc == 24)
162 {
163 ANA_MSG_INFO("Setting up for 24 samples");
164 m_outputTree->Branch("zdc_raw", &t_raw24, "zdc_raw[2][4][2][2][24]/s"); // 24 samples
165 m_outputTree->Branch("rpd_raw", &t_rpdRaw, "rpd_raw[2][16][24]/s"); // 24 samples
166 }
167 if (nsamplesZdc == 32)
168 {
169 ANA_MSG_INFO("Setting up for 32 samples");
170 m_outputTree->Branch("zdc_raw", &t_raw32, "zdc_raw[2][4][2][2][32]/s"); // 32 samples
171 m_outputTree->Branch("rpd_raw", &t_rpdRaw32, "rpd_raw[2][16][32]/s"); // 32 samples
172 }
173 if (nsamplesZdc == 40)
174 {
175 ANA_MSG_INFO("Setting up for 40 samples");
176 m_outputTree->Branch("zdc_raw", &t_raw40, "zdc_raw[2][4][2][2][40]/s"); // 40 samples
177 m_outputTree->Branch("rpd_raw", &t_rpdRaw40, "rpd_raw[2][16][40]/s"); // 40 samples
178 }
179 }
180
181 m_outputTree->Branch("zdc_ZdcAmp", &t_ZdcAmp, "zdc_ZdcAmp[2]/F");
182 m_outputTree->Branch("zdc_ZdcAmpErr", &t_ZdcAmpErr, "zdc_ZdcAmpErr[2]/F");
183 m_outputTree->Branch("zdc_ZdcEnergy", &t_ZdcEnergy, "zdc_ZdcEnergy[2]/F");
184 m_outputTree->Branch("zdc_ZdcEnergyErr", &t_ZdcEnergyErr, "zdc_ZdcEnergyErr[2]/F");
185 m_outputTree->Branch("zdc_ZdcNLEnergy", &t_ZdcNLEnergy, "zdc_ZdcNLEnergy[2]/F");
186 m_outputTree->Branch("zdc_ZdcNLEnergyErr", &t_ZdcNLEnergyErr, "zdc_ZdcNLEnergyErr[2]/F");
187 m_outputTree->Branch("zdc_ZdcTime", &t_ZdcTime, "zdc_ZdcTime[2]/F");
188 m_outputTree->Branch("zdc_ZdcStatus", &t_ZdcStatus, "zdc_ZdcStatus[2]/S");
189 m_outputTree->Branch("zdc_ZdcTrigEff", &t_ZdcTrigEff, "zdc_ZdcTrigEff[2]/F");
190 m_outputTree->Branch("zdc_ZdcModuleMask", &t_ZdcModuleMask, "zdc_ZdcModuleMask/i");
191 m_outputTree->Branch("zdc_ZdcLucrodTriggerSideAmp",&t_ZdcLucrodTriggerSideAmp,"zdc_ZdcLucrodTriggerSideAmp[2]/S");
192 m_outputTree->Branch("zdc_ZdcLucrodTriggerSideAmpLG",&t_ZdcLucrodTriggerSideAmpLG,"zdc_ZdcLucrodTriggerSideAmpLG[2]/S");
193
194 m_outputTree->Branch("zdc_ZdcModuleAmp", &t_ZdcModuleAmp, "zdc_ZdcModuleAmp[2][4]/F");
195 m_outputTree->Branch("zdc_ZdcModuleAmpUncorr", &t_ZdcModuleAmpUncorr, "zdc_ZdcModuleAmpUncorr[2][4]/F");
196 m_outputTree->Branch("zdc_ZdcModuleTime", &t_ZdcModuleTime, "zdc_ZdcModuleTime[2][4]/F");
197 m_outputTree->Branch("zdc_ZdcModuleFitAmp", &t_ZdcModuleFitAmp, "zdc_ZdcModuleFitAmp[2][4]/F");
198 m_outputTree->Branch("zdc_ZdcModuleFitT0", &t_ZdcModuleFitT0, "zdc_ZdcModuleFitT0[2][4]/F");
199 m_outputTree->Branch("zdc_ZdcModuleStatus", &t_ZdcModuleStatus, "zdc_ZdcModuleStatus[2][4]/i");
200 m_outputTree->Branch("zdc_ZdcModuleChisq", &t_ZdcModuleChisq, "zdc_ZdcModuleChisq[2][4]/F");
201 m_outputTree->Branch("zdc_ZdcModuleChisqRatio", &t_ZdcModuleChisqRatio, "zdc_ZdcModuleChisqRatio[2][4]/F");
202 m_outputTree->Branch("zdc_ZdcModuleCalibAmp", &t_ZdcModuleCalibAmp, "zdc_ZdcModuleCalibAmp[2][4]/F");
203 m_outputTree->Branch("zdc_ZdcModuleCalibTime", &t_ZdcModuleCalibTime, "zdc_ZdcModuleCalibTime[2][4]/F");
204 m_outputTree->Branch("zdc_ZdcModuleBkgdMaxFraction", &t_ZdcModuleBkgdMaxFraction, "zdc_ZdcModuleBkgdMaxFraction[2][4]/F");
205 m_outputTree->Branch("zdc_ZdcModuleAmpError", &t_ZdcModuleAmpError, "zdc_ZdcModuleAmpError[2][4]/F");
206 m_outputTree->Branch("zdc_ZdcModuleMinDeriv2nd", &t_ZdcModuleMinDeriv2nd, "zdc_ZdcModuleMinDeriv2nd[2][4]/F");
207 m_outputTree->Branch("zdc_ZdcModulePresample", &t_ZdcModulePresample, "zdc_ZdcModulePresample[2][4]/F");
208 m_outputTree->Branch("zdc_ZdcModulePreSampleAmp", &t_ZdcModulePreSampleAmp, "zdc_ZdcModulePreSampleAmp[2][4]/F");
209 m_outputTree->Branch("zdc_ZdcLucrodTriggerAmp",&t_ZdcLucrodTriggerAmp,"zdc_ZdcLucrodTriggerAmp[2][4]/S");
210 m_outputTree->Branch("zdc_ZdcLucrodTriggerAmpLG",&t_ZdcLucrodTriggerAmpLG,"zdc_ZdcLucrodTriggerAmpLG[2][4]/S");
211 m_outputTree->Branch("zdc_ZdcModuleMaxADC",&t_ZdcModuleMaxADC,"zdc_ZdcModuleMaxADC[2][4]/F");
212 m_outputTree->Branch("zdc_ZdcModuleMaxADCHG",&t_ZdcModuleMaxADCHG,"zdc_ZdcModuleMaxADCHG[2][4]/F");
213 m_outputTree->Branch("zdc_ZdcModuleMaxADCLG",&t_ZdcModuleMaxADCLG,"zdc_ZdcModuleMaxADCLG[2][4]/F");
214 m_outputTree->Branch("zdc_ZdcModulePeakADCHG",&t_ZdcModulePeakADCHG,"zdc_ZdcModulePeakADCHG[2][4]/F");
215 m_outputTree->Branch("zdc_ZdcModulePeakADCLG",&t_ZdcModulePeakADCLG,"zdc_ZdcModulePeakADCLG[2][4]/F");
216 m_outputTree->Branch("zdc_ZdcModuleAmpLGRefit", &t_ZdcModuleAmpLGRefit, "zdc_ZdcModuleAmpLGRefit[2][4]/F");
217 m_outputTree->Branch("zdc_ZdcModuleAmpCorrLGRefit", &t_ZdcModuleAmpCorrLGRefit, "zdc_ZdcModuleAmpCorrLGRefit[2][4]/F");
218 m_outputTree->Branch("zdc_ZdcModuleT0LGRefit", &t_ZdcModuleT0LGRefit, "zdc_ZdcModuleT0LGRefit[2][4]/F");
219 m_outputTree->Branch("zdc_ZdcModuleT0SubLGRefit", &t_ZdcModuleT0SubLGRefit, "zdc_ZdcModuleT0SubLGRefit[2][4]/F");
220 m_outputTree->Branch("zdc_ZdcModuleChisqLGRefit", &t_ZdcModuleChisqLGRefit, "zdc_ZdcModuleChisqLGRefit[2][4]/F");
221
222 if(m_isMC){
223 //Modules
224 m_outputTree->Branch("zdc_ZdcModuleTruthTotal",&t_ZdcModuleTruthTotal,"zdc_ZdcModuleTruthTotal[2][7]/F");
225 m_outputTree->Branch("zdc_ZdcModuleTruthInvisible",&t_ZdcModuleTruthInvis,"zdc_ZdcModuleTruthInvisible[2][7]/F");
226 m_outputTree->Branch("zdc_ZdcModuleTruthEM",&t_ZdcModuleTruthEM,"zdc_ZdcModuleTruthEM[2][7]/F");
227 m_outputTree->Branch("zdc_ZdcModuleTruthNonEM",&t_ZdcModuleTruthNonEM,"zdc_ZdcModuleTruthNonEM[2][7]/F");
228 m_outputTree->Branch("zdc_ZdcModuleTruthEscaped",&t_ZdcModuleTruthEscaped,"zdc_ZdcModuleTruthEscaped[2][7]/F");
229 m_outputTree->Branch("zdc_ZdcModuleTruthNphotons",&t_ZdcModuleTruthNphotons,"zdc_ZdcModuleTruthNphotons[2][7]/i");
230 m_outputTree->Branch("zdc_RpdModuleTruthNphotons",&t_RpdModuleTruthNphotons,"zdc_RpdModuleTruthNphotons[2][16]/i");
231
232 //Sums
233 m_outputTree->Branch("zdc_ZdcTruthTotal",&t_ZdcTruthTotal,"zdc_ZdcTruthTotal[2]/F");
234 m_outputTree->Branch("zdc_ZdcTruthInvisible",&t_ZdcTruthInvis, "zdc_ZdcTruthInvisible[2]/F");
235 m_outputTree->Branch("zdc_ZdcTruthEM",&t_ZdcTruthEM,"zdc_ZdcTruthEM[2]/F");
236 m_outputTree->Branch("zdc_ZdcTruthNonEM",&t_ZdcTruthNonEM,"zdc_ZdcTruthNonEM[2]/F");
237 m_outputTree->Branch("zdc_ZdcTruthEscaped",&t_ZdcTruthEscaped,"zdc_ZdcTruthEscaped[2]/F");
238
239 //Event gen particles
240 m_outputTree->Branch("zdc_ZdcTruthParticlePosx",&t_ZdcTruthParticlePosx);
241 m_outputTree->Branch("zdc_ZdcTruthParticlePosy",&t_ZdcTruthParticlePosy);
242 m_outputTree->Branch("zdc_ZdcTruthParticlePosz",&t_ZdcTruthParticlePosz);
243 m_outputTree->Branch("zdc_ZdcTruthParticleTime",&t_ZdcTruthParticleTime);
244 m_outputTree->Branch("zdc_ZdcTruthParticlePx",&t_ZdcTruthParticlePx);
245 m_outputTree->Branch("zdc_ZdcTruthParticlePy",&t_ZdcTruthParticlePy);
246 m_outputTree->Branch("zdc_ZdcTruthParticlePz",&t_ZdcTruthParticlePz);
247 m_outputTree->Branch("zdc_ZdcTruthParticleEnergy",&t_ZdcTruthParticleEnergy);
248 m_outputTree->Branch("zdc_ZdcTruthParticlePid",&t_ZdcTruthParticlePid);
249 m_outputTree->Branch("zdc_ZdcTruthParticleStatus",&t_ZdcTruthParticleStatus);
250 }
251 }
252 if (enableRPD)
253 {
254 if (enableRPDAmp) {
255 m_outputTree->Branch("zdc_RpdChannelBaseline",&t_RpdChannelBaseline,"zdc_RpdChannelBaseline[2][16]/F");
256 m_outputTree->Branch("zdc_RpdChannelPileupExpFitParams",&t_RpdChannelPileupExpFitParams,"zdc_RpdChannelPileupExpFitParams[2][16][2]/F");
257 m_outputTree->Branch("zdc_RpdChannelPileupStretchedExpFitParams",&t_RpdChannelPileupStretchedExpFitParams,"zdc_RpdChannelPileupStretchedExpFitParams[2][16][3]/F");
258 m_outputTree->Branch("zdc_RpdChannelPileupExpFitParamErrs",&t_RpdChannelPileupExpFitParamErrs,"zdc_RpdChannelPileupExpFitParamErrs[2][16][2]/F");
259 m_outputTree->Branch("zdc_RpdChannelPileupStretchedExpFitParamErrs",&t_RpdChannelPileupStretchedExpFitParamErrs,"zdc_RpdChannelPileupStretchedExpFitParamErrs[2][16][3]/F");
260 m_outputTree->Branch("zdc_RpdChannelPileupExpFitMSE",&t_RpdChannelPileupExpFitMSE,"zdc_RpdChannelPileupExpFitMSE[2][16]/F");
261 m_outputTree->Branch("zdc_RpdChannelPileupStretchedExpFitMSE",&t_RpdChannelPileupStretchedExpFitMSE,"zdc_RpdChannelPileupStretchedExpFitMSE[2][16]/F");
262 m_outputTree->Branch("zdc_RpdChannelAmplitude",&t_RpdChannelAmplitude,"zdc_RpdChannelAmplitude[2][16]/F");
263 m_outputTree->Branch("zdc_RpdChannelAmplitudeCalib",&t_RpdChannelAmplitudeCalib,"zdc_RpdChannelAmplitudeCalib[2][16]/F");
264 m_outputTree->Branch("zdc_RpdChannelMaxADC",&t_RpdChannelMaxADC,"zdc_RpdChannelMaxADC[2][16]/F");
265 m_outputTree->Branch("zdc_RpdChannelMaxADCCalib",&t_RpdChannelMaxADCCalib,"zdc_RpdChannelMaxADCCalib[2][16]/F");
266 m_outputTree->Branch("zdc_RpdChannelMaxSample",&t_RpdChannelMaxSample,"zdc_RpdChannelMaxSample[2][16]/i");
267 m_outputTree->Branch("zdc_RpdChannelStatus",&t_RpdChannelStatus,"zdc_RpdChannelStatus[2][16]/i");
268 m_outputTree->Branch("zdc_RpdChannelPileupFrac",&t_RpdChannelPileupFrac,"zdc_RpdChannelPileupFrac[2][16]/F");
269 m_outputTree->Branch("zdc_RpdSideStatus",&t_RpdSideStatus,"zdc_RpdSideStatus[2]/i");
270 }
271 if (enableCentroid)
272 {
273 m_outputTree->Branch("zdc_centroidAvailable", &t_centroidDecorationsAvailable);
274 m_outputTree->Branch("zdc_centroidEventValid", &t_centroidEventValid, "zdc_centroidEventValid/B");
275 m_outputTree->Branch("zdc_centroidStatus", &t_centroidStatus, "zdc_centroidStatus[2]/i");
276 m_outputTree->Branch("zdc_RPDChannelSubtrAmp", &t_RPDChannelSubtrAmp, "zdc_RPDChannelSubtrAmp[2][16]/F");
277 m_outputTree->Branch("zdc_RPDSubtrAmpSum", &t_RPDSubtrAmpSum, "zdc_RPDSubtrAmpSum[2]/F");
278 m_outputTree->Branch("zdc_xCentroidPreGeomCorPreAvgSubtr", &t_xCentroidPreGeomCorPreAvgSubtr, "zdc_xCentroidPreGeomCorPreAvgSubtr[2]/F");
279 m_outputTree->Branch("zdc_yCentroidPreGeomCorPreAvgSubtr", &t_yCentroidPreGeomCorPreAvgSubtr, "zdc_yCentroidPreGeomCorPreAvgSubtr[2]/F");
280 m_outputTree->Branch("zdc_xCentroidPreAvgSubtr", &t_xCentroidPreAvgSubtr, "zdc_xCentroidPreAvgSubtr[2]/F");
281 m_outputTree->Branch("zdc_yCentroidPreAvgSubtr", &t_yCentroidPreAvgSubtr, "zdc_yCentroidPreAvgSubtr[2]/F");
282 m_outputTree->Branch("zdc_xCentroid", &t_xCentroid, "zdc_xCentroid[2]/F");
283 m_outputTree->Branch("zdc_yCentroid", &t_yCentroid, "zdc_yCentroid[2]/F");
284 m_outputTree->Branch("zdc_xRowCentroid", &t_xRowCentroid, "zdc_xRowCentroid[2][4]/F");
285 m_outputTree->Branch("zdc_yColCentroid", &t_yColCentroid, "zdc_yColCentroid[2][4]/F");
286 m_outputTree->Branch("zdc_reactionPlaneAngle", &t_reactionPlaneAngle, "zdc_reactionPlaneAngle[2]/F");
287 m_outputTree->Branch("zdc_cosDeltaReactionPlaneAngle", &t_cosDeltaReactionPlaneAngle, "zdc_cosDeltaReactionPlaneAngle/F");
288 }
289 }
290
291 if (!(zdcCalib || zdcLaser || zdcOnly || zdcInj))
292 {
293 m_outputTree->Branch("mbts_in_e", &t_mbts_in_e, "mbts_in_e[2][8]/F");
294 m_outputTree->Branch("mbts_in_t", &t_mbts_in_t, "mbts_in_t[2][8]/F");
295 m_outputTree->Branch("mbts_out_e", &t_mbts_out_e, "mbts_out_e[2][4]/F");
296 m_outputTree->Branch("mbts_out_t", &t_mbts_out_t, "mbts_out_t[2][4]/F");
297
298 m_outputTree->Branch("T2mbts_in_e", &t_T2mbts_in_e, "T2mbts_in_e[2][8]/F");
299 m_outputTree->Branch("T2mbts_in_t", &t_T2mbts_in_t, "T2mbts_in_t[2][8]/F");
300 m_outputTree->Branch("T2mbts_out_e", &t_T2mbts_out_e, "T2mbts_out_e[2][4]/F");
301 m_outputTree->Branch("T2mbts_out_t", &t_T2mbts_out_t, "T2mbts_out_t[2][4]/F");
302
303 m_outputTree->Branch("L1ET", &t_L1ET, "L1ET/F");
304 m_outputTree->Branch("L1ET24", &t_L1ET24, "L1ET24/F");
305
306 m_outputTree->Branch("totalEt", &t_totalEt, "totalEt/F");
307 m_outputTree->Branch("totalEt_TTsum", &t_totalEt_TTsum, "totalEt_TTsum/F");
308
309 m_outputTree->Branch("totalEt24", &t_totalEt24, "totalEt24/F");
310 m_outputTree->Branch("totalEt24_TTsum", &t_totalEt24_TTsum, "totalEt24_TTsum/F");
311
312 m_outputTree->Branch("fcalEt", &t_fcalEt, "fcalEt/F");
313 m_outputTree->Branch("fcalEtA", &t_fcalEtA, "fcalEtA/F");
314 m_outputTree->Branch("fcalEtC", &t_fcalEtC, "fcalEtC/F");
315 m_outputTree->Branch("fcalEtA_TT", &t_fcalEtA_TT, "fcalEtA_TT/F");
316 m_outputTree->Branch("fcalEtC_TT", &t_fcalEtC_TT, "fcalEtC_TT/F");
317
318 m_outputTree->Branch("nvx", &t_nvx, "nvx/I");
319 m_outputTree->Branch("vx", &t_vx, "vx[3]/F");
320 m_outputTree->Branch("pvindex", &t_pvindex, "pvindex/I");
321 m_outputTree->Branch("vxntrk", &t_vxntrk, "vxntrk/I");
322 m_outputTree->Branch("vx_trk_index", "vector<int>", &t_vx_trk_index);
323 m_outputTree->Branch("vxtype", &t_vxtype, "vxtype/I");
324 m_outputTree->Branch("vxcov", &t_vxcov, "vxcov[6]/F");
325 m_outputTree->Branch("vxsumpt2", &t_vxsumpt2, "vxsumpt2/F");
326 m_outputTree->Branch("nstrong", &t_nstrong, "nstrong/I");
327 m_outputTree->Branch("puvxntrk", &t_puvxntrk, "puvxntrk/I");
328 m_outputTree->Branch("puvxsumpt", &t_puvxsumpt, "puvxsumpt/F");
329 m_outputTree->Branch("puvxz", &t_puvxz, "puvxz/F");
330 m_outputTree->Branch("vxnlooseprimary", &t_vxnlooseprimary, "vxnlooseprimary/I");
331 m_outputTree->Branch("vxnminbias", &t_vxnminbias, "vxnminbias/I");
332 m_outputTree->Branch("vxngoodmuon", &t_vxngoodmuon, "vxngoodmuon/I");
333
334 m_outputTree->Branch("t_nvtx", &t_nvtx, "nvtx/I");
335 m_outputTree->Branch("vtx_type", "vector<int8_t>", &t_vtx_type);
336 m_outputTree->Branch("vtx_x", "vector<float>", &t_vtx_x);
337 m_outputTree->Branch("vtx_y", "vector<float>", &t_vtx_y);
338 m_outputTree->Branch("vtx_z", "vector<float>", &t_vtx_z);
339 m_outputTree->Branch("vtx_ntrk_all", "vector<int16_t>", &t_vtx_ntrk_all);
340 m_outputTree->Branch("vtx_sumpt2_all", "vector<float>", &t_vtx_sumpt2_all);
341 m_outputTree->Branch("vtx_ntrk", "vector<int16_t>", &t_vtx_ntrk);
342 m_outputTree->Branch("vtx_sumpt2", "vector<float>", &t_vtx_sumpt2);
343 m_outputTree->Branch("vtx_trk_index", "vector< vector<int16_t> >", &t_vtx_trk_index);
344
345 m_outputTree->Branch("mbts_countA", &t_mbts_countA, "mbts_countA/s");
346 m_outputTree->Branch("mbts_countC", &t_mbts_countC, "mbts_countC/s");
347 m_outputTree->Branch("T2mbts_countAin", &t_T2mbts_countAin, "T2mbts_countAin/s");
348 m_outputTree->Branch("T2mbts_countCin", &t_T2mbts_countCin, "T2mbts_countCin/s");
349 m_outputTree->Branch("mbts_timeA", &t_mbts_timeA, "mbts_timeA/F");
350 m_outputTree->Branch("mbts_timeC", &t_mbts_timeC, "mbts_timeC/F");
351 m_outputTree->Branch("mbts_timeDiff", &t_mbts_timeDiff, "mbts_timeDiff/F");
352
353 t_nclus = 0;
354 m_outputTree->Branch("nclus", &t_nclus, "nclus/i");
355 m_outputTree->Branch("clusEt", &t_clusEt, "clusEt/F");
356 m_outputTree->Branch("clusEtMax", &t_clusEtMax, "clusEtMax/F");
357 m_outputTree->Branch("clusetaMax", &t_clusetaMax, "clusetaMax/F");
358 m_outputTree->Branch("clusphiMax", &t_clusphiMax, "clusphiMax/F");
359
360 m_outputTree->Branch("cc_pt", "vector<float>", &t_cc_pt);
361 m_outputTree->Branch("cc_eta", "vector<float>", &t_cc_eta);
362 m_outputTree->Branch("cc_phi", "vector<float>", &t_cc_phi);
363 m_outputTree->Branch("cc_e", "vector<float>", &t_cc_e);
364 m_outputTree->Branch("cc_raw_m", "vector<float>", &t_cc_raw_m);
365 m_outputTree->Branch("cc_raw_eta", "vector<float>", &t_cc_raw_eta);
366 m_outputTree->Branch("cc_raw_phi", "vector<float>", &t_cc_raw_phi);
367 m_outputTree->Branch("cc_raw_e", "vector<float>", &t_cc_raw_e);
368 m_outputTree->Branch("cc_raw_samp", "vector<vector<float>>", &t_cc_raw_samp);
369 m_outputTree->Branch("cc_sig", "vector<float>", &t_cc_sig);
370 m_outputTree->Branch("cc_layer", "vector<int>", &t_cc_layer);
371
372 m_outputTree->Branch("edgeGapA", &t_edgeGapA, "edgeGapA/F");
373 m_outputTree->Branch("edgeGapC", &t_edgeGapC, "edgeGapC/F");
374
375 m_outputTree->Branch("ntrk", &t_ntrk, "ntrk/i");
376 if (enableTracks)
377 {
378 m_outputTree->Branch("trk_pt", "vector<float>", &t_trk_pt);
379 m_outputTree->Branch("trk_eta", "vector<float>", &t_trk_eta);
380 m_outputTree->Branch("trk_theta", "vector<float>", &t_trk_theta);
381 m_outputTree->Branch("trk_phi", "vector<float>", &t_trk_phi);
382 m_outputTree->Branch("trk_e", "vector<float>", &t_trk_e);
383 m_outputTree->Branch("trk_index", "vector<int>", &t_trk_index);
384 m_outputTree->Branch("trk_d0", "vector<float>", &t_trk_d0);
385 m_outputTree->Branch("trk_z0", "vector<float>", &t_trk_z0);
386 m_outputTree->Branch("trk_vz", "vector<float>", &t_trk_vz);
387 m_outputTree->Branch("trk_vtxz", "vector<float>", &t_trk_vtxz);
388 m_outputTree->Branch("trk_pixeldEdx", "vector<float>", &t_trk_pixeldEdx);
389 m_outputTree->Branch("trk_charge", "vector<int8_t>", &t_trk_charge);
390 m_outputTree->Branch("trk_quality", "vector<int16_t>", &t_trk_quality);
391 m_outputTree->Branch("trk_nPixHits", "vector<uint8_t>", &t_trk_nPixHits);
392 m_outputTree->Branch("trk_nSctHits", "vector<uint8_t>", &t_trk_nSctHits);
393 m_outputTree->Branch("trk_nPixDead", "vector<uint8_t>", &t_trk_nPixDead);
394 m_outputTree->Branch("trk_nSctDead", "vector<uint8_t>", &t_trk_nSctDead);
395 m_outputTree->Branch("trk_nPixHoles", "vector<uint8_t>", &t_trk_nPixHoles);
396 m_outputTree->Branch("trk_nSctHoles", "vector<uint8_t>", &t_trk_nSctHoles);
397 m_outputTree->Branch("trk_nTrtHits", "vector<uint8_t>", &t_trk_nTrtHits);
398 m_outputTree->Branch("trk_nTrtOutliers", "vector<uint8_t>", &t_trk_nTrtOutliers);
399 m_outputTree->Branch("trk_inPixHits", "vector<uint8_t>", &t_trk_inPixHits);
400 m_outputTree->Branch("trk_exPixHits", "vector<uint8_t>", &t_trk_exPixHits);
401 m_outputTree->Branch("trk_ninPixHits", "vector<uint8_t>", &t_trk_ninPixHits);
402 m_outputTree->Branch("trk_nexPixHits", "vector<uint8_t>", &t_trk_nexPixHits);
403 }
404
406 m_outputTree->Branch("nProtons", &nProtons, "nProtons/i");
407 m_outputTree->Branch("proton_pt", "vector<double>", &proton_pt);
408 m_outputTree->Branch("proton_eta", "vector<double>", &proton_eta);
409 m_outputTree->Branch("proton_phi", "vector<double>", &proton_phi);
410 m_outputTree->Branch("proton_e", "vector<double>", &proton_e);
411 m_outputTree->Branch("proton_side", "vector<int>", &proton_side);
412 m_outputTree->Branch("proton_eLoss", "vector<double>", &proton_eLoss);
413 m_outputTree->Branch("proton_t", "vector<double>", &proton_t);
414 m_outputTree->Branch("proton_track_stationID", "vector<vector<int>>", &proton_track_stationID);
415 m_outputTree->Branch("proton_track_nClusters", "vector<vector<int>>", &proton_track_nClusters);
416 m_outputTree->Branch("proton_track_xLocal", "vector<vector<float>>", &proton_track_xLocal);
417 m_outputTree->Branch("proton_track_yLocal", "vector<vector<float>>", &proton_track_yLocal);
418 m_outputTree->Branch("proton_track_zLocal", "vector<vector<float>>", &proton_track_zLocal);
419 m_outputTree->Branch("proton_track_xSlope", "vector<vector<float>>", &proton_track_xSlope);
420 m_outputTree->Branch("proton_track_ySlope", "vector<vector<float>>", &proton_track_ySlope);
421 }
422
423 }
424 }
425
426 ANA_MSG_DEBUG("Anti-howdy from Initialize!");
427
428
429 // Here you do everything that you need to do after the first input
430 // file has been connected and before the first event is processed,
431 // e.g. create additional histograms based on which variables are
432 // available in the input files. You can also create all of your
433 // histograms and trees in here, but be aware that this method
434 // doesn't get called if no events are processed. So any objects
435 // you create here won't be available in the output if you have no
436 // input events.
437
438 ANA_MSG_INFO("enableOutputTree = " << enableOutputTree);
439 ANA_MSG_INFO("writeOnlyTriggers = " << writeOnlyTriggers);
440 ANA_MSG_INFO("enableOutputSamples = " << enableOutputSamples);
441 ANA_MSG_INFO("enableTrigger = " << enableTrigger);
442 ANA_MSG_INFO("enableRPD = " << enableRPD);
443 ANA_MSG_INFO("enableCentroid = " << enableCentroid);
444 ANA_MSG_INFO("zdcCalib = " << zdcCalib);
445 ANA_MSG_INFO("zdcInj = " << zdcInj);
446 ANA_MSG_INFO("zdcLaser = " << zdcLaser);
447 ANA_MSG_INFO("zdcConfig = " << zdcConfig);
448 ANA_MSG_INFO("reprocZdc = " << reprocZdc);
449 ANA_MSG_INFO("auxSuffix = " << auxSuffix );
450 ANA_MSG_INFO("zdcLowGainMode = " << zdcLowGainMode);
451 ANA_MSG_INFO("enableID = " << enableID);
452 ANA_MSG_INFO("enableCalo = " << enableCalo);
453 ANA_MSG_INFO("enableClusters = " << enableClusters);
454 ANA_MSG_INFO("trackLimit = " << trackLimit);
455 ANA_MSG_INFO("trackLimitReject = " << trackLimitReject);
456 ANA_MSG_INFO("isMC = " << m_isMC);
457 ANA_MSG_INFO("useGRL = " << useGRL);
458 ANA_MSG_INFO("grlFilename = " << grlFilename);
459 ANA_MSG_INFO("slimmed = " << slimmed);
460 ANA_MSG_INFO("zdcOnly = " << zdcOnly);
461 ANA_MSG_INFO("flipDelay = " << flipDelay);
462 ANA_MSG_INFO("nsamplesZdc = " << nsamplesZdc);
463 ANA_MSG_INFO("lhcf2022 = " << lhcf2022);
464 ANA_MSG_INFO("lhcf2022afp = " << lhcf2022afp);
465 ANA_MSG_INFO("lhcf2022zdc = " << lhcf2022zdc);
466 ANA_MSG_INFO("doZdcCalib = " << doZdcCalib);
467
468 ANA_MSG_DEBUG("initialize: Initialize!");
469
470
471 // GRL
472
473 if (useGRL)
474 {
475 const char* fullGRLFilePath = gSystem->ExpandPathName (grlFilename.c_str());
476 ANA_MSG_INFO("GRL: " << fullGRLFilePath);
477 std::vector<std::string> vecStringGRL;
478 vecStringGRL.push_back(fullGRLFilePath);
479 ANA_CHECK(m_grl.setProperty( "GoodRunsListVec", vecStringGRL));
480 ANA_CHECK(m_grl.setProperty("PassThrough", false)); // if true (default) will ignore result of GRL and will just pass all events
481 ANA_CHECK(m_grl.initialize());
482
483 }
484
485 if (enableTracks)
486 {
487 ANA_CHECK(m_selTool.retrieve());
488 }
489
490 if (enableTrigger) // HLT related
491 {
492 ANA_MSG_INFO("Trying to initialize TDT");
493 ANA_CHECK(m_trigDecisionTool.retrieve());
494 }
495
496 // ZDC re-reco tool
497 if (reprocZdc)
498 {
499 m_zdcAnalysisTool.setTypeAndName("ZDC::ZdcAnalysisTool/ZdcAnalysisTool");
500
501 ANA_MSG_INFO("Trying to configure ZDC Analysis Tool!");
502
503 ANA_CHECK(m_zdcAnalysisTool.setProperty("FlipEMDelay", flipDelay));
504 ANA_CHECK(m_zdcAnalysisTool.setProperty("LowGainMode", zdcLowGainMode));
505 ANA_CHECK(m_zdcAnalysisTool.setProperty("DoCalib", doZdcCalib));
506 ANA_CHECK(m_zdcAnalysisTool.setProperty("Configuration", zdcConfig));
507 ANA_CHECK(m_zdcAnalysisTool.setProperty("AuxSuffix", auxSuffix));
508 ANA_CHECK(m_zdcAnalysisTool.setProperty("ForceCalibRun", -1));
509
510 ANA_MSG_INFO("Setting up zdcConfig=" << zdcConfig);
511 if (zdcConfig=="LHCf2022")
512 {
513 ANA_CHECK(m_zdcAnalysisTool.setProperty("DoTrigEff", false)); // for now
514 ANA_CHECK(m_zdcAnalysisTool.setProperty("DoTimeCalib", false)); // for now
515 ANA_CHECK(m_zdcAnalysisTool.setProperty("Configuration", "LHCf2022"));
516 }
517 else if (zdcConfig == "PbPb2018")
518 {
519 ANA_CHECK(m_zdcAnalysisTool.setProperty("Configuration", "PbPb2018"));
520 }
521 else if (zdcConfig == "pPb2016")
522 {
523 ANA_CHECK(m_zdcAnalysisTool.setProperty("Configuration", "pPb2016"));
524 }
525 else if (zdcConfig == "PbPb2015")
526 {
527 ANA_CHECK(m_zdcAnalysisTool.setProperty("Configuration", "PbPb2015"));
528 }
529 else if (zdcConfig == "OONeNe2025")
530 {
531 ANA_CHECK(m_zdcAnalysisTool.setProperty("DoTrigEff", false)); // for now
532 ANA_CHECK(m_zdcAnalysisTool.setProperty("DoTimeCalib", true)); // for now
533 ANA_CHECK(m_zdcAnalysisTool.setProperty("Configuration", "OONeNe2025"));
534 }
535
536 if (flipDelay)
537 ANA_MSG_INFO("FLIP ZDC DELAY IN EM MODULES");
538 else
539 ANA_MSG_INFO("NO FLIP ZDC DELAY IN EM MODULES");
540
541
542 ANA_MSG_INFO("Trying to initialize ZDC Analysis Tool!");
543 ANA_CHECK(m_zdcAnalysisTool.initialize());
544 }
545
546 if (zdcInj)
547 {
548 m_zdcInjPulserAmpMap = std::make_shared<ZdcInjPulserAmpMap>();
549 ATH_MSG_INFO( "Using JSON file for injector-pulse voltage at path " << m_zdcInjPulserAmpMap->getFilePath() );
550 }
551
552 return StatusCode::SUCCESS;
553}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
std::vector< float > t_cc_raw_phi
Definition ZdcNtuple.h:399
float t_yCentroidPreGeomCorPreAvgSubtr[2]
Definition ZdcNtuple.h:274
float t_cosDeltaReactionPlaneAngle
Definition ZdcNtuple.h:282
float t_mbts_timeDiff
Definition ZdcNtuple.h:346
std::vector< double > proton_t
Definition ZdcNtuple.h:417
float t_ZdcModuleFitT0[2][4]
Definition ZdcNtuple.h:220
float t_yCentroid[2]
Definition ZdcNtuple.h:278
std::vector< float > t_cc_pt
Definition ZdcNtuple.h:391
float t_RpdChannelPileupStretchedExpFitParamErrs[2][16][3]
Definition ZdcNtuple.h:255
SG::ReadHandleKey< McEventCollection > m_mcEventCollectionName
Definition ZdcNtuple.h:111
short t_ZdcStatus[2]
Definition ZdcNtuple.h:195
std::vector< float > t_ZdcTruthParticlePy
Definition ZdcNtuple.h:210
float t_RpdChannelAmplitudeCalib[2][16]
Definition ZdcNtuple.h:259
uint32_t t_ntrk
Definition ZdcNtuple.h:362
float t_ZdcTruthEM[2]
Definition ZdcNtuple.h:202
float t_totalEt
Definition ZdcNtuple.h:320
float t_RPDSubtrAmpSum[2]
Definition ZdcNtuple.h:272
unsigned int t_RpdSideStatus[2]
Definition ZdcNtuple.h:265
float t_ZdcModuleChisqLGRefit[2][4]
Definition ZdcNtuple.h:242
float t_clusphiMax
Definition ZdcNtuple.h:406
float t_ZdcModuleT0SubLGRefit[2][4]
Definition ZdcNtuple.h:241
unsigned short t_ZdcLucrodTriggerAmpLG[2][4]
Definition ZdcNtuple.h:232
float t_RpdChannelAmplitude[2][16]
Definition ZdcNtuple.h:258
std::vector< uint8_t > t_trk_nPixHoles
Definition ZdcNtuple.h:379
float t_puvxz
Definition ZdcNtuple.h:292
std::vector< uint8_t > t_trk_nSctHoles
Definition ZdcNtuple.h:380
uint16_t t_mbts_countA
Definition ZdcNtuple.h:342
float t_fcalEtC
Definition ZdcNtuple.h:314
unsigned short t_ZdcLucrodTriggerSideAmp[2]
Definition ZdcNtuple.h:198
unsigned int t_RpdModuleTruthNphotons[2][16]
Definition ZdcNtuple.h:266
std::vector< int > t_vx_trk_index
Definition ZdcNtuple.h:287
float t_ZdcModuleAmpUncorr[2][4]
Definition ZdcNtuple.h:217
float t_reactionPlaneAngle[2]
Definition ZdcNtuple.h:281
std::vector< std::vector< float > > proton_track_ySlope
Definition ZdcNtuple.h:423
unsigned int t_ZdcModuleMask
Definition ZdcNtuple.h:196
std::vector< float > t_trk_vz
Definition ZdcNtuple.h:370
std::vector< float > t_trk_pt
Definition ZdcNtuple.h:363
uint32_t t_eventNumber
Definition ZdcNtuple.h:150
float t_RpdChannelPileupExpFitParams[2][16][2]
Definition ZdcNtuple.h:252
float t_totalEt24
Definition ZdcNtuple.h:322
uint16_t t_raw32[2][4][2][2][32]
Definition ZdcNtuple.h:354
float t_RpdChannelMaxADCCalib[2][16]
Definition ZdcNtuple.h:261
std::vector< int > t_trk_index
Definition ZdcNtuple.h:374
float t_clusEtMax
Definition ZdcNtuple.h:404
std::vector< std::vector< float > > proton_track_xLocal
Definition ZdcNtuple.h:419
float t_T2mbts_in_e[2][8]
Definition ZdcNtuple.h:180
uint16_t t_raw7[2][4][2][2][7]
Definition ZdcNtuple.h:351
float t_vInj
Definition ZdcNtuple.h:153
std::vector< float > t_cc_raw_e
Definition ZdcNtuple.h:400
float t_ZdcModuleChisqRatio[2][4]
Definition ZdcNtuple.h:222
float t_mbts_in_t[2][8]
Definition ZdcNtuple.h:177
std::vector< int16_t > t_vtx_ntrk
Definition ZdcNtuple.h:307
float t_ZdcAmpErr[2]
Definition ZdcNtuple.h:189
float t_vxcov[6]
Definition ZdcNtuple.h:290
float t_RpdChannelMaxADC[2][16]
Definition ZdcNtuple.h:260
float t_ZdcModuleCalibTime[2][4]
Definition ZdcNtuple.h:225
float t_ZdcModulePresample[2][4]
Definition ZdcNtuple.h:229
float t_ZdcNLEnergy[2]
Definition ZdcNtuple.h:192
std::vector< float > t_vtx_sumpt2_all
Definition ZdcNtuple.h:306
std::vector< int16_t > t_vtx_ntrk_all
Definition ZdcNtuple.h:305
float t_xRowCentroid[2][4]
Definition ZdcNtuple.h:279
unsigned int t_RpdChannelMaxSample[2][16]
Definition ZdcNtuple.h:262
std::vector< float > t_cc_raw_eta
Definition ZdcNtuple.h:398
float t_actIntPerCrossing
Definition ZdcNtuple.h:160
uint64_t t_trigger
Definition ZdcNtuple.h:167
bool t_centroidDecorationsAvailable
Definition ZdcNtuple.h:268
std::vector< std::vector< int16_t > > t_vtx_trk_index
Definition ZdcNtuple.h:309
std::vector< float > t_trk_eta
Definition ZdcNtuple.h:364
int t_puvxntrk
Definition ZdcNtuple.h:293
uint16_t t_raw15[2][4][2][2][15]
Definition ZdcNtuple.h:352
std::vector< float > t_cc_eta
Definition ZdcNtuple.h:392
TH1 * h_TCSigCut
Definition ZdcNtuple.h:339
uint16_t t_T2mbts_countCin
Definition ZdcNtuple.h:349
float t_xCentroidPreAvgSubtr[2]
Definition ZdcNtuple.h:275
float t_ZdcTrigEff[2]
Definition ZdcNtuple.h:197
float t_ZdcModuleMinDeriv2nd[2][4]
Definition ZdcNtuple.h:228
std::vector< float > t_trk_vtxz
Definition ZdcNtuple.h:371
float t_RPDChannelSubtrAmp[2][16]
Definition ZdcNtuple.h:271
float t_ZdcNLEnergyErr[2]
Definition ZdcNtuple.h:193
uint32_t t_passBits
Definition ZdcNtuple.h:155
float t_ZdcModuleChisq[2][4]
Definition ZdcNtuple.h:221
std::vector< int8_t > t_vtx_type
Definition ZdcNtuple.h:301
float t_T2mbts_out_e[2][4]
Definition ZdcNtuple.h:181
std::vector< int > t_cc_layer
Definition ZdcNtuple.h:396
uint8_t t_rpdDecodingError
Definition ZdcNtuple.h:165
float t_ZdcModuleAmpError[2][4]
Definition ZdcNtuple.h:226
float t_ZdcModuleTime[2][4]
Definition ZdcNtuple.h:218
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecisionTool
Definition ZdcNtuple.h:101
int t_nstrong
Definition ZdcNtuple.h:295
std::vector< float > t_trk_theta
Definition ZdcNtuple.h:367
std::vector< uint8_t > t_trk_ninPixHits
Definition ZdcNtuple.h:385
uint16_t t_T2mbts_countAin
Definition ZdcNtuple.h:348
uint32_t t_tav[16]
Definition ZdcNtuple.h:185
std::vector< float > t_cc_e
Definition ZdcNtuple.h:394
double m_gapThresholds[98]
Definition ZdcNtuple.h:330
float t_mbts_timeC
Definition ZdcNtuple.h:345
float t_ZdcModuleAmpCorrLGRefit[2][4]
Definition ZdcNtuple.h:239
std::vector< float > t_cc_phi
Definition ZdcNtuple.h:393
uint32_t t_nclus
Definition ZdcNtuple.h:390
uint32_t t_tbp[16]
Definition ZdcNtuple.h:186
uint16_t t_rpdRaw[2][16][24]
Definition ZdcNtuple.h:357
std::vector< std::vector< int > > proton_track_nClusters
Definition ZdcNtuple.h:424
std::vector< int > proton_side
Definition ZdcNtuple.h:415
uint32_t t_timeStamp
Definition ZdcNtuple.h:157
float t_ZdcModuleTruthTotal[2][7]
Definition ZdcNtuple.h:244
float t_xCentroidPreGeomCorPreAvgSubtr[2]
Definition ZdcNtuple.h:273
float t_ZdcTruthInvis[2]
Definition ZdcNtuple.h:201
float t_ZdcModuleCalibAmp[2][4]
Definition ZdcNtuple.h:224
float t_ZdcModuleFitAmp[2][4]
Definition ZdcNtuple.h:219
float t_fcalEtA
Definition ZdcNtuple.h:313
float t_ZdcModuleAmpLGRefit[2][4]
Definition ZdcNtuple.h:238
float t_vx[3]
Definition ZdcNtuple.h:285
float t_ZdcModulePeakADCLG[2][4]
Definition ZdcNtuple.h:237
unsigned int t_ZdcModuleStatus[2][4]
Definition ZdcNtuple.h:223
float t_mbts_out_t[2][4]
Definition ZdcNtuple.h:178
float t_L1ET24
Definition ZdcNtuple.h:141
float t_ZdcModuleT0LGRefit[2][4]
Definition ZdcNtuple.h:240
std::vector< uint8_t > t_trk_nPixDead
Definition ZdcNtuple.h:377
std::vector< int8_t > t_trk_charge
Definition ZdcNtuple.h:372
float t_ZdcModuleTruthNonEM[2][7]
Definition ZdcNtuple.h:247
int t_vxnminbias
Definition ZdcNtuple.h:297
float t_ZdcModuleAmp[2][4]
Definition ZdcNtuple.h:216
float t_fcalEtC_TT
Definition ZdcNtuple.h:316
uint32_t t_zdcEventInfoErrorWord
Definition ZdcNtuple.h:162
float t_ZdcEnergy[2]
Definition ZdcNtuple.h:190
std::vector< std::vector< float > > t_cc_raw_samp
Definition ZdcNtuple.h:401
float t_RpdChannelPileupFrac[2][16]
Definition ZdcNtuple.h:264
std::vector< float > t_ZdcTruthParticlePosy
Definition ZdcNtuple.h:206
std::vector< int16_t > t_trk_quality
Definition ZdcNtuple.h:373
std::vector< uint8_t > t_trk_nSctHits
Definition ZdcNtuple.h:376
uint16_t t_rpdRaw32[2][16][32]
Definition ZdcNtuple.h:358
float t_clusEt
Definition ZdcNtuple.h:403
std::vector< float > t_cc_raw_m
Definition ZdcNtuple.h:397
std::vector< float > t_trk_d0
Definition ZdcNtuple.h:368
std::vector< std::vector< float > > proton_track_zLocal
Definition ZdcNtuple.h:421
float t_RpdChannelPileupExpFitParamErrs[2][16][2]
Definition ZdcNtuple.h:254
std::vector< float > t_trk_z0
Definition ZdcNtuple.h:369
float t_avgIntPerCrossing
Definition ZdcNtuple.h:159
std::vector< float > t_vtx_x
Definition ZdcNtuple.h:302
float t_ZdcTruthTotal[2]
Definition ZdcNtuple.h:200
float t_ZdcTime[2]
Definition ZdcNtuple.h:194
float t_T2mbts_in_t[2][8]
Definition ZdcNtuple.h:182
std::vector< float > t_vtx_y
Definition ZdcNtuple.h:303
uint32_t t_timeStampNSOffset
Definition ZdcNtuple.h:158
std::vector< float > t_vtx_z
Definition ZdcNtuple.h:304
std::vector< uint8_t > t_trk_nTrtHits
Definition ZdcNtuple.h:381
std::vector< double > proton_pt
Definition ZdcNtuple.h:411
int t_vxtype
Definition ZdcNtuple.h:288
std::vector< int > t_ZdcTruthParticlePid
Definition ZdcNtuple.h:213
SG::ReadHandleKey< xAOD::ZdcModuleContainer > m_zdcSumContainerName
Definition ZdcNtuple.h:109
unsigned short t_ZdcLucrodTriggerAmp[2][4]
Definition ZdcNtuple.h:231
float t_ZdcModuleBkgdMaxFraction[2][4]
Definition ZdcNtuple.h:227
unsigned int t_ZdcModuleTruthNphotons[2][7]
Definition ZdcNtuple.h:249
int nProtons
Definition ZdcNtuple.h:410
std::vector< std::vector< float > > proton_track_yLocal
Definition ZdcNtuple.h:420
std::vector< float > t_vtx_sumpt2
Definition ZdcNtuple.h:308
std::vector< uint8_t > t_trk_nSctDead
Definition ZdcNtuple.h:378
float t_RpdChannelPileupStretchedExpFitMSE[2][16]
Definition ZdcNtuple.h:257
std::vector< float > t_trk_pixeldEdx
Definition ZdcNtuple.h:387
float t_yCentroidPreAvgSubtr[2]
Definition ZdcNtuple.h:276
float t_xCentroid[2]
Definition ZdcNtuple.h:277
int t_pvindex
Definition ZdcNtuple.h:289
float t_puvxsumpt
Definition ZdcNtuple.h:294
std::vector< double > proton_eta
Definition ZdcNtuple.h:412
float t_RpdChannelBaseline[2][16]
Definition ZdcNtuple.h:251
std::vector< float > t_ZdcTruthParticlePx
Definition ZdcNtuple.h:209
std::vector< float > t_trk_phi
Definition ZdcNtuple.h:365
float t_mbts_in_e[2][8]
Definition ZdcNtuple.h:175
std::vector< double > proton_eLoss
Definition ZdcNtuple.h:416
uint16_t t_raw24[2][4][2][2][24]
Definition ZdcNtuple.h:353
float t_ZdcModulePreSampleAmp[2][4]
Definition ZdcNtuple.h:230
float t_mbts_timeA
Definition ZdcNtuple.h:344
uint16_t t_mbts_countC
Definition ZdcNtuple.h:343
unsigned int t_centroidStatus[2]
Definition ZdcNtuple.h:270
float t_clusetaMax
Definition ZdcNtuple.h:405
float t_ZdcTruthNonEM[2]
Definition ZdcNtuple.h:203
uint8_t t_bunchGroup
Definition ZdcNtuple.h:154
uint32_t t_runNumber
Definition ZdcNtuple.h:149
float t_edgeGapC
Definition ZdcNtuple.h:327
int t_vxnlooseprimary
Definition ZdcNtuple.h:296
float t_ZdcAmp[2]
Definition ZdcNtuple.h:188
int t_vxngoodmuon
Definition ZdcNtuple.h:298
TTree * m_outputTree
Definition ZdcNtuple.h:148
float t_RpdChannelPileupExpFitMSE[2][16]
Definition ZdcNtuple.h:256
std::vector< std::vector< int > > proton_track_stationID
Definition ZdcNtuple.h:418
SG::ReadHandleKey< xAOD::ZdcModuleContainer > m_zdcModuleContainerName
Definition ZdcNtuple.h:107
float t_totalEt24_TTsum
Definition ZdcNtuple.h:323
float t_ZdcTruthEscaped[2]
Definition ZdcNtuple.h:204
float t_ZdcModulePeakADCHG[2][4]
Definition ZdcNtuple.h:236
std::shared_ptr< ZdcInjPulserAmpMap > m_zdcInjPulserAmpMap
Definition ZdcNtuple.h:130
std::vector< float > t_ZdcTruthParticleEnergy
Definition ZdcNtuple.h:212
std::vector< double > proton_e
Definition ZdcNtuple.h:414
float t_fcalEtA_TT
Definition ZdcNtuple.h:315
float t_vxsumpt2
Definition ZdcNtuple.h:291
uint32_t t_bcid
Definition ZdcNtuple.h:152
float t_ZdcEnergyErr[2]
Definition ZdcNtuple.h:191
float t_ZdcModuleTruthEM[2][7]
Definition ZdcNtuple.h:246
std::vector< float > t_ZdcTruthParticleTime
Definition ZdcNtuple.h:208
std::vector< uint8_t > t_trk_nPixHits
Definition ZdcNtuple.h:375
uint32_t t_extendedLevel1ID
Definition ZdcNtuple.h:156
unsigned short t_ZdcLucrodTriggerSideAmpLG[2]
Definition ZdcNtuple.h:199
unsigned int t_RpdChannelStatus[2][16]
Definition ZdcNtuple.h:263
float t_L1ET
Definition ZdcNtuple.h:140
uint16_t t_raw40[2][4][2][2][40]
Definition ZdcNtuple.h:355
std::vector< float > t_ZdcTruthParticlePosz
Definition ZdcNtuple.h:207
char t_centroidEventValid
Definition ZdcNtuple.h:269
float t_totalEt_TTsum
Definition ZdcNtuple.h:321
std::vector< float > t_ZdcTruthParticlePz
Definition ZdcNtuple.h:211
uint16_t t_rpdRaw40[2][16][40]
Definition ZdcNtuple.h:359
uint32_t t_trigger_TBP
Definition ZdcNtuple.h:168
std::vector< std::vector< float > > proton_track_xSlope
Definition ZdcNtuple.h:422
int t_vxntrk
Definition ZdcNtuple.h:286
std::vector< float > t_ZdcTruthParticlePosx
Definition ZdcNtuple.h:205
float t_yColCentroid[2][4]
Definition ZdcNtuple.h:280
float t_ZdcModuleTruthInvis[2][7]
Definition ZdcNtuple.h:245
std::vector< uint8_t > t_trk_nexPixHits
Definition ZdcNtuple.h:386
float t_ZdcModuleMaxADCHG[2][4]
Definition ZdcNtuple.h:234
std::vector< float > t_cc_sig
Definition ZdcNtuple.h:395
std::vector< double > proton_phi
Definition ZdcNtuple.h:413
std::vector< uint8_t > t_trk_inPixHits
Definition ZdcNtuple.h:383
float t_T2mbts_out_t[2][4]
Definition ZdcNtuple.h:183
float t_fcalEt
Definition ZdcNtuple.h:312
uint8_t t_zdcEventInfoError
Definition ZdcNtuple.h:161
std::vector< int > t_ZdcTruthParticleStatus
Definition ZdcNtuple.h:214
float t_RpdChannelPileupStretchedExpFitParams[2][16][3]
Definition ZdcNtuple.h:253
float t_ZdcModuleMaxADCLG[2][4]
Definition ZdcNtuple.h:235
std::vector< uint8_t > t_trk_nTrtOutliers
Definition ZdcNtuple.h:382
uint32_t t_lumiBlock
Definition ZdcNtuple.h:151
float t_edgeGapA
Definition ZdcNtuple.h:326
std::vector< float > t_trk_e
Definition ZdcNtuple.h:366
std::vector< uint8_t > t_trk_exPixHits
Definition ZdcNtuple.h:384
float t_ZdcModuleMaxADC[2][4]
Definition ZdcNtuple.h:233
float t_ZdcModuleTruthEscaped[2][7]
Definition ZdcNtuple.h:248
uint8_t t_zdcDecodingError
Definition ZdcNtuple.h:164
float t_mbts_out_e[2][4]
Definition ZdcNtuple.h:176

◆ 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.

◆ inputMetaStore() [1/2]

AnaAlgorithm::MetaStorePtr_t EL::AnaAlgorithm::inputMetaStore ( )
inherited

Definition at line 81 of file AnaAlgorithm.cxx.

82 {
83#ifdef XAOD_STANDALONE
84 return &m_inputMetaStore;
85#else
86 return m_inputMetaStore;
87#endif // XAOD_STANDALONE
88 }
MetaStore_t m_inputMetaStore
Object accessing the input metadata store.

◆ inputMetaStore() [2/2]

AnaAlgorithm::ConstMetaStorePtr_t EL::AnaAlgorithm::inputMetaStore ( ) const
inherited

Accessor for the input metadata store

Definition at line 72 of file AnaAlgorithm.cxx.

73 {
74#ifdef XAOD_STANDALONE
75 return &m_inputMetaStore;
76#else
77 return m_inputMetaStore;
78#endif // XAOD_STANDALONE
79 }

◆ isClonable()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 47 of file AthAlgorithm.h.

47{ return false; }

◆ 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 }

◆ myReplace()

void AthHistogramming::myReplace ( std::string & str,
const std::string & oldStr,
const std::string & newStr )
privateinherited

Helper method to replace sub-string.

Definition at line 551 of file AthHistogramming.cxx.

554{
555 size_t pos = 0;
556 while((pos = str.find(oldStr, pos)) != std::string::npos)
557 {
558 str.replace(pos, oldStr.length(), newStr);
559 pos += newStr.length();
560 }
561}

◆ 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.

◆ outputMetaStore() [1/2]

AnaAlgorithm::MetaStorePtr_t EL::AnaAlgorithm::outputMetaStore ( )
inherited

Definition at line 101 of file AnaAlgorithm.cxx.

102 {
103#ifdef XAOD_STANDALONE
104 return &m_outputMetaStore;
105#else
106 return m_outputMetaStore;
107#endif // XAOD_STANDALONE
108 }
MetaStore_t m_outputMetaStore
Object accessing the output metadata store.

◆ outputMetaStore() [2/2]

AnaAlgorithm::ConstMetaStorePtr_t EL::AnaAlgorithm::outputMetaStore ( ) const
inherited

Accessor for the output metadata store

Definition at line 92 of file AnaAlgorithm.cxx.

93 {
94#ifdef XAOD_STANDALONE
95 return &m_outputMetaStore;
96#else
97 return m_outputMetaStore;
98#endif // XAOD_STANDALONE
99 }

◆ print()

void EL::AnaAlgorithm::print ( ) const
protectedvirtualinherited

print the state of the algorithm

This is mostly to allow algorithms to add a little debugging information if they feel like it.

Definition at line 345 of file AnaAlgorithm.cxx.

347 {}

◆ processClusters()

void ZdcNtuple::processClusters ( )

Definition at line 1856 of file ZdcNtuple.cxx.

1857{
1858 //t_nclus = 0;
1859
1860 t_cc_pt.clear();
1861 t_cc_eta.clear();
1862 t_cc_phi.clear();
1863 t_cc_e.clear();
1864 t_cc_raw_m.clear();
1865 t_cc_raw_eta.clear();
1866 t_cc_raw_phi.clear();
1867 t_cc_raw_e.clear();
1868 t_cc_raw_samp.clear();
1869 t_cc_layer.clear();
1870 t_cc_sig.clear();
1871
1872 t_nclus = m_caloClusters->size();
1873
1874 t_clusEt = 0;
1875 t_clusEtMax = -999;
1876 t_clusetaMax = 0;
1877 t_clusphiMax = 0;
1878
1879 for (const auto cluster : *m_caloClusters)
1880 {
1881 t_cc_pt.push_back(cluster->pt());
1882 t_cc_eta.push_back(cluster->eta());
1883 t_cc_phi.push_back(cluster->phi());
1884 t_cc_e.push_back(cluster->e());
1885 t_cc_raw_m.push_back(cluster->rawM());
1886 t_cc_raw_eta.push_back(cluster->rawEta());
1887 t_cc_raw_phi.push_back(cluster->rawPhi());
1888 t_cc_raw_e.push_back(cluster->rawE());
1889
1890 std::vector<float> energies;
1891
1892 for (size_t s = CaloSampling::PreSamplerB; s < CaloSampling::Unknown; s++ )
1893 {
1894 bool hasSample = cluster->hasSampling( (xAOD::CaloCluster::CaloSample) s );
1895 float e = 0;
1896 if (hasSample)
1897 {
1898 e = cluster->eSample( (xAOD::CaloCluster::CaloSample) s);
1899 }
1900 energies.push_back(e);
1901 }
1902 t_cc_raw_samp.push_back(energies);
1903
1904 float et = cluster->e() / TMath::CosH(cluster->eta());
1905 t_clusEt += et;
1906 if (et > t_clusEtMax)
1907 {
1908 t_clusEtMax = et;
1909 t_clusetaMax = cluster->eta();
1910 t_clusphiMax = cluster->phi();
1911 }
1912
1913 double cell_sig = 0;
1914 if (!cluster->retrieveMoment(xAOD::CaloCluster::CELL_SIGNIFICANCE, cell_sig)) {ANA_MSG_DEBUG("processClusters() : No CELL_SIGNIFICANCE!");}
1915 t_cc_sig.push_back(cell_sig);
1916 double cell_layer = 0;
1917 if (!cluster->retrieveMoment(xAOD::CaloCluster::CELL_SIG_SAMPLING, cell_layer)) {ANA_MSG_DEBUG("processClusters() : No CELL_SIG_SAMPLING!");}
1918 t_cc_layer.push_back(static_cast<int>(cell_layer));
1919 //t_nclus++;
1920 }
1921
1922 if ( (!enableClusters) || (t_ntrk >= trackLimit) ) // if disabled or if too many tracks
1923 {
1924 t_cc_pt.clear();
1925 t_cc_eta.clear();
1926 t_cc_phi.clear();
1927 t_cc_e.clear();
1928 t_cc_layer.clear();
1929 t_cc_sig.clear();
1930 }
1931 else
1932 {
1933 ANA_MSG_DEBUG("processClusters(): keeping clusters");
1934 }
1935 return;
1936}
float et(const xAOD::jFexSRJetRoI *j)
@ CELL_SIGNIFICANCE
Cell significance = E/sig of the cell with the largest |E|/sig.
@ CELL_SIG_SAMPLING
CaloSample of the cell with the largest |E|/sig.
CaloSampling::CaloSample CaloSample

◆ processEventInfo()

void ZdcNtuple::processEventInfo ( )

Definition at line 1292 of file ZdcNtuple.cxx.

1293{
1294 ANA_MSG_DEBUG( "processing event info");
1295
1296 t_bcid = m_eventInfo->bcid();
1297 t_runNumber = m_eventInfo->runNumber();
1298 t_eventNumber = m_eventInfo->eventNumber();
1299 t_lumiBlock = m_eventInfo->lumiBlock();
1300 t_bunchGroup = -1;
1301 t_extendedLevel1ID = m_eventInfo->extendedLevel1ID();
1302 t_timeStamp = m_eventInfo->timeStamp();
1303 t_timeStampNSOffset = m_eventInfo->timeStampNSOffset();
1305 t_avgIntPerCrossing = m_eventInfo->averageInteractionsPerCrossing();
1306 t_actIntPerCrossing = m_eventInfo->actualInteractionsPerCrossing();
1309
1310 if ( !(m_eventCounter++ % 1000) || msgLvl(MSG::DEBUG))
1311 {
1312 ANA_MSG_INFO("Event# " << m_eventCounter << " Run " << m_eventInfo->runNumber() << " Event " << m_eventInfo->eventNumber() << " LB " << m_eventInfo->lumiBlock() );
1313 }
1314
1315}
bool msgLvl(const MSG::Level lvl) const
uint32_t acceptEvent()
@ ForwardDet
The forward detectors.

◆ processFCal()

void ZdcNtuple::processFCal ( )

Definition at line 1630 of file ZdcNtuple.cxx.

1631{
1632 ANA_MSG_DEBUG("processFCal: processing FCal");
1633
1634 t_fcalEt = 0.;
1635 t_fcalEtA = 0.;
1636 t_fcalEtC = 0.;
1637 t_fcalEtA_TT = 0.;
1638 t_fcalEtC_TT = 0.;
1639
1640 if (m_caloSums)
1641 {
1642 static const SG::ConstAccessor<std::string> SummaryAcc("Summary");
1643 for (const auto calosum : *m_caloSums)
1644 {
1645 const std::string name = SummaryAcc(*calosum);
1646 if (name == "FCal")
1647 {
1648 t_fcalEt = calosum->et();
1649 ANA_MSG_DEBUG("processFCal: fcalEt = " << t_fcalEt);
1650 }
1651
1652 if (name == "All")
1653 {
1654 t_totalEt = calosum->et();
1655 ANA_MSG_DEBUG("processFCal: totalEt = " << t_totalEt);
1656 }
1657 }
1658 }
1659
1660 t_fcalEtA = 0;
1661 t_fcalEtC = 0;
1662 t_totalEt24 = 0;
1663
1664 if (m_eventShapes)
1665 {
1666 for (const auto eventShape : *m_eventShapes)
1667 {
1668 int layer = eventShape->layer();
1669 float eta = eventShape->etaMin();
1670 float et = eventShape->et();
1671 if (layer == 21 || layer == 22 || layer == 23)
1672 {
1673 if (eta > 0) t_fcalEtA += et;
1674 if (eta < 0) t_fcalEtC += et;
1675 }
1676
1677 if (TMath::Abs(eta) < 2.4)
1678 {
1679 t_totalEt24 += et;
1680 }
1681 }
1682 }
1683
1684 t_L1ET = 0;
1685 t_L1ET24 = 0;
1686
1688 {
1689 t_L1ET = m_lvl1EnergySumRoI->energyT();
1690 //t_L1ET24 = m_lvl1EnergySumRoI->energyTRestricted(); // TBD when limited eta ET available
1691 }
1692
1693 return;
1694}
Scalar eta() const
pseudorapidity method
SG::ConstAccessor< T, ALLOC > ConstAccessor
Definition AuxElement.h:570
@ layer
Definition HitInfo.h:79

◆ processGaps()

void ZdcNtuple::processGaps ( )

Definition at line 1696 of file ZdcNtuple.cxx.

1697{
1698
1699 float eta_min = 5;
1700 float eta_max = -5;
1701
1702 if (!m_caloClusters) return;
1703 for (const auto cl : *m_caloClusters)
1704 {
1705
1706 if (cl->pt() < m_gapPtMin) continue;
1707
1708 int etabin = h_TCSigCut->GetXaxis()->FindBin(cl->eta());
1709 if (etabin < 1 || etabin > h_TCSigCut->GetNbinsX()) continue;
1710 float sig_cut = h_TCSigCut->GetBinContent(etabin);
1711 float sig = cl->getMomentValue(xAOD::CaloCluster::CELL_SIGNIFICANCE);
1712 int cl_cell_sig_samp = static_cast<int>(cl->getMomentValue(xAOD::CaloCluster::CELL_SIG_SAMPLING));
1713
1714 // ANA_MSG_VERBOSE ("gapclus: etabin " << etabin << " sig_cut=" << sig_cut << " sig=" << sig << " samp=" << cl_cell_sig_samp);
1715
1716 if (sig < sig_cut) continue;
1717
1718 if (cl_cell_sig_samp >= CaloSampling::TileBar0 && cl_cell_sig_samp <= CaloSampling::TileExt2) continue;
1719
1720 if (cl->eta() < eta_min) eta_min = cl->eta();
1721 if (cl->eta() > eta_max) eta_max = cl->eta();
1722
1723 }
1724
1725 t_edgeGapA = 4.9 - eta_max;
1726 t_edgeGapC = eta_min + 4.9;
1727 ANA_MSG_DEBUG("processGaps(): egA " << t_edgeGapA << " , egC " << t_edgeGapC);
1728
1729}
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]

◆ processInDet()

void ZdcNtuple::processInDet ( )

Definition at line 1342 of file ZdcNtuple.cxx.

1343{
1344 ANA_MSG_DEBUG("processInDet(): processing tracks & vertices!");
1345 t_ntrk = 0;
1346 t_nvx = 0;
1347 t_vxntrk = 0;
1348 t_vx_trk_index.clear();
1349 t_vxsumpt2 = 0;
1350 t_vxtype = 0;
1351 t_pvindex = -1;
1352 t_puvxntrk = 0;
1353 t_puvxsumpt = 0;
1355 t_vxnminbias = 0;
1356
1357 int i;
1358 for (i = 0; i < 3; i++) t_vx[i] = 0;
1359 for (i = 0; i < 6; i++) t_vxcov[i] = 0;
1360
1361 const xAOD::Vertex* primary_vertex = nullptr;
1362 size_t pv_index = -1;
1363 size_t vx_index = 0;
1364 float max_pileup_sumpT = 0.;
1365 int max_pileup_nTrack = 0;
1366 float max_pileup_z = 0;
1367 int nStrongPileup = 0;
1368
1369 t_nvtx = 0;
1370 t_vtx_type.clear();
1371 t_vtx_x.clear();
1372 t_vtx_y.clear();
1373 t_vtx_z.clear();
1374 t_vtx_ntrk_all.clear();
1375 t_vtx_sumpt2_all.clear();
1376 t_vtx_ntrk.clear();
1377 t_vtx_sumpt2.clear();
1378 t_vtx_trk_index.clear();
1379
1381 {
1382 ANA_MSG_DEBUG("processInDet: processing vertices");
1383
1384 t_nvx = m_primaryVertices->size();
1385
1386 static const SG::ConstAccessor<float> sumPt2Acc("sumPt2");
1387
1388 // start of new vertex representation
1389 t_nvtx = m_primaryVertices->size();
1390 for (const auto vertex : *m_primaryVertices)
1391 {
1392 float vtx_sumpt2 = 0;
1393 int vtx_ntrk = 0;
1394
1395 t_vtx_type.push_back(vertex->vertexType());
1396 t_vtx_x.push_back(0);
1397 t_vtx_y.push_back(0);
1398 t_vtx_z.push_back(vertex->z());
1399
1400 t_vtx_ntrk.push_back(vtx_ntrk);
1401 t_vtx_sumpt2.push_back(vtx_sumpt2 / 1e6);
1402 t_vtx_ntrk_all.push_back(vertex->nTrackParticles());
1403
1404 if (sumPt2Acc.isAvailable(*vertex))
1405 t_vtx_sumpt2_all.push_back(sumPt2Acc(*vertex));
1406 else
1407 t_vtx_sumpt2_all.push_back(-1);
1408
1409 std::vector<int16_t> trk_index;
1410 if ( m_trackParticles && vertex->nTrackParticles() <= trackLimit )
1411 {
1412 const std::vector< ElementLink< xAOD::TrackParticleContainer > >& vxTrackParticles = vertex->trackParticleLinks();
1413 for (size_t itrk = 0; itrk < vxTrackParticles.size(); itrk++)
1414 {
1415 ElementLink< xAOD::TrackParticleContainer > trkLink = vxTrackParticles.at(itrk);
1416 trk_index.push_back(trkLink.index());
1417 }
1418 }
1419 t_vtx_trk_index.push_back(trk_index);
1420
1421 // end of new vertex representation
1422
1423 if (vertex->vertexType() == xAOD::VxType::PriVtx)
1424 {
1425 primary_vertex = vertex;
1426 pv_index = vx_index;
1427 }
1428 if (vertex->vertexType() == xAOD::VxType::PileUp)
1429 {
1430 float pileup_sumpT = 0;
1431 int pileup_nTrack = 0;
1432 for (size_t itr = 0; itr < vertex->nTrackParticles(); itr++)
1433 {
1434 int track_quality = trackQuality(vertex->trackParticle(itr), vertex);
1435 if (track_quality != -1 && (track_quality & 128) != 0)
1436 {
1437 pileup_nTrack++;
1438 pileup_sumpT += vertex->trackParticle(itr)->pt();
1439 }
1440 }
1441 if (pileup_sumpT > max_pileup_sumpT)
1442 {
1443 max_pileup_sumpT = pileup_sumpT;
1444 max_pileup_nTrack = pileup_nTrack;
1445 max_pileup_z = vertex->z();
1446 }
1447 if (pileup_sumpT > 5e3 || pileup_nTrack > 5) nStrongPileup++;
1448 }
1449 vx_index++;
1450 }
1451 }
1452
1453 t_nstrong = nStrongPileup;
1454
1455 if (primary_vertex != nullptr)
1456 {
1457 t_vx[0] = primary_vertex->x();
1458 t_vx[1] = primary_vertex->y();
1459 t_vx[2] = primary_vertex->z();
1460 /*
1461 const std::vector<float>& cov = primary_vertex->covariance();
1462 */
1463 //for (size_t i=0;i<cov.size();i++)
1464 for (size_t i = 0; i < 6; i++)
1465 {
1466 //t_vxcov[i] = cov.at(i);
1467 t_vxcov[i] = 0;
1468 }
1469 t_vxntrk = primary_vertex->nTrackParticles();
1470 static const SG::ConstAccessor<float> sumPt2Acc("sumPt2");
1471 if (sumPt2Acc.isAvailable(*primary_vertex))
1472 t_vxsumpt2 = sumPt2Acc(*primary_vertex);
1473 else
1474 t_vxsumpt2 = 0;
1475
1476 t_vxtype = primary_vertex->vertexType();
1477 t_pvindex = pv_index;
1478 t_puvxz = max_pileup_z;
1479 t_puvxsumpt = max_pileup_sumpT;
1480 t_puvxntrk = max_pileup_nTrack;
1481
1482 const std::vector< ElementLink< xAOD::TrackParticleContainer > >& vxTrackParticles = primary_vertex->trackParticleLinks();
1483
1484 for (size_t itrk = 0; itrk < vxTrackParticles.size(); itrk++)
1485 {
1486 ElementLink< xAOD::TrackParticleContainer > trkLink = vxTrackParticles.at(itrk);
1487 if (!trkLink.isValid()) continue;
1488 if (m_trackParticles)
1489 {
1490 if (m_trackParticles->size() <= trackLimit)
1491 t_vx_trk_index.push_back(trkLink.index());
1492 }
1493 }
1494
1495 }
1496
1497
1498 if (m_trackParticles)
1499 {
1500 ANA_MSG_DEBUG("processInDet: processing trackss");
1501
1502 t_trk_pt.clear();
1503 t_trk_eta.clear();
1504 t_trk_phi.clear();
1505 t_trk_e.clear();
1506 t_trk_index.clear();
1507 t_trk_theta.clear();
1508 t_trk_charge.clear();
1509 t_trk_d0.clear();
1510 t_trk_z0.clear();
1511 t_trk_vz.clear();
1512 t_trk_vtxz.clear();
1513 t_trk_quality.clear();
1514 t_trk_nPixHits.clear();
1515 t_trk_nSctHits.clear();
1516 t_trk_nPixDead.clear();
1517 t_trk_nSctDead.clear();
1518 t_trk_nPixHoles.clear();
1519 t_trk_nSctHoles.clear();
1520 t_trk_nTrtHits.clear();
1521 t_trk_nTrtOutliers.clear();
1522 t_trk_inPixHits.clear();
1523 t_trk_exPixHits.clear();
1524 t_trk_ninPixHits.clear();
1525 t_trk_nexPixHits.clear();
1526 t_trk_pixeldEdx.clear();
1527
1528 t_ntrk = m_trackParticles->size();
1529
1530 if ( !enableTracks ) return;
1531
1532 if ( t_ntrk <= trackLimit ) // dump all tracks
1533 {
1534 int trk_index = 0;
1535 for (const auto track : *m_trackParticles)
1536 {
1537 writeTrack(track, primary_vertex, trk_index++);
1538 }
1539 }
1540 else // write small vertices
1541 {
1542 for (const auto vertex : *m_primaryVertices)
1543 {
1544 if (vertex->nTrackParticles() <= trackLimit )
1545 {
1546 const std::vector< ElementLink< xAOD::TrackParticleContainer > >& vxTrackParticles = vertex->trackParticleLinks();
1547 for (size_t itrk = 0; itrk < vxTrackParticles.size(); itrk++)
1548 {
1549 ElementLink< xAOD::TrackParticleContainer > trkLink = vxTrackParticles.at(itrk);
1550 writeTrack(*trkLink, vertex, trkLink.index());
1551 }
1552 }
1553 }
1554 }
1555 }
1556
1557 return;
1558}
void writeTrack(const xAOD::TrackParticle *, const xAOD::Vertex *vertex, int)
int trackQuality(const xAOD::TrackParticle *tp, const xAOD::Vertex *vertex)
float z() const
Returns the z position.
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
const TrackParticleLinks_t & trackParticleLinks() const
Get all the particles associated with the vertex.
float y() const
Returns the y position.
VxType::VertexType vertexType() const
The type of the vertex.
float x() const
Returns the x position.
@ PileUp
Pile-up vertex.
@ PriVtx
Primary vertex.
Vertex_v1 Vertex
Define the latest version of the vertex class.

◆ processMBTS()

void ZdcNtuple::processMBTS ( )

Definition at line 1731 of file ZdcNtuple.cxx.

1732{
1733 ANA_MSG_DEBUG("processMBTS: trying to process!");
1734 t_mbts_countA = 0;
1735 t_mbts_countC = 0;
1738 t_mbts_timeA = 0.;
1739 t_mbts_timeC = 0.;
1740 t_mbts_timeDiff = 0.;
1741
1742 if (m_mbtsInfo->size() > 0)
1743 {
1744 t_mbts_countA = m_mbtsInfo->at(0)->countA();
1745 t_mbts_countC = m_mbtsInfo->at(0)->countC();
1746 t_mbts_timeA = m_mbtsInfo->at(0)->timeA();
1747 t_mbts_timeC = m_mbtsInfo->at(0)->timeC();
1748 t_mbts_timeDiff = m_mbtsInfo->at(0)->timeDiff();
1749 }
1750 else
1751 {
1752 ANA_MSG_INFO("processMBTS: Warning: MBTS info empty!");
1753 }
1754
1755 for (int iside = 0; iside < 2; iside++)
1756 {
1757 for (int iin = 0; iin < 8; iin++)
1758 {
1759 t_mbts_in_e[iside][iin] = 0.;
1760 t_mbts_in_t[iside][iin] = 0.;
1761 t_T2mbts_in_e[iside][iin] = 0.;
1762 t_T2mbts_in_t[iside][iin] = 0.;
1763 }
1764 for (int iout = 0; iout < 4; iout++)
1765 {
1766 t_mbts_out_e[iside][iout] = 0.;
1767 t_mbts_out_t[iside][iout] = 0.;
1768 t_T2mbts_out_e[iside][iout] = 0.;
1769 t_T2mbts_out_t[iside][iout] = 0.;
1770 }
1771 }
1772
1773 ANA_MSG_DEBUG ("filling MBTS");
1774
1775 if (m_mbtsModules == 0)
1776 {
1777 ANA_MSG_INFO("processMBTS: no MBTS container?");
1778 return;
1779 }
1780
1781 for (const auto mbtsMod : *m_mbtsModules)
1782 {
1783 int iside = 1;
1784 if (mbtsMod->type() < 0) iside = 0.;
1785 float phibin = 0.;
1786 int iphibin = -1;
1787 if (mbtsMod->eta() > 3)
1788 {
1789 phibin = mbtsMod->phi() / (2 * TMath::Pi() / 8.) - 0.4;
1790 iphibin = static_cast<int>(phibin);
1791 if (iphibin < 0 || iphibin > 7)
1792 {
1793 ANA_MSG_INFO("processMBTS: MBTS has bad phi bin");
1794 continue;
1795 }
1796 t_mbts_in_e[iside][iphibin] = mbtsMod->e();
1797 t_mbts_in_t[iside][iphibin] = mbtsMod->time();
1798 }
1799 else
1800 {
1801 phibin = mbtsMod->phi() / (2 * TMath::Pi() / 4.) - 0.24;
1802 iphibin = static_cast<int>(phibin);
1803 if (iphibin < 0 || iphibin > 3)
1804 {
1805 ANA_MSG_INFO("processMBTS: MBTS has bad phi bin");
1806 continue;
1807 }
1808 t_mbts_out_e[iside][iphibin] = mbtsMod->e();
1809 t_mbts_out_t[iside][iphibin] = mbtsMod->time();
1810 }
1811 }
1812
1813 if (!m_trigT2MbtsBits) return;
1814
1815 for (const auto mbtsBits : *m_trigT2MbtsBits)
1816 {
1817 const std::vector<float>& energies = mbtsBits->triggerEnergies();
1818 const std::vector<float>& times = mbtsBits->triggerTimes();
1819 for (int imbts = 0; imbts < 32; imbts++)
1820 {
1821 int side = imbts / 16;
1822 int ring = (imbts - 16 * side) / 8;
1823 bool isInner = (ring == 0);
1824 int index = (imbts - 16 * side - ring * 8);
1825 if (!isInner)
1826 {
1827 if ((index % 2) != 0) continue; // skip odd out ring
1828 index /= 2;
1829 }
1830 int iside = (side == 0) ? 1 : 0; // code maps side 1 into first 16 bits and side -1 into second set
1831
1832 ANA_MSG_VERBOSE ("imbts=" << imbts << " isInner=" << isInner << " iside=" << iside << " index=" << index << " e=" << energies.at(imbts) << " t=" << times.at(imbts));
1833 if (iside < 2 and index < 8){ //indices in range?
1834 if (isInner)
1835 {
1836 t_T2mbts_in_e[iside][index] = energies.at(imbts);
1837 t_T2mbts_in_t[iside][index] = times.at(imbts);
1838 if (TMath::Abs(times.at(imbts)) < 12.0 && energies.at(imbts) > 40 / 222.)
1839 {
1840 if (iside == 0) t_T2mbts_countCin++;
1841 if (iside == 1) t_T2mbts_countAin++;
1842 }
1843 }
1844 else
1845 {
1846 t_T2mbts_out_e[iside][index] = energies.at(imbts);
1847 t_T2mbts_out_t[iside][index] = times.at(imbts);
1848 }
1849 } //indices check
1850 }
1851 }
1852
1853 return;
1854}
#define ANA_MSG_VERBOSE(xmsg)
Macro printing verbose messages.
const xAOD::MBTSModuleContainer * m_mbtsModules
Definition ZdcNtuple.h:120
const xAOD::ForwardEventInfoContainer * m_mbtsInfo
Definition ZdcNtuple.h:119
const xAOD::TrigT2MbtsBitsContainer * m_trigT2MbtsBits
Definition ZdcNtuple.h:121
str index
Definition DeMoScan.py:362

◆ processMCEventCollection()

void ZdcNtuple::processMCEventCollection ( )

Definition at line 1147 of file ZdcNtuple.cxx.

1147 {
1148 /******************************************
1149 * Get the McEventCollection (input)
1150 ******************************************/
1151 SG::ReadHandle<McEventCollection> mcEventCollection (m_mcEventCollectionName);
1152 if (!mcEventCollection.isValid()){
1153 ANA_MSG_ERROR("Could not retrieve HepMC with key:" << m_mcEventCollectionName.key());
1154 return;
1155 }else{
1156 ANA_MSG_DEBUG("Retrieved HepMC with key: " << m_mcEventCollectionName.key());
1157 }
1158
1159 /******************************************
1160 * Clear and resize the output vectors
1161 ******************************************/
1162 t_ZdcTruthParticlePosx.clear();
1163 t_ZdcTruthParticlePosy.clear();
1164 t_ZdcTruthParticlePosz.clear();
1165 t_ZdcTruthParticleTime.clear();
1166 t_ZdcTruthParticlePx.clear();
1167 t_ZdcTruthParticlePy.clear();
1168 t_ZdcTruthParticlePz.clear();
1170 t_ZdcTruthParticlePid.clear();
1172
1173 /******************************************
1174 * Sort the particles into sides and add
1175 * them to the output vectors
1176 ******************************************/
1177 for (unsigned int cntr = 0; cntr < mcEventCollection->size(); ++cntr){
1178 const HepMC::GenEvent *genEvt = (*mcEventCollection)[cntr];
1179 for (const auto &vertex : genEvt->vertices()){
1180 for (const auto &particle : vertex->particles_in()){
1181 t_ZdcTruthParticlePosx.push_back(vertex->position().x());
1182 t_ZdcTruthParticlePosy.push_back(vertex->position().y());
1183 t_ZdcTruthParticlePosz.push_back(vertex->position().z());
1184 t_ZdcTruthParticleTime.push_back(vertex->position().t());
1185 t_ZdcTruthParticlePx.push_back(particle->momentum().x());
1186 t_ZdcTruthParticlePy.push_back(particle->momentum().y());
1187 t_ZdcTruthParticlePz.push_back(particle->momentum().z());
1188 t_ZdcTruthParticleEnergy.push_back(particle->momentum().e());
1189 t_ZdcTruthParticlePid.push_back(particle->pdg_id());
1190 t_ZdcTruthParticleStatus.push_back(particle->status());
1191 } // end loop over particles
1192 }// end loop over vertices
1193 }// end loop over HepMC events
1194}
#define ANA_MSG_ERROR(xmsg)
Macro printing error messages.
HepMC3::GenEvent GenEvent
Definition GenEvent.h:39
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses

◆ processProtons()

void ZdcNtuple::processProtons ( )

Definition at line 1938 of file ZdcNtuple.cxx.

1938 {
1939
1940 proton_pt.clear();
1941 proton_eta.clear();
1942 proton_phi.clear();
1943 proton_e.clear();
1944 proton_side.clear();
1945 proton_eLoss.clear();
1946 proton_t.clear();
1947
1948 proton_track_stationID.clear();
1949 proton_track_nClusters.clear();
1950 proton_track_xLocal.clear();
1951 proton_track_yLocal.clear();
1952 proton_track_zLocal.clear();
1953 proton_track_xSlope.clear();
1954 proton_track_ySlope.clear();
1955
1956 proton_track_stationID.resize(m_afpProtons->size(), std::vector<int>(2));
1957 proton_track_nClusters.resize(m_afpProtons->size(), std::vector<int>(2));
1958 proton_track_xLocal.resize(m_afpProtons->size(), std::vector<float>(2));
1959 proton_track_yLocal.resize(m_afpProtons->size(), std::vector<float>(2));
1960 proton_track_zLocal.resize(m_afpProtons->size(), std::vector<float>(2));
1961 proton_track_xSlope.resize(m_afpProtons->size(), std::vector<float>(2));
1962 proton_track_ySlope.resize(m_afpProtons->size(), std::vector<float>(2));
1963
1964 nProtons = 0;
1965
1966 for(const auto * proton: *m_afpProtons){
1967
1968 proton_pt.push_back(proton->pt());
1969 proton_eta.push_back(proton->eta());
1970 proton_phi.push_back(proton->phi());
1971 proton_e.push_back(proton->e());
1972 proton_side.push_back(proton->side());
1973
1974 proton_eLoss.push_back((6800.-proton->e())/6800.);
1975 p_scat.SetPtEtaPhiE(proton->pt(), proton->eta(), proton->phi(), proton->e());
1976 (signbit(proton->eta())) ? p_beam.SetPxPyPzE(0.0, 0.0, -6800.0, 6800.0) : p_beam.SetPxPyPzE(0.0, 0.0, 6800.0,\
1977 6800.0);
1978
1979 proton_t.push_back( (p_beam - p_scat)*(p_beam - p_scat));
1980
1981 for(int i=0; i< int(proton->nTracks()); i++){
1982
1983 proton_track_stationID.at(nProtons).at(i) = proton->track(i)->stationID();
1984 proton_track_nClusters.at(nProtons).at(i) = proton->track(i)->nClusters();
1985 proton_track_xLocal.at(nProtons).at(i) = proton->track(i)->xLocal();
1986 proton_track_yLocal.at(nProtons).at(i) = proton->track(i)->yLocal();
1987 proton_track_zLocal.at(nProtons).at(i) = proton->track(i)->zLocal();
1988 proton_track_xSlope.at(nProtons).at(i) = proton->track(i)->xSlope();
1989 proton_track_ySlope.at(nProtons).at(i) = proton->track(i)->ySlope();
1990
1991 }
1992
1993 nProtons++;
1994 }
1995
1996 return;
1997}
TLorentzVector p_scat
Definition ZdcNtuple.h:427
TLorentzVector p_beam
Definition ZdcNtuple.h:426

◆ processTriggerDecision()

bool ZdcNtuple::processTriggerDecision ( )

Definition at line 1196 of file ZdcNtuple.cxx.

1197{
1198 ANA_MSG_DEBUG ("Processing trigger");
1199
1200 bool passTrigger = false;
1201
1202 t_trigger = 0;
1203 t_trigger_TBP = 0;
1204
1205 for (int i = 0; i < 16; i++)
1206 {
1207 t_tav[i] = 0;
1208 t_tbp[i] = 0;
1209 }
1210
1211 if (m_trigDecision)
1212 {
1213 for (int i = 0; i < 16; i++)
1214 {
1215 t_tbp[i] = m_trigDecision->tbp().at(i);
1216 t_tav[i] = m_trigDecision->tav().at(i);
1217 ANA_MSG_DEBUG( "TD: " << i << " tbp: " << std::hex << t_tbp[i] << "\t" << t_tav[i] );
1218 }
1219 t_bunchGroup = m_trigDecision->bgCode();
1220 }
1221
1222 if (enableTrigger)
1223 {
1224
1225 int ic = 0;
1226 for (auto cg : m_chainGroups)
1227 {
1228
1229 if (zdcCalib)
1230 {
1231 std::string name = cg->getListOfTriggers().at(0);
1232 const unsigned int triggerbits = m_trigDecisionTool->isPassedBits(name);
1233 // deferred functionality
1234 //bool tbp = triggerbits&TrigDefs::L1_isPassedBeforePrescale;
1235 //bool tap = triggerbits&TrigDefs::L1_isPassedAfterPrescale;
1236 bool tav = triggerbits&TrigDefs::L1_isPassedAfterVeto;
1237 ANA_MSG_DEBUG("TD: checking trigger name=" << name<< " tav=" << tav);
1238 if (tav)
1239 {
1240 t_trigger += (1 << ic);
1241 t_decisions[ic] = true;
1242 t_prescales[ic] = cg->getPrescale();
1243 passTrigger = true;
1244 }
1245 else
1246 {
1247 t_decisions[ic] = 0;
1248 t_prescales[ic] = 0;
1249 }
1250 }
1251 else
1252 {
1253 if (cg->isPassed())
1254 {
1255 t_trigger += (1 << ic);
1256 t_decisions[ic] = true;
1257 t_prescales[ic] = cg->getPrescale();
1258 passTrigger = true;
1259 }
1260 else
1261 {
1262 t_decisions[ic] = 0;
1263 t_prescales[ic] = 0;
1264 }
1265 }
1266
1267 if (cg->isPassedBits()&TrigDefs::EF_passedRaw)
1268 {
1269 t_trigger_TBP += (1 << ic);
1270 }
1271
1272
1273 ic++;
1274 }
1275
1276 int irc = 0;
1277 for (auto cg : m_rerunChainGroups)
1278 {
1279 t_rerunDecisions[irc] = false;
1280 if (cg->isPassedBits()&TrigDefs::EF_passedRaw)
1281 {
1282 t_rerunDecisions[irc] = true;
1283 }
1284 irc++;
1285 }
1286
1287 }
1288
1289 return passTrigger;
1290}
std::vector< const Trig::ChainGroup * > m_rerunChainGroups
Definition ZdcNtuple.h:138
std::vector< const Trig::ChainGroup * > m_chainGroups
Definition ZdcNtuple.h:137
bool t_rerunDecisions[200]
Definition ZdcNtuple.h:173
float t_prescales[200]
Definition ZdcNtuple.h:171
bool t_decisions[200]
Definition ZdcNtuple.h:172
int ic
Definition grepfile.py:33

◆ processTriggerTowers()

void ZdcNtuple::processTriggerTowers ( )

◆ processVInjInfo()

void ZdcNtuple::processVInjInfo ( )

Definition at line 1317 of file ZdcNtuple.cxx.

1317 {
1318 // Check for new run number
1319 //
1321 //
1322 // Get access to the injector pulse steps for this run
1323 //
1325 if (!m_injMapRunToken.isValid()) {
1326 ANA_MSG_ERROR("Unable to obtain injector pulse steps for run " << t_runNumber);
1327 }
1328 else {
1329 unsigned int startLB = m_zdcInjPulserAmpMap->getFirstLumiBlock(m_injMapRunToken);
1330 unsigned int nsteps = m_zdcInjPulserAmpMap->getNumSteps(m_injMapRunToken);
1331 ANA_MSG_DEBUG("Successfully obtained injector pulse steps for run " << t_runNumber
1332 << ", first LB = " << startLB << ", number of steps = " << nsteps);
1333 }
1334
1335 // update the last run number to be the current run number
1337 }
1338
1340}
unsigned int m_lastRunNumber
Definition ZdcNtuple.h:49
ZdcInjPulserAmpMap::Token m_injMapRunToken
Definition ZdcNtuple.h:50

◆ processZdcNtupleFromModules()

void ZdcNtuple::processZdcNtupleFromModules ( )

Definition at line 673 of file ZdcNtuple.cxx.

674{
675
676 SG::ReadHandle<xAOD::ZdcModuleContainer> zdcModules (m_zdcModuleContainerName);
677 SG::ReadHandle<xAOD::ZdcModuleContainer> zdcSums (m_zdcSumContainerName);
678
679 ANA_MSG_DEBUG ("copying already processed info!");
680
681 //Reset the truth separately since it has a different range
682 for(int iside : {0,1}){
683 for(int imod = 0; imod < 7; ++imod){
684 t_ZdcModuleTruthTotal[iside][imod] = 0;
685 t_ZdcModuleTruthInvis[iside][imod] = 0;
686 t_ZdcModuleTruthEM[iside][imod] = 0;
687 t_ZdcModuleTruthNonEM[iside][imod] = 0;
688 t_ZdcModuleTruthEscaped[iside][imod] = 0;
689 t_ZdcModuleTruthNphotons[iside][imod] = 0;
690 }
691 for(int ch = 0; ch < 16; ++ch){
692 t_RpdModuleTruthNphotons[iside][ch] = 0;
693 }
694 }
695
696 for (size_t iside = 0; iside < 2; iside++)
697 {
698 t_ZdcAmp[iside] = 0; t_ZdcEnergy[iside] = 0; t_ZdcEnergyErr[iside] = 0;t_ZdcTime[iside] = 0; t_ZdcStatus[iside] = 0;
699 t_ZdcNLEnergy[iside] = 0;t_ZdcNLEnergyErr[iside] = 0;
700 t_ZdcTrigEff[iside] = 0;t_ZdcLucrodTriggerSideAmp[iside] = 0; t_ZdcLucrodTriggerSideAmpLG[iside] = 0; t_ZdcTruthTotal[iside] = 0;
701 t_ZdcTruthInvis[iside] = 0; t_ZdcTruthEM[iside] = 0; t_ZdcTruthNonEM[iside] = 0;
702 t_ZdcTruthEscaped[iside] = 0;
703 for (int imod = 0; imod < 4; imod++)
704 {
705 t_ZdcModuleAmp[iside][imod] = 0; t_ZdcModuleAmpUncorr[iside][imod] = 0;
706 t_ZdcModuleTime[iside][imod] = 0; t_ZdcModuleStatus[iside][imod] = 0;
707
708 t_ZdcModuleCalibAmp[iside][imod] = 0; t_ZdcModuleCalibTime[iside][imod] = 0; t_ZdcModuleChisq[iside][imod] = 0; t_ZdcModuleChisqRatio[iside][imod] = 0; t_ZdcModuleFitAmp[iside][imod] = 0;
709 t_ZdcModuleFitT0[iside][imod] = 0; t_ZdcModuleBkgdMaxFraction[iside][imod] = 0; t_ZdcModuleAmpError[iside][imod] = 0;
710 t_ZdcModuleMinDeriv2nd[iside][imod] = 0; t_ZdcModulePresample[iside][imod] = 0; t_ZdcModulePreSampleAmp[iside][imod] = 0;
711 t_ZdcLucrodTriggerAmp[iside][imod] = 0;t_ZdcLucrodTriggerAmpLG[iside][imod] = 0;
712 t_ZdcModuleMaxADC[iside][imod] = 0; t_ZdcModuleMaxADCHG[iside][imod] = 0; t_ZdcModuleMaxADCLG[iside][imod] = 0;
713 t_ZdcModulePeakADCHG[iside][imod] = 0; t_ZdcModulePeakADCLG[iside][imod] = 0;
714 t_ZdcModuleAmpLGRefit[iside][imod] = 0; t_ZdcModuleAmpCorrLGRefit[iside][imod] = 0;
715 t_ZdcModuleT0LGRefit[iside][imod] = 0; t_ZdcModuleT0SubLGRefit[iside][imod] = 0; t_ZdcModuleChisqLGRefit[iside][imod] = 0;
716
718 {
719 for (int ig=0;ig<2;ig++)
720 {
721 for (int id=0;id<2;id++)
722 {
723 for (unsigned int isamp=0;isamp<nsamplesZdc;isamp++)
724 {
725 if (nsamplesZdc==7) t_raw7[iside][imod][ig][id][isamp]=0;
726 if (nsamplesZdc==15) t_raw15[iside][imod][ig][id][isamp]=0;
727 if (nsamplesZdc==24) t_raw24[iside][imod][ig][id][isamp]=0;
728 if (nsamplesZdc==32) t_raw32[iside][imod][ig][id][isamp]=0;
729 if (nsamplesZdc==40) t_raw40[iside][imod][ig][id][isamp]=0;
730 }
731 }
732 }
733 if (nsamplesZdc==24||nsamplesZdc==32||nsamplesZdc==40)
734 {
735 for (int ch=0;ch<16;ch++)
736 {
737 for (unsigned int isamp=0;isamp<nsamplesZdc;isamp++)
738 {
739 t_rpdRaw[iside][ch][isamp]=0;
740 }
741 }
742 }
743 }
744 if (enableRPD)
745 {
746 for (int ch = 0; ch < 16; ch++) {
747 t_RpdChannelBaseline[iside][ch] = 0;
748 std::fill(t_RpdChannelPileupExpFitParams[iside][ch], t_RpdChannelPileupExpFitParams[iside][ch] + 2, 0);
750 std::fill(t_RpdChannelPileupExpFitParamErrs[iside][ch], t_RpdChannelPileupExpFitParamErrs[iside][ch] + 2, 0);
754 t_RpdChannelAmplitude[iside][ch] = 0;
755 t_RpdChannelAmplitudeCalib[iside][ch] = 0;
756 t_RpdChannelMaxADC[iside][ch] = 0;
757 t_RpdChannelMaxADCCalib[iside][ch] = 0;
758 t_RpdChannelMaxSample[iside][ch] = 0;
759 t_RpdChannelStatus[iside][ch] = 0;
760 t_RpdChannelPileupFrac[iside][ch] = 0;
761 }
762 t_RpdSideStatus[iside] = 0;
763 }
764 if (enableCentroid)
765 {
766 t_centroidStatus[iside] = 0;
767 std::fill(t_RPDChannelSubtrAmp[iside], t_RPDChannelSubtrAmp[iside] + 16, 0);
768 t_RPDSubtrAmpSum[iside] = 0;
771 t_xCentroidPreAvgSubtr[iside] = 0;
772 t_yCentroidPreAvgSubtr[iside] = 0;
773 t_xCentroid[iside] = 0;
774 t_yCentroid[iside] = 0;
775 std::fill(t_xRowCentroid[iside], t_xRowCentroid[iside] + 4, 0);
776 std::fill(t_yColCentroid[iside], t_yColCentroid[iside] + 4, 0);
777 t_reactionPlaneAngle[iside] = 0;
778 }
779 }
780 }
781
782 t_ZdcModuleMask = 0;
783 if (enableCentroid) {
785 t_centroidEventValid = false;
787 }
788
789 /*
790 if (t_zdcEventInfoError == xAOD::EventInfo::Error)
791 {
792 ANA_MSG_INFO("ZDC event failed EventInfo error check - aborting!");
793 return;
794 }
795 */
796
797 static const SG::ConstAccessor<char> centroidEventValidAcc("centroidEventValid" + auxSuffix);
798 static const SG::ConstAccessor<float> cosDeltaReactionPlaneAngleAcc("cosDeltaReactionPlaneAngle" + auxSuffix);
799 static const SG::ConstAccessor<float> CalibEnergyAcc("CalibEnergy"+auxSuffix);
800 static const SG::ConstAccessor<float> CalibEnergyErrAcc("CalibEnergyErr"+auxSuffix);
801 static const SG::ConstAccessor<float> NLCalibEnergyAcc("NLCalibEnergy"+auxSuffix);
802 static const SG::ConstAccessor<float> NLCalibEnergyErrAcc("NLCalibEnergyErr"+auxSuffix);
803 static const SG::ConstAccessor<float> UncalibSumAcc("UncalibSum"+auxSuffix);
804 static const SG::ConstAccessor<float> UncalibSumErrAcc("UncalibSumErr"+auxSuffix);
805 static const SG::ConstAccessor<float> AverageTimeAcc("AverageTime"+auxSuffix);
806 static const SG::ConstAccessor<unsigned int> StatusAcc("Status"+auxSuffix);
807 static const SG::ConstAccessor<unsigned int> ModuleMaskAcc("ModuleMask"+auxSuffix);
808 static const SG::ConstAccessor<float> TruthTotalEnergyAcc("TruthTotalEnergy" + auxSuffix);
809 static const SG::ConstAccessor<float> TruthInvisibleEnergyAcc("TruthInvisibleEnergy" + auxSuffix);
810 static const SG::ConstAccessor<float> TruthEMEnergyAcc("TruthEMEnergy" + auxSuffix);
811 static const SG::ConstAccessor<float> TruthNonEMEnergyAcc("TruthNonEMEnergy" + auxSuffix);
812 static const SG::ConstAccessor<float> TruthEscapedEnergyAcc("TruthEscapedEnergy" + auxSuffix);
813 static const SG::ConstAccessor<unsigned int> centroidStatusAcc("centroidStatus" + auxSuffix);
814 static const SG::ConstAccessor<std::vector<float> > RPDChannelSubtrAmpAcc("RPDChannelSubtrAmp" + auxSuffix);
815 static const SG::ConstAccessor<float> RPDSubtrAmpSumAcc("RPDSubtrAmpSum" + auxSuffix);
816 static const SG::ConstAccessor<float> xCentroidPreGeomCorPreAvgSubtrAcc("xCentroidPreGeomCorPreAvgSubtr" + auxSuffix);
817 static const SG::ConstAccessor<float> yCentroidPreGeomCorPreAvgSubtrAcc("yCentroidPreGeomCorPreAvgSubtr" + auxSuffix);
818 static const SG::ConstAccessor<float> xCentroidPreAvgSubtrAcc("xCentroidPreAvgSubtr" + auxSuffix);
819 static const SG::ConstAccessor<float> yCentroidPreAvgSubtrAcc("yCentroidPreAvgSubtr" + auxSuffix);
820 static const SG::ConstAccessor<float> xCentroidAcc("xCentroid" + auxSuffix);
821 static const SG::ConstAccessor<float> yCentroidAcc("yCentroid" + auxSuffix);
822 static const SG::ConstAccessor<std::vector<float> > xRowCentroidAcc("xRowCentroid" + auxSuffix);
823 static const SG::ConstAccessor<std::vector<float> > yColCentroidAcc("yColCentroid" + auxSuffix);
824 static const SG::ConstAccessor<float> reactionPlaneAngleAcc("reactionPlaneAngle" + auxSuffix);
825 static const SG::ConstAccessor<unsigned int> RPDStatusAcc("RPDStatus" + auxSuffix);
826 static const SG::ConstAccessor<unsigned int> nPhotonsAcc("nPhotons" + auxSuffix);
827 static const SG::ConstAccessor<float> CalibTimeAcc("CalibTime" + auxSuffix);
828 static const SG::ConstAccessor<float> AmplitudeAcc("Amplitude" + auxSuffix);
829 static const SG::ConstAccessor<float> AmplitudeNoNonLinAcc("AmpNoNonLin" + auxSuffix);
830 static const SG::ConstAccessor<float> TimeAcc("Time" + auxSuffix);
831 static const SG::ConstAccessor<float> ChisqAcc("Chisq" + auxSuffix);
832 static const SG::ConstAccessor<float> ChisqRatioAcc("ChisqRatio" + auxSuffix);
833 static const SG::ConstAccessor<float> FitAmpAcc("FitAmp" + auxSuffix);
834 static const SG::ConstAccessor<float> FitAmpErrorAcc("FitAmpError" + auxSuffix);
835 static const SG::ConstAccessor<float> FitT0Acc("FitT0" + auxSuffix);
836 static const SG::ConstAccessor<float> BkgdMaxFractionAcc("BkgdMaxFraction" + auxSuffix);
837 static const SG::ConstAccessor<float> MinDeriv2ndAcc("MinDeriv2nd" + auxSuffix);
838 static const SG::ConstAccessor<float> PresampleAcc("Presample" + auxSuffix);
839 static const SG::ConstAccessor<float> PreSampleAmpAcc("PreSampleAmp" + auxSuffix);
840 static const SG::ConstAccessor<float> RPDChannelBaselineAcc("RPDChannelBaseline" + auxSuffix);
841 static const SG::ConstAccessor<std::vector<float> > RPDChannelPileupExpFitParamsAcc("RPDChannelPileupExpFitParams" + auxSuffix);
842 static const SG::ConstAccessor<std::vector<float> > RPDChannelPileupExpFitParamErrsAcc("RPDChannelPileupExpFitParamErrs" + auxSuffix);
843 static const SG::ConstAccessor<std::vector<float> > RPDChannelPileupStretchedExpFitParamsAcc("RPDChannelPileupStretchedExpFitParams" + auxSuffix);
844 static const SG::ConstAccessor<std::vector<float> > RPDChannelPileupStretchedExpFitParamErrsAcc("RPDChannelPileupStretchedExpFitParamErrs" + auxSuffix);
845 static const SG::ConstAccessor<float> RPDChannelPileupExpFitMSEAcc("RPDChannelPileupExpFitMSE" + auxSuffix);
846 static const SG::ConstAccessor<float> RPDChannelPileupStretchedExpFitMSEAcc("RPDChannelPileupStretchedExpFitMSE" + auxSuffix);
847 static const SG::ConstAccessor<float> RPDChannelAmplitudeAcc("RPDChannelAmplitude" + auxSuffix);
848 static const SG::ConstAccessor<float> RPDChannelAmplitudeCalibAcc("RPDChannelAmplitudeCalib" + auxSuffix);
849 static const SG::ConstAccessor<float> RPDChannelMaxADCAcc("RPDChannelMaxADC" + auxSuffix);
850 static const SG::ConstAccessor<float> RPDChannelMaxADCCalibAcc("RPDChannelMaxADCCalib" + auxSuffix);
851 static const SG::ConstAccessor<unsigned int> RPDChannelMaxSampleAcc("RPDChannelMaxSample" + auxSuffix);
852 static const SG::ConstAccessor<unsigned int> RPDChannelStatusAcc("RPDChannelStatus" + auxSuffix);
853 static const SG::ConstAccessor<float> RPDChannelPileupFracAcc("RPDChannelPileupFrac" + auxSuffix);
854 static const SG::ConstAccessor<float> AmpLGRefitAcc("AmpLGRefit" + auxSuffix);
855 static const SG::ConstAccessor<float> T0LGRefitAcc("T0LGRefit" + auxSuffix);
856 static const SG::ConstAccessor<float> T0SubLGRefitAcc("T0SubLGRefit" + auxSuffix);
857 static const SG::ConstAccessor<float> ChisqLGRefitAcc("ChisqLGRefit" + auxSuffix);
858
859 static const SG::ConstAccessor<uint16_t> LucrodTriggerAmpAcc("LucrodTriggerAmp");
860 static const SG::ConstAccessor<uint16_t> LucrodTriggerAmpLGAcc("LucrodTriggerAmpLG");
861 static const SG::ConstAccessor<uint16_t> LucrodTriggerSideAmpAcc("LucrodTriggerSideAmp");
862 static const SG::ConstAccessor<uint16_t> LucrodTriggerSideAmpLGAcc("LucrodTriggerSideAmpLG");
863 static const SG::ConstAccessor<float> Amplitude0Acc("Amplitude");
864 static const SG::ConstAccessor<float> MaxADCAcc("MaxADC");
865 static const SG::ConstAccessor<float> MaxADCHGAcc("MaxADCHG");
866 static const SG::ConstAccessor<float> MaxADCLGAcc("MaxADCLG");
867 static const SG::ConstAccessor<float> PeakADCHGAcc("PeakADCHG");
868 static const SG::ConstAccessor<float> PeakADCLGAcc("PeakADCLG");
869 static const SG::ConstAccessor<std::vector<uint16_t> > g0d0DataAcc("g0d0Data");
870 static const SG::ConstAccessor<std::vector<uint16_t> > g0d1DataAcc("g0d1Data");
871 static const SG::ConstAccessor<std::vector<uint16_t> > g1d0DataAcc("g1d0Data");
872 static const SG::ConstAccessor<std::vector<uint16_t> > g1d1DataAcc("g1d1Data");
873 static const SG::ConstAccessor<std::vector<uint16_t> > g0dataAcc("g0data");
874 static const SG::ConstAccessor<std::vector<uint16_t> > g1dataAcc("g1data");
875
878 t_rpdDecodingError = rpdErr;
879 t_zdcDecodingError = zdcErr;
880 if (enableCentroid) {
881 // locate global sum (only if centroid is needed)
882 xAOD::ZdcModule const * globalSum = nullptr;
883 for (auto const * zdcSum : *zdcSums) {
884 if (zdcSum->zdcSide() == 0) {
885 globalSum = zdcSum;
886 break;
887 }
888 }
889 if (!globalSum) {
890 ANA_MSG_ERROR("unable to locate global ZdcSum (side = 0)");
892 }
893 else {
894 t_centroidDecorationsAvailable = centroidStatusAcc.isAvailable(*globalSum);
895 }
896 }
897
898 if (rpdErr||zdcErr) ANA_MSG_WARNING( "Decoding errors ZDC=" << zdcErr << " RPD=" << rpdErr );
899
900 if (zdcSums.ptr())
901 {
902 ANA_MSG_DEBUG( "accessing ZdcSums" );
903 for (const auto zdcSum : *zdcSums)
904 {
905 if (zdcSum->zdcSide()==0) {
906 // trap new global sum
908 t_centroidEventValid = centroidEventValidAcc(*zdcSum);
909 t_cosDeltaReactionPlaneAngle = cosDeltaReactionPlaneAngleAcc(*zdcSum);
910 }
911 // no other branches are filled from global sum - skip to the real sides (C=-1 and A=1)
912 continue;
913 }
914 int iside = 0;
915 if (zdcSum->zdcSide() > 0) iside = 1;
916
917 //static SG::AuxElement::ConstAccessor< float > acc( "CalibEnergy" );
918 //t_ZdcEnergy[iside] = acc(*zdcSum);
919
920 if (enableZDC && !zdcErr)
921 {
922 t_ZdcEnergy[iside] = CalibEnergyAcc(*zdcSum);
923 t_ZdcEnergyErr[iside] = CalibEnergyErrAcc(*zdcSum);
924 if (NLCalibEnergyAcc.isAvailable(*zdcSum)) {
925 t_ZdcNLEnergy[iside] = NLCalibEnergyAcc(*zdcSum);
926 t_ZdcNLEnergyErr[iside] = NLCalibEnergyErrAcc(*zdcSum);
927 }
928 t_ZdcAmp[iside] = UncalibSumAcc(*zdcSum);
929 t_ZdcAmpErr[iside] = UncalibSumErrAcc(*zdcSum);
930 if (LucrodTriggerSideAmpAcc.isAvailable(*zdcSum))
931 t_ZdcLucrodTriggerSideAmp[iside] = LucrodTriggerSideAmpAcc(*zdcSum);
932 if (LucrodTriggerSideAmpLGAcc.isAvailable(*zdcSum))
933 t_ZdcLucrodTriggerSideAmpLG[iside] = LucrodTriggerSideAmpLGAcc(*zdcSum);
934
935 ANA_MSG_VERBOSE("processZdcNtupleFromModules: ZdcSum energy = " << t_ZdcEnergy[iside]);
936
937 t_ZdcTime[iside] = AverageTimeAcc(*zdcSum);
938 t_ZdcStatus[iside] = StatusAcc(*zdcSum);
939 t_ZdcModuleMask += ( ModuleMaskAcc(*zdcSum) << 4 * iside);
940
941 if(m_isMC){
942 ANA_MSG_DEBUG("Filling sum truth");
943 t_ZdcTruthTotal [iside] = TruthTotalEnergyAcc(*zdcSum);
944 t_ZdcTruthInvis [iside] = TruthInvisibleEnergyAcc(*zdcSum);
945 t_ZdcTruthEM [iside] = TruthEMEnergyAcc(*zdcSum);
946 t_ZdcTruthNonEM [iside] = TruthNonEMEnergyAcc(*zdcSum);
947 t_ZdcTruthEscaped[iside] = TruthEscapedEnergyAcc(*zdcSum);
948 }
949
950 }
951
952 if (enableRPD)
953 {
954 if (enableRPDAmp && !rpdErr)
955 {
956 t_RpdSideStatus[iside] = RPDStatusAcc(*zdcSum);
957 }
959 {
960 t_centroidStatus[iside] = centroidStatusAcc(*zdcSum);
961 std::vector<float> const& rpdChannelSubtrAmp = RPDChannelSubtrAmpAcc(*zdcSum);
962 std::copy(rpdChannelSubtrAmp.begin(), rpdChannelSubtrAmp.end(), t_RPDChannelSubtrAmp[iside]);
963 t_RPDSubtrAmpSum[iside] = RPDSubtrAmpSumAcc(*zdcSum);
964 t_xCentroidPreGeomCorPreAvgSubtr[iside] = xCentroidPreGeomCorPreAvgSubtrAcc(*zdcSum);
965 t_yCentroidPreGeomCorPreAvgSubtr[iside] = yCentroidPreGeomCorPreAvgSubtrAcc(*zdcSum);
966 t_xCentroidPreAvgSubtr[iside] = xCentroidPreAvgSubtrAcc(*zdcSum);
967 t_yCentroidPreAvgSubtr[iside] = yCentroidPreAvgSubtrAcc(*zdcSum);
968 t_xCentroid[iside] = xCentroidAcc(*zdcSum);
969 t_yCentroid[iside] = yCentroidAcc(*zdcSum);
970 std::vector<float> const& xRowCentroid = xRowCentroidAcc(*zdcSum);
971 std::copy(xRowCentroid.begin(), xRowCentroid.end(), t_xRowCentroid[iside]);
972 std::vector<float> const& yColCentroid = yColCentroidAcc(*zdcSum);
973 std::copy(yColCentroid.begin(), yColCentroid.end(), t_yColCentroid[iside]);
974 t_reactionPlaneAngle[iside] = reactionPlaneAngleAcc(*zdcSum);
975 }
976 }
977 }
978 }
979
980 ANA_MSG_DEBUG( "accessing ZdcModules" );
981
982 if (zdcModules.ptr())
983 {
984 for (const auto zdcMod : *zdcModules)
985 {
986 int iside = 0;
987 if (zdcMod->zdcSide() > 0) iside = 1;
988 int imod = zdcMod->zdcModule();
989
990 if (m_isMC){
991 //Calib hits are only stored in channel 0 of the RPD
992 if(!(imod == 4 && zdcMod->zdcChannel() != 0)){
993 t_ZdcModuleTruthTotal [iside][imod] = TruthTotalEnergyAcc(*zdcMod);
994 t_ZdcModuleTruthInvis [iside][imod] = TruthInvisibleEnergyAcc(*zdcMod);
995 t_ZdcModuleTruthEM [iside][imod] = TruthEMEnergyAcc(*zdcMod);
996 t_ZdcModuleTruthNonEM [iside][imod] = TruthNonEMEnergyAcc(*zdcMod);
997 t_ZdcModuleTruthEscaped[iside][imod] = TruthEscapedEnergyAcc(*zdcMod);
998 t_ZdcModuleTruthNphotons[iside][imod] = nPhotonsAcc(*zdcMod);
999 }
1000 //Calib hits are stored for all modules
1001 //Other data is only valid for module 1-4
1002 if(imod > 4) continue;
1003 }
1004
1005 ANA_MSG_VERBOSE ("Module " << zdcMod->zdcSide() << " " << zdcMod->zdcModule() << " amp:" << AmplitudeAcc(*zdcMod));
1006
1007 if (zdcMod->zdcType() == 0 && !zdcErr)
1008 {
1009 // ZDC energy type modules
1010 t_ZdcModuleCalibAmp[iside][imod] = CalibEnergyAcc(*zdcMod);
1011 t_ZdcModuleCalibTime[iside][imod] = CalibTimeAcc(*zdcMod);
1012 t_ZdcModuleStatus[iside][imod] = StatusAcc(*zdcMod);
1013 if (t_ZdcModuleAmp[iside][imod] != 0.)
1014 Warning("processZdcNtupleFromModules", "overwriting side %d module %d!", iside, imod);
1015 t_ZdcModuleAmp[iside][imod] = AmplitudeAcc(*zdcMod);
1016 t_ZdcModuleAmpUncorr[iside][imod] = AmplitudeNoNonLinAcc(*zdcMod);
1017 t_ZdcModuleTime[iside][imod] = TimeAcc(*zdcMod);
1018
1019 t_ZdcModuleChisq[iside][imod] = ChisqAcc(*zdcMod);
1020 t_ZdcModuleChisqRatio[iside][imod] = ChisqRatioAcc(*zdcMod);
1021 t_ZdcModuleFitAmp[iside][imod] = FitAmpAcc(*zdcMod);
1022 t_ZdcModuleAmpError[iside][imod] = FitAmpErrorAcc(*zdcMod);
1023 t_ZdcModuleFitT0[iside][imod] = FitT0Acc(*zdcMod);
1024 t_ZdcModuleBkgdMaxFraction[iside][imod] = BkgdMaxFractionAcc(*zdcMod);
1025 t_ZdcModuleMinDeriv2nd[iside][imod] = MinDeriv2ndAcc(*zdcMod);
1026 t_ZdcModulePresample[iside][imod] = PresampleAcc(*zdcMod);
1027 t_ZdcModulePreSampleAmp[iside][imod] = PreSampleAmpAcc(*zdcMod);
1028
1029 if (AmpLGRefitAcc.isAvailable(*zdcMod)) {
1030 t_ZdcModuleAmpLGRefit[iside][imod] = AmpLGRefitAcc(*zdcMod);
1031 t_ZdcModuleT0LGRefit[iside][imod] = T0LGRefitAcc(*zdcMod);
1032 t_ZdcModuleT0SubLGRefit[iside][imod] = T0SubLGRefitAcc(*zdcMod);
1033 t_ZdcModuleChisqLGRefit[iside][imod] = ChisqLGRefitAcc(*zdcMod);
1034 }
1035
1036 if (LucrodTriggerAmpAcc.isAvailable(*zdcMod))
1037 t_ZdcLucrodTriggerAmp[iside][imod] = LucrodTriggerAmpAcc(*zdcMod);
1038 if (LucrodTriggerAmpLGAcc.isAvailable(*zdcMod))
1039 t_ZdcLucrodTriggerAmpLG[iside][imod] = LucrodTriggerAmpLGAcc(*zdcMod);
1040
1041 if (MaxADCAcc.isAvailable(*zdcMod))
1042 t_ZdcModuleMaxADC[iside][imod] = MaxADCAcc(*zdcMod);
1043 if (MaxADCHGAcc.isAvailable(*zdcMod))
1044 t_ZdcModuleMaxADCHG[iside][imod] = MaxADCHGAcc(*zdcMod);
1045 if (MaxADCLGAcc.isAvailable(*zdcMod))
1046 t_ZdcModuleMaxADCLG[iside][imod] = MaxADCLGAcc(*zdcMod);
1047 if (PeakADCHGAcc.isAvailable(*zdcMod))
1048 t_ZdcModulePeakADCHG[iside][imod] = PeakADCHGAcc(*zdcMod);
1049 if (PeakADCLGAcc.isAvailable(*zdcMod))
1050 t_ZdcModulePeakADCLG[iside][imod] = PeakADCLGAcc(*zdcMod);
1051
1052 if (enableOutputSamples && !zdcErr)
1053 {
1054 for (unsigned int isamp = 0; isamp < nsamplesZdc; isamp++) // 7 samples
1055 {
1056 if (nsamplesZdc == 7)
1057 {
1058 t_raw7[iside][imod][0][0][isamp] = g0d0DataAcc(*zdcMod).at(isamp);
1059 t_raw7[iside][imod][0][1][isamp] = g0d1DataAcc(*zdcMod).at(isamp);
1060 t_raw7[iside][imod][1][0][isamp] = g1d0DataAcc(*zdcMod).at(isamp);
1061 t_raw7[iside][imod][1][1][isamp] = g1d1DataAcc(*zdcMod).at(isamp);
1062 }
1063
1064 if (nsamplesZdc == 15)
1065 {
1066 t_raw15[iside][imod][0][0][isamp] = g0d0DataAcc(*zdcMod).at(isamp);
1067 t_raw15[iside][imod][0][1][isamp] = g0d1DataAcc(*zdcMod).at(isamp);
1068 t_raw15[iside][imod][1][0][isamp] = g1d0DataAcc(*zdcMod).at(isamp);
1069 t_raw15[iside][imod][1][1][isamp] = g1d1DataAcc(*zdcMod).at(isamp);
1070 }
1071
1072 if (nsamplesZdc == 24)
1073 {
1074 t_raw24[iside][imod][0][0][isamp] = g0dataAcc(*zdcMod).at(isamp);
1075 t_raw24[iside][imod][1][0][isamp] = g1dataAcc(*zdcMod).at(isamp);
1076 }
1077 if (nsamplesZdc == 32)
1078 {
1079 t_raw32[iside][imod][0][0][isamp] = g0dataAcc(*zdcMod).at(isamp);
1080 t_raw32[iside][imod][1][0][isamp] = g1dataAcc(*zdcMod).at(isamp);
1081 }
1082 if (nsamplesZdc == 40)
1083 {
1084 t_raw40[iside][imod][0][0][isamp] = g0dataAcc(*zdcMod).at(isamp);
1085 t_raw40[iside][imod][1][0][isamp] = g1dataAcc(*zdcMod).at(isamp);
1086 }
1087 }
1088 }
1089 }
1090 else if (zdcMod->zdcType() == 1 && nsamplesZdc == 24)
1091 {
1092 // this is the RPD
1093 if (enableRPD)
1094 {
1095 if (enableRPDAmp && !rpdErr)
1096 {
1097 t_RpdChannelBaseline[iside][zdcMod->zdcChannel()] = RPDChannelBaselineAcc(*zdcMod);
1098 std::vector<float> const &rpdChannelPileupExpFitParams = RPDChannelPileupExpFitParamsAcc(*zdcMod);
1099 std::copy(rpdChannelPileupExpFitParams.begin(), rpdChannelPileupExpFitParams.end(), t_RpdChannelPileupExpFitParams[iside][zdcMod->zdcChannel()]);
1100 std::vector<float> const &rpdChannelPileupExpFitParamErrs = RPDChannelPileupExpFitParamErrsAcc(*zdcMod);
1101 std::copy(rpdChannelPileupExpFitParamErrs.begin(), rpdChannelPileupExpFitParamErrs.end(), t_RpdChannelPileupExpFitParamErrs[iside][zdcMod->zdcChannel()]);
1102 std::vector<float> const &rpdChannelPileupStretchedExpFitParams = RPDChannelPileupStretchedExpFitParamsAcc(*zdcMod);
1103 std::copy(rpdChannelPileupStretchedExpFitParams.begin(), rpdChannelPileupStretchedExpFitParams.end(), t_RpdChannelPileupStretchedExpFitParams[iside][zdcMod->zdcChannel()]);
1104 std::vector<float> const &rpdChannelPileupStretchedExpFitParamErrs = RPDChannelPileupStretchedExpFitParamErrsAcc(*zdcMod);
1105 std::copy(rpdChannelPileupStretchedExpFitParamErrs.begin(), rpdChannelPileupStretchedExpFitParamErrs.end(), t_RpdChannelPileupStretchedExpFitParamErrs[iside][zdcMod->zdcChannel()]);
1106 t_RpdChannelPileupExpFitMSE[iside][zdcMod->zdcChannel()] = RPDChannelPileupExpFitMSEAcc(*zdcMod);
1107 t_RpdChannelPileupStretchedExpFitMSE[iside][zdcMod->zdcChannel()] = RPDChannelPileupStretchedExpFitMSEAcc(*zdcMod);
1108 t_RpdChannelAmplitude[iside][zdcMod->zdcChannel()] = RPDChannelAmplitudeAcc(*zdcMod);
1109 t_RpdChannelAmplitudeCalib[iside][zdcMod->zdcChannel()] = RPDChannelAmplitudeCalibAcc(*zdcMod);
1110 t_RpdChannelMaxADC[iside][zdcMod->zdcChannel()] = RPDChannelMaxADCAcc(*zdcMod);
1111 t_RpdChannelMaxADCCalib[iside][zdcMod->zdcChannel()] = RPDChannelMaxADCCalibAcc(*zdcMod);
1112 t_RpdChannelMaxSample[iside][zdcMod->zdcChannel()] = RPDChannelMaxSampleAcc(*zdcMod);
1113 t_RpdChannelStatus[iside][zdcMod->zdcChannel()] = RPDChannelStatusAcc(*zdcMod);
1114 t_RpdChannelPileupFrac[iside][zdcMod->zdcChannel()] = RPDChannelPileupFracAcc(*zdcMod);
1115 if(m_isMC){
1116 t_RpdModuleTruthNphotons[iside][zdcMod->zdcChannel()] = nPhotonsAcc(*zdcMod);
1117 }
1118 }
1120 {
1121 std::vector<uint16_t> const &rpdChannelRaw = g0dataAcc(*zdcMod);
1122 std::copy(rpdChannelRaw.begin(), rpdChannelRaw.end(), t_rpdRaw[iside][zdcMod->zdcChannel()]);
1123 }
1124 }
1125 }
1126 }
1127 }
1128 else
1129 {
1130 ANA_MSG_INFO("No ZdcModules" << auxSuffix << " when expected!");
1131 }
1132
1133 if (msgLvl (MSG::VERBOSE))
1134 {
1135 std::ostringstream message;
1136 message << "Dump zdc_ZdcModuleAmp: ";
1137 for (int iside = 0; iside < 2; iside++)
1138 {
1139 for (int imod = 0; imod < 4; imod++)
1140 {
1141 message << t_ZdcModuleAmp[iside][imod] << " ";
1142 }
1143 }
1144 }
1145}
#define ANA_MSG_WARNING(xmsg)
Macro printing warning messages.
ZdcModule_v1 ZdcModule
Definition ZdcModule.h:15

◆ 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 }

◆ reprocessZdcModule()

void ZdcNtuple::reprocessZdcModule ( const xAOD::ZdcModule * zdcMod,
bool flipdelay = 0 )

◆ requestBeginInputFile()

StatusCode EL::AnaAlgorithm::requestBeginInputFile ( )
inherited

register this algorithm to have an implementation of beginInputFile

Guarantee
strong
Failures
beginInputFile not supported

Definition at line 270 of file AnaAlgorithm.cxx.

272 {
273 m_hasBeginInputFile = true;
274
275#ifndef XAOD_STANDALONE
276 // Connect to the IncidentSvc:
277 ServiceHandle< IIncidentSvc > incSvc( "IncidentSvc", name() );
278 ATH_CHECK( incSvc.retrieve() );
279
280 // Set up the right callback, but ensure we don't double-register
281 // if we are called twice
282 incSvc->removeListener( this, IncidentType::BeginInputFile );
283 incSvc->addListener( this, IncidentType::BeginInputFile, 0, true );
284#endif
285
286 return StatusCode::SUCCESS;
287 }

◆ requestEndInputFile()

StatusCode EL::AnaAlgorithm::requestEndInputFile ( )
inherited

register this algorithm to have an implementation of endInputFile

Guarantee
strong
Failures
endInputFile not supported

Definition at line 291 of file AnaAlgorithm.cxx.

293 {
294 m_hasEndInputFile = true;
295
296#ifndef XAOD_STANDALONE
297 // Connect to the IncidentSvc:
298 ServiceHandle< IIncidentSvc > incSvc( "IncidentSvc", name() );
299 ATH_CHECK( incSvc.retrieve() );
300
301 // Set up the right callback, but ensure we don't double-register
302 // if we are called twice
303 incSvc->removeListener( this, IncidentType::EndInputFile );
304 incSvc->addListener( this, IncidentType::EndInputFile, 0, true );
305#endif
306
307 return StatusCode::SUCCESS;
308 }

◆ requestFileExecute()

StatusCode EL::AnaAlgorithm::requestFileExecute ( )
inherited

register this algorithm to have an implementation of fileexecute

Guarantee
strong
Failures
fileExecute not supported

Definition at line 249 of file AnaAlgorithm.cxx.

251 {
252 m_hasFileExecute = true;
253
254#ifndef XAOD_STANDALONE
255 // Connect to the IncidentSvc:
256 ServiceHandle< IIncidentSvc > incSvc( "IncidentSvc", name() );
257 ATH_CHECK( incSvc.retrieve() );
258
259 // Set up the right callback, but ensure we don't double-register
260 // if we are called twice
261 incSvc->removeListener( this, IncidentType::BeginInputFile );
262 incSvc->addListener( this, IncidentType::BeginInputFile, 0, true );
263#endif
264
265 return StatusCode::SUCCESS;
266 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ setupTriggerHistos()

void ZdcNtuple::setupTriggerHistos ( )

Definition at line 2030 of file ZdcNtuple.cxx.

2031{
2032 if (!enableTrigger) return;
2033
2034 m_outputTree = tree( "zdcTree" );
2035 ANA_MSG_INFO("setupTriggerHistos(): Setting up trigger histos and ntuple = " << m_outputTree);
2036
2037 std::vector<std::string> triggers;
2038 std::vector<std::string> rerunTriggers;
2039 bool zdc_triggers = true;
2040
2041 // ZDC triggers
2042 if (zdc_triggers)
2043 {
2044 if (zdcCalib) // lists for calibration data
2045 {
2046 if (lhcf2022)
2047 {
2048 triggers.push_back("L1_LHCF");
2049 triggers.push_back("L1_ZDC_OR");
2050 }
2051
2052 if (pbpb2023)
2053 {
2054 triggers.push_back("L1_ZDC_OR");
2055 triggers.push_back("L1_ZDC_A");
2056 triggers.push_back("L1_ZDC_C");
2057 triggers.push_back("L1_ZDC_A_C");
2058 triggers.push_back("L1_ZDC_OR_EMPTY");
2059 triggers.push_back("L1_ZDC_A_EMPTY");
2060 triggers.push_back("L1_ZDC_C_EMPTY");
2061 triggers.push_back("L1_ZDC_A_C_EMPTY");
2062 triggers.push_back("L1_ZDC_OR_UNPAIRED_NONISO");
2063 triggers.push_back("L1_ZDC_A_UNPAIRED_NONISO");
2064 triggers.push_back("L1_ZDC_C_UNPAIRED_NONISO");
2065 triggers.push_back("L1_ZDC_A_C_UNPAIRED_NONISO");
2066 }
2067 }
2068 else // lists for physics data
2069 {
2070 if (lhcf2022)
2071 {
2072 triggers.push_back("HLT_noalg_L1LHCF");
2073 }
2074 if (lhcf2022afp)
2075 {
2076 triggers.push_back("HLT_noalg_AFPPEB_L1AFP_A");
2077 triggers.push_back("HLT_noalg_AFPPEB_L1AFP_C");
2078 }
2079 if (lhcf2022zdc)
2080 {
2081 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_OR");
2082 triggers.push_back("HLT_noalg_ZDCPEB_L1LHCF");
2083 triggers.push_back("HLT_noalg_L1ZDC_OR");
2084 triggers.push_back("HLT_noalg_L1ZDC_XOR_E2");
2085 triggers.push_back("HLT_noalg_L1ZDC_XOR_E1_E3");
2086 triggers.push_back("HLT_noalg_L1ZDC_A_AND_C");
2087 triggers.push_back("HLT_mb_sptrk_L1ZDC_OR");
2088 triggers.push_back("HLT_mb_sptrk_L1ZDC_XOR_E2");
2089 triggers.push_back("HLT_mb_sptrk_L1ZDC_XOR_E1_E3");
2090 triggers.push_back("HLT_mb_sptrk_L1ZDC_A_AND_C");
2091 triggers.push_back("HLT_mb_sp100_trk30_hmt_L1ZDC_XOR_E2");
2092 triggers.push_back("HLT_mb_sp100_trk30_hmt_L1ZDC_XOR_E1_E3");
2093 triggers.push_back("HLT_mb_sp100_trk30_hmt_L1ZDC_A_AND_C");
2094 }
2095 if (oo2025) {
2096 triggers = {
2097 "HLT_mb_sptrk_L1TRT_ZDC_A", "HLT_mb_sptrk_L1TRT_ZDC_C", "HLT_mb_sptrk_L1TRT_ZDC_A_C",
2098 "HLT_mb_sptrk_L1TRT_ZDC_OR", "HLT_mb_sptrk_L1TRT_ZDC_LOR",
2099 "HLT_mb_sptrk_L1ZDC_A", "HLT_mb_sptrk_L1ZDC_C", "HLT_mb_sptrk_L1ZDC_A_C",
2100 "HLT_mb_sptrk_L1ZDC_LOR", "HLT_mb_sptrk_L1ZDC_OR",
2101 "HLT_mb_sptrk_L1ZDC_XN", "HLT_mb_sptrk_L1ZDC_YN", "HLT_mb_sptrk_L1ZDC_ZN",
2102 "HLT_mb_sptrk_L1ZDC_XNXN", "HLT_mb_sptrk_L1ZDC_XNYN", "HLT_mb_sptrk_L1ZDC_XNZN",
2103 "HLT_mb_sptrk_L1ZDC_XN_XOR", "HLT_mb_sptrk_L1ZDC_YNYN", "HLT_mb_sptrk_L1ZDC_YN_XOR",
2104 "HLT_mb_sptrk_L1ZDC_ZN_XOR",
2105 "HLT_noalg_L1TRT_ZDC_A", "HLT_noalg_L1TRT_ZDC_C", "HLT_noalg_L1TRT_ZDC_A_C",
2106 "HLT_noalg_L1TRT_ZDC_OR", "HLT_noalg_L1TRT_ZDC_LOR",
2107 "HLT_noalg_L1TRT_ZDC_YN", "HLT_noalg_L1TRT_ZDC_ZN",
2108 "HLT_noalg_L1TRT_ZDC_XNXN", "HLT_noalg_L1TRT_ZDC_XNYN", "HLT_noalg_L1TRT_ZDC_XNZN",
2109 "HLT_noalg_L1TRT_ZDC_XN_XOR", "HLT_noalg_L1TRT_ZDC_YNYN", "HLT_noalg_L1TRT_ZDC_YN_XOR",
2110 "HLT_noalg_L1TRT_ZDC_ZN_XOR",
2111 "HLT_noalg_L1ZDC_A", "HLT_noalg_L1ZDC_C", "HLT_noalg_L1ZDC_A_C",
2112 "HLT_noalg_L1ZDC_OR", "HLT_noalg_L1ZDC_LOR",
2113 "HLT_noalg_L1ZDC_YN", "HLT_noalg_L1ZDC_ZN",
2114 "HLT_noalg_L1ZDC_XNXN", "HLT_noalg_L1ZDC_XNYN", "HLT_noalg_L1ZDC_XNZN",
2115 "HLT_noalg_L1ZDC_XN_XOR", "HLT_noalg_L1ZDC_YNYN", "HLT_noalg_L1ZDC_YN_XOR",
2116 "HLT_noalg_L1ZDC_ZN_XOR"
2117 };
2118 }
2119 }
2120 }
2121
2122 //char name[50];
2123 ANA_MSG_INFO("Adding trigger branches!");
2124
2125 int ic = 0;
2126 for (auto &trig : triggers)
2127 {
2128 const Trig::ChainGroup* cg = m_trigDecisionTool->getChainGroup(trig);
2129 if (cg->getListOfTriggers().size())
2130 {
2131 ANA_MSG_INFO("setupTriggerHistos(): Trigger found = " << trig.c_str() << " bit " << ic);
2132 }
2133 else
2134 {
2135 ANA_MSG_INFO("setupTriggerHistos(): Trigger NOT found = " << trig.c_str() << " bit " << ic);
2136 }
2137 m_chainGroups.push_back(cg);
2138 // force all triggers to show up in tree
2139 TString bname(trig.c_str());
2140 m_outputTree->Branch(bname, &(t_decisions[ic]), bname + "/O");
2141 m_outputTree->Branch("ps_" + bname, &(t_prescales[ic]), "ps_" + bname + "/F");
2142 ic++;
2143 }
2144
2145 ANA_MSG_INFO( "triggers = " << triggers.size() << " chains = " << m_chainGroups.size() );
2146
2147 int irc = 0;
2148 ANA_MSG_INFO("Adding rerun trigger branches!");
2149 for (auto &trig : rerunTriggers)
2150 {
2151 const Trig::ChainGroup* cg = m_trigDecisionTool->getChainGroup(trig);
2152 m_rerunChainGroups.push_back(cg);
2153 if (cg->getListOfTriggers().size())
2154 {
2155 ANA_MSG_INFO("setupTriggerHistos(): Rerun trigger found = " << trig.c_str() << " bit " << irc);
2156 }
2157 else
2158 {
2159 ANA_MSG_INFO("setupTriggerHistos(): Rerun trigger NOT found = " << trig.c_str() << " bit " << irc);
2160 }
2161 // force all rerun triggers to show up in tree
2162 TString bname(trig.c_str());
2163 m_outputTree->Branch(bname, &(t_rerunDecisions[irc]), bname + "/O");
2164 irc++;
2165 }
2166
2167 // trigger matching flags for electrons and muons
2168
2169 m_setupTrigHist = true;
2170
2171 ANA_MSG_INFO("setupTriggerHistos(): Finished setting up trigger");
2172
2173}
std::vector< std::string > getListOfTriggers() const

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthHistogramAlgorithm::sysInitialize ( )
virtualinherited

Initialization method invoked by the framework.

This method is responsible for any bookkeeping of initialization required by the framework itself. It will in turn invoke the initialize() method of the derived algorithm, and of any sub-algorithms which it creates.

Reimplemented from AthCommonAlgorithm< Gaudi::Algorithm >.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 75 of file AthHistogramAlgorithm.cxx.

76{
77 // ---- stolen from GaudiKernel/Algorithm::sysInitialize -------
78 // Bypass the initialization if the algorithm
79 // has already been initialized.
80 if ( Gaudi::StateMachine::INITIALIZED <= FSMState() ) return StatusCode::SUCCESS;
81
82 // Set the Algorithm's properties
83 bindPropertiesTo( serviceLocator()->getOptsSvc() );
84
85 // Bypass the initialization if the algorithm is disabled.
86 // Need to do this after bindPropertiesTo.
87 if ( !isEnabled( ) ) return StatusCode::SUCCESS;
88
89 // ---- stolen from GaudiKernel/Algorithm::sysInitialize ------- END ---
90
91
92 // Get the THistSvc
93 ATH_CHECK ( histSvc().retrieve() );
94
95 // Configure the underlying AthHistogramming helper
100
101 // Print some setup information into the log file
102 ATH_MSG_DEBUG ("Initializing " << name() << "...");
103 ATH_MSG_DEBUG (" using THistService = " << m_histSvc );
104 ATH_MSG_DEBUG (" using RootStreamName = " << m_prefix );
105 ATH_MSG_DEBUG (" using RootDirName = " << m_rootDir );
106 ATH_MSG_DEBUG (" using HistNamePrefix = " << m_histNamePrefix );
107 ATH_MSG_DEBUG (" using HistNamePostfix = " << m_histNamePostfix );
108 ATH_MSG_DEBUG (" using HistTitlePrefix = " << m_histTitlePrefix );
109 ATH_MSG_DEBUG (" using HistTitlePostfix = " << m_histTitlePostfix );
110
111
112 // re-direct to base class...
114}
#define ATH_MSG_DEBUG(x)
virtual StatusCode sysInitialize() override
const ServiceHandle< ITHistSvc > & histSvc() const
The standard THistSvc (for writing histograms and TTrees and more to a root file) Returns (kind of) a...
std::string m_histNamePrefix
The prefix for the histogram THx name.
std::string m_prefix
Name of the ROOT output stream (file).
std::string m_histNamePostfix
The postfix for the histogram THx name.
std::string m_histTitlePostfix
The postfix for the histogram THx title.
std::string m_rootDir
Name of the ROOT directory.
std::string m_histTitlePrefix
The prefix for the histogram THx title.
StatusCode configAthHistogramming(const ServiceHandle< ITHistSvc > &histSvc, const std::string &prefix, const std::string &rootDir, const std::string &histNamePrefix, const std::string &histNamePostfix, const std::string &histTitlePrefix, const std::string &histTitlePostfix)
To be called by the derived classes to fill the internal configuration.

◆ 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.

◆ trackQuality()

int ZdcNtuple::trackQuality ( const xAOD::TrackParticle * tp,
const xAOD::Vertex * vertex )

Definition at line 1561 of file ZdcNtuple.cxx.

1562{
1563
1564 if (!track) return -1;
1565
1566 bool pass_looseprimary = false;
1567 if (m_selTool->accept(*track,vertex))
1568 {
1569 pass_looseprimary = true;
1570 }
1571
1572 int quality = 0;
1573 if (pass_looseprimary) quality += 1;
1574
1575 return quality;
1576
1577}

◆ tree()

TTree * AthHistogramming::tree ( const std::string & treeName,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the retrieval of registered TTrees.

Definition at line 339 of file AthHistogramming.cxx.

340{
341 // Build a 32 bit hash out of the name
342 const hash_t treeHash = this->hash(treeName);
343
344 // See if this entry exists in the map
345 TreeMap_t::const_iterator it = m_treeMap.find( treeHash );
346 if ( it == m_treeMap.end() ) // It doesn't exist!
347 { // Let's see into the THistSvc if somebody else has registered the TTree...
348
349 // Need to copy the strings as we will massage them from here on
350 std::string treeNameCopy = treeName;
351 std::string tDirCopy = tDir;
352 std::string streamCopy = stream;
353
354 // Massage the final string to book things
355 std::string bookingString("");
356 this->buildBookingString( bookingString, treeNameCopy, tDirCopy, streamCopy );
357
358 TTree* treePointer(NULL);
359 if ( !((histSvc()->getTree(bookingString, treePointer)).isSuccess()) )
360 {
361 m_msg << MSG::WARNING
362 << "Problem retrieving the TTree with name " << treeNameCopy
363 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
364 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
365 return NULL;
366 }
367 // If we get to here, we actually found the TTree in the THistSvc.
368 // So let's add it to the local cache map and return its pointer
369 m_treeMap.insert( m_treeMap.end(), std::pair< const hash_t, TTree* >( treeHash, treePointer ) );
370 return treePointer;
371 }
372
373 // Return the pointer to the TTree that we got from the local cache map
374 return it->second;
375}
std::pair< StatusCode, TTree * > getTree(ITHistSvc &svc, const std::string &name)

◆ 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 }

◆ writeTrack()

void ZdcNtuple::writeTrack ( const xAOD::TrackParticle * track,
const xAOD::Vertex * vertex,
int trk_index )

Definition at line 1581 of file ZdcNtuple.cxx.

1582{
1583 t_trk_pt.push_back(track->pt());
1584 t_trk_eta.push_back(track->eta());
1585 t_trk_phi.push_back(track->phi());
1586 t_trk_e.push_back(track->e());
1587 t_trk_index.push_back(trk_index);
1588 t_trk_theta.push_back(track->theta());
1589 t_trk_charge.push_back(track->charge());
1590 t_trk_d0.push_back(track->d0());
1591 t_trk_z0.push_back(track->z0());
1592 t_trk_vz.push_back(track->vz());
1593
1594 float vtxz = -999.;
1595 t_trk_vtxz.push_back(vtxz);
1596
1597 static const SG::ConstAccessor<uint8_t> numberOfInnermostPixelLayerHitsAcc("numberOfInnermostPixelLayerHits");
1598 static const SG::ConstAccessor<uint8_t> expectInnermostPixelLayerHitAcc("expectInnermostPixelLayerHit");
1599 static const SG::ConstAccessor<uint8_t> numberOfNextToInnermostPixelLayerHitsAcc("numberOfNextToInnermostPixelLayerHits");
1600 static const SG::ConstAccessor<uint8_t> expectNextToInnermostPixelLayerHitAcc("expectNextToInnermostPixelLayerHit");
1601 static const SG::ConstAccessor<uint8_t> numberOfSCTHitsAcc("numberOfSCTHits");
1602 static const SG::ConstAccessor<uint8_t> numberOfPixelHitsAcc("numberOfPixelHits");
1603 static const SG::ConstAccessor<uint8_t> numberOfSCTDeadSensorsAcc("numberOfSCTDeadSensors");
1604 static const SG::ConstAccessor<uint8_t> numberOfPixelDeadSensorsAcc("numberOfPixelDeadSensors");
1605 static const SG::ConstAccessor<uint8_t> numberOfSCTHolesAcc("numberOfSCTHoles");
1606 static const SG::ConstAccessor<uint8_t> numberOfPixelHolesAcc("numberOfPixelHoles");
1607 static const SG::ConstAccessor<uint8_t> numberOfTRTHitsAcc("numberOfTRTHits");
1608 static const SG::ConstAccessor<uint8_t> numberOfTRTOutliersAcc("numberOfTRTOutliers");
1609
1610 t_trk_quality.push_back(trackQuality(track, vertex));
1611 t_trk_inPixHits.push_back(numberOfInnermostPixelLayerHitsAcc(*track));
1612 t_trk_exPixHits.push_back(expectInnermostPixelLayerHitAcc(*track));
1613 t_trk_ninPixHits.push_back(numberOfNextToInnermostPixelLayerHitsAcc(*track));
1614 t_trk_nexPixHits.push_back(expectNextToInnermostPixelLayerHitAcc(*track));
1615 t_trk_nSctHits.push_back(numberOfSCTHitsAcc(*track));
1616 t_trk_nPixHits.push_back(numberOfPixelHitsAcc(*track));
1617 t_trk_nSctDead.push_back(numberOfSCTDeadSensorsAcc(*track));
1618 t_trk_nPixDead.push_back(numberOfPixelDeadSensorsAcc(*track));
1619 t_trk_nSctHoles.push_back(numberOfSCTHolesAcc(*track));
1620 t_trk_nPixHoles.push_back(numberOfPixelHolesAcc(*track));
1621 t_trk_nTrtHits.push_back(numberOfTRTHitsAcc(*track));
1622 t_trk_nTrtOutliers.push_back(numberOfTRTOutliersAcc(*track));
1623
1624 float pixeldEdx = 0;
1625 track->summaryValue(pixeldEdx, xAOD::SummaryType::pixeldEdx);
1626 t_trk_pixeldEdx.push_back(pixeldEdx);
1627}
@ pixeldEdx
the dE/dx estimate, calculated using the pixel clusters [?

Member Data Documentation

◆ auxSuffix

std::string ZdcNtuple::auxSuffix

Definition at line 80 of file ZdcNtuple.h.

◆ doZdcCalib

bool ZdcNtuple::doZdcCalib

Definition at line 92 of file ZdcNtuple.h.

◆ enableCalo

bool ZdcNtuple::enableCalo

Definition at line 61 of file ZdcNtuple.h.

◆ enableCentroid

bool ZdcNtuple::enableCentroid

Definition at line 90 of file ZdcNtuple.h.

◆ enableClusters

bool ZdcNtuple::enableClusters

Definition at line 62 of file ZdcNtuple.h.

◆ enableElectrons

bool ZdcNtuple::enableElectrons

Definition at line 65 of file ZdcNtuple.h.

◆ enableID

bool ZdcNtuple::enableID

Definition at line 60 of file ZdcNtuple.h.

◆ enableJets

bool ZdcNtuple::enableJets

Definition at line 69 of file ZdcNtuple.h.

◆ enableMuons

bool ZdcNtuple::enableMuons

Definition at line 64 of file ZdcNtuple.h.

◆ enableOutputSamples

bool ZdcNtuple::enableOutputSamples

Definition at line 57 of file ZdcNtuple.h.

◆ enableOutputTree

bool ZdcNtuple::enableOutputTree

Definition at line 56 of file ZdcNtuple.h.

◆ enablePhotons

bool ZdcNtuple::enablePhotons

Definition at line 66 of file ZdcNtuple.h.

◆ enableRPD

bool ZdcNtuple::enableRPD

Definition at line 88 of file ZdcNtuple.h.

◆ enableRPDAmp

bool ZdcNtuple::enableRPDAmp

Definition at line 89 of file ZdcNtuple.h.

◆ enableTracks

bool ZdcNtuple::enableTracks

Definition at line 63 of file ZdcNtuple.h.

◆ enableTrigger

bool ZdcNtuple::enableTrigger

Definition at line 58 of file ZdcNtuple.h.

◆ enableTriggerJets

bool ZdcNtuple::enableTriggerJets

Definition at line 70 of file ZdcNtuple.h.

◆ enableTruth

bool ZdcNtuple::enableTruth

Definition at line 68 of file ZdcNtuple.h.

◆ enableTT

bool ZdcNtuple::enableTT

Definition at line 67 of file ZdcNtuple.h.

◆ enableZDC

bool ZdcNtuple::enableZDC

Definition at line 87 of file ZdcNtuple.h.

◆ flipDelay

bool ZdcNtuple::flipDelay

Definition at line 78 of file ZdcNtuple.h.

◆ grlFilename

std::string ZdcNtuple::grlFilename

Definition at line 55 of file ZdcNtuple.h.

◆ h_TCSigCut

TH1* ZdcNtuple::h_TCSigCut

Definition at line 339 of file ZdcNtuple.h.

◆ h_zdcTriggers

TH1* ZdcNtuple::h_zdcTriggers

Definition at line 145 of file ZdcNtuple.h.

◆ h_zdcTriggersTBP

TH1* ZdcNtuple::h_zdcTriggersTBP

Definition at line 146 of file ZdcNtuple.h.

◆ lhcf2022

bool ZdcNtuple::lhcf2022

Definition at line 82 of file ZdcNtuple.h.

◆ lhcf2022afp

bool ZdcNtuple::lhcf2022afp

Definition at line 84 of file ZdcNtuple.h.

◆ lhcf2022zdc

bool ZdcNtuple::lhcf2022zdc

Definition at line 83 of file ZdcNtuple.h.

◆ m_afpProtons

const xAOD::AFPProtonContainer* ZdcNtuple::m_afpProtons

Definition at line 128 of file ZdcNtuple.h.

◆ m_caloClusters

const xAOD::CaloClusterContainer* ZdcNtuple::m_caloClusters

Definition at line 123 of file ZdcNtuple.h.

◆ m_caloSums

const xAOD::HIEventShapeContainer* ZdcNtuple::m_caloSums

Definition at line 117 of file ZdcNtuple.h.

◆ m_chainGroups

std::vector<const Trig::ChainGroup*> ZdcNtuple::m_chainGroups

Definition at line 137 of file ZdcNtuple.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_effMap

EffMap_t AthHistogramming::m_effMap
privateinherited

The map of histogram names to their pointers.

Definition at line 210 of file AthHistogramming.h.

◆ m_eventCounter

int ZdcNtuple::m_eventCounter

Definition at line 133 of file ZdcNtuple.h.

◆ m_eventInfo

const xAOD::EventInfo* ZdcNtuple::m_eventInfo

Definition at line 113 of file ZdcNtuple.h.

◆ m_eventShapes

const xAOD::HIEventShapeContainer* ZdcNtuple::m_eventShapes

Definition at line 118 of file ZdcNtuple.h.

◆ 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 AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_gapPtMin

float ZdcNtuple::m_gapPtMin

Definition at line 328 of file ZdcNtuple.h.

◆ m_gapThresholds

double ZdcNtuple::m_gapThresholds[98]
Initial value:
=
{4.7426,5.11018,5.07498,5.0969,5.10695,5.04098,5.07106,4.98087,5.11647,5.08988,5.16267,
5.17202,5.23803,5.25314,5.29551,5.35092,5.40863,5.44375,5.38075,5.25022,5.37933,5.25459,5.37719,5.25169,5.73985,
5.79174,5.79266,5.79588,5.7963,5.81949,5.82273,5.85658,5.85442,5.84779,5.77679,5.83323,5.84524,5.84439,5.84488,
5.84744,5.84683,5.84524,5.84594,5.84656,5.84639,5.84461,5.84515,5.84206,5.8396,5.84497,5.84801,5.84608,5.84608,
5.84783,5.84726,5.84844,5.8477,5.84796,5.84757,5.84822,5.84814,5.84617,5.83451,5.77658,5.84309,5.85496,5.85761,
5.82555,5.82206,5.78982,5.78482,5.7778,5.78327,5.74898,5.25459,5.37503,5.25459,5.37283,5.25169,5.37862,5.44473,
5.41041,5.34498,5.29551,5.25602,5.2283,5.17428,5.14504,5.09342,5.12256,4.98721,5.07106,5.02642,5.10031,5.11018,
5.05447,5.10031,4.7426}

Definition at line 330 of file ZdcNtuple.h.

330 {4.7426,5.11018,5.07498,5.0969,5.10695,5.04098,5.07106,4.98087,5.11647,5.08988,5.16267,
331 5.17202,5.23803,5.25314,5.29551,5.35092,5.40863,5.44375,5.38075,5.25022,5.37933,5.25459,5.37719,5.25169,5.73985,
332 5.79174,5.79266,5.79588,5.7963,5.81949,5.82273,5.85658,5.85442,5.84779,5.77679,5.83323,5.84524,5.84439,5.84488,
333 5.84744,5.84683,5.84524,5.84594,5.84656,5.84639,5.84461,5.84515,5.84206,5.8396,5.84497,5.84801,5.84608,5.84608,
334 5.84783,5.84726,5.84844,5.8477,5.84796,5.84757,5.84822,5.84814,5.84617,5.83451,5.77658,5.84309,5.85496,5.85761,
335 5.82555,5.82206,5.78982,5.78482,5.7778,5.78327,5.74898,5.25459,5.37503,5.25459,5.37283,5.25169,5.37862,5.44473,
336 5.41041,5.34498,5.29551,5.25602,5.2283,5.17428,5.14504,5.09342,5.12256,4.98721,5.07106,5.02642,5.10031,5.11018,
337 5.05447,5.10031,4.7426};

◆ m_graphMap

GraphMap_t AthHistogramming::m_graphMap
privateinherited

The map of TGraph names to their pointers.

Definition at line 224 of file AthHistogramming.h.

◆ m_grl

Definition at line 102 of file ZdcNtuple.h.

◆ m_hasBeginInputFile

bool EL::AnaAlgorithm::m_hasBeginInputFile {false}
privateinherited

the value of hasBeginInputFile

Definition at line 607 of file AnaAlgorithm.h.

607{false};

◆ m_hasEndInputFile

bool EL::AnaAlgorithm::m_hasEndInputFile {false}
privateinherited

the value of hasEndInputFile

Definition at line 611 of file AnaAlgorithm.h.

611{false};

◆ m_hasFileExecute

bool EL::AnaAlgorithm::m_hasFileExecute {false}
privateinherited

the value of hasFileExecute

Definition at line 603 of file AnaAlgorithm.h.

603{false};

◆ m_histMap

HistMap_t AthHistogramming::m_histMap
privateinherited

The map of histogram names to their pointers.

Definition at line 203 of file AthHistogramming.h.

◆ m_histNamePostfix

std::string AthHistogramAlgorithm::m_histNamePostfix
privateinherited

The postfix for the histogram THx name.

Definition at line 97 of file AthHistogramAlgorithm.h.

◆ m_histNamePrefix

std::string AthHistogramAlgorithm::m_histNamePrefix
privateinherited

The prefix for the histogram THx name.

Definition at line 94 of file AthHistogramAlgorithm.h.

◆ m_histSvc

ServiceHandle<ITHistSvc> AthHistogramAlgorithm::m_histSvc
privateinherited

Default constructor: AthHistogramAlgorithm();.

a handle on the Hist/TTree registration service

Definition at line 83 of file AthHistogramAlgorithm.h.

◆ m_histTitlePostfix

std::string AthHistogramAlgorithm::m_histTitlePostfix
privateinherited

The postfix for the histogram THx title.

Definition at line 103 of file AthHistogramAlgorithm.h.

◆ m_histTitlePrefix

std::string AthHistogramAlgorithm::m_histTitlePrefix
privateinherited

The prefix for the histogram THx title.

Definition at line 100 of file AthHistogramAlgorithm.h.

◆ m_injMapRunToken

ZdcInjPulserAmpMap::Token ZdcNtuple::m_injMapRunToken {}
private

Definition at line 50 of file ZdcNtuple.h.

50{};

◆ m_inputMetaStore

MetaStore_t EL::AnaAlgorithm::m_inputMetaStore
privateinherited

Object accessing the input metadata store.

Definition at line 568 of file AnaAlgorithm.h.

◆ m_isMC

bool ZdcNtuple::m_isMC

Definition at line 134 of file ZdcNtuple.h.

◆ m_lastRunNumber

unsigned int ZdcNtuple::m_lastRunNumber {0}
private

Definition at line 49 of file ZdcNtuple.h.

49{0};

◆ m_lvl1EnergySumRoI

const xAOD::EnergySumRoI* ZdcNtuple::m_lvl1EnergySumRoI

Definition at line 125 of file ZdcNtuple.h.

◆ m_mbtsInfo

const xAOD::ForwardEventInfoContainer* ZdcNtuple::m_mbtsInfo

Definition at line 119 of file ZdcNtuple.h.

◆ m_mbtsModules

const xAOD::MBTSModuleContainer* ZdcNtuple::m_mbtsModules

Definition at line 120 of file ZdcNtuple.h.

◆ m_mcEventCollectionName

SG::ReadHandleKey<McEventCollection> ZdcNtuple::m_mcEventCollectionName {this, "MCEventCollectionName", "TruthEvent", ""}

Definition at line 110 of file ZdcNtuple.h.

111{this, "MCEventCollectionName", "TruthEvent", ""};

◆ m_msg

MsgStream AthHistogramming::m_msg
privateinherited

Cached Message Stream.

Definition at line 250 of file AthHistogramming.h.

◆ m_name

std::string AthHistogramming::m_name
privateinherited

Instance name.

Definition at line 247 of file AthHistogramming.h.

◆ m_nTriggers

int ZdcNtuple::m_nTriggers

Definition at line 132 of file ZdcNtuple.h.

◆ m_outputMetaStore

MetaStore_t EL::AnaAlgorithm::m_outputMetaStore
privateinherited

Object accessing the output metadata store.

Definition at line 572 of file AnaAlgorithm.h.

◆ m_outputTree

TTree* ZdcNtuple::m_outputTree

Definition at line 148 of file ZdcNtuple.h.

◆ m_prefix

std::string AthHistogramAlgorithm::m_prefix
privateinherited

Name of the ROOT output stream (file).

Definition at line 88 of file AthHistogramAlgorithm.h.

◆ m_primaryVertices

const xAOD::VertexContainer* ZdcNtuple::m_primaryVertices

Definition at line 122 of file ZdcNtuple.h.

◆ m_rerunChainGroups

std::vector<const Trig::ChainGroup*> ZdcNtuple::m_rerunChainGroups

Definition at line 138 of file ZdcNtuple.h.

◆ m_rootDir

std::string AthHistogramAlgorithm::m_rootDir
privateinherited

Name of the ROOT directory.

Definition at line 91 of file AthHistogramAlgorithm.h.

◆ m_scaledownCounter

int ZdcNtuple::m_scaledownCounter

Definition at line 136 of file ZdcNtuple.h.

◆ m_selTool

ToolHandle< InDet::IInDetTrackSelectionTool > ZdcNtuple::m_selTool

Definition at line 104 of file ZdcNtuple.h.

◆ m_setupTrigHist

bool ZdcNtuple::m_setupTrigHist

Definition at line 135 of file ZdcNtuple.h.

◆ m_streamName

std::string AthHistogramming::m_streamName
privateinherited

Name of the ROOT output stream (file).

Definition at line 228 of file AthHistogramming.h.

◆ m_trackParticles

const xAOD::TrackParticleContainer* ZdcNtuple::m_trackParticles

Definition at line 124 of file ZdcNtuple.h.

◆ m_treeMap

TreeMap_t AthHistogramming::m_treeMap
privateinherited

The map of TTree names to their pointers.

Definition at line 217 of file AthHistogramming.h.

◆ m_trigDecision

const xAOD::TrigDecision* ZdcNtuple::m_trigDecision

Definition at line 116 of file ZdcNtuple.h.

◆ m_trigDecisionTool

PublicToolHandle<Trig::TrigDecisionTool> ZdcNtuple::m_trigDecisionTool { this, "TrigDecisionTool", "", "Handle to the TrigDecisionTool" }

Definition at line 100 of file ZdcNtuple.h.

101{ this, "TrigDecisionTool", "", "Handle to the TrigDecisionTool" };

◆ m_trigT2MbtsBits

const xAOD::TrigT2MbtsBitsContainer* ZdcNtuple::m_trigT2MbtsBits

Definition at line 121 of file ZdcNtuple.h.

◆ m_truthParticleContainer

const xAOD::TruthParticleContainer* ZdcNtuple::m_truthParticleContainer

Definition at line 126 of file ZdcNtuple.h.

◆ m_TTcontainer

const xAOD::TriggerTowerContainer* ZdcNtuple::m_TTcontainer

Definition at line 127 of file ZdcNtuple.h.

◆ 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.

◆ m_zdcAnalysisTool

asg::AnaToolHandle<ZDC::IZdcAnalysisTool> ZdcNtuple::m_zdcAnalysisTool

Definition at line 103 of file ZdcNtuple.h.

◆ m_zdcInjPulserAmpMap

std::shared_ptr<ZdcInjPulserAmpMap> ZdcNtuple::m_zdcInjPulserAmpMap

Definition at line 130 of file ZdcNtuple.h.

◆ m_zdcModuleContainerName

SG::ReadHandleKey<xAOD::ZdcModuleContainer> ZdcNtuple::m_zdcModuleContainerName { this, "ZdcModuleContainerName", "ZdcModules", "" }

Definition at line 106 of file ZdcNtuple.h.

107{ this, "ZdcModuleContainerName", "ZdcModules", "" };

◆ m_zdcSumContainerName

SG::ReadHandleKey<xAOD::ZdcModuleContainer> ZdcNtuple::m_zdcSumContainerName { this, "ZdcSumContainerName", "ZdcSums", "" }

Definition at line 108 of file ZdcNtuple.h.

109{ this, "ZdcSumContainerName", "ZdcSums", "" };

◆ nProtons

int ZdcNtuple::nProtons

Definition at line 410 of file ZdcNtuple.h.

◆ nsamplesZdc

size_t ZdcNtuple::nsamplesZdc

Definition at line 81 of file ZdcNtuple.h.

◆ oo2025

bool ZdcNtuple::oo2025

Definition at line 86 of file ZdcNtuple.h.

◆ outputName

std::string ZdcNtuple::outputName

Definition at line 95 of file ZdcNtuple.h.

◆ outputTreeScaledown

int ZdcNtuple::outputTreeScaledown

Definition at line 96 of file ZdcNtuple.h.

◆ p_beam

TLorentzVector ZdcNtuple::p_beam

Definition at line 426 of file ZdcNtuple.h.

◆ p_scat

TLorentzVector ZdcNtuple::p_scat

Definition at line 427 of file ZdcNtuple.h.

◆ pbpb2023

bool ZdcNtuple::pbpb2023

Definition at line 85 of file ZdcNtuple.h.

◆ proton_e

std::vector<double> ZdcNtuple::proton_e

Definition at line 414 of file ZdcNtuple.h.

◆ proton_eLoss

std::vector<double> ZdcNtuple::proton_eLoss

Definition at line 416 of file ZdcNtuple.h.

◆ proton_eta

std::vector<double> ZdcNtuple::proton_eta

Definition at line 412 of file ZdcNtuple.h.

◆ proton_phi

std::vector<double> ZdcNtuple::proton_phi

Definition at line 413 of file ZdcNtuple.h.

◆ proton_pt

std::vector<double> ZdcNtuple::proton_pt

Definition at line 411 of file ZdcNtuple.h.

◆ proton_side

std::vector<int> ZdcNtuple::proton_side

Definition at line 415 of file ZdcNtuple.h.

◆ proton_t

std::vector<double> ZdcNtuple::proton_t

Definition at line 417 of file ZdcNtuple.h.

◆ proton_track_nClusters

std::vector<std::vector<int> > ZdcNtuple::proton_track_nClusters

Definition at line 424 of file ZdcNtuple.h.

◆ proton_track_stationID

std::vector<std::vector<int> > ZdcNtuple::proton_track_stationID

Definition at line 418 of file ZdcNtuple.h.

◆ proton_track_xLocal

std::vector<std::vector<float> > ZdcNtuple::proton_track_xLocal

Definition at line 419 of file ZdcNtuple.h.

◆ proton_track_xSlope

std::vector<std::vector<float> > ZdcNtuple::proton_track_xSlope

Definition at line 422 of file ZdcNtuple.h.

◆ proton_track_yLocal

std::vector<std::vector<float> > ZdcNtuple::proton_track_yLocal

Definition at line 420 of file ZdcNtuple.h.

◆ proton_track_ySlope

std::vector<std::vector<float> > ZdcNtuple::proton_track_ySlope

Definition at line 423 of file ZdcNtuple.h.

◆ proton_track_zLocal

std::vector<std::vector<float> > ZdcNtuple::proton_track_zLocal

Definition at line 421 of file ZdcNtuple.h.

◆ reprocZdc

bool ZdcNtuple::reprocZdc

Definition at line 79 of file ZdcNtuple.h.

◆ slimmed

bool ZdcNtuple::slimmed

Definition at line 53 of file ZdcNtuple.h.

◆ t_actIntPerCrossing

float ZdcNtuple::t_actIntPerCrossing

Definition at line 160 of file ZdcNtuple.h.

◆ t_avgIntPerCrossing

float ZdcNtuple::t_avgIntPerCrossing

Definition at line 159 of file ZdcNtuple.h.

◆ t_bcid

uint32_t ZdcNtuple::t_bcid

Definition at line 152 of file ZdcNtuple.h.

◆ t_bunchGroup

uint8_t ZdcNtuple::t_bunchGroup

Definition at line 154 of file ZdcNtuple.h.

◆ t_cc_e

std::vector<float> ZdcNtuple::t_cc_e

Definition at line 394 of file ZdcNtuple.h.

◆ t_cc_eta

std::vector<float> ZdcNtuple::t_cc_eta

Definition at line 392 of file ZdcNtuple.h.

◆ t_cc_layer

std::vector<int> ZdcNtuple::t_cc_layer

Definition at line 396 of file ZdcNtuple.h.

◆ t_cc_phi

std::vector<float> ZdcNtuple::t_cc_phi

Definition at line 393 of file ZdcNtuple.h.

◆ t_cc_pt

std::vector<float> ZdcNtuple::t_cc_pt

Definition at line 391 of file ZdcNtuple.h.

◆ t_cc_raw_e

std::vector<float> ZdcNtuple::t_cc_raw_e

Definition at line 400 of file ZdcNtuple.h.

◆ t_cc_raw_eta

std::vector<float> ZdcNtuple::t_cc_raw_eta

Definition at line 398 of file ZdcNtuple.h.

◆ t_cc_raw_m

std::vector<float> ZdcNtuple::t_cc_raw_m

Definition at line 397 of file ZdcNtuple.h.

◆ t_cc_raw_phi

std::vector<float> ZdcNtuple::t_cc_raw_phi

Definition at line 399 of file ZdcNtuple.h.

◆ t_cc_raw_samp

std::vector<std::vector<float> > ZdcNtuple::t_cc_raw_samp

Definition at line 401 of file ZdcNtuple.h.

◆ t_cc_sig

std::vector<float> ZdcNtuple::t_cc_sig

Definition at line 395 of file ZdcNtuple.h.

◆ t_centroidDecorationsAvailable

bool ZdcNtuple::t_centroidDecorationsAvailable

Definition at line 268 of file ZdcNtuple.h.

◆ t_centroidEventValid

char ZdcNtuple::t_centroidEventValid

Definition at line 269 of file ZdcNtuple.h.

◆ t_centroidStatus

unsigned int ZdcNtuple::t_centroidStatus[2]

Definition at line 270 of file ZdcNtuple.h.

◆ t_clusEt

float ZdcNtuple::t_clusEt

Definition at line 403 of file ZdcNtuple.h.

◆ t_clusetaMax

float ZdcNtuple::t_clusetaMax

Definition at line 405 of file ZdcNtuple.h.

◆ t_clusEtMax

float ZdcNtuple::t_clusEtMax

Definition at line 404 of file ZdcNtuple.h.

◆ t_clusphiMax

float ZdcNtuple::t_clusphiMax

Definition at line 406 of file ZdcNtuple.h.

◆ t_cosDeltaReactionPlaneAngle

float ZdcNtuple::t_cosDeltaReactionPlaneAngle

Definition at line 282 of file ZdcNtuple.h.

◆ t_decisions

bool ZdcNtuple::t_decisions[200]

Definition at line 172 of file ZdcNtuple.h.

◆ t_edgeGapA

float ZdcNtuple::t_edgeGapA

Definition at line 326 of file ZdcNtuple.h.

◆ t_edgeGapC

float ZdcNtuple::t_edgeGapC

Definition at line 327 of file ZdcNtuple.h.

◆ t_eventNumber

uint32_t ZdcNtuple::t_eventNumber

Definition at line 150 of file ZdcNtuple.h.

◆ t_extendedLevel1ID

uint32_t ZdcNtuple::t_extendedLevel1ID

Definition at line 156 of file ZdcNtuple.h.

◆ t_fcalEt

float ZdcNtuple::t_fcalEt

Definition at line 312 of file ZdcNtuple.h.

◆ t_fcalEtA

float ZdcNtuple::t_fcalEtA

Definition at line 313 of file ZdcNtuple.h.

◆ t_fcalEtA_TT

float ZdcNtuple::t_fcalEtA_TT

Definition at line 315 of file ZdcNtuple.h.

◆ t_fcalEtA_TTsum

float ZdcNtuple::t_fcalEtA_TTsum

Definition at line 317 of file ZdcNtuple.h.

◆ t_fcalEtC

float ZdcNtuple::t_fcalEtC

Definition at line 314 of file ZdcNtuple.h.

◆ t_fcalEtC_TT

float ZdcNtuple::t_fcalEtC_TT

Definition at line 316 of file ZdcNtuple.h.

◆ t_fcalEtC_TTsum

float ZdcNtuple::t_fcalEtC_TTsum

Definition at line 318 of file ZdcNtuple.h.

◆ t_L1ET

float ZdcNtuple::t_L1ET

Definition at line 140 of file ZdcNtuple.h.

◆ t_L1ET24

float ZdcNtuple::t_L1ET24

Definition at line 141 of file ZdcNtuple.h.

◆ t_lumiBlock

uint32_t ZdcNtuple::t_lumiBlock

Definition at line 151 of file ZdcNtuple.h.

◆ t_mbts_countA

uint16_t ZdcNtuple::t_mbts_countA

Definition at line 342 of file ZdcNtuple.h.

◆ t_mbts_countC

uint16_t ZdcNtuple::t_mbts_countC

Definition at line 343 of file ZdcNtuple.h.

◆ t_mbts_in_e

float ZdcNtuple::t_mbts_in_e[2][8]

Definition at line 175 of file ZdcNtuple.h.

◆ t_mbts_in_t

float ZdcNtuple::t_mbts_in_t[2][8]

Definition at line 177 of file ZdcNtuple.h.

◆ t_mbts_out_e

float ZdcNtuple::t_mbts_out_e[2][4]

Definition at line 176 of file ZdcNtuple.h.

◆ t_mbts_out_t

float ZdcNtuple::t_mbts_out_t[2][4]

Definition at line 178 of file ZdcNtuple.h.

◆ t_mbts_timeA

float ZdcNtuple::t_mbts_timeA

Definition at line 344 of file ZdcNtuple.h.

◆ t_mbts_timeC

float ZdcNtuple::t_mbts_timeC

Definition at line 345 of file ZdcNtuple.h.

◆ t_mbts_timeDiff

float ZdcNtuple::t_mbts_timeDiff

Definition at line 346 of file ZdcNtuple.h.

◆ t_nclus

uint32_t ZdcNtuple::t_nclus

Definition at line 390 of file ZdcNtuple.h.

◆ t_nstrong

int ZdcNtuple::t_nstrong

Definition at line 295 of file ZdcNtuple.h.

◆ t_ntrk

uint32_t ZdcNtuple::t_ntrk

Definition at line 362 of file ZdcNtuple.h.

◆ t_nvtx

int ZdcNtuple::t_nvtx

Definition at line 300 of file ZdcNtuple.h.

◆ t_nvx

int ZdcNtuple::t_nvx

Definition at line 284 of file ZdcNtuple.h.

◆ t_passBits

uint32_t ZdcNtuple::t_passBits

Definition at line 155 of file ZdcNtuple.h.

◆ t_prescales

float ZdcNtuple::t_prescales[200]

Definition at line 171 of file ZdcNtuple.h.

◆ t_puvxntrk

int ZdcNtuple::t_puvxntrk

Definition at line 293 of file ZdcNtuple.h.

◆ t_puvxsumpt

float ZdcNtuple::t_puvxsumpt

Definition at line 294 of file ZdcNtuple.h.

◆ t_puvxz

float ZdcNtuple::t_puvxz

Definition at line 292 of file ZdcNtuple.h.

◆ t_pvindex

int ZdcNtuple::t_pvindex

Definition at line 289 of file ZdcNtuple.h.

◆ t_raw15

uint16_t ZdcNtuple::t_raw15[2][4][2][2][15]

Definition at line 352 of file ZdcNtuple.h.

◆ t_raw24

uint16_t ZdcNtuple::t_raw24[2][4][2][2][24]

Definition at line 353 of file ZdcNtuple.h.

◆ t_raw32

uint16_t ZdcNtuple::t_raw32[2][4][2][2][32]

Definition at line 354 of file ZdcNtuple.h.

◆ t_raw40

uint16_t ZdcNtuple::t_raw40[2][4][2][2][40]

Definition at line 355 of file ZdcNtuple.h.

◆ t_raw7

uint16_t ZdcNtuple::t_raw7[2][4][2][2][7]

Definition at line 351 of file ZdcNtuple.h.

◆ t_reactionPlaneAngle

float ZdcNtuple::t_reactionPlaneAngle[2]

Definition at line 281 of file ZdcNtuple.h.

◆ t_rerunDecisions

bool ZdcNtuple::t_rerunDecisions[200]

Definition at line 173 of file ZdcNtuple.h.

◆ t_RpdChannelAmplitude

float ZdcNtuple::t_RpdChannelAmplitude[2][16]

Definition at line 258 of file ZdcNtuple.h.

◆ t_RpdChannelAmplitudeCalib

float ZdcNtuple::t_RpdChannelAmplitudeCalib[2][16]

Definition at line 259 of file ZdcNtuple.h.

◆ t_RpdChannelBaseline

float ZdcNtuple::t_RpdChannelBaseline[2][16]

Definition at line 251 of file ZdcNtuple.h.

◆ t_RpdChannelMaxADC

float ZdcNtuple::t_RpdChannelMaxADC[2][16]

Definition at line 260 of file ZdcNtuple.h.

◆ t_RpdChannelMaxADCCalib

float ZdcNtuple::t_RpdChannelMaxADCCalib[2][16]

Definition at line 261 of file ZdcNtuple.h.

◆ t_RpdChannelMaxSample

unsigned int ZdcNtuple::t_RpdChannelMaxSample[2][16]

Definition at line 262 of file ZdcNtuple.h.

◆ t_RpdChannelPileupExpFitMSE

float ZdcNtuple::t_RpdChannelPileupExpFitMSE[2][16]

Definition at line 256 of file ZdcNtuple.h.

◆ t_RpdChannelPileupExpFitParamErrs

float ZdcNtuple::t_RpdChannelPileupExpFitParamErrs[2][16][2]

Definition at line 254 of file ZdcNtuple.h.

◆ t_RpdChannelPileupExpFitParams

float ZdcNtuple::t_RpdChannelPileupExpFitParams[2][16][2]

Definition at line 252 of file ZdcNtuple.h.

◆ t_RpdChannelPileupFrac

float ZdcNtuple::t_RpdChannelPileupFrac[2][16]

Definition at line 264 of file ZdcNtuple.h.

◆ t_RpdChannelPileupStretchedExpFitMSE

float ZdcNtuple::t_RpdChannelPileupStretchedExpFitMSE[2][16]

Definition at line 257 of file ZdcNtuple.h.

◆ t_RpdChannelPileupStretchedExpFitParamErrs

float ZdcNtuple::t_RpdChannelPileupStretchedExpFitParamErrs[2][16][3]

Definition at line 255 of file ZdcNtuple.h.

◆ t_RpdChannelPileupStretchedExpFitParams

float ZdcNtuple::t_RpdChannelPileupStretchedExpFitParams[2][16][3]

Definition at line 253 of file ZdcNtuple.h.

◆ t_RpdChannelStatus

unsigned int ZdcNtuple::t_RpdChannelStatus[2][16]

Definition at line 263 of file ZdcNtuple.h.

◆ t_RPDChannelSubtrAmp

float ZdcNtuple::t_RPDChannelSubtrAmp[2][16]

Definition at line 271 of file ZdcNtuple.h.

◆ t_rpdDecodingError

uint8_t ZdcNtuple::t_rpdDecodingError

Definition at line 165 of file ZdcNtuple.h.

◆ t_RpdModuleTruthNphotons

unsigned int ZdcNtuple::t_RpdModuleTruthNphotons[2][16]

Definition at line 266 of file ZdcNtuple.h.

◆ t_rpdRaw

uint16_t ZdcNtuple::t_rpdRaw[2][16][24]

Definition at line 357 of file ZdcNtuple.h.

◆ t_rpdRaw32

uint16_t ZdcNtuple::t_rpdRaw32[2][16][32]

Definition at line 358 of file ZdcNtuple.h.

◆ t_rpdRaw40

uint16_t ZdcNtuple::t_rpdRaw40[2][16][40]

Definition at line 359 of file ZdcNtuple.h.

◆ t_RpdSideStatus

unsigned int ZdcNtuple::t_RpdSideStatus[2]

Definition at line 265 of file ZdcNtuple.h.

◆ t_RPDSubtrAmpSum

float ZdcNtuple::t_RPDSubtrAmpSum[2]

Definition at line 272 of file ZdcNtuple.h.

◆ t_runNumber

uint32_t ZdcNtuple::t_runNumber

Definition at line 149 of file ZdcNtuple.h.

◆ t_T2mbts_countAin

uint16_t ZdcNtuple::t_T2mbts_countAin

Definition at line 348 of file ZdcNtuple.h.

◆ t_T2mbts_countCin

uint16_t ZdcNtuple::t_T2mbts_countCin

Definition at line 349 of file ZdcNtuple.h.

◆ t_T2mbts_in_e

float ZdcNtuple::t_T2mbts_in_e[2][8]

Definition at line 180 of file ZdcNtuple.h.

◆ t_T2mbts_in_t

float ZdcNtuple::t_T2mbts_in_t[2][8]

Definition at line 182 of file ZdcNtuple.h.

◆ t_T2mbts_out_e

float ZdcNtuple::t_T2mbts_out_e[2][4]

Definition at line 181 of file ZdcNtuple.h.

◆ t_T2mbts_out_t

float ZdcNtuple::t_T2mbts_out_t[2][4]

Definition at line 183 of file ZdcNtuple.h.

◆ t_tav

uint32_t ZdcNtuple::t_tav[16]

Definition at line 185 of file ZdcNtuple.h.

◆ t_tbp

uint32_t ZdcNtuple::t_tbp[16]

Definition at line 186 of file ZdcNtuple.h.

◆ t_timeStamp

uint32_t ZdcNtuple::t_timeStamp

Definition at line 157 of file ZdcNtuple.h.

◆ t_timeStampNSOffset

uint32_t ZdcNtuple::t_timeStampNSOffset

Definition at line 158 of file ZdcNtuple.h.

◆ t_totalEt

float ZdcNtuple::t_totalEt

Definition at line 320 of file ZdcNtuple.h.

◆ t_totalEt24

float ZdcNtuple::t_totalEt24

Definition at line 322 of file ZdcNtuple.h.

◆ t_totalEt24_TTsum

float ZdcNtuple::t_totalEt24_TTsum

Definition at line 323 of file ZdcNtuple.h.

◆ t_totalEt_TTsum

float ZdcNtuple::t_totalEt_TTsum

Definition at line 321 of file ZdcNtuple.h.

◆ t_trigger

uint64_t ZdcNtuple::t_trigger

Definition at line 167 of file ZdcNtuple.h.

◆ t_trigger_TBP

uint32_t ZdcNtuple::t_trigger_TBP

Definition at line 168 of file ZdcNtuple.h.

◆ t_trk_charge

std::vector<int8_t> ZdcNtuple::t_trk_charge

Definition at line 372 of file ZdcNtuple.h.

◆ t_trk_d0

std::vector<float> ZdcNtuple::t_trk_d0

Definition at line 368 of file ZdcNtuple.h.

◆ t_trk_e

std::vector<float> ZdcNtuple::t_trk_e

Definition at line 366 of file ZdcNtuple.h.

◆ t_trk_eta

std::vector<float> ZdcNtuple::t_trk_eta

Definition at line 364 of file ZdcNtuple.h.

◆ t_trk_exPixHits

std::vector<uint8_t> ZdcNtuple::t_trk_exPixHits

Definition at line 384 of file ZdcNtuple.h.

◆ t_trk_index

std::vector<int> ZdcNtuple::t_trk_index

Definition at line 374 of file ZdcNtuple.h.

◆ t_trk_inPixHits

std::vector<uint8_t> ZdcNtuple::t_trk_inPixHits

Definition at line 383 of file ZdcNtuple.h.

◆ t_trk_nexPixHits

std::vector<uint8_t> ZdcNtuple::t_trk_nexPixHits

Definition at line 386 of file ZdcNtuple.h.

◆ t_trk_ninPixHits

std::vector<uint8_t> ZdcNtuple::t_trk_ninPixHits

Definition at line 385 of file ZdcNtuple.h.

◆ t_trk_nPixDead

std::vector<uint8_t> ZdcNtuple::t_trk_nPixDead

Definition at line 377 of file ZdcNtuple.h.

◆ t_trk_nPixHits

std::vector<uint8_t> ZdcNtuple::t_trk_nPixHits

Definition at line 375 of file ZdcNtuple.h.

◆ t_trk_nPixHoles

std::vector<uint8_t> ZdcNtuple::t_trk_nPixHoles

Definition at line 379 of file ZdcNtuple.h.

◆ t_trk_nSctDead

std::vector<uint8_t> ZdcNtuple::t_trk_nSctDead

Definition at line 378 of file ZdcNtuple.h.

◆ t_trk_nSctHits

std::vector<uint8_t> ZdcNtuple::t_trk_nSctHits

Definition at line 376 of file ZdcNtuple.h.

◆ t_trk_nSctHoles

std::vector<uint8_t> ZdcNtuple::t_trk_nSctHoles

Definition at line 380 of file ZdcNtuple.h.

◆ t_trk_nTrtHits

std::vector<uint8_t> ZdcNtuple::t_trk_nTrtHits

Definition at line 381 of file ZdcNtuple.h.

◆ t_trk_nTrtOutliers

std::vector<uint8_t> ZdcNtuple::t_trk_nTrtOutliers

Definition at line 382 of file ZdcNtuple.h.

◆ t_trk_phi

std::vector<float> ZdcNtuple::t_trk_phi

Definition at line 365 of file ZdcNtuple.h.

◆ t_trk_pixeldEdx

std::vector<float> ZdcNtuple::t_trk_pixeldEdx

Definition at line 387 of file ZdcNtuple.h.

◆ t_trk_pt

std::vector<float> ZdcNtuple::t_trk_pt

Definition at line 363 of file ZdcNtuple.h.

◆ t_trk_quality

std::vector<int16_t> ZdcNtuple::t_trk_quality

Definition at line 373 of file ZdcNtuple.h.

◆ t_trk_theta

std::vector<float> ZdcNtuple::t_trk_theta

Definition at line 367 of file ZdcNtuple.h.

◆ t_trk_vtxz

std::vector<float> ZdcNtuple::t_trk_vtxz

Definition at line 371 of file ZdcNtuple.h.

◆ t_trk_vz

std::vector<float> ZdcNtuple::t_trk_vz

Definition at line 370 of file ZdcNtuple.h.

◆ t_trk_z0

std::vector<float> ZdcNtuple::t_trk_z0

Definition at line 369 of file ZdcNtuple.h.

◆ t_vInj

float ZdcNtuple::t_vInj

Definition at line 153 of file ZdcNtuple.h.

◆ t_vtx_ntrk

std::vector<int16_t> ZdcNtuple::t_vtx_ntrk

Definition at line 307 of file ZdcNtuple.h.

◆ t_vtx_ntrk_all

std::vector<int16_t> ZdcNtuple::t_vtx_ntrk_all

Definition at line 305 of file ZdcNtuple.h.

◆ t_vtx_sumpt2

std::vector<float> ZdcNtuple::t_vtx_sumpt2

Definition at line 308 of file ZdcNtuple.h.

◆ t_vtx_sumpt2_all

std::vector<float> ZdcNtuple::t_vtx_sumpt2_all

Definition at line 306 of file ZdcNtuple.h.

◆ t_vtx_trk_index

std::vector< std::vector<int16_t> > ZdcNtuple::t_vtx_trk_index

Definition at line 309 of file ZdcNtuple.h.

◆ t_vtx_type

std::vector<int8_t> ZdcNtuple::t_vtx_type

Definition at line 301 of file ZdcNtuple.h.

◆ t_vtx_x

std::vector<float> ZdcNtuple::t_vtx_x

Definition at line 302 of file ZdcNtuple.h.

◆ t_vtx_y

std::vector<float> ZdcNtuple::t_vtx_y

Definition at line 303 of file ZdcNtuple.h.

◆ t_vtx_z

std::vector<float> ZdcNtuple::t_vtx_z

Definition at line 304 of file ZdcNtuple.h.

◆ t_vx

float ZdcNtuple::t_vx[3]

Definition at line 285 of file ZdcNtuple.h.

◆ t_vx_trk_index

std::vector<int> ZdcNtuple::t_vx_trk_index

Definition at line 287 of file ZdcNtuple.h.

◆ t_vxcov

float ZdcNtuple::t_vxcov[6]

Definition at line 290 of file ZdcNtuple.h.

◆ t_vxngoodmuon

int ZdcNtuple::t_vxngoodmuon

Definition at line 298 of file ZdcNtuple.h.

◆ t_vxnlooseprimary

int ZdcNtuple::t_vxnlooseprimary

Definition at line 296 of file ZdcNtuple.h.

◆ t_vxnminbias

int ZdcNtuple::t_vxnminbias

Definition at line 297 of file ZdcNtuple.h.

◆ t_vxntrk

int ZdcNtuple::t_vxntrk

Definition at line 286 of file ZdcNtuple.h.

◆ t_vxsumpt2

float ZdcNtuple::t_vxsumpt2

Definition at line 291 of file ZdcNtuple.h.

◆ t_vxtype

int ZdcNtuple::t_vxtype

Definition at line 288 of file ZdcNtuple.h.

◆ t_xCentroid

float ZdcNtuple::t_xCentroid[2]

Definition at line 277 of file ZdcNtuple.h.

◆ t_xCentroidPreAvgSubtr

float ZdcNtuple::t_xCentroidPreAvgSubtr[2]

Definition at line 275 of file ZdcNtuple.h.

◆ t_xCentroidPreGeomCorPreAvgSubtr

float ZdcNtuple::t_xCentroidPreGeomCorPreAvgSubtr[2]

Definition at line 273 of file ZdcNtuple.h.

◆ t_xRowCentroid

float ZdcNtuple::t_xRowCentroid[2][4]

Definition at line 279 of file ZdcNtuple.h.

◆ t_yCentroid

float ZdcNtuple::t_yCentroid[2]

Definition at line 278 of file ZdcNtuple.h.

◆ t_yCentroidPreAvgSubtr

float ZdcNtuple::t_yCentroidPreAvgSubtr[2]

Definition at line 276 of file ZdcNtuple.h.

◆ t_yCentroidPreGeomCorPreAvgSubtr

float ZdcNtuple::t_yCentroidPreGeomCorPreAvgSubtr[2]

Definition at line 274 of file ZdcNtuple.h.

◆ t_yColCentroid

float ZdcNtuple::t_yColCentroid[2][4]

Definition at line 280 of file ZdcNtuple.h.

◆ t_ZdcAmp

float ZdcNtuple::t_ZdcAmp[2]

Definition at line 188 of file ZdcNtuple.h.

◆ t_ZdcAmpErr

float ZdcNtuple::t_ZdcAmpErr[2]

Definition at line 189 of file ZdcNtuple.h.

◆ t_zdcDecodingError

uint8_t ZdcNtuple::t_zdcDecodingError

Definition at line 164 of file ZdcNtuple.h.

◆ t_ZdcEnergy

float ZdcNtuple::t_ZdcEnergy[2]

Definition at line 190 of file ZdcNtuple.h.

◆ t_ZdcEnergyErr

float ZdcNtuple::t_ZdcEnergyErr[2]

Definition at line 191 of file ZdcNtuple.h.

◆ t_zdcEventInfoError

uint8_t ZdcNtuple::t_zdcEventInfoError

Definition at line 161 of file ZdcNtuple.h.

◆ t_zdcEventInfoErrorWord

uint32_t ZdcNtuple::t_zdcEventInfoErrorWord

Definition at line 162 of file ZdcNtuple.h.

◆ t_ZdcLucrodTriggerAmp

unsigned short ZdcNtuple::t_ZdcLucrodTriggerAmp[2][4]

Definition at line 231 of file ZdcNtuple.h.

◆ t_ZdcLucrodTriggerAmpLG

unsigned short ZdcNtuple::t_ZdcLucrodTriggerAmpLG[2][4]

Definition at line 232 of file ZdcNtuple.h.

◆ t_ZdcLucrodTriggerSideAmp

unsigned short ZdcNtuple::t_ZdcLucrodTriggerSideAmp[2]

Definition at line 198 of file ZdcNtuple.h.

◆ t_ZdcLucrodTriggerSideAmpLG

unsigned short ZdcNtuple::t_ZdcLucrodTriggerSideAmpLG[2]

Definition at line 199 of file ZdcNtuple.h.

◆ t_ZdcModuleAmp

float ZdcNtuple::t_ZdcModuleAmp[2][4]

Definition at line 216 of file ZdcNtuple.h.

◆ t_ZdcModuleAmpCorrLGRefit

float ZdcNtuple::t_ZdcModuleAmpCorrLGRefit[2][4]

Definition at line 239 of file ZdcNtuple.h.

◆ t_ZdcModuleAmpError

float ZdcNtuple::t_ZdcModuleAmpError[2][4]

Definition at line 226 of file ZdcNtuple.h.

◆ t_ZdcModuleAmpLGRefit

float ZdcNtuple::t_ZdcModuleAmpLGRefit[2][4]

Definition at line 238 of file ZdcNtuple.h.

◆ t_ZdcModuleAmpUncorr

float ZdcNtuple::t_ZdcModuleAmpUncorr[2][4]

Definition at line 217 of file ZdcNtuple.h.

◆ t_ZdcModuleBkgdMaxFraction

float ZdcNtuple::t_ZdcModuleBkgdMaxFraction[2][4]

Definition at line 227 of file ZdcNtuple.h.

◆ t_ZdcModuleCalibAmp

float ZdcNtuple::t_ZdcModuleCalibAmp[2][4]

Definition at line 224 of file ZdcNtuple.h.

◆ t_ZdcModuleCalibTime

float ZdcNtuple::t_ZdcModuleCalibTime[2][4]

Definition at line 225 of file ZdcNtuple.h.

◆ t_ZdcModuleChisq

float ZdcNtuple::t_ZdcModuleChisq[2][4]

Definition at line 221 of file ZdcNtuple.h.

◆ t_ZdcModuleChisqLGRefit

float ZdcNtuple::t_ZdcModuleChisqLGRefit[2][4]

Definition at line 242 of file ZdcNtuple.h.

◆ t_ZdcModuleChisqRatio

float ZdcNtuple::t_ZdcModuleChisqRatio[2][4]

Definition at line 222 of file ZdcNtuple.h.

◆ t_ZdcModuleFitAmp

float ZdcNtuple::t_ZdcModuleFitAmp[2][4]

Definition at line 219 of file ZdcNtuple.h.

◆ t_ZdcModuleFitT0

float ZdcNtuple::t_ZdcModuleFitT0[2][4]

Definition at line 220 of file ZdcNtuple.h.

◆ t_ZdcModuleMask

unsigned int ZdcNtuple::t_ZdcModuleMask

Definition at line 196 of file ZdcNtuple.h.

◆ t_ZdcModuleMaxADC

float ZdcNtuple::t_ZdcModuleMaxADC[2][4]

Definition at line 233 of file ZdcNtuple.h.

◆ t_ZdcModuleMaxADCHG

float ZdcNtuple::t_ZdcModuleMaxADCHG[2][4]

Definition at line 234 of file ZdcNtuple.h.

◆ t_ZdcModuleMaxADCLG

float ZdcNtuple::t_ZdcModuleMaxADCLG[2][4]

Definition at line 235 of file ZdcNtuple.h.

◆ t_ZdcModuleMinDeriv2nd

float ZdcNtuple::t_ZdcModuleMinDeriv2nd[2][4]

Definition at line 228 of file ZdcNtuple.h.

◆ t_ZdcModulePeakADCHG

float ZdcNtuple::t_ZdcModulePeakADCHG[2][4]

Definition at line 236 of file ZdcNtuple.h.

◆ t_ZdcModulePeakADCLG

float ZdcNtuple::t_ZdcModulePeakADCLG[2][4]

Definition at line 237 of file ZdcNtuple.h.

◆ t_ZdcModulePresample

float ZdcNtuple::t_ZdcModulePresample[2][4]

Definition at line 229 of file ZdcNtuple.h.

◆ t_ZdcModulePreSampleAmp

float ZdcNtuple::t_ZdcModulePreSampleAmp[2][4]

Definition at line 230 of file ZdcNtuple.h.

◆ t_ZdcModuleStatus

unsigned int ZdcNtuple::t_ZdcModuleStatus[2][4]

Definition at line 223 of file ZdcNtuple.h.

◆ t_ZdcModuleT0LGRefit

float ZdcNtuple::t_ZdcModuleT0LGRefit[2][4]

Definition at line 240 of file ZdcNtuple.h.

◆ t_ZdcModuleT0SubLGRefit

float ZdcNtuple::t_ZdcModuleT0SubLGRefit[2][4]

Definition at line 241 of file ZdcNtuple.h.

◆ t_ZdcModuleTime

float ZdcNtuple::t_ZdcModuleTime[2][4]

Definition at line 218 of file ZdcNtuple.h.

◆ t_ZdcModuleTruthEM

float ZdcNtuple::t_ZdcModuleTruthEM[2][7]

Definition at line 246 of file ZdcNtuple.h.

◆ t_ZdcModuleTruthEscaped

float ZdcNtuple::t_ZdcModuleTruthEscaped[2][7]

Definition at line 248 of file ZdcNtuple.h.

◆ t_ZdcModuleTruthInvis

float ZdcNtuple::t_ZdcModuleTruthInvis[2][7]

Definition at line 245 of file ZdcNtuple.h.

◆ t_ZdcModuleTruthNonEM

float ZdcNtuple::t_ZdcModuleTruthNonEM[2][7]

Definition at line 247 of file ZdcNtuple.h.

◆ t_ZdcModuleTruthNphotons

unsigned int ZdcNtuple::t_ZdcModuleTruthNphotons[2][7]

Definition at line 249 of file ZdcNtuple.h.

◆ t_ZdcModuleTruthTotal

float ZdcNtuple::t_ZdcModuleTruthTotal[2][7]

Definition at line 244 of file ZdcNtuple.h.

◆ t_ZdcNLEnergy

float ZdcNtuple::t_ZdcNLEnergy[2]

Definition at line 192 of file ZdcNtuple.h.

◆ t_ZdcNLEnergyErr

float ZdcNtuple::t_ZdcNLEnergyErr[2]

Definition at line 193 of file ZdcNtuple.h.

◆ t_ZdcStatus

short ZdcNtuple::t_ZdcStatus[2]

Definition at line 195 of file ZdcNtuple.h.

◆ t_ZdcTime

float ZdcNtuple::t_ZdcTime[2]

Definition at line 194 of file ZdcNtuple.h.

◆ t_ZdcTrigEff

float ZdcNtuple::t_ZdcTrigEff[2]

Definition at line 197 of file ZdcNtuple.h.

◆ t_ZdcTruthEM

float ZdcNtuple::t_ZdcTruthEM[2]

Definition at line 202 of file ZdcNtuple.h.

◆ t_ZdcTruthEscaped

float ZdcNtuple::t_ZdcTruthEscaped[2]

Definition at line 204 of file ZdcNtuple.h.

◆ t_ZdcTruthInvis

float ZdcNtuple::t_ZdcTruthInvis[2]

Definition at line 201 of file ZdcNtuple.h.

◆ t_ZdcTruthNonEM

float ZdcNtuple::t_ZdcTruthNonEM[2]

Definition at line 203 of file ZdcNtuple.h.

◆ t_ZdcTruthParticleEnergy

std::vector< float > ZdcNtuple::t_ZdcTruthParticleEnergy

Definition at line 212 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePid

std::vector< int > ZdcNtuple::t_ZdcTruthParticlePid

Definition at line 213 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePosx

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePosx

Definition at line 205 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePosy

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePosy

Definition at line 206 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePosz

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePosz

Definition at line 207 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePx

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePx

Definition at line 209 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePy

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePy

Definition at line 210 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePz

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePz

Definition at line 211 of file ZdcNtuple.h.

◆ t_ZdcTruthParticleStatus

std::vector< int > ZdcNtuple::t_ZdcTruthParticleStatus

Definition at line 214 of file ZdcNtuple.h.

◆ t_ZdcTruthParticleTime

std::vector< float > ZdcNtuple::t_ZdcTruthParticleTime

Definition at line 208 of file ZdcNtuple.h.

◆ t_ZdcTruthTotal

float ZdcNtuple::t_ZdcTruthTotal[2]

Definition at line 200 of file ZdcNtuple.h.

◆ trackLimit

size_t ZdcNtuple::trackLimit

Definition at line 76 of file ZdcNtuple.h.

◆ trackLimitReject

bool ZdcNtuple::trackLimitReject

Definition at line 77 of file ZdcNtuple.h.

◆ useGRL

bool ZdcNtuple::useGRL

Definition at line 54 of file ZdcNtuple.h.

◆ writeOnlyTriggers

bool ZdcNtuple::writeOnlyTriggers

Definition at line 59 of file ZdcNtuple.h.

◆ zdcCalib

bool ZdcNtuple::zdcCalib

Definition at line 71 of file ZdcNtuple.h.

◆ zdcConfig

std::string ZdcNtuple::zdcConfig

Definition at line 93 of file ZdcNtuple.h.

◆ zdcInj

bool ZdcNtuple::zdcInj

Definition at line 73 of file ZdcNtuple.h.

◆ zdcLaser

bool ZdcNtuple::zdcLaser

Definition at line 72 of file ZdcNtuple.h.

◆ zdcLowGainMode

unsigned int ZdcNtuple::zdcLowGainMode

Definition at line 75 of file ZdcNtuple.h.

◆ zdcOnly

bool ZdcNtuple::zdcOnly

Definition at line 74 of file ZdcNtuple.h.


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