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 const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
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 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_ZdcModuleTime [2][4]
float t_ZdcModuleFitAmp [2][4]
float t_ZdcModuleFitT0 [2][4]
float t_ZdcModuleChisq [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
float 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 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
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
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 50 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 205 of file AthHistogramming.h.

◆ GraphMap_t

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

Typedef for convenience.

Definition at line 219 of file AthHistogramming.h.

◆ hash_t

typedef uint32_t AthHistogramming::hash_t
privateinherited

typedef for the internal hash

Definition at line 169 of file AthHistogramming.h.

◆ HistMap_t

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

Typedef for convenience.

Definition at line 198 of file AthHistogramming.h.

◆ MetaStore_t

Type of the metadata store variable in Athena.

Definition at line 546 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< 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 212 of file AthHistogramming.h.

Constructor & Destructor Documentation

◆ ZdcNtuple()

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

Definition at line 20 of file ZdcNtuple.cxx.

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

Member Function Documentation

◆ acceptEvent()

uint32_t ZdcNtuple::acceptEvent ( )

Definition at line 1967 of file ZdcNtuple.cxx.

1968{
1969 uint32_t passbits = 0;
1970
1971 if (!m_isMC)
1972 {
1973 if (useGRL)
1974 {
1975 if (!m_grl->passRunLB(*m_eventInfo)) {
1976 passbits += 1; // UPC GRL
1977 }
1978 }
1979
1980 /*
1981 if(!m_grl_mb->passRunLB(*m_eventInfo)){
1982 passbits += 4; // MB GRL
1983 }
1984 */
1985
1989 || (m_eventInfo->isEventFlagBitSet(xAOD::EventInfo::Core, 18) ) )
1990 {
1991 passbits += 2;
1992 } // end if event flags check
1993 } // end if the event is data
1994
1995 return passbits;
1996}
const xAOD::EventInfo * m_eventInfo
Definition ZdcNtuple.h:115
@ 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 350 of file AnaAlgorithm.cxx.

352 {
353 return StatusCode::SUCCESS;
354 }

◆ 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 335 of file AthHistogramming.h.

336{
337 // We need to create a non-const clone
338 TEfficiency* effClone = dynamic_cast< TEfficiency* >( eff.Clone() );
339 if ( !effClone ) {
340 m_msg << MSG::ERROR << "Couldn't create a TEfficiency clone" << endmsg;
341 return StatusCode::FAILURE;
342 }
343 return this->book( *effClone, tDir, stream );
344}
#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 303 of file AthHistogramming.h.

304{
305 // We need to create a non-const clone
306 TH1* histClone = dynamic_cast< TH1* >( hist.Clone() );
307 if ( !histClone ) {
308 m_msg << MSG::ERROR << "Couldn't create a TH1 clone" << endmsg;
309 return StatusCode::FAILURE;
310 }
311 return this->book( *histClone, tDir, stream );
312}
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 403 of file AthHistogramming.h.

404{
405 // Call the other Book method and see if it returns a valid pointer
406 TTree* treePointer = this->bookGetPointer( treeRef, tDir, stream );
407 if ( treePointer )
408 {
409 return StatusCode::SUCCESS;
410 }
411 else
412 {
413 return StatusCode::FAILURE;
414 }
415}
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 356 of file AthHistogramming.h.

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

◆ 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 346 of file AthHistogramming.h.

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

◆ 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 324 of file AthHistogramming.h.

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

◆ 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 314 of file AthHistogramming.h.

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

◆ 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 281 of file AthHistogramming.h.

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

◆ 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 427 of file AthHistogramming.cxx.

428{
429 // Get a pointer
430 const TGraph* graphPointer = &graphRef;
431
432 // Check that we got a valid pointer
433 if ( !graphPointer )
434 {
435 m_msg << MSG::WARNING
436 << "We got an invalid TGraph pointer in the BookGetPointer(TGraph*) method of the class" << m_name
437 << "!" << endmsg;
438 return NULL;
439 }
440
441 // Modify the name and title according to the prefixes of this classes instance
442 std::string graphName = graphPointer->GetName();
443 const std::string graphTitle = graphPointer->GetTitle();
444
445 // Check if the hash for this graphName already exists, i.e., if we have a hash collision
446 const hash_t graphHash = this->hash(graphName);
447 GraphMap_t::const_iterator it = m_graphMap.find( graphHash );
448 if ( it != m_graphMap.end() ) // It does exist!
449 {
450 m_msg << MSG::WARNING
451 << "Detected a hash collision. The hash for the TGraph with name=" << graphName
452 << " already exists and points to a TGraph with name=" << it->second->GetName()
453 << " NOT going to book the new histogram and returning a NULL pointer!" << endmsg;
454 return NULL;
455 }
456
457 // Create a clone that has the new name
458 TGraph* graphClone = dynamic_cast< TGraph* >( graphPointer->Clone((m_histNamePrefix+graphName+m_histNamePostfix).c_str()) );
459 if( !graphClone )
460 {
461 m_msg << MSG::WARNING
462 << "We couldn't clone the TGraph in the BookGetPointer(TGraph&) method of the class" << m_name
463 << "!" << endmsg;
464 return NULL;
465 }
466 graphClone->SetTitle ((m_histTitlePrefix+graphTitle+m_histTitlePostfix).c_str());
467
468 // Massage the final string to book things
469 std::string bookingString("");
470 this->buildBookingString( bookingString, graphName, tDir, stream );
471
472 // Register the TGraph into the THistSvc
473 if ( !((histSvc()->regGraph(bookingString, graphClone)).isSuccess()) )
474 {
475 m_msg << MSG::WARNING
476 << "Problem registering TGraph with name " << graphName
477 << ", title " << graphTitle
478 << " in " << m_name << "!" << endmsg;
479 return NULL;
480 }
481
482 // Also register it in the local map of string to pointer
483 m_graphMap.insert( m_graphMap.end(), std::pair< const hash_t, TGraph* >( graphHash, graphClone ) );
484
485 return graphClone;
486}
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 260 of file AthHistogramming.h.

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

◆ 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 312 of file AthHistogramming.cxx.

313{
314 // Get a pointer
315 const TTree* treePointer = &treeRef;
316
317 // Check that we got a valid pointer
318 if ( !treePointer )
319 {
320 m_msg << MSG::WARNING
321 << "We got an invalid TTree pointer in the BookGetPointer(TTree*) method of the class" << m_name
322 << "!" << endmsg;
323 return NULL;
324 }
325
326 // Modify the name and title according to the prefixes of this classes instance
327 std::string treeName = treePointer->GetName();
328 const std::string treeTitle = treePointer->GetTitle();
329
330 // Check if the hash for this treeName already exists, i.e., if we have a hash collision
331 const hash_t treeHash = this->hash(treeName);
332 TreeMap_t::const_iterator it = m_treeMap.find( treeHash );
333 if ( it != m_treeMap.end() ) // It does exist!
334 {
335 m_msg << MSG::WARNING
336 << "Detected a hash collision. The hash for the TTree with name=" << treeName
337 << " already exists and points to a TTree with name=" << it->second->GetName()
338 << " NOT going to book the new histogram and returning a NULL pointer!" << endmsg;
339 return NULL;
340 }
341
342 // Create a clone that has the new name
343 TTree* treeClone = dynamic_cast< TTree* >( treePointer->Clone(treeName.c_str()) );
344 if( !treeClone )
345 {
346 m_msg << MSG::WARNING
347 << "We couldn't clone the TTree in the BookGetPointer(TTree&) method of the class" << m_name
348 << "!" << endmsg;
349 return NULL;
350 }
351 treeClone->SetTitle (treeTitle.c_str());
352
353 // Massage the final string to book things
354 std::string bookingString("");
355 this->buildBookingString( bookingString, treeName, tDir, stream );
356
357 // Register the TTree into the THistSvc
358 if ( !((histSvc()->regTree(bookingString, treeClone)).isSuccess()) )
359 {
360 m_msg << MSG::WARNING
361 << "Problem registering TTree with name " << treeName
362 << ", title " << treeTitle
363 << " in " << m_name << "!" << endmsg;
364 return NULL;
365 }
366
367 // Also register it in the local map of string to pointer
368 m_treeMap.insert( m_treeMap.end(), std::pair< const hash_t, TTree* >( treeHash, treeClone ) );
369
370 return treeClone;
371}
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 146 of file AthHistogramming.cxx.

147{
148 // Modify the name and title according to the prefixes of this classes instance
149 std::string effName(effRef.GetName());
150 const std::string effTitle(effRef.GetTitle());
151 std::string bookingString("");
152
153 this->buildBookingString( bookingString, effName, tDir, stream );
154 effRef.SetTitle((m_histTitlePrefix+effTitle+m_histTitlePostfix).c_str() );
155 effRef.SetName(effName.c_str());
156
157 // Check if the hash for this effName already exists, i.e., if we have a hash collision
158 const hash_t effHash = this->hash(effName);
159 EffMap_t::const_iterator it = m_effMap.find( effHash );
160 if ( it != m_effMap.end() ) // It does exist!
161 {
162 m_msg << MSG::WARNING
163 << "Detected a hash collision. The hash for the TEfficiency with name=" << effName
164 << " already exists and points to a TEfficiency with name=" << it->second->GetName()
165 << " NOT going to book the new TEfficiency and returning a NULL pointer!" << endmsg;
166 return NULL;
167 }
168
169 // Set the new name and title for the TEfficiency, based on the prefixes that the user set for this class instance
170 // Create a clone that has the new name
171
172 // Massage the final string to book things
173
174 // Register the TEfficiency into the THistSvc
175 if ( !((histSvc()->regEfficiency(bookingString, &effRef)).isSuccess()) )
176 {
177 m_msg << MSG::WARNING
178 << "Problem registering TEfficiency with name " << effName
179 << ", name prefix " << m_histNamePrefix
180 << ", title " << effTitle
181 << ", tile prefix " << m_histTitlePrefix
182 << ", and tile postfix " << m_histTitlePostfix
183 << " in " << m_name << "!" << endmsg;
184 return NULL;
185 }
186
187 // Also register it in the local map of string to pointer
188 m_effMap.insert( m_effMap.end(), std::pair< const hash_t, TEfficiency* >( effHash, &effRef ) );
189
190 return &effRef;
191}
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 293 of file AthHistogramming.h.

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

◆ 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 98 of file AthHistogramming.cxx.

99{
100 // Modify the name and title according to the prefixes of this classes instance
101 std::string histName(histRef.GetName());
102 const std::string histTitle(histRef.GetTitle());
103 std::string bookingString("");
104
105 this->buildBookingString( bookingString, histName, tDir, stream );
106 histRef.SetTitle((m_histTitlePrefix+histTitle+m_histTitlePostfix).c_str() );
107 histRef.SetName(histName.c_str());
108
109 // Check if the hash for this histName already exists, i.e., if we have a hash collision
110 const hash_t histHash = this->hash(histName);
111 HistMap_t::const_iterator it = m_histMap.find( histHash );
112 if ( it != m_histMap.end() ) // It does exist!
113 {
114 m_msg << MSG::WARNING
115 << "Detected a hash collision. The hash for the histogram with name=" << histName
116 << " already exists and points to a histogram with name=" << it->second->GetName()
117 << " NOT going to book the new histogram and returning a NULL pointer!" << endmsg;
118 return NULL;
119 }
120
121 // Set the new name and title for the histogram, based on the prefixes that the user set for this class instance
122 // Create a clone that has the new name
123
124 // Massage the final string to book things
125
126 // Register the histogram into the THistSvc
127 if ( !((histSvc()->regHist(bookingString, &histRef)).isSuccess()) )
128 {
129 m_msg << MSG::WARNING
130 << "Problem registering histogram with name " << histName
131 << ", name prefix " << m_histNamePrefix
132 << ", title " << histTitle
133 << ", tile prefix " << m_histTitlePrefix
134 << ", and tile postfix " << m_histTitlePostfix
135 << " in " << m_name << "!" << endmsg;
136 return NULL;
137 }
138
139 // Also register it in the local map of string to pointer
140 m_histMap.insert( m_histMap.end(), std::pair< const hash_t, TH1* >( histHash, &histRef ) );
141
142 return &histRef;
143}
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 272 of file AthHistogramming.h.

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

