 |
ATLAS Offline Software
|
Go to the documentation of this file.
12 const std::string&
name,
13 const IInterface *
parent) :
16 declareInterface<DiTauToolBase > (
this);
28 return StatusCode::SUCCESS;
33 const EventContext& ctx)
const
39 if (pDiTau ==
nullptr) {
41 return StatusCode::FAILURE;
47 std::vector<const xAOD::TrackParticle*> tauTracks;
48 std::vector<const xAOD::TrackParticle*> isoTracks;
49 std::vector<const xAOD::TrackParticle*> otherTracks;
69 std::vector<fastjet::PseudoJet> vSubjets =
data->subjets;
71 for (
auto subjet_itr = vSubjets.begin(); subjet_itr != vSubjets.end(); ) {
74 TLorentzVector temp_p4;
75 temp_p4.SetPtEtaPhiM(subjet_itr->pt(), subjet_itr->eta(), subjet_itr->phi_std(), subjet_itr->m());
77 for (
const auto&
track : tauTracks) {
85 subjet_itr = vSubjets.erase(subjet_itr);
87 ATH_MSG_DEBUG(
"number of tracks greater than MaxNTracksSubjet threshold. Drop subjet");
88 subjet_itr = vSubjets.erase(subjet_itr);
96 if (vSubjets.size()<=1) {
97 ATH_MSG_DEBUG(
"Found less than 2 subjets. Reject ditau candidate");
98 return StatusCode::FAILURE;
101 data->subjets = vSubjets;
102 ATH_MSG_DEBUG(
"number of subjets after track association: " <<
data->subjets.size());
104 for (
unsigned int i = 0;
i < vSubjets.size();
i++) {
105 const fastjet::PseudoJet&
subjet = vSubjets.at(
i);
113 for (
const auto&
track : tauTracks ) {
119 for (
const auto&
track : isoTracks ) {
125 for (
const auto&
track : otherTracks ) {
130 return StatusCode::SUCCESS;
137 std::vector<const xAOD::TrackParticle*> &tauTracks,
138 std::vector<const xAOD::TrackParticle*> &isoTracks,
139 std::vector<const xAOD::TrackParticle*> &otherTracks)
const {
141 for (
const auto *
const track : *pTrackParticleCont ) {
145 tauTracks.push_back(
track);
147 isoTracks.push_back(
track);
149 otherTracks.push_back(
track);
152 std::sort(tauTracks.begin(), tauTracks.end(),
TrackSort());
153 std::sort(isoTracks.begin(), isoTracks.end(),
TrackSort());
154 std::sort(otherTracks.begin(), otherTracks.end(),
TrackSort());
172 std::vector<fastjet::PseudoJet> vSubjets =
data->subjets;
173 for (
const auto &
subjet : vSubjets) {
175 TLorentzVector temp_p4;
Gaudi::Property< float > m_MaxDrJet
virtual StatusCode execute(DiTauCandidateData *data, const EventContext &ctx) const override
Execute - called for each Ditau candidate.
char data[hepevt_bytes_allocation_ATLAS]
const VertexLink_t & vertexLink() const
virtual FourMom_t p4() const
The full 4-momentum of the particle.
DiTauTrackFinder(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
void clearIsoTrackLinks()
void addOtherTrack(const xAOD::TrackParticleContainer *, const xAOD::TrackParticle *)
void getTracksFromPV(const DiTauCandidateData *, const xAOD::TrackParticleContainer *, const xAOD::Vertex *, std::vector< const xAOD::TrackParticle * > &, std::vector< const xAOD::TrackParticle * > &, std::vector< const xAOD::TrackParticle * > &) const
ToolHandle< Trk::ITrackSelectorTool > m_TrackSelectorTool
Helper method to sort tracks.
virtual ~DiTauTrackFinder()
Destructor.
void clearOtherTrackLinks()
bool isValid() const
Test to see if the link can be dereferenced.
void addTrack(const xAOD::TrackParticleContainer *, const xAOD::TrackParticle *)
void addIsoTrack(const xAOD::TrackParticleContainer *, const xAOD::TrackParticle *)
::StatusCode StatusCode
StatusCode definition for legacy code.
const_pointer_type get() const
Dereference the pointer, but don't cache anything.
Gaudi::Property< int > m_MaxNTracksSubjet
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
void setSubjetPtEtaPhiE(unsigned int numSubjet, float pt, float eta, float phi, float e)
DiTauTrackType diTauTrackType(const DiTauCandidateData *, const xAOD::TrackParticle *, const xAOD::Vertex *) const
Class describing a Vertex.
#define ATH_MSG_WARNING(x)
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackParticleContainerName
Class describing a TrackParticle.
Handle class for reading from StoreGate.
virtual StatusCode initialize() override
Tool initializer.
Gaudi::Property< float > m_MaxDrSubjet