QwAnalysis
QwEventDisplay Class Reference

#include <QwEventDisplay.h>

Inherits TGMainFrame.

+ Collaboration diagram for QwEventDisplay:

Public Member Functions

 RQ_OBJECT ("QwEventDisplay") UInt_t fEventNumber
 
 QwEventDisplay (const TGWindow *p, UInt_t w, UInt_t h)
 
virtual ~QwEventDisplay ()
 
void SetEventBuffer (QwTreeEventBuffer *eventbuffer)
 
void SetSubsystemArray (QwSubsystemArrayTracking *subsystemarray)
 
void HandleMenu (Int_t id)
 
void GoPrevious ()
 
void GoNext ()
 
void GoClear ()
 
void GotoEvent ()
 
void DrawEvent ()
 
 ClassDef (QwEventDisplay, 1)
 

Data Fields

UInt_t fTreeEntries
 

Private Types

enum  MenuCommandIdentifiers { M_FILE_OPEN, M_FILE_CLOSE, M_HELP_TUTORIAL, M_HELP_ABOUT }
 

Private Attributes

TGMainFrame * fMain
 
TGHorizontalFrame * fEventBoxes
 
TGTab * fRegions
 
TGTextButton * ExitButton
 
TGMenuBar * fMenuBar
 
TGPopupMenu * fMenuFile
 
TGPopupMenu * fMenuHelp
 
TGLayoutHints * fMenuBarLayout
 
TGLayoutHints * fMenuBarItemLayout
 
TGLayoutHints * fMenuBarHelpLayout
 
TGVerticalFrame * fEventBox1
 
TGVerticalFrame * fEventCounter
 
TGLabel * fCurrentEventLabel
 
TGNumberEntry * fCurrentEventEntry
 
TGGroupFrame * fCurrentEvent
 
TGVerticalFrame * fEventBox2
 
TGListBox * fWireInfoListBox
 
TGVerticalFrame * fEventBox3
 
TRootEmbeddedCanvas * fOctantID
 
TCanvas * cOctantID
 
TPaveLabel * Octant_1
 
TPaveLabel * Octant_2
 
TPaveLabel * Octant_3
 
TPaveLabel * Octant_4
 
TPaveLabel * Octant_5
 
TPaveLabel * Octant_6
 
TPaveLabel * Octant_7
 
TPaveLabel * Octant_8
 
TGCompositeFrame * fRegion1
 
TRootEmbeddedCanvas * fRegion1XY
 
TRootEmbeddedCanvas * fRegion1XZ
 
TRootEmbeddedCanvas * fRegion1YZ
 
TCanvas * cR1XY
 
TCanvas * cR1XZ
 
TCanvas * cR1YZ
 
TPaveLabel * Label_R1XY
 
TPaveLabel * Label_R1XZ
 
TPaveLabel * Label_R1YZ
 
TBox * Box_R1XY
 
TBox * Box_R1XZ
 
TBox * Box_R1YZ
 
std::vector< TLine > Line_R1r
 
std::vector< TLine > Line_R1y
 
TGCompositeFrame * fRegion2
 
TRootEmbeddedCanvas * fRegion2XY
 
TRootEmbeddedCanvas * fRegion2XZ
 
TRootEmbeddedCanvas * fRegion2YZ
 
TCanvas * cR2XY
 
TCanvas * cR2XZ
 
TCanvas * cR2YZ
 
TPaveLabel * Label_R2XY
 
TPaveLabel * Label_R2XZ
 
TPaveLabel * Label_R2YZ
 
TBox * Box_R2XY
 
TBox * Box_R2XZ1
 
TBox * Box_R2XZ2
 
TBox * Box_R2XZ3
 
TBox * Box_R2XZ4
 
TBox * Box_R2YZ1
 
TBox * Box_R2YZ2
 
TBox * Box_R2YZ3
 
TBox * Box_R2YZ4
 
TText * tR2XY1
 
TText * tR2XY2
 
TText * tR2XY3
 
TText * tR2XY4
 
TText * tR2XZ1
 
TText * tR2XZ2
 
TText * tR2XZ3
 
TText * tR2XZ4
 
TText * tR2YZ1
 
TText * tR2YZ2
 
TText * tR2YZ3
 
TText * tR2YZ4
 
std::vector< TLine > Line_R2x
 
std::vector< TLine > Line_R2u
 
std::vector< TLine > Line_R2v
 
TGCompositeFrame * fRegion2b
 
TRootEmbeddedCanvas * fRegion2bXY
 
TRootEmbeddedCanvas * fRegion2bXZ
 
TRootEmbeddedCanvas * fRegion2bYZ
 
TCanvas * cR2bXY
 
TCanvas * cR2bXZ
 
TCanvas * cR2bYZ
 
TPaveLabel * Label_R2bXY
 
TPaveLabel * Label_R2bXZ
 
TPaveLabel * Label_R2bYZ
 
TBox * Box_R2bXY
 
TBox * Box_R2bXZ1
 
TBox * Box_R2bXZ2
 
TBox * Box_R2bXZ3
 
TBox * Box_R2bXZ4
 
TBox * Box_R2bYZ1
 
TBox * Box_R2bYZ2
 
TBox * Box_R2bYZ3
 
TBox * Box_R2bYZ4
 
TText * tR2bXY1
 
TText * tR2bXY2
 
TText * tR2bXY3
 
TText * tR2bXY4
 
TText * tR2bXZ1
 
TText * tR2bXZ2
 
TText * tR2bXZ3
 
TText * tR2bXZ4
 
TText * tR2bYZ1
 
TText * tR2bYZ2
 
TText * tR2bYZ3
 
TText * tR2bYZ4
 
TGCompositeFrame * fRegion3
 
TRootEmbeddedCanvas * fRegion3XY
 
TRootEmbeddedCanvas * fRegion3XZ
 
TRootEmbeddedCanvas * fRegion3YZ
 
TCanvas * cR3XY
 
TCanvas * cR3XZ
 
TCanvas * cR3YZ
 
TPaveLabel * Label_R3XY
 
TPaveLabel * Label_R3XZ
 
TPaveLabel * Label_R3YZ
 
TBox * Box_R3XY1
 
TBox * Box_R3XY2
 
TBox * Box_R3XY3
 
TBox * Box_R3XY4
 
TBox * Box_R3XZ1
 
TBox * Box_R3XZ2
 
TBox * Box_R3XZ3
 
TBox * Box_R3XZ4
 
TBox * Box_R3YZ1
 
TBox * Box_R3YZ2
 
TBox * Box_R3YZ3
 
TBox * Box_R3YZ4
 
TText * tR3XY1
 
TText * tR3XY2
 
TText * tR3XY3
 
TText * tR3XY4
 
TText * tR3XZ1
 
TText * tR3XZ2
 
TText * tR3XZ3
 
TText * tR3XZ4
 
TText * tR3YZ1
 
TText * tR3YZ2
 
TText * tR3YZ3
 
TText * tR3YZ4
 
TLine * Div_R3XY
 
TLine * Div_R3XZ
 
TLine * Div_R3YZ
 
std::vector< TLine > Line_R3u
 
std::vector< TLine > Line_R3v
 
TGCompositeFrame * fRegion3TS
 
QwTreeEventBufferfEventBuffer
 
QwSubsystemArrayTrackingfSubsystemArray
 // Excluded from dictionary More...
 
QwHitContainerfHitList
 
TTree * fTree
 

Detailed Description

Definition at line 193 of file QwEventDisplay.h.

Member Enumeration Documentation

Enumerator
M_FILE_OPEN 
M_FILE_CLOSE 
M_HELP_TUTORIAL 
M_HELP_ABOUT 

Definition at line 245 of file QwEventDisplay.h.

245  {
246  M_FILE_OPEN, // Opens a ROOT file
247  M_FILE_CLOSE, // Closes a ROOT file
248 
249  M_HELP_TUTORIAL, // Provides link to the event display tutorial documentation
250  M_HELP_ABOUT // Print information about the event display
251  };

Constructor & Destructor Documentation

QwEventDisplay::QwEventDisplay ( const TGWindow *  p,
UInt_t  w,
UInt_t  h 
)
QwEventDisplay::~QwEventDisplay ( )
virtual

Definition at line 2048 of file QwEventDisplay.cc.

References fMain.

2048  { // Default destructor in class
2049 
2050  fMain->Cleanup();
2051  delete fMain;
2052 
2053 } // End ~QwEventDisplay()
TGMainFrame * fMain

Member Function Documentation

QwEventDisplay::ClassDef ( QwEventDisplay  ,
 
)
void QwEventDisplay::DrawEvent ( )

Definition at line 1035 of file QwEventDisplay.cc.

References fEventBuffer, fHitList, fOctantID, fRegion1XY, fRegion1XZ, fRegion1YZ, fRegion2bXY, fRegion2bXZ, fRegion2bYZ, fRegion2XY, fRegion2XZ, fRegion2YZ, fRegion3XY, fRegion3XZ, fRegion3YZ, fWireInfoListBox, QwTreeEventBuffer::GetHitContainer(), QwTreeEventBuffer::GetSpecificEvent(), QwHitContainer::GetSubList_Dir(), GoClear(), Qw::kBlue, kDirectionR, kDirectionU, kDirectionV, kDirectionX, kDirectionY, Qw::kGreen, kPackage1, Qw::kRed, kRegionID1, kRegionID2, kRegionID3, Line_R1y, Line_R2u, Line_R2v, Line_R2x, Octant_2, Octant_6, QwHitContainer::Print(), R1_CM, R1_DEPTH, R1_DIST, R1_LENGTH, R1_WIDTH, R2_ANGLE, R2_CM, R2_DEPTH, R2_DIST, R2_FULLWIRE1, R2_FULLWIRE2, R2_LENGTH, R2_UVDIST, R2_WIDTH, R2_XDIST, R3_ANGLE, R3_CM, R3_DIST, R3_FULLWIRE1, R3_FULLWIRE2, R3_LENGTH, R3_UVDIST, and R3_WIDTH.

Referenced by GoNext(), GoPrevious(), and GotoEvent().

