Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

evd::Display3D Class Reference

A view of the detector in 3D. More...

#include <Display3D.h>

Inheritance diagram for evd::Display3D:

evdb::Canvas cfg::Observer evdb::Printable List of all members.

Public Member Functions

 Display3D (TGMainFrame *mf)
 ~Display3D ()
const char * Description () const
const char * PrintTag () const
void Draw (const char *opt="")
void Update (const cfg::Config &c)
void DrawOutline ()
void DrawMCHits ()
void DrawRawData ()
void DrawProngs ()

Private Member Functions

void BookHistograms ()
void StdHistoOpts (TH1F *h)
void SetGoodMax (TH1F *h1, TH1F *h2)

Private Attributes

DrawingOptions fDrawingOptions
 Collection of drawing options.
double fXlo
double fXhi
 Range in x to display (cm).
double fYlo
double fYhi
 Range in y to display (cm).
double fZlo
double fZhi
 Range in z to display (cm).
double fTlo
double fThi
 Range in time to display (us).
double fBomb
 Amount to offset top and sides for display (cm).
ColorScalefQscale
 Color scale for charge.
TH1F * fMCTHisto
 Plot number of MC hits vs. time.
TH1F * fMCQHisto
 Plot number of MC hits vs. charge.
TH1F * fRawTHisto
 Plot number of raw data hits vs. time.
TH1F * fRawQHisto
 Plot number of raw data hits vs. charge.
TPad * fPad3D
 Drawing pad for 3D view.
TPad * fTimePad
 Pad to draw timing histogram on.
TPad * fChargePad
 Pad to draw charge histogram on.
TGLViewer * fGLViewer3D
 3D Drawing pad
evdb::View3DfView
 Collection of 3D items to draw.

Detailed Description

A view of the detector in 3D.

Definition at line 21 of file Display3D.h.


Constructor & Destructor Documentation

Display3D::Display3D TGMainFrame *  mf  ) 
 

Definition at line 62 of file Display3D.cxx.

References BookHistograms(), fChargePad, fPad3D, fThi, fTimePad, fTlo, fView, fXhi, fXlo, fYhi, fYlo, fZhi, fZlo, evd::kRainbow, evd::kSqrt, and cfg::Observer::SetWatch().

00062                                     : 
00063   evdb::Canvas(mf),
00064   fQscale(new ColorScale(0.0, 512.0, kRainbow, kSqrt)),
00065   fPad3D(0),
00066   fTimePad(0),
00067   fGLViewer3D(0)
00068 {
00069   evdb::Canvas::fCanvas->cd();
00070 
00071   fTimePad = new TPad("fTimePad","Hits vs. Time",0.7,0.7,1.0,1.0,0);
00072   fTimePad->Draw();
00073   
00074   fChargePad = new TPad("fChargePad","Hits vs. Charge",0.7,0.4,1.0,0.7);
00075   fChargePad->SetLogx();
00076   fChargePad->SetLogy();
00077   fChargePad->Draw();
00078   
00079   fPad3D = new TPad("fPad3D","NOvA Event Display",0.0,0.0,0.7,0.7,0);
00080   fPad3D->Draw();
00081 
00082   fView = new evdb::View3D();
00083   
00084   fXlo = 0.0;
00085   fXhi = 0.0;
00086   fYlo = 0.0;
00087   fYhi = 0.0;
00088   fZlo = 0.0;
00089   fZhi = 0.0;
00090   fTlo = -10.0;
00091   fThi = +20.0;
00092 
00093   this->BookHistograms();
00094 
00095   this->SetWatch("DrawingOptions", "test");
00096 }

Display3D::~Display3D  ) 
 

Definition at line 151 of file Display3D.cxx.

References fPad3D, and fView.

00152 {
00153   delete fView;  fView  = 0;
00154   delete fPad3D; fPad3D = 0;
00155 }


Member Function Documentation

void Display3D::BookHistograms  )  [private]
 

