 |
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef MSVTXVALIDATIONALG_H
6 #define MSVTXVALIDATIONALG_H
12 #include <TLorentzVector.h>
20 #include "GaudiKernel/ToolHandle.h"
21 #include "GaudiKernel/ITHistSvc.h"
22 #include "GaudiKernel/SystemOfUnits.h"
44 inline constexpr
int Int = -99999;
45 inline constexpr
float Float = -99999.;
76 PublicToolHandle<Trig::TrigDecisionTool>
m_trigDec{
this,
"TrigDecisionTool",
"",
"TrigDecisionTool (optional)"};
77 PublicToolHandle<Trig::R3MatchingTool>
m_matchingTool{
this,
"R3MatchingTool",
"",
"R3MatchingTool (optional)"};
86 Gaudi::Property<float>
m_jetTriggerMatchingDR{
this,
"jetTriggerMatching", 0.1,
"max dR distance for jet trigger matching"};
90 Gaudi::Property<bool>
m_isMC{
this,
"isMC",
true,
"is the input data simulated (MC) or real data?"};
91 Gaudi::Property<bool>
m_readTriggers{
this,
"readTriggers",
false,
"should trigger information be read?"};
93 Gaudi::Property<bool>
m_dumpTruthParticles{
this,
"dumpTruthParticles",
false,
"dump truth particles to the tree"};
94 Gaudi::Property<bool>
m_dumpTruthVertices{
this,
"dumpTruthVertices",
false,
"dump truth vertices to the tree"};
95 Gaudi::Property<bool>
m_fillMET{
this,
"fillMET",
false,
"add met information to the tree"};
96 Gaudi::Property<bool>
m_fillJets{
this,
"fillJets",
false,
"add jet information to the tree"};
97 Gaudi::Property<bool>
m_computeActiveVertices{
this,
"computeActiveVertices",
false,
"extracts active vertices in the vicinity of a jet by looping through truth particles. Requires isMC."};
98 Gaudi::Property<bool>
m_computeVertexIso{
this,
"computeVertexIso",
false,
"add vertex isolation variables to the tree"};
100 Gaudi::Property<int>
m_pdgId_portal{
this,
"pdgId_portal", 25,
"Truth portal PDGId"};
101 Gaudi::Property<int>
m_pdgId_llp{
this,
"pdgId_llp", 35,
"Truth LLP PDGId"};
102 Gaudi::Property<bool>
m_llp_genStableChildren{
this,
"llp_genStableChildren",
false,
"Restricts the TruthParticle-LLP linking to generator stable children rather than detector stable children"};
105 Gaudi::Property<float>
m_softTrackIso_R{
this,
"softTrackIso_R", 0.2,
"cone radius around vertex to sum up track pT"};
107 Gaudi::Property<float>
m_jetIso_LogRatio{
this,
"jetIso_LogRatio", 0.5,
"max log ECal/HCal ratio for jet to be considered for isolation"};
123 template <
typename T>
139 std::unordered_set<int>
m_hadronicProcessEnum = {111, 116, 121, 131, 132, 141, 151, 152, 161, 165, 166, 167, 210, 310};
141 std::unordered_set<int>
m_emProcessEnum = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,30,31,40,49};
220 std::shared_ptr<MuonPRDTest::SegmentVariables>
m_muonSeg{
nullptr};
265 #endif // MSVTXVALIDATIONALG_H
Property holding a SG store/key/clid from which a ReadHandle is made.
StatusCode fillActiveVertices(const EventContext &ctx, const xAOD::Jet *jet)
std::vector< std::string > names
MuonVal::ThreeVectorBranch m_llpVtx_pos
MuonVal::MatrixBranch< int > & m_truthVtx_truthParticle_link
MuonVal::VectorBranch< int > & m_msVtx_nTGC
std::unique_ptr< std::vector< int > > m_truthParticle_llpVtx_link_tmp
MuonVal::VectorBranch< float > & m_trklet_q
Gaudi::Property< float > m_softTrackIso_R
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_MuonSegKey
AthHistogramAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
Gaudi::Property< bool > m_readTriggers
MuonVal::VectorBranch< int > & m_truthParticle_truthVtx_link
MuonVal::VectorBranch< float > & m_msVtx_chi2
MuonVal::MuonTesterTree m_tree
std::unique_ptr< std::vector< int > > m_truthParticle_actVtx_link_tmp
std::shared_ptr< MuonPRDTest::SegmentVariables > m_muonSeg
ParticleBranchPtr_t m_portal
StatusCode fillTruthParticle(const EventContext &ctx)
MuonVal::VectorBranch< float > & m_actVtx_jet_dPhi
StatusCode fillTruth(const EventContext &ctx)
bool getTriggerMatchingDecision(const T *object, TriggerInfo &triggerInfo, float dRmatching)
std::unique_ptr< std::vector< int > > m_truthParticle_truthVtx_link_tmp
TH1F * m_h_subleadLLPctau
MuonVal::VectorBranch< float > & m_actVtx_pT
Gaudi::Property< bool > m_computeVertexIso
MuonVal::ScalarBranch< int > & m_portal_N
virtual StatusCode finalize() override final
MuonVal::VectorBranch< int > & m_truthVtx_NchildrenCharged
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackParticleKey
MuonVal::VectorBranch< int > & m_msVtx_nTGC_M
MuonVal::VectorBranch< int > & m_msVtx_Ntrklet
MuonVal::ScalarBranch< float > & m_met_y
MuonVal::VectorBranch< int > & m_msVtx_nRPC_M
MuonVal::ScalarBranch< float > & m_met_phi
MuonVal::VectorBranch< int > & m_msVtx_nRPC_E
MuonVal::VectorBranch< float > & m_actVtx_jet_dEta
MuonVal::VectorBranch< float > & m_llpVtx_Lxy
std::shared_ptr< MuonVal::IParticleFourMomBranch > ParticleBranchPtr_t
MuonVal::MatrixBranch< int > & m_jet_actVtx_link
StatusCode fillMSVtx(const EventContext &ctx)
SG::ReadHandleKey< xAOD::JetContainer > m_JetKey
MuonVal::ScalarBranch< int > & m_llpVtx_N
ParticleBranchPtr_t m_truthParticle
MuonVal::VectorBranch< int > & m_msVtx_nMDT_M
SG::ReadHandleKey< xAOD::VertexContainer > m_MSVtxKey
MuonVal::VectorBranch< int > & m_truthVtx_status
MuonVal::VectorBranch< int > & m_msVtx_nTGC_inwards
MuonVal::VectorBranch< float > & m_actVtx_mass
Gaudi::Property< float > m_trackIso_pT
ParticleBranchPtr_t m_jet
MuonVal::VectorBranch< int > & m_msVtx_nTGC_E
StatusCode fillJet(const EventContext &ctx)
MuonVal::ScalarBranch< float > & m_met_x
MuonVal::VectorBranch< float > & m_trklet_z0
MuonVal::VectorBranch< float > & m_msVtx_isoJets_mindR
MuonVal::ScalarBranch< float > & m_met
MuonVal::MatrixBranch< int > & m_llpVtx_truthParticle_link
MuonVal::VectorBranch< int > & m_truthVtx_Nchildren
MuonVal::VectorBranch< int > & m_msVtx_nRPC_I
MuonVal::VectorBranch< int > & m_llp_Nchildren
MuonVal::VectorBranch< int > & m_truthParticle_llpVtx_link
MuonVal::VectorBranch< float > & m_actVtx_energy
Gaudi::Property< bool > m_fillMET
MuonVal::VectorBranch< int > & m_msVtx_nDoF
MuonVal::VectorBranch< int > & m_msVtx_nRPC
MuonVal::VectorBranch< int > & m_jet_triggers
MuonVal::ThreeVectorBranch m_trklet_pos
MuonVal::VectorBranch< int > & m_msVtx_nMDT_inwards
SG::ReadHandleKey< xAOD::TruthVertexContainer > m_TruthVertexKey
MuonVal::VectorBranch< float > & m_trklet_theta
Gaudi::Property< int > m_pdgId_portal
ParticleBranchPtr_t m_llp
Gaudi::Property< float > m_jetIso_pT
MuonVal::VectorBranch< int > & m_actVtx_jet_link
MuonVal::ScalarBranch< int > & m_msVtx_N
Gaudi::Property< bool > m_llp_genStableChildren
MuonVal::VectorBranch< float > & m_msVtx_isoTracks_pTsum
virtual StatusCode execute() override final
std::unordered_set< int > m_emProcessEnum
::StatusCode StatusCode
StatusCode definition for legacy code.
virtual StatusCode initialize() override final
MuonVal::VectorBranch< int > & m_truthVtx_NchildrenDirect
MuonVal::VectorBranch< int > & m_msVtx_nMDT_O
MuonVal::VectorBranch< int > & m_msVtx_nTGC_I
MuonVal::ScalarBranch< float > & m_sumEt
MuonVal::VectorBranch< int > & m_llp_NchildrenCharged
StatusCode fillMSVtxIsolation(const xAOD::Vertex *msVtx, const xAOD::TrackParticleContainer *tracks, const xAOD::JetContainer *jets)
StatusCode fillTruthVertex(const EventContext &ctx)
Gaudi::Property< bool > m_computeActiveVertices
MuonVal::VectorBranch< int > & m_msVtx_nMDT
PublicToolHandle< Trig::R3MatchingTool > m_matchingTool
MuonVal::ScalarBranch< int > & m_llp_N
MuonVal::VectorBranch< float > & m_trklet_d0
VectorBranch< T > & newVector(const std::string &name)
Creates new branches and returns their reference.
MuonVal::ThreeVectorBranch m_actVtx_pos
MuonVal::ScalarBranch< int > & m_jet_N
MuonVal::VectorBranch< int > & m_actVtx_NChildren
std::string triggerString
MuonVal::VectorBranch< float > & m_msVtx_isoTracks_mindR
MuonVal::VectorBranch< int > & m_msVtx_nMDT_E
Gaudi::Property< float > m_jetIso_LogRatio
MuonVal::VectorBranch< float > & m_trklet_phi
This class contains trigger related information.
std::unordered_set< int > m_hadronicProcessEnum
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_TruthParticleKey
ScalarBranch< T > & newScalar(const std::string &name)
MuonVal::VectorBranch< int > & m_trklet_vtxLink
MuonVal::VectorBranch< int > & m_msVtx_nRPC_O
MuonVal::VectorBranch< float > & m_llpVtx_ctau
Gaudi::Property< int > m_pdgId_llp
MuonVal::VectorBranch< int > & m_msVtx_nMDT_I
SG::ReadHandleKey< xAOD::EventInfo > m_evtKey
std::vector< bool > passed
MuonVal::ThreeVectorBranch m_msVtx_pos
MuonVal::VectorBranch< int > & m_truthVtx_interactionType
SG::ReadHandleKey< xAOD::MissingETContainer > m_MetKey
PublicToolHandle< Trig::TrigDecisionTool > m_trigDec
MuonVal::ThreeVectorBranch m_truthVtx_pos
TriggerInfo getTriggerDecisions(std::string triggerString)
MuonVal::VectorBranch< float > & m_trklet_eta
Class describing a Vertex.
MuonVal::VectorBranch< float > & m_trklet_qOverP
MuonVal::VectorBranch< int > & m_msVtx_nTGC_O
Gaudi::Property< std::string > m_triggerStringJets
void fillHits(const xAOD::Vertex *vtx, const std::string &decorator_str, MuonVal::VectorBranch< int > &branch)
MuonVal::VectorBranch< int > & m_actVtx_chainDepth
MuonVal::ScalarBranch< int > & m_trklet_N
MatrixBranch< T > & newMatrix(const std::string &name)
MuonVal::ThreeVectorBranch m_trklet_mom
MuonVal::MatrixBranch< int > & m_actVtx_truthParticle_link
MuonVal::VectorBranch< int > & m_msVtx_nRPC_inwards
MuonVal::VectorBranch< float > & m_actVtx_scalarPtSum
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Gaudi::Property< float > m_jetTriggerMatchingDR
Handle class for reading from StoreGate.
Gaudi::Property< bool > m_dumpTruthVertices
Gaudi::Property< bool > m_dumpTruthParticles
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackletKey
StatusCode fillLLP(std::vector< const xAOD::TruthParticle * > &llps)
StatusCode fillTracklets(const EventContext &ctx)
MuonVal::VectorBranch< int > & m_jet_NactVtx
StatusCode fillMet(const EventContext &ctx)
Gaudi::Property< bool > m_fillJets
MuonVal::VectorBranch< int > & m_truthParticle_actVtx_link
Gaudi::Property< bool > m_isMC