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