Definition at line 112 of file Display3D.cxx.

References fMCQHisto, fMCTHisto, fRawQHisto, fRawTHisto, and StdHistoOpts().

Referenced by Display3D().

00113 {
00114   fRawTHisto = new TH1F("fRawTHisto",";usec;hits",300,-10.0,20.0);
00115   this->StdHistoOpts(fRawTHisto);
00116 
00117   fMCTHisto = new TH1F("fMCTHisto",";usec;hits",300,-10.0,20.0);
00118   this->StdHistoOpts(fMCTHisto);
00119   fMCTHisto->SetLineColor(2);
00120 
00121   fRawQHisto = new TH1F("fRawQHisto",";'MeV';hits",200,0.0,100.0);
00122   this->StdHistoOpts(fRawQHisto);
00123   
00124   fMCQHisto = new TH1F("fMCQHisto",";MeV;hits",200,0.0,100.0);
00125   this->StdHistoOpts(fMCQHisto);
00126   fMCQHisto->SetLineColor(2);
00127 }

const char* evd::Display3D::Description  )  const [inline, virtual]
 

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 25 of file Display3D.h.

00025 { return "3D Detector View"; }

void Display3D::Draw const char *  opt = ""  )  [virtual]
 

Implements evdb::Canvas.

Definition at line 159 of file Display3D.cxx.

References evdb::View3D::Clear(), geo::Geometry::DetHalfHeight(), geo::Geometry::DetHalfWidth(), geo::Geometry::DetLength(), evdb::View3D::Draw(), DrawMCHits(), DrawOutline(), DrawProngs(), DrawRawData(), fBomb, fChargePad, fDrawingOptions, fGLViewer3D, fMCQHisto, fMCTHisto, fPad3D, fRawQHisto, fRawTHisto, fTimePad, fView, fXhi, fXlo, fYhi, fYlo, fZhi, fZlo, util::EDMUtils::GetGeometry(), evdb::IoModule::Instance(), and SetGoodMax().

Referenced by Update().

00160 {
00161   // Check the range of the detector being displayed
00162   if (fXlo == fXhi && fYlo == fYhi && fZhi == fZlo) {
00163     edm::EventHandle& evt  = evdb::IoModule::Instance()->GetEvent();
00164 
00165     geo::Geometry&    geom = util::EDMUtils::GetGeometry(evt);
00166     fXlo = -geom.DetHalfWidth();
00167     fXhi =  geom.DetHalfWidth();
00168     fYlo = -geom.DetHalfHeight();
00169     fYhi =  geom.DetHalfHeight();
00170     fZlo =  0.0;
00171     fZhi =  geom.DetLength();
00172   }
00173   
00174   // fBomb control how far out to shift the detector faces from their
00175   // actual positions. The factor should be made adjustable. TODO
00176   double fBombFac = 0.05;
00177   fBomb = 
00178     (fXhi-fXlo)>(fYhi-fYhi) ? fBombFac*(fXhi-fXlo):fBombFac*(fYhi-fYlo);
00179 
00180   fView->Clear();
00181   fRawTHisto->Reset();
00182   fMCTHisto-> Reset();
00183   fRawQHisto->Reset();
00184   fMCQHisto-> Reset();
00185   
00186   this->DrawOutline();
00187   
00188   // if (fDrawingOptions.fDrawMCVectors !=0) this->??
00189   if (fDrawingOptions.   fDrawMCHits    !=0) this->DrawMCHits();
00190   if (fDrawingOptions.   fDrawRawDigits !=0) this->DrawRawData();
00191   // if (fDrawingOptions.fDrawCalHits   !=0) this->??
00192   if (fDrawingOptions.   fDrawProngs    !=0) this->DrawProngs();
00193   
00194   int irep = 0;
00195   fPad3D->Clear();
00196   fPad3D->cd();
00197   fView->Draw();
00198   if (fPad3D->GetView()==0) {
00199     double sz = 1600.0;
00200     double rmin[] = {-sz,-sz,2500.0-sz};
00201     double rmax[] = { sz, sz,2500.0+sz};
00202     TView3D* v = new TView3D(1,rmin,rmax);
00203     v->SetPerspective();
00204     v->SetView(226.0,226.0,135.0,irep);
00205     fPad3D->SetView(v); // ROOT takes ownership of object *v
00206   }
00207   if (fGLViewer3D==0) {
00208     fGLViewer3D = (TGLViewer*)fPad3D->GetViewer3D("ogl");
00209     // fGLViewer3D->SetClearColor(kWhite); // This stopped working as of root 5.23.04 [?]
00210     fGLViewer3D->PreferLocalFrame();
00211     fGLViewer3D->SetResetCamerasOnUpdate(0);
00212   }
00213   else {
00214     fPad3D->GetViewer3D()->PadPaint(fPad3D);
00215   }
00216   fPad3D->Update();
00217 
00218   fTimePad->Clear();
00219   fTimePad->cd();
00220   this->SetGoodMax(fRawTHisto,fMCTHisto);
00221   fRawTHisto->Draw();
00222   fMCTHisto->Draw("same");
00223   fTimePad->Update();
00224 
00225   fChargePad->Clear();
00226   fChargePad->cd();
00227   this->SetGoodMax(fRawQHisto,fMCQHisto);
00228   fRawQHisto->Draw();
00229   fMCQHisto->Draw("same");
00230   fChargePad->Update();
00231 }

