ATLAS Offline Software
Loading...
Searching...
No Matches
PlotValNtuple Class Reference

#include <PlotValNtuple.h>

Collaboration diagram for PlotValNtuple:

Public Member Functions

 PlotValNtuple (TrackDataNtupleTree &trackNtuple, TrkValidationNtupleRIOs *rioNtuple, DisplayMode mode=BarrelXY)
void setNextTrack (int &eventNumber, int &trackNumber, int &InterationNumber)
void setPrevTrack (int &eventNumber, int &trackNumber, int &InterationNumber)
void setNextEvent (int &eventNumber)
void setPrevEvent (int &eventNumber)
void setEvent (int eventNumber, int InterationNumber)
void setTrack (int eventNumber, int trackNumber, int InterationNumber)
void setMode (DisplayMode mode)
std::vector< TObject * > * getTrackGraphics ()
 plot a single track
std::vector< TObject * > * getRIOGraphics ()
std::vector< TObject * > * getGeometryGraphics ()
std::vector< TObject * > * getCompetingROTsGraphics ()

Private Member Functions

void plotTrack ()
 plot one track
void plotRIOs (int eventNumber)

Private Attributes

Long64_t m_trackNtupleEntry
 get the range of the track
TrackDataNtupleTreem_trackNtuple
TrkValidationNtupleRIOsm_rioNtuple
displayBarrelXY m_barrelXY
displayEndcapPhiZ m_endcapPhiZ
DisplayMode m_mode

Detailed Description

Definition at line 28 of file PlotValNtuple.h.

Constructor & Destructor Documentation

◆ PlotValNtuple()

PlotValNtuple::PlotValNtuple ( TrackDataNtupleTree & trackNtuple,
TrkValidationNtupleRIOs * rioNtuple,
DisplayMode mode = BarrelXY )

Definition at line 9 of file PlotValNtuple.cxx.

9 :
11 //m_rioNtupleEntry(0),
12 m_trackNtuple(trackNtuple),
13 m_rioNtuple(rioNtuple),
14 m_mode(mode) {
15 //std::cout<<"calling cstr from PlotValNtuple"<< std::endl;
16 // init the ntuples to avoid problems
17 //(*m_trackNtuple.Init();
19 if (m_rioNtuple)
20 m_rioNtuple->GetEntry(0);
21}
TrackDataNtupleTree & m_trackNtuple
DisplayMode m_mode
Long64_t m_trackNtupleEntry
get the range of the track
TrkValidationNtupleRIOs * m_rioNtuple

Member Function Documentation

◆ getCompetingROTsGraphics()

std::vector< TObject * > * PlotValNtuple::getCompetingROTsGraphics ( )
inline

Definition at line 93 of file PlotValNtuple.h.

93 {
94 switch (m_mode) {
95 case BarrelXY:
96 return m_barrelXY.getCompetingROTsGraphics();
97 break;
98 case EndCapPhiZ:
99 return m_endcapPhiZ.getCompetingROTsGraphics();
100 break;
101 }
102 return 0;
103 }
@ EndCapPhiZ
@ BarrelXY
displayEndcapPhiZ m_endcapPhiZ
displayBarrelXY m_barrelXY

◆ getGeometryGraphics()

std::vector< TObject * > * PlotValNtuple::getGeometryGraphics ( )
inline

Definition at line 82 of file PlotValNtuple.h.

82 {
83 switch (m_mode) {
84 case BarrelXY:
85 return m_barrelXY.getGeometryGraphics();
86 break;
87 case EndCapPhiZ:
88 return m_endcapPhiZ.getGeometryGraphics();
89 break;
90 }
91 return 0;
92 }

◆ getRIOGraphics()

std::vector< TObject * > * PlotValNtuple::getRIOGraphics ( )
inline

Definition at line 71 of file PlotValNtuple.h.

71 {
72 switch (m_mode) {
73 case BarrelXY:
74 return m_barrelXY.getRIOGraphics();
75 break;
76 case EndCapPhiZ:
77 return m_endcapPhiZ.getRIOGraphics();
78 break;
79 }
80 return 0;
81 }

◆ getTrackGraphics()

std::vector< TObject * > * PlotValNtuple::getTrackGraphics ( )
inline

plot a single track

plot a whole event, return the index of the last entry belonging to the event by reference plot the RIOs plot CompetingRIOsOnTrack for a single track plot CompetingRIOsOnTrack for whole event, return the index of the last entry belonging to the event by reference

