ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimTrackStream.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7#include <iostream>
8#include <iomanip>
9using namespace std;
10
23{
24 m_tracks = new TClonesArray("FPGATrackSimTrack", 1000);
25 m_tracksI = new TClonesArray("FPGATrackSimTrack", 1000);
26}
27
29{
30 if (this != &in) {
34 m_ncombs = in.m_ncombs;
35 m_nfits = in.m_nfits;
47 m_nfitsI = in.m_nfitsI;
57 m_nconn = in.m_nconn;
59 m_tracks = new TClonesArray("FPGATrackSimTrack", 1000);
60 m_tracksI = new TClonesArray("FPGATrackSimTrack", 1000);
61 for (int i = 0; i < in.m_ntracks; i++) {
62 FPGATrackSimTrack* trackP = in.getTrack(i);
63 const FPGATrackSimTrack track = *trackP;
64 addTrack(track);
65 }
66 for (int i = 0; i < in.m_ntracksI; i++) {
67 FPGATrackSimTrack* trackP = in.getTrackI(i);
68 const FPGATrackSimTrack track = *trackP;
69 addTrackI(track);
70 }
71 }
72
73 return *this;
74}
75
77{
78 m_tracks->Delete();
79 delete m_tracks;
80 m_tracksI->Delete();
81 delete m_tracksI;
82}
83
84// copy constructor
89 m_ncombs = in.m_ncombs;
90 m_nfits = in.m_nfits;
101 m_ncombsI = in.m_ncombsI;
102 m_nfitsI = in.m_nfitsI;
112 m_nconn = in.m_nconn;
114 m_tracks = new TClonesArray("FPGATrackSimTrack", 1000);
115 m_tracksI = new TClonesArray("FPGATrackSimTrack", 1000);
116 for (int i = 0; i < in.m_ntracks; i++) {
117 FPGATrackSimTrack* trackP = in.getTrack(i);
118 const FPGATrackSimTrack track = *trackP;
119 addTrack(track);
120 }
121 for (int i = 0; i < in.m_ntracksI; i++) {
122 FPGATrackSimTrack* trackP = in.getTrackI(i);
123 const FPGATrackSimTrack track = *trackP;
124 addTrackI(track);
125 }
126}
127
128
131{
132 new ((*m_tracks)[m_ntracks++]) FPGATrackSimTrack(track);
133 m_trackIdMap[std::make_pair(track.getTrackID(), track.getBankID())] = m_ntracks - 1;
134}
135
136
140{
141 if (ipos >= m_ntracks) return 0;
142 else return (FPGATrackSimTrack*)m_tracks->At(ipos);
143}
144
147int FPGATrackSimTrackStream::findTrack(int trackid, int bankid)
148{
149 if (!m_trackIdMap.size())
151
152 std::map< std::pair<int, int>, int >::iterator it = m_trackIdMap.find(std::make_pair(trackid, bankid));
153 if (it != m_trackIdMap.end())
154 return it->second;
155 else
156 return -1;
157}
158
159
162{
163 new ((*m_tracksI)[m_ntracksI++]) FPGATrackSimTrack(track);
164}
165
166
170{
171 if (ipos >= m_ntracksI) return 0;
172 else return (FPGATrackSimTrack*)m_tracksI->At(ipos);
173}
174
178{
179 m_run_number = 0ul;
180 m_event_number = 0ul;
181
182 m_tracks->Delete();
183 m_ntracks = 0;
184 m_tracksI->Delete();
185 m_ntracksI = 0;
186
187 m_ncombs = 0;
188 m_nfits = 0;
189 m_nconn = 0;
191 m_nfits_maj = 0;
192 m_nfits_maj_pix = 0;
193 m_nfits_maj_SCT = 0;
194 m_nfits_bad = 0;
195 m_nfits_badmaj = 0;
196 m_nfits_rec = 0;
197 m_nfits_addrec = 0;
198 m_nfits_rej = 0;
199 m_nfits_rejmaj = 0;
200
201 m_ncombsI = 0;
202 m_nfitsI = 0;
203 m_nfits_majI = 0;
206 m_nfits_badI = 0;
207 m_nfits_badmajI = 0;
208 m_nfits_recI = 0;
209 m_nfits_addrecI = 0;
210 m_nfits_rejI = 0;
211 m_nfits_rejmajI = 0;
212
213 m_trackIdMap.clear();
214}
215
216
221
222int FPGATrackSimTrackStream::Print(int level, ostream& out)
223{
224 int printed(0);
225 out << "*** Run/Event " << m_run_number << "/" << m_event_number << " ***" << endl;
226 out << "*** Tracks (lvl=" << level << "): ***" << endl;
227 out << "*** mntracks: " << m_ntracks << endl;
228 // for (int it=0;it<m_ntracks;++it) {
229 // FPGATrackSimTrack *tmpt = getTrack(it);
230 // }
231 if (printed == 0) out << " [ NO TRACKS ] " << endl;
232 out << endl;
233
234 return printed;
235}
236
238 m_trackIdMap.clear();
239 for (int itrack = 0;itrack != m_ntracks;++itrack) { // loop over the tracks
240 FPGATrackSimTrack* cur_track = getTrack(itrack);
241
242 if (!cur_track) continue; // a null pointer is possible
243 m_trackIdMap[std::make_pair(cur_track->getTrackID(), cur_track->getBankID())] = itrack;
244 }
245
246}
int findTrack(int trackid, int bankid)
this method, passing a track ID and a bank ID, return the ID of the corresponding track.
void addTrack(const FPGATrackSimTrack &)
add a track in the final list
FPGATrackSimTrack * getTrack(int) const
return a given track, identified by its position in the list
FPGATrackSimTrack * getTrackI(int) const
return a given track, identified by its position in the list
FPGATrackSimTrackStream & operator=(const FPGATrackSimTrackStream &s)
void clear()
reset the list of the tracks and the statistical informatino collected for this event
int Print(int level=0, std::ostream &out=std::cout)
print a debug message summaryzing the information for the tracks found in one event for a given bank.
std::map< std::pair< int, int >, int > m_trackIdMap
void addTrackI(const FPGATrackSimTrack &)
add a track in the final list
STL namespace.