void Display3D::DrawMCHits  ) 
 

Definition at line 337 of file Display3D.cxx.

References evdb::View3D::AddPolyMarker3D(), edm::EventHandle::DetSim(), sim::FLSHit::fCellId, sim::FLSHit::fEdep, sim::FLSHit::fEntryX, sim::FLSHit::fEntryY, sim::FLSHit::fEntryZ, sim::FLSHit::fExitX, sim::FLSHit::fExitY, sim::FLSHit::fExitZ, fMCQHisto, fMCTHisto, sim::FLSHit::fPDG, sim::FLSHit::fPlaneId, sim::FLSHit::fT, fView, util::EDMUtils::GetGeometry(), evdb::IoModule::Instance(), and geo::Geometry::Plane().

Referenced by Draw().

00338 {
00339   edm::EventHandle& evt  = evdb::IoModule::Instance()->GetEvent();
00340 
00341   geo::Geometry&    geom = util::EDMUtils::GetGeometry(evt);
00342 
00343   std::vector<const sim::FLSHitList*> hitlist;
00344   try         { evt.DetSim().Get(".",hitlist); }
00345   catch (...) { return; }
00346 
00347   for (unsigned int i=0; i<hitlist.size(); ++i) {
00348     for (unsigned int j=0; j<hitlist[i]->fHits.size(); ++j) {
00349       const sim::FLSHit& hit = hitlist[i]->fHits[j];
00350       
00351       // Scale units to MeV and usec
00352       fMCQHisto->Fill(hit.fEdep*1.0E3);
00353       fMCTHisto->Fill(hit.fT*1.0E6);
00354       
00355       int c;
00356       double sz;
00357       double lpos[3], wpos[3];
00358 
00359       lpos[0] = 0.5*(hit.fEntryX+hit.fExitX);
00360       lpos[1] = 0.5*(hit.fEntryY+hit.fExitY);
00361       lpos[2] = 0.5*(hit.fEntryZ+hit.fExitZ);
00362       geom.Plane(hit.fPlaneId).Cell(hit.fCellId).LocalToWorld(lpos,wpos);
00363       
00364       // scale the marker size so that volume is proportional to
00365       // charge
00366       sz = pow(1.0E-1+1.E4*hit.fEdep,0.33);
00367       c  = Style::ColorFromPDG(hit.fPDG);
00368       TPolyMarker3D& m = fView->AddPolyMarker3D(1,c,24,sz);
00369       m.SetPoint(0, wpos[0], wpos[1], wpos[2]);
00370     }
00371   }
00372 }