Definition at line 60 of file PlotValNtuple.h.

60 {
61 switch (m_mode) {
62 case BarrelXY:
63 return m_barrelXY.getTrackGraphics();
64 break;
65 case EndCapPhiZ:
66 return m_endcapPhiZ.getTrackGraphics();
67 break;
68 }
69 return 0;
70 }

◆ plotRIOs()

void PlotValNtuple::plotRIOs ( int eventNumber)
private

Definition at line 321 of file PlotValNtuple.cxx.

321 {
322 if (!m_rioNtuple) return;
323
324 // clear the vector of graphic objects
325 m_barrelXY.clearRIOGraphics();
326 m_endcapPhiZ.clearRIOGraphics();
327 // check for number of entries
328 Long64_t nentries = m_rioNtuple->fChain->GetEntriesFast();
329
330 // get the entry with the eventNumber
331
332 for (int i=0; i < nentries; i++) {
333 m_rioNtuple->GetEntry(i);
334 if (int(m_rioNtuple->TRT_EventNumber) != eventNumber) continue;
335 std::cout << "Entry has " << m_rioNtuple->TRT_nRIOs << " RIOs "<< std::endl;
336 for( int rioIndex=0; rioIndex<m_rioNtuple->TRT_nRIOs; ++rioIndex) {
337 // cut for barrel modules:
338 if (fabs((*m_rioNtuple->TRT_SurfaceZ)[rioIndex])>800.) {
339 // endcap:
340 GlobalPosition strawPos((*m_rioNtuple->TRT_SurfaceX)[rioIndex], (*m_rioNtuple->TRT_SurfaceY)[rioIndex], (*m_rioNtuple->TRT_SurfaceZ)[rioIndex]);
341 m_endcapPhiZ.displayTRT_Measurement( strawPos, (*m_rioNtuple->TRT_DriftRadius)[rioIndex], false, false);
342 }else {
343 // barrel:
344 //std::cout << "Z: " << tree.TRT_SurfaceZ[rioIndex]<< std::endl;
345 GlobalPosition strawPos((*m_rioNtuple->TRT_SurfaceX)[rioIndex], (*m_rioNtuple->TRT_SurfaceY)[rioIndex], (*m_rioNtuple->TRT_SurfaceZ)[rioIndex]);
346 m_barrelXY.displayTRT_Measurement( strawPos, (*m_rioNtuple->TRT_DriftRadius)[rioIndex], false, false);
347 }
348 }
349
350 }
351 //std::cout << "return RIO graphic objects"<< std::endl;
352 //return m_barrelXY_RIOs.getRIOGraphics();
353}
TVector3 GlobalPosition

◆ plotTrack()

void PlotValNtuple::plotTrack ( )
private

plot one track

Definition at line 193 of file PlotValNtuple.cxx.

