100 #include "StFtpcDisplay.hh"
101 #include "StFtpcTrackingParams.hh"
102 #include "StFtpcConfMapPoint.hh"
103 #include "StFtpcTrack.hh"
109 #include "TPolyMarker.h"
110 #include "TPolyMarker3D.h"
134 mNumRowSegment = StFtpcTrackingParams::Instance()->RowSegments();
135 mNumPhiSegment = StFtpcTrackingParams::Instance()->PhiSegments();
136 mNumEtaSegment = StFtpcTrackingParams::Instance()->EtaSegments();
137 mBounds = mNumRowSegment * mNumPhiSegment * mNumEtaSegment;
156 found_hit =
new TPolyMarker3D();
157 found_hit_plus =
new TPolyMarker3D();
158 found_hit_minus =
new TPolyMarker3D();
159 geant_hit =
new TPolyMarker3D();
160 geant_hit_plus =
new TPolyMarker3D();
161 geant_hit_minus =
new TPolyMarker3D();
162 unused_hit =
new TPolyMarker3D();
163 unused_hit_plus =
new TPolyMarker3D();
164 unused_hit_minus =
new TPolyMarker3D();
165 wrong_hit =
new TPolyMarker3D();
166 wrong_hit_plus =
new TPolyMarker3D();
167 wrong_hit_minus =
new TPolyMarker3D();
170 found_value_minus = 0;
171 found_value_plus = 0;
173 unused_value_minus = 0;
174 unused_value_plus = 0;
176 geant_value_minus = 0;
177 geant_value_plus = 0;
179 unused_value_minus = 0;
180 unused_value_plus = 0;
182 wrong_value_minus = 0;
183 wrong_value_plus = 0;
191 mNumRowSegment = StFtpcTrackingParams::Instance()->RowSegments();
192 mNumPhiSegment = StFtpcTrackingParams::Instance()->PhiSegments();
193 mNumEtaSegment = StFtpcTrackingParams::Instance()->EtaSegments();
194 mBounds = mNumRowSegment * mNumPhiSegment * mNumEtaSegment;
213 found_hit =
new TPolyMarker3D();
214 found_hit_plus =
new TPolyMarker3D();
215 found_hit_minus =
new TPolyMarker3D();
216 geant_hit =
new TPolyMarker3D();
217 geant_hit_plus =
new TPolyMarker3D();
218 geant_hit_minus =
new TPolyMarker3D();
219 unused_hit =
new TPolyMarker3D();
220 unused_hit_plus =
new TPolyMarker3D();
221 unused_hit_minus =
new TPolyMarker3D();
222 wrong_hit =
new TPolyMarker3D();
223 wrong_hit_plus =
new TPolyMarker3D();
224 wrong_hit_minus =
new TPolyMarker3D();
227 found_value_minus = 0;
228 found_value_plus = 0;
230 unused_value_minus = 0;
231 unused_value_plus = 0;
233 geant_value_minus = 0;
234 geant_value_plus = 0;
236 unused_value_minus = 0;
237 unused_value_plus = 0;
239 wrong_value_minus = 0;
240 wrong_value_plus = 0;
248 mNumRowSegment = StFtpcTrackingParams::Instance()->RowSegments();
249 mNumPhiSegment = StFtpcTrackingParams::Instance()->PhiSegments();
250 mNumEtaSegment = StFtpcTrackingParams::Instance()->EtaSegments();
251 mBounds = mNumRowSegment * mNumPhiSegment * mNumEtaSegment;
255 mGeantTrack = geanttracks;
256 mGeantHit = geanthits;
270 found_hit =
new TPolyMarker3D();
271 found_hit_plus =
new TPolyMarker3D();
272 found_hit_minus =
new TPolyMarker3D();
273 geant_hit =
new TPolyMarker3D();
274 geant_hit_plus =
new TPolyMarker3D();
275 geant_hit_minus =
new TPolyMarker3D();
276 unused_hit =
new TPolyMarker3D();
277 unused_hit_plus =
new TPolyMarker3D();
278 unused_hit_minus =
new TPolyMarker3D();
279 wrong_hit =
new TPolyMarker3D();
280 wrong_hit_plus =
new TPolyMarker3D();
281 wrong_hit_minus =
new TPolyMarker3D();
284 found_value_minus = 0;
285 found_value_plus = 0;
287 unused_value_minus = 0;
288 unused_value_plus = 0;
290 geant_value_minus = 0;
291 geant_value_plus = 0;
293 unused_value_minus = 0;
294 unused_value_plus = 0;
296 wrong_value_minus = 0;
297 wrong_value_plus = 0;
301 StFtpcDisplay::~StFtpcDisplay()
308 delete found_hit_plus;
309 delete found_hit_minus;
311 delete unused_value_minus;
312 delete unused_value_plus;
314 delete geant_hit_plus;
315 delete geant_hit_minus;
317 delete unused_hit_plus;
318 delete unused_hit_minus;
320 delete wrong_hit_plus;
321 delete wrong_hit_minus;
325 void StFtpcDisplay::WriteData(Char_t *filename)
329 TFile file(filename,
"RECREATE");
336 Int_t track_entries = mTrack->GetEntriesFast();
340 found_line =
new TPolyLine3D[track_entries];
343 for (Int_t tracks = 0; tracks < track_entries; tracks++) {
346 Int_t cluster_entries = track->GetNumberOfPoints();
349 for (Int_t clusters = 0; clusters < cluster_entries && clusters < 100; clusters++) {
354 x[clusters] = (Float_t)(cluster->GetX());
355 y[clusters] = (Float_t)(cluster->GetY());
356 z[clusters] = (Float_t)(cluster->GetZ());
360 current_line = &(found_line[tracks]);
361 current_line =
new TPolyLine3D(cluster_entries, x, y, z,
"");
362 current_line->SetLineColor(3);
364 current_line->Write();
368 Int_t cluster_anz = mHit->GetEntriesFast();
371 found_value_plus =
new Float_t[3*cluster_anz];
372 found_value_minus =
new Float_t[3*cluster_anz];
373 found_value =
new Float_t[3*cluster_anz];
374 unused_value_plus =
new Float_t[3*cluster_anz];
375 unused_value_minus =
new Float_t[3*cluster_anz];
376 unused_value =
new Float_t[3*cluster_anz];
387 for (Int_t i = 0; i < cluster_anz; i++) {
392 found_value[cl++] = h->GetX();
393 found_value[cl++] = h->GetY();
395 if ((found_value[cl++] = h->GetZ())>0) {
396 found_value_plus[cl_plus++] = h->GetX();
397 found_value_plus[cl_plus++] = h->GetY();
398 found_value_plus[cl_plus++] = h->GetZ();
402 found_value_minus[cl_minus++] = h->GetX();
403 found_value_minus[cl_minus++] = h->GetY();
404 found_value_minus[cl_minus++] = h->GetZ();
410 unused_value[ucl++] = h->GetX();
411 unused_value[ucl++] = h->GetY();
413 if ((unused_value[ucl++] = h->GetZ())>0) {
414 unused_value_plus[ucl_plus++] = h->GetX();
415 unused_value_plus[ucl_plus++] = h->GetY();
416 unused_value_plus[ucl_plus++] = h->GetZ();
420 unused_value_minus[ucl_minus++] = h->GetX();
421 unused_value_minus[ucl_minus++] = h->GetY();
422 unused_value_minus[ucl_minus++] = h->GetZ();
428 found_hit->SetPolyMarker(cl/3, found_value, 1);
429 found_hit_plus->SetPolyMarker(cl_plus/3, found_value_plus, 1);
430 found_hit_minus->SetPolyMarker(cl_minus/3, found_value_minus, 1);
431 unused_hit->SetPolyMarker(ucl/3, unused_value, 1);
432 unused_hit_plus->SetPolyMarker(ucl_plus/3, unused_value_plus, 1);
433 unused_hit_minus->SetPolyMarker(ucl_minus/3, unused_value_minus, 1);
436 found_hit->SetMarkerColor(2);
437 found_hit_plus->SetMarkerColor(2);
438 found_hit_minus->SetMarkerColor(2);
439 unused_hit->SetMarkerColor(5);
440 unused_hit_plus->SetMarkerColor(5);
441 unused_hit_minus->SetMarkerColor(5);
444 found_hit_plus->Write();
445 found_hit_minus->Write();
447 unused_hit_plus->Write();
448 unused_hit_minus->Write();
454 void StFtpcDisplay::TrackInfo()
462 TCanvas *track_canvas =
new TCanvas(
"track_canvas",
"Tracks", 1580, 600);
463 track_canvas->Divide(3,1);
464 TH2F *phi_frame =
new TH2F(
"phi_frame",
"phi_frame", 60, -StFtpcTrackingParams::Instance()->OuterRadius(), StFtpcTrackingParams::Instance()->OuterRadius(), 60, -StFtpcTrackingParams::Instance()->OuterRadius(), StFtpcTrackingParams::Instance()->OuterRadius());
465 TH2F *eta_frame1 =
new TH2F(
"eta_frame1",
"eta_frame1", 120, -270, -150, 60, -StFtpcTrackingParams::Instance()->OuterRadius(), StFtpcTrackingParams::Instance()->OuterRadius());
466 TH2F *eta_frame2 =
new TH2F(
"eta_frame2",
"eta_frame2", 120, 150, 270, 60, -StFtpcTrackingParams::Instance()->OuterRadius(), StFtpcTrackingParams::Instance()->OuterRadius());
468 TH2F *circle_frame =
new TH2F(
"circle_frame",
"circle_frame", 60, -0.15, 0.15, 60, -0.15, 0.15);
469 TH2F *z_frame =
new TH2F(
"z_frame",
"z_frame", 540, -270, 270, 700, -7, 7);
471 TCanvas *fit_canvas =
new TCanvas(
"fit_canvas",
"Conformal Mapping Coordinates", 1000, 600);
472 fit_canvas->Divide(2,1);
487 TLine *phi_line =
new TLine[mNumPhiSegment];
489 {
for (Int_t i=0; i<mNumPhiSegment; i++) {
490 phi_line[i] = TLine(0., 0., StFtpcTrackingParams::Instance()->OuterRadius()*TMath::Cos(i*2*TMath::Pi()/mNumPhiSegment),
491 StFtpcTrackingParams::Instance()->OuterRadius()*TMath::Sin(i*2*TMath::Pi()/mNumPhiSegment));
494 TLine *eta_line =
new TLine[2*mNumEtaSegment+2];
497 {
for (Int_t i=0; i<=mNumEtaSegment/2.; i++) {
499 eta_value = (4.165-2.396)/(mNumEtaSegment/2.) * i + 2.396;
501 eta_line[i*2] = TLine(-270*TMath::Cos(TMath::ATan(TMath::Exp(-eta_value))*2.),
502 -270*TMath::Sin(TMath::ATan(TMath::Exp(-eta_value))*2.),
503 270*TMath::Cos(TMath::ATan(TMath::Exp(-eta_value))*2.),
504 270*TMath::Sin(TMath::ATan(TMath::Exp(-eta_value))*2.));
506 eta_line[2*i+1] = TLine( 270*TMath::Cos(TMath::ATan(TMath::Exp(-eta_value))*2.),
507 -270*TMath::Sin(TMath::ATan(TMath::Exp(-eta_value))*2.),
508 -270*TMath::Cos(TMath::ATan(TMath::Exp(-eta_value))*2.),
509 270*TMath::Sin(TMath::ATan(TMath::Exp(-eta_value))*2.));
514 Int_t entries = mTrack->GetEntriesFast();
516 TPolyMarker *phi_track = 0;
517 TPolyMarker *eta_track = 0;
519 TPolyMarker *circle_track = 0;
520 TPolyMarker *z_track = 0;
543 if (number > entries-1) {
544 cout <<
"Only " << entries <<
" Tracks in this event found!" << endl;
550 hits = (TObjArray *)(track->GetHits());
551 trackcluster = hits->GetEntriesFast();
553 if (phi_track)
delete phi_track;
554 phi_track =
new TPolyMarker(trackcluster, (Float_t*)0, (Float_t*)0,
"");
555 phi_track->SetMarkerStyle(4);
556 phi_track->SetMarkerSize(0.4);
558 if (eta_track)
delete eta_track;
559 eta_track =
new TPolyMarker(trackcluster, (Float_t*)0, (Float_t*)0,
"");
560 eta_track->SetMarkerStyle(4);
561 eta_track->SetMarkerSize(0.4);
563 if (circle_track)
delete circle_track;
564 circle_track =
new TPolyMarker(trackcluster, (Float_t*)0, (Float_t*)0,
"");
565 circle_track->SetMarkerStyle(4);
566 circle_track->SetMarkerSize(0.4);
568 if (z_track)
delete z_track;
569 z_track =
new TPolyMarker(trackcluster, (Float_t*)0, (Float_t*)0,
"");
570 z_track->SetMarkerStyle(4);
571 z_track->SetMarkerSize(0.4);
574 cout <<
"Track: " << number <<
" Cluster: " << trackcluster << endl;
576 {
for (Int_t j = 0; j < trackcluster; j++) {
579 cout <<
"#" << h->GetHitNumber() <<
" address:" << h << endl;
580 phi_track->SetPoint(j, h->GetX(), h->GetY());
581 eta_track->SetPoint(j, h->GetZ(), h->GetY());
582 circle_track->SetPoint(j, h->GetXprime(), h->GetYprime());
584 z_track->SetPoint(j, h->GetZv(), (track->GetRadius() * TMath::ASin((h->GetY() - track->GetCenterY()) / track->GetRadius()) - track->GetAlpha0())/1000.);
585 cout <<
"z: " << h->GetZv() <<
", " << (track->GetRadius() * TMath::ASin((h->GetY() - track->GetCenterY()) / track->GetRadius()) - track->GetAlpha0())/1000. << endl;
589 circle_frame->Draw();
590 circle_track->Draw(
"same");
593 z_track->Draw(
"same");
594 fit_canvas->Update();
599 {
for (Int_t i=0; i<mNumPhiSegment; i++) {
600 phi_line[i].Draw(
"same");
603 phi_track->Draw(
"same");
608 {
for (Int_t i=0; i<2*mNumEtaSegment+2; i++) {
609 eta_line[i].Draw(
"same");
612 eta_track->Draw(
"same");
617 {
for (Int_t i=0; i<2*mNumEtaSegment+2; i++) {
618 eta_line[i].Draw(
"same");
621 eta_track->Draw(
"same");
622 track_canvas->Update();
634 {
for (Int_t i = 0; i < entries; i++) {
637 hits = (TObjArray *)(track->GetHits());
638 trackcluster = hits->GetEntriesFast();
640 for (Int_t j = 0; j < trackcluster; j++) {
643 cout <<
"Track: " << i <<
" Cluster #" << j << endl;
651 cout <<
"Invalid argument - only (t)rack or (p)oint allowed!" << endl;
974 void StFtpcDisplay::ShowClusters()
978 Int_t cluster_anz = mHit->GetEntriesFast();
980 TCanvas *X_Yplus =
new TCanvas(
"X_Yplus",
"Blick in Beamrichtung +", 1100, 1100);
981 TCanvas *X_Yminus =
new TCanvas(
"X_Yminus",
"Blick in Beamrichtung -", 1100, 1100);
983 TH2F *xy =
new TH2F(
"xy",
"xy", 60, -StFtpcTrackingParams::Instance()->OuterRadius(), StFtpcTrackingParams::Instance()->OuterRadius(), 60, -StFtpcTrackingParams::Instance()->OuterRadius(), StFtpcTrackingParams::Instance()->OuterRadius());
989 TMarker *ma =
new TMarker[cluster_anz];
991 for (Int_t i = 0; i < cluster_anz; i++) {
993 ma[i] = TMarker(h->GetX(), h->GetY(), 4);
995 ma[i].SetMarkerSize((TMath::Sqrt(h->GetX()*h->GetX()+h->GetY()*h->GetY()+h->GetZ()*h->GetZ())-163.)/98.*10.*0.1);
997 Int_t tn = h->GetTrackNumber();
1000 ma[i].SetMarkerColor(2);
1001 ma[i].SetMarkerStyle(8);
1005 Int_t color = ((tn%54)%6) +1;
1006 Int_t style = ((tn%54)%9) +2;
1008 if (color >= 2) color++;
1009 if (style >= 6) style+=18;
1010 if (style == 29) style=30;
1012 ma[i].SetMarkerColor(color);
1013 ma[i].SetMarkerStyle(style);
1015 if (h->GetZ() > 0) X_Yplus->cd();
1016 else X_Yminus->cd();
1027 void StFtpcDisplay::ShowTracks(Int_t trackanz, Int_t trackarray[])
1038 TCanvas *X_Y_Zplus =
new TCanvas(
"X_Y_Zplus",
"Event +", 600, 600);
1039 TCanvas *X_Y_Zminus =
new TCanvas(
"X_Y_Zminus",
"Event -", 600, 600);
1040 TCanvas *X_Y_Z =
new TCanvas(
"X_Y_Z",
"Event", 600, 600);
1043 TBRIK *origin =
new TBRIK(
"origin",
"origin",
"void", 0.1, 0.1, 0.1);
1046 TTUBE *ftpc1_out =
new TTUBE(
"ftpc1_out",
"Ftpc + (out)",
"void", StFtpcTrackingParams::Instance()->OuterRadius(), StFtpcTrackingParams::Instance()->OuterRadius(), (StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2., 1);
1047 TTUBE *ftpc1_in =
new TTUBE(
"ftpc1_in",
"Ftpc + (in)",
"void", StFtpcTrackingParams::Instance()->InnerRadius(), StFtpcTrackingParams::Instance()->InnerRadius(), (StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2., 1);
1048 TTUBE *ftpc2_out =
new TTUBE(
"ftpc2_out",
"Ftpc - (out)",
"void", StFtpcTrackingParams::Instance()->OuterRadius(), StFtpcTrackingParams::Instance()->OuterRadius(), (StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2., 1);
1049 TTUBE *ftpc2_in =
new TTUBE(
"ftpc2_in",
"Ftpc - (in)",
"void", StFtpcTrackingParams::Instance()->InnerRadius(), StFtpcTrackingParams::Instance()->InnerRadius(), (StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2., 1);
1052 ftpc1_out->SetNumberOfDivisions(50);
1053 ftpc1_in->SetNumberOfDivisions(50);
1054 ftpc2_out->SetNumberOfDivisions(50);
1055 ftpc2_in->SetNumberOfDivisions(50);
1058 origin->SetLineColor(1);
1059 ftpc1_out->SetLineColor(4);
1060 ftpc1_in->SetLineColor(4);
1061 ftpc2_out->SetLineColor(4);
1062 ftpc2_in->SetLineColor(4);
1065 TNode *node0 =
new TNode(
"node0",
"node0",
"origin");
1066 TNode *node2 =
new TNode(
"node2",
"node2",
"origin");
1067 TNode *node1 =
new TNode(
"node1",
"node1",
"origin");
1072 TNode *node01_out =
new TNode(
"node01_out",
"node01_out",
"ftpc1_out", 0, 0, StFtpcTrackingParams::Instance()->PadRowPosZ(0)+(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1073 TNode *node01_in =
new TNode(
"node01_in",
"node01_in",
"ftpc1_in", 0, 0, StFtpcTrackingParams::Instance()->PadRowPosZ(0)+(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1074 TNode *node02_out =
new TNode(
"node02_out",
"node02_out",
"ftpc2_out", 0, 0, -StFtpcTrackingParams::Instance()->PadRowPosZ(0)-(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1075 TNode *node02_in =
new TNode(
"node02_in",
"node02_in",
"ftpc2_in", 0, 0, -StFtpcTrackingParams::Instance()->PadRowPosZ(0)-(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1080 TNode *node2_out =
new TNode(
"node2_out",
"node2_out",
"ftpc2_out", 0, 0, -StFtpcTrackingParams::Instance()->PadRowPosZ(0)-(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1081 TNode *node2_in =
new TNode(
"node2_in",
"node2_in",
"ftpc2_in", 0, 0, -StFtpcTrackingParams::Instance()->PadRowPosZ(0)-(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1086 TNode *node1_out =
new TNode(
"node1_out",
"node1_out",
"ftpc1_out", 0, 0, StFtpcTrackingParams::Instance()->PadRowPosZ(0)+(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1087 TNode *node1_in =
new TNode(
"node1_in",
"node1_in",
"ftpc1_in", 0, 0, StFtpcTrackingParams::Instance()->PadRowPosZ(0)+(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1109 if (trackanz != -1) {
1111 if (trackanz == 0 || trackanz == -2) {
1112 Int_t track_entries = mTrack->GetEntriesFast();
1116 found_line =
new TPolyLine3D[track_entries];
1119 for (Int_t tracks = 0; tracks < track_entries; tracks++) {
1122 Int_t cluster_entries = track->GetNumberOfPoints();
1125 for (Int_t clusters = 0; clusters < cluster_entries && clusters < 100; clusters++) {
1130 x[clusters] = (Float_t)(cluster->GetX());
1131 y[clusters] = (Float_t)(cluster->GetY());
1132 z[clusters] = (Float_t)(cluster->GetZ());
1135 if (z[clusters]>0) X_Y_Zplus->cd();
1136 else X_Y_Zminus->cd();
1140 current_line = &(found_line[tracks]);
1141 current_line =
new TPolyLine3D(cluster_entries, x, y, z,
"");
1144 Int_t color = tracks%50+51;
1145 current_line->SetLineColor(color);
1148 current_line->Draw(
"Csame");
1151 current_line->Draw(
"Csame");
1156 Int_t track_entries = trackanz;
1160 found_line =
new TPolyLine3D[track_entries];
1163 for (Int_t tracks = 0; tracks < track_entries; tracks++) {
1164 track = (
StFtpcTrack *)mTrack->At(trackarray[tracks]);
1166 Int_t cluster_entries = track->GetNumberOfPoints();
1169 for (Int_t clusters = 0; clusters < cluster_entries; clusters++) {
1174 x[clusters] = (Float_t)(cluster->GetX());
1175 y[clusters] = (Float_t)(cluster->GetY());
1176 z[clusters] = (Float_t)(cluster->GetZ());
1179 if (z[clusters]>0) X_Y_Zplus->cd();
1180 else X_Y_Zminus->cd();
1184 current_line = &(found_line[tracks]);
1185 current_line =
new TPolyLine3D(cluster_entries, x, y, z,
"");
1188 current_line->SetLineColor(3);
1191 current_line->Draw(
"same");
1194 current_line->Draw(
"same");
1199 if (trackanz != -2) {
1200 Int_t cluster_anz = mHit->GetEntriesFast();
1203 found_value_plus =
new Float_t[3*cluster_anz];
1204 found_value_minus =
new Float_t[3*cluster_anz];
1205 found_value =
new Float_t[3*cluster_anz];
1213 for (Int_t i = 0; i < cluster_anz; i++) {
1216 if (trackanz == -1 && h->GetUsage() == 1) {
1221 found_value[cl++] = h->GetX();
1222 found_value[cl++] = h->GetY();
1224 if ((found_value[cl++] = h->GetZ())>0) {
1225 found_value_plus[cl_plus++] = h->GetX();
1226 found_value_plus[cl_plus++] = h->GetY();
1227 found_value_plus[cl_plus++] = h->GetZ();
1231 found_value_minus[cl_minus++] = h->GetX();
1232 found_value_minus[cl_minus++] = h->GetY();
1233 found_value_minus[cl_minus++] = h->GetZ();
1238 found_hit->SetPolyMarker(cl/3, found_value, 1);
1239 found_hit_plus->SetPolyMarker(cl_plus/3, found_value_plus, 1);
1240 found_hit_minus->SetPolyMarker(cl_minus/3, found_value_minus, 1);
1243 found_hit->SetMarkerColor(2);
1244 found_hit_plus->SetMarkerColor(2);
1245 found_hit_minus->SetMarkerColor(2);
1249 found_hit->Draw(
"same");
1251 found_hit_plus->Draw(
"same");
1253 found_hit_minus->Draw(
"same");
1259 node1->Draw(
"same");
1260 X_Y_Zplus->Update();
1264 node2->Draw(
"same");
1265 X_Y_Zminus->Update();
1269 node0->Draw(
"same");
1276 cout <<
"Please enter '+', '-' or 'b' to see one or both Ftpc's, 'q' to quit: ";
1280 if (a ==
'+') X_Y_Zplus->x3d();
1281 if (a ==
'-') X_Y_Zminus->x3d();
1282 if (a ==
'b') X_Y_Z->x3d();
1283 if (a ==
'q')
break;
1302 mX_Y_Zplus =
new TCanvas(
"X_Y_Zplus",
"Event +", 600, 600);
1303 mX_Y_Zminus =
new TCanvas(
"X_Y_Zminus",
"Event -", 600, 600);
1304 mX_Y_Z =
new TCanvas(
"X_Y_Z",
"Event", 600, 600);
1307 TBRIK *origin =
new TBRIK(
"origin",
"origin",
"void", 0.1, 0.1, 0.1);
1310 TTUBE *ftpc1_out =
new TTUBE(
"ftpc1_out",
"Ftpc + (out)",
"void", StFtpcTrackingParams::Instance()->OuterRadius(), StFtpcTrackingParams::Instance()->OuterRadius(), (StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2., 1);
1311 TTUBE *ftpc1_in =
new TTUBE(
"ftpc1_in",
"Ftpc + (in)",
"void", StFtpcTrackingParams::Instance()->InnerRadius(), StFtpcTrackingParams::Instance()->InnerRadius(), (StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2., 1);
1312 TTUBE *ftpc2_out =
new TTUBE(
"ftpc2_out",
"Ftpc - (out)",
"void", StFtpcTrackingParams::Instance()->OuterRadius(), StFtpcTrackingParams::Instance()->OuterRadius(), (StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2., 1);
1313 TTUBE *ftpc2_in =
new TTUBE(
"ftpc2_in",
"Ftpc - (in)",
"void", StFtpcTrackingParams::Instance()->InnerRadius(), StFtpcTrackingParams::Instance()->InnerRadius(), (StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2., 1);
1316 ftpc1_out->SetNumberOfDivisions(50);
1317 ftpc1_in->SetNumberOfDivisions(50);
1318 ftpc2_out->SetNumberOfDivisions(50);
1319 ftpc2_in->SetNumberOfDivisions(50);
1322 origin->SetLineColor(1);
1323 ftpc1_out->SetLineColor(4);
1324 ftpc1_in->SetLineColor(4);
1325 ftpc2_out->SetLineColor(4);
1326 ftpc2_in->SetLineColor(4);
1335 mNode0 =
new TNode(
"node0",
"node0",
"origin");
1336 mNode2 =
new TNode(
"node2",
"node2",
"origin");
1337 mNode1 =
new TNode(
"node1",
"node1",
"origin");
1342 TNode *node01_out =
new TNode(
"node01_out",
"node01_out",
"ftpc1_out", 0, 0, StFtpcTrackingParams::Instance()->PadRowPosZ(0)+(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1343 TNode *node01_in =
new TNode(
"node01_in",
"node01_in",
"ftpc1_in", 0, 0, StFtpcTrackingParams::Instance()->PadRowPosZ(0)+(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1344 TNode *node02_out =
new TNode(
"node02_out",
"node02_out",
"ftpc2_out", 0, 0, -StFtpcTrackingParams::Instance()->PadRowPosZ(0)-(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1345 TNode *node02_in =
new TNode(
"node02_in",
"node02_in",
"ftpc2_in", 0, 0, -StFtpcTrackingParams::Instance()->PadRowPosZ(0)-(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1350 TNode *node2_out =
new TNode(
"node2_out",
"node2_out",
"ftpc2_out", 0, 0, -StFtpcTrackingParams::Instance()->PadRowPosZ(0)-(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1351 TNode *node2_in =
new TNode(
"node2_in",
"node2_in",
"ftpc2_in", 0, 0, -StFtpcTrackingParams::Instance()->PadRowPosZ(0)-(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1357 TNode *node1_out =
new TNode(
"node1_out",
"node1_out",
"ftpc1_out", 0, 0, StFtpcTrackingParams::Instance()->PadRowPosZ(0)+(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1358 TNode *node1_in =
new TNode(
"node1_in",
"node1_in",
"ftpc1_in", 0, 0, StFtpcTrackingParams::Instance()->PadRowPosZ(0)+(StFtpcTrackingParams::Instance()->PadRowPosZ(9)-StFtpcTrackingParams::Instance()->PadRowPosZ(0))/2.);
1376 Bool_t geant = (Bool_t) kFALSE;
1377 Bool_t found = (Bool_t) kTRUE;
1378 Bool_t electrons = (Bool_t) kTRUE;
1379 Bool_t non_vtx = (Bool_t) kTRUE;
1380 Bool_t geant_hits = (Bool_t) kTRUE;
1381 Bool_t good_geant = (Bool_t) kTRUE;
1382 Bool_t good_found = (Bool_t) kTRUE;
1383 Bool_t split = (Bool_t) kTRUE;
1384 Bool_t unclean = (Bool_t) kTRUE;
1385 Bool_t st = (Bool_t) kFALSE;
1386 Bool_t found_hits = (Bool_t) kTRUE;
1387 Bool_t blue = (Bool_t) kFALSE;
1389 Float_t eta_low_geant = 2.0;
1390 Float_t eta_up_geant = 4.4;
1391 Float_t pt_low_geant = 0.0;
1392 Float_t pt_up_geant = 5.0;
1394 Float_t eta_low_found = 2.0;
1395 Float_t eta_up_found = 4.4;
1396 Float_t pt_low_found = 0.0;
1397 Float_t pt_up_found = 5.0;
1402 cout << endl << endl;
1403 cout <<
"Display (f)ound tracks..................: ";
1405 cout <<
"---------------------------------------------" << endl;
1406 cout <<
" Show (g)ood tracks..............[red]: ";
1408 cout <<
" (s)plit tracks...........[green]: ";
1410 cout <<
" (u)nclean tracks........[yellow]: ";
1412 cout <<
" sho(r)t tracks..................: ";
1414 cout <<
" (c)lusters......................: ";
1417 cout <<
"Display (G)EANT tracks..................: ";
1419 cout <<
"---------------------------------------------" << endl;
1420 cout <<
" Show (e)lectron tracks..........[red]: ";
1422 cout <<
" (n)on main vertex tracks [green]: ";
1424 cout <<
" g(o)od tracks...........[yellow]: ";
1426 cout <<
" c(l)usters................[grey]: ";
1428 cout <<
"Color of tracks changed to (b)lue.......: ";
1431 cout <<
"(E)ta range (2.0 - 4.4) : " << eta_low_geant <<
" - " << eta_up_geant << endl;
1432 cout <<
"(p)t range (0.0 - 5.0 GeV): " << pt_low_geant <<
" - " << pt_up_geant << endl;
1434 cout <<
"Show (+), (-), or bo(t)h Ftpcs or (q)uit: ";
1437 if (a ==
'f' || a ==
'g' || a ==
's' || a ==
'u' || a ==
'c' || a ==
'G' || a ==
'e' || a ==
'n' || a ==
'o' || a ==
'l' || a==
'E' || a ==
'p' || a ==
'b' || a ==
'r') {
1439 if (a ==
'f') found = !found;
1440 if (a ==
'g') good_found = !good_found;
1441 if (a ==
's') split = !split ;
1442 if (a ==
'u') unclean = !unclean;
1443 if (a ==
'r') st = !st;
1444 if (a ==
'c') found_hits = !found_hits;
1445 if (a ==
'G') geant = !geant;
1446 if (a ==
'e') electrons = !electrons;
1447 if (a ==
'n') non_vtx = !non_vtx;
1448 if (a ==
'o') good_geant = !good_geant;
1449 if (a ==
'l') geant_hits = !geant_hits;
1450 if (a ==
'b') blue = !blue;
1455 cout <<
"Enter eta lower and upper limit (" << eta_low_geant <<
" - " << eta_up_geant <<
"): ";
1456 cin >> eta_low_geant >> eta_up_geant;
1461 cout <<
"Enter pt lower and upper limit (" << pt_low_geant <<
" - " << pt_up_geant <<
"): ";
1462 cin >> pt_low_geant >> pt_up_geant;
1468 if (a ==
'q')
break;
1476 if (split) sp = splitArr;
1477 if (unclean) uncl = uncleanArr;
1478 if (found_hits) hits = clusterArr;
1483 FillGeant(electrons, non_vtx, good_geant, geant_hits, eta_low_geant, eta_up_geant, pt_low_geant, pt_up_geant, blue);
1487 FillFound(good_found, st, sp, uncl, hits, eta_low_found, eta_up_found, pt_low_found, pt_up_found);
1491 if (a ==
'+') mX_Y_Zplus->x3d();
1492 if (a ==
'-') mX_Y_Zminus->x3d();
1493 if (a ==
't') mX_Y_Z->x3d();
1509 void StFtpcDisplay::FillGeant(Bool_t electrons, Bool_t non_vtx, Bool_t good, Bool_t geant_hits, Float_t eta_low, Float_t eta_up, Float_t pt_low, Float_t pt_up, Bool_t blue)
1523 Float_t shift = .05;
1525 Int_t track_entries = mGeantTrack->GetEntriesFast();
1526 geant_line =
new TPolyLine3D[track_entries];
1529 for (Int_t tracks = 0; tracks < track_entries; tracks++) {
1532 if ((track->GetPid() <= 3 && !electrons) ||
1533 (!track->ComesFromMainVertex() && track->GetPid()>3 && !non_vtx) ||
1534 (track->ComesFromMainVertex() && track->GetPid()>3 && !good) ||
1535 TMath::Abs(track->GetEta()) < eta_low || TMath::Abs(track->GetEta()) > eta_up ||
1536 track->GetPt() < pt_low || track->GetPt() > pt_up) {
1541 Int_t cluster_entries = track->GetNumberOfPoints();
1544 for (Int_t clusters = 0; clusters < cluster_entries && clusters < 100; clusters++) {
1549 x[clusters] = (Float_t)(cluster->GetX()-shift);
1550 y[clusters] = (Float_t)(cluster->GetY()-shift);
1551 z[clusters] = (Float_t)(cluster->GetZ());
1554 if (z[clusters]>0) mX_Y_Zplus->cd();
1555 else mX_Y_Zminus->cd();
1559 current_line = &(geant_line[tracks]);
1560 current_line =
new TPolyLine3D(cluster_entries, x, y, z,
"");
1571 if (track->GetPid()<=3) {
1577 if (track->ComesFromMainVertex()) {
1587 current_line->SetLineColor(color);
1590 current_line->Draw(
"same");
1593 current_line->Draw(
"same");
1599 Int_t cluster_anz = mGeantHit->GetEntriesFast();
1602 geant_value_plus =
new Float_t[3*cluster_anz];
1603 geant_value_minus =
new Float_t[3*cluster_anz];
1604 geant_value =
new Float_t[3*cluster_anz];
1612 for (Int_t i = 0; i < cluster_anz; i++) {
1616 geant_value[cl++] = h->GetX()-shift;
1617 geant_value[cl++] = h->GetY()-shift;
1619 if ((geant_value[cl++] = h->GetZ())>0) {
1620 geant_value_plus[cl_plus++] = h->GetX()-shift;
1621 geant_value_plus[cl_plus++] = h->GetY()-shift;
1622 geant_value_plus[cl_plus++] = h->GetZ();
1626 geant_value_minus[cl_minus++] = h->GetX()-shift;
1627 geant_value_minus[cl_minus++] = h->GetY()-shift;
1628 geant_value_minus[cl_minus++] = h->GetZ();
1633 geant_hit->SetPolyMarker(cl/3, geant_value, 1);
1634 geant_hit_plus->SetPolyMarker(cl_plus/3, geant_value_plus, 1);
1635 geant_hit_minus->SetPolyMarker(cl_minus/3, geant_value_minus, 1);
1638 geant_hit->SetMarkerColor(1);
1639 geant_hit_plus->SetMarkerColor(1);
1640 geant_hit_minus->SetMarkerColor(1);
1644 geant_hit->Draw(
"same");
1646 geant_hit_plus->Draw(
"same");
1648 geant_hit_minus->Draw(
"same");
1652 mX_Y_Zplus->Update();
1653 mX_Y_Zminus->Update();
1660 void StFtpcDisplay::FillFound(Bool_t good_found, Bool_t st,
MIntArray *split,
MIntArray *unclean,
MIntArray *found_hits, Float_t eta_low, Float_t eta_up, Float_t pt_low, Float_t pt_up)
1670 Float_t *x =
new Float_t[StFtpcTrackingParams::Instance()->NumberOfPadRowsPerSide()];
1671 Float_t *y =
new Float_t[StFtpcTrackingParams::Instance()->NumberOfPadRowsPerSide()];
1672 Float_t *z =
new Float_t[StFtpcTrackingParams::Instance()->NumberOfPadRowsPerSide()];
1674 Int_t track_entries = mTrack->GetEntriesFast();
1675 Bool_t *good_track_to_show =
new Bool_t[track_entries];
1677 found_line =
new TPolyLine3D[track_entries];
1679 for (Int_t good_counter = 0; good_counter < track_entries; good_counter++) {
1682 if (TMath::Abs(track->GetEta()) < eta_low || TMath::Abs(track->GetEta()) > eta_up || track->GetPt() < pt_low || track->GetPt() > pt_up) {
1683 good_track_to_show[good_counter] = (Bool_t) kFALSE;
1687 good_track_to_show[good_counter] = (Bool_t) kTRUE;
1693 for (Int_t unclean_counter = 0; unclean_counter < unclean->GetSize(); unclean_counter++) {
1694 good_track_to_show[unclean->At(unclean_counter)] = (Bool_t) kFALSE;
1700 for (Int_t split_counter = 0; split_counter < split->GetSize(); split_counter++) {
1701 good_track_to_show[split->At(split_counter)] = (Bool_t) kFALSE;
1708 for (Int_t split_counter = 0; split_counter < split->GetSize(); split_counter++) {
1709 track = (
StFtpcTrack *)mTrack->At(split->At(split_counter));
1711 if (TMath::Abs(track->GetEta()) < eta_low || TMath::Abs(track->GetEta()) > eta_up || track->GetPt() < pt_low || track->GetPt() > pt_up) {
1715 Int_t cluster_entries = track->GetNumberOfPoints();
1718 for (Int_t clusters = 0; clusters < cluster_entries; clusters++) {
1723 x[clusters] = (Float_t)(cluster->GetX());
1724 y[clusters] = (Float_t)(cluster->GetY());
1725 z[clusters] = (Float_t)(cluster->GetZ());
1728 if (z[clusters]>0) mX_Y_Zplus->cd();
1729 else mX_Y_Zminus->cd();
1733 current_line = &(found_line[entry++]);
1734 current_line =
new TPolyLine3D(cluster_entries, x, y, z,
"");
1737 current_line->SetLineColor(3);
1740 current_line->Draw(
"same");
1743 current_line->Draw(
"same");
1749 for (Int_t unclean_counter = 0; unclean_counter < unclean->GetSize(); unclean_counter++) {
1750 track = (
StFtpcTrack *)mTrack->At(unclean->At(unclean_counter));
1752 if (TMath::Abs(track->GetEta()) < eta_low || TMath::Abs(track->GetEta()) > eta_up || track->GetPt() < pt_low || track->GetPt() > pt_up) {
1756 Int_t cluster_entries = track->GetNumberOfPoints();
1759 for (Int_t clusters = 0; clusters < cluster_entries; clusters++) {
1764 x[clusters] = (Float_t)(cluster->GetX());
1765 y[clusters] = (Float_t)(cluster->GetY());
1766 z[clusters] = (Float_t)(cluster->GetZ());
1769 if (z[clusters]>0) mX_Y_Zplus->cd();
1770 else mX_Y_Zminus->cd();
1774 current_line = &(found_line[entry++]);
1775 current_line =
new TPolyLine3D(cluster_entries, x, y, z,
"");
1778 current_line->SetLineColor(5);
1781 current_line->Draw(
"same");
1784 current_line->Draw(
"same");
1791 for (Int_t tracks = 0; tracks < track_entries; tracks++) {
1793 if (!good_track_to_show[tracks]) {
1800 Int_t cluster_entries = track->GetNumberOfPoints();
1803 for (Int_t clusters = 0; clusters < cluster_entries; clusters++) {
1808 x[clusters] = (Float_t)(cluster->GetX());
1809 y[clusters] = (Float_t)(cluster->GetY());
1810 z[clusters] = (Float_t)(cluster->GetZ());
1813 if (z[clusters]>0) mX_Y_Zplus->cd();
1814 else mX_Y_Zminus->cd();
1818 current_line = &(found_line[tracks]);
1819 current_line =
new TPolyLine3D(cluster_entries, x, y, z,
"");
1822 current_line->SetLineColor(2);
1825 current_line->Draw(
"same");
1828 current_line->Draw(
"same");
1836 for (Int_t tracks = 0; tracks < track_entries; tracks++) {
1840 Int_t cluster_entries = track->GetNumberOfPoints();
1842 if (cluster_entries < StFtpcTrackingParams::Instance()->NumberOfPadRowsPerSide() && track->GetRFirst() > StFtpcTrackingParams::Instance()->InnerRadius() && track->GetRLast() < StFtpcTrackingParams::Instance()->OuterRadius()) {
1845 for (Int_t clusters = 0; clusters < cluster_entries; clusters++) {
1850 x[clusters] = (Float_t)(cluster->GetX());
1851 y[clusters] = (Float_t)(cluster->GetY());
1852 z[clusters] = (Float_t)(cluster->GetZ());
1855 if (z[clusters]>0) mX_Y_Zplus->cd();
1856 else mX_Y_Zminus->cd();
1860 current_line = &(found_line[tracks]);
1861 current_line =
new TPolyLine3D(cluster_entries, x, y, z,
"");
1864 current_line->SetLineColor(2);
1867 current_line->Draw(
"same");
1870 current_line->Draw(
"same");
1877 Int_t cluster_anz = mHit->GetEntriesFast();
1880 found_value_plus =
new Float_t[3*cluster_anz];
1881 found_value_minus =
new Float_t[3*cluster_anz];
1882 found_value =
new Float_t[3*cluster_anz];
1883 unused_value_plus =
new Float_t[3*cluster_anz];
1884 unused_value_minus =
new Float_t[3*cluster_anz];
1885 unused_value =
new Float_t[3*cluster_anz];
1886 wrong_value_plus =
new Float_t[3*cluster_anz];
1887 wrong_value_minus =
new Float_t[3*cluster_anz];
1888 wrong_value =
new Float_t[3*cluster_anz];
1891 Int_t found_cl_plus = 0;
1892 Int_t found_cl_minus = 0;
1894 Int_t unused_cl_plus = 0;
1895 Int_t unused_cl_minus = 0;
1896 Int_t unused_cl = 0;
1897 Int_t wrong_cl_plus = 0;
1898 Int_t wrong_cl_minus = 0;
1902 for (Int_t i = 0; i < cluster_anz; i++) {
1905 if (found_hits->At(h->GetHitNumber()) == 1) {
1908 found_value[found_cl++] = h->GetX();
1909 found_value[found_cl++] = h->GetY();
1911 if ((found_value[found_cl++] = h->GetZ())>0) {
1912 found_value_plus[found_cl_plus++] = h->GetX();
1913 found_value_plus[found_cl_plus++] = h->GetY();
1914 found_value_plus[found_cl_plus++] = h->GetZ();
1918 found_value_minus[found_cl_minus++] = h->GetX();
1919 found_value_minus[found_cl_minus++] = h->GetY();
1920 found_value_minus[found_cl_minus++] = h->GetZ();
1924 else if (found_hits->At(h->GetHitNumber()) == 0) {
1926 unused_value[unused_cl++] = h->GetX();
1927 unused_value[unused_cl++] = h->GetY();
1929 if ((unused_value[unused_cl++] = h->GetZ())>0) {
1930 unused_value_plus[unused_cl_plus++] = h->GetX();
1931 unused_value_plus[unused_cl_plus++] = h->GetY();
1932 unused_value_plus[unused_cl_plus++] = h->GetZ();
1936 unused_value_minus[unused_cl_minus++] = h->GetX();
1937 unused_value_minus[unused_cl_minus++] = h->GetY();
1938 unused_value_minus[unused_cl_minus++] = h->GetZ();
1942 else if (found_hits->At(h->GetHitNumber()) == -1) {
1944 wrong_value[wrong_cl++] = h->GetX();
1945 wrong_value[wrong_cl++] = h->GetY();
1947 if ((wrong_value[wrong_cl++] = h->GetZ())>0) {
1948 wrong_value_plus[wrong_cl_plus++] = h->GetX();
1949 wrong_value_plus[wrong_cl_plus++] = h->GetY();
1950 wrong_value_plus[wrong_cl_plus++] = h->GetZ();
1954 wrong_value_minus[wrong_cl_minus++] = h->GetX();
1955 wrong_value_minus[wrong_cl_minus++] = h->GetY();
1956 wrong_value_minus[wrong_cl_minus++] = h->GetZ();
1962 found_hit->SetPolyMarker(found_cl/3, found_value, 1);
1963 found_hit_plus->SetPolyMarker(found_cl_plus/3, found_value_plus, 1);
1964 found_hit_minus->SetPolyMarker(found_cl_minus/3, found_value_minus, 1);
1965 unused_hit->SetPolyMarker(unused_cl/3, unused_value, 1);
1966 unused_hit_plus->SetPolyMarker(unused_cl_plus/3, unused_value_plus, 1);
1967 unused_hit_minus->SetPolyMarker(unused_cl_minus/3, unused_value_minus, 1);
1968 wrong_hit->SetPolyMarker(wrong_cl/3, wrong_value, 1);
1969 wrong_hit_plus->SetPolyMarker(wrong_cl_plus/3, wrong_value_plus, 1);
1970 wrong_hit_minus->SetPolyMarker(wrong_cl_minus/3, wrong_value_minus, 1);
1973 found_hit->SetMarkerColor(5);
1974 found_hit_plus->SetMarkerColor(5);
1975 found_hit_minus->SetMarkerColor(5);
1976 unused_hit->SetMarkerColor(1);
1977 unused_hit_plus->SetMarkerColor(1);
1978 unused_hit_minus->SetMarkerColor(1);
1979 wrong_hit->SetMarkerColor(2);
1980 wrong_hit_plus->SetMarkerColor(2);
1981 wrong_hit_minus->SetMarkerColor(2);
1985 found_hit->Draw(
"same");
1986 unused_hit->Draw(
"same");
1987 wrong_hit->Draw(
"same");
1989 found_hit_plus->Draw(
"same");
1990 unused_hit_plus->Draw(
"same");
1991 wrong_hit_plus->Draw(
"same");
1993 found_hit_minus->Draw(
"same");
1994 unused_hit_minus->Draw(
"same");
1995 wrong_hit_minus->Draw(
"same");
1999 mX_Y_Zplus->Update();
2000 mX_Y_Zminus->Update();
2006 delete[] good_track_to_show;
2012 void StFtpcDisplay::DeleteFound()
2017 delete[] found_line;
2022 delete[] found_value;
2026 if (found_value_plus) {
2027 delete[] found_value_plus;
2028 found_value_plus = 0;
2031 if (found_value_minus) {
2032 delete[] found_value_minus;
2033 found_value_minus = 0;
2037 delete[] unused_value;
2041 if (unused_value_plus) {
2042 delete[] unused_value_plus;
2043 unused_value_plus = 0;
2046 if (unused_value_minus) {
2047 delete[] unused_value_minus;
2048 unused_value_minus = 0;
2052 delete[] wrong_value;
2056 if (wrong_value_plus) {
2057 delete[] wrong_value_plus;
2058 wrong_value_plus = 0;
2061 if (wrong_value_minus) {
2062 delete[] wrong_value_minus;
2063 wrong_value_minus = 0;
2070 void StFtpcDisplay::DeleteGeant()
2075 delete[] geant_line;
2080 delete[] geant_value;
2084 if (geant_value_plus) {
2085 delete[] geant_value_plus;
2086 geant_value_plus = 0;
2089 if (geant_value_minus) {
2090 delete[] geant_value_minus;
2091 geant_value_minus = 0;
2097 void StFtpcDisplay::DrawNodes()
2116 void StFtpcDisplay::DeleteAll()
2125 void StFtpcDisplay::OnOff(Bool_t on)
2130 cout <<
"On" << endl;
2134 cout <<
"Off" << endl;
StFtpcDisplay()
wrong found hit coordinates of negative Ftpc