void Display3D::DrawOutline  ) 
 

Definition at line 244 of file Display3D.cxx.

References evdb::View3D::AddPolyLine3D(), fBomb, fView, fXhi, fXlo, fYhi, fYlo, fZhi, and fZlo.

Referenced by Draw().

00245 {
00246   int i, is;
00247   int cont;
00248   double x, y, z;
00249   double x0 = 0.5*(fXlo+fXhi);
00250   double y0 = 0.5*(fYlo+fYhi);
00251   double z0 = 0.5*(fZlo+fZhi);
00252   double dx = 100.0; // cm
00253   double dy = 100.0; // cm
00254   double dz = 100.0; // cm
00255   int c = kBlue-10;
00256   int w = 1;
00257   int s = 1;
00258   // Grid lines marking x-tick marks
00259   for (cont=1, i=0; cont==1 ; ++i) {
00260     cont = 0;
00261     for (is=-1; is<=1; is += 2) {
00262       x = x0+is*i*dx;
00263       if (x>=fXlo && x<=fXhi) {
00264         TPolyLine3D& p = fView->AddPolyLine3D(0,c,w,s);
00265         p.SetPoint(0,x,fYhi+fBomb,fZlo);
00266         p.SetPoint(1,x,fYhi+fBomb,fZhi);
00267         cont = 1;
00268       }
00269     }
00270   }
00271   // Grid lines marking y-tick marks
00272   for (cont=1, i=0; cont==1 ; ++i) {
00273     cont = 0;
00274     for (is=-1; is<=1; is += 2) {
00275       y = y0+is*i*dy;
00276       if (y>=fYlo && y<=fYhi) {
00277         TPolyLine3D& p = fView->AddPolyLine3D(0,c,w,s);
00278         p.SetPoint(0,fXhi+fBomb,y,fZlo);
00279         p.SetPoint(1,fXhi+fBomb,y,fZhi);
00280         cont = 1;
00281       }
00282     }
00283   }
00284   // Grid lines marking z-tick marks
00285   for (cont=1, i=0; cont==1 ; ++i) {
00286     cont = 0;
00287     for (is=-1; is<=1; is += 2) {
00288       z = z0+is*i*dz;
00289       if (z>=fZlo && z<=fZhi) {
00290         TPolyLine3D& p1 = fView->AddPolyLine3D(0,c,w,s);
00291         p1.SetPoint(0,fXhi+fBomb,fYlo,z);
00292         p1.SetPoint(1,fXhi+fBomb,fYhi,z);
00293 
00294         TPolyLine3D& p2 = fView->AddPolyLine3D(0,c,w,s);
00295         p2.SetPoint(0,fXlo,fYhi+fBomb,z);
00296         p2.SetPoint(1,fXhi,fYhi+fBomb,z);
00297         cont = 1;
00298       }
00299     }
00300   }
00301   // Complete the box on the otherside
00302   /*
00303   TPolyLine3D& p1 = fView->AddPolyLine3D(0,c,w,s);
00304   p1.SetPoint(0,fXlo-fBomb,fYlo,fZlo);
00305   p1.SetPoint(1,fXlo-fBomb,fYhi,fZlo);
00306   p1.SetPoint(2,fXlo-fBomb,fYhi,fZhi);
00307   p1.SetPoint(3,fXlo-fBomb,fYlo,fZhi);
00308   p1.SetPoint(4,fXlo-fBomb,fYlo,fZlo);
00309   */
00310 
00311   TPolyLine3D& p3 = fView->AddPolyLine3D(0,c,w,s);
00312   p3.SetPoint(0,fXhi+fBomb,fYlo,fZlo);
00313   p3.SetPoint(1,fXhi+fBomb,fYhi,fZlo);
00314   p3.SetPoint(2,fXhi+fBomb,fYhi,fZhi);
00315   p3.SetPoint(3,fXhi+fBomb,fYlo,fZhi);
00316   p3.SetPoint(4,fXhi+fBomb,fYlo,fZlo);
00317   
00318   /*
00319   TPolyLine3D& p2 = fView->AddPolyLine3D(0,c,w,s);
00320   p2.SetPoint(0,fXlo,fYlo-fBomb,fZlo);
00321   p2.SetPoint(1,fXhi,fYlo-fBomb,fZlo);
00322   p2.SetPoint(2,fXhi,fYlo-fBomb,fZhi);
00323   p2.SetPoint(3,fXlo,fYlo-fBomb,fZhi);
00324   p2.SetPoint(4,fXlo,fYlo-fBomb,fZlo);
00325   */
00326 
00327   TPolyLine3D& p4 = fView->AddPolyLine3D(0,c,w,s);
00328   p4.SetPoint(0,fXlo,fYhi+fBomb,fZlo);
00329   p4.SetPoint(1,fXhi,fYhi+fBomb,fZlo);
00330   p4.SetPoint(2,fXhi,fYhi+fBomb,fZhi);
00331   p4.SetPoint(3,fXlo,fYhi+fBomb,fZhi);
00332   p4.SetPoint(4,fXlo,fYhi+fBomb,fZlo);
00333 }

