StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
viz2.C
1 //usr/bin/env root -l -b -q $0'('$1')'; exit $?
2 #include "TFile.h"
3 #include "TH1F.h"
4 #include "TH2F.h"
5 #include "TTree.h"
6 
7 
8 TFile * fData;
9 TTree * fwd;
10 TH2 * hFrame;
11 TCanvas *gCan;
12 TPad *padRZ, *padXY, *padStat;
13 
14 float LegendX, LegendY;
15 float lineScale = 1.5;
16 
17 enum ProjectionType { kXY, kRZ, kRZSigned, kXZ, kYZ };
18 
19 float xx( float x, float y, float z, ProjectionType proj = kRZ ){
20 
21  if ( proj == kRZ || proj == kRZSigned){
22  return z;//(TMath::ATan2( y, x ) + 2*3.1415926 )/ (2*3.14159) * 360;
23  } else if ( proj == kXY ){
24  return x;
25  } else if ( proj == kXZ ){
26  return z;
27  } else if ( proj == kYZ ){
28  return z;
29  }
30 
31  return x;
32 }
33 
34 float yy( float x, float y, float z, ProjectionType proj = kRZ ){
35 
36  if ( proj == kRZ ){
37  float r = sqrt( pow(x, 2) + pow(y, 2) );
38  return r;
39  } else if ( proj == kXY ){
40  return y;
41  } else if ( proj == kRZSigned ){
42  float r = sqrt( pow(x, 2) + pow(y, 2) );
43  if ( y == 0 ) return r;
44  r *= y / fabs(y);
45  return r;
46  } else if ( proj == kXZ ){
47  return x;
48  } else if ( proj == kYZ ){
49  return y;
50  }
51 
52  return y;
53 }
54 
55 void viz_points(const char* name, const char* cmd, int color, int eventIndex, ProjectionType projType, bool Legend = false ){
56 
57  fwd->Draw( cmd, "", "goff", 1, eventIndex );
58  int N = fwd->GetSelectedRows();
59  printf( "%s : has %d results \n", cmd, N );
60  printf( "Projection Mode : %d \n", projType );
61 
62  auto cmdX = fwd->GetV1();
63  auto cmdY = fwd->GetV2();
64  auto cmdZ = fwd->GetV3();
65  auto cmdE = fwd->GetV4();
66  if ( cmdE != nullptr ){
67  printf( "TOWERS\n" );
68  }
69  float vizX; //change from array-AGE
70  float vizY;
71 
72  TText *t = new TText(.5,.5,"Hello World !");
73  // t->SetTextAlign(22);
74  t->SetTextColor(kBlack);
75  t->SetTextFont(43);
76  t->SetTextSize(20);
77 
78  int zColorStep = 90;
79  int slc = color;
80  int zColors[50]; // fst1 fst2 fst3 ftt1 ftt2 ftt3 ftt4 epd ecal hcal
81  float zSizes[] = {2.5, 2.5, 2.0, 1.5, 1.5, 1.5, 1.5, 1.5, 2.5, 2.0, 1.5}; //first element is for hits that don't match any positions (only goes to ftt3--changing to allow all)
82  for ( int i = 0; i < 50; i++ )
83  zColors[i] = TColor::GetColorPalette(i*zColorStep % 255 );
84 
85 
86  bool lgZ = false;
87  float alpha = 0.6;
88  for ( int i = 0; i < N; i++ ){
89 
90  vizX = xx( cmdX[i], cmdY[i], cmdZ[i], projType );
91  vizY = yy( cmdX[i], cmdY[i], cmdZ[i], projType );
92  printf( "\tpoint at (%f, %f, %f) -> (%f, %f)\n", cmdX[i], cmdY[i], cmdZ[i], vizX, vizY );
93 
94  int zIndex = 0;
95  if ( fabs( cmdZ[i] - 151.75) < 2.5 ) zIndex = 1;
96  if ( fabs( cmdZ[i] - 165.25) < 2.5 ) zIndex = 2;
97  if ( fabs( cmdZ[i] - 178.75) < 2.5 ) zIndex = 3;
98 
99  //add locations of other detectors-AGE
100  //FTT--approximate locations
101  if ( fabs( cmdZ[i] - 281) < 2.5 ) zIndex = 4;
102  if ( fabs( cmdZ[i] - 304) < 2.5 ) zIndex = 5;
103  if ( fabs( cmdZ[i] - 325) < 2.5 ) zIndex = 6;
104  if ( fabs( cmdZ[i] - 348) < 2.5 ) zIndex = 7;
105  //EPD--approx.
106  if ( fabs( cmdZ[i] - 375) < 2.5 ) zIndex = 8;
107  //FCS--approx.
108  //if ( fabs( cmdZ[i] - 721) < 2.5 ) zIndex = 9; //wcal
109  //if ( fabs( cmdZ[i] - 804) < 2.5 ) zIndex = 10; //hcal
110 
111  TMarker *mk = new TMarker( vizX, vizY, 20 );
112 
113  mk->SetMarkerSize( 2.5 );
114  if (zIndex >= 1 && zIndex < 50){ //see if should be changed to zIndex < 9-AGE
115  slc = zColors[zIndex];
116  }
117  mk->SetMarkerSize( zSizes[zIndex] );
118 
119 
120 
121 
122  // mk->SetMarkerSize( (float)(zIndex) * 0.5 + 0.5 );
123 
124  alpha = 0.6;
125  if ( zIndex != 8 && (cmdE != nullptr && projType == kRZSigned) ){ //FCS for RZ
126  //mk->SetMarkerStyle( 21 ); //sets marker to a square, change to use TBox instead-AGE
127  //mk->SetMarkerSize( 0.5 + 0.5 * cmdE[i] );
128  mk->SetMarkerSize(0);
129  alpha = (cmdE[i] / 10.0);
130  if (alpha>=1) alpha = 1;
131  TBox *box = new TBox( vizX-0.05*cmdE[i], vizY-0.5, vizX, vizY+0.5 );
132  box->SetFillColor(210);
133  if ( name == "WCal Clusters" || name == "HCal CLusters" ){
134  box->SetFillColor(880);
135  mk->SetMarkerSize(1);
136  }
137  box->Draw("same");
138  }
139  if ( name == "FTT Clusters" && projType == kXY ){
140  mk->SetMarkerSize(0);
141  TLine XCluster;
142  XCluster.SetLineWidth(1);
143  XCluster.SetLineColor(9); //dark blue
144  TLine YCluster;
145  YCluster.SetLineWidth(1);
146  YCluster.SetLineColor(46); //dark red
147  float x0;
148  float x1;
149  float y0;
150  float y1;
151  if (vizX < 0){
152  x0 = -50;
153  x1 = 0;
154  } else if(vizX >= 0){
155  x0 = 0;
156  x1 = 50;
157  }
158  if (vizY < 0){
159  y0 = -50;
160  y1 = 0;
161  } else if (vizY >= 0){
162  y0 = 0;
163  y1 = 50;
164  }
165 
166  XCluster.DrawLine(vizX, y0, vizX, y1);
167  YCluster.DrawLine(x0, vizY, x1, vizY);
168 
169  }
170 
171  if ( cmdE != nullptr && (zIndex == 8 || projType != kRZSigned) ){ //EPD for RZ and EPD and FCS for XY
172  mk->SetMarkerStyle(21);
173  mk->SetMarkerSize( 0.005 * cmdE[i]);
174  }
175 
176  printf( "\tzIndex = %d -> color = %d \n", zIndex, slc );
177 
178  mk->SetMarkerColorAlpha( slc, alpha );
179  if ( zIndex >= 1 ){
180  mk->SetMarkerColorAlpha( slc, alpha );
181  lgZ = true;
182  }
183 
184  //change marker style etc. for projected points only-AGE
185  /*if( name == "Proj" ){
186  mk->SetMarkerStyle(23);
187  mk->SetMarkerColor(2);
188  mk->SetMarkerSize(1.5);
189  }*/
190 
191  mk->Draw("same");
192 
193  }
194 
195  if ( lgZ ){
196  /*for ( int i = 1; i < 4; i++){
197  TMarker *mk1 = new TMarker( LegendX, LegendY, 20 );
198  mk1->SetMarkerSize( 2.5 );
199  mk1->SetMarkerColorAlpha( zColors[i], 0.5 );
200  mk1->Draw("same");
201  t->DrawText( LegendX + 2, LegendY - 0.5, TString::Format( "%s: %d", name, i ) );
202 
203  LegendY -= 5;
204  }*/
205  if (name == "FST"){
206  for ( int i = 1; i < 4; i++ ){
207  TMarker *mk1 = new TMarker( LegendX, LegendY, 20 );
208  mk1->SetMarkerSize( 2.5 );
209  mk1->SetMarkerColorAlpha( zColors[i], 0.5 );
210  mk1->Draw("same");
211  t->DrawText( LegendX + 2, LegendY - 0.5, TString::Format( "%s: %d", name, i ) );
212 
213  LegendY -= 5;
214  }
215  } else if (name == "FTT"){
216  for ( int i = 1; i < 5; i++ ){
217  TMarker *mk1 = new TMarker( LegendX, LegendY, 20 );
218  mk1->SetMarkerSize( 2.5 );
219  mk1->SetMarkerColorAlpha( zColors[i+3], 0.5 );
220  mk1->Draw("same");
221  t->DrawText( LegendX + 2, LegendY - 0.5, TString::Format( "%s: %d", name, i ) );
222 
223  LegendY -= 5;
224  }
225  } else if (name == "FCS"){
226  for ( int i = 1; i < 3; i++ ){
227  TMarker *mk1 = new TMarker( LegendX, LegendY, 20 );
228  mk1->SetMarkerSize( 2.5 );
229  mk1->SetMarkerColorAlpha( zColors[i], 0.5 );
230  mk1->Draw("same");
231  t->DrawText( LegendX + 2, LegendY - 0.5, TString::Format( "%s: %d", name, i ) );
232 
233  LegendY -= 5;
234  }
235  }
236 
237  } else {
238  TMarker *mk1 = new TMarker( LegendX, LegendY, 20 );
239  mk1->SetMarkerSize( 2.5 );
240  mk1->SetMarkerColor( color );
241  mk1->Draw("same");
242  t->DrawText( LegendX + 2, LegendY - 0.5, TString::Format( "%s:", name ) );
243 
244  LegendY -= 5;
245  }
246 }
247 
248 //add function for seed finding-AGE
249 void viz_seed( const char* name, const char* cmd, int eventIndex, ProjectionType projType = kRZSigned){
250 
251  fwd->Draw( "reco.mChi2", "", "goff", 1, eventIndex );
252  int nTrks = fwd->GetSelectedRows();
253 
254  TLine line;
255  line.SetLineWidth(2);
256  line.SetLineColor(1);
257  TLine proj;
258  for (int i = 0; i < nTrks; i++){ //loop over number of tracks
259 
260  fwd->Draw( TString::Format("reco[%d].mProjections.mXYZ.fX:reco[%d].mProjections.mXYZ.fY:reco[%d].mProjections.mXYZ.fZ", i, i, i), "", "goff", 1, eventIndex );
261  auto nHits = fwd->GetSelectedRows();
262  auto projX = fwd->GetV1();
263  auto projY = fwd->GetV2();
264  auto projZ = fwd->GetV3();
265  /*std::vector<double> projX;
266  std::vector<double> projY;
267  std::vector<double> projZ;
268 
269  for (int hit = 0; hit < nHits; ++hit) {
270  projX.push_back(fwd->GetV1()[hit]);
271  projY.push_back(fwd->GetV2()[hit]);
272  projZ.push_back(fwd->GetV3()[hit]);
273  }*/
274 
275  //select only the seeds that have same track id as track number
276  fwd->Draw( cmd, TString::Format("seeds.mTrackId == %d", i), "goff", 1, eventIndex );
277  //fwd->Draw( TString::Format("seeds[%d].mXYZ.fX:seeds[%d].mXYZ.fY:seeds[%d].mXYZ.fZ", i, i, i), "", "goff", 1, eventIndex );
278  int numSeeds = fwd->GetSelectedRows();
279  auto newX = fwd->GetV1();
280  auto newY = fwd->GetV2();
281  auto newZ = fwd->GetV3();
282 
283  for ( int j = 0; j < numSeeds - 1; j++){
284 
285  float x0 = xx( newX[j], newY[j], newZ[j], projType );
286  float y0 = yy( newX[j], newY[j], newZ[j], projType );
287  float x1 = xx( newX[j+1], newY[j+1], newZ[j+1], projType );
288  float y1 = yy( newX[j+1], newY[j+1], newZ[j+1], projType );
289 
290  /*if ( fabs(x0 - projX[j+1]) <= 1 ){
291  line.SetLineColor(1);
292  }*/
293 
294  line.DrawLine(x0, y0, x1, y1);
295  }
296 
297  }
298 }
299 
300 //add function for track projection
301 void viz_proj( int eventIndex, ProjectionType projType = kRZSigned, bool markers = false ){
302 
303  //get number of tracks
304  fwd->Draw( "reco.mChi2", "", "goff", 1, eventIndex); //check if this is correct data to use to get nTrks
305  int nTrks = fwd->GetSelectedRows();
306 
307  //create line for track
308  TLine trkproj;
309  trkproj.SetLineWidth(1.5);
310  trkproj.SetLineColor(24); //light green
311 
312  //loop over each track in the event
313  for ( int i = 0; i < nTrks; i++ ){
314 
315  //get hits in i'th track
316  fwd->Draw( TString::Format("reco[%d].mProjections.mXYZ.fX:reco[%d].mProjections.mXYZ.fY:reco[%d].mProjections.mXYZ.fZ", i, i, i), "", "goff", 1, eventIndex );
317  auto nHits = fwd->GetSelectedRows();
318  auto projX = fwd->GetV1();
319  auto projY = fwd->GetV2();
320  auto projZ = fwd->GetV3();
321 
322 
323  //loop over hits in each track
324  for ( int j = 0; j < nHits - 1; j++ ){
325 
326  //assign the x and y positions of the track projection
327  float x0 = xx( projX[j], projY[j], projZ[j], projType );
328  float y0 = yy( projX[j], projY[j], projZ[j], projType );
329  float x1 = xx( projX[j+1], projY[j+1], projZ[j+1], projType );
330  float y1 = yy( projX[j+1], projY[j+1], projZ[j+1], projType );
331 
332  /*trkproj.SetLineColor(i+2);
333  if (i == 0 || i == 10 ){
334  trkproj.SetLineColor(1);
335  }*/
336  trkproj.DrawLine(x0, y0, x1, y1);
337  }
338 
339  //add markers
340  if (markers){
341  for ( int j = 0; j < nHits; j++ ){
342 
343  float x = xx( projX[j], projY[j], projZ[j], projType );
344  float y = yy( projX[j], projY[j], projZ[j], projType );
345 
346  TMarker *mk = new TMarker( x, y, 20);
347  mk->SetMarkerStyle(23);
348  mk->SetMarkerColor(2);
349  mk->SetMarkerSize(1.5);
350 
351  mk->Draw("same");
352  }
353  }
354  }
355  if (markers){
356  //add marker to the legend
357  TText *t = new TText(.5,.5,"Hello World !");
358  t->SetTextColor(kBlack);
359  t->SetTextFont(43);
360  t->SetTextSize(20);
361  //make this more functional?
362  if ( projType == kRZSigned ){
363  LegendY = 5;
364  } else if (projType == kXY ){
365  LegendY = -15;
366  }
367  TMarker *mk1 = new TMarker( LegendX, LegendY, 23 );
368  mk1->SetMarkerSize( 2.5 );
369  mk1->SetMarkerColor( 2 );
370  mk1->Draw("same");
371  t->DrawText( LegendX + 2, LegendY - 0.5, TString::Format( "Projected Hits ") );
372  }
373 
374 } //end of fn
375 
376 
377 //add function to compare lines
378 //float comp_lines()
379 
380 
381 float statTextY = 0.97;
382 void n() { statTextY -= 0.05; }
383 void viz_stats( int eventIndex ){
384  statTextY = 0.97;
385  TText text;
386  text.SetTextFont(43);
387  text.SetTextSize(36);
388 
389 
390  /*fwd->Draw( "fstX:fstY:fstZ", "", "goff", 1, eventIndex );
391  int numEpd = fwd->GetSelectedRows();
392  fwd->Draw( "fttX:fttY:fttZ", "", "goff", 1, eventIndex );
393  int numEpd = fwd->GetSelectedRows();
394  fwd->Draw( "epdX:epdY:epdZ", "", "goff", 1, eventIndex );
395  int numEpd = fwd->GetSelectedRows();
396  fwd->Draw( "fcsX:fcsY:fcsZ", "", "goff", 1, eventIndex );
397  int numEpd = fwd->GetSelectedRows();*/
398 
399  fwd->Draw( "reco.mChi2", "", "goff", 1, eventIndex );
400  int numTracks = fwd->GetSelectedRows();
401  fwd->Draw( "fstHits.mXYZ.fX:fstHits.mXYZ.fY:fstHits.mXYZ.fZ", "", "goff", 1, eventIndex );
402  int numFst = fwd->GetSelectedRows();
403  fwd->Draw( "fttPoints.mXYZ.fX:fttPoints.mXYZ.fY:fttPoints.mXYZ.fZ", "", "goff", 1, eventIndex );
404  int numFtt = fwd->GetSelectedRows();
405  //fwd->Draw( "EPD hits", "", "goff", 1, eventIndex );
406  //int numEpd = fwd->GetSelectedRows();
407  fwd->Draw( "wcalHits.mXYZ.fX:wcalHits.mXYZ.fY:wcalHits.mXYZ.fZ", "", "goff", 1, eventIndex );
408  int numWcalHits = fwd->GetSelectedRows();
409  fwd->Draw( "hcalHits.mXYZ.fX:hcalHits.mXYZ.fY:hcalHits.mXYZ.fZ", "", "goff", 1, eventIndex );
410  int numHcalHits = fwd->GetSelectedRows();
411  fwd->Draw( "wcalClusters.mXYZ.fX:wcalClusters.mXYZ.fY:wcalClusters.mXYZ.fZ", "", "goff", 1, eventIndex );
412  int numWcal = fwd->GetSelectedRows();
413  fwd->Draw( "hcalClusters.mXYZ.fX:hcalClusters.mXYZ.fY:hcalClusters.mXYZ.fZ", "", "goff", 1, eventIndex );
414  int numHcal = fwd->GetSelectedRows();
415 
416  text.DrawTextNDC( 0.05, statTextY, TString::Format("Event : %d", eventIndex) ); n();
417  text.DrawTextNDC( 0.05, statTextY, TString::Format("Tracks : %d", numTracks) ); n();
418  text.DrawTextNDC( 0.05, statTextY, TString::Format("FST Hits : %d", numFst) ); n();
419  text.DrawTextNDC( 0.05, statTextY, TString::Format("FTT Hits : %d", numFtt) ); n();
420  //text.DrawTextNDC( 0.05, statTextY, TString::Format("EPD Hits : %d", numEpd) ); n();
421  //text.DrawTextNDC( 0.05, statTextY, TString::Format("WCal Hits : %d", numWcalHits) ); n();
422  //text.DrawTextNDC( 0.05, statTextY, TString::Format("HCal Hits : %d", numHcalHits) ); n();
423  text.DrawTextNDC( 0.05, statTextY, TString::Format("WCal Clusters : %d", numWcal) ); n();
424  text.DrawTextNDC( 0.05, statTextY, TString::Format("HCal Clusters : %d", numHcal) ); n();
425 
426  //print reco statistics
427  /*fwd->Draw( "reco.mProjections.mXYZ:fX:reco.mProjections.mXYZ:fY:reco.mProjections.mXYZ:fZ", "", "goff", 1, eventIndex );
428  int numReco = fwd->GetSelectedRows();
429  statTextY = 0.92;
430  text.DrawTextNDC( 0.35, statTextY, TString::Format("Reco Hits : %d", numReco) ); n();*/
431 
432 }
433 
434 
435 int viz_event( int eventIndex, ProjectionType projType = kRZSigned ){
436 
437  if ( projType == kRZSigned || projType == kXZ || projType == kYZ ){
438  hFrame = new TH2F( "hFrame", ";z;R", 520, -30, 900, 260, -130, 130 );
439  hFrame->SetTitle( "Event Visualization (RZ Signed)" );
440  LegendX = 10;
441  LegendY = 60;
442  } else if ( projType == kRZ ){
443  hFrame = new TH2F( "hFrame", ";z;R", 500, 0, 900, 60, 0, 60 );
444  hFrame->SetTitle( "Event Visualization (RZ Signed)" );
445  LegendX = 10;
446  LegendY = 60;
447  } else if ( projType == kXY ){
448  hFrame = new TH2F( "hFrame", ";x;y", 5, -50, 50, 5, -50, 50 );
449  hFrame->SetTitle( "Event Visualization (XY)" );
450  LegendX = -40;
451  LegendY = 40;
452  }
453 
454  printf( "Visualizing Event %d \n", eventIndex );
455 
456  fwd->Draw( "reco.mChi2", "", "", 1, eventIndex );
457  int nTrk = fwd->GetSelectedRows(); //number of reco tracks
458  printf( "Event has %d Tracks \n", nTrk ); //changed from %lld to %d to eliminate an error that occurred-AGE
459 
460 
461  hFrame->Draw("colz");
462 
463  //add detector locations
464  if (projType == kRZSigned){
465 
466  TLine *fst1 = new TLine(151.75, -28.3, 151.75, 28.3);
467  fst1->SetLineWidth(2);
468  fst1->SetLineColor(12);
469  fst1->Draw("same");
470  TLine *fst2 = new TLine(165.25, -28.3, 165.25, 28.3);
471  fst2->SetLineWidth(2);
472  fst2->SetLineColor(12);
473  fst2->Draw("same");
474  TLine *fst3 = new TLine(178.75, -28.3, 178.75, 28.3);
475  fst3->SetLineWidth(2);
476  fst3->SetLineColor(12);
477  fst3->Draw("same");
478 
479  TLine *ftt1 = new TLine(281, -60, 281, 60);
480  ftt1->SetLineWidth(2);
481  ftt1->SetLineColor(12);
482  ftt1->Draw("same");
483  TLine *ftt2 = new TLine(304, -60, 304, 60);
484  ftt2->SetLineWidth(2);
485  ftt2->SetLineColor(12);
486  ftt2->Draw("same");
487  TLine *ftt3 = new TLine(325, -60, 325, 60);
488  ftt3->SetLineWidth(2);
489  ftt3->SetLineColor(12);
490  ftt3->Draw("same");
491  TLine *ftt4 = new TLine(348, -60, 348, 60);
492  ftt4->SetLineWidth(2);
493  ftt4->SetLineColor(12);
494  ftt4->Draw("same");
495 
496  TLine *epd = new TLine(375, -130, 375, 130);
497  epd->SetLineWidth(2);
498  epd->SetLineColor(12);
499  epd->Draw("same");
500 
501  //add tboxes for fcs
502  TBox *wcal = new TBox( 720, -120, 735, 120 );
503  wcal->SetFillColorAlpha(4, 0.2);
504  wcal->Draw("same");
505  TBox *hcal = new TBox( 800, -120, 815, 120 );
506  hcal->SetFillColorAlpha(2, 0.2);
507  hcal->Draw("same");
508 
509  }
510 
511  //viz_points( "FST", "fstX:fstY:fstZ", kGray, eventIndex, projType/*, true*/ );
512  //viz_points( "EPD", "epdX:epdY:epdZ:epdE", kBlue, eventIndex, projType/*, true*/ ); //epd hits (only in fwdtree2)-AGE
513  //viz_points( "FCS", "fcsX:fcsY:fcsZ:fcsE", kGreen, eventIndex, projType/*, true*/ );
514  viz_points( "FST", "fstHits.mXYZ.fX:fstHits.mXYZ.fY:fstHits.mXYZ.fZ", kGray, eventIndex, projType, true );
515  viz_points( "FTT", "fttPoints.mXYZ.fX:fttPoints.mXYZ.fY:fttPoints.mXYZ.fZ", kRed, eventIndex, projType );
516  // viz_points( "FTT Clusters", "fttClusters.mXYZ.fX:fttClusters.mXYZ.fY:fttClusters.mXYZ.fZ", kRed, eventIndex, projType );
517  viz_points( "WCal Hits", "wcalHits.mXYZ.fX:wcalHits.mXYZ.fY:wcalHits.mXYZ.fZ+705:100*wcalHits.mHit.mEnergy", kBlue, eventIndex, projType );
518  viz_points( "HCal Hits", "hcalHits.mXYZ.fX:hcalHits.mXYZ.fY:hcalHits.mXYZ.fZ+785:100*wcalClusters.mClu.mEnergy", kTeal, eventIndex, projType/*, true*/ );
519  viz_points( "WCal Clusters", "wcalClusters.mXYZ.fX:wcalClusters.mXYZ.fY:wcalClusters.mXYZ.fZ:100*wcalClusters.mClu.mEnergy", kViolet, eventIndex, projType/*, true*/ );
520  viz_points( "HCal Clusters", "hcalClusters.mXYZ.fX:hcalClusters.mXYZ.fY:hcalClusters.mXYZ.fZ:100*wcalClusters.mClu.mEnergy", kGreen, eventIndex, projType/*, true*/ ); //add fcs hits-AGE
521 
522  viz_seed( "Seeds", "seeds.mXYZ.fX:seeds.mXYZ.fY:seeds.mXYZ.fZ", eventIndex, projType );
523  viz_proj( eventIndex, projType, false);
524  viz_points( "Proj", "reco.mProjections.mXYZ.fX:reco.mProjections.mXYZ.fY:reco.mProjections.mXYZ.fZ", kRed, eventIndex, projType);
525  return nTrk;
526 }
527 
528 
529 //change to name of file being used-AGE
530 void viz2( TString fn = "fwdtree.root", int view = kXY) {
531 
532  ProjectionType pjt = (ProjectionType)view;
533  fData = new TFile( fn );
534  fwd = (TTree*)fData->Get( "fwd" );
535 
536  gStyle->SetOptStat(0);
537 
538  float canWidth = 19 * 100;
539  float canHeight = 16 * 100;
540  gCan = new TCanvas( "g", "", canWidth, canHeight );
541  gCan->SetMargin( 0, 0, 0, 0);
542  gCan->cd();
543  gCan->Draw();
544 
545  padRZ = new TPad( "padRZ", "", 0.0, 0.5, 0.95, 0.99 );
546  padRZ->SetMargin( .05,.01,.05,.01 );
547  padRZ->Draw("same");
548  padRZ->cd();
549 
550  gCan->cd();
551  padXY = new TPad( "padXY", "", 0.0, 0.0, 0.5, 0.5 );
552  padXY->SetMargin( .1,.02,.05,.01 );
553  padXY->Draw("same");
554  padXY->cd();
555 
556  gCan->cd();
557  padStat = new TPad( "padStat", "", 0.5, 0.0, 1.0, 0.5 );
558  padStat->SetMargin( .1,.02,.05,.01 );
559  padStat->Draw("same");
560  padStat->cd();
561 
562  // gPad->SetMargin(0.1, 0.05, 0.15, 0.05);
563 
564  int nEvents = fwd->GetEntries();
565  // nEvents = 1;
566  // nEvents = 10;
567  for ( int iEvent = 0; iEvent < nEvents; iEvent ++ ){
568 
569  printf( "Event: %d\n", iEvent );
570  padRZ->cd();
571 
572  //TBox *wcal = new TBox( 720, -60, 735, 60 );
573  //wcal->SetFillColor(4);
574  //wcal->Draw("");
575  int nTrk = viz_event( iEvent, kRZSigned );
576 
577 
578  padXY->cd();
579  viz_event( iEvent, kXY );
580  if (nTrk > -1){
581  padRZ->Update();
582  padXY->Update();
583 
584  padStat->cd();
585  padStat->Clear();
586  viz_stats( iEvent ); //changed to provide number of tracks as well-AGE
587  padStat->Update();
588  gCan->Update();
589  gCan->Print( TString::Format( "out_event%d.pdf", iEvent ) );
590  }
591 
592 
593  // cin.get();
594  // if (viz_event( iEvent ) > 0 )
595  // break;
596 
597  hFrame->Reset();
598  }
599 
600 }