◆ 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 560 of file AthHistogramming.cxx.

565{
566 // Massage the final string to book things
567 if(tDir.empty()) tDir = m_rootDir;
568 size_t pos = histName.rfind('/');
569 if(pos != std::string::npos){
570 tDir+='/';
571 tDir.append(histName, 0,pos);
572 histName.erase(0,pos+1);
573 };
574 if(stream.empty()) stream = m_streamName;
575
576 if(usePrefixPostfix){
577 bookingString = "/"+stream+"/"+tDir+"/"+m_histNamePrefix+histName+m_histNamePostfix;
578 } else {
579 bookingString = "/"+stream+"/"+tDir+"/"+histName;
580 }
581 while(bookingString.find("//") != std::string::npos){
582 this->myReplace(bookingString,"//","/");
583 }
584
585 return;
586}
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 66 of file AthHistogramming.cxx.

70{
73 m_rootDir = rootDir;
74 m_histNamePrefix = histNamePrefix;
75 m_histNamePostfix = histNamePostfix;
76 m_histTitlePrefix = histTitlePrefix;
77 m_histTitlePostfix = histTitlePostfix;
78
79 return StatusCode::SUCCESS;
80}
ServiceHandle< ITHistSvc > m_histSvc
Pointer to the THistSvc (event store by default)

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< 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< 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< 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 2120 of file ZdcNtuple.cxx.

2121{
2122 double deta = std::abs(eta1 - eta2);
2123 double dphi = std::abs(phi1 - phi2) < TMath::Pi() ? std::abs(phi1 - phi2) : 2 * TMath::Pi() - std::abs(phi1 - phi2);
2124 return std::sqrt(deta * deta + dphi * dphi);
2125}
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 250 of file AthHistogramming.cxx.

251{
252 // Build a 32 bit hash out of the name
253 const hash_t effHash = this->hash(effName);
254
255 // See if this entry exists in the map
256 EffMap_t::const_iterator it = m_effMap.find( effHash );
257 if ( it == m_effMap.end() ) // It doesn't exist!
258 { // Let's see into the THistSvc if somebody else has registered the TEfficiency...
259
260 // Need to copy the strings as we will massage them from here on
261 std::string effNameCopy = effName;
262 std::string tDirCopy = tDir;
263 std::string streamCopy = stream;
264
265 // Massage the final string to book things
266 std::string bookingString("");
267 this->buildBookingString( bookingString, effNameCopy, tDirCopy, streamCopy ,false);
268
269 TEfficiency* effPointer(NULL);
270 if ( !((histSvc()->getEfficiency(bookingString, effPointer)).isSuccess()) )
271 {
272 // Massage the final string to book things
273 std::string bookingString("");
274 this->buildBookingString( bookingString, effNameCopy, tDirCopy, streamCopy, true );
275
276 if ( !((histSvc()->getEfficiency(bookingString, effPointer)).isSuccess()) )
277 {
278 m_msg << MSG::WARNING
279 << "Problem retrieving the TEfficiency with name (including pre- and post-fixes) "
280 << m_histNamePrefix + effNameCopy + m_histNamePostfix
281 << " or with name " << effNameCopy
282 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
283 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
284 return NULL;
285 }
286 // If we get to here, we actually found the TEfficiency in the THistSvc.
287 // So let's add it to the local cache map and return its pointer
288 m_effMap.insert( m_effMap.end(), std::pair< const hash_t, TEfficiency* >( effHash, effPointer ) );
289 return effPointer;
290 }
291 // If we get to here, we actually found the TEfficiency in the THistSvc.
292 // So let's add it to the local cache map and return its pointer
293 m_effMap.insert( m_effMap.end(), std::pair< const hash_t, TEfficiency* >( effHash, effPointer ) );
294 return effPointer;
295 }
296
297 // Return the pointer to the TEfficiency that we got from the local cache map
298 return it->second;
299}

◆ 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 358 of file AnaAlgorithm.cxx.

360 {
361 return StatusCode::SUCCESS;
362 }

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode ZdcNtuple::execute ( )
overridevirtual

Definition at line 539 of file ZdcNtuple.cxx.

540{
541 // Here you do everything that needs to be done on every single
542 // events, e.g. read input variables, apply cuts, and fill
543 // histograms and trees. This is where most of your actual analysis
544 // code will go.
545
546
547 // prefilter with a track limit
548
549 if (!evtStore())
550 {
551 ANA_MSG_INFO("*** No event found! ***");
552 return StatusCode::SUCCESS;
553 }
554
555 ANA_CHECK(evtStore()->retrieve( m_eventInfo, "EventInfo"));
557 if (zdcInj){
559 }
560
561 //tracks used to go here
562
564
565 if ((!(zdcCalib || zdcLaser || zdcOnly || zdcInj)) && enableID)
566 {
567 ANA_MSG_DEBUG("Trying to extract InDetTrackParticles from evtStore()=" << evtStore());
568 ANA_CHECK(evtStore()->retrieve( m_trackParticles, "InDetTrackParticles") );
569 size_t n = m_trackParticles->size();
570 ANA_MSG_DEBUG("Done w/ extracting InDetTrackParticles with size = " << n);
571
572 if (n > trackLimit && trackLimitReject) return StatusCode::SUCCESS;
573 }
574
575 bool passTrigger = true;
576 m_trigDecision = 0;
577 if (enableTrigger)
578 {
579 ANA_CHECK(evtStore()->retrieve( m_trigDecision, "xTrigDecision"));
581 passTrigger = processTriggerDecision();
582 }
583
584 if (reprocZdc){
585 ANA_MSG_INFO ("Reprocessing ZDC in ZdcNtuple");
586 ANA_CHECK(m_zdcAnalysisTool->reprocessZdc());
587 }else{
588 ANA_MSG_DEBUG ("No ZDC reprocessing");
589 }
590
591 processZdcNtupleFromModules(); // same model in both cases -- processZdcNtuple() goes straight to the anlaysis tool, which is good for debugging
592
593 if(m_isMC){
595 }
596
597 if (!(zdcCalib || zdcLaser || zdcOnly || zdcInj))
598 {
599
600 // PLEASE NOTE: the commented sections here will be restored once we have a better sense of the Run 3 HI data
601
602 // Global E_T quantities for centrality
603 if (enableCalo){
604 ANA_CHECK(evtStore()->retrieve( m_caloSums, "CaloSums") );
605 ANA_CHECK(evtStore()->retrieve( m_eventShapes, "HIEventShape") );
606
608 ANA_CHECK(evtStore()->retrieve( m_lvl1EnergySumRoI, "LVL1EnergySumRoI") );
609
610 processFCal();
611 }
612
613 // MBTS quantities, but may require a derivation to be accessible (required STDM6 in pp)
614 //ANA_CHECK(evtStore()->retrieve( m_mbtsInfo, "MBTSForwardEventInfo") );
615 //ANA_CHECK(evtStore()->retrieve( m_mbtsModules, "MBTSModules") );
616 //m_trigT2MbtsBits = 0;
617 //ANA_CHECK(evtStore()->retrieve( m_trigT2MbtsBits, "HLT_xAOD__TrigT2MbtsBitsContainer_T2Mbts") );
618 //processMBTS();
619
620 if (enableID){
621 ANA_CHECK(evtStore()->retrieve( m_primaryVertices, "PrimaryVertices") );
622 processInDet();
623 }
624
625
626 if (enableClusters){
627 ANA_CHECK(evtStore()->retrieve( m_caloClusters, "CaloCalTopoClusters"));
629 }
630
631 // Gaps will require some evaluation of Run 3 performance of the clusters
632 //processGaps();
633
635 ANA_CHECK(evtStore()->retrieve( m_afpProtons, "AFPProtonContainer"));
637 }
638 }
639
640 // if trigger enabled, only write out events which pass one of them, unless using MC
641
642 if (enableTrigger && !passTrigger && !m_isMC && writeOnlyTriggers) return StatusCode::SUCCESS;
643
644
646 {
647 tree( "zdcTree" )->Fill();
648 }
649
650 return StatusCode::SUCCESS;
651}
#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
const xAOD::VertexContainer * m_primaryVertices
Definition ZdcNtuple.h:124
bool trackLimitReject
Definition ZdcNtuple.h:80
void processMCEventCollection()
void processZdcNtupleFromModules()
void processInDet()
void processClusters()
const xAOD::HIEventShapeContainer * m_caloSums
Definition ZdcNtuple.h:119
const xAOD::CaloClusterContainer * m_caloClusters
Definition ZdcNtuple.h:125
const xAOD::AFPProtonContainer * m_afpProtons
Definition ZdcNtuple.h:130
void processEventInfo()
void processFCal()
const xAOD::TrackParticleContainer * m_trackParticles
Definition ZdcNtuple.h:126
bool processTriggerDecision()
void processVInjInfo()
const xAOD::TrigDecision * m_trigDecision
Definition ZdcNtuple.h:118
void processProtons()
const xAOD::EnergySumRoI * m_lvl1EnergySumRoI
Definition ZdcNtuple.h:127
void setupTriggerHistos()
const xAOD::HIEventShapeContainer * m_eventShapes
Definition ZdcNtuple.h:120
retrieve(aClass, aKey=None)
Definition PyKernel.py:110
TChain * tree

◆ extraDeps_update_handler()

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

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 50 of file AthAlgorithm.cxx.

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

◆ 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 342 of file AnaAlgorithm.cxx.

344 {
345 return StatusCode::SUCCESS;
346 }

◆ finalize()

StatusCode ZdcNtuple::finalize ( )
overridevirtual

Definition at line 2128 of file ZdcNtuple.cxx.

2129{
2130 // This method is the mirror image of initialize(), meaning it gets
2131 // called after the last event has been processed on the worker node
2132 // and allows you to finish up any objects you created in
2133 // initialize() before they are written to disk. This is actually
2134 // fairly rare, since this happens separately for each worker node.
2135 // Most of the time you want to do your post-processing on the
2136 // submission node after all your histogram outputs have been
2137 // merged. This is different from histFinalize() in that it only
2138 // gets called on worker nodes that processed input events.
2139
2140
2141 return StatusCode::SUCCESS;
2142}

◆ 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 492 of file AthHistogramming.cxx.