void Display3D::DrawProngs  ) 
 

Draw prongs on the display

Definition at line 507 of file Display3D.cxx.

References evdb::View3D::AddPolyLine3D(), fBomb, fDrawingOptions, evd::DrawingOptions::fProngFolders, fView, fXhi, fYhi, evdb::IoModule::Instance(), and edm::EventHandle::Reco().

Referenced by Draw().

00508 {
00509   edm::EventHandle& evt = evdb::IoModule::Instance()->GetEvent();      
00510   
00511   for (unsigned int i=0; i<fDrawingOptions.fProngFolders.size(); ++i) {
00512     std::vector<const recobase::Prong*> prong;
00513     const char* folder = fDrawingOptions.fProngFolders[i].c_str();
00514     try {
00515       evt.Reco().Get(folder, prong);
00516     }
00517     catch (edm::Exception e) {
00518       continue;
00519     }
00520     for (unsigned int j=0; j<prong.size(); ++j) {
00521       const double* x0 = prong[j]->StartPos();
00522       const double* x1 = prong[j]->EndPos();
00523 
00524       TPolyLine3D& pline1 = fView->AddPolyLine3D(2,kBlue,2,1);
00525       pline1.SetPoint(0, x0[0], x0[1], x0[2]);
00526       pline1.SetPoint(1, x1[0], x1[1], x1[2]);
00527       
00528       TPolyLine3D& pline2 = fView->AddPolyLine3D(2,kBlue-2,2,1);
00529       pline2.SetPoint(0, x0[0], fYhi+fBomb, x0[2]);
00530       pline2.SetPoint(1, x1[0], fYhi+fBomb, x1[2]);
00531 
00532       TPolyLine3D& pline3 = fView->AddPolyLine3D(2,kBlue-2,2,1);
00533       pline3.SetPoint(0, fXhi+fBomb, x0[1], x0[2]);
00534       pline3.SetPoint(1, fXhi+fBomb, x1[1], x1[2]);                   
00535     }
00536   }
00537 }

void Display3D::DrawRawData  ) 
 

Definition at line 376 of file Display3D.cxx.

References rawdata::RawDigit::ADC(), evdb::View3D::AddPolyLine3D(), geo::Geometry::CellInfo(), fBomb, fView, fXhi, fYhi, cmap::CMap::GetCell(), util::EDMUtils::GetCMap(), util::EDMUtils::GetGeometry(), cmap::CMap::GetPlane(), gsCMap, gsGeom, evdb::IoModule::Instance(), rawdata::RawDigit::NADC(), geo::Geometry::Plane(), and edm::EventHandle::Raw().

