00001 #include "DigitText.h"
00002
00003 #include <Midad/Gui/GuiTextView.h>
00004 #include <CandDigit/CandDigitHandle.h>
00005 #include <CandDigit/CandDigitListHandle.h>
00006 #include <Validity/VldContext.h>
00007 #include <Plex/PlexSEIdAltL.h>
00008 #include <Plex/PlexStripEndId.h>
00009 #include <Conventions/Munits.h>
00010
00011 #include <iostream>
00012 using namespace std;
00013
00014 DigitText::DigitText(GuiTextView* gtv)
00015 : fText(gtv)
00016 {
00017 const_cast<TGWindow*>(fText->GetParent())->Resize(460,180);
00018 }
00019
00020 DigitText::~DigitText()
00021 {
00022 delete fText;
00023 }
00024
00025
00026 void DigitText::Clear()
00027 {
00028 fText->Clear();
00029 }
00030
00031 void DigitText::AddLine( const char* line )
00032 {
00033 if (!line) return;
00034 fText->AddLine(line);
00035 }
00036
00037 void DigitText::AddText( const char* text )
00038 {
00039 if (!text) return;
00040
00041
00042 const char* linestart = text;
00043 const char* ptr = text;
00044 while ((*ptr) != '\0') {
00045 if (*ptr == '\n') {
00046 int length = ptr-linestart;
00047 char* line = new char[length+1];
00048 strncpy(line,linestart,length-1);
00049 fText->AddLine(line);
00050 }
00051 ++ptr;
00052 }
00053 }
00054
00055
00056 void DigitText::AddCandDigitText(const CandDigitHandle& cdh)
00057 {
00058 const PlexSEIdAltL& altl = cdh.GetPlexSEIdAltL();
00059
00060 const VldContext* vld = cdh.GetVldContext();
00061 const CandDigitListHandle* cdlh;
00062
00063
00064 fText->AddLine(Form("Context: %s",vld->AsString()));
00065 cdlh = dynamic_cast<const CandDigitListHandle*>(cdh.GetMother());
00066 if (cdlh)
00067 fText->AddLine(Form("AbsTime: %12.9f",cdlh->GetAbsTime()));
00068 fText->AddLine(Form("Plane: %d",altl.GetPlane()));
00069 fText->AddLine(Form("Charge: %.1f",cdh.GetCharge()));
00070 fText->AddLine(Form("Charge (no cal): %.1f",cdh.GetCharge(CalDigitType::kNone)));
00071 fText->AddLine(Form("Channel: %s",cdh.GetChannelId().AsString("e")));
00072 }
00073
00074 void DigitText::AddPlexSEIdAltLItemText (const PlexSEIdAltLItem& item)
00075 {
00076 AddStripIdText(item.GetSEId());
00077 AddPixelSpotIdText(item.GetPixelSpotId());
00078 fText->AddLine(Form("Weight: %f",item.GetWeight()));
00079 fText->AddLine(Form("Charge (PE): %.1f pe",item.GetPE()));
00080 fText->AddLine(Form("Time (ns): %.1f ns",item.GetTime()/Munits::ns));
00081 }
00082
00083 void DigitText::AddStripIdText(const PlexStripEndId& strip)
00084 {
00085 fText->AddLine(Form("Strip ID: %s",strip.AsString()));
00086 fText->AddLine(Form("Plane: %d",strip.GetPlane()));
00087 fText->AddLine(Form("Strip: %d",strip.GetStrip()));
00088 fText->AddLine(Form("Strip end: %s",StripEnd::AsString(strip.GetEnd())));
00089 fText->AddLine(Form("View: %s",PlaneView::AsString(strip.GetPlaneView())));
00090 }
00091
00092 void DigitText::AddPixelSpotIdText(const PlexPixelSpotId& spot)
00093 {
00094 fText->AddLine(Form("Pixel Spot: %s",spot.AsString("e")));
00095 }