493{
494 // Build a 32 bit hash out of the name
495 const hash_t graphHash = this->hash(graphName);
496
497 // See if this entry exists in the map
498 GraphMap_t::const_iterator it = m_graphMap.find( graphHash );
499 if ( it == m_graphMap.end() ) // It doesn't exist!
500 { // Let's see into the THistSvc if somebody else has registered the TGraph...
501
502 // Need to copy the strings as we will massage them from here on
503 std::string graphNameCopy = graphName;
504 std::string tDirCopy = tDir;
505 std::string streamCopy = stream;
506
507 // Massage the final string to book things
508 std::string bookingString("");
509 this->buildBookingString( bookingString, graphNameCopy, tDirCopy, streamCopy, true);
510
511 TGraph* graphPointer(NULL);
512 if ( !((histSvc()->getGraph(bookingString, graphPointer)).isSuccess()) )
513 {
514 // Massage the final string to book things
515 std::string bookingString("");
516 this->buildBookingString( bookingString, graphNameCopy, tDirCopy, streamCopy, false );
517
518 if ( !((histSvc()->getGraph(bookingString, graphPointer)).isSuccess()) )
519 {
520 m_msg << MSG::WARNING
521 << "Problem retrieving the TGraph with name (including pre- and post-fixes) "
522 << m_histNamePrefix + graphNameCopy + m_histNamePostfix
523 << " or with name " << graphNameCopy
524 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
525 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
526 return NULL;
527 }
528 // If we get to here, we actually found the TGraph in the THistSvc.
529 // So let's add it to the local cache map and return its pointer
530 m_graphMap.insert( m_graphMap.end(), std::pair< const hash_t, TGraph* >( graphHash, graphPointer ) );
531 return graphPointer;
532 }
533 // If we get to here, we actually found the TGraph in the THistSvc.
534 // So let's add it to the local cache map and return its pointer
535 m_graphMap.insert( m_graphMap.end(), std::pair< const hash_t, TGraph* >( graphHash, graphPointer ) );
536 return graphPointer;
537 }
538
539
540 // Return the pointer to the TGraph that we got from the local cache map
541 return it->second;
542}

◆ handle()

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

receive the given incident

Guarantee
basic
Failures
incident handling errors

Definition at line 520 of file AnaAlgorithm.cxx.

522 {
523 if (inc.type() == IncidentType::BeginInputFile)
524 {
529 } else if (inc.type() == IncidentType::EndInputFile)
530 {
533 } else
534 {
535 ATH_MSG_WARNING( "Unknown incident type received: " << inc.type() );
536 }
537 }
#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 428 of file AthHistogramming.h.

429{
430 const uint64_t hash64 = CxxUtils::crc64( histName );
431 return (hash_t)(hash64 & 0xFFFFFFFF);
432}
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 198 of file AthHistogramming.cxx.

199{
200 // Build a 32 bit hash out of the name
201 const hash_t histHash = this->hash(histName);
202
203 // See if this entry exists in the map
204 HistMap_t::const_iterator it = m_histMap.find( histHash );
205 if ( it == m_histMap.end() ) // It doesn't exist!
206 { // Let's see into the THistSvc if somebody else has registered the histogram...
207
208 // Need to copy the strings as we will massage them from here on
209 std::string histNameCopy = histName;
210 std::string tDirCopy = tDir;
211 std::string streamCopy = stream;
212
213 // Massage the final string to book things
214 std::string bookingString("");
215 this->buildBookingString( bookingString, histNameCopy, tDirCopy, streamCopy ,false);
216
217 TH1* histPointer(NULL);
218 if ( !((histSvc()->getHist(bookingString, histPointer)).isSuccess()) )
219 {
220 // Massage the final string to book things
221 std::string bookingString("");
222 this->buildBookingString( bookingString, histNameCopy, tDirCopy, streamCopy, true );
223
224 if ( !((histSvc()->getHist(bookingString, histPointer)).isSuccess()) )
225 {
226 m_msg << MSG::WARNING
227 << "Problem retrieving the histogram with name (including pre- and post-fixes) "
228 << m_histNamePrefix + histNameCopy + m_histNamePostfix
229 << " or with name " << histNameCopy
230 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
231 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
232 return NULL;
233 }
234 // If we get to here, we actually found the histogram in the THistSvc.
235 // So let's add it to the local cache map and return its pointer
236 m_histMap.insert( m_histMap.end(), std::pair< const hash_t, TH1* >( histHash, histPointer ) );
237 return histPointer;
238 }
239 // If we get to here, we actually found the histogram in the THistSvc.
240 // So let's add it to the local cache map and return its pointer
241 m_histMap.insert( m_histMap.end(), std::pair< const hash_t, TH1* >( histHash, histPointer ) );
242 return histPointer;
243 }
244
245
246 // Return the pointer to the histogram that we got from the local cache map
247 return it->second;
248}

◆ 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 369 of file AthHistogramming.h.

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

◆ 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 386 of file AthHistogramming.h.

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

◆ 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 94 of file ZdcNtuple.cxx.

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

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< 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 }

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< 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 590 of file AthHistogramming.cxx.

593{
594 size_t pos = 0;
595 while((pos = str.find(oldStr, pos)) != std::string::npos)
596 {
597 str.replace(pos, oldStr.length(), newStr);
598 pos += newStr.length();
599 }
600}

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< 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 336 of file AnaAlgorithm.cxx.

338 {}

◆ processClusters()

void ZdcNtuple::processClusters ( )

Definition at line 1824 of file ZdcNtuple.cxx.

1825{
1826 //t_nclus = 0;
1827
1828 t_cc_pt.clear();
1829 t_cc_eta.clear();
1830 t_cc_phi.clear();
1831 t_cc_e.clear();
1832 t_cc_raw_m.clear();
1833 t_cc_raw_eta.clear();
1834 t_cc_raw_phi.clear();
1835 t_cc_raw_e.clear();
1836 t_cc_raw_samp.clear();
1837 t_cc_layer.clear();
1838 t_cc_sig.clear();
1839
1840 t_nclus = m_caloClusters->size();
1841
1842 t_clusEt = 0;
1843 t_clusEtMax = -999;
1844 t_clusetaMax = 0;
1845 t_clusphiMax = 0;
1846
1847 for (const auto cluster : *m_caloClusters)
1848 {
1849 t_cc_pt.push_back(cluster->pt());
1850 t_cc_eta.push_back(cluster->eta());
1851 t_cc_phi.push_back(cluster->phi());
1852 t_cc_e.push_back(cluster->e());
1853 t_cc_raw_m.push_back(cluster->rawM());
1854 t_cc_raw_eta.push_back(cluster->rawEta());
1855 t_cc_raw_phi.push_back(cluster->rawPhi());
1856 t_cc_raw_e.push_back(cluster->rawE());
1857
1858 std::vector<float> energies;
1859
1860 for (size_t s = CaloSampling::PreSamplerB; s < CaloSampling::Unknown; s++ )
1861 {
1862 bool hasSample = cluster->hasSampling( (xAOD::CaloCluster::CaloSample) s );
1863 float e = 0;
1864 if (hasSample)
1865 {
1866 e = cluster->eSample( (xAOD::CaloCluster::CaloSample) s);
1867 }
1868 energies.push_back(e);
1869 }
1870 t_cc_raw_samp.push_back(energies);
1871
1872 float et = cluster->e() / TMath::CosH(cluster->eta());
1873 t_clusEt += et;
1874 if (et > t_clusEtMax)
1875 {
1876 t_clusEtMax = et;
1877 t_clusetaMax = cluster->eta();
1878 t_clusphiMax = cluster->phi();
1879 }
1880
1881 double cell_sig = 0;
1882 if (!cluster->retrieveMoment(xAOD::CaloCluster::CELL_SIGNIFICANCE, cell_sig)) {ANA_MSG_DEBUG("processClusters() : No CELL_SIGNIFICANCE!");}
1883 t_cc_sig.push_back(cell_sig);
1884 double cell_layer = 0;
1885 if (!cluster->retrieveMoment(xAOD::CaloCluster::CELL_SIG_SAMPLING, cell_layer)) {ANA_MSG_DEBUG("processClusters() : No CELL_SIG_SAMPLING!");}
1886 t_cc_layer.push_back(static_cast<int>(cell_layer));
1887 //t_nclus++;
1888 }
1889
1890 if ( (!enableClusters) || (t_ntrk >= trackLimit) ) // if disabled or if too many tracks
1891 {
1892 t_cc_pt.clear();
1893 t_cc_eta.clear();
1894 t_cc_phi.clear();
1895 t_cc_e.clear();
1896 t_cc_layer.clear();
1897 t_cc_sig.clear();
1898 }
1899 else
1900 {
1901 ANA_MSG_DEBUG("processClusters(): keeping clusters");
1902 }
1903 return;
1904}
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 1262 of file ZdcNtuple.cxx.

1263{
1264 ANA_MSG_DEBUG( "processing event info");
1265
1266 t_bcid = m_eventInfo->bcid();
1267 t_runNumber = m_eventInfo->runNumber();
1268 t_eventNumber = m_eventInfo->eventNumber();
1269 t_lumiBlock = m_eventInfo->lumiBlock();
1270 t_bunchGroup = -1;
1271 t_extendedLevel1ID = m_eventInfo->extendedLevel1ID();
1272 t_timeStamp = m_eventInfo->timeStamp();
1273 t_timeStampNSOffset = m_eventInfo->timeStampNSOffset();
1275 t_avgIntPerCrossing = m_eventInfo->averageInteractionsPerCrossing();
1276 t_actIntPerCrossing = m_eventInfo->actualInteractionsPerCrossing();
1279
1280 if ( !(m_eventCounter++ % 1000) || msgLvl(MSG::DEBUG))
1281 {
1282 ANA_MSG_INFO("Event# " << m_eventCounter << " Run " << m_eventInfo->runNumber() << " Event " << m_eventInfo->eventNumber() << " LB " << m_eventInfo->lumiBlock() );
1283 }
1284
1285}
bool msgLvl(const MSG::Level lvl) const
uint32_t acceptEvent()
@ ForwardDet
The forward detectors.

◆ processFCal()

void ZdcNtuple::processFCal ( )

Definition at line 1600 of file ZdcNtuple.cxx.

1601{
1602 ANA_MSG_DEBUG("processFCal: processing FCal");
1603
1604 t_fcalEt = 0.;
1605 t_fcalEtA = 0.;
1606 t_fcalEtC = 0.;
1607 t_fcalEtA_TT = 0.;
1608 t_fcalEtC_TT = 0.;
1609
1610 if (m_caloSums)
1611 {
1612 static const SG::ConstAccessor<std::string> SummaryAcc("Summary");
1613 for (const auto calosum : *m_caloSums)
1614 {
1615 const std::string name = SummaryAcc(*calosum);
1616 if (name == "FCal")
1617 {
1618 t_fcalEt = calosum->et();
1619 ANA_MSG_DEBUG("processFCal: fcalEt = " << t_fcalEt);
1620 }
1621
1622 if (name == "All")
1623 {
1624 t_totalEt = calosum->et();
1625 ANA_MSG_DEBUG("processFCal: totalEt = " << t_totalEt);
1626 }
1627 }
1628 }
1629
1630 t_fcalEtA = 0;
1631 t_fcalEtC = 0;
1632 t_totalEt24 = 0;
1633
1634 if (m_eventShapes)
1635 {
1636 for (const auto eventShape : *m_eventShapes)
1637 {
1638 int layer = eventShape->layer();
1639 float eta = eventShape->etaMin();
1640 float et = eventShape->et();
1641 if (layer == 21 || layer == 22 || layer == 23)
1642 {
1643 if (eta > 0) t_fcalEtA += et;
1644 if (eta < 0) t_fcalEtC += et;
1645 }
1646
1647 if (TMath::Abs(eta) < 2.4)
1648 {
1649 t_totalEt24 += et;
1650 }
1651 }
1652 }
1653
1654 t_L1ET = 0;
1655 t_L1ET24 = 0;
1656
1658 {
1659 t_L1ET = m_lvl1EnergySumRoI->energyT();
1660 //t_L1ET24 = m_lvl1EnergySumRoI->energyTRestricted(); // TBD when limited eta ET available
1661 }
1662
1663 return;
1664}
Scalar eta() const
pseudorapidity method
@ layer
Definition HitInfo.h:79

