star-travex
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TStiEvent.cxx
Go to the documentation of this file.
1 #include "StiRootIO/TStiEvent.h"
4 #include "St_base/Stypes.h"
5 #include "Sti/StiHit.h"
6 #include "Sti/StiTrack.h"
7 #include "Sti/StiKalmanTrack.h"
8 
10 
11 
12 TStiEvent::TStiEvent() : TObject(),
13  fStiVolumeFilter(StiVolumeFilter::GetInstance()),
14  fTStiKalmanTracks(),
15  fTStiHits()
16 {
17 }
18 
19 
20 TStiEvent::TStiEvent(const StiVolumeFilter& stiVolumeFilter) :
21  fStiVolumeFilter(stiVolumeFilter),
22  fTStiKalmanTracks(),
23  fTStiHits()
24 {
25 }
26 
27 
28 bool TStiEvent::AcceptTrack(const StiKalmanTrack& track) const
29 {
30  return fStiVolumeFilter.AcceptTrack(track);
31 }
32 
33 
34 bool TStiEvent::AcceptTrackNode(const StiKalmanTrackNode& node) const
35 {
36  return fStiVolumeFilter.AcceptTrackNode(node);
37 }
38 
39 
40 EReturnCodes TStiEvent::Fill(const StiTrackContainer &stiTrackContainer)
41 {
42  for (const StiTrack* stiTrack : stiTrackContainer)
43  {
44  const StiKalmanTrack& stiKTrack = static_cast<const StiKalmanTrack&>(*stiTrack);
45 
46  if ( AcceptTrack(stiKTrack) ) {
47  fTStiKalmanTracks.push_back( TStiKalmanTrack(stiKTrack, this) );
48  }
49  }
50 
51  return kStOK;
52 }
53 
54 
55 EReturnCodes TStiEvent::Fill(StiHitContainer &stiHitContainer)
56 {
58  std::vector<StiHit*>& selectedHits = stiHitContainer.getHits(filter);
59 
60  std::transform(selectedHits.begin(), selectedHits.end(),
61  std::inserter(fTStiHits, fTStiHits.begin()), [](const StiHit* hit) {return TStiHit(*hit);} );
62 
63  return kStOK;
64 }
65 
66 
67 EReturnCodes TStiEvent::PostFill()
68 {
69  for (auto& track : fTStiKalmanTracks)
70  {
71  // Finding candidate hits now also assumes finding the closest hit to the track node
72  track.FindCandidateHits(fTStiHits);
73  }
74 
75  return kStOk;
76 }
77 
78 
79 void TStiEvent::Print(Option_t *opt) const
80 {
81  std::cout << "TStiEvent::Print(" << std::string(opt) << ")" << "\n"
82  << "Num. of tracks: " << fTStiKalmanTracks.size() << "\n"
83  << "Num. of hits: " << fTStiHits.size()
84  << std::endl;
85 
86  if (string(opt).find("all") == std::string::npos)
87  return;
88 
89  for (const auto& track : fTStiKalmanTracks) {
90  track.Print();
91  }
92 }
93 
94 
95 void TStiEvent::Clear(Option_t *opt)
96 {
97  fTStiKalmanTracks.clear();
98  fTStiHits.clear();
99 }
virtual void Clear(Option_t *opt="")
Definition: TStiEvent.cxx:95
std::vector< TStiKalmanTrack > fTStiKalmanTracks
A collection of all Sti tracks of interest in this event.
Definition: TStiEvent.h:48
const StiVolumeFilter & fStiVolumeFilter
A singleton allowing to impose various requirements on tracks and/or track nodes. ...
Definition: TStiEvent.h:45
bool AcceptTrackNode(const StiKalmanTrackNode &node) const
Definition: TStiEvent.cxx:34
bool AcceptTrack(const StiKalmanTrack &track) const
virtual EReturnCodes PostFill()
Definition: TStiEvent.cxx:67
A singleton to manage constraints on save Sti objects such as tracks and track nodes.
std::set< TStiHit > fTStiHits
A collection of all Sti hits of interest in this event.
Definition: TStiEvent.h:51
virtual void Print(Option_t *opt="") const
Definition: TStiEvent.cxx:79
bool AcceptTrackNode(const StiKalmanTrackNode &node) const
bool AcceptTrack(const StiKalmanTrack &track) const
Definition: TStiEvent.cxx:28
const std::set< boost::regex > & GetNamePatterns() const
ClassImp(TStiEvent)
virtual EReturnCodes Fill(const StiTrackContainer &stiTrackContainer)
Definition: TStiEvent.cxx:40