ATLAS Offline Software
Loading...
Searching...
No Matches
LinkColumnExampleTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7//
8// includes
9//
10
12
13//
14// method implementations
15//
16
17namespace columnar
18{
19 LinkColumnExampleTool ::
20 LinkColumnExampleTool (const std::string& name)
21 : AsgTool (name)
22 {}
23
24
25
26 StatusCode LinkColumnExampleTool ::
27 initialize ()
28 {
29 // give the base class a chance to initialize the column accessor
30 // backends
31 ANA_CHECK (initializeColumns());
32 return StatusCode::SUCCESS;
33 }
34
35
36
37 void LinkColumnExampleTool ::
38 callEvents (EventContextRange events) const
39 {
40 // loop over all events and particles. note that this is
41 // deliberately looping by value, as the ID classes are very small
42 // and can be copied cheaply. this could have also been written as
43 // a single loop over all particles in the event range, but I chose
44 // to split it up into two loops as most tools will need to do some
45 // per-event things, e.g. retrieve `EventInfo`.
46 for (columnar::EventContextId event : events)
47 {
48 for (auto muon : muonsHandle(event))
49 {
50 // retrieve the track linked to the muon
51 OptTrackId track = trackLinkAcc(muon);
52
53 // apply the selection, the OptTrackId tries to (mostly) behave
54 // like a std::optional<TrackId>, so we can use it in a similar
55 // way. Here we first check if the track is valid, then do a
56 // curvature selection on the track.
57 selectionDec(muon) = track && std::abs(trackQOverPAcc(track.value())) < 1. / m_ptCut.value();
58 }
59 }
60 }
61}
#define ANA_CHECK(EXP)
check whether the given expression was successful
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition AsgTool.cxx:58
MuonAccessor< OptTrackId > trackLinkAcc
the link accessor for the particles
MuonDecorator< char > selectionDec
the selection decorator for the particles
TrackAccessor< float > trackQOverPAcc
the q/p accessor for the track container
Gaudi::Property< float > m_ptCut
the pt cut to apply
MuonAccessor< ObjectColumn > muonsHandle
the object accessor for the muons
ObjectRange< ContainerId::eventContext > EventContextRange
ObjectId< ContainerId::eventContext > EventContextId
OptObjectId< ContainerId::track > OptTrackId
Definition TrackDef.h:47