◆ processGaps()

void ZdcNtuple::processGaps ( )

Definition at line 1666 of file ZdcNtuple.cxx.

1667{
1668
1669 float eta_min = 5;
1670 float eta_max = -5;
1671
1672 if (!m_caloClusters) return;
1673 for (const auto cl : *m_caloClusters)
1674 {
1675
1676 if (cl->pt() < m_gapPtMin) continue;
1677
1678 int etabin = h_TCSigCut->GetXaxis()->FindBin(cl->eta());
1679 if (etabin < 1 || etabin > h_TCSigCut->GetNbinsX()) continue;
1680 float sig_cut = h_TCSigCut->GetBinContent(etabin);
1681 float sig = cl->getMomentValue(xAOD::CaloCluster::CELL_SIGNIFICANCE);
1682 int cl_cell_sig_samp = static_cast<int>(cl->getMomentValue(xAOD::CaloCluster::CELL_SIG_SAMPLING));
1683
1684 ANA_MSG_VERBOSE ("gapclus: etabin " << etabin << " sig_cut=" << sig_cut << " sig=" << sig << " samp=" << cl_cell_sig_samp);
1685
1686 if (sig < sig_cut) continue;
1687
1688 if (cl_cell_sig_samp >= CaloSampling::TileBar0 && cl_cell_sig_samp <= CaloSampling::TileExt2) continue;
1689
1690 if (cl->eta() < eta_min) eta_min = cl->eta();
1691 if (cl->eta() > eta_max) eta_max = cl->eta();
1692
1693 }
1694
1695 t_edgeGapA = 4.9 - eta_max;
1696 t_edgeGapC = eta_min + 4.9;
1697 ANA_MSG_DEBUG("processGaps(): egA " << t_edgeGapA << " , egC " << t_edgeGapC);
1698
1699}
#define ANA_MSG_VERBOSE(xmsg)
Macro printing verbose messages.
TH1 * h_TCSigCut
Definition ZdcNtuple.h:339
float m_gapPtMin
Definition ZdcNtuple.h:328
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]

◆ processInDet()

void ZdcNtuple::processInDet ( )

Definition at line 1312 of file ZdcNtuple.cxx.

1313{
1314 ANA_MSG_DEBUG("processInDet(): processing tracks & vertices!");
1315 t_ntrk = 0;
1316 t_nvx = 0;
1317 t_vxntrk = 0;
1318 t_vx_trk_index.clear();
1319 t_vxsumpt2 = 0;
1320 t_vxtype = 0;
1321 t_pvindex = -1;
1322 t_puvxntrk = 0;
1323 t_puvxsumpt = 0;
1325 t_vxnminbias = 0;
1326
1327 int i;
1328 for (i = 0; i < 3; i++) t_vx[i] = 0;
1329 for (i = 0; i < 6; i++) t_vxcov[i] = 0;
1330
1331 const xAOD::Vertex* primary_vertex = nullptr;
1332 size_t pv_index = -1;
1333 size_t vx_index = 0;
1334 float max_pileup_sumpT = 0.;
1335 int max_pileup_nTrack = 0;
1336 float max_pileup_z = 0;
1337 int nStrongPileup = 0;
1338
1339 t_nvtx = 0;
1340 t_vtx_type.clear();
1341 t_vtx_x.clear();
1342 t_vtx_y.clear();
1343 t_vtx_z.clear();
1344 t_vtx_ntrk_all.clear();
1345 t_vtx_sumpt2_all.clear();
1346 t_vtx_ntrk.clear();
1347 t_vtx_sumpt2.clear();
1348 t_vtx_trk_index.clear();
1349
1351 {
1352 ANA_MSG_DEBUG("processInDet: processing vertices");
1353
1354 t_nvx = m_primaryVertices->size();
1355
1356 static const SG::ConstAccessor<float> sumPt2Acc("sumPt2");
1357
1358 // start of new vertex representation
1359 t_nvtx = m_primaryVertices->size();
1360 for (const auto vertex : *m_primaryVertices)
1361 {
1362 float vtx_sumpt2 = 0;
1363 int vtx_ntrk = 0;
1364
1365 t_vtx_type.push_back(vertex->vertexType());
1366 t_vtx_x.push_back(0);
1367 t_vtx_y.push_back(0);
1368 t_vtx_z.push_back(vertex->z());
1369
1370 t_vtx_ntrk.push_back(vtx_ntrk);
1371 t_vtx_sumpt2.push_back(vtx_sumpt2 / 1e6);
1372 t_vtx_ntrk_all.push_back(vertex->nTrackParticles());
1373
1374 if (sumPt2Acc.isAvailable(*vertex))
1375 t_vtx_sumpt2_all.push_back(sumPt2Acc(*vertex));
1376 else
1377 t_vtx_sumpt2_all.push_back(-1);
1378
1379 std::vector<int16_t> trk_index;
1380 if ( m_trackParticles && vertex->nTrackParticles() <= trackLimit )
1381 {
1382 const std::vector< ElementLink< xAOD::TrackParticleContainer > >& vxTrackParticles = vertex->trackParticleLinks();
1383 for (size_t itrk = 0; itrk < vxTrackParticles.size(); itrk++)
1384 {
1385 ElementLink< xAOD::TrackParticleContainer > trkLink = vxTrackParticles.at(itrk);
1386 trk_index.push_back(trkLink.index());
1387 }
1388 }
1389 t_vtx_trk_index.push_back(trk_index);
1390
1391 // end of new vertex representation
1392
1393 if (vertex->vertexType() == xAOD::VxType::PriVtx)
1394 {
1395 primary_vertex = vertex;
1396 pv_index = vx_index;
1397 }
1398 if (vertex->vertexType() == xAOD::VxType::PileUp)
1399 {
1400 float pileup_sumpT = 0;
1401 int pileup_nTrack = 0;
1402 for (size_t itr = 0; itr < vertex->nTrackParticles(); itr++)
1403 {
1404 int track_quality = trackQuality(vertex->trackParticle(itr), vertex);
1405 if (track_quality != -1 && (track_quality & 128) != 0)
1406 {
1407 pileup_nTrack++;
1408 pileup_sumpT += vertex->trackParticle(itr)->pt();
1409 }
1410 }
1411 if (pileup_sumpT > max_pileup_sumpT)
1412 {
1413 max_pileup_sumpT = pileup_sumpT;
1414 max_pileup_nTrack = pileup_nTrack;
1415 max_pileup_z = vertex->z();
1416 }
1417 if (pileup_sumpT > 5e3 || pileup_nTrack > 5) nStrongPileup++;
1418 }
1419 vx_index++;
1420 }
1421 }
1422
1423 t_nstrong = nStrongPileup;
1424
1425 if (primary_vertex != nullptr)
1426 {
1427 t_vx[0] = primary_vertex->x();
1428 t_vx[1] = primary_vertex->y();
1429 t_vx[2] = primary_vertex->z();
1430 /*
1431 const std::vector<float>& cov = primary_vertex->covariance();
1432 */
1433 //for (size_t i=0;i<cov.size();i++)
1434 for (size_t i = 0; i < 6; i++)
1435 {
1436 //t_vxcov[i] = cov.at(i);
1437 t_vxcov[i] = 0;
1438 }
1439 t_vxntrk = primary_vertex->nTrackParticles();
1440 static const SG::ConstAccessor<float> sumPt2Acc("sumPt2");
1441 if (sumPt2Acc.isAvailable(*primary_vertex))
1442 t_vxsumpt2 = sumPt2Acc(*primary_vertex);
1443 else
1444 t_vxsumpt2 = 0;
1445
1446 t_vxtype = primary_vertex->vertexType();
1447 t_pvindex = pv_index;
1448 t_puvxz = max_pileup_z;
1449 t_puvxsumpt = max_pileup_sumpT;
1450 t_puvxntrk = max_pileup_nTrack;
1451
1452 const std::vector< ElementLink< xAOD::TrackParticleContainer > >& vxTrackParticles = primary_vertex->trackParticleLinks();
1453
1454 for (size_t itrk = 0; itrk < vxTrackParticles.size(); itrk++)
1455 {
1456 ElementLink< xAOD::TrackParticleContainer > trkLink = vxTrackParticles.at(itrk);
1457 if (!trkLink.isValid()) continue;
1458 if (m_trackParticles)
1459 {
1460 if (m_trackParticles->size() <= trackLimit)
1461 t_vx_trk_index.push_back(trkLink.index());
1462 }
1463 }
1464
1465 }
1466
1467
1468 if (m_trackParticles)
1469 {
1470 ANA_MSG_DEBUG("processInDet: processing trackss");
1471
1472 t_trk_pt.clear();
1473 t_trk_eta.clear();
1474 t_trk_phi.clear();
1475 t_trk_e.clear();
1476 t_trk_index.clear();
1477 t_trk_theta.clear();
1478 t_trk_charge.clear();
1479 t_trk_d0.clear();
1480 t_trk_z0.clear();
1481 t_trk_vz.clear();
1482 t_trk_vtxz.clear();
1483 t_trk_quality.clear();
1484 t_trk_nPixHits.clear();
1485 t_trk_nSctHits.clear();
1486 t_trk_nPixDead.clear();
1487 t_trk_nSctDead.clear();
1488 t_trk_nPixHoles.clear();
1489 t_trk_nSctHoles.clear();
1490 t_trk_nTrtHits.clear();
1491 t_trk_nTrtOutliers.clear();
1492 t_trk_inPixHits.clear();
1493 t_trk_exPixHits.clear();
1494 t_trk_ninPixHits.clear();
1495 t_trk_nexPixHits.clear();
1496 t_trk_pixeldEdx.clear();
1497
1498 t_ntrk = m_trackParticles->size();
1499
1500 if ( !enableTracks ) return;
1501
1502 if ( t_ntrk <= trackLimit ) // dump all tracks
1503 {
1504 int trk_index = 0;
1505 for (const auto track : *m_trackParticles)
1506 {
1507 writeTrack(track, primary_vertex, trk_index++);
1508 }
1509 }
1510 else // write small vertices
1511 {
1512 for (const auto vertex : *m_primaryVertices)
1513 {
1514 if (vertex->nTrackParticles() <= trackLimit )
1515 {
1516 const std::vector< ElementLink< xAOD::TrackParticleContainer > >& vxTrackParticles = vertex->trackParticleLinks();
1517 for (size_t itrk = 0; itrk < vxTrackParticles.size(); itrk++)
1518 {
1519 ElementLink< xAOD::TrackParticleContainer > trkLink = vxTrackParticles.at(itrk);
1520 writeTrack(*trkLink, vertex, trkLink.index());
1521 }
1522 }
1523 }
1524 }
1525 }
1526
1527 return;
1528}
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 1701 of file ZdcNtuple.cxx.

