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

AltTimeHist.cxx

Go to the documentation of this file.
00001 #include "AltTimeHist.h"
00002 #include <Midad/Base/Mint.h>
00003 #include <Midad/Base/MintView.h>
00004 #include <Midad/Base/ZoomPad.h>
00005 #include <Midad/Util/Range.h>
00006 
00007 #include <Conventions/Munits.h>
00008 
00009 #include <CandDigit/CandDigitHandle.h>
00010 #include <CandDigit/CandDigitListHandle.h>
00011 
00012 #include <DataUtil/CDL2STL.h>
00013 using namespace DataUtil;
00014 
00015 #include <TH1F.h>
00016 
00017 #include <sigc++/sigc++.h>
00018 #include <sigc++/class_slot.h>
00019 using namespace SigC;
00020 
00021 #include <vector>
00022 using namespace std;
00023 
00024 AltTimeHist::AltTimeHist()
00025     : fPad(0)
00026     , fHist1(0)
00027     , fHist2(0)
00028 {
00029 
00030   fPad = new TPad("Alt Time Hist2", "Alt Time Hist2", 0.42,0.25,0.75,0.44);
00031   fPad->Draw();
00032   
00033   fPad->cd();
00034   fHist1 = new TH1F("AltTimeHist","Digit Times (ns)",100,0,100);
00035   fHist2 = new TH1F("AltTimeHistwin","Digit Times (ns)",100,0,100);
00036   fHist1->Draw();
00037   fHist2->Draw("same");
00038   fHist1->SetFillColor(2);
00039   fHist1->SetLineColor(2);
00040   fHist1->SetFillStyle(1001);
00041   fHist2->SetFillColor(3);
00042   fHist2->SetLineColor(3);
00043   fHist2->SetFillStyle(1001);
00044  
00045 }
00046 
00047 
00048 AltTimeHist::~AltTimeHist()
00049 {
00050 }
00051 
00052 void AltTimeHist::Draw(Option_t*)
00053 {
00054     fPad->Draw();
00055 }
00056 void AltTimeHist::SetMint(Mint* mint)
00057 {
00058     this->MintView::SetMint(mint);
00059     mint->GetTimeRange().modified.connect(slot_class(*this,&AltTimeHist::Refresh));
00060         
00061 }
00062 
00063 void AltTimeHist::SetTotTimeRange(RangeDouble& r){
00064   fTotTimeRange.SetMin(r.Min()); 
00065   fTotTimeRange.SetMax(r.Max());
00066 }
00067  
00068 void AltTimeHist::UpdatePad()
00069 {
00070     fPad->Modified();
00071     fPad->Update();
00072 }
00073 
00074 void AltTimeHist::Refresh()
00075 {
00076 //    cerr << "AltTimeHist::Refresh()\n";
00077 
00078     fHist1->Reset();
00079 
00080     fHist2->Reset();
00081 
00082     const CandDigitListHandle *cdlh = this->GetMint().GetDigits();
00083     if (! cdlh) return;    
00084 
00085     RangeDouble& r = this->GetMint().GetTimeRange();
00086 
00087     if(fTotTimeRange.Max()-fTotTimeRange.Min()>0){
00088       fHist1->SetBins(300,fTotTimeRange.Min()/Munits::ns, fTotTimeRange.Max()/Munits::ns);    
00089       fHist2->SetBins(300,fTotTimeRange.Min()/Munits::ns, fTotTimeRange.Max()/Munits::ns);
00090       
00091       vector<const CandDigitHandle*> dc = CDL2STLvector<const CandDigitHandle>(*cdlh);
00092       
00093       int siz = dc.size();
00094       for (int ind=0; ind < siz; ++ind) {
00095         fHist1->Fill(dc[ind]->GetTime()/Munits::ns,dc[ind]->GetCharge());
00096       }
00097       
00098       for (int ind=0; ind < siz; ++ind) {
00099         Float_t t = dc[ind]->GetTime();
00100         if(t>r.Min() && t<r.Max()){
00101           fHist2->Fill(dc[ind]->GetTime()/Munits::ns,dc[ind]->GetCharge());
00102         }
00103       }
00104     }
00105 
00106     this->UpdatePad();
00107 }

Generated on Mon Feb 15 11:06:21 2010 for loon by  doxygen 1.3.9.1