1035  { // Draws event data into display
1036  // Lists wire hit information in the listbox
1037  // Fills in the current octants in the octant ID
1038  // Displays orthographic views of triggered wires for each region
1039  // Called by Previous, Next, or GotoEvent buttons
1040 
1041  //SETUP FOR FUNCTION--------------------------------------------------//
1042 
1043  printf("Drawing event %d...\n", fEventNumber); // Print the call to DrawEvent() of a current event number
1044 
1045  /* NOT WORKING :(
1046  // Catch to keep from attempting to draw events outside the number of entries
1047  if (fEventNumber > fTree->GetEntries()){ //<--THIS LINE NEEDS TO BE EDITED
1048  printf("Draw error: There are only %d entries.\n", (int) fTree->GetEntries()); // DEFINE fTree
1049  fEventNumber = 0;
1050  GoClear();
1051  printf("Returned to zero.\n");
1052  return 0; //<--DrawEvent() needs to be type int
1053  }
1054  */
1055 
1056  fOctantID->GetCanvas()->SetEditable(kTRUE); // Restore editing capability of canvases
1057  fRegion1XY->GetCanvas()->SetEditable(kTRUE);
1058  fRegion1XZ->GetCanvas()->SetEditable(kTRUE);
1059  fRegion1YZ->GetCanvas()->SetEditable(kTRUE);
1060  fRegion2XY->GetCanvas()->SetEditable(kTRUE);
1061  fRegion2XZ->GetCanvas()->SetEditable(kTRUE);
1062  fRegion2YZ->GetCanvas()->SetEditable(kTRUE);
1063  fRegion2bXY->GetCanvas()->SetEditable(kTRUE);
1064  fRegion2bXZ->GetCanvas()->SetEditable(kTRUE);
1065  fRegion2bYZ->GetCanvas()->SetEditable(kTRUE);
1066  fRegion3XY->GetCanvas()->SetEditable(kTRUE);
1067  fRegion3XZ->GetCanvas()->SetEditable(kTRUE);
1068  fRegion3YZ->GetCanvas()->SetEditable(kTRUE);
1069 
1070  GoClear(); // Clear existing data
1071 
1072  //HIGHLIGHT OCTANT POSITION--------------------------------------------------// ##############GET THIS INFORMATION FROM WHEREEVER IT BECOMES AVAILABLE!!!
1073 
1074  // Dark orange is left (lower # chambers)
1075  // Light orange is right (higher # chambers)
1076  fOctantID->GetCanvas()->cd();
1077  int fTest = 1; // USED ONLY FOR DISPLAY PURPOSES
1078  switch(fTest){
1079  case 1:
1080  Octant_2->SetFillColor(kOrange-3);
1081  Octant_6->SetFillColor(kOrange-2);
1082  Octant_2->Draw();
1083  Octant_6->Draw();
1084  break;
1085  // etc.........
1086  }
1087  fOctantID->GetCanvas()->SetEditable(kFALSE);
1088  fOctantID->GetCanvas()->Update();
1089 
1090  //LIST WIRE HITS--------------------------------------------------//
1091 
1092  // Extract wire hit information
1093  fEventBuffer->GetSpecificEvent(fEventNumber); // Place the current event number into the event buffer
1094  fHitList = fEventBuffer->GetHitContainer(); // Add the hit list from the current event buffer
1095  printf("Printing hit list..."); // Let user know hit list is printing
1096  fHitList->Print(); // Prints the new wire hit information from the hit list
1097 
1098  // Create a string buffer to hold hit information
1099  char fHitBuffer[30];
1100 
1101  // List wire hit information in list box
1102  for(QwHitContainer::iterator fHit = fHitList->begin(); fHit != fHitList->end(); fHit++){ // Loop while hits exist in the hit container
1103  if(fHit->GetElement() > 0){
1104  if (fHit->GetRegion() == 1){
1105  sprintf(fHitBuffer, "Region %i: Trace %i, Plane %i", fHit->GetRegion(), fHit->GetElement(), fHit->GetPlane()); // Print single hit for Region 1
1106  }
1107  else if (fHit->GetRegion() == 2){
1108  sprintf(fHitBuffer, "Region %i: Wire %i, Plane %i Drift Distance: %f", fHit->GetRegion(), fHit->GetElement(), fHit->GetPlane(), fHit->GetDriftDistance()); // Print single hit for Region 2
1109  }
1110  else if (fHit->GetRegion() == 3){
1111  sprintf(fHitBuffer, "Region %i: Wire %i, Plane %i Drift Distance: %f", fHit->GetRegion(), fHit->GetElement(), fHit->GetPlane(), fHit->GetDriftDistance()); // Print single hit for Region 3
1112  }
1113  else{}
1114  fWireInfoListBox->AddEntry(fHitBuffer, fEventNumber); // Add entry to list box
1115  fWireInfoListBox->MapSubwindows();
1116  fWireInfoListBox->Layout();
1117  }
1118  }
1119 
1120  //GATHER WIRE HIT DATA--------------------------------------------------//
1121 
1122  // Region 1 hits
1125  // Region 2 hits
1129  // Region 3 hits
1132 
1133  // DRAWING WIRE HITS--------------------------------------------------//
1134  // Three types of wires to draw--full length, left of full length, and right of full length
1135  // Separating them depends on the first and last full length wire (saved as constants in the header)
1136  // Wires are drawn and centered with respect to the chamber frame in ROOT coordinates
1137  // Wire numbers go from right to left; plane numbers go from front to back
1138  // Hit wire information is stored to the end of a vector and drawn in the appropriate canvas
1139  // Editing of canvases is removed after drawing
1140 
1141  // DRAW REGION 1 TRACE HITS--------------------------------------------------//
1142 
1143  // FRONT VIEW (X-Y)
1144  fRegion1XY->GetCanvas()->cd();
1145  // Region 1 X traces (??? total)
1146  for(QwHitContainer::iterator fHit = Hits_R1r->begin(); fHit != Hits_R1r->end(); fHit++){ // G4 DOES NOT GET ANY HITS FROM THESE
1147  TLine Line;
1148  int fTrace = fHit->GetElement();
1149  Line.SetY1(.5 - (R1_WIDTH*R1_CM*.5) + (R1_DIST*R1_CM*fTrace));
1150  Line.SetX1(.5 - (R1_LENGTH*R1_CM*.5));
1151  Line.SetY2(.5 + (R1_WIDTH*R1_CM*.5) + (R1_DIST*R1_CM*fTrace));
1152  Line.SetX2(.5 - (R1_LENGTH*R1_CM*.5));
1153  Line.SetLineColor(kViolet);
1154  Line_R1y.push_back(Line);
1155  Line_R1y.back().Draw();
1156  }
1157  // Region 1 Y traces (??? total)
1158  for(QwHitContainer::iterator fHit = Hits_R1y->begin(); fHit != Hits_R1y->end(); fHit++){
1159  TLine Line;
1160  int fTrace = fHit->GetElement();
1161  Line.SetY1(.5 - (R1_WIDTH*R1_CM*.5));
1162  Line.SetX1(.5 - (R1_LENGTH*R1_CM*.5) + (R1_DIST*R1_CM*fTrace));
1163  Line.SetY2(.5 + (R1_WIDTH*R1_CM*.5));
1164  Line.SetX2(.5 - (R1_LENGTH*R1_CM*.5) + (R1_DIST*R1_CM*fTrace));
1165  Line.SetLineColor(kViolet);
1166  Line_R1y.push_back(Line);
1167  Line_R1y.back().Draw();
1168  }
1169  fRegion1XY->GetCanvas()->SetEditable(kFALSE);
1170  fRegion1XY->GetCanvas()->Update();
1171 
1172  // TOP VIEW (Y-Z)
1173  fRegion1YZ->GetCanvas()->cd();
1174  // Region 1 X traces (??? total)
1175  // Region 1 Y wires (??? total)
1176  for(QwHitContainer::iterator fHit = Hits_R1y->begin(); fHit != Hits_R1y->end(); fHit++){
1177  TLine Line;
1178  int fTrace = fHit->GetElement();
1179  Line.SetY1(.5 - (R1_DEPTH*R1_CM*.5));
1180  Line.SetX1(.5 - (R1_LENGTH*R1_CM*.5) + (R1_DIST*R1_CM*fTrace));
1181  Line.SetY2(.5 + (R1_DEPTH*R1_CM*.5));
1182  Line.SetX2(.5 - (R1_LENGTH*R1_CM*.5) + (R1_DIST*R1_CM*fTrace));
1183  Line.SetLineColor(kViolet);
1184  Line_R1y.push_back(Line);
1185  Line_R1y.back().Draw();
1186  }
1187  fRegion1YZ->GetCanvas()->SetEditable(kFALSE);
1188  fRegion1YZ->GetCanvas()->Update();
1189 
1190  // SIDE VIEW (X-Z)
1191  fRegion1XZ->GetCanvas()->cd();
1192  // Region 1 X traces (??? total)
1193  // Region 1 Y wires (??? total)
1194  for(QwHitContainer::iterator fHit = Hits_R1y->begin(); fHit != Hits_R1y->end(); fHit++){
1195  TLine Line;
1196  Line.SetX1(.5);
1197  Line.SetY1(.5 - (R1_LENGTH*R1_CM*.5));
1198  Line.SetX2(.5);
1199  Line.SetY2(.5 + (R1_LENGTH*R1_CM*.5));
1200  Line.SetLineColor(kViolet);
1201  Line.SetLineWidth(22); // To fill whole plane; 22 is similar to R1_DEPTH <--NOT OK!
1202  Line_R1y.push_back(Line);
1203  Line_R1y.back().Draw();
1204  }
1205  fRegion1XZ->GetCanvas()->SetEditable(kFALSE);
1206  fRegion1XZ->GetCanvas()->Update();
1207 
1208  //DRAW REGION 2 WIRE HITS--------------------------------------------------//
1209 
1210  // FRONT VIEW (X-Y)
1211  fRegion2XY->GetCanvas()->cd();
1212  // Region 2 X wires (32 total)
1213  for(QwHitContainer::iterator fHit = Hits_R2x->begin(); fHit != Hits_R2x->end(); fHit++){
1214  TLine Line;
1215  int fWire = fHit->GetElement(); // Wire number
1216  int fPlane = fHit->GetPlane(); // Wire plane
1217  double fPShift = 0; // Used to shift the wires on the prime planes (ROOT coordinates)
1218  switch (fPlane){
1219  case 4:
1220  case 5:
1221  case 6:
1222  case 10:
1223  case 11:
1224  case 12:
1225  case 16:
1226  case 17:
1227  case 18:
1228  case 22:
1229  case 23:
1230  case 24:
1231  fPShift = .5*R2_XDIST*R2_CM; // Half drift cell distance
1232  break;
1233  }
1234  if (fPlane > 12) // If on second arm, draw in appropriate tab
1235  fRegion2bXY->GetCanvas()->cd();
1236  Line.SetX1(.5 - (R2_WIDTH*R2_CM*.5));
1237  Line.SetY1(.5 - (R2_LENGTH*R2_CM*.5) + (R2_XDIST*R2_CM*fWire) + fPShift);
1238  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5));
1239  Line.SetY2(.5 - (R2_LENGTH*R2_CM*.5) + (R2_XDIST*R2_CM*fWire) + fPShift);
1240  Line.SetLineColor(kRed);
1241  Line_R2x.push_back(Line);
1242  Line_R2x.back().Draw();
1243  }
1244  // Region 2 U wires (29 total)
1245  for(QwHitContainer::iterator fHit = Hits_R2u->begin(); fHit != Hits_R2u->end(); fHit++){
1246  TLine Line;
1247  int fWire = fHit->GetElement(); // Wire number
1248  int fPlane = fHit->GetPlane(); // Wire plane
1249  int fShiftTrim = 0; // Used to correct shifted prime wires from going outside the frame
1250  double fPShift = 0; // Used to shift the wires on the prime planes (ROOT coordinates)
1251  switch (fPlane){
1252  case 4:
1253  case 5:
1254  case 6:
1255  case 10:
1256  case 11:
1257  case 12:
1258  case 16:
1259  case 17:
1260  case 18:
1261  case 22:
1262  case 23:
1263  case 24:
1264  fPShift = .5*R2_UVDIST*R2_CM; // Half drift cell distance
1265  if (fWire == R2_FULLWIRE1 || fWire == R2_FULLWIRE2)
1266  fShiftTrim = 1;
1267  break;
1268  }
1269  if (fPlane > 12) // If on second arm, draw in appropriate tab
1270  fRegion2bXY->GetCanvas()->cd();
1271  if (fWire < R2_FULLWIRE1){
1272  Line.SetX1(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*fWire) - fPShift);
1273  Line.SetY1(.5 - (R2_LENGTH*R2_CM*.5));
1274  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5));
1275  Line.SetY2(.5 - (R2_LENGTH*R2_CM*.5) + (((R2_UVDIST*R2_CM*(fWire - fShiftTrim)) + fPShift)*tan(R2_ANGLE*TMath::DegToRad())));
1276  }
1277  else if (fWire < R2_FULLWIRE2){
1278  Line.SetX1(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*fWire) - fPShift);
1279  Line.SetY1(.5 - (R2_LENGTH*R2_CM*.5));
1280  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift);
1281  Line.SetY2(.5 + (R2_LENGTH*R2_CM*.5));
1282  }
1283  else{
1284  Line.SetX1(.5 - (R2_WIDTH*R2_CM*.5));
1285  Line.SetY1(.5 + (R2_LENGTH*R2_CM*.5) - (((R2_WIDTH*R2_CM) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift)*tan(R2_ANGLE*TMath::DegToRad())));
1286  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift);
1287  Line.SetY2(.5 + (R2_LENGTH*R2_CM*.5));
1288  }
1289  Line.SetLineColor(kGreen);
1290  Line_R2u.push_back(Line);
1291  Line_R2u.back().Draw();
1292  }
1293  // Region 2 V wires (29 total)
1294  for(QwHitContainer::iterator fHit = Hits_R2v->begin(); fHit != Hits_R2v->end(); fHit++){
1295  TLine Line;
1296  int fWire = fHit->GetElement(); // Wire number
1297  int fPlane = fHit->GetPlane(); // Wire plane
1298  int fShiftTrim = 0; // Used to correct shifted prime wires from going outside the frame
1299  double fPShift = 0; // Used to shift the wires in the prime chamber planes (ROOT coordinates)
1300  switch (fPlane){
1301  case 4:
1302  case 5:
1303  case 6:
1304  case 10:
1305  case 11:
1306  case 12:
1307  case 16:
1308  case 17:
1309  case 18:
1310  case 22:
1311  case 23:
1312  case 24:
1313  fPShift = .5*R2_UVDIST*R2_CM; // Half drift cell distance
1314  if (fWire == R2_FULLWIRE1 || fWire == R2_FULLWIRE2)
1315  fShiftTrim = 1;
1316  break;
1317  }
1318  if (fPlane > 12) // If on second arm, draw in appropriate tab
1319  fRegion2bXY->GetCanvas()->cd();
1320  if (fWire < R2_FULLWIRE1){
1321  Line.SetX1(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*fWire) - fPShift);
1322  Line.SetY1(.5 + (R2_LENGTH*R2_CM*.5));
1323  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5));
1324  Line.SetY2(.5 + (R2_LENGTH*R2_CM*.5) - (((R2_UVDIST*R2_CM*(fWire - fShiftTrim)) + fPShift)*tan(R2_ANGLE*TMath::DegToRad())));
1325  }
1326  else if (fWire < R2_FULLWIRE2){
1327  Line.SetX1(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*fWire) - fPShift);
1328  Line.SetY1(.5 + (R2_LENGTH*R2_CM*.5));
1329  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift);
1330  Line.SetY2(.5 - (R2_LENGTH*R2_CM*.5));
1331  }
1332  else{
1333  Line.SetX1(.5 - (R2_WIDTH*R2_CM*.5));
1334  Line.SetY1(.5 - (R2_LENGTH*R2_CM*.5) + (((R2_WIDTH*R2_CM) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift)*tan(R2_ANGLE*TMath::DegToRad())));
1335  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift);
1336  Line.SetY2(.5 - (R2_LENGTH*R2_CM*.5));
1337  }
1338  Line.SetLineColor(kBlue);
1339  Line_R2v.push_back(Line);
1340  Line_R2v.back().Draw();
1341  }
1342  fRegion2XY->GetCanvas()->SetEditable(kFALSE);
1343  fRegion2XY->GetCanvas()->Update();
1344  fRegion2bXY->GetCanvas()->SetEditable(kFALSE);
1345  fRegion2bXY->GetCanvas()->Update();
1346 
1347  // TOP VIEW (Y-Z)
1348  fRegion2YZ->GetCanvas()->cd();
1349  // Region 2 X wires (32 total)
1350  for(QwHitContainer::iterator fHit = Hits_R2x->begin(); fHit != Hits_R2x->end(); fHit++){
1351  TLine Line;
1352  int fPlane = fHit->GetPlane(); // Wire plane
1353  double fYShift = 0; // Used to shift the wires in the prime planes and to the correct chamber planes (ROOT coordinates)
1354  switch (fPlane){
1355  case 1:
1356  case 2:
1357  case 3:
1358  case 13:
1359  case 14:
1360  case 15:
1361  fYShift = (R2_DEPTH*R2_CM)/4; // Three evenly spaced wires (3+1)
1362  break;
1363  case 4:
1364  case 5:
1365  case 6:
1366  case 16:
1367  case 17:
1368  case 18:
1369  fYShift = (R2_DIST*R2_CM) + (R2_DEPTH*R2_CM) + (R2_DEPTH*R2_CM)/4;
1370  break;
1371  case 7:
1372  case 8:
1373  case 9:
1374  case 19:
1375  case 20:
1376  case 21:
1377  fYShift = (2*R2_DIST*R2_CM) + (2*R2_DEPTH*R2_CM) + (R2_DEPTH*R2_CM)/4;
1378  break;
1379  case 10:
1380  case 11:
1381  case 12:
1382  case 22:
1383  case 23:
1384  case 24:
1385  fYShift = (3*R2_DIST*R2_CM) + (3*R2_DEPTH*R2_CM) + (R2_DEPTH*R2_CM)/4;
1386  break;
1387  }
1388  if (fPlane > 12) // If on second arm, draw in appropriate tab
1389  fRegion2bYZ->GetCanvas()->cd();
1390  Line.SetX1(.5 - (R2_WIDTH*R2_CM*.5));
1391  Line.SetY1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1392  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5));
1393  Line.SetY2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1394  Line.SetLineColor(kRed);
1395  Line.SetLineWidth(2);
1396  Line_R2x.push_back(Line);
1397  Line_R2x.back().Draw();
1398  }
1399  // Region 2 U wires (29 total)
1400  for(QwHitContainer::iterator fHit = Hits_R2u->begin(); fHit != Hits_R2u->end(); fHit++){
1401  TLine Line;
1402  int fWire = fHit->GetElement(); // Wire number
1403  int fPlane = fHit->GetPlane(); // Plane number
1404  double fPShift = 0; // Used to shift the wires in the prime planes
1405  double fYShift = 0; // Used to shift the wires to the correct chamber planes (ROOT coordinates)
1406  switch (fPlane){
1407  case 1:
1408  case 2:
1409  case 3:
1410  case 13:
1411  case 14:
1412  case 15:
1413  fYShift = 2*((R2_DEPTH*R2_CM)/4);
1414  break;
1415  case 4:
1416  case 5:
1417  case 6:
1418  case 16:
1419  case 17:
1420  case 18:
1421  fPShift = .5*R2_UVDIST*R2_CM;
1422  fYShift = (R2_DIST*R2_CM) + (R2_DEPTH*R2_CM) + (2*((R2_DEPTH*R2_CM)/4));
1423  break;
1424  case 7:
1425  case 8:
1426  case 9:
1427  case 19:
1428  case 20:
1429  case 21:
1430  fYShift = (2*R2_DIST*R2_CM) + (2*R2_DEPTH*R2_CM) + (2*((R2_DEPTH*R2_CM)/4));
1431  break;
1432  case 10:
1433  case 11:
1434  case 12:
1435  case 22:
1436  case 23:
1437  case 24:
1438  fPShift = .5*R2_UVDIST*R2_CM;
1439  fYShift = (3*R2_DIST*R2_CM) + (3*R2_DEPTH*R2_CM) + (2*((R2_DEPTH*R2_CM)/4));
1440  break;
1441  }
1442  if (fPlane > 12) // If on second arm, draw in appropriate tab
1443  fRegion2bYZ->GetCanvas()->cd();
1444  if (fWire < R2_FULLWIRE1){
1445  Line.SetX1(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*fWire) - fPShift);
1446  Line.SetY1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1447  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5));
1448  Line.SetY2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1449  }
1450  else if (fWire < R2_FULLWIRE2){
1451  Line.SetX1(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*fWire) - fPShift);
1452  Line.SetY1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1453  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift);
1454  Line.SetY2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1455  }
1456  else{
1457  Line.SetX1(.5 - (R2_WIDTH*R2_CM*.5));
1458  Line.SetY1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1459  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift);
1460  Line.SetY2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1461  }
1462  Line.SetLineColor(kGreen);
1463  Line.SetLineWidth(2);
1464  Line_R2u.push_back(Line);
1465  Line_R2u.back().Draw();
1466  }
1467  // Region 2 V wires (29 total)
1468  for(QwHitContainer::iterator fHit = Hits_R2v->begin(); fHit != Hits_R2v->end(); fHit++){
1469  TLine Line;
1470  int fWire = fHit->GetElement(); // Wire number
1471  int fPlane = fHit->GetPlane(); // Plane number
1472  double fPShift = 0; // Used to shift the wires in the prime planes
1473  double fYShift = 0; // Used to shift the wires to the correct chamber planes (ROOT coordinates)
1474  switch (fPlane){
1475  case 1:
1476  case 2:
1477  case 3:
1478  case 13:
1479  case 14:
1480  case 15:
1481  fYShift = 3*((R2_DEPTH*R2_CM)/4);
1482  break;
1483  case 4:
1484  case 5:
1485  case 6:
1486  case 16:
1487  case 17:
1488  case 18:
1489  fPShift = .5*R2_UVDIST*R2_CM;
1490  fYShift = (R2_DIST*R2_CM) + (R2_DEPTH*R2_CM) + (3*((R2_DEPTH*R2_CM)/4));
1491  break;
1492  case 7:
1493  case 8:
1494  case 9:
1495  case 19:
1496  case 20:
1497  case 21:
1498  fYShift = (2*R2_DIST*R2_CM) + (2*R2_DEPTH*R2_CM) + (3*((R2_DEPTH*R2_CM)/4));
1499  break;
1500  case 10:
1501  case 11:
1502  case 12:
1503  case 22:
1504  case 23:
1505  case 24:
1506  fPShift = .5*R2_UVDIST*R2_CM;
1507  fYShift = (3*R2_DIST*R2_CM) + (3*R2_DEPTH*R2_CM) + (3*((R2_DEPTH*R2_CM)/4));
1508  break;
1509  }
1510  if (fPlane > 12) // If on second arm, draw in appropriate tab
1511  fRegion2bYZ->GetCanvas()->cd();
1512  if (fWire < R2_FULLWIRE1){
1513  Line.SetX1(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*fWire) - fPShift);
1514  Line.SetY1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1515  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5));
1516  Line.SetY2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1517  }
1518  else if (fWire < R2_FULLWIRE2){
1519  Line.SetX1(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*fWire) - fPShift);
1520  Line.SetY1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1521  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift);
1522  Line.SetY2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1523  }
1524  else{
1525  Line.SetX1(.5 - (R2_WIDTH*R2_CM*.5));
1526  Line.SetY1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1527  Line.SetX2(.5 + (R2_WIDTH*R2_CM*.5) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift);
1528  Line.SetY2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fYShift);
1529  }
1530  Line.SetLineColor(kBlue);
1531  Line.SetLineWidth(2);
1532  Line_R2u.push_back(Line);
1533  Line_R2u.back().Draw();
1534  }
1535  fRegion2YZ->GetCanvas()->SetEditable(kFALSE);
1536  fRegion2YZ->GetCanvas()->Update();
1537  fRegion2bYZ->GetCanvas()->SetEditable(kFALSE);
1538  fRegion2bYZ->GetCanvas()->Update();
1539 
1540  // SIDE VIEW (X-Z)
1541  fRegion2XZ->GetCanvas()->cd();
1542  // Region 2 X wires (32 total)
1543  for(QwHitContainer::iterator fHit = Hits_R2x->begin(); fHit != Hits_R2x->end(); fHit++){
1544  TLine Line;
1545  int fWire = fHit->GetElement(); // Wire number
1546  int fPlane = fHit->GetPlane(); // Plane number
1547  double fXShift = 0; // Used to shift the lines to the correct chamber planes (ROOT coordinates)
1548  double fPShift = 0; // Used to shift the wires in the prime planes (ROOT coordinates)
1549  switch (fPlane){
1550  case 1:
1551  case 2:
1552  case 3:
1553  case 13:
1554  case 14:
1555  case 15:
1556  fXShift = (R2_DEPTH*R2_CM)/4; // Three evenly spaced wires (3+1)
1557  break;
1558  case 4:
1559  case 5:
1560  case 6:
1561  case 16:
1562  case 17:
1563  case 18:
1564  fXShift = (R2_DIST*R2_CM) + (R2_DEPTH*R2_CM) + (R2_DEPTH*R2_CM)/4;
1565  fPShift = .5*R2_XDIST*R2_CM; // Half drift cell size
1566  break;
1567  case 7:
1568  case 8:
1569  case 9:
1570  case 19:
1571  case 20:
1572  case 21:
1573  fXShift = (2*R2_DIST*R2_CM) + (2*R2_DEPTH*R2_CM) + (R2_DEPTH*R2_CM)/4;
1574  break;
1575  case 10:
1576  case 11:
1577  case 12:
1578  case 22:
1579  case 23:
1580  case 24:
1581  fXShift = (3*R2_DIST*R2_CM) + (3*R2_DEPTH*R2_CM) + (R2_DEPTH*R2_CM)/4;
1582  fPShift = .5*R2_XDIST*R2_CM; // Half drift cell size
1583  break;
1584  }
1585  if (fPlane > 12) // If on second arm, draw in appropriate tab
1586  fRegion2bXZ->GetCanvas()->cd();
1587  Line.SetX1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1588  Line.SetY1(.5 - (R2_LENGTH*R2_CM*.5) + (R2_XDIST*R2_CM*fWire) + fPShift);
1589  Line.SetX2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1590  Line.SetY2(.5 - (R2_LENGTH*R2_CM*.5) + (R2_XDIST*R2_CM*fWire) + fPShift);
1591  Line.SetLineColor(kRed);
1592  Line_R2x.push_back(Line);
1593  Line_R2x.back().Draw();
1594  }
1595  // Region 2 U wires (29 total)
1596  for(QwHitContainer::iterator fHit = Hits_R2u->begin(); fHit != Hits_R2u->end(); fHit++){
1597  TLine Line;
1598  int fWire = fHit->GetElement(); // Wire number
1599  int fPlane = fHit->GetPlane(); // Plane number
1600  double fXShift = 0; // Used to shift the lines to the correct chamber planes (ROOT coordinates)
1601  double fPShift = 0; // Used to shift the wires in the prime planes (ROOT coordinates)
1602  switch (fPlane){
1603  case 1:
1604  case 2:
1605  case 3:
1606  case 13:
1607  case 14:
1608  case 15:
1609  fXShift = 2*((R2_DEPTH*R2_CM)/4); // Three evenly spaced wires
1610  break;
1611  case 4:
1612  case 5:
1613  case 6:
1614  case 16:
1615  case 17:
1616  case 18:
1617  fXShift = (R2_DIST*R2_CM) + (R2_DEPTH*R2_CM) + (2*(R2_DEPTH*R2_CM)/4);
1618  fPShift = .5*R2_XDIST*R2_CM; // Half drift cell size
1619  break;
1620  case 7:
1621  case 8:
1622  case 9:
1623  case 19:
1624  case 20:
1625  case 21:
1626  fXShift = (2*R2_DIST*R2_CM) + (2*R2_DEPTH*R2_CM) + (2*(R2_DEPTH*R2_CM)/4);
1627  break;
1628  case 10:
1629  case 11:
1630  case 12:
1631  case 22:
1632  case 23:
1633  case 24:
1634  fXShift = (3*R2_DIST*R2_CM) + (3*R2_DEPTH*R2_CM) + (2*(R2_DEPTH*R2_CM)/4);
1635  fPShift = .5*R2_XDIST*R2_CM; // Half drift cell size
1636  break;
1637  }
1638  if (fPlane > 12) // If on second arm, draw in appropriate tab
1639  fRegion2bXZ->GetCanvas()->cd();
1640  if (fWire < R2_FULLWIRE1){
1641  Line.SetX1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1642  Line.SetY1(.5 - (R2_LENGTH*R2_CM*.5));
1643  Line.SetX2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1644  Line.SetY2(.5 - (R2_LENGTH*R2_CM*.5) + (((R2_UVDIST*R2_CM*fWire) + fPShift)*tan(R2_ANGLE*TMath::DegToRad())));
1645  }
1646  else if (fWire < R2_FULLWIRE2){
1647  Line.SetX1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1648  Line.SetY1(.5 - (R2_LENGTH*R2_CM*.5));
1649  Line.SetX2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1650  Line.SetY2(.5 + (R2_LENGTH*R2_CM*.5));
1651  }
1652  else{
1653  Line.SetX1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1654  Line.SetY1(.5 + (R2_LENGTH*R2_CM*.5) - (((R2_WIDTH*R2_CM) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift)*tan(R2_ANGLE*TMath::DegToRad())));
1655  Line.SetX2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1656  Line.SetY2(.5 + (R2_LENGTH*R2_CM*.5));
1657  }
1658  Line.SetLineColor(kGreen);
1659  Line.SetLineWidth(2);
1660  Line_R2u.push_back(Line);
1661  Line_R2u.back().Draw();
1662  }
1663  // Region 2 V wires (29 total)
1664  for(QwHitContainer::iterator fHit = Hits_R2v->begin(); fHit != Hits_R2v->end(); fHit++){
1665  TLine Line;
1666  int fWire = fHit->GetElement(); // Wire number
1667  int fPlane = fHit->GetPlane(); // Plane number
1668  double fXShift = 0; // Used to shift the lines to the correct chamber planes (ROOT coordinates)
1669  double fPShift = 0; // Used to shift the wires on the prime planes (ROOT coordinates)
1670  switch (fPlane){
1671  case 1:
1672  case 2:
1673  case 3:
1674  case 13:
1675  case 14:
1676  case 15:
1677  fXShift = 3*((R2_DEPTH*R2_CM)/4); // Three evenly spaced wires
1678  break;
1679  case 4:
1680  case 5:
1681  case 6:
1682  case 16:
1683  case 17:
1684  case 18:
1685  fXShift = (R2_DIST*R2_CM) + (R2_DEPTH*R2_CM) + (3*(R2_DEPTH*R2_CM)/4);
1686  fPShift = .5*R2_XDIST*R2_CM; // Half drift cell size
1687  break;
1688  case 7:
1689  case 8:
1690  case 9:
1691  case 19:
1692  case 20:
1693  case 21:
1694  fXShift = (2*R2_DIST*R2_CM) + (2*R2_DEPTH*R2_CM) + (3*(R2_DEPTH*R2_CM)/4);
1695  break;
1696  case 10:
1697  case 11:
1698  case 12:
1699  case 22:
1700  case 23:
1701  case 24:
1702  fXShift = (3*R2_DIST*R2_CM) + (3*R2_DEPTH*R2_CM) + (3*(R2_DEPTH*R2_CM)/4);
1703  fPShift = .5*R2_XDIST*R2_CM; // Half drift cell size
1704  break;
1705  }
1706  if (fPlane > 12) // If on second arm, draw in appropriate tab)
1707  fRegion2bXZ->GetCanvas()->cd();
1708  if (fWire < R2_FULLWIRE1){
1709  Line.SetX1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1710  Line.SetY1(.5 + (R2_LENGTH*R2_CM*.5));
1711  Line.SetX2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1712  Line.SetY2(.5 + (R2_LENGTH*R2_CM*.5) - (((R2_UVDIST*R2_CM*fWire) + fPShift)*tan(R2_ANGLE*TMath::DegToRad())));
1713  }
1714  else if (fWire < R2_FULLWIRE2){
1715  Line.SetX1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1716  Line.SetY1(.5 + (R2_LENGTH*R2_CM*.5));
1717  Line.SetX2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1718  Line.SetY2(.5 - (R2_LENGTH*R2_CM*.5));
1719  }
1720  else{
1721  Line.SetX1(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1722  Line.SetY1(.5 - (R2_LENGTH*R2_CM*.5) + (((R2_WIDTH*R2_CM) - (R2_UVDIST*R2_CM*(fWire - R2_FULLWIRE1)) - fPShift)*tan(R2_ANGLE*TMath::DegToRad())));
1723  Line.SetX2(.5 - (1.5*R2_DIST*R2_CM) - (2*R2_DEPTH*R2_CM) + fXShift);
1724  Line.SetY2(.5 - (R2_LENGTH*R2_CM*.5));
1725  }
1726  Line.SetLineColor(kBlue);
1727  Line.SetLineWidth(2);
1728  Line_R2v.push_back(Line);
1729  Line_R2v.back().Draw();
1730  }
1731  fRegion2XZ->GetCanvas()->SetEditable(kFALSE);
1732  fRegion2XZ->GetCanvas()->Update();
1733  fRegion2bXZ->GetCanvas()->SetEditable(kFALSE);
1734  fRegion2bXZ->GetCanvas()->Update();
1735 
1736  //DRAW REGION 3 WIRE HITS--------------------------------------------------//
1737 
1738  // FRONT VIEW (X-Y)
1739  fRegion3XY->GetCanvas()->cd();
1740  // Region 3 U wires (279 total)
1741  for(QwHitContainer::iterator fHit = Hits_R3u->begin(); fHit != Hits_R3u->end(); fHit++){
1742  TLine Line;
1743  int fWire = fHit->GetElement(); // Wire number
1744  int fPlane = fHit->GetPlane(); // Plane number
1745  double fYShift = 0; // Used to shift the lines to the correct chamber (ROOT coordinates)
1746  switch (fPlane){
1747  case 1:
1748  case 2:
1749  fYShift = .65;
1750  break;
1751  case 3:
1752  case 4:
1753  fYShift = .75;
1754  break;
1755  case 5:
1756  case 6:
1757  fYShift = .25;
1758  break;
1759  case 7:
1760  case 8:
1761  fYShift = .35;
1762  break;
1763  }
1764  if (fWire < R3_FULLWIRE1){
1765  Line.SetX1(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*fWire));
1766  Line.SetY1(fYShift - (R3_LENGTH*R3_CM*.5));
1767  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5));
1768  Line.SetY2(fYShift - (R3_LENGTH*R3_CM*.5) + ((R3_UVDIST*R3_CM*fWire)*tan(R3_ANGLE*TMath::DegToRad())));
1769  }
1770  else if (fWire < R3_FULLWIRE2){
1771  Line.SetX1(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*fWire));
1772  Line.SetY1(fYShift - (R3_LENGTH*R3_CM*.5));
1773  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))));
1774  Line.SetY2(fYShift + (R3_LENGTH*R3_CM*.5));
1775  }
1776  else{
1777  Line.SetX1(.5 - (R3_WIDTH*R3_CM*.5));
1778  Line.SetY1(fYShift + (R3_LENGTH*R3_CM*.5) - (((R3_WIDTH*R3_CM) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))))*tan(R3_ANGLE*TMath::DegToRad())));
1779  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))));
1780  Line.SetY2(fYShift + (R3_LENGTH*R3_CM*.5));
1781  }
1782  Line.SetLineColor(kGreen);
1783  Line_R2u.push_back(Line);
1784  Line_R2u.back().Draw();
1785  }
1786  // Region 3 V wires (279 total)
1787  for(QwHitContainer::iterator fHit = Hits_R3v->begin(); fHit != Hits_R3v->end(); fHit++){
1788  TLine Line;
1789  int fWire = fHit->GetElement(); // Wire number
1790  int fPlane = fHit->GetPlane(); // Plane number
1791  double fYShift = 0; // Used to shift the lines to the correct chamber (ROOT coordinates)
1792  switch (fPlane){
1793  case 1:
1794  case 2:
1795  fYShift = .65;
1796  break;
1797  case 3:
1798  case 4:
1799  fYShift = .75;
1800  break;
1801  case 5:
1802  case 6:
1803  fYShift = .25;
1804  break;
1805  case 7:
1806  case 8:
1807  fYShift = .35;
1808  break;
1809  }
1810  if (fWire < R3_FULLWIRE1){
1811  Line.SetX1(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*fWire));
1812  Line.SetY1(fYShift + (R3_LENGTH*R3_CM*.5));
1813  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5));
1814  Line.SetY2(fYShift + (R3_LENGTH*R3_CM*.5) - ((R3_UVDIST*R3_CM*fWire)*tan(R3_ANGLE*TMath::DegToRad())));
1815  }
1816  else if (fWire < R3_FULLWIRE2){
1817  Line.SetX1(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*fWire));
1818  Line.SetY1(fYShift + (R3_LENGTH*R3_CM*.5));
1819  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))));
1820  Line.SetY2(fYShift - (R3_LENGTH*R3_CM*.5));
1821  }
1822  else{
1823  Line.SetX1(.5 - (R3_WIDTH*R3_CM*.5));
1824  Line.SetY1(fYShift - (R3_LENGTH*R3_CM*.5) + (((R3_WIDTH*R3_CM) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))))*tan(R3_ANGLE*TMath::DegToRad())));
1825  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))));
1826  Line.SetY2(fYShift - (R3_LENGTH*R3_CM*.5));
1827  }
1828  Line.SetLineColor(kBlue);
1829  Line_R2v.push_back(Line);
1830  Line_R2v.back().Draw();
1831  }
1832  fRegion3XY->GetCanvas()->SetEditable(kFALSE);
1833  fRegion3XY->GetCanvas()->Update();
1834 
1835  // TOP VIEW (Y-Z)
1836  fRegion3YZ->GetCanvas()->cd();
1837  // Region 3 U wires (279 total)
1838  for(QwHitContainer::iterator fHit = Hits_R3u->begin(); fHit != Hits_R3u->end(); fHit++){
1839  TLine Line;
1840  int fWire = fHit->GetElement(); // Wire number
1841  int fPlane = fHit->GetPlane(); // Plane number
1842  double fYShift = 0; // Used to shift the lines to the correct plane (ROOT coordinates)
1843  switch (fPlane){
1844  case 1:
1845  case 2:
1846  fYShift = .655; // Wires not centered so its easier to see crossover
1847  break;
1848  case 3:
1849  case 4:
1850  fYShift = .755;
1851  break;
1852  case 5:
1853  case 6:
1854  fYShift = .255;
1855  break;
1856  case 7:
1857  case 8:
1858  fYShift = .355;
1859  break;
1860  }
1861  if (fWire < R3_FULLWIRE1){
1862  Line.SetX1(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*fWire));
1863  Line.SetY1(fYShift);
1864  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5));
1865  Line.SetY2(fYShift);
1866  }
1867  else if (fWire < R3_FULLWIRE2){
1868  Line.SetX1(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*fWire));
1869  Line.SetY1(fYShift);
1870  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))));
1871  Line.SetY2(fYShift);
1872  }
1873  else{
1874  Line.SetX1(.5 - (R3_WIDTH*R3_CM*.5));
1875  Line.SetY1(fYShift);
1876  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))));
1877  Line.SetY2(fYShift);
1878  }
1879  Line.SetLineColor(kGreen);
1880  Line.SetLineWidth(3); // Pixel depth of frame; easier to see
1881  Line_R2u.push_back(Line);
1882  Line_R2u.back().Draw();
1883  }
1884  // Region 3 V wires (279 total)
1885  for(QwHitContainer::iterator fHit = Hits_R3v->begin(); fHit != Hits_R3v->end(); fHit++){
1886  TLine Line;
1887  int fWire = fHit->GetElement(); // Wire number
1888  int fPlane = fHit->GetPlane(); // Plane number
1889  double fYShift = 0; // Used to shift the lines to the correct plane (ROOT coordinates)
1890  switch (fPlane){
1891  case 1:
1892  case 2:
1893  fYShift = .645; // Wires not centered so its easier to see crossover
1894  break;
1895  case 3:
1896  case 4:
1897  fYShift = .745;
1898  break;
1899  case 5:
1900  case 6:
1901  fYShift = .245;
1902  break;
1903  case 7:
1904  case 8:
1905  fYShift = .345;
1906  break;
1907  }
1908  if (fWire < R3_FULLWIRE1){
1909  Line.SetX1(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*fWire));
1910  Line.SetY1(fYShift);
1911  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5));
1912  Line.SetY2(fYShift);
1913  }
1914  else if (fWire < R3_FULLWIRE2){
1915  Line.SetX1(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*fWire));
1916  Line.SetY1(fYShift);
1917  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))));
1918  Line.SetY2(fYShift);
1919  }
1920  else{
1921  Line.SetX1(.5 - (R3_WIDTH*R3_CM*.5));
1922  Line.SetY1(fYShift);
1923  Line.SetX2(.5 + (R3_WIDTH*R3_CM*.5) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))));
1924  Line.SetY2(fYShift);
1925  }
1926  Line.SetLineColor(kBlue);
1927  Line.SetLineWidth(3); // Pixel depth of frame; easier to see
1928  Line_R2u.push_back(Line);
1929  Line_R2u.back().Draw();
1930  }
1931  fRegion3YZ->GetCanvas()->SetEditable(kFALSE);
1932  fRegion3YZ->GetCanvas()->Update();
1933 
1934  // SIDE VIEW (X-Z)
1935  fRegion3XZ->GetCanvas()->cd();
1936  // Region 3 U wires (279 total)
1937  for(QwHitContainer::iterator fHit = Hits_R3u->begin(); fHit != Hits_R3u->end(); fHit++){
1938  TLine Line;
1939  int fWire = fHit->GetElement(); // Wire number
1940  int fPlane = fHit->GetPlane(); // Plane number
1941  double fXShift = 0; // Used to shift the lines to the correct plane (ROOT coordinates)
1942  double fYShift = 0; // Used to shift the lines to the correct plane (ROOT coordinates)
1943  switch (fPlane){
1944  case 1:
1945  case 2:
1946  fXShift = .5 - (R3_DIST*R3_CM*.5) + .005; // Wires not centered so its easier to see crossover
1947  fYShift = .65;
1948  break;
1949  case 3:
1950  case 4:
1951  fXShift = .5 + (R3_DIST*R3_CM*.5) + .005;
1952  fYShift = .75;
1953  break;
1954  case 5:
1955  case 6:
1956  fXShift = .5 - (R3_DIST*R3_CM*.5) + .005;
1957  fYShift = .25;
1958  break;
1959  case 7:
1960  case 8:
1961  fXShift = .5 + (R3_DIST*R3_CM*.5) + .005;
1962  fYShift = .35;
1963  break;
1964  }
1965  if (fWire < R3_FULLWIRE1){
1966  Line.SetX1(fXShift);
1967  Line.SetY1(fYShift - (R3_LENGTH*R3_CM*.5));
1968  Line.SetX2(fXShift);
1969  Line.SetY2(fYShift - (R3_LENGTH*R3_CM*.5) + ((R3_UVDIST*R3_CM*fWire)*tan(R3_ANGLE*TMath::DegToRad())));
1970  }
1971  else if (fWire < R3_FULLWIRE2){
1972  Line.SetX1(fXShift);
1973  Line.SetY1(fYShift - (R3_LENGTH*R3_CM*.5));
1974  Line.SetX2(fXShift);
1975  Line.SetY2(fYShift + (R3_LENGTH*R3_CM*.5));
1976  }
1977  else{
1978  Line.SetX1(fXShift);
1979  Line.SetY1(fYShift + (R3_LENGTH*R3_CM*.5) - (((R3_WIDTH*R3_CM) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))))*tan(R3_ANGLE*TMath::DegToRad())));
1980  Line.SetX2(fXShift);
1981  Line.SetY2(fYShift + (R3_LENGTH*R3_CM*.5));
1982  }
1983  Line.SetLineColor(kGreen);
1984  Line.SetLineWidth(3); // Pixel depth of frame; easier to see
1985  Line_R2u.push_back(Line);
1986  Line_R2u.back().Draw();
1987  }
1988  // Region 3 V wires (279 total)
1989  for(QwHitContainer::iterator fHit = Hits_R3v->begin(); fHit != Hits_R3v->end(); fHit++){
1990  TLine Line;
1991  int fWire = fHit->GetElement(); // Wire number
1992  int fPlane = fHit->GetPlane(); // Plane number
1993  double fXShift = 0; // Used to shift the lines to the correct plane (ROOT coordinates)
1994  double fYShift = 0; // Used to shift the lines to the correct plane (ROOT coordinates)
1995  switch (fPlane){
1996  case 1:
1997  case 2:
1998  fXShift = .5 - (R3_DIST*R3_CM*.5) - .005; // Wires not centered so its easier to see crossover
1999  fYShift = .65;
2000  break;
2001  case 3:
2002  case 4:
2003  fXShift = .5 + (R3_DIST*R3_CM*.5) - .005;
2004  fYShift = .75;
2005  break;
2006  case 5:
2007  case 6:
2008  fXShift = .5 - (R3_DIST*R3_CM*.5) - .005;
2009  fYShift = .35;
2010  break;
2011  case 7:
2012  case 8:
2013  fXShift = .5 + (R3_DIST*R3_CM*.5) - .005;
2014  fYShift = .25;
2015  break;
2016  }
2017  if (fWire < R3_FULLWIRE1){
2018  Line.SetX1(fXShift);
2019  Line.SetY1(fYShift + (R3_LENGTH*R3_CM*.5));
2020  Line.SetX2(fXShift);
2021  Line.SetY2(fYShift + (R3_LENGTH*R3_CM*.5) - ((R3_UVDIST*R3_CM*fWire)*tan(R3_ANGLE*TMath::DegToRad())));
2022  }
2023  else if (fWire < R3_FULLWIRE2){
2024  Line.SetX1(fXShift);
2025  Line.SetY1(fYShift + (R3_LENGTH*R3_CM*.5));
2026  Line.SetX2(fXShift);
2027  Line.SetY2(fYShift - (R3_LENGTH*R3_CM*.5));
2028  }
2029  else{
2030  Line.SetX1(fXShift);
2031  Line.SetY1(fYShift - (R3_LENGTH*R3_CM*.5) + (((R3_WIDTH*R3_CM) - (R3_UVDIST*R3_CM*(fWire - (R3_FULLWIRE1 - 1))))*tan(R3_ANGLE*TMath::DegToRad())));
2032  Line.SetX2(fXShift);
2033  Line.SetY2(fYShift - (R3_LENGTH*R3_CM*.5));
2034  }
2035  Line.SetLineColor(kBlue);
2036  Line.SetLineWidth(3); // Pixel depth of frame; easier to see
2037  Line_R2u.push_back(Line);
2038  Line_R2u.back().Draw();
2039  }
2040  fRegion3XZ->GetCanvas()->SetEditable(kFALSE);
2041  fRegion3XZ->GetCanvas()->Update();
2042 
2043  // Delete hit list (because it is regenerated every time)
2044  delete fHitList; fHitList = 0;
2045 
2046 } // End DrawEvent()
#define R3_WIDTH
#define R2_CM
TRootEmbeddedCanvas * fRegion3XZ
TRootEmbeddedCanvas * fRegion3XY
TRootEmbeddedCanvas * fRegion3YZ
#define R1_CM
TRootEmbeddedCanvas * fRegion1XZ
std::vector< TLine > Line_R2x
QwHitContainer * fHitList
#define R2_DIST
QwHitContainer * GetHitContainer() const
Get the hit list.
QwTreeEventBuffer * fEventBuffer
#define R3_LENGTH
#define R3_FULLWIRE1
#define R2_LENGTH
#define R1_DEPTH
#define R2_FULLWIRE2
TRootEmbeddedCanvas * fRegion1XY
#define R2_DEPTH
#define R3_CM
TRootEmbeddedCanvas * fRegion2XY
std::vector< TLine > Line_R1y
unsigned int GetSpecificEvent(const int eventnumber)
Read the specified event.
TRootEmbeddedCanvas * fRegion2bXZ
TRootEmbeddedCanvas * fRegion2YZ
#define R3_DIST
TGListBox * fWireInfoListBox
#define R3_FULLWIRE2
#define R1_DIST
TRootEmbeddedCanvas * fRegion2bYZ
void GetSubList_Dir(EQwRegionID region, EQwDetectorPackage package, EQwDirectionID direction, std::vector< QwHit > &sublist)
void Print(const Option_t *option=0) const
#define R2_WIDTH
#define R3_UVDIST
TRootEmbeddedCanvas * fRegion2bXY
TRootEmbeddedCanvas * fOctantID
#define R2_FULLWIRE1
TPaveLabel * Octant_6
#define R2_ANGLE
std::vector< TLine > Line_R2v
#define R2_UVDIST
TRootEmbeddedCanvas * fRegion1YZ
#define R3_ANGLE
TRootEmbeddedCanvas * fRegion2XZ
std::vector< TLine > Line_R2u
TPaveLabel * Octant_2
#define R1_LENGTH
#define R2_XDIST
#define R1_WIDTH

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void QwEventDisplay::GoClear ( )