1702{
1703 ANA_MSG_DEBUG("processMBTS: trying to process!");
1704 t_mbts_countA = 0;
1705 t_mbts_countC = 0;
1708 t_mbts_timeA = 0.;
1709 t_mbts_timeC = 0.;
1710 t_mbts_timeDiff = 0.;
1711
1712 if (m_mbtsInfo->size() > 0)
1713 {
1714 t_mbts_countA = m_mbtsInfo->at(0)->countA();
1715 t_mbts_countC = m_mbtsInfo->at(0)->countC();
1716 t_mbts_timeA = m_mbtsInfo->at(0)->timeA();
1717 t_mbts_timeC = m_mbtsInfo->at(0)->timeC();
1718 t_mbts_timeDiff = m_mbtsInfo->at(0)->timeDiff();
1719 }
1720 else
1721 {
1722 ANA_MSG_INFO("processMBTS: Warning: MBTS info empty!");
1723 }
1724
1725 for (int iside = 0; iside < 2; iside++)
1726 {
1727 for (int iin = 0; iin < 8; iin++)
1728 {
1729 t_mbts_in_e[iside][iin] = 0.;
1730 t_mbts_in_t[iside][iin] = 0.;
1731 t_T2mbts_in_e[iside][iin] = 0.;
1732 t_T2mbts_in_t[iside][iin] = 0.;
1733 }
1734 for (int iout = 0; iout < 4; iout++)
1735 {
1736 t_mbts_out_e[iside][iout] = 0.;
1737 t_mbts_out_t[iside][iout] = 0.;
1738 t_T2mbts_out_e[iside][iout] = 0.;
1739 t_T2mbts_out_t[iside][iout] = 0.;
1740 }
1741 }
1742
1743 ANA_MSG_DEBUG ("filling MBTS");
1744
1745 if (m_mbtsModules == 0)
1746 {
1747 ANA_MSG_INFO("processMBTS: no MBTS container?");
1748 return;
1749 }
1750
1751 for (const auto mbtsMod : *m_mbtsModules)
1752 {
1753 int iside = 1;
1754 if (mbtsMod->type() < 0) iside = 0.;
1755 float phibin = 0.;
1756 int iphibin = -1;
1757 if (mbtsMod->eta() > 3)
1758 {
1759 phibin = mbtsMod->phi() / (2 * TMath::Pi() / 8.) - 0.4;
1760 iphibin = static_cast<int>(phibin);
1761 if (iphibin < 0 || iphibin > 7)
1762 {
1763 ANA_MSG_INFO("processMBTS: MBTS has bad phi bin");
1764 continue;
1765 }
1766 t_mbts_in_e[iside][iphibin] = mbtsMod->e();
1767 t_mbts_in_t[iside][iphibin] = mbtsMod->time();
1768 }
1769 else
1770 {
1771 phibin = mbtsMod->phi() / (2 * TMath::Pi() / 4.) - 0.24;
1772 iphibin = static_cast<int>(phibin);
1773 if (iphibin < 0 || iphibin > 3)
1774 {
1775 ANA_MSG_INFO("processMBTS: MBTS has bad phi bin");
1776 continue;
1777 }
1778 t_mbts_out_e[iside][iphibin] = mbtsMod->e();
1779 t_mbts_out_t[iside][iphibin] = mbtsMod->time();
1780 }
1781 }
1782
1783 if (!m_trigT2MbtsBits) return;
1784
1785 for (const auto mbtsBits : *m_trigT2MbtsBits)
1786 {
1787 const std::vector<float>& energies = mbtsBits->triggerEnergies();
1788 const std::vector<float>& times = mbtsBits->triggerTimes();
1789 for (int imbts = 0; imbts < 32; imbts++)
1790 {
1791 int side = imbts / 16;
1792 int ring = (imbts - 16 * side) / 8;
1793 bool isInner = (ring == 0);
1794 int index = (imbts - 16 * side - ring * 8);
1795 if (!isInner)
1796 {
1797 if ((index % 2) != 0) continue; // skip odd out ring
1798 index /= 2;
1799 }
1800 int iside = (side == 0) ? 1 : 0; // code maps side 1 into first 16 bits and side -1 into second set
1801
1802 ANA_MSG_VERBOSE ("imbts=" << imbts << " isInner=" << isInner << " iside=" << iside << " index=" << index << " e=" << energies.at(imbts) << " t=" << times.at(imbts));
1803 if (isInner)
1804 {
1805 t_T2mbts_in_e[iside][index] = energies.at(imbts);
1806 t_T2mbts_in_t[iside][index] = times.at(imbts);
1807 if (TMath::Abs(times.at(imbts)) < 12.0 && energies.at(imbts) > 40 / 222.)
1808 {
1809 if (iside == 0) t_T2mbts_countCin++;
1810 if (iside == 1) t_T2mbts_countAin++;
1811 }
1812 }
1813 else
1814 {
1815 t_T2mbts_out_e[iside][index] = energies.at(imbts);
1816 t_T2mbts_out_t[iside][index] = times.at(imbts);
1817 }
1818 }
1819 }
1820
1821 return;
1822}
const xAOD::MBTSModuleContainer * m_mbtsModules
Definition ZdcNtuple.h:122
const xAOD::ForwardEventInfoContainer * m_mbtsInfo
Definition ZdcNtuple.h:121
const xAOD::TrigT2MbtsBitsContainer * m_trigT2MbtsBits
Definition ZdcNtuple.h:123
str index
Definition DeMoScan.py:362

◆ processMCEventCollection()

void ZdcNtuple::processMCEventCollection ( )

Definition at line 1109 of file ZdcNtuple.cxx.