193 {
194
195
196
197 std::cout << "*** Track: Processing run " << m_trackNtuple.RunNumber
198 << ", event " << m_trackNtuple.EventNumber
199 << ", track " << m_trackNtuple.TrackID
200 << ", iteration " << m_trackNtuple.IterationIndex << std::endl;
201
202
203 // determine the range of the track
204 //GlobalPosition lowerLeft;
205 //GlobalPosition upperRight;
206 //getBarrelXY_Range(trackNtuple, lowerLeft, upperRight);
207
208 // get the display for barrel in xy projection
209 //displayBarrelXY* barrelDisplay = new displayBarrelXY(lowerLeft, upperRight);
210 //displayBarrelXY barrelDisplay;
211
212 // loop over the track states
213 std::cout << "Entry has " << m_trackNtuple.nHits << " track states "<< std::endl;
214 for( int i=1; i<m_trackNtuple.nHits; ++i) {
215 // distinguish barrel and endcap modules:
216 bool barrel = true;
217 if (fabs( (*m_trackNtuple.HitZ)[i] )>800.) {
218 // end cap!
219 barrel = false;
220 }
221
222/* if (fabs(trackNtuple.DetectorType)[i])!=3)
223 continue; */
224 // draw the track states
225 GlobalPosition trkPos((*m_trackNtuple.TrackX)[i], (*m_trackNtuple.TrackY)[i], (*m_trackNtuple.TrackZ)[i]);
226 GlobalDirection trkMom((*m_trackNtuple.TrackMomentumX)[i], (*m_trackNtuple.TrackMomentumY)[i], (*m_trackNtuple.TrackMomentumZ)[i]);
227 GlobalDirection trkDir(trkMom.Unit());
228// std::cout << " Track state with global position " << trkPos << " and direction "<< trkDir<< std::endl;
229// WL m_barrelXY.displayTrackState(trkPos, trkMom);
230 // draw the measurements
231 GlobalPosition *measPos=0;
232 //std::cout << " detector type: " << (*m_trackNtuple.DetectorType)[i] << std::endl;
233 switch ((*m_trackNtuple.DetectorType)[i]) {
234 case 1:
235 case 2:
236 // Pixel or SCT hit
237 measPos = new GlobalPosition((*m_trackNtuple.HitX)[i], (*m_trackNtuple.HitY)[i], (*m_trackNtuple.HitZ)[i]);
238 //std::cout << " silicon measurement at " << *measPos << std::endl;
239 m_barrelXY.displaySiliconMeasurement(*measPos, true);
240 m_endcapPhiZ.displaySiliconMeasurement(*measPos, true);
241 break;
242 case 3:
243 measPos = new GlobalPosition((*m_trackNtuple.HitSurfaceX)[i], (*m_trackNtuple.HitSurfaceY)[i], (*m_trackNtuple.HitSurfaceZ)[i]);
244 //std::cout << " TRT measurement at " << *measPos << " with driftradius "<< (*m_trackNtuple.HitLocal1)[i] << std::endl;
245 // if ((*m_trackNtuple.outlierFlag)[i] > 0) std::cout << " ## outlier on ntuple." << std::endl;
246 if (barrel) {
247 m_barrelXY.displayTRT_MeasurementOnTrack(*measPos,
248 (*m_trackNtuple.HitLocal1)[i],
249 trkDir,
250 ((*m_trackNtuple.outlierFlag)[i] > 0));
251 }else{
252 m_endcapPhiZ.displayTRT_MeasurementOnTrack(*measPos,
253 (*m_trackNtuple.HitLocal1)[i],
254 trkDir,
255 ((*m_trackNtuple.outlierFlag)[i] > 0), trkPos.Perp());
256 }
257 //std::cout << "Track Pos: (X, Y, Z)=(" << trkPos.x() << "," << trkPos.y() << "," << trkPos.z() << ") => (R, Phi) = (" << trkPos.Perp() << "," << trkPos.Phi() << "), driftradius: " << (*m_trackNtuple.HitLocal1)[i] << std::endl;
258 //std::cout << "straw Pos: (X, Y, Z)=(" << measPos->x() << "," << measPos->y() << "," << measPos->z() << ") => (R, Phi) = (" << measPos->Perp() << "," << measPos->Phi() << ")" << std::endl;
259 //std::cout << "Track Dir: (X, Y, Z)=(" << trkDir.x() << "," << trkDir.y() << "," << trkDir.z() << ") => (R, Phi) = (" << trkDir.Perp() << "," << trkDir.Phi() << ")" << std::endl;
260 // do we have competing ROT info?
261 //std::cout << " containes " << (*m_trackNtuple.CompROTnContainedROTs)[i] << " ROTs" << std::endl;
262 if (m_trackNtuple.CompROTnContainedROTs && (*m_trackNtuple.CompROTnContainedROTs)[i] > 0) {
263 std::vector<GlobalPosition> strawPositions;
264 std::vector<double> driftRadii;
265 std::vector<double> assgnProbs;
266 //std::cout << " containes " << (*m_trackNtuple.CompROTnContainedROTs << " ROTs "<< std::endl;
267/* for( int rotIndex=0; rotIndex<(*m_trackNtuple.CompROTnContainedROTs)[i]; ++rotIndex) {
268 GlobalPosition measPos((*m_trackNtuple.CompROTcontainedROTsHitSurfaceX)[i][rotIndex], (*m_trackNtuple.CompROTcontainedROTsHitSurfaceY)[i][rotIndex], (*m_trackNtuple.CompROTcontainedROTsHitSurfaceZ)[i][rotIndex]);
269 // std::cout << " TRT measurement at " << *measPos << " with driftradius "<< trackNtuple.HitLocal1)[i] << std::endl;
270 strawPositions.push_back(measPos);
271 driftRadii.push_back((*m_trackNtuple.CompROTcontainedROTsHitLocal1)[i][rotIndex]);
272 assgnProbs.push_back((*m_trackNtuple.CompROTcontainedROTsAssgnProbs)[i][rotIndex]);
273 }*/
274 if (barrel){
275 m_barrelXY.displayCompetingTRT_ROT( strawPositions, driftRadii, assgnProbs, trkDir);
276 }else{
277 m_endcapPhiZ.displayCompetingTRT_ROT( strawPositions, driftRadii, assgnProbs, trkDir);
278 }
279 }
280 break;
281 }
282 m_barrelXY.displayTrackState(trkPos, trkDir);
283 m_endcapPhiZ.displayTrackState(trkPos, trkDir);
284 delete measPos;
285 }
286 //barrelDisplay->draw();
287
288 //return barrelDisplay.getGraphicObjects();
289}
TVector3 GlobalDirection

