ATLAS Offline Software
Loading...
Searching...
No Matches
KinematicSimSelector.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
6// KinematicSimSelector.cxx, (c) ATLAS Detector software
8
9// class include
11
12#include "HepPDT/ParticleDataTable.hh"
13#include "HepPDT/ParticleData.hh"
14
15
17ISF::KinematicSimSelector::KinematicSimSelector(const std::string& t, const std::string& n, const IInterface* p)
20 , m_partPropSvc("PartPropSvc", name())
21{
22 declareProperty("MinPosEta", m_cut_minPosEta , "Minimum Position Pseudorapidity" );
23 declareProperty("MaxPosEta", m_cut_maxPosEta , "Maximum Position Pseudorapidity" );
24 declareProperty("MinMomEta", m_cut_minMomEta , "Minimum Momentum Pseudorapidity" );
25 declareProperty("MaxMomEta", m_cut_maxMomEta , "Maximum Momentum Pseudorapidity" );
26 declareProperty("MinMom", m_cut_minMom2 , "Minimum Particle Momentum" );
27 declareProperty("MaxMom", m_cut_maxMom2 , "Maximum Particle Momentum" );
28 declareProperty("MaxEkin", m_cut_maxEkin , "Maximum Particle Kinetic Energy" );
29 declareProperty("Charge", m_cut_charge , "Particle Charge" );
30 declareProperty("ParticlePDG", m_cut_pdg , "Particle PDG Code" );
31}
32
37
38// Athena algtool's Hooks
40{
41 ATH_MSG_VERBOSE("Initializing ...");
42 ATH_CHECK(m_partPropSvc.retrieve());
43
44 HepPDT::ParticleDataTable* particleDataTable;
45 particleDataTable = (HepPDT::ParticleDataTable*) m_partPropSvc->PDT();
46
47 if(particleDataTable == 0)
48 {
49 ATH_MSG_ERROR("PDG table not found");
50 return StatusCode::FAILURE;
51 }
52
53 const HepPDT::ParticleData* data = particleDataTable->particle(HepPDT::ParticleID(abs(m_cut_pdg)));
54
55 double mass = 0;
56 if(data) mass = data->mass().value();
57
58
59 // compute and store the square of the momentum cuts (faster comparisons)
62
63 // if use kinetic energy
64 if(!(m_cut_maxEkin < 0.)) m_cut_maxMom2 = m_cut_maxEkin * (m_cut_maxEkin + 2 * mass);
65
66 return StatusCode::SUCCESS;
67}
68
69
71{
72 ATH_MSG_VERBOSE("Finalizing ...");
73 return StatusCode::SUCCESS;
74}
75
77{
78 return ISF::KinematicParticleCuts::pass(particle);
79}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
BaseSimulationSelector(const std::string &t, const std::string &n, const IInterface *p)
Constructor with parameters.
The generic ISF particle definition,.
Definition ISFParticle.h:42
double m_cut_maxMom2
maximum squared particle momentum magnitude
double m_cut_maxEkin
maximum particle kinetic energy
float m_cut_maxMomEta
maximum pseudorapidity of particle momentum
float m_cut_maxPosEta
maximum pseudorapidity of particle position
KinematicParticleCuts()
Constructor.
bool pass(const ISFParticle &particle) const
check whether the given particle passes all cuts
float m_cut_minMomEta
minimum pseudorapidity of particle momentum
float m_cut_minPosEta
minimum pseudorapidity of particle position
double m_cut_minMom2
minimum squarde particle momentum magnitude
float m_cut_charge
particle charge
ServiceHandle< IPartPropSvc > m_partPropSvc
KinematicSimSelector(const std::string &t, const std::string &n, const IInterface *p)
Constructor with parameters.
virtual StatusCode initialize() override
virtual StatusCode finalize() override
virtual bool passSelectorCuts(const ISFParticle &particle) const override
check whether given particle passes all cuts -> will be used for routing decision