Referenced by Draw().

00377 {
00378   edm::EventHandle& evt  = evdb::IoModule::Instance()->GetEvent();
00379   geo::Geometry& geom = util::EDMUtils::GetGeometry(evt);
00380   cmap::CMap& cmap = util::EDMUtils::GetCMap(evt);
00381   gsGeom = &geom;
00382   gsCMap = &cmap;
00383   
00384   std::vector<const rawdata::RawDigit*> rd;
00385   try         { evt.Raw().Get(".",rd); }
00386   catch (...) { return; }
00387   sort(rd.begin(), rd.end(), raw_digit_sort);
00388   
00389   // Loop on digits and draw lines like this:
00390   //   _
00391   //  _||_
00392   // _|   |_
00393   //
00394   // showing the pulse height in cells along a given plane view
00395   //
00396   for (unsigned int i=0; i<rd.size(); ++i) {
00397     const rawdata::RawDigit& r = (*rd[i]);
00398     
00399     double thisQ = 0.0;
00400     for (unsigned int j=0; j<r.NADC(); ++j) {
00401       thisQ += r.ADC(j);
00402     }
00403     
00404     // Get the charge on the previous cell
00405     double prevQ = 0.0;
00406     if (i>0 && gsCMap->GetPlane(rd[i])==gsCMap->GetPlane(rd[i-1]) &&
00407         (gsCMap->GetCell(rd[i])-gsCMap->GetCell(rd[i-1]))==1) {
00408       for (unsigned int j=0; j<rd[i-1]->NADC(); ++j) {
00409         prevQ += rd[i-1]->ADC(j);
00410       }
00411     }
00412     
00413     // Get the charge on the next cell
00414     double nextQ = 0.0;
00415     if (i<rd.size()-1 && gsCMap->GetPlane(rd[i])==gsCMap->GetPlane(rd[i+1]) &&
00416         (gsCMap->GetCell(rd[i])-gsCMap->GetCell(rd[i+1]))==1) {
00417       for (unsigned int j=0; j<rd[i+1]->NADC(); ++j) {
00418         prevQ += rd[i+1]->ADC(j);
00419       }
00420     }
00421     
00422     // Get the location of the current, and adjacent, cells
00423     double pos0[3] = {0,0,0};
00424     double pos1[3] = {0,0,0};
00425     double pos2[3] = {0,0,0};
00426     double dpos1[3];
00427     geo::View_t view;
00428     geom.CellInfo(gsCMap->GetPlane(&r), gsCMap->GetCell(&r), &view, pos1, dpos1);
00429 
00430     // Next cell over in decreasing order
00431     if (gsCMap->GetCell(&r)>1) {
00432       geom.CellInfo(gsCMap->GetPlane(&r), gsCMap->GetCell(&r)-1, &view, pos0);
00433     }
00434     else {
00435       if (view == geo::kX) {
00436         pos0[0] = pos1[0]-dpos1[0];
00437         pos0[1] = pos1[1];
00438         pos0[2] = pos1[2];
00439       }
00440       if (view == geo::kY) {
00441         pos0[0] = pos1[0];
00442         pos0[1] = pos1[1]-dpos1[1];
00443         pos0[2] = pos1[2];
00444       }
00445     }
00446     
00447     // Next cell over in increasing order
00448     if (geom.Plane(gsCMap->GetPlane(rd[i])).Ncells()-gsCMap->GetCell(&r)>2) {
00449       geom.CellInfo(gsCMap->GetPlane(&r), gsCMap->GetCell(&r)+1, &view, pos2);
00450     }
00451     else {
00452       if (view == geo::kX) {
00453         pos2[0] = pos1[0]+dpos1[0];
00454         pos2[1] = pos1[1];
00455         pos2[2] = pos1[2];
00456       }
00457       if (view == geo::kY) {
00458         pos2[0] = pos1[0];
00459         pos2[1] = pos1[1]+dpos1[1];
00460         pos2[2] = pos1[2];
00461       }
00462     }
00463     
00464     TPolyLine3D& pline = fView->AddPolyLine3D(6,kSpring-1,2,1);
00465     if (view==geo::kX) {
00466       double x1 = pos0[0];
00467       double x2 = 0.5*(pos0[0]+pos1[0]);
00468       double x3 = 0.5*(pos1[0]+pos2[0]);
00469       double x4 = pos2[0];
00470       double y1 = fYhi + fBomb + 0.01*prevQ;
00471       double y2 = fYhi + fBomb + 0.01*thisQ;
00472       double y3 = fYhi + fBomb + 0.01*nextQ;
00473       double z1 = pos1[2];
00474       
00475       pline.SetPoint(0,x1,y1,z1);
00476       pline.SetPoint(1,x2,y1,z1);
00477       pline.SetPoint(2,x2,y2,z1);
00478       pline.SetPoint(3,x3,y2,z1);
00479       pline.SetPoint(4,x3,y3,z1);
00480       pline.SetPoint(5,x4,y3,z1);
00481     }
00482     if (view==geo::kY) {
00483       double y1 = pos0[1];
00484       double y2 = 0.5*(pos0[1]+pos1[1]);
00485       double y3 = 0.5*(pos1[1]+pos2[1]);
00486       double y4 = pos2[1];
00487       double x1 = fXhi + fBomb + 0.01*prevQ;
00488       double x2 = fXhi + fBomb + 0.01*thisQ;
00489       double x3 = fXhi + fBomb + 0.01*nextQ;
00490       double z1 = pos1[2];
00491       
00492       pline.SetPoint(0,x1,y1,z1);
00493       pline.SetPoint(1,x1,y2,z1);
00494       pline.SetPoint(2,x2,y2,z1);
00495       pline.SetPoint(3,x2,y3,z1);
00496       pline.SetPoint(4,x3,y3,z1);
00497       pline.SetPoint(5,x3,y4,z1);
00498       
00499     }
00500   } // loop on raw digits
00501 }