◆ setEvent()

void PlotValNtuple::setEvent ( int eventNumber,
int InterationNumber )

Definition at line 172 of file PlotValNtuple.cxx.

172{}

◆ setMode()

void PlotValNtuple::setMode ( DisplayMode mode)
inline

Definition at line 41 of file PlotValNtuple.h.

41 {
42 m_mode = mode;
43 }

◆ setNextEvent()

void PlotValNtuple::setNextEvent ( int & eventNumber)

Definition at line 92 of file PlotValNtuple.cxx.

92 {
93 // in case of troubles: set numbers to current entry
94 eventNumber = int(m_trackNtuple.EventNumber);
95 //InterationNumber = int(m_trackNtuple.IterationIndex);
96
97 Long64_t nentries = m_trackNtuple.fChain->GetEntriesFast();
98 if (m_trackNtupleEntry+1 >= nentries)
99 return;
100
101 // get the first entry of the event:
102 if (m_trackNtuple.GetEntry(++m_trackNtupleEntry)==0){
104 return;
105 }
106 // get the eventNumber
107 eventNumber = int(m_trackNtuple.EventNumber);
108 //InterationNumber = int(m_trackNtuple.IterationIndex);
109
110 // clear the track and rio objects:
111 m_barrelXY.clearTrackGraphics();
112 m_barrelXY.clearCompetingROTsGraphics();
113 m_endcapPhiZ.clearTrackGraphics();
114 m_endcapPhiZ.clearCompetingROTsGraphics();
115 //m_barrelXY.clearRIOGraphics();
116 // get the new RIO graphics
117 plotRIOs(eventNumber);
118 // get the new track graphics
121 std::cout << "Entry " << m_trackNtupleEntry << " has eventNumber " << m_trackNtuple.EventNumber<< std::endl;
122 if (int(m_trackNtuple.EventNumber) != eventNumber) break;
123 plotTrack();
124 }
125 // set entry number to last entry of the event
128}
void plotRIOs(int eventNumber)
void plotTrack()
plot one track

◆ setNextTrack()

void PlotValNtuple::setNextTrack ( int & eventNumber,
int & trackNumber,
int & InterationNumber )

Definition at line 23 of file PlotValNtuple.cxx.

23 {
24 // in case of troubles: set numbers to current entry
25 eventNumber = int(m_trackNtuple.EventNumber);
26 trackNumber = int(m_trackNtuple.TrackID);
27 InterationNumber = int(m_trackNtuple.IterationIndex);
28
29 Long64_t nentries = m_trackNtuple.fChain->GetEntriesFast();
30 if (m_trackNtupleEntry+1 >= nentries)
31 return;
32
33 // get the entry:
34 if (m_trackNtuple.GetEntry(m_trackNtupleEntry++)==0){
36 return;
37 }
38 // clear the track objects:
39 m_barrelXY.clearTrackGraphics();
40 m_barrelXY.clearCompetingROTsGraphics();
41 m_endcapPhiZ.clearTrackGraphics();
42 m_endcapPhiZ.clearCompetingROTsGraphics();
43 // get the new track graphics
44 plotTrack();
45 // do we have a new event?
46 if (eventNumber != int(m_trackNtuple.EventNumber)){
47 // clear also the RIO graphics
48 //m_barrelXY.clearRIOGraphics();
49 plotRIOs(int(m_trackNtuple.EventNumber));
50
51 }
52 // set the numbers to the new values:
53 eventNumber = int(m_trackNtuple.EventNumber);
54 trackNumber = int(m_trackNtuple.TrackID);
55 InterationNumber = int(m_trackNtuple.IterationIndex);
56}

◆ setPrevEvent()

void PlotValNtuple::setPrevEvent ( int & eventNumber)

Definition at line 130 of file PlotValNtuple.cxx.