Definition at line 981 of file QwEventDisplay.cc.

References fCurrentEventLabel, fOctantID, fRegion1XY, fRegion1XZ, fRegion1YZ, fRegion2bXY, fRegion2bXZ, fRegion2bYZ, fRegion2XY, fRegion2XZ, fRegion2YZ, fRegion3XY, fRegion3XZ, fRegion3YZ, fWireInfoListBox, Line_R1r, Line_R1y, Line_R2u, Line_R2v, Line_R2x, Line_R3u, Line_R3v, Octant_1, Octant_2, Octant_3, Octant_4, Octant_5, Octant_6, Octant_7, and Octant_8.

Referenced by DrawEvent(), GoPrevious(), and GotoEvent().

981  { // Clears all displayed data
982 
983  fCurrentEventLabel->SetText(Form("%d", fEventNumber)); // Updates layout to show current event number
984 
985  fWireInfoListBox->RemoveAll(); // Clear wire hit information listbox
986 
987  Line_R1r.clear(); // Clear existing Region 1 vectors
988  Line_R1y.clear();
989  Line_R2x.clear(); // Clear existing Region 2 vectors
990  Line_R2u.clear();
991  Line_R2v.clear();
992  Line_R3u.clear(); // Clear existing Region 3 vectors
993  Line_R3v.clear();
994 
995  Octant_1->SetFillColor(0); // Clear octant identification fills
996  Octant_2->SetFillColor(0);
997  Octant_3->SetFillColor(0);
998  Octant_4->SetFillColor(0);
999  Octant_5->SetFillColor(0);
1000  Octant_6->SetFillColor(0);
1001  Octant_7->SetFillColor(0);
1002  Octant_8->SetFillColor(0);
1003 
1004  fOctantID->GetCanvas()->Update(); // Update canvases to null state
1005  fRegion1XY->GetCanvas()->Update();
1006  fRegion1XZ->GetCanvas()->Update();
1007  fRegion1YZ->GetCanvas()->Update();
1008  fRegion2XY->GetCanvas()->Update();
1009  fRegion2XZ->GetCanvas()->Update();
1010  fRegion2YZ->GetCanvas()->Update();
1011  fRegion2bXY->GetCanvas()->Update();
1012  fRegion2bXZ->GetCanvas()->Update();
1013  fRegion2bYZ->GetCanvas()->Update();
1014  fRegion3XY->GetCanvas()->Update();
1015  fRegion3XZ->GetCanvas()->Update();
1016  fRegion3YZ->GetCanvas()->Update();
1017 } // End GoClear()
TRootEmbeddedCanvas * fRegion3XZ
TRootEmbeddedCanvas * fRegion3XY
TRootEmbeddedCanvas * fRegion3YZ
TRootEmbeddedCanvas * fRegion1XZ
TPaveLabel * Octant_3
TPaveLabel * Octant_4
std::vector< TLine > Line_R2x
std::vector< TLine > Line_R3v
TRootEmbeddedCanvas * fRegion1XY
TRootEmbeddedCanvas * fRegion2XY
std::vector< TLine > Line_R1y
TGLabel * fCurrentEventLabel
TPaveLabel * Octant_5
TPaveLabel * Octant_7
TRootEmbeddedCanvas * fRegion2bXZ
TPaveLabel * Octant_1
std::vector< TLine > Line_R1r
TRootEmbeddedCanvas * fRegion2YZ
TGListBox * fWireInfoListBox
TPaveLabel * Octant_8
TRootEmbeddedCanvas * fRegion2bYZ
TRootEmbeddedCanvas * fRegion2bXY
std::vector< TLine > Line_R3u
TRootEmbeddedCanvas * fOctantID
TPaveLabel * Octant_6
std::vector< TLine > Line_R2v
TRootEmbeddedCanvas * fRegion1YZ
TRootEmbeddedCanvas * fRegion2XZ
std::vector< TLine > Line_R2u
TPaveLabel * Octant_2

+ Here is the caller graph for this function:

void QwEventDisplay::GoNext ( )

Definition at line 974 of file QwEventDisplay.cc.

References DrawEvent().

974  { // Adds one to current event counter
975  // Called by NextButton click
976 
977  fEventNumber++; // Go to next event
978  DrawEvent(); // Update display information
979 } // End GoNext()

+ Here is the call graph for this function:

void QwEventDisplay::GoPrevious ( )

Definition at line 961 of file QwEventDisplay.cc.

References DrawEvent(), and GoClear().

961  { // Subtracts one from current event counter
962  // Called by PreviousButton click
963 
964  if (fEventNumber > 1){
965  fEventNumber--; // Go to previous event
966  DrawEvent(); // Update display information
967  }
968  else{
969  fEventNumber = 0; // Go to null event
970  GoClear(); // Keep from drawing non-existent negative events
971  }
972 } // End GoPrevious()

+ Here is the call graph for this function:

void QwEventDisplay::GotoEvent ( )

Definition at line 1019 of file QwEventDisplay.cc.

References DrawEvent(), fCurrentEventEntry, fCurrentEventLabel, and GoClear().

1019  { // Goes to desired event number written in "goto event" number entry
1020  // Called by GotoEventButton click
1021 
1022  fEventNumber = fCurrentEventEntry->GetNumberEntry()->GetIntNumber(); // fEventNumber takes value from number entry
1023 
1024  if (fEventNumber > 0){
1025  fCurrentEventLabel->SetText(Form("%ld",fCurrentEventEntry->GetNumberEntry()->GetIntNumber())); // Set current event label to value from number entry
1026  DrawEvent(); // Update display information
1027  }
1028 
1029  else{
1030  fEventNumber = 0; // Go to null event
1031  GoClear(); // Keep from drawing non-existent negative events
1032  }
1033 } // End GotoEvent()
TGNumberEntry * fCurrentEventEntry
TGLabel * fCurrentEventLabel

+ Here is the call graph for this function:

void QwEventDisplay::HandleMenu ( Int_t  id)

Definition at line 938 of file QwEventDisplay.cc.

References fMenuFile, M_FILE_CLOSE, M_FILE_OPEN, M_HELP_ABOUT, and M_HELP_TUTORIAL.

938  { // Controls the menu bar functions
939  // Called my menu entry click
940 
941  switch (id){
942  case M_FILE_OPEN: // Open ROOT file
943  printf("\nCannot open file. This feature is currently non-functional. Use the Q-weak Data Analysis GUI to control files or re-open the display with a different run file.\n");
944  fMenuFile->DisableEntry(M_FILE_OPEN);
945  fMenuFile->EnableEntry(M_FILE_CLOSE);
946  break;
947  case M_FILE_CLOSE: // Close ROOT file
948  printf("\nCannot close file. This feature is currently non-functional. Use the Q-weak Data Analysis GUI to control files or re-open the display with a different run file.\n");
949  fMenuFile->EnableEntry(M_FILE_OPEN);
950  fMenuFile->DisableEntry(M_FILE_CLOSE);
951  break;
952  case M_HELP_TUTORIAL: // Print a link to the event display tutorial
953  printf("\nTutorial documentation is located at https://qweak.jlab.org/wiki/index.php/Track_Reconstruction.\n");
954  break;
955  case M_HELP_ABOUT: // Print information about the event display
956  printf("\n**************************************\n** Qweak 2D Event Display **\n** Jefferson Lab -- Hall C **\n** Author: Derek Jones **\n** The George Washington University **\n** Contact: dwjones8@gwu.edu **\n** Last updated: 7-26-2010 **\n**************************************\n");
957  break;
958  }
959 } // End HandleMenu(Int_t)
TGPopupMenu * fMenuFile
QwEventDisplay::RQ_OBJECT ( "QwEventDisplay"  )
void QwEventDisplay::SetEventBuffer ( QwTreeEventBuffer eventbuffer)
inline

Definition at line 326 of file QwEventDisplay.h.

References fEventBuffer.

Referenced by main().

326 { fEventBuffer = eventbuffer; };
QwTreeEventBuffer * fEventBuffer

+ Here is the caller graph for this function:

void QwEventDisplay::SetSubsystemArray ( QwSubsystemArrayTracking subsystemarray)
inline

Definition at line 327 of file QwEventDisplay.h.

References fSubsystemArray.

Referenced by main().

327 { fSubsystemArray = subsystemarray; };
QwSubsystemArrayTracking * fSubsystemArray
// Excluded from dictionary

+ Here is the caller graph for this function:

Field Documentation

TBox* QwEventDisplay::Box_R1XY
private

Definition at line 274 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R1XZ
private

Definition at line 274 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R1YZ
private

Definition at line 274 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox* QwEventDisplay::Box_R2bXY
private

Definition at line 294 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2bXZ1
private

Definition at line 294 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2bXZ2
private

Definition at line 294 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2bXZ3
private

Definition at line 294 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2bXZ4
private

Definition at line 294 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2bYZ1
private

Definition at line 294 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2bYZ2
private

Definition at line 294 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2bYZ3
private

Definition at line 294 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2bYZ4
private

Definition at line 294 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox* QwEventDisplay::Box_R2XY
private

Definition at line 283 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2XZ1
private

Definition at line 283 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2XZ2
private

Definition at line 283 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2XZ3
private

Definition at line 283 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2XZ4
private

Definition at line 283 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2YZ1
private

Definition at line 283 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2YZ2
private

Definition at line 283 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2YZ3
private

Definition at line 283 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R2YZ4
private

Definition at line 283 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox* QwEventDisplay::Box_R3XY1
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R3XY2
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R3XY3
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R3XY4
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R3XZ1
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R3XZ2
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R3XZ3
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R3XZ4
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R3YZ1
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R3YZ2
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R3YZ3
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TBox * QwEventDisplay::Box_R3YZ4
private

Definition at line 302 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas* QwEventDisplay::cOctantID
private

Definition at line 266 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas* QwEventDisplay::cR1XY
private

Definition at line 272 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas * QwEventDisplay::cR1XZ
private

Definition at line 272 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas * QwEventDisplay::cR1YZ
private

Definition at line 272 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas* QwEventDisplay::cR2bXY
private

Definition at line 292 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas * QwEventDisplay::cR2bXZ
private

Definition at line 292 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas * QwEventDisplay::cR2bYZ
private

Definition at line 292 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas* QwEventDisplay::cR2XY
private

Definition at line 281 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas * QwEventDisplay::cR2XZ
private

Definition at line 281 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas * QwEventDisplay::cR2YZ
private

Definition at line 281 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas* QwEventDisplay::cR3XY
private

Definition at line 300 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas * QwEventDisplay::cR3XZ
private

Definition at line 300 of file QwEventDisplay.h.

Referenced by ClassImp().

TCanvas * QwEventDisplay::cR3YZ
private

Definition at line 300 of file QwEventDisplay.h.

Referenced by ClassImp().

TLine* QwEventDisplay::Div_R3XY
private

Definition at line 304 of file QwEventDisplay.h.

Referenced by ClassImp().

TLine * QwEventDisplay::Div_R3XZ
private

Definition at line 304 of file QwEventDisplay.h.

Referenced by ClassImp().

TLine * QwEventDisplay::Div_R3YZ
private

Definition at line 304 of file QwEventDisplay.h.

Referenced by ClassImp().

TGTextButton* QwEventDisplay::ExitButton
private

Definition at line 239 of file QwEventDisplay.h.

Referenced by ClassImp().

TGGroupFrame* QwEventDisplay::fCurrentEvent
private

Definition at line 257 of file QwEventDisplay.h.

Referenced by ClassImp().

TGNumberEntry* QwEventDisplay::fCurrentEventEntry
private

Definition at line 256 of file QwEventDisplay.h.

Referenced by ClassImp(), and GotoEvent().

TGLabel* QwEventDisplay::fCurrentEventLabel
private

Definition at line 255 of file QwEventDisplay.h.

Referenced by ClassImp(), GoClear(), and GotoEvent().

TGVerticalFrame* QwEventDisplay::fEventBox1
private

Definition at line 254 of file QwEventDisplay.h.

Referenced by ClassImp().

TGVerticalFrame* QwEventDisplay::fEventBox2
private

Definition at line 260 of file QwEventDisplay.h.

Referenced by ClassImp().

TGVerticalFrame* QwEventDisplay::fEventBox3
private

Definition at line 264 of file QwEventDisplay.h.

Referenced by ClassImp().

TGHorizontalFrame* QwEventDisplay::fEventBoxes
private

Definition at line 237 of file QwEventDisplay.h.

Referenced by ClassImp().

QwTreeEventBuffer* QwEventDisplay::fEventBuffer
private

Definition at line 312 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and SetEventBuffer().

