108 double tp_len = 2*10.;
113 trackpp->SetLineColor(
color );
115 TObject* trackppObj = trackpp;
121 TLine* trackp =
m_shapeCreator.createLine( trkPosition, trkDirection, tp_len );
122 trackp->SetLineWidth( 2 );
123 trackp->SetLineColor(
color );
126 TObject* trackpObj = trackp;
130 TLine* trackp_o =
m_shapeCreator.createOrthogonalLine( trkPosition, trkDirection, tp_len );
131 trackp_o->SetLineColor(
color );
134 TObject* trackp_oObj = trackp_o;
144 dir_o *= (trkDirection.z()<0 ? -1 : 1);
148 TPolyLine* marker =
m_shapeCreator.createTriangle(strawPosition, dir_o,
149 0.45*driftRadius+(driftRadius<0?-0.3:0.3));
150 marker->SetLineColor( 311 );
151 marker->SetLineWidth( 2 );
154 TObject* markerObj = marker;
160 bool onTrack,
bool outlierOnTrack,
double) {
162 double tube_radius = 2.;
164 std::vector<TObject*>* geometry=0;
165 bool backside = strawPosition.z() < 0.;
168 if (onTrack && !outlierOnTrack ) {
169 color_hit = backside ? 303 : 4;
171 }
else if (onTrack && outlierOnTrack) {
172 color_hit = backside ? 302 : 3;
175 color_hit = backside ? 306 : 6;
179 TArc* tube =
m_shapeCreator.createArc( strawPosition, tube_radius );
180 tube->SetLineColor( color_tube );
181 if (!onTrack && backside) tube->SetFillColor( 310 );
184 TObject* tubeObj = tube;
185 geometry->push_back(tubeObj);
188 double x_flag = backside ? -1.6 : 1.6;
189 GlobalPosition gp_flag(strawPosition.x()+1.6,strawPosition.y()+x_flag,strawPosition.z());
191 tubeFlag->SetLineColor( color_hit );
192 tubeFlag->SetFillColor( color_hit );
193 TObject* flagObj = tubeFlag;
194 geometry->push_back(flagObj);
197 if (driftRadius != 0.0) {
198 TArc* hit =
m_shapeCreator.createArc( strawPosition, driftRadius );
199 hit->SetLineColor( color_hit );
200 hit->SetLineWidth( 2 );
203 TObject* hitObj = hit;
204 geometry->push_back(hitObj);
207 hit->SetLineColor( color_hit );
208 hit->SetFillColor( color_hit );
209 hit->SetLineWidth( 2 );
210 TObject* hitObj = hit;
211 geometry->push_back(hitObj);
216 tube_c->SetLineColor( 1 );
217 tube_c->SetFillColor( 1 );
220 TObject* tube_cObj = tube_c;
221 geometry->push_back(tube_cObj);
253 dir_o *= (trkDirection.z()<0 ? -1 : 1);
254 char assgnProbText[50];
257 sprintf(assgnProbText,
"%e", assgnProbs[0]);
258 TText* text =
m_shapeCreator.createText(strawPositions[0]+(driftRadii[0]*2.)*dir_o.Unit(), assgnProbText);
261 text->SetTextAlign((dir_o.x()*driftRadii[0])>0 ? 12 : 32);
262 TObject* textObj = text;
266 for (
unsigned int i = 1; i < strawPositions.size(); i++) {
274 sprintf(assgnProbText,
"%e", assgnProbs[i]);
275 TText* text =
m_shapeCreator.createText(strawPositions[i]+(driftRadii[i]*2.)*dir_o.Unit(), assgnProbText);
278 text->SetTextAlign((dir_o.x()*driftRadii[i])>0 ? 12 : 32);
279 TObject* textObj = text;
282 if (strawPositions[i] != strawPositions[i-1]) {
284 TLine* connection =
m_shapeCreator.createLine(strawPositions[i-1], strawPositions[i-1]);
285 connection->SetLineColor(16);
286 TObject* connectionObj = connection;
310 double tp_len = 2*10.;
315 trackpp->SetLineColor(
color );
317 TObject* trackppObj = trackpp;
327 TLine* trackp =
m_shapeCreator.createLine( trkPosition, trkDirection, tp_len );
328 trackp->SetLineWidth( 2 );
329 trackp->SetLineColor(
color );
332 TObject* trackpObj = trackp;
336 TLine* trackp_o =
m_shapeCreator.createOrthogonalLine( trkPosition, trkDirection, tp_len );
337 trackp_o->SetLineColor(
color );
340 TObject* trackp_oObj = trackp_o;
374 bool outlierOnTrack,
double trackRadius) {
376 const double tube_radius = 2.;
377 const double radiusOfStrawCenters = 823.9;
379 const double phiScale = 1000.;
381 double Rho = radiusOfStrawCenters;
382 if (onTrack && (trackRadius > 0.)) {
386 std::vector<TObject*>* geometry=0;
389 if (onTrack && !outlierOnTrack ) {
392 }
else if (onTrack && outlierOnTrack) {
401 if (driftRadius != 0.0) {
402 TEllipse* hit =
m_shapeCreator.createEllipse( strawPosition, driftRadius, std::atan(driftRadius / Rho) * phiScale );
403 hit->SetLineColor( color_hit );
404 hit->SetLineWidth( 2 );
407 TObject* hitObj = hit;
408 geometry->push_back(hitObj);
411 TEllipse* hit =
m_shapeCreator.createEllipse( strawPosition, 1.15, std::atan(1.15 / Rho) * phiScale );
412 hit->SetLineColor( color_hit );
413 hit->SetFillColor( color_hit );
414 hit->SetLineWidth( 2 );
415 TObject* hitObj = hit;
416 geometry->push_back(hitObj);
420 TEllipse* tube =
m_shapeCreator.createEllipse( strawPosition, tube_radius, std::atan(tube_radius / Rho) * phiScale );
421 tube->SetLineColor( color_tube );
424 TObject* tubeObj = tube;
425 geometry->push_back(tubeObj);
428 TEllipse* tube_c =
m_shapeCreator.createEllipse( strawPosition, 0.05, std::atan(0.05 / Rho) * phiScale );
429 tube_c->SetLineColor( color_tube );
430 tube_c->SetFillColor( color_tube );
433 TObject* tube_cObj = tube_c;
434 geometry->push_back(tube_cObj);
436 double l = sqrt(strawPosition.y()*strawPosition.y() + strawPosition.x()*strawPosition.x());
437 TVector3 maxRadiusInPhiPosition1(Rho*strawPosition.x()/l - driftRadius * strawPosition.y()/l,
438 Rho*strawPosition.y()/l + driftRadius * strawPosition.x()/l,
441 TEllipse* maxRad1 =
m_shapeCreator.createEllipse( maxRadiusInPhiPosition1, 0.05, std::atan(0.05 / Rho) * phiScale );
442 maxRad1->SetLineColor( color_hit );
443 maxRad1->SetFillColor( color_hit );
446 TObject* maxRad1Obj = maxRad1;
447 geometry->push_back(maxRad1Obj);
448 TVector3 maxRadiusInPhiPosition2(Rho*strawPosition.x()/l + driftRadius * strawPosition.y()/l,
449 Rho*strawPosition.y()/l - driftRadius * strawPosition.x()/l,
452 TEllipse* maxRad2 =
m_shapeCreator.createEllipse( maxRadiusInPhiPosition2, 0.05, std::atan(0.05 / Rho) * phiScale );
453 maxRad2->SetLineColor( color_hit );
454 maxRad2->SetFillColor( color_hit );
457 TObject* maxRad2Obj = maxRad2;
458 geometry->push_back(maxRad2Obj);
virtual void displayTRT_Measurement(GlobalPosition &strawPosition, double driftRadius, bool onTrack, bool outlierOnTrack, double=0.)
create the graphic objects for a single TRT measurement
virtual void displayCompetingTRT_ROT(std::vector< GlobalPosition > &strawPositions, std::vector< double > driftRadii, std::vector< double > assgnProbs, GlobalDirection &trkDirection)
create the graphic objects for a single CompetingTRT_DriftCirclesOnTrack
virtual void displayTRT_MeasurementOnTrack(GlobalPosition &strawPosition, double driftRadius, GlobalDirection &trkDirection, bool isOutlier, double=0.)
create the graphic objects for a single TRT measurement on track
virtual void displayCompetingTRT_ROT(std::vector< GlobalPosition > &strawPositions, std::vector< double > driftRadii, std::vector< double > assgnProbs, GlobalDirection &trkDirection)
create the graphic objects for a single CompetingTRT_DriftCirclesOnTrack
virtual void displayTRT_Measurement(GlobalPosition &strawPosition, double driftRadius, bool onTrack, bool outlierOnTrack, double trackRadius=0.)
create the graphic objects for a single TRT measurement
virtual void displayTRT_MeasurementOnTrack(GlobalPosition &strawPosition, double driftRadius, GlobalDirection &trkDirection, bool isOutlier, double trackRadius=0.)
create the graphic objects for a single TRT measurement on track