9 #include <TRootEmbeddedCanvas.h>
10 #include <TStopwatch.h>
11 #include <RQ_OBJECT.h>
17 RQ_OBJECT(
"MyMainFrame")
136 fMain =
new TGMainFrame(p,w,h);
162 v1frame->AddFrame(
fEcanvas,
new TGLayoutHints(kLHintsLeft| kLHintsTop,
165 hframe->AddFrame(v1frame,
new TGLayoutHints(kLHintsLeft,2,2,2,2));
171 v2frame->AddFrame(fScanvas,
new TGLayoutHints(kLHintsCenterX| kLHintsTop,
178 TGTextEntry *spStText =
new TGTextEntry(v2bframe,
fBaseString.Data());
179 v2bframe->AddFrame(spStText,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
180 spStText->Connect(
"TextChanged(char*)",
"MyMainFrame",
this,
"ChangeBaseString(char*)");
182 TGTextEntry *teParFText =
new TGTextEntry(v2bframe,
fParFString.Data());
183 v2bframe->AddFrame(teParFText,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
184 teParFText->Connect(
"TextChanged(char*)",
"MyMainFrame",
this,
"ChangeParFString(char*)");
191 v2bframe->AddFrame(eventFrame,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY,2,2,2,2));
193 TGTextButton *readEv =
new TGTextButton(eventFrame,
"&Draw event");
194 readEv->Connect(
"Clicked()",
"MyMainFrame",
this,
"ReadEvent()");
195 eventFrame->AddFrame(readEv,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
198 TGNumberFormat::kNESInteger);
199 eventFrame->AddFrame(
fEventToDrawEntry,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
202 v2bframe->AddFrame(pointFrame,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY,2,2,2,2));
204 TGTextButton *readPnt =
new TGTextButton(pointFrame,
"&Draw point");
205 readPnt->Connect(
"Clicked()",
"MyMainFrame",
this,
"ReadPoint()");
206 pointFrame->AddFrame(readPnt,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
209 TGNumberFormat::kNESInteger);
210 pointFrame->AddFrame(
fPointToDrawEntry,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
212 v2frame->AddFrame(v2bframe,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY,2,2,2,2));
216 TGTextButton *saveCanv =
new TGTextButton(v2cframe,
"&Save canvas");
217 saveCanv->Connect(
"Clicked()",
"MyMainFrame",
this,
"SaveCanvas()");
218 v2cframe->AddFrame(saveCanv,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
220 TGTextButton *
exit =
new TGTextButton(v2cframe,
"&Exit",
221 "gApplication->Terminate(0)");
222 v2cframe->AddFrame(exit,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
235 h2frame->AddFrame(v2cframe,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY,2,2,2,2));
237 v2frame->AddFrame(h2frame,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY,2,2,2,2));
239 TGGroupFrame *posizeFr =
new TGGroupFrame(v2frame,
"Size and positions", kVerticalFrame);
240 posizeFr->SetTitlePos(TGGroupFrame::kRight);
241 v2frame->AddFrame(posizeFr,
new TGLayoutHints(kLHintsLeft,2,2,2,2));
243 posizeFr->SetLayoutManager(
new TGMatrixLayout(posizeFr, 0, 2, 10));
245 posizeFr->AddFrame(
new TGLabel(posizeFr,
new TGHotString(
"Size, cm")));
247 TGNumberFormat::kNESRealThree);
248 posizeFr->AddFrame(
fPSizeEntry,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
249 fPSizeEntry->Connect(
"TextChanged(char*)",
"MyMainFrame",
this,
"ChangePlotSize(char*)");
251 posizeFr->AddFrame(
new TGLabel(posizeFr,
new TGHotString(
"X center, cm")));
253 TGNumberFormat::kNESRealThree);
254 posizeFr->AddFrame(
fPCenXEntry,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
255 fPCenXEntry->Connect(
"TextChanged(char*)",
"MyMainFrame",
this,
"ChangePlotCenterX(char*)");
257 posizeFr->AddFrame(
new TGLabel(posizeFr,
new TGHotString(
"Y center, cm")));
259 TGNumberFormat::kNESRealThree);
260 posizeFr->AddFrame(
fPCenYEntry,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
261 fPCenYEntry->Connect(
"TextChanged(char*)",
"MyMainFrame",
this,
"ChangePlotCenterY(char*)");
263 posizeFr->AddFrame(
new TGLabel(posizeFr,
new TGHotString(
"Z center, cm")));
265 TGNumberFormat::kNESRealThree);
266 posizeFr->AddFrame(
fPCenZEntry,
new TGLayoutHints(kLHintsCenterX,5,5,3,4));
267 fPCenZEntry->Connect(
"TextChanged(char*)",
"MyMainFrame",
this,
"ChangePlotCenterZ(char*)");
269 TGGroupFrame *horMframe =
new TGGroupFrame(v2frame,
"Navigation", kHorizontalFrame);
270 horMframe->SetTitlePos(TGGroupFrame::kRight);
275 TGTextButton *moveUPBut =
new TGTextButton(vHMframe,
"UP");
276 moveUPBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"MoveUP()");
277 moveUPBut->SetToolTipText(
"move up by half frame");
278 vHMframe->AddFrame(moveUPBut,
new TGLayoutHints(kLHintsCenterX,5,5,5,5));
279 moveUPBut->Resize(100,50);
280 TGTextButton *moveupBut =
new TGTextButton(vHMframe,
"up");
281 moveupBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"Moveup()");
282 moveupBut->SetToolTipText(
"move up by tenth frame");
283 vHMframe->AddFrame(moveupBut,
new TGLayoutHints(kLHintsCenterX,5,5,5,5));
287 TGTextButton *moveLEFTBut =
new TGTextButton(butVHMframe,
"LEFT");
288 moveLEFTBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"MoveLEFT()");
289 moveLEFTBut->SetToolTipText(
"move left by half frame");
290 butVHMframe->AddFrame(moveLEFTBut,
new TGLayoutHints(kLHintsCenterX,5,5,5,5));
291 TGTextButton *moveleftBut =
new TGTextButton(butVHMframe,
"left");
292 moveleftBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"Moveleft()");
293 moveleftBut->SetToolTipText(
"move left by tenth frame");
294 butVHMframe->AddFrame(moveleftBut,
new TGLayoutHints(kLHintsCenterX,5,5,5,5));
295 TGTextButton *drawBut =
new TGTextButton(butVHMframe,
"&Draw");
296 drawBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"DoDraw()");
297 butVHMframe->AddFrame(drawBut,
new TGLayoutHints(kLHintsCenterX,5,5,5,5));
298 TGTextButton *moverightBut =
new TGTextButton(butVHMframe,
"right");
299 moverightBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"Moveright()");
300 moverightBut->SetToolTipText(
"move right by tenth frame");
301 butVHMframe->AddFrame(moverightBut,
new TGLayoutHints(kLHintsCenterX,5,5,5,5));
302 TGTextButton *moveRIGHTBut =
new TGTextButton(butVHMframe,
"RIGHT");
303 moveRIGHTBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"MoveRIGHT()");
304 moveRIGHTBut->SetToolTipText(
"move right by half frame");
305 butVHMframe->AddFrame(moveRIGHTBut,
new TGLayoutHints(kLHintsCenterX,5,5,5,5));
307 vHMframe->AddFrame(butVHMframe,
new TGLayoutHints(kLHintsCenterX,0,0,0,0));
309 TGTextButton *movedownBut =
new TGTextButton(vHMframe,
"down");
310 movedownBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"Movedown()");
311 movedownBut->SetToolTipText(
"move down by tenth frame");
312 vHMframe->AddFrame(movedownBut,
new TGLayoutHints(kLHintsCenterX,5,5,5,5));
313 TGTextButton *moveDOWNBut =
new TGTextButton(vHMframe,
"DOWN");
314 moveDOWNBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"MoveDOWN()");
315 moveDOWNBut->SetToolTipText(
"move down by half frame");
316 vHMframe->AddFrame(moveDOWNBut,
new TGLayoutHints(kLHintsCenterX,5,5,5,5));
318 horMframe->AddFrame(vHMframe,
new TGLayoutHints(kLHintsCenterX,0,0,0,0));
322 TGTextButton *zoominBut =
new TGTextButton(vHM2frame,
"Zoom in");
323 zoominBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"ZoomIn()");
324 vHM2frame->AddFrame(zoominBut,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY,5,5,5,5));
325 TGTextButton *zoomoutBut =
new TGTextButton(vHM2frame,
"Zoom out");
326 zoomoutBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"ZoomOut()");
327 vHM2frame->AddFrame(zoomoutBut,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY,5,5,5,5));
329 TGTextButton *prevStBut =
new TGTextButton(vHM2frame,
"Prev stat");
330 prevStBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"PrevStat()");
331 vHM2frame->AddFrame(prevStBut,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY,5,5,5,5));
332 TGTextButton *nextStBut =
new TGTextButton(vHM2frame,
"Next stat");
333 nextStBut->Connect(
"Clicked()",
"MyMainFrame",
this,
"NextStat()");
334 vHM2frame->AddFrame(nextStBut,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY,5,5,5,5));
336 horMframe->AddFrame(vHM2frame,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY,0,0,0,0));
338 v2frame->AddFrame(horMframe,
new TGLayoutHints(kLHintsCenterX,0,0,0,0));
340 hframe->AddFrame(v2frame,
new TGLayoutHints(kLHintsLeft,2,2,2,2));
342 fMain->AddFrame(hframe,
new TGLayoutHints(kLHintsLeft,2,2,2,2));
344 Int_t parts[] = {5, 6, 6, 4, 4, 4, 4, 4, 15, 18, 30};
348 kLHintsExpandX,0,0,2,0));
353 fMain->SetWindowName(
"Simple Example");
355 fMain->MapSubwindows();
367 TCanvas *fCanvas =
fEcanvas->GetCanvas();
386 fCanvas->Range(minX,minY,maxX,maxY);
387 fCanvas->SetFillColor(0);
388 fCanvas->SetBorderSize(0);
389 fCanvas->SetBorderMode(0);
390 fCanvas->SetFrameFillColor(0);
391 fCanvas->SetGrid(0,0);
408 innerRim->SetFillStyle(0);
411 TLatex* tx =
new TLatex(.2*minX+.8*maxX,.05*minY+.95*maxY,Form(
"Station #%d",
fDrawStation+1)); tx->SetTextSize(0.03); tx->Draw();
413 TLine* scale =
new TLine(.15*minX+.85*maxX-10**(sizeScale-2),.07*minY+.93*maxY,.15*minX+.85*maxX,.07*minY+.93*maxY);
414 TLatex*
ts =
new TLatex(.2*minX+.8*maxX,.1*minY+.9*maxY,Form(
"%.2f cm",10**(sizeScale-2))); ts->SetTextSize(0.03); ts->Draw();
415 scale->SetLineWidth(2);
420 fCanvas->Connect(
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
421 "MyMainFrame",
this,
"DoInfoStatusBar(Int_t,Int_t,Int_t,TObject*)");
432 if ( fPlotSize > 1.1 ) markerSize = 1.;
433 Int_t markerColor = 1;
436 for ( Int_t ipoint = 0 ; ipoint <
fNofGemPoints ; ipoint++ ) {
445 Int_t segmentNr = stationNr%16;
446 Int_t sensorNr = (stationNr/16)%16;
447 stationNr = stationNr/256;
452 TMarker* pointCenter =
new TMarker(pointToDraw->GetX(),pointToDraw->GetY(),20);
453 pointCenter->SetUniqueID(ipoint);
459 if ( sensorNr == 1 ) markerColor = 3;
460 if ( sensorNr == 2 ) markerColor = 4;
462 pointCenter->SetMarkerColor(markerColor);
466 if ( sensorNr == 2 ) {
471 if ( startVertex.Mag() < 0.001 ) textColor = 3;
473 TPaveText* trackNoText =
new TPaveText(pointToDraw->GetX(),pointToDraw->GetY(),
474 pointToDraw->GetX(),pointToDraw->GetY());
475 TText* textNumber = trackNoText->AddText(Form(
"%d",pointToDraw->GetTrackID()));
478 textNumber->SetTextSize(0.05);
479 textNumber->SetTextColor(textColor);
482 Double_t posY = pointToDraw->GetY();
484 TPaveText* trackPdgText =
new TPaveText(pointToDraw->GetX(),posY-fPlotSize/20.,
485 pointToDraw->GetX(),posY-fPlotSize/20.);
487 trackPdgText->AddText(Form(
"%d",trackSel->
GetPdgCode()));
488 trackPdgText->SetTextSize(0.02);
489 trackPdgText->SetTextColor(textColor);
490 trackPdgText->Draw();
503 Int_t digiStationNr ;
506 Int_t channelNumber ;
508 for ( Int_t idigi = 0 ; idigi <
fNofGemDigis ; idigi++ ) {
515 digiSide = digiToDraw->
GetSide();
543 TEllipse* rStrip =
new TEllipse(0.,0.,rRadius,rRadius);
544 rStrip->SetFillStyle(0);
545 rStrip->SetLineColor(2);
548 TEllipse* lStrip =
new TEllipse(0.,0.,lRadius,lRadius);
549 lStrip->SetFillStyle(0);
550 lStrip->SetLineColor(2);
566 Double_t channelTheta = (channelNumber-1) * radialStripSpan;
582 xpstr[0] = xBot*cosCT+yBot*sinCT;
583 ypstr[0] =-xBot*sinCT+yBot*cosCT;
584 xpstr[1] = xTop*cosCT+yTop*sinCT;
585 ypstr[1] =-xTop*sinCT+yTop*cosCT;
587 xpstr[2] = xpstr[1]*cosRSS+ypstr[1]*sinRSS;
588 ypstr[2] =-xpstr[1]*sinRSS+ypstr[1]*cosRSS;
589 xpstr[3] = xpstr[0]*cosRSS+ypstr[0]*sinRSS;
590 ypstr[3] =-xpstr[0]*sinRSS+ypstr[0]*cosRSS;
602 TPolyLine*
strip =
new TPolyLine(5,xpstr,ypstr);
603 strip->SetUniqueID(666666);
605 strip->SetLineWidth(2);
606 strip->SetLineColor(colorCode);
607 strip->SetFillColor(colorCode);
619 if ( fPlotSize > 1.1 ) markerSize = 1.;
620 Int_t markerColor = 1;
621 Int_t markerStyle = 29;
624 for ( Int_t ihit = 0 ; ihit <
fNofGemHits ; ihit++ ) {
628 if ( fPlotSize > 1.1 ) markerSize = 1.5;
638 TMarker* hitCenter =
new TMarker(hitX,hitY,markerStyle);
639 if ( hitToDraw->GetRefIndex() >= 0 ) {
640 hitCenter->SetUniqueID(hitToDraw->GetRefIndex());
641 hitCenter->SetMarkerColor(markerColor);
642 hitCenter->SetMarkerSize(markerSize);
645 hitCenter->SetUniqueID(666666);
646 hitCenter->SetMarkerColor(2);
647 hitCenter->SetMarkerSize(markerSize);
659 if ( fPlotSize > 1.1 ) markerSize = 1.;
660 Int_t markerColor = 13;
661 Int_t markerStyle = 29;
664 for ( Int_t ihit = 0 ; ihit <
fNofGemHits ; ihit++ ) {
679 Double_t phiAValue = TMath::ATan(hitX/hitY);
680 if ( hitY < 0 ) phiAValue +=
TMath::Pi();
681 else if ( hitX < 0 ) phiAValue += 2.*
TMath::Pi();
687 xErr[0] = hitX-errPValue*cosPhi+errRValue*sinPhi; yErr[0] = hitY+errPValue*sinPhi+errRValue*cosPhi;
688 xErr[1] = hitX+errPValue*cosPhi+errRValue*sinPhi; yErr[1] = hitY-errPValue*sinPhi+errRValue*cosPhi;
689 xErr[2] = hitX+errPValue*cosPhi-errRValue*sinPhi; yErr[2] = hitY-errPValue*sinPhi-errRValue*cosPhi;
690 xErr[3] = hitX-errPValue*cosPhi-errRValue*sinPhi; yErr[3] = hitY+errPValue*sinPhi-errRValue*cosPhi;
691 xErr[4] = xErr[0]; yErr[4] = yErr[0];
693 TPolyLine* errorBox =
new TPolyLine(5,xErr,yErr);
694 if ( hitToDraw->GetRefIndex() > 0 )
695 errorBox->SetUniqueID(hitToDraw->GetRefIndex());
697 errorBox->SetUniqueID(666666);
699 errorBox->SetLineWidth(0);
700 errorBox->SetLineColor(markerColor);
701 errorBox->SetFillColor(markerColor);
714 TString tempString = Form(
"%1.3f",(Float_t)fPlotSize);
728 TCanvas *fCanvas =
fEcanvas->GetCanvas();
730 TString saveToFile =
"outputFile.gif";
731 cout <<
"will save canvas as \"" << saveToFile.Data() <<
"\"" << endl;
733 fCanvas->SaveAs(saveToFile.Data());
738 void MyMainFrame::ReadPoint() {
741 if ( iPoint >=
fNofGemPoints ) { cout <<
"last point reached" << endl;
return; }
750 TString stationIdentifier = fGemPoint->GetDetName();
751 stationIdentifier.Remove(stationIdentifier.Last(
'/'),stationIdentifier.Length());
752 stationIdentifier.Remove(0,stationIdentifier.Last(
'/')+1);
753 stationIdentifier.Remove(0,8);
754 stationIdentifier.Remove(1,9);
769 TString tempString = Form(
"%d",iPoint+1);
783 cout <<
"simulation file \"" <<
fSimFile->GetName() <<
"\" loaded" << endl;
798 cout <<
"digi file \"" <<
fDigiFile->GetName() <<
"\" loaded" << endl;
803 cout <<
"hits file \"" <<
fHitsFile->GetName() <<
"\" loaded" << endl;
824 for ( Int_t ihit = 0 ; ihit <
fNofGemHits ; ihit++ ) {
826 if ( hitToDraw->GetRefIndex() == -1 )
831 cout <<
" --> Event #" << iEvent <<
": "
834 << fNofGemHits <<
" hits, "
835 <<
fNofGemDigis <<
" digis. # of false hits: " << falseHits << endl;
838 TString tempString = Form(
"%d",iEvent+1);
850 TString dir = getenv(
"VMCWORKDIR");
852 geoFileName.ReplaceAll(
"$VMCWORKDIR",dir.Data());
854 ifstream fin(geoFileName.Data());
858 if(!fin) { cout <<
"sorry, no file \"" << geoFileName.Data() <<
"\"" << endl;
return; }
863 getline(fin,dummyText);
865 while ( dummyText.find(
'#') != -1 );
866 getline(fin,dummyText);
869 Int_t nofParameters = 0;
874 getline(fin,dummyText);
875 if ( dummyText.find(
"TrackFinder") != -1 )
break;
877 dummyText.replace(0,dummyText.find_first_not_of(
' '),
"");
879 while ( dummyText.find(
',') != -1 ) {
880 parameters[nofParameters++] = atof(dummyText.c_str());
882 dummyText.replace(0,dummyText.find(
',')+1,
"");
885 if ( atof(dummyText.c_str()) != 0. )
886 parameters[nofParameters++] = atof(dummyText.c_str());
892 Int_t arrayIndex = 0;
896 Int_t nofSensors = 0;
906 while ( arrayIndex < nofParameters ) {
907 stationNr = (Int_t)parameters[arrayIndex+0];
908 stationName = Form(
"Gem_Station_%d",stationNr);
910 station =
new PndGemStation(stationName.Data(), stationNr, parameters[arrayIndex+1],
TMath::Pi()*parameters[arrayIndex+2]/180. );
911 realStation =
new PndGemStation(stationName.Data(), stationNr, parameters[arrayIndex+1],
TMath::Pi()*parameters[arrayIndex+2]/180. );
914 cout <<
"ADDING STATION AT " << station->
GetZ() << endl;
920 nofSensors = (Int_t)parameters[arrayIndex-1];
928 sensorNr = (Int_t)parameters[arrayIndex+0];
929 sensorName = Form(
"Gem_Disk%d_Gem%s_Sensor_kapton",stationNr,(sensorNr==1?
"1":
"6"));
931 realSensor =
new PndGemSensor(sensorName.Data(), stationNr, sensorNr, (Int_t)parameters[arrayIndex+1],
932 parameters[arrayIndex+ 2], parameters[arrayIndex+ 3], parameters[arrayIndex+ 4],
933 -
TMath::Pi()*parameters[arrayIndex+ 5]/180.,
934 parameters[arrayIndex+ 6], parameters[arrayIndex+ 7],
935 parameters[arrayIndex+ 8],
936 parameters[arrayIndex+ 9], parameters[arrayIndex+10],
937 parameters[arrayIndex+11], parameters[arrayIndex+12]);
939 for ( Int_t itemp = 0 ; itemp < 2 ; itemp++ ) {
940 if (
TMath::Abs(parameters[arrayIndex+ 9+itemp]) < 1. ||
941 TMath::Abs(parameters[arrayIndex+ 9+itemp]) > 89. )
949 Double_t b = TMath::ACos((i*i+r*r-m*m)/(2.*i*r))*TMath::RadToDeg();
951 if ( parameters[arrayIndex+ 9+itemp] > 0. ) parameters[arrayIndex+ 9+itemp] =
b;
952 if ( parameters[arrayIndex+ 9+itemp] < 0. ) parameters[arrayIndex+ 9+itemp] = -
b;
954 cout <<
"angle = " << parameters[arrayIndex+ 9+itemp] << endl;
957 sensor =
new PndGemSensor(sensorName.Data(), stationNr, sensorNr, (Int_t)parameters[arrayIndex+1],
958 parameters[arrayIndex+ 2], parameters[arrayIndex+ 3], parameters[arrayIndex+ 4],
959 -
TMath::Pi()*parameters[arrayIndex+ 5]/180.,
960 parameters[arrayIndex+ 6], parameters[arrayIndex+ 7],
961 parameters[arrayIndex+ 8],
962 parameters[arrayIndex+ 9], parameters[arrayIndex+10],
963 parameters[arrayIndex+11], parameters[arrayIndex+12]);
972 cout <<
"Made " <<
fNofStations <<
" stations." << endl;
979 TString selName = sel->GetName();
980 TCanvas *fCanvas =
fEcanvas->GetCanvas();
983 Double_t xReal = fCanvas->AbsPixeltoX(x);
984 Double_t yReal = fCanvas->AbsPixeltoY(y);
986 TString colorName[2][2] = {
"blue",
"red",
"green",
"yellow"};
988 if (event == kMouseMotion){
995 if ( ( selName.Contains(
"TMarker") || selName.Contains(
"TPolyLine") ) && sel->GetUniqueID()!= 666666 ) {
996 cout <<
"it is " << selName.Data() <<
" with id = " << sel->GetUniqueID() << endl;
999 cout <<
"pointSel at " << pointSel->GetX() <<
" " << pointSel->GetY() <<
" " << pointSel->GetZ() << endl;
1003 pointSel->GetZ()),8);
1013 px = startMomentum.X();
1014 py = startMomentum.Y();
1015 pz = startMomentum.Z();
1017 fInfoStatusBar->SetText(Form(
"%d from (%.2f,%.2f,%.2f), mom: (%.2f,%.2f,%.2f)-> %.4f",
1018 trackSel->
GetPdgCode(),startVertex.X(),startVertex.Y(),startVertex.Z(),
1033 for ( Int_t isens = 0 ; isens < digiStation->
GetNSensors() ; isens++ ) {
1035 for ( Int_t iside = 0 ; iside < 2 ; iside++ ) {
1036 Int_t channelNumber = digiSensor->
GetChannel(xReal,yReal,iside);
1037 fInfoStatusBar->SetText(Form(
"%d",channelNumber),3+isens*2+iside);
1038 TGCompositeFrame* barPart =
fInfoStatusBar->GetBarPart(3+isens*2+iside);
1041 if ( channelNumber == - 1 ) {
1042 gClient->GetColorByName(
"grey",colorPix);
1043 barPart->SetBackgroundColor(colorPix);
1046 gClient->GetColorByName(colorName[isens][iside].Data(),colorPix);
1047 barPart->SetBackgroundColor(colorPix);
void ChangePlotCenterZ(char *tempD)
TClonesArray * fGemHitArray
void DoInfoStatusBar(Int_t event, Int_t x, Int_t y, TObject *sel)
Int_t GetStationNr() const
PndGemMCPoint * fGemPoint
static T Sqrt(const T &x)
void ChangePlotSize(char *tempD)
TGNumberEntryField * fPCenXEntry
Double_t GetZ(Int_t it=0)
Double_t GetInnerRadius() const
TVector3 GetMomentum() const
void AddSensor(PndGemSensor *sensor)
Int_t GetNChannelsBack() const
static T Log10(const T &x)
TGNumberEntryField * fPCenZEntry
void ChangePlotCenterY(char *tempD)
TObjArray * fRealStations
MyMainFrame(const TGWindow *p, UInt_t w, UInt_t h)
Double_t fStationsZPosition[10]
Int_t GetSensorNr() const
Int_t GetNSensors() const
PndGemSensor * GetSensorByNr(Int_t sensorNr)
Int_t GetSensorId() const
Int_t GetChannel(Double_t x, Double_t y, Int_t iSide)
void ChangePlotCenterX(char *tempD)
Double_t GetChannelNr() const
TGStatusBar * fInfoStatusBar
Int_t GetStationNr() const
TGNumberEntryField * fPCenYEntry
Int_t GetNChannelsFront() const
void ChangeBaseString(char *carr)
void ChangeParFString(char *carr)
TGNumberEntryField * fPSizeEntry
void SetDigitSchemeToDraw(Int_t itemp)
TGNumberEntryField * fEventToDrawEntry
Double_t GetOuterRadius() const
TGNumberEntryField * fPointToDrawEntry
Double_t GetPitch(Int_t index) const
TVector3 GetStartVertex() const
PndPidEmcAssociatorTask * ts
TClonesArray * fMCTrackArray
TClonesArray * fGemDigiArray
Double_t fStationsInnerRadius[10]
TRootEmbeddedCanvas * fEcanvas
Double_t fStationsOuterRadius[10]
Double_t GetStripAngle(Int_t index) const
TClonesArray * fGemPointArray