130 {
131 // in case of troubles: set numbers to current entry
132 eventNumber = int(m_trackNtuple.EventNumber);
133 //InterationNumber = int(m_trackNtuple.IterationIndex);
134
135 if (m_trackNtupleEntry <= 0)
136 return;
137
138 // get the last entry of the previous event:
139 for (; m_trackNtupleEntry >= 0; m_trackNtupleEntry--) {
141 std::cout << "Entry " << m_trackNtupleEntry << " has eventNumber " << m_trackNtuple.EventNumber<< std::endl;
142 if (int(m_trackNtuple.EventNumber) != eventNumber) break;
143 }
144 if (int(m_trackNtuple.EventNumber) == eventNumber)
145 return;
146 Long64_t lastEntryOfEvent = m_trackNtupleEntry;
147
148 // get the eventNumber
149 eventNumber = int(m_trackNtuple.EventNumber);
150 //InterationNumber = int(m_trackNtuple.IterationIndex);
151
152 // clear the track and rio objects:
153 m_barrelXY.clearTrackGraphics();
154 m_barrelXY.clearCompetingROTsGraphics();
155 m_endcapPhiZ.clearTrackGraphics();
156 m_endcapPhiZ.clearCompetingROTsGraphics();
157 //m_barrelXY.clearRIOGraphics();
158 // get the new RIO graphics
159 plotRIOs(eventNumber);
160 // get the new track graphics
163 std::cout << "Entry " << m_trackNtupleEntry << " has eventNumber " << m_trackNtuple.EventNumber<< std::endl;
164 if (int(m_trackNtuple.EventNumber) != eventNumber) break;
165 plotTrack();
166 }
167 // set entry number to last entry of the event
168 m_trackNtupleEntry = lastEntryOfEvent;
170}

◆ setPrevTrack()

void PlotValNtuple::setPrevTrack ( int & eventNumber,
int & trackNumber,
int & InterationNumber )

Definition at line 58 of file PlotValNtuple.cxx.

58 {
59 // in case of troubles: set numbers to current entry
60 eventNumber = int(m_trackNtuple.EventNumber);
61 trackNumber = int(m_trackNtuple.TrackID);
62 InterationNumber = int(m_trackNtuple.IterationIndex);
63
64 if (m_trackNtupleEntry <= 0)
65 return;
66
67 // get the entry:
68 if (m_trackNtuple.GetEntry(m_trackNtupleEntry--)==0){
70 return;
71 }
72 // clear the track objects:
73 m_barrelXY.clearTrackGraphics();
74 m_barrelXY.clearCompetingROTsGraphics();
75 m_endcapPhiZ.clearTrackGraphics();
76 m_endcapPhiZ.clearCompetingROTsGraphics();
77 // get the new track graphics
78 plotTrack();
79 // do we have a new event?
80 if (eventNumber != int(m_trackNtuple.EventNumber)){
81 // clear also the RIO graphics
82 //m_barrelXY.clearRIOGraphics();
83 plotRIOs(int(m_trackNtuple.EventNumber));
84
85 }
86 // set the numbers to the new values:
87 eventNumber = int(m_trackNtuple.EventNumber);
88 trackNumber = int(m_trackNtuple.TrackID);
89 InterationNumber = int(m_trackNtuple.IterationIndex);
90}

◆ setTrack()

void PlotValNtuple::setTrack ( int eventNumber,
int trackNumber,
int InterationNumber )

Definition at line 173 of file PlotValNtuple.cxx.

173{}

Member Data Documentation

◆ m_barrelXY

displayBarrelXY PlotValNtuple::m_barrelXY
private

Definition at line 124 of file PlotValNtuple.h.

◆ m_endcapPhiZ

displayEndcapPhiZ PlotValNtuple::m_endcapPhiZ
private

Definition at line 125 of file PlotValNtuple.h.

◆ m_mode

DisplayMode PlotValNtuple::m_mode
private

Definition at line 126 of file PlotValNtuple.h.

◆ m_rioNtuple

TrkValidationNtupleRIOs* PlotValNtuple::m_rioNtuple
private

Definition at line 122 of file PlotValNtuple.h.

◆ m_trackNtuple

TrackDataNtupleTree& PlotValNtuple::m_trackNtuple
private

Definition at line 121 of file PlotValNtuple.h.

◆ m_trackNtupleEntry

Long64_t PlotValNtuple::m_trackNtupleEntry
private

get the range of the track

Definition at line 119 of file PlotValNtuple.h.


The documentation for this class was generated from the following files: