#include <PlaneView.h>
Inheritance diagram for evd::PlaneView:

Public Member Functions | |
| PlaneView (TGMainFrame *mf) | |
| ~PlaneView () | |
| const char * | Description () const |
| const char * | PrintTag () const |
| void | Draw (const char *opt="") |
| void | DrawTrackCandidates () |
| void | DrawTracks () |
| void | DrawMC () |
| void | DrawMCHits () |
| void | DrawRawDigit () |
| void | DrawFilament (int use_avg_path) |
| void | DrawPlaneClusters () |
| void | DrawShowers () |
| void | Draw3DShowers () |
Private Attributes | |
| TPad * | fXviewPad |
| TPad * | fYviewPad |
| TH2F * | fXviewHisto |
| TH2F * | fYviewHisto |
| evdb::View2D * | fXview |
| evdb::View2D * | fYview |
| geo::Geometry * | fGeo |
| const PlaneViewOption * | fOption |
| double | zmin |
| double | zmax |
| double | xmin |
| double | xmax |
| double | ymin |
| double | ymax |
|
|
Definition at line 42 of file PlaneView.cxx. References edm::EventHandle::DAQ(), geo::Geometry::DetHalfHeight(), geo::Geometry::DetHalfWidth(), geo::Geometry::DetLength(), fGeo, fOption, fXview, fXviewHisto, fXviewPad, fYview, fYviewHisto, fYviewPad, edm::EventHandle::Header(), PlaneViewOption::Instance(), geo::Geometry::Instance(), and evdb::IoModule::Instance(). 00042 : evdb::Canvas(mf) 00043 { 00044 00045 edm::EventHandle& evt = evdb::IoModule::Instance()->GetEvent(); 00046 std::vector<const rawdata::DAQHeader*> header; 00047 short int det = rawdata::kFar; 00048 try{ evt.DAQ().Get("./",header); } 00049 catch(edm::Exception e){ 00050 std::cerr << "Error retrieving daq header, while looking "<< 00051 "in PlaneView::PlaneView(), using default fardet geometry" << std::endl; 00052 } 00053 if(header.size() > 0) det = header[0]->DetId(); 00054 00055 fGeo = &geo::Geometry::Instance(evt.Header().Run(),det); 00056 00057 evdb::Canvas::fCanvas->cd(); 00058 00059 fXviewPad = new TPad("fXviewPad","Xview",0.0,0.5,0.75,1.0); 00060 fXviewPad->Draw(); 00061 00062 fYviewPad = new TPad("fYviewPad","Yview",0.0,0.0,0.75,0.5); 00063 fYviewPad->Draw(); 00064 00065 fXviewPad->cd(); 00066 fXviewHisto = new TH2F("fXviewHisto",";z (cm);x (cm)", 00067 200,0.,fGeo->DetLength(), 00068 32,-fGeo->DetHalfWidth(),fGeo->DetHalfWidth()); 00069 fXviewHisto->Draw(); 00070 00071 fYviewPad->cd(); 00072 fYviewHisto = new TH2F("fYviewHisto",";z (cm);y (cm)", 00073 200,0.,fGeo->DetLength(), 00074 32,-fGeo->DetHalfHeight(),fGeo->DetHalfHeight()); 00075 00076 fYviewHisto->Draw(); 00077 00078 fXview = new evdb::View2D(); 00079 fYview = new evdb::View2D(); 00080 00081 fOption = &PlaneViewOption::Instance(); 00082 00083 }
|
|
|
Definition at line 87 of file PlaneView.cxx. 00087 { }
|
|
|
Give a medium length description of what the view holds to be printed. Examples: "Full view of experiment", "3D View", ... Reimplemented from evdb::Canvas. Definition at line 17 of file PlaneView.h. 00017 { return "Plane View"; }
|
|
|
Implements evdb::Canvas. Definition at line 90 of file PlaneView.cxx. References evdb::View2D::Clear(), evdb::View2D::Draw(), Draw3DShowers(), DrawFilament(), DrawMC(), DrawMCHits(), DrawPlaneClusters(), DrawRawDigit(), DrawShowers(), DrawTrackCandidates(), DrawTracks(), PlaneViewOption::fDraw3DShowers, PlaneViewOption::fDrawFilaments, PlaneViewOption::fDrawMCTruthHits, PlaneViewOption::fDrawMCTruthVectors, PlaneViewOption::fDrawPlaneClusters, PlaneViewOption::fDrawRawDigits, PlaneViewOption::fDrawShowers, PlaneViewOption::fDrawTrackCandidates, PlaneViewOption::fDrawTracks, fOption, fXview, fXviewHisto, fXviewPad, fYview, fYviewHisto, fYviewPad, xmax, xmin, ymax, ymin, zmax, and zmin. 00091 {
00092 fXview->Clear();
00093 fYview->Clear();
00094
00095 zmin = 1e20, zmax = -1e20;
00096 xmin = 1e20, xmax = -1e20;
00097 ymin = 1e20, ymax = -1e20;
00098
00099
00100 if (fOption->fDrawMCTruthVectors)
00101 DrawMC();
00102 if (fOption->fDrawMCTruthHits)
00103 DrawMCHits();
00104 if (fOption->fDrawTracks)
00105 DrawTracks();
00106 if (fOption->fDrawTrackCandidates)
00107 DrawTrackCandidates();
00108 if (fOption->fDrawRawDigits)
00109 DrawRawDigit();
00110 if (fOption->fDrawFilaments)
00111 DrawFilament(fOption->fDrawFilaments!=2);
00112 if (fOption->fDrawPlaneClusters)
00113 DrawPlaneClusters();
00114 if(fOption->fDrawShowers)
00115 DrawShowers();
00116 if(fOption->fDraw3DShowers)
00117 Draw3DShowers();
00118
00119 // Force the x and y views to have the same vertical scale
00120 if (xmax-xmin > ymax-ymin) {
00121 double tmp = 0.5*((xmax-xmin)-(ymax-ymin));
00122 ymax += tmp;
00123 ymin -= tmp;
00124 }
00125 else {
00126 double tmp = 0.5*((ymax-ymin)-(xmax-xmin));
00127 xmax += tmp;
00128 xmin -= tmp;
00129 }
00130 xmin -= 25.0; xmax += 25.0;
00131 ymin -= 25.0; ymax += 25.0;
00132 zmin -= 25.0; zmax += 25.0;
00133
00134 fXviewHisto->GetXaxis()->SetRangeUser(zmin,zmax);
00135 fXviewHisto->GetYaxis()->SetRangeUser(xmin,xmax);
00136
00137 fYviewHisto->GetXaxis()->SetRangeUser(zmin,zmax);
00138 fYviewHisto->GetYaxis()->SetRangeUser(ymin,ymax);
00139
00140 // std::cout << "Drawing X-view" << std::endl;
00141
00142 fXviewPad->cd();
00143 fXviewHisto->Draw();
00144 fXview->Draw();
00145
00146 // std::cout << "Drawing Y-view" << std::endl;
00147
00148 fYviewPad->cd();
00149 fYviewHisto->Draw();
00150 fYview->Draw();
00151
00152 evdb::Canvas::fCanvas->Update();
00153
00154 }
|
|
|
Definition at line 861 of file PlaneView.cxx. References evdb::View2D::AddBox(), evdb::View2D::AddLine(), recobase::CellHit::Cell(), edm::EventHandle::DAQ(), fGeo, fXview, fYview, recobase::ShowerBase::GetCells(), recobase::ShowerBase::GetEndT(), recobase::ShowerBase::GetEndZ(), recobase::ShowerBase::GetEnergy(), recobase::ShowerBase::GetLength(), recobase::ShowerBase::GetPlaneView(), recobase::ShowerBase::GetVtxT(), recobase::ShowerBase::GetVtxZ(), edm::EventHandle::Header(), geo::Geometry::Instance(), evdb::IoModule::Instance(), recobase::CellHit::Plane(), geo::Geometry::Plane(), edm::EventHandle::Reco(), xmax, xmin, ymax, ymin, zmax, and zmin. Referenced by Draw(). 00862 {
00863 printf("Drawing Reco 3D SubShowers\n");
00864 typedef std::map<UInt_t,std::multimap<Double_t,const recobase::CellHit*> > CellMap_t;
00865
00866 edm::EventHandle& evt = evdb::IoModule::Instance()->GetEvent();
00867
00868 std::vector<const rawdata::DAQHeader*> header;
00869 short int det = rawdata::kFar;
00870 try{ evt.DAQ().Get("./",header); }
00871 catch(edm::Exception e){
00872 std::cerr << "Error retrieving daq header, while looking "<<
00873 "in PlaneView::Draw3DShowers(), using default fardet geometry" << std::endl;
00874 }
00875 if(header.size() > 0) det = header[0]->DetId();
00876 fGeo = &geo::Geometry::Instance(evt.Header().Run(),det);
00877
00878 std::vector<const recobase::ShowerBase3D*> shower3D(0);
00879 try {evt.Reco().Get("./Final3DShw",shower3D);//Final or Segment
00880 }
00881 catch (edm::Exception e) { }
00882
00883 int jx=-1;
00884 int jy=-1;
00885
00886 for(unsigned int i=0;i<shower3D.size();i++)
00887 {
00888
00889
00890 const recobase::ShowerBase *showerX = shower3D[i]->GetMatchX();
00891 const recobase::ShowerBase *showerY = shower3D[i]->GetMatchY();
00892
00893 jx=jx+1;
00894 TLine& lx = fXview->AddLine(showerX->GetVtxZ(),showerX->GetVtxT(), showerX->GetEndZ(), showerX->GetEndT());
00895 lx.SetLineColor(jx+2);
00896 lx.SetLineWidth(2);
00897 printf("x Shower (%f %f , %f %f)\n", showerX->GetVtxZ(), showerX->GetVtxT(), showerX->GetEndZ(), showerX->GetEndT());
00898
00899 jy=jy+1;
00900 TLine& ly = fYview->AddLine(showerY->GetVtxZ(),showerY->GetVtxT(), showerY->GetEndZ(), showerY->GetEndT());
00901 ly.SetLineColor(jy+2);
00902 ly.SetLineWidth(2);
00903 printf("Y Shower (%f %f , %f %f)\n", showerY->GetVtxZ() ,showerY->GetVtxT(), showerY->GetEndZ(), showerY->GetEndT());
00904
00905 // NOW DISPLAY THE 2D SHOWER HITS WITH DIFFERENT COLORS
00906
00907 recobase::ShowerBase* showergx = new recobase::ShowerBase(*showerX);
00908 recobase::ShowerBase* showergy = new recobase::ShowerBase(*showerY);
00909
00910 std::multimap<Double_t,recobase::CellHit*> cells;
00911 std::multimap<Double_t,recobase::CellHit*>::const_iterator citer;
00912
00913 const recobase::ShowerBase::CellMap_t& planesx = showergx->GetCells();
00914 recobase::ShowerBase::CellMap_t::const_iterator piterx;
00915 for (piterx=planesx.begin();piterx!= planesx.end();piterx++)
00916 {
00917 cells=piterx->second;
00918
00919 const recobase::CellHit* rc;
00920
00921 for(citer=cells.begin();citer!=cells.end();citer++)
00922 {
00923 rc = citer->second;
00924
00925 double pos[3];
00926 fGeo->Plane(rc->Plane()).Cell(rc->Cell()).GetCenter(pos);
00927 double w= fGeo->Plane(rc->Plane()).Cell(rc->Cell()).HalfW();
00928 double d= fGeo->Plane(rc->Plane()).Cell(rc->Cell()).HalfD();
00929 TBox& bx = fXview->AddBox(pos[2]-d,pos[0]-w,pos[2]+d,pos[0]+w);
00930 if(pos[0]<xmin) xmin=pos[0];
00931 if(pos[0]>xmax) xmax=pos[0];
00932 bx.SetFillColor(jx+2);
00933
00934 if(pos[2]<zmin) zmin=pos[2];
00935 if(pos[2]>zmax) zmax=pos[2];
00936 }
00937
00938 }
00939
00940 // PRINT SOME ADDITION INFO
00941
00942 cout << " Shower View " << showerX->GetPlaneView() << endl;
00943 cout << " Shower Energy " << showerX->GetEnergy() << " Length " << showerX->GetLength() << endl;
00944
00945 // Y CELLS
00946
00947 const recobase::ShowerBase::CellMap_t& planesy = showergy->GetCells();
00948 recobase::ShowerBase::CellMap_t::const_iterator pitery;
00949
00950 for (pitery=planesy.begin();pitery!= planesy.end();pitery++)
00951 {
00952 cells=pitery->second;
00953
00954 const recobase::CellHit* rc;
00955
00956 for(citer=cells.begin();citer!=cells.end();citer++)
00957 {
00958 rc = citer->second;
00959
00960 double pos[3];
00961 fGeo->Plane(rc->Plane()).Cell(rc->Cell()).GetCenter(pos);
00962 double w= fGeo->Plane(rc->Plane()).Cell(rc->Cell()).HalfW();
00963 double d= fGeo->Plane(rc->Plane()).Cell(rc->Cell()).HalfD();
00964
00965 TBox& by = fYview->AddBox(pos[2]-d,pos[1]-w,pos[2]+d,pos[1]+w);
00966 if(pos[1]<ymin) ymin=pos[1];
00967 if(pos[1]>ymax) ymax=pos[1];
00968 by.SetFillColor(jy+2);
00969
00970 if(pos[2]<zmin) zmin=pos[2];
00971 if(pos[2]>zmax) zmax=pos[2];
00972 }
00973
00974 }
00975
00976 // PRINT SOME ADDITION INFO
00977
00978 cout << " Shower View " << showerY->GetPlaneView() << endl;
00979 cout << " Shower Energy " << showerY->GetEnergy() << " Length " << showerY->GetLength() << endl;
00980
00981
00982 }
00983
00984 }
|
|
|
Definition at line 480 of file PlaneView.cxx. References evdb::View2D::AddPolyLine(), fXview, fYview, evdb::IoModule::Instance(), edm::EventHandle::Reco(), xmax, xmin, ymax, ymin, zmax, and zmin. Referenced by Draw(). 00481 {
00482 #ifdef DRAW_FILAMENT
00483 printf("Drawing Filaments\n");
00484
00485
00486
00487 edm::EventHandle& evt = evdb::IoModule::Instance()->GetEvent();
00488 std::vector<const spider::Filament*> fillaments(0);
00489
00490
00491
00492 try {
00493 evt.Reco().Get("./",fillaments);
00494 }
00495 catch (edm::Exception e) { }
00496
00497
00498
00499
00500
00501 for(unsigned int i=0;i<fillaments.size();i++)
00502 {
00503 //FilamentView::DrawFilaments(fillaments[i],fXview,fYview,xmin,xmax,ymin,ymax,zmin,zmax);
00504 //}
00505
00506 /*
00507 float bp = fillaments[i]->begplane;
00508 float ep = fillaments[i]->endplane;
00509 float bc = fillaments[i]->begcell;
00510 float ec = fillaments[i]->endcell;
00511
00512 double lowpos[3],highpos[3];
00513 */
00514
00515 float bp = fillaments[i]->fitbegz;
00516 float ep = fillaments[i]->fitendz;
00517 float bc = fillaments[i]->fitbegt;
00518 float ec = fillaments[i]->fitendt;
00519 /*
00520 printf("%d want geo for (%f %f , %f %f)\n",fillaments[i]->depth,bp,bc,ep,ec);
00521
00522 try{
00523 fGeo->Plane((int)bp).Cell((int)bc).GetCenter(lowpos);
00524 fGeo->Plane((int)ep).Cell((int)ec).GetCenter(highpos);
00525 }catch(...){printf("geo error...\n");continue;}
00526 */
00527
00528 if(fillaments[i]->fXY==geo::kX) {
00529 printf("%d x fillament (%f %f , %f %f)\n",fillaments[i]->depth,bp,bc,ep,ec);
00530 /*
00531 bp=lowpos[2];
00532 ep=highpos[2];
00533 bc=lowpos[0];
00534 ec=highpos[0];
00535 */
00536 //TLine& l =fXview->AddLine(bp,bc,ep,ec);
00538 //l.SetLineColor(fillaments[i]->depth==0?2:3);
00539 //l.SetLineStyle(1);
00540 //l.SetLineWidth(2);
00541
00542
00543 zmax=bp>zmax?bp:zmax;
00544 zmax=ep>zmax?ep:zmax;
00545 xmax=bc>xmax?bc:xmax;
00546 xmax=ec>xmax?ec:xmax;
00547
00548 zmin=bp<zmin?bp:zmin;
00549 zmin=ep<zmin?ep:zmin;
00550 xmin=bc<xmin?bc:xmin;
00551 xmin=ec<xmin?ec:xmin;
00552
00553
00554
00555
00556 TPolyLine& ll = fXview->AddPolyLine(fillaments[i]->hitt.size(),fillaments[i]->depth==0?2:3,fillaments[i]->depth==0?2:1,1);
00557
00558 Double_t az[fillaments[i]->hitt.size()];
00559 Double_t at[fillaments[i]->hitt.size()];
00560
00561 for(int ji=0;ji<fillaments[i]->hitt.size();ji++)
00562 {
00563 az[ji]=fillaments[i]->hitz.at(ji);
00564 at[ji]=fillaments[i]->hitt.at(ji);
00565
00566 }
00567
00568 if(use_avg_path==1)
00569 {
00570 Int_t cur_z=0;
00571 for(int ji=0;ji<fillaments[i]->hitt.size();ji++)
00572 {
00573 Double_t avg_t=0;
00574 Int_t tcnt=0;
00575 Double_t last_z=az[ji];
00576
00577 for(int jji=ji;jji<fillaments[i]->hitt.size();jji++)
00578 {
00579 if(last_z!=az[jji])
00580 {
00581 ji=jji-1;
00582 break;
00583 }
00584
00585 tcnt++;
00586 avg_t+=at[jji];
00587 }
00588
00589 avg_t/=tcnt;
00590 az[cur_z]=last_z;
00591 at[cur_z]=avg_t;
00592 cur_z++;
00593 }
00594
00595 ll.SetPolyLine(cur_z,az,at);
00596
00597 }
00598 else
00599 {
00600 ll.SetPolyLine(fillaments[i]->hitt.size(),az,at);
00601 }
00602
00603
00604 }else{
00605 printf("%d y fillament (%f %f , %f %f)\n",fillaments[i]->depth,bp,bc,ep,ec);
00606 /*
00607 bp=lowpos[2];
00608 ep=highpos[2];
00609 bc=lowpos[1];
00610 ec=highpos[1];
00611 */
00612 //TLine& l = fYview->AddLine(bp,bc,ep,ec);
00613
00615 //l.SetLineColor(fillaments[i]->depth==0?2:3);
00616 //l.SetLineStyle(1);
00617 //l.SetLineWidth(2);
00618
00619
00620 zmax=bp>zmax?bp:zmax;
00621 zmax=ep>zmax?ep:zmax;
00622 ymax=bc>ymax?bc:ymax;
00623 ymax=ec>ymax?ec:ymax;
00624
00625 zmin=bp<zmin?bp:zmin;
00626 zmin=ep<zmin?ep:zmin;
00627 ymin=bc<ymin?bc:ymin;
00628 ymin=ec<ymin?ec:ymin;
00629
00630
00631
00632 TPolyLine& ll = fYview->AddPolyLine(fillaments[i]->hitt.size(),fillaments[i]->depth==0?2:3,fillaments[i]->depth==0?2:1,1);
00633
00634 Double_t az[fillaments[i]->hitt.size()];
00635 Double_t at[fillaments[i]->hitt.size()];
00636
00637 for(int ji=0;ji<fillaments[i]->hitt.size();ji++)
00638 {
00639 az[ji]=fillaments[i]->hitz.at(ji);
00640 at[ji]=fillaments[i]->hitt.at(ji);
00641
00642 }
00643
00644
00645 if(use_avg_path==1)
00646 {
00647 Int_t cur_z=0;
00648 for(int ji=0;ji<fillaments[i]->hitt.size();ji++)
00649 {
00650 Double_t avg_t=0;
00651 Int_t tcnt=0;
00652 Double_t last_z=az[ji];
00653
00654 for(int jji=ji;jji<fillaments[i]->hitt.size();jji++)
00655 {
00656 if(last_z!=az[jji])
00657 {
00658 ji=jji-1;
00659 break;
00660 }
00661
00662 tcnt++;
00663 avg_t+=at[jji];
00664 }
00665
00666 avg_t/=tcnt;
00667 az[cur_z]=last_z;
00668 at[cur_z]=avg_t;
00669 cur_z++;
00670 }
00671 ll.SetPolyLine(cur_z,az,at);
00672
00673 }else{
00674 ll.SetPolyLine(fillaments[i]->hitt.size(),az,at);
00675 }
00676
00677
00678 }
00679
00680
00681
00682 }
00683 #endif
00684 }
|
|
|
Definition at line 278 of file PlaneView.cxx. References evdb::View2D::AddLine(), edm::EventHandle::DetSim(), evd::Style::FromPDG(), fXview, fYview, evdb::IoModule::Instance(), edm::EventHandle::MC(), xmax, xmin, ymax, ymin, zmax, and zmin. Referenced by Draw(). 00279 {
00280 printf("Drawing MC\n");
00281
00282 edm::EventHandle& evt = evdb::IoModule::Instance()->GetEvent();
00283
00284 std::vector<const sim::MCTruth*> mctruth;
00285 try { evt.MC().Get(".",mctruth); }
00286 catch (edm::Exception e) { }
00287
00288 for (int i=0; i<mctruth[0]->NParticles(); ++i) {
00289 const TParticle& p = mctruth[0]->GetParticle(i);
00290
00291 double xyz0[3];
00292 xyz0[0] = p.Vx();
00293 xyz0[1] = p.Vy();
00294 xyz0[2] = p.Vz();
00295
00296 double xyz1[3];
00297 // Incident particles
00298 if (p.GetStatusCode()==0) {
00299 xyz1[0] = xyz0[0] - p.Px()/2E-3;
00300 xyz1[1] = xyz0[1] - p.Py()/2E-3;
00301 xyz1[2] = xyz0[2] - p.Pz()/2E-3;
00302 }
00303 // Particles to be tracked
00304 else if (p.GetStatusCode()==1) {
00305 xyz1[0] = xyz0[0] + p.Px()/2E-3;
00306 xyz1[1] = xyz0[1] + p.Py()/2E-3;
00307 xyz1[2] = xyz0[2] + p.Pz()/2E-3;
00308 }
00309 // Intermediate states
00310 else continue;
00311
00312 // Find limits of display
00313 if (xyz0[0]<xmin) xmin = xyz0[0];
00314 if (xyz1[0]<xmin) xmin = xyz1[0];
00315 if (xyz0[0]>xmax) xmax = xyz0[0];
00316 if (xyz1[0]>xmax) xmax = xyz1[0];
00317 if (xyz0[1]<ymin) ymin = xyz0[1];
00318 if (xyz1[1]<ymin) ymin = xyz1[1];
00319 if (xyz0[1]>ymax) ymax = xyz0[1];
00320 if (xyz1[1]>ymax) ymax = xyz1[1];
00321 if (xyz0[2]<zmin) zmin = xyz0[2];
00322 if (xyz1[2]<zmin) zmin = xyz1[2];
00323 if (xyz0[2]>zmax) zmax = xyz0[2];
00324 if (xyz1[2]>zmax) zmax = xyz1[2];
00325
00326 TLine& lx = fXview->AddLine(xyz0[2],xyz0[0],xyz1[2],xyz1[0]);
00327 TLine& ly = fYview->AddLine(xyz0[2],xyz0[1],xyz1[2],xyz1[1]);
00328
00329 Style::FromPDG(lx,p.GetPdgCode());
00330 Style::FromPDG(ly,p.GetPdgCode());
00331 }
00332
00333 std::vector<const sim::ParticleList*> particleList;
00334 try {
00335 evt.DetSim().Get(".",particleList);
00336 }
00337 catch (edm::Exception e) { }
00338
00339 std::cerr << "Interactions in this record="
00340 << particleList.size()<<std::endl;
00341
00342 for (unsigned int iev=0; iev<particleList.size(); iev++) {
00343 std::vector<sim::Particle> particles=particleList[iev]->fParticles;
00344 std::cerr <<"Event "<<iev<<" has "<<particles.size()
00345 <<" particles."<<std::endl;
00346 for (unsigned int i=0; i<particles.size(); ++i) {
00347 std::cerr << particles[i].PdgCode()<<" ";
00348 if ( (i>0 && i%10==0) || i==particles.size()-1) std::cerr << std::endl;
00349 }
00350 }
00351
00352 }
|
|
|
Definition at line 354 of file PlaneView.cxx. References evdb::View2D::AddBox(), edm::EventHandle::DAQ(), edm::EventHandle::DetSim(), sim::FLSHit::fCellId, sim::FLSHit::fEdep, fGeo, sim::FLSHit::fPlaneId, sim::FLSHit::fT, fXview, fYview, edm::EventHandle::Header(), geo::Geometry::Instance(), evdb::IoModule::Instance(), evd::kColdToHot, evd::kCustom, evd::kLinear, geo::Geometry::Plane(), xmax, xmin, ymax, ymin, zmax, and zmin. Referenced by Draw(). 00355 {
00356 printf("Drawing MCHits\n");
00357 cout << "PlaneView::DrawMCHits\n";
00358
00359 edm::EventHandle& evt = evdb::IoModule::Instance()->GetEvent();
00360
00361 std::vector<const rawdata::DAQHeader*> header;
00362 short int det = rawdata::kFar;
00363 try{ evt.DAQ().Get("./",header); }
00364 catch(edm::Exception e){
00365 std::cerr << "Error retrieving daq header, while looking "<<
00366 "in PlaneView::DrawMCHits(), using default fardet geometry" << std::endl;
00367 }
00368 if(header.size() > 0) det = header[0]->DetId();
00369 fGeo = &geo::Geometry::Instance(evt.Header().Run(),det);
00370
00371 std::vector<const sim::FLSHitList*> hitlist;
00372 try { evt.DetSim().Get(".",hitlist); }
00373 catch (edm::Exception e) { }
00374
00375 for (unsigned int i=0; i<hitlist.size(); ++i) {
00376
00377 for (unsigned int j=0; j< hitlist[i]->fHits.size(); ++j) {
00378 // Color scale for energy deposition ranging from 0 to 20 MeV
00379 static evd::ColorScale edepColorScale(0.0,20.0E-3,kColdToHot);
00380 static evd::ColorScale timeColorScale(-10.0E-6,10.0E6,
00381 kCustom,kLinear,
00382 100,-300.0,240.0,0.2,0.8);
00383
00384 // Unpack hit[i,j] once to avoid lots of array look-ups
00385 const sim::FLSHit& hit = hitlist[i]->fHits[j];
00386
00387 // Skip tiny hits
00388 if(hit.fEdep < 1.E-4) continue;
00389
00390 double pos[3];
00391 fGeo->Plane(hit.fPlaneId).Cell(hit.fCellId).GetCenter(pos);
00392 double w= fGeo->Plane(hit.fPlaneId).Cell(hit.fCellId).HalfW();
00393 double d= fGeo->Plane(hit.fPlaneId).Cell(hit.fCellId).HalfD();
00394
00395 int fMCHitColorOption = 1;
00396 if(fGeo->Plane(hit.fPlaneId).View()==geo::kX) {
00397 TBox& bx = fXview->AddBox(pos[2]-d,pos[0]-w,pos[2]+d,pos[0]+w);
00398 if(pos[0]<xmin) xmin=pos[0];
00399 if(pos[0]>xmax) xmax=pos[0];
00400 if (fMCHitColorOption==0) {
00401 bx.SetFillColor(timeColorScale(hit.fT));
00402 }
00403 else {
00404 bx.SetFillColor(edepColorScale(hit.fEdep));
00405 }
00406 }
00407 else {
00408 TBox& by = fYview->AddBox(pos[2]-d,pos[1]-w,pos[2]+d,pos[1]+w);
00409 if(pos[1]<ymin) ymin=pos[1];
00410 if(pos[1]>ymax) ymax=pos[1];
00411 if (fMCHitColorOption==0) {
00412 by.SetFillColor(timeColorScale(hit.fT));
00413 }
00414 else {
00415 by.SetFillColor(edepColorScale(hit.fEdep));
00416 }
00417 }
00418
00419 if(pos[2]<zmin) zmin=pos[2];
00420 if(pos[2]>zmax) zmax=pos[2];
00421 }
00422 }
00423 }
|
|
|
Definition at line 687 of file PlaneView.cxx. References evdb::View2D::AddBox(), edm::EventHandle::DAQ(), fGeo, fXview, fYview, edm::EventHandle::Header(), geo::Geometry::Instance(), evdb::IoModule::Instance(), geo::Geometry::Plane(), edm::EventHandle::Reco(), xmax, xmin, ymax, ymin, zmax, and zmin. Referenced by Draw(). 00688 {
00689
00690 printf("Drawing PlaneClusters\n");
00691
00692 edm::EventHandle& evt = evdb::IoModule::Instance()->GetEvent();
00693
00694 std::vector<const rawdata::DAQHeader*> header;
00695 short int det = rawdata::kFar;
00696 try{ evt.DAQ().Get("./",header); }
00697 catch(edm::Exception e){
00698 std::cerr << "Error retrieving daq header, while looking "<<
00699 "in PlaneView::DrawPlaneClusters(), using default fardet geometry" << std::endl;
00700 }
00701 if(header.size() > 0) det = header[0]->DetId();
00702 fGeo = &geo::Geometry::Instance(evt.Header().Run(),det);
00703
00704
00705 std::vector<const recobase::PlaneCluster*> planecluster(0);
00706
00707
00708
00709 try { evt.Reco().Get("./",planecluster);
00710 }
00711 catch (edm::Exception e) { }
00712
00713
00714 for (unsigned int i=0; i<planecluster.size(); ++i) {
00715
00716 unsigned int lowcell=planecluster[i]->fCellHit[0]->Cell();
00717 unsigned int highcell=planecluster[i]->fCellHit[planecluster[i]->fCellHit.size()-1]->Cell();
00718 unsigned int plane = planecluster[i]->Plane();
00719 double lowpos[3],highpos[3];
00720
00721 fGeo->Plane(plane).Cell(lowcell).GetCenter(lowpos);
00722 fGeo->Plane(plane).Cell(highcell).GetCenter(highpos);
00723
00724 float fT = (float)(planecluster[i]->Tpos());
00725 float fZ = (float)(planecluster[i]->Zpos());
00726
00727
00728 float fdT = (float)(planecluster[i]->dT());
00729 float fdZ = (float)(planecluster[i]->dZ());
00730
00731 // std::cout << i << " " << fCell << " " << fPlane << std::endl;
00732
00733 if(fGeo->Plane(planecluster[i]->fPlane).View()==geo::kX) {
00734 TBox& bx = fXview->AddBox(fZ-fdT,lowpos[0],fZ+fdZ,highpos[0]);
00735 if(fT<xmin) xmin=fT;
00736 if(fT>xmax) xmax=fT;
00737 bx.SetFillColor(2);
00738 // Style::FromPDG(bx,2);
00739 } else {
00740 TBox& by = fYview->AddBox(fZ-fdZ,lowpos[1],fZ+fdZ,highpos[1]);
00741 if(fT<ymin) ymin=fT;
00742 if(fT>ymax) ymax=fT;
00743 by.SetFillColor(2);
00744 // Style::FromPDG(by,2);
00745 }
00746
00747 if(fZ<zmin) zmin=fZ;
00748 if(fZ>zmax) zmax=fZ;
00749
00750 }
00751 }
|
|
|
Definition at line 425 of file PlaneView.cxx. References evdb::View2D::AddBox(), edm::EventHandle::DAQ(), fGeo, fXview, fYview, edm::EventHandle::Header(), geo::Geometry::Instance(), evdb::IoModule::Instance(), geo::Geometry::Plane(), edm::EventHandle::Raw(), xmax, xmin, ymax, ymin, zmax, and zmin. Referenced by Draw(). 00426 {
00427
00428 printf("Drawing RawDigits\n");
00429
00430 edm::EventHandle& evt = evdb::IoModule::Instance()->GetEvent();
00431
00432 std::vector<const rawdata::DAQHeader*> header;
00433 short int det = rawdata::kFar;
00434 try{ evt.DAQ().Get("./",header); }
00435 catch(edm::Exception e){
00436 std::cerr << "Error retrieving daq header, while looking "<<
00437 "in PlaneView::DrawRawDigit(), using default fardet geometry" << std::endl;
00438 }
00439 if(header.size() > 0) det = header[0]->DetId();
00440
00441 fGeo = &geo::Geometry::Instance(evt.Header().Run(),det);
00442
00443 std::vector<const rawdata::RawDigit*> rawdigit;
00444 try { evt.Raw().Get(".",rawdigit); }
00445 catch (edm::Exception e) { }
00446 for (unsigned int i=0; i<rawdigit.size(); ++i) {
00447
00448 //float fCell = (float)(rawdigit[i]->GetCell());
00449 //float fPlane = (float)(rawdigit[i]->GetPlane());
00450
00451 // std::cout << i << " " << fCell << " " << fPlane << std::endl;
00452
00453 double pos[3];
00454 fGeo->Plane(rawdigit[i]->GetPlane()).Cell(rawdigit[i]->GetCell()).GetCenter(pos);
00455 double w= fGeo->Plane(rawdigit[i]->GetPlane()).Cell(rawdigit[i]->GetCell()).HalfW();
00456 double d= fGeo->Plane(rawdigit[i]->GetPlane()).Cell(rawdigit[i]->GetCell()).HalfD();
00457
00458 if(fGeo->Plane(rawdigit[i]->GetPlane()).View()==geo::kX) {
00459 TBox& bx = fXview->AddBox(pos[2]-d,pos[0]-w,pos[2]+d,pos[0]+w);
00460 if(pos[0]<xmin) xmin=pos[0];
00461 if(pos[0]>xmax) xmax=pos[0];
00462 bx.SetFillColor(1);
00463 // Style::FromPDG(bx,2);
00464 } else {
00465 TBox& by = fYview->AddBox(pos[2]-d,pos[1]-w,pos[2]+d,pos[1]+w);
00466 if(pos[1]<ymin) ymin=pos[1];
00467 if(pos[1]>ymax) ymax=pos[1];
00468 by.SetFillColor(1);
00469 // Style::FromPDG(by,2);
00470 }
00471
00472 if(pos[2]<zmin) zmin=pos[2];
00473 if(pos[2]>zmax) zmax=pos[2];
00474
00475 }
00476
00477 }
|
|
|
Definition at line 754 of file PlaneView.cxx. References evdb::View2D::AddBox(), evdb::View2D::AddLine(), recobase::CellHit::Cell(), edm::EventHandle::DAQ(), fGeo, fXview, fYview, recobase::ShowerBase::GetCells(), edm::EventHandle::Header(), geo::Geometry::Instance(), evdb::IoModule::Instance(), recobase::CellHit::Plane(), geo::Geometry::Plane(), edm::EventHandle::Reco(), xmax, xmin, ymax, ymin, zmax, and zmin. Referenced by Draw(). 00755 {
00756 printf("Drawing Reco SubShowers\n");
00757 typedef std::map<UInt_t,std::multimap<Double_t,const recobase::CellHit*> > CellMap_t;
00758
00759 edm::EventHandle& evt = evdb::IoModule::Instance()->GetEvent();
00760
00761 std::vector<const rawdata::DAQHeader*> header;
00762 short int det = rawdata::kFar;
00763 try{ evt.DAQ().Get("./",header); }
00764 catch(edm::Exception e){
00765 std::cerr << "Error retrieving daq header, while looking "<<
00766 "in PlaneView::Showers(), using default fardet geometry" << std::endl;
00767 }
00768 if(header.size() > 0) det = header[0]->DetId();
00769 fGeo = &geo::Geometry::Instance(evt.Header().Run(),det);
00770
00771 std::vector<const recobase::ShowerBase*> shower(0);
00772 try {evt.Reco().Get("./Final2DShw",shower);//Final or Segment
00773 }
00774 catch (edm::Exception e) { }
00775
00776 int jx=-1;
00777 int jy=-1;
00778
00779 Double_t endz;
00780 Double_t endt;
00781
00782 for(unsigned int i=0;i<shower.size();i++)
00783 {
00784
00785 if(shower[i]->GetNCell()>5){ // Draw Only Showers with > 5 Cells
00786
00787 Double_t slope = shower[i]->GetSlope();
00788 Double_t intercept = shower[i]->GetTMax();
00789
00790 endz = shower[i]->GetVtxZ() + (shower[i]->GetEndZ()-shower[i]->GetVtxZ())/2.;
00791 endt = intercept+slope*(endz-shower[i]->GetZMax());
00792
00793 if(shower[i]->GetPlaneView()==1) {
00794
00795 jx=jx+1;
00796 TLine& lx = fXview->AddLine(shower[i]->GetVtxZ(),shower[i]->GetVtxT(), shower[i]->GetEndZ(), shower[i]->GetEndT());
00797 // TLine& lx = fXview->AddLine(shower[i]->GetVtxZ(),shower[i]->GetVtxT(), endz, endt);
00798 lx.SetLineWidth(2);
00799 lx.SetLineColor(jx+2);
00800 printf("x Shower (%f %f , %f %f)\n", shower[i]->GetVtxZ(), shower[i]->GetVtxT(), shower[i]->GetEndZ(), shower[i]->GetEndT());
00801 }
00802 else if(shower[i]->GetPlaneView()==2) {
00803 jy=jy+1;
00804 TLine& ly = fYview->AddLine(shower[i]->GetVtxZ(),shower[i]->GetVtxT(), shower[i]->GetEndZ(), shower[i]->GetEndT());
00805 ly.SetLineWidth(2);
00806 ly.SetLineColor(jy+2);
00807 printf("Y Shower (%f %f , %f %f)\n", shower[i]->GetVtxZ() ,shower[i]->GetVtxT(), shower[i]->GetEndZ(), shower[i]->GetEndT());
00808 }
00809 // NOW DISPLAY THE 2D SHOWER HITS WITH DIFFERENT COLORS
00810
00811 recobase::ShowerBase* showerg = new recobase::ShowerBase(*shower[i]);
00812 const recobase::ShowerBase::CellMap_t& planes = showerg->GetCells();
00813 recobase::ShowerBase::CellMap_t::const_iterator piter;
00814 std::multimap<Double_t,recobase::CellHit*> cells;
00815 std::multimap<Double_t,recobase::CellHit*>::const_iterator citer;
00816
00817 for (piter=planes.begin();piter!= planes.end();piter++)
00818 {
00819 cells=piter->second;
00820
00821 const recobase::CellHit* rc;
00822
00823 for(citer=cells.begin();citer!=cells.end();citer++)
00824 {
00825 rc = citer->second;
00826
00827 double pos[3];
00828 fGeo->Plane(rc->Plane()).Cell(rc->Cell()).GetCenter(pos);
00829 double w= fGeo->Plane(rc->Plane()).Cell(rc->Cell()).HalfW();
00830 double d= fGeo->Plane(rc->Plane()).Cell(rc->Cell()).HalfD();
00831 if(shower[i]->GetPlaneView()==1) {
00832 TBox& bx = fXview->AddBox(pos[2]-d,pos[0]-w,pos[2]+d,pos[0]+w);
00833 if(pos[0]<xmin) xmin=pos[0];
00834 if(pos[0]>xmax) xmax=pos[0];
00835 bx.SetFillColor(jx+2);
00836 }
00837 else if(shower[i]->GetPlaneView()==2){
00838 TBox& by = fYview->AddBox(pos[2]-d,pos[1]-w,pos[2]+d,pos[1]+w);
00839 if(pos[1]<ymin) ymin=pos[1];
00840 if(pos[1]>ymax) ymax=pos[1];
00841 by.SetFillColor(jy+2);
00842 }
00843
00844 if(pos[2]<zmin) zmin=pos[2];
00845 if(pos[2]>zmax) zmax=pos[2];
00846 }
00847
00848 }
00849
00850 // PRINT SOME ADDITION INFO
00851
00852 cout << " Shower View " << shower[i]->GetPlaneView() << endl;
00853 cout << " Shower Energy " << shower[i]->GetEnergy() << " Length " << shower[i]->GetLength() << endl;
00854
00855 }
00856
00857 }
00858
00859 }
|
|
|
Definition at line 156 of file PlaneView.cxx. References evdb::View2D::AddBox(), evdb::View2D::AddLine(), edm::EventHandle::DAQ(), fGeo, fOption, PlaneViewOption::fTrackRecoName, fXview, fYview, edm::EventHandle::Header(), geo::Geometry::Instance(), evdb::IoModule::Instance(), geo::Geometry::Plane(), edm::EventHandle::Reco(), xmax, xmin, ymax, ymin, zmax, and zmin. Referenced by Draw(). 00157 {
00158 printf("Drawing Track Candidates\n");
00159
00160 edm::EventHandle& evt = evdb::IoModule::Instance()->GetEvent();
00161
00162 std::vector<const rawdata::DAQHeader*> header;
00163 short int det = rawdata::kFar;
00164 try{ evt.DAQ().Get("./",header); }
00165 catch(edm::Exception e){
00166 std::cerr << "Error retrieving daq header, while looking "<<
00167 "in PlaneView::DrawTrackCandidates(), using default fardet geometry" << std::endl;
00168 }
00169 if(header.size() > 0) det = header[0]->DetId();
00170 fGeo = &geo::Geometry::Instance(evt.Header().Run(),det);
00171
00172 std::vector<const recobase::PlaneCluster*> planecluster(0);
00173
00174 std::vector<const recobase::TrackBase*> track(0);
00175
00176 try { evt.Reco().Get("./",planecluster);
00177 }
00178 catch (edm::Exception e) { }
00179
00180 std::string dir = "./"+fOption->fTrackRecoName+"Candidates";
00181 try {evt.Reco().Get("./Segment",track);//Final or Segment
00182 }
00183 catch (edm::Exception e) { }
00184
00185
00186 for(unsigned int i=0;i<track.size();i++)
00187 {
00188 if(track[i]->XY()==geo::kX) {
00189 fXview->AddLine(track[i]->StartZ(),track[i]->StartT(geo::kX), track[i]->EndZ(), track[i]->EndT(geo::kX));
00190 printf("x track (%f %f , %f %f)\n",track[i]->StartZ(),track[i]->StartT(geo::kX), track[i]->EndZ(), track[i]->EndT(geo::kX));
00191 }else{
00192 printf("y track (%f %f , %f %f)\n",track[i]->StartZ(),track[i]->StartT(geo::kY), track[i]->EndZ(), track[i]->EndT(geo::kY));
00193 fYview->AddLine(track[i]->StartZ(),track[i]->StartT(geo::kY), track[i]->EndZ(), track[i]->EndT(geo::kY));
00194 }
00195 }
00196
00197 for (unsigned int i=0; i<planecluster.size(); ++i) {
00198
00199 unsigned int lowcell=planecluster[i]->fCellHit[0]->Cell();
00200 unsigned int highcell=planecluster[i]->fCellHit[planecluster[i]->fCellHit.size()-1]->Cell();
00201 unsigned int plane = planecluster[i]->Plane();
00202 double lowpos[3],highpos[3];
00203
00204 fGeo->Plane(plane).Cell(lowcell).GetCenter(lowpos);
00205 fGeo->Plane(plane).Cell(highcell).GetCenter(highpos);
00206
00207 float fT = (float)(planecluster[i]->Tpos());
00208 float fZ = (float)(planecluster[i]->Zpos());
00209
00210 float fdT = (float)(planecluster[i]->dT());
00211 float fdZ = (float)(planecluster[i]->dZ());
00212
00213 // std::cout << i << " " << fCell << " " << fPlane << std::endl;
00214
00215 if(fGeo->Plane(planecluster[i]->fPlane).View()==geo::kX) {
00216 TBox& bx = fXview->AddBox(fZ-fdT,lowpos[0],fZ+fdZ,highpos[0]);
00217 if(fT<xmin) xmin=fT;
00218 if(fT>xmax) xmax=fT;
00219 bx.SetFillColor(2);
00220 // Style::FromPDG(bx,2);
00221 } else {
00222 TBox& by = fYview->AddBox(fZ-fdZ,lowpos[1],fZ+fdZ,highpos[1]);
00223 if(fT<ymin) ymin=fT;
00224 if(fT>ymax) ymax=fT;
00225 by.SetFillColor(2);
00226 // Style::FromPDG(by,2);
00227 }
00228
00229 if(fZ<zmin) zmin=fZ;
00230 if(fZ>zmax) zmax=fZ;
00231
00232 }
00233
00234 }
|
|
|
Definition at line 236 of file PlaneView.cxx. References evdb::View2D::AddLine(), edm::EventHandle::DAQ(), fGeo, fOption, PlaneViewOption::fTrackRecoName, fXview, fYview, edm::EventHandle::Header(), geo::Geometry::Instance(), evdb::IoModule::Instance(), and edm::EventHandle::Reco(). Referenced by Draw(). 00237 {
00238 printf("Drawing Tracks\n");
00239
00240 edm::EventHandle& evt = evdb::IoModule::Instance()->GetEvent();
00241
00242 std::vector<const rawdata::DAQHeader*> header;
00243 short int det = rawdata::kFar;
00244 try{ evt.DAQ().Get("./",header); }
00245 catch(edm::Exception e){
00246 std::cerr << "Error retrieving daq header, while looking "<<
00247 "in PlaneView::DrawTracks(), using default fardet geometry" << std::endl;
00248 }
00249 if(header.size() > 0) det = header[0]->DetId();
00250 fGeo = &geo::Geometry::Instance(evt.Header().Run(),det);
00251
00252 std::vector<const recobase::TrackBase*> track3d(0);
00253
00254 std::string dir = "./"+fOption->fTrackRecoName;
00255 try {evt.Reco().Get(dir.c_str(),track3d);
00256 }
00257 catch (edm::Exception e) { }
00258
00259 for(unsigned int i=0;i<track3d.size();i++)
00260 {
00261
00262 if(track3d[i]->NRecoPt()<=1) continue;
00263 for(unsigned int j=0; j<track3d[i]->NRecoPt(); j++) {
00264
00265 TLine& lx = fXview->AddLine(track3d[i]->RecoPt(j).Z(), track3d[i]->RecoPt(j).X(),
00266 track3d[i]->RecoPt(j+1).Z(), track3d[i]->RecoPt(j+1).X());
00267 TLine& ly = fYview->AddLine(track3d[i]->RecoPt(j).Z(), track3d[i]->RecoPt(j).Y(),
00268 track3d[i]->RecoPt(j+1).Z(), track3d[i]->RecoPt(j+1).Y());
00269
00270 lx.SetLineColor(6);
00271 ly.SetLineColor(6);
00272
00273 }
00274 }
00275
00276 }
|
|
|
Give a short tag which can be included in filename to ID object printed Keep to ~4 characters Reimplemented from evdb::Canvas. Definition at line 18 of file PlaneView.h. 00018 { return "planeview"; }
|
|
|
Definition at line 38 of file PlaneView.h. Referenced by Draw3DShowers(), DrawMCHits(), DrawPlaneClusters(), DrawRawDigit(), DrawShowers(), DrawTrackCandidates(), DrawTracks(), and PlaneView(). |
|
|
Definition at line 39 of file PlaneView.h. Referenced by Draw(), DrawTrackCandidates(), DrawTracks(), and PlaneView(). |
|
|
Definition at line 36 of file PlaneView.h. Referenced by Draw(), Draw3DShowers(), DrawFilament(), DrawMC(), DrawMCHits(), DrawPlaneClusters(), DrawRawDigit(), DrawShowers(), DrawTrackCandidates(), DrawTracks(), and PlaneView(). |
|
|
Definition at line 34 of file PlaneView.h. Referenced by Draw(), and PlaneView(). |
|
|
Definition at line 32 of file PlaneView.h. Referenced by Draw(), and PlaneView(). |
|
|
Definition at line 37 of file PlaneView.h. Referenced by Draw(), Draw3DShowers(), DrawFilament(), DrawMC(), DrawMCHits(), DrawPlaneClusters(), DrawRawDigit(), DrawShowers(), DrawTrackCandidates(), DrawTracks(), and PlaneView(). |
|
|
Definition at line 35 of file PlaneView.h. Referenced by Draw(), and PlaneView(). |
|
|
Definition at line 33 of file PlaneView.h. Referenced by Draw(), and PlaneView(). |
|
|
Definition at line 42 of file PlaneView.h. Referenced by Draw(), Draw3DShowers(), DrawFilament(), DrawMC(), DrawMCHits(), DrawPlaneClusters(), DrawRawDigit(), DrawShowers(), and DrawTrackCandidates(). |
|
|
Definition at line 42 of file PlaneView.h. Referenced by Draw(), Draw3DShowers(), DrawFilament(), DrawMC(), DrawMCHits(), DrawPlaneClusters(), DrawRawDigit(), DrawShowers(), and DrawTrackCandidates(). |
|
|
Definition at line 43 of file PlaneView.h. Referenced by Draw(), Draw3DShowers(), DrawFilament(), DrawMC(), DrawMCHits(), DrawPlaneClusters(), DrawRawDigit(), DrawShowers(), and DrawTrackCandidates(). |
|
|
Definition at line 43 of file PlaneView.h. Referenced by Draw(), Draw3DShowers(), DrawFilament(), DrawMC(), DrawMCHits(), DrawPlaneClusters(), DrawRawDigit(), DrawShowers(), and DrawTrackCandidates(). |
|
|
Definition at line 41 of file PlaneView.h. Referenced by Draw(), Draw3DShowers(), DrawFilament(), DrawMC(), DrawMCHits(), DrawPlaneClusters(), DrawRawDigit(), DrawShowers(), and DrawTrackCandidates(). |
|
|