const char* evd::Display3D::PrintTag  )  const [inline, virtual]
 

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 26 of file Display3D.h.

00026 { return "3dview"; }

void Display3D::SetGoodMax TH1F *  h1,
TH1F *  h2
[private]
 

Definition at line 235 of file Display3D.cxx.

Referenced by Draw().

00236 {
00237   if (h2->GetMaximum()>h1->GetMaximum()) {
00238     h1->SetMaximum(1.05*h2->GetMaximum());
00239   }
00240 }

void Display3D::StdHistoOpts TH1F *  h  )  [private]
 

Definition at line 131 of file Display3D.cxx.

Referenced by BookHistograms().

00132 {
00133   h->SetLabelFont(42,"X");
00134   h->SetLabelFont(42,"Y");
00135   h->SetLabelSize(0.06,"X");
00136   h->SetLabelSize(0.06,"X");
00137   
00138   h->SetTitleFont(52,"X");
00139   h->SetTitleFont(52,"Y");
00140   h->SetTitleSize(0.08,"X");
00141   h->SetTitleSize(0.08,"Y");
00142   h->SetTitleOffset(0.55,"X");
00143   h->SetTitleOffset(0.45,"Y");
00144   
00145   h->GetXaxis()->SetNdivisions(510);
00146   h->GetYaxis()->SetNdivisions(505);
00147 }

void Display3D::Update const cfg::Config c  )  [virtual]
 

Get updates from the configurations this display uses

Implements cfg::Observer.

Definition at line 102 of file Display3D.cxx.

References Draw(), fDrawingOptions, cfg::Config::GetName(), and evd::DrawingOptions::Update().

00103 {
00104   if (std::string("DrawingOptions")==c.GetName()) { 
00105     fDrawingOptions.Update(c);
00106   }
00107   this->Draw();
00108 }


Member Data Documentation

double evd::Display3D::fBomb [private]
 

Amount to offset top and sides for display (cm).

Definition at line 48 of file Display3D.h.

Referenced by Draw(), DrawOutline(), DrawProngs(), and DrawRawData().

TPad* evd::Display3D::fChargePad [private]
 

Pad to draw charge histogram on.

Definition at line 60 of file Display3D.h.

Referenced by Display3D(), and Draw().

DrawingOptions evd::Display3D::fDrawingOptions [private]
 

Collection of drawing options.

Definition at line 42 of file Display3D.h.

Referenced by Draw(), DrawProngs(), and Update().

TGLViewer* evd::Display3D::fGLViewer3D [private]
 

3D Drawing pad

Definition at line 61 of file Display3D.h.

Referenced by Draw().

TH1F* evd::Display3D::fMCQHisto [private]
 

Plot number of MC hits vs. charge.

Definition at line 53 of file Display3D.h.

Referenced by BookHistograms(), Draw(), and DrawMCHits().

TH1F* evd::Display3D::fMCTHisto [private]
 

Plot number of MC hits vs. time.

Definition at line 52 of file Display3D.h.

Referenced by BookHistograms(), Draw(), and DrawMCHits().

TPad* evd::Display3D::fPad3D [private]
 

Drawing pad for 3D view.

Definition at line 58 of file Display3D.h.

Referenced by Display3D(), Draw(), and ~Display3D().

ColorScale* evd::Display3D::fQscale [private]
 

Color scale for charge.

Definition at line 50 of file Display3D.h.

TH1F* evd::Display3D::fRawQHisto [private]
 

Plot number of raw data hits vs. charge.

Definition at line 56 of file Display3D.h.

Referenced by BookHistograms(), and Draw().

TH1F* evd::Display3D::fRawTHisto [private]
 

Plot number of raw data hits vs. time.

Definition at line 55 of file Display3D.h.

Referenced by BookHistograms(), and Draw().

double evd::Display3D::fThi [private]
 

Range in time to display (us).

Definition at line 47 of file Display3D.h.

Referenced by Display3D().

TPad* evd::Display3D::fTimePad [private]
 

Pad to draw timing histogram on.

Definition at line 59 of file Display3D.h.

Referenced by Display3D(), and Draw().

double evd::Display3D::fTlo [private]
 

Definition at line 47 of file Display3D.h.

Referenced by Display3D().

evdb::View3D* evd::Display3D::fView [private]
 

Collection of 3D items to draw.

Definition at line 62 of file Display3D.h.

Referenced by Display3D(), Draw(), DrawMCHits(), DrawOutline(), DrawProngs(), DrawRawData(), and ~Display3D().

double evd::Display3D::fXhi [private]
 

Range in x to display (cm).

Definition at line 44 of file Display3D.h.

Referenced by Display3D(), Draw(), DrawOutline(), DrawProngs(), and DrawRawData().

double evd::Display3D::fXlo [private]
 

Definition at line 44 of file Display3D.h.

Referenced by Display3D(), Draw(), and DrawOutline().

double evd::Display3D::fYhi [private]
 

Range in y to display (cm).

Definition at line 45 of file Display3D.h.

Referenced by Display3D(), Draw(), DrawOutline(), DrawProngs(), and DrawRawData().

double evd::Display3D::fYlo [private]
 

Definition at line 45 of file Display3D.h.

Referenced by Display3D(), Draw(), and DrawOutline().

double evd::Display3D::fZhi [private]
 

Range in z to display (cm).

Definition at line 46 of file Display3D.h.

Referenced by Display3D(), Draw(), and DrawOutline().

double evd::Display3D::fZlo [private]
 

Definition at line 46 of file Display3D.h.

Referenced by Display3D(), Draw(), and DrawOutline().


The documentation for this class was generated from the following files:
Generated on Mon Nov 23 04:45:31 2009 for NOvA Offline by  doxygen 1.3.9.1