TGVerticalFrame * QwEventDisplay::fEventCounter
private

Definition at line 254 of file QwEventDisplay.h.

Referenced by ClassImp().

QwHitContainer* QwEventDisplay::fHitList
private

Definition at line 316 of file QwEventDisplay.h.

Referenced by ClassImp(), and DrawEvent().

TGMainFrame* QwEventDisplay::fMain
private

Definition at line 235 of file QwEventDisplay.h.

Referenced by ClassImp(), and ~QwEventDisplay().

TGMenuBar* QwEventDisplay::fMenuBar
private

Definition at line 242 of file QwEventDisplay.h.

Referenced by ClassImp().

TGLayoutHints * QwEventDisplay::fMenuBarHelpLayout
private

Definition at line 244 of file QwEventDisplay.h.

Referenced by ClassImp().

TGLayoutHints * QwEventDisplay::fMenuBarItemLayout
private

Definition at line 244 of file QwEventDisplay.h.

Referenced by ClassImp().

TGLayoutHints* QwEventDisplay::fMenuBarLayout
private

Definition at line 244 of file QwEventDisplay.h.

Referenced by ClassImp().

TGPopupMenu* QwEventDisplay::fMenuFile
private

Definition at line 243 of file QwEventDisplay.h.

Referenced by ClassImp(), and HandleMenu().

TGPopupMenu * QwEventDisplay::fMenuHelp
private

Definition at line 243 of file QwEventDisplay.h.

Referenced by ClassImp().

TRootEmbeddedCanvas* QwEventDisplay::fOctantID
private

Definition at line 265 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TGCompositeFrame* QwEventDisplay::fRegion1
private

Definition at line 270 of file QwEventDisplay.h.

Referenced by ClassImp().

TRootEmbeddedCanvas* QwEventDisplay::fRegion1XY
private

Definition at line 271 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TRootEmbeddedCanvas * QwEventDisplay::fRegion1XZ
private

Definition at line 271 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TRootEmbeddedCanvas * QwEventDisplay::fRegion1YZ
private

Definition at line 271 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TGCompositeFrame* QwEventDisplay::fRegion2
private

Definition at line 279 of file QwEventDisplay.h.

Referenced by ClassImp().

TGCompositeFrame* QwEventDisplay::fRegion2b
private

Definition at line 290 of file QwEventDisplay.h.

Referenced by ClassImp().

TRootEmbeddedCanvas* QwEventDisplay::fRegion2bXY
private

Definition at line 291 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TRootEmbeddedCanvas * QwEventDisplay::fRegion2bXZ
private

Definition at line 291 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TRootEmbeddedCanvas * QwEventDisplay::fRegion2bYZ
private

Definition at line 291 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TRootEmbeddedCanvas* QwEventDisplay::fRegion2XY
private

Definition at line 280 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TRootEmbeddedCanvas * QwEventDisplay::fRegion2XZ
private

Definition at line 280 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TRootEmbeddedCanvas * QwEventDisplay::fRegion2YZ
private

Definition at line 280 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TGCompositeFrame* QwEventDisplay::fRegion3
private

Definition at line 298 of file QwEventDisplay.h.

Referenced by ClassImp().

TGCompositeFrame* QwEventDisplay::fRegion3TS
private

Definition at line 309 of file QwEventDisplay.h.

Referenced by ClassImp().

TRootEmbeddedCanvas* QwEventDisplay::fRegion3XY
private

Definition at line 299 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TRootEmbeddedCanvas * QwEventDisplay::fRegion3XZ
private

Definition at line 299 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TRootEmbeddedCanvas * QwEventDisplay::fRegion3YZ
private

Definition at line 299 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TGTab* QwEventDisplay::fRegions
private

Definition at line 238 of file QwEventDisplay.h.

Referenced by ClassImp().

QwSubsystemArrayTracking* QwEventDisplay::fSubsystemArray
private

// Excluded from dictionary

Definition at line 313 of file QwEventDisplay.h.

Referenced by ClassImp(), and SetSubsystemArray().

TTree* QwEventDisplay::fTree
private

Definition at line 319 of file QwEventDisplay.h.

UInt_t QwEventDisplay::fTreeEntries

Definition at line 232 of file QwEventDisplay.h.

Referenced by ClassImp().

TGListBox* QwEventDisplay::fWireInfoListBox
private

Definition at line 261 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TPaveLabel* QwEventDisplay::Label_R1XY
private

Definition at line 273 of file QwEventDisplay.h.

Referenced by ClassImp().

TPaveLabel * QwEventDisplay::Label_R1XZ
private

Definition at line 273 of file QwEventDisplay.h.

Referenced by ClassImp().

TPaveLabel * QwEventDisplay::Label_R1YZ
private

Definition at line 273 of file QwEventDisplay.h.

Referenced by ClassImp().

TPaveLabel* QwEventDisplay::Label_R2bXY
private

Definition at line 293 of file QwEventDisplay.h.

Referenced by ClassImp().

TPaveLabel * QwEventDisplay::Label_R2bXZ
private

Definition at line 293 of file QwEventDisplay.h.

Referenced by ClassImp().

TPaveLabel * QwEventDisplay::Label_R2bYZ
private

Definition at line 293 of file QwEventDisplay.h.

Referenced by ClassImp().

TPaveLabel* QwEventDisplay::Label_R2XY
private

Definition at line 282 of file QwEventDisplay.h.

Referenced by ClassImp().

TPaveLabel * QwEventDisplay::Label_R2XZ
private

Definition at line 282 of file QwEventDisplay.h.

Referenced by ClassImp().

TPaveLabel * QwEventDisplay::Label_R2YZ
private

Definition at line 282 of file QwEventDisplay.h.

Referenced by ClassImp().

TPaveLabel* QwEventDisplay::Label_R3XY
private

Definition at line 301 of file QwEventDisplay.h.

Referenced by ClassImp().

TPaveLabel * QwEventDisplay::Label_R3XZ
private

Definition at line 301 of file QwEventDisplay.h.

Referenced by ClassImp().

TPaveLabel * QwEventDisplay::Label_R3YZ
private

Definition at line 301 of file QwEventDisplay.h.

Referenced by ClassImp().

std::vector<TLine> QwEventDisplay::Line_R1r
private

Definition at line 275 of file QwEventDisplay.h.

Referenced by GoClear().

std::vector<TLine> QwEventDisplay::Line_R1y
private

Definition at line 276 of file QwEventDisplay.h.

Referenced by DrawEvent(), and GoClear().

std::vector<TLine> QwEventDisplay::Line_R2u
private

Definition at line 286 of file QwEventDisplay.h.

Referenced by DrawEvent(), and GoClear().

std::vector<TLine> QwEventDisplay::Line_R2v
private

Definition at line 287 of file QwEventDisplay.h.

Referenced by DrawEvent(), and GoClear().

std::vector<TLine> QwEventDisplay::Line_R2x
private

Definition at line 285 of file QwEventDisplay.h.

Referenced by DrawEvent(), and GoClear().

std::vector<TLine> QwEventDisplay::Line_R3u
private

Definition at line 305 of file QwEventDisplay.h.

Referenced by GoClear().

std::vector<TLine> QwEventDisplay::Line_R3v
private

Definition at line 306 of file QwEventDisplay.h.

Referenced by GoClear().

TPaveLabel* QwEventDisplay::Octant_1
private

Definition at line 267 of file QwEventDisplay.h.

Referenced by ClassImp(), and GoClear().

TPaveLabel * QwEventDisplay::Octant_2
private

Definition at line 267 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TPaveLabel * QwEventDisplay::Octant_3
private

Definition at line 267 of file QwEventDisplay.h.

Referenced by ClassImp(), and GoClear().

TPaveLabel * QwEventDisplay::Octant_4
private

Definition at line 267 of file QwEventDisplay.h.

Referenced by ClassImp(), and GoClear().

TPaveLabel * QwEventDisplay::Octant_5
private

Definition at line 267 of file QwEventDisplay.h.

Referenced by ClassImp(), and GoClear().

TPaveLabel * QwEventDisplay::Octant_6
private

Definition at line 267 of file QwEventDisplay.h.

Referenced by ClassImp(), DrawEvent(), and GoClear().

TPaveLabel * QwEventDisplay::Octant_7
private

Definition at line 267 of file QwEventDisplay.h.

Referenced by ClassImp(), and GoClear().

TPaveLabel * QwEventDisplay::Octant_8
private

Definition at line 267 of file QwEventDisplay.h.

Referenced by ClassImp(), and GoClear().

TText* QwEventDisplay::tR2bXY1
private

Definition at line 295 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2bXY2
private

Definition at line 295 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2bXY3
private

Definition at line 295 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2bXY4
private

Definition at line 295 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2bXZ1
private

Definition at line 295 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2bXZ2
private

Definition at line 295 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2bXZ3
private

Definition at line 295 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2bXZ4
private

Definition at line 295 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2bYZ1
private

Definition at line 295 of file QwEventDisplay.h.

TText * QwEventDisplay::tR2bYZ2
private

Definition at line 295 of file QwEventDisplay.h.

TText * QwEventDisplay::tR2bYZ3
private

Definition at line 295 of file QwEventDisplay.h.

TText * QwEventDisplay::tR2bYZ4
private

Definition at line 295 of file QwEventDisplay.h.

TText* QwEventDisplay::tR2XY1
private

Definition at line 284 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2XY2
private

Definition at line 284 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2XY3
private

Definition at line 284 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2XY4
private

Definition at line 284 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2XZ1
private

Definition at line 284 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2XZ2
private

Definition at line 284 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2XZ3
private

Definition at line 284 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2XZ4
private

Definition at line 284 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR2YZ1
private

Definition at line 284 of file QwEventDisplay.h.

TText * QwEventDisplay::tR2YZ2
private

Definition at line 284 of file QwEventDisplay.h.

TText * QwEventDisplay::tR2YZ3
private

Definition at line 284 of file QwEventDisplay.h.

TText * QwEventDisplay::tR2YZ4
private

Definition at line 284 of file QwEventDisplay.h.

TText* QwEventDisplay::tR3XY1
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR3XY2
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR3XY3
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR3XY4
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR3XZ1
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR3XZ2
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR3XZ3
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR3XZ4
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR3YZ1
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR3YZ2
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR3YZ3
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().

TText * QwEventDisplay::tR3YZ4
private

Definition at line 303 of file QwEventDisplay.h.

Referenced by ClassImp().


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