1109 {
1110 /******************************************
1111 * Get the McEventCollection (input)
1112 ******************************************/
1113 SG::ReadHandle<McEventCollection> mcEventCollection (m_mcEventCollectionName, getContext());
1114 if (!mcEventCollection.isValid()){
1115 ANA_MSG_ERROR("Could not retrieve HepMC with key:" << m_mcEventCollectionName.key());
1116 return;
1117 }else{
1118 ANA_MSG_DEBUG("Retrieved HepMC with key: " << m_mcEventCollectionName.key());
1119 }
1120
1121 /******************************************
1122 * Clear and resize the output vectors
1123 ******************************************/
1124 t_ZdcTruthParticlePosx.clear();
1125 t_ZdcTruthParticlePosy.clear();
1126 t_ZdcTruthParticlePosz.clear();
1127 t_ZdcTruthParticleTime.clear();
1128 t_ZdcTruthParticlePx.clear();
1129 t_ZdcTruthParticlePy.clear();
1130 t_ZdcTruthParticlePz.clear();
1132 t_ZdcTruthParticlePid.clear();
1134
1135 /******************************************
1136 * Sort the particles into sides and add
1137 * them to the output vectors
1138 ******************************************/
1139 for (unsigned int cntr = 0; cntr < mcEventCollection->size(); ++cntr){
1140 const HepMC::GenEvent *genEvt = (*mcEventCollection)[cntr];
1141#ifdef HEPMC3
1142 for (const auto &vertex : genEvt->vertices()){
1143 for (const auto &particle : vertex->particles_in()){
1144#else
1145 for (const auto &vertex : genEvt->vertex_range()){
1146 for (auto ip = vertex->particles_in_const_begin();
1147 ip != vertex->particles_in_const_end();
1148 ++ip) {
1149 auto particle = *ip;
1150#endif
1151 t_ZdcTruthParticlePosx.push_back(vertex->position().x());
1152 t_ZdcTruthParticlePosy.push_back(vertex->position().y());
1153 t_ZdcTruthParticlePosz.push_back(vertex->position().z());
1154 t_ZdcTruthParticleTime.push_back(vertex->position().t());
1155 t_ZdcTruthParticlePx.push_back(particle->momentum().x());
1156 t_ZdcTruthParticlePy.push_back(particle->momentum().y());
1157 t_ZdcTruthParticlePz.push_back(particle->momentum().z());
1158 t_ZdcTruthParticleEnergy.push_back(particle->momentum().e());
1159 t_ZdcTruthParticlePid.push_back(particle->pdg_id());
1160 t_ZdcTruthParticleStatus.push_back(particle->status());
1161 } // end loop over particles
1162 }// end loop over vertices
1163 }// end loop over HepMC events
1164}
#define ANA_MSG_ERROR(xmsg)
Macro printing error messages.
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses

◆ processProtons()

void ZdcNtuple::processProtons ( )

Definition at line 1906 of file ZdcNtuple.cxx.

1906 {
1907
1908 proton_pt.clear();
1909 proton_eta.clear();
1910 proton_phi.clear();
1911 proton_e.clear();
1912 proton_side.clear();
1913 proton_eLoss.clear();
1914 proton_t.clear();
1915
1916 proton_track_stationID.clear();
1917 proton_track_nClusters.clear();
1918 proton_track_xLocal.clear();
1919 proton_track_yLocal.clear();
1920 proton_track_zLocal.clear();
1921 proton_track_xSlope.clear();
1922 proton_track_ySlope.clear();
1923
1924 proton_track_stationID.resize(m_afpProtons->size(), std::vector<int>(2));
1925 proton_track_nClusters.resize(m_afpProtons->size(), std::vector<int>(2));
1926 proton_track_xLocal.resize(m_afpProtons->size(), std::vector<float>(2));
1927 proton_track_yLocal.resize(m_afpProtons->size(), std::vector<float>(2));
1928 proton_track_zLocal.resize(m_afpProtons->size(), std::vector<float>(2));
1929 proton_track_xSlope.resize(m_afpProtons->size(), std::vector<float>(2));
1930 proton_track_ySlope.resize(m_afpProtons->size(), std::vector<float>(2));
1931
1932 nProtons = 0;
1933
1934 for(const auto * proton: *m_afpProtons){
1935
1936 proton_pt.push_back(proton->pt());
1937 proton_eta.push_back(proton->eta());
1938 proton_phi.push_back(proton->phi());
1939 proton_e.push_back(proton->e());
1940 proton_side.push_back(proton->side());
1941
1942 proton_eLoss.push_back((6800.-proton->e())/6800.);
1943 p_scat.SetPtEtaPhiE(proton->pt(), proton->eta(), proton->phi(), proton->e());
1944 (signbit(proton->eta())) ? p_beam.SetPxPyPzE(0.0, 0.0, -6800.0, 6800.0) : p_beam.SetPxPyPzE(0.0, 0.0, 6800.0,\
1945 6800.0);
1946
1947 proton_t.push_back( (p_beam - p_scat)*(p_beam - p_scat));
1948
1949 for(int i=0; i< int(proton->nTracks()); i++){
1950
1951 proton_track_stationID.at(nProtons).at(i) = proton->track(i)->stationID();
1952 proton_track_nClusters.at(nProtons).at(i) = proton->track(i)->nClusters();
1953 proton_track_xLocal.at(nProtons).at(i) = proton->track(i)->xLocal();
1954 proton_track_yLocal.at(nProtons).at(i) = proton->track(i)->yLocal();
1955 proton_track_zLocal.at(nProtons).at(i) = proton->track(i)->zLocal();
1956 proton_track_xSlope.at(nProtons).at(i) = proton->track(i)->xSlope();
1957 proton_track_ySlope.at(nProtons).at(i) = proton->track(i)->ySlope();
1958
1959 }
1960
1961 nProtons++;
1962 }
1963
1964 return;
1965}
TLorentzVector p_scat
Definition ZdcNtuple.h:427
TLorentzVector p_beam
Definition ZdcNtuple.h:426

◆ processTriggerDecision()

bool ZdcNtuple::processTriggerDecision ( )

Definition at line 1166 of file ZdcNtuple.cxx.

1167{
1168 ANA_MSG_DEBUG ("Processing trigger");
1169
1170 bool passTrigger = false;
1171
1172 t_trigger = 0;
1173 t_trigger_TBP = 0;
1174
1175 for (int i = 0; i < 16; i++)
1176 {
1177 t_tav[i] = 0;
1178 t_tbp[i] = 0;
1179 }
1180
1181 if (m_trigDecision)
1182 {
1183 for (int i = 0; i < 16; i++)
1184 {
1185 t_tbp[i] = m_trigDecision->tbp().at(i);
1186 t_tav[i] = m_trigDecision->tav().at(i);
1187 ANA_MSG_DEBUG( "TD: " << i << " tbp: " << std::hex << t_tbp[i] << "\t" << t_tav[i] );
1188 }
1189 t_bunchGroup = m_trigDecision->bgCode();
1190 }
1191
1192 if (enableTrigger)
1193 {
1194
1195 int ic = 0;
1196 for (auto cg : m_chainGroups)
1197 {
1198
1199 if (zdcCalib)
1200 {
1201 std::string name = cg->getListOfTriggers().at(0);
1202 const unsigned int triggerbits = m_trigDecisionTool->isPassedBits(name);
1203 // deferred functionality
1204 //bool tbp = triggerbits&TrigDefs::L1_isPassedBeforePrescale;
1205 //bool tap = triggerbits&TrigDefs::L1_isPassedAfterPrescale;
1206 bool tav = triggerbits&TrigDefs::L1_isPassedAfterVeto;
1207 ANA_MSG_DEBUG("TD: checking trigger name=" << name<< " tav=" << tav);
1208 if (tav)
1209 {
1210 t_trigger += (1 << ic);
1211 t_decisions[ic] = true;
1212 t_prescales[ic] = cg->getPrescale();
1213 passTrigger = true;
1214 }
1215 else
1216 {
1217 t_decisions[ic] = 0;
1218 t_prescales[ic] = 0;
1219 }
1220 }
1221 else
1222 {
1223 if (cg->isPassed())
1224 {
1225 t_trigger += (1 << ic);
1226 t_decisions[ic] = true;
1227 t_prescales[ic] = cg->getPrescale();
1228 passTrigger = true;
1229 }
1230 else
1231 {
1232 t_decisions[ic] = 0;
1233 t_prescales[ic] = 0;
1234 }
1235 }
1236
1237 if (cg->isPassedBits()&TrigDefs::EF_passedRaw)
1238 {
1239 t_trigger_TBP += (1 << ic);
1240 }
1241
1242
1243 ic++;
1244 }
1245
1246 int irc = 0;
1247 for (auto cg : m_rerunChainGroups)
1248 {
1249 t_rerunDecisions[irc] = false;
1250 if (cg->isPassedBits()&TrigDefs::EF_passedRaw)
1251 {
1252 t_rerunDecisions[irc] = true;
1253 }
1254 irc++;
1255 }
1256
1257 }
1258
1259 return passTrigger;
1260}
std::vector< const Trig::ChainGroup * > m_rerunChainGroups
Definition ZdcNtuple.h:140
std::vector< const Trig::ChainGroup * > m_chainGroups
Definition ZdcNtuple.h:139
bool t_rerunDecisions[200]
Definition ZdcNtuple.h:175
float t_prescales[200]
Definition ZdcNtuple.h:173
bool t_decisions[200]
Definition ZdcNtuple.h:174
int ic
Definition grepfile.py:33

◆ processTriggerTowers()

void ZdcNtuple::processTriggerTowers ( )

◆ processVInjInfo()

void ZdcNtuple::processVInjInfo ( )

Definition at line 1287 of file ZdcNtuple.cxx.

1287 {
1288 // Check for new run number
1289 //
1291 //
1292 // Get access to the injector pulse steps for this run
1293 //
1295 if (!m_injMapRunToken.isValid()) {
1296 ANA_MSG_ERROR("Unable to obtain injector pulse steps for run " << t_runNumber);
1297 }
1298 else {
1299 unsigned int startLB = m_zdcInjPulserAmpMap->getFirstLumiBlock(m_injMapRunToken);
1300 unsigned int nsteps = m_zdcInjPulserAmpMap->getNumSteps(m_injMapRunToken);
1301 ANA_MSG_DEBUG("Successfully obtained injector pulse steps for run " << t_runNumber
1302 << ", first LB = " << startLB << ", number of steps = " << nsteps);
1303 }
1304
1305 // update the last run number to be the current run number
1307 }
1308
1310}
unsigned int m_lastRunNumber
Definition ZdcNtuple.h:52
ZdcInjPulserAmpMap::Token m_injMapRunToken
Definition ZdcNtuple.h:53

◆ processZdcNtupleFromModules()

void ZdcNtuple::processZdcNtupleFromModules ( )

Definition at line 653 of file ZdcNtuple.cxx.

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

◆ setupTriggerHistos()

void ZdcNtuple::setupTriggerHistos ( )

Definition at line 1998 of file ZdcNtuple.cxx.

1999{
2000 if (!enableTrigger) return;
2001
2002 m_outputTree = tree( "zdcTree" );
2003 ANA_MSG_INFO("setupTriggerHistos(): Setting up trigger histos and ntuple = " << m_outputTree);
2004
2005 std::vector<std::string> triggers;
2006 std::vector<std::string> rerunTriggers;
2007 bool zdc_triggers = true;
2008
2009 // ZDC triggers
2010 if (zdc_triggers)
2011 {
2012 if (zdcCalib) // lists for calibration data
2013 {
2014 if (lhcf2022)
2015 {
2016 triggers.push_back("HLT_noalg_ZDCPEB_L1LHCF");
2017 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_OR");
2018 }
2019
2020 if (pbpb2023)
2021 {
2022 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_OR");
2023 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_OR_EMPTY");
2024 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_OR_UNPAIRED_NONISO");
2025 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_A_C");
2026 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_A_C_EMPTY");
2027 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_A_C_UNPAIRED_NONISO");
2028 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_A");
2029 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_A_EMPTY");
2030 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_A_UNPAIRED_NONISO");
2031 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_C");
2032 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_C_EMPTY");
2033 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_C_UNPAIRED_NONISO");
2034 }
2035 }
2036 else // lists for physics data
2037 {
2038 if (lhcf2022)
2039 {
2040 triggers.push_back("HLT_noalg_L1LHCF");
2041 }
2042 if (lhcf2022afp)
2043 {
2044 triggers.push_back("HLT_noalg_AFPPEB_L1AFP_A");
2045 triggers.push_back("HLT_noalg_AFPPEB_L1AFP_C");
2046 }
2047 if (lhcf2022zdc)
2048 {
2049 triggers.push_back("HLT_noalg_ZDCPEB_L1ZDC_OR");
2050 triggers.push_back("HLT_noalg_ZDCPEB_L1LHCF");
2051 triggers.push_back("HLT_noalg_L1ZDC_OR");
2052 triggers.push_back("HLT_noalg_L1ZDC_XOR_E2");
2053 triggers.push_back("HLT_noalg_L1ZDC_XOR_E1_E3");
2054 triggers.push_back("HLT_noalg_L1ZDC_A_AND_C");
2055 triggers.push_back("HLT_mb_sptrk_L1ZDC_OR");
2056 triggers.push_back("HLT_mb_sptrk_L1ZDC_XOR_E2");
2057 triggers.push_back("HLT_mb_sptrk_L1ZDC_XOR_E1_E3");
2058 triggers.push_back("HLT_mb_sptrk_L1ZDC_A_AND_C");
2059 triggers.push_back("HLT_mb_sp100_trk30_hmt_L1ZDC_XOR_E2");
2060 triggers.push_back("HLT_mb_sp100_trk30_hmt_L1ZDC_XOR_E1_E3");
2061 triggers.push_back("HLT_mb_sp100_trk30_hmt_L1ZDC_A_AND_C");
2062 }
2063 }
2064 }
2065
2066 //char name[50];
2067 ANA_MSG_INFO("Adding trigger branches!");
2068
2069 int ic = 0;
2070 for (auto &trig : triggers)
2071 {
2072 const Trig::ChainGroup* cg = m_trigDecisionTool->getChainGroup(trig);
2073 if (cg->getListOfTriggers().size())
2074 {
2075 ANA_MSG_INFO("setupTriggerHistos(): Trigger found = " << trig.c_str() << " bit " << ic);
2076 }
2077 else
2078 {
2079 ANA_MSG_INFO("setupTriggerHistos(): Trigger NOT found = " << trig.c_str() << " bit " << ic);
2080 }
2081 m_chainGroups.push_back(cg);
2082 // force all triggers to show up in tree
2083 TString bname(trig.c_str());
2084 m_outputTree->Branch(bname, &(t_decisions[ic]), bname + "/O");
2085 m_outputTree->Branch("ps_" + bname, &(t_prescales[ic]), "ps_" + bname + "/F");
2086 ic++;
2087 }
2088
2089 ANA_MSG_INFO( "triggers = " << triggers.size() << " chains = " << m_chainGroups.size() );
2090
2091 int irc = 0;
2092 ANA_MSG_INFO("Adding rerun trigger branches!");
2093 for (auto &trig : rerunTriggers)
2094 {
2095 const Trig::ChainGroup* cg = m_trigDecisionTool->getChainGroup(trig);
2096 m_rerunChainGroups.push_back(cg);
2097 if (cg->getListOfTriggers().size())
2098 {
2099 ANA_MSG_INFO("setupTriggerHistos(): Rerun trigger found = " << trig.c_str() << " bit " << irc);
2100 }
2101 else
2102 {
2103 ANA_MSG_INFO("setupTriggerHistos(): Rerun trigger NOT found = " << trig.c_str() << " bit " << irc);
2104 }
2105 // force all rerun triggers to show up in tree
2106 TString bname(trig.c_str());
2107 m_outputTree->Branch(bname, &(t_rerunDecisions[irc]), bname + "/O");
2108 irc++;
2109 }
2110
2111 // trigger matching flags for electrons and muons
2112
2113 m_setupTrigHist = true;
2114
2115 ANA_MSG_INFO("setupTriggerHistos(): Finished setting up trigger");
2116
2117}
std::vector< std::string > getListOfTriggers() const

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

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
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
Override sysInitialize.
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< 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 1531 of file ZdcNtuple.cxx.

1532{
1533
1534 if (!track) return -1;
1535
1536 bool pass_looseprimary = false;
1537 if (m_selTool->accept(*track,vertex))
1538 {
1539 pass_looseprimary = true;
1540 }
1541
1542 int quality = 0;
1543 if (pass_looseprimary) quality += 1;
1544
1545 return quality;
1546
1547}

◆ 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 378 of file AthHistogramming.cxx.

379{
380 // Build a 32 bit hash out of the name
381 const hash_t treeHash = this->hash(treeName);
382
383 // See if this entry exists in the map
384 TreeMap_t::const_iterator it = m_treeMap.find( treeHash );
385 if ( it == m_treeMap.end() ) // It doesn't exist!
386 { // Let's see into the THistSvc if somebody else has registered the TTree...
387
388 // Need to copy the strings as we will massage them from here on
389 std::string treeNameCopy = treeName;
390 std::string tDirCopy = tDir;
391 std::string streamCopy = stream;
392
393 // Massage the final string to book things
394 std::string bookingString("");
395 this->buildBookingString( bookingString, treeNameCopy, tDirCopy, streamCopy );
396
397 TTree* treePointer(NULL);
398 if ( !((histSvc()->getTree(bookingString, treePointer)).isSuccess()) )
399 {
400 m_msg << MSG::WARNING
401 << "Problem retrieving the TTree with name " << treeNameCopy
402 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
403 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
404 return NULL;
405 }
406 // If we get to here, we actually found the TTree in the THistSvc.
407 // So let's add it to the local cache map and return its pointer
408 m_treeMap.insert( m_treeMap.end(), std::pair< const hash_t, TTree* >( treeHash, treePointer ) );
409 return treePointer;
410 }
411
412 // Return the pointer to the TTree that we got from the local cache map
413 return it->second;
414}

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< 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 }
std::vector< SG::VarHandleKeyArray * > m_vhka

◆ writeTrack()

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

Definition at line 1551 of file ZdcNtuple.cxx.

1552{
1553 t_trk_pt.push_back(track->pt());
1554 t_trk_eta.push_back(track->eta());
1555 t_trk_phi.push_back(track->phi());
1556 t_trk_e.push_back(track->e());
1557 t_trk_index.push_back(trk_index);
1558 t_trk_theta.push_back(track->theta());
1559 t_trk_charge.push_back(track->charge());
1560 t_trk_d0.push_back(track->d0());
1561 t_trk_z0.push_back(track->z0());
1562 t_trk_vz.push_back(track->vz());
1563
1564 float vtxz = -999.;
1565 t_trk_vtxz.push_back(vtxz);
1566
1567 static const SG::ConstAccessor<uint8_t> numberOfInnermostPixelLayerHitsAcc("numberOfInnermostPixelLayerHits");
1568 static const SG::ConstAccessor<uint8_t> expectInnermostPixelLayerHitAcc("expectInnermostPixelLayerHit");
1569 static const SG::ConstAccessor<uint8_t> numberOfNextToInnermostPixelLayerHitsAcc("numberOfNextToInnermostPixelLayerHits");
1570 static const SG::ConstAccessor<uint8_t> expectNextToInnermostPixelLayerHitAcc("expectNextToInnermostPixelLayerHit");
1571 static const SG::ConstAccessor<uint8_t> numberOfSCTHitsAcc("numberOfSCTHits");
1572 static const SG::ConstAccessor<uint8_t> numberOfPixelHitsAcc("numberOfPixelHits");
1573 static const SG::ConstAccessor<uint8_t> numberOfSCTDeadSensorsAcc("numberOfSCTDeadSensors");
1574 static const SG::ConstAccessor<uint8_t> numberOfPixelDeadSensorsAcc("numberOfPixelDeadSensors");
1575 static const SG::ConstAccessor<uint8_t> numberOfSCTHolesAcc("numberOfSCTHoles");
1576 static const SG::ConstAccessor<uint8_t> numberOfPixelHolesAcc("numberOfPixelHoles");
1577 static const SG::ConstAccessor<uint8_t> numberOfTRTHitsAcc("numberOfTRTHits");
1578 static const SG::ConstAccessor<uint8_t> numberOfTRTOutliersAcc("numberOfTRTOutliers");
1579
1580 t_trk_quality.push_back(trackQuality(track, vertex));
1581 t_trk_inPixHits.push_back(numberOfInnermostPixelLayerHitsAcc(*track));
1582 t_trk_exPixHits.push_back(expectInnermostPixelLayerHitAcc(*track));
1583 t_trk_ninPixHits.push_back(numberOfNextToInnermostPixelLayerHitsAcc(*track));
1584 t_trk_nexPixHits.push_back(expectNextToInnermostPixelLayerHitAcc(*track));
1585 t_trk_nSctHits.push_back(numberOfSCTHitsAcc(*track));
1586 t_trk_nPixHits.push_back(numberOfPixelHitsAcc(*track));
1587 t_trk_nSctDead.push_back(numberOfSCTDeadSensorsAcc(*track));
1588 t_trk_nPixDead.push_back(numberOfPixelDeadSensorsAcc(*track));
1589 t_trk_nSctHoles.push_back(numberOfSCTHolesAcc(*track));
1590 t_trk_nPixHoles.push_back(numberOfPixelHolesAcc(*track));
1591 t_trk_nTrtHits.push_back(numberOfTRTHitsAcc(*track));
1592 t_trk_nTrtOutliers.push_back(numberOfTRTOutliersAcc(*track));
1593
1594 float pixeldEdx = 0;
1595 track->summaryValue(pixeldEdx, xAOD::SummaryType::pixeldEdx);
1596 t_trk_pixeldEdx.push_back(pixeldEdx);
1597}
@ pixeldEdx
the dE/dx estimate, calculated using the pixel clusters [?

Member Data Documentation

◆ auxSuffix

std::string ZdcNtuple::auxSuffix

Definition at line 83 of file ZdcNtuple.h.

◆ doZdcCalib

bool ZdcNtuple::doZdcCalib

Definition at line 94 of file ZdcNtuple.h.

◆ enableCalo

bool ZdcNtuple::enableCalo

Definition at line 64 of file ZdcNtuple.h.

◆ enableCentroid

bool ZdcNtuple::enableCentroid

Definition at line 92 of file ZdcNtuple.h.

◆ enableClusters

bool ZdcNtuple::enableClusters

Definition at line 65 of file ZdcNtuple.h.

◆ enableElectrons

bool ZdcNtuple::enableElectrons

Definition at line 68 of file ZdcNtuple.h.

◆ enableID

bool ZdcNtuple::enableID

Definition at line 63 of file ZdcNtuple.h.

◆ enableJets

bool ZdcNtuple::enableJets

Definition at line 72 of file ZdcNtuple.h.

◆ enableMuons

bool ZdcNtuple::enableMuons

Definition at line 67 of file ZdcNtuple.h.

◆ enableOutputSamples

bool ZdcNtuple::enableOutputSamples

Definition at line 60 of file ZdcNtuple.h.

◆ enableOutputTree

bool ZdcNtuple::enableOutputTree

Definition at line 59 of file ZdcNtuple.h.

◆ enablePhotons

bool ZdcNtuple::enablePhotons

Definition at line 69 of file ZdcNtuple.h.

◆ enableRPD

bool ZdcNtuple::enableRPD

Definition at line 90 of file ZdcNtuple.h.

◆ enableRPDAmp

bool ZdcNtuple::enableRPDAmp

Definition at line 91 of file ZdcNtuple.h.

◆ enableTracks

bool ZdcNtuple::enableTracks

Definition at line 66 of file ZdcNtuple.h.

◆ enableTrigger

bool ZdcNtuple::enableTrigger

Definition at line 61 of file ZdcNtuple.h.

◆ enableTriggerJets

bool ZdcNtuple::enableTriggerJets

Definition at line 73 of file ZdcNtuple.h.

◆ enableTruth

bool ZdcNtuple::enableTruth

Definition at line 71 of file ZdcNtuple.h.

◆ enableTT

bool ZdcNtuple::enableTT

Definition at line 70 of file ZdcNtuple.h.

◆ enableZDC

bool ZdcNtuple::enableZDC

Definition at line 89 of file ZdcNtuple.h.

◆ flipDelay

bool ZdcNtuple::flipDelay

Definition at line 81 of file ZdcNtuple.h.

◆ grlFilename

std::string ZdcNtuple::grlFilename

Definition at line 58 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 147 of file ZdcNtuple.h.

◆ h_zdcTriggersTBP

TH1* ZdcNtuple::h_zdcTriggersTBP

Definition at line 148 of file ZdcNtuple.h.

◆ lhcf2022

bool ZdcNtuple::lhcf2022

Definition at line 85 of file ZdcNtuple.h.

◆ lhcf2022afp

bool ZdcNtuple::lhcf2022afp

Definition at line 87 of file ZdcNtuple.h.

◆ lhcf2022zdc

bool ZdcNtuple::lhcf2022zdc

Definition at line 86 of file ZdcNtuple.h.

◆ m_afpProtons

const xAOD::AFPProtonContainer* ZdcNtuple::m_afpProtons

Definition at line 130 of file ZdcNtuple.h.

◆ m_caloClusters

const xAOD::CaloClusterContainer* ZdcNtuple::m_caloClusters

Definition at line 125 of file ZdcNtuple.h.

◆ m_caloSums

const xAOD::HIEventShapeContainer* ZdcNtuple::m_caloSums

Definition at line 119 of file ZdcNtuple.h.

◆ m_chainGroups

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

Definition at line 139 of file ZdcNtuple.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< 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 208 of file AthHistogramming.h.

◆ m_eventCounter

int ZdcNtuple::m_eventCounter

Definition at line 135 of file ZdcNtuple.h.

◆ m_eventInfo

const xAOD::EventInfo* ZdcNtuple::m_eventInfo

Definition at line 115 of file ZdcNtuple.h.

◆ m_eventShapes

const xAOD::HIEventShapeContainer* ZdcNtuple::m_eventShapes

Definition at line 120 of file ZdcNtuple.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_gapPtMin

float ZdcNtuple::m_gapPtMin

Definition at line 328 of file ZdcNtuple.h.

◆ m_gapThresholds

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

331 {4.7426,5.11018,5.07498,5.0969,5.10695,5.04098,5.07106,4.98087,5.11647,5.08988,5.16267,
332 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,
333 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,
334 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,
335 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,
336 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,
337 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,
338 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 222 of file AthHistogramming.h.

◆ m_grl

Definition at line 104 of file ZdcNtuple.h.

◆ m_hasBeginInputFile

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

the value of hasBeginInputFile

Definition at line 590 of file AnaAlgorithm.h.

590{false};

◆ m_hasEndInputFile

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

the value of hasEndInputFile

Definition at line 594 of file AnaAlgorithm.h.

594{false};

◆ m_hasFileExecute

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

the value of hasFileExecute

Definition at line 586 of file AnaAlgorithm.h.

586{false};

◆ m_histMap

HistMap_t AthHistogramming::m_histMap
privateinherited

The map of histogram names to their pointers.

Definition at line 201 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 53 of file ZdcNtuple.h.

53{};

◆ m_inputMetaStore

MetaStore_t EL::AnaAlgorithm::m_inputMetaStore
privateinherited

Object accessing the input metadata store.

Definition at line 551 of file AnaAlgorithm.h.

◆ m_isMC

bool ZdcNtuple::m_isMC

Definition at line 136 of file ZdcNtuple.h.

◆ m_lastRunNumber

unsigned int ZdcNtuple::m_lastRunNumber {0}
private

Definition at line 52 of file ZdcNtuple.h.

52{0};

◆ m_lvl1EnergySumRoI

const xAOD::EnergySumRoI* ZdcNtuple::m_lvl1EnergySumRoI

Definition at line 127 of file ZdcNtuple.h.

◆ m_mbtsInfo

const xAOD::ForwardEventInfoContainer* ZdcNtuple::m_mbtsInfo

Definition at line 121 of file ZdcNtuple.h.

◆ m_mbtsModules

const xAOD::MBTSModuleContainer* ZdcNtuple::m_mbtsModules

Definition at line 122 of file ZdcNtuple.h.

◆ m_mcEventCollectionName

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

Definition at line 112 of file ZdcNtuple.h.

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

◆ m_msg

MsgStream AthHistogramming::m_msg
privateinherited

Cached Message Stream.

Definition at line 248 of file AthHistogramming.h.

◆ m_name

std::string AthHistogramming::m_name
privateinherited

Instance name.

Definition at line 245 of file AthHistogramming.h.

◆ m_nTriggers

int ZdcNtuple::m_nTriggers

Definition at line 134 of file ZdcNtuple.h.

◆ m_outputMetaStore

MetaStore_t EL::AnaAlgorithm::m_outputMetaStore
privateinherited

Object accessing the output metadata store.

Definition at line 555 of file AnaAlgorithm.h.

◆ m_outputTree

TTree* ZdcNtuple::m_outputTree

Definition at line 150 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 124 of file ZdcNtuple.h.

◆ m_rerunChainGroups

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

Definition at line 140 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 138 of file ZdcNtuple.h.

◆ m_selTool

ToolHandle< InDet::IInDetTrackSelectionTool > ZdcNtuple::m_selTool

Definition at line 106 of file ZdcNtuple.h.

◆ m_setupTrigHist

bool ZdcNtuple::m_setupTrigHist

Definition at line 137 of file ZdcNtuple.h.

◆ m_streamName

std::string AthHistogramming::m_streamName
privateinherited

Name of the ROOT output stream (file)

Definition at line 226 of file AthHistogramming.h.

◆ m_trackParticles

const xAOD::TrackParticleContainer* ZdcNtuple::m_trackParticles

Definition at line 126 of file ZdcNtuple.h.

◆ m_treeMap

TreeMap_t AthHistogramming::m_treeMap
privateinherited

The map of TTree names to their pointers.

Definition at line 215 of file AthHistogramming.h.

◆ m_trigDecision

const xAOD::TrigDecision* ZdcNtuple::m_trigDecision

Definition at line 118 of file ZdcNtuple.h.

◆ m_trigDecisionTool

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

Definition at line 102 of file ZdcNtuple.h.

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

◆ m_trigT2MbtsBits

const xAOD::TrigT2MbtsBitsContainer* ZdcNtuple::m_trigT2MbtsBits

Definition at line 123 of file ZdcNtuple.h.

◆ m_truthParticleContainer

const xAOD::TruthParticleContainer* ZdcNtuple::m_truthParticleContainer

Definition at line 128 of file ZdcNtuple.h.

◆ m_TTcontainer

const xAOD::TriggerTowerContainer* ZdcNtuple::m_TTcontainer

Definition at line 129 of file ZdcNtuple.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ m_zdcAnalysisTool

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

Definition at line 105 of file ZdcNtuple.h.

◆ m_zdcInjPulserAmpMap

std::shared_ptr<ZdcInjPulserAmpMap> ZdcNtuple::m_zdcInjPulserAmpMap

Definition at line 132 of file ZdcNtuple.h.

◆ m_zdcModuleContainerName

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

Definition at line 108 of file ZdcNtuple.h.

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

◆ m_zdcSumContainerName

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

Definition at line 110 of file ZdcNtuple.h.

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

◆ nProtons

int ZdcNtuple::nProtons

Definition at line 410 of file ZdcNtuple.h.

◆ nsamplesZdc

size_t ZdcNtuple::nsamplesZdc

Definition at line 84 of file ZdcNtuple.h.

◆ outputName

std::string ZdcNtuple::outputName

Definition at line 97 of file ZdcNtuple.h.

◆ outputTreeScaledown

int ZdcNtuple::outputTreeScaledown

Definition at line 98 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 88 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 82 of file ZdcNtuple.h.

◆ slimmed

bool ZdcNtuple::slimmed

Definition at line 56 of file ZdcNtuple.h.

◆ t_actIntPerCrossing

float ZdcNtuple::t_actIntPerCrossing

Definition at line 162 of file ZdcNtuple.h.

◆ t_avgIntPerCrossing

float ZdcNtuple::t_avgIntPerCrossing

Definition at line 161 of file ZdcNtuple.h.

◆ t_bcid

uint32_t ZdcNtuple::t_bcid

Definition at line 154 of file ZdcNtuple.h.

◆ t_bunchGroup

uint8_t ZdcNtuple::t_bunchGroup

Definition at line 156 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 174 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 152 of file ZdcNtuple.h.

◆ t_extendedLevel1ID

uint32_t ZdcNtuple::t_extendedLevel1ID

Definition at line 158 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 142 of file ZdcNtuple.h.

◆ t_L1ET24

float ZdcNtuple::t_L1ET24

Definition at line 143 of file ZdcNtuple.h.

◆ t_lumiBlock

uint32_t ZdcNtuple::t_lumiBlock

Definition at line 153 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 177 of file ZdcNtuple.h.

◆ t_mbts_in_t

float ZdcNtuple::t_mbts_in_t[2][8]

Definition at line 179 of file ZdcNtuple.h.

◆ t_mbts_out_e

float ZdcNtuple::t_mbts_out_e[2][4]

Definition at line 178 of file ZdcNtuple.h.

◆ t_mbts_out_t

float ZdcNtuple::t_mbts_out_t[2][4]

Definition at line 180 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 157 of file ZdcNtuple.h.

◆ t_prescales

float ZdcNtuple::t_prescales[200]

Definition at line 173 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 175 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 167 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 151 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 182 of file ZdcNtuple.h.

◆ t_T2mbts_in_t

float ZdcNtuple::t_T2mbts_in_t[2][8]

Definition at line 184 of file ZdcNtuple.h.

◆ t_T2mbts_out_e

float ZdcNtuple::t_T2mbts_out_e[2][4]

Definition at line 183 of file ZdcNtuple.h.

◆ t_T2mbts_out_t

float ZdcNtuple::t_T2mbts_out_t[2][4]

Definition at line 185 of file ZdcNtuple.h.

◆ t_tav

uint32_t ZdcNtuple::t_tav[16]

Definition at line 187 of file ZdcNtuple.h.

◆ t_tbp

uint32_t ZdcNtuple::t_tbp[16]

Definition at line 188 of file ZdcNtuple.h.

◆ t_timeStamp

uint32_t ZdcNtuple::t_timeStamp

Definition at line 159 of file ZdcNtuple.h.

◆ t_timeStampNSOffset

uint32_t ZdcNtuple::t_timeStampNSOffset

Definition at line 160 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 169 of file ZdcNtuple.h.

◆ t_trigger_TBP

uint32_t ZdcNtuple::t_trigger_TBP

Definition at line 170 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 155 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 190 of file ZdcNtuple.h.

◆ t_ZdcAmpErr

float ZdcNtuple::t_ZdcAmpErr[2]

Definition at line 191 of file ZdcNtuple.h.

◆ t_zdcDecodingError

uint8_t ZdcNtuple::t_zdcDecodingError

Definition at line 166 of file ZdcNtuple.h.

◆ t_ZdcEnergy

float ZdcNtuple::t_ZdcEnergy[2]

Definition at line 192 of file ZdcNtuple.h.

◆ t_ZdcEnergyErr

float ZdcNtuple::t_ZdcEnergyErr[2]

Definition at line 193 of file ZdcNtuple.h.

◆ t_zdcEventInfoError

uint8_t ZdcNtuple::t_zdcEventInfoError

Definition at line 163 of file ZdcNtuple.h.

◆ t_zdcEventInfoErrorWord

uint32_t ZdcNtuple::t_zdcEventInfoErrorWord

Definition at line 164 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 200 of file ZdcNtuple.h.

◆ t_ZdcLucrodTriggerSideAmpLG

unsigned short ZdcNtuple::t_ZdcLucrodTriggerSideAmpLG[2]

Definition at line 201 of file ZdcNtuple.h.

◆ t_ZdcModuleAmp

float ZdcNtuple::t_ZdcModuleAmp[2][4]

Definition at line 218 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_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 222 of file ZdcNtuple.h.

◆ t_ZdcModuleChisqLGRefit

float ZdcNtuple::t_ZdcModuleChisqLGRefit[2][4]

Definition at line 242 of file ZdcNtuple.h.

◆ t_ZdcModuleFitAmp

float ZdcNtuple::t_ZdcModuleFitAmp[2][4]

Definition at line 220 of file ZdcNtuple.h.

◆ t_ZdcModuleFitT0

float ZdcNtuple::t_ZdcModuleFitT0[2][4]

Definition at line 221 of file ZdcNtuple.h.

◆ t_ZdcModuleMask

unsigned int ZdcNtuple::t_ZdcModuleMask

Definition at line 198 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 219 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 194 of file ZdcNtuple.h.

◆ t_ZdcNLEnergyErr

float ZdcNtuple::t_ZdcNLEnergyErr[2]

Definition at line 195 of file ZdcNtuple.h.

◆ t_ZdcStatus

short ZdcNtuple::t_ZdcStatus[2]

Definition at line 197 of file ZdcNtuple.h.

◆ t_ZdcTime

float ZdcNtuple::t_ZdcTime[2]

Definition at line 196 of file ZdcNtuple.h.

◆ t_ZdcTrigEff

float ZdcNtuple::t_ZdcTrigEff[2]

Definition at line 199 of file ZdcNtuple.h.

◆ t_ZdcTruthEM

float ZdcNtuple::t_ZdcTruthEM[2]

Definition at line 204 of file ZdcNtuple.h.

◆ t_ZdcTruthEscaped

float ZdcNtuple::t_ZdcTruthEscaped[2]

Definition at line 206 of file ZdcNtuple.h.

◆ t_ZdcTruthInvis

float ZdcNtuple::t_ZdcTruthInvis[2]

Definition at line 203 of file ZdcNtuple.h.

◆ t_ZdcTruthNonEM

float ZdcNtuple::t_ZdcTruthNonEM[2]

Definition at line 205 of file ZdcNtuple.h.

◆ t_ZdcTruthParticleEnergy

std::vector< float > ZdcNtuple::t_ZdcTruthParticleEnergy

Definition at line 214 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePid

std::vector< int > ZdcNtuple::t_ZdcTruthParticlePid

Definition at line 215 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePosx

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePosx

Definition at line 207 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePosy

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePosy

Definition at line 208 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePosz

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePosz

Definition at line 209 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePx

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePx

Definition at line 211 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePy

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePy

Definition at line 212 of file ZdcNtuple.h.

◆ t_ZdcTruthParticlePz

std::vector< float > ZdcNtuple::t_ZdcTruthParticlePz

Definition at line 213 of file ZdcNtuple.h.

◆ t_ZdcTruthParticleStatus

std::vector< int > ZdcNtuple::t_ZdcTruthParticleStatus

Definition at line 216 of file ZdcNtuple.h.

◆ t_ZdcTruthParticleTime

std::vector< float > ZdcNtuple::t_ZdcTruthParticleTime

Definition at line 210 of file ZdcNtuple.h.

◆ t_ZdcTruthTotal

float ZdcNtuple::t_ZdcTruthTotal[2]

Definition at line 202 of file ZdcNtuple.h.

◆ trackLimit

size_t ZdcNtuple::trackLimit

Definition at line 79 of file ZdcNtuple.h.

◆ trackLimitReject

bool ZdcNtuple::trackLimitReject

Definition at line 80 of file ZdcNtuple.h.

◆ useGRL

bool ZdcNtuple::useGRL

Definition at line 57 of file ZdcNtuple.h.

◆ writeOnlyTriggers

bool ZdcNtuple::writeOnlyTriggers

Definition at line 62 of file ZdcNtuple.h.

◆ zdcCalib

bool ZdcNtuple::zdcCalib

Definition at line 74 of file ZdcNtuple.h.

◆ zdcConfig

std::string ZdcNtuple::zdcConfig

Definition at line 95 of file ZdcNtuple.h.

◆ zdcInj

bool ZdcNtuple::zdcInj

Definition at line 76 of file ZdcNtuple.h.

◆ zdcLaser

bool ZdcNtuple::zdcLaser

Definition at line 75 of file ZdcNtuple.h.

◆ zdcLowGainMode

unsigned int ZdcNtuple::zdcLowGainMode

Definition at line 78 of file ZdcNtuple.h.

◆ zdcOnly

bool ZdcNtuple::zdcOnly

Definition at line 77 of file ZdcNtuple.h.


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