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

Anp::SnarlAdcTab Class Reference

#include <SnarlAdcTab.h>

Inheritance diagram for Anp::SnarlAdcTab:

Anp::EventTab Anp::Base List of all members.

Public Member Functions

 SnarlAdcTab ()
virtual ~SnarlAdcTab ()
void Init (TCanvas *canvas)
void Expose ()
void Set (const Event &event, const Record &record)
void ZoomIn ()
void ZoomOut ()
void Config (const Registry &reg)

Private Member Functions

bool Init (const Record &record)
void Reset ()
void Add (StripVec &svec, const Record &record, const std::string &view)

Private Attributes

Registry fConfig
std::vector< TObject * > fObjVec
bool fInit
bool fDraw
bool fPlotAll
bool fUsePE
DrawSpan fSpan
TCanvas * fCanvas
TPad * fPadU
TPad * fPadV
TH2 * f2hU
TH2 * f2hV

Constructor & Destructor Documentation

Anp::SnarlAdcTab::SnarlAdcTab  ) 
 

Definition at line 24 of file SnarlAdcTab.cxx.

00025    :fConfig(false),
00026     fInit(false),
00027     fDraw(true),
00028     fPlotAll(true),
00029     fUsePE(true),
00030     fCanvas(0),
00031     fPadU(0),
00032     fPadV(0),
00033     f2hU(0),
00034     f2hV(0)
00035 {
00036 }

Anp::SnarlAdcTab::~SnarlAdcTab  )  [virtual]
 

Definition at line 39 of file SnarlAdcTab.cxx.

References fObjVec.

00040 {
00041    for(std::vector<TObject *>::iterator it = fObjVec.begin(); it != fObjVec.begin(); ++it)
00042    {
00043       TObject *obj = *it;
00044       delete obj;
00045    }
00046 }


Member Function Documentation

void Anp::SnarlAdcTab::Add StripVec svec,
const Record record,
const std::string &  view
[private]
 

Definition at line 217 of file SnarlAdcTab.cxx.

References fConfig, fSpan, Anp::DrawSpan::GetMaxTime(), Anp::DrawSpan::GetMinTime(), max, min, Anp::Draw::Read(), Anp::Record::StripBeg(), Anp::Record::StripEnd(), and Anp::StripIter.

00218 {
00219    static double TimeWindow = 20.0e-9;
00220    static bool init = false;
00221    if(!init)
00222    {
00223       TimeWindow = Draw::Read("TimeWindow", TimeWindow, fConfig);
00224       init = true;
00225    }
00226 
00227    const double min = fSpan.GetMinTime(TimeWindow); 
00228    const double max = fSpan.GetMaxTime(TimeWindow); 
00229 
00230    if(fPlotAll)
00231    {
00232       svec.clear();
00233       for(StripIter strip = record.StripBeg(); strip != record.StripEnd(); ++strip)
00234       {
00235          if(view == "U" && strip -> IsUview())
00236          {
00237             svec.push_back(strip);
00238          }
00239          if(view == "V" && strip -> IsVview())
00240          {
00241             svec.push_back(strip);
00242          }
00243       }      
00244    }
00245    else
00246    {
00247       for(StripIter strip = record.StripBeg(); strip != record.StripEnd(); ++strip)
00248       {
00249          if(strip -> Time() < min || strip -> Time() > max)
00250          {
00251             continue;
00252          }
00253       
00254          if(view == "U" && strip -> IsUview())
00255          {
00256             svec.push_back(strip);
00257          }
00258          if(view == "V" && strip -> IsVview())
00259          {
00260             svec.push_back(strip);
00261          }
00262       }
00263    }
00264 }

void Anp::SnarlAdcTab::Config const Registry reg  )  [virtual]
 

Implements Anp::EventTab.

Definition at line 168 of file SnarlAdcTab.cxx.

References fConfig, fPlotAll, fUsePE, Anp::Read(), and reg.

00169 {
00170    fConfig = reg;
00171 
00172    //
00173    // Read bool
00174    //
00175    Anp::Read(reg, "SnarlAdcTabPlotAll", fPlotAll);
00176    Anp::Read(reg, "SnarlAdcTabUsePE",   fUsePE);
00177 }

void Anp::SnarlAdcTab::Expose  )  [virtual]
 

Implements Anp::EventTab.

Definition at line 139 of file SnarlAdcTab.cxx.

References Draw(), f2hU, f2hV, fCanvas, fDraw, fPadU, and fPadV.

00140 {
00141    if(!fInit)
00142    {
00143       return;
00144    }
00145 
00146    if(!fPadU || !fPadV)
00147    {
00148       return;
00149    }
00150    
00151    if(fDraw)
00152    {
00153       fPadU -> cd();   
00154       f2hU -> Draw("colz");
00155       
00156       fPadV -> cd();   
00157       f2hV -> Draw("colz");
00158 
00159       fDraw = false;
00160    }
00161 
00162    fCanvas -> cd();
00163    fCanvas -> Modified();
00164    fCanvas -> Update();
00165 }

bool Anp::SnarlAdcTab::Init const Record record  )  [private]
 

Definition at line 180 of file SnarlAdcTab.cxx.

References Anp::Draw::CreateTH2(), f2hU, f2hV, fConfig, fInit, fObjVec, and Anp::Record::GetHeader().

00181 {
00182    if(fInit)
00183    {
00184       cerr << "SnarlAdcTab is already initialized" << endl;
00185       return false;
00186    }
00187 
00188    fInit = true;
00189 
00190    f2hU = Draw::CreateTH2("Uview", fConfig, record.GetHeader());
00191    f2hV = Draw::CreateTH2("Vview", fConfig, record.GetHeader());
00192 
00193    fObjVec.push_back(f2hU);
00194    fObjVec.push_back(f2hV);
00195 
00196    return true;
00197 }

void Anp::SnarlAdcTab::Init TCanvas *  canvas  )  [virtual]
 

Implements Anp::EventTab.

Definition at line 105 of file SnarlAdcTab.cxx.

References Anp::Draw::Config(), fCanvas, fConfig, fPadU, and fPadV.

Referenced by Set().

00106 {
00107    if(!canvas)
00108    {
00109       cerr << "SnarlAdcTab::Expose(): null TCanvas pointer" << endl;
00110       return;
00111    }
00112    if(fPadU || fPadV || fCanvas)
00113    {
00114       cerr << "SnarlAdcTab::Expose(): pads have been already initialized" << endl;
00115       return;
00116    }
00117 
00118    fCanvas = canvas;
00119 
00120    fCanvas -> Divide(0, 2);
00121 
00122    fPadU = dynamic_cast<TPad *> (canvas -> cd(1));
00123    fPadV = dynamic_cast<TPad *> (canvas -> cd(2));
00124    
00125    if(!fPadU || !fPadV)
00126    {
00127       cerr << "SnarlAdcTab::Expose(): failed to create new pads" << endl;
00128       fCanvas = 0;
00129       fPadU = 0;
00130       fPadV = 0;
00131       return;
00132    }
00133 
00134    Draw::Config(fPadU, "", fConfig);
00135    Draw::Config(fPadV, "", fConfig);
00136 }

void Anp::SnarlAdcTab::Reset  )  [private]
 

Definition at line 200 of file SnarlAdcTab.cxx.

References f2hU, f2hV, fDraw, fSpan, and Anp::DrawSpan::Reset().

00201 {
00202    fDraw = true;
00203 
00204    fSpan.Reset();
00205 
00206    if(f2hU)
00207    {
00208       f2hU -> Reset();
00209    }
00210    if(f2hV)
00211    {
00212       f2hV -> Reset();
00213    }
00214 }

void Anp::SnarlAdcTab::Set const Event event,
const Record record
[virtual]
 

Implements Anp::EventTab.

Definition at line 49 of file SnarlAdcTab.cxx.

References f2hU, f2hV, Anp::DrawSpan::FindSpan(), fSpan, Anp::GetStrip(), Init(), and StripVec.

00050 {  
00051    if(!fInit)
00052    {
00053       Init(record);
00054    }
00055    else
00056    {
00057       SnarlAdcTab::Reset();
00058    }
00059 
00060    if(!f2hU || !f2hV)
00061    {
00062       return;
00063    }
00064 
00065    fSpan.FindSpan(event, record);
00066 
00067    StripVec uvec = GetStrip(event, record, "U");
00068    StripVec vvec = GetStrip(event, record, "V");   
00069 
00070    if(uvec.empty() || vvec.empty())
00071    {
00072       cerr << "SnarlAdcTab::SetEvent() - no strips matching a track" << endl;
00073       return;
00074    }
00075 
00076    SnarlAdcTab::Add(uvec, record, "U");
00077    SnarlAdcTab::Add(vvec, record, "V");
00078 
00079    for(Draw::SIter sit = uvec.begin(); sit != uvec.end(); ++sit)
00080    {
00081       if(fUsePE)
00082       {
00083          f2hU -> Fill((*sit) -> ZPos(), (*sit) -> TPos(), (*sit) -> PE());
00084       }
00085       else
00086       {
00087          f2hU -> Fill((*sit) -> ZPos(), (*sit) -> TPos(), (*sit) -> SigCor());
00088       }
00089    }
00090 
00091    for(Draw::SIter sit = vvec.begin(); sit != vvec.end(); ++sit)
00092    {
00093       if(fUsePE)
00094       {
00095          f2hV -> Fill((*sit) -> ZPos(), (*sit) -> TPos(), (*sit) -> SigCor());
00096       }
00097       else
00098       {
00099          f2hV -> Fill((*sit) -> ZPos(), (*sit) -> TPos(), (*sit) -> PE());
00100       }
00101    }
00102 }   

void Anp::SnarlAdcTab::ZoomIn  )  [virtual]
 

Reimplemented from Anp::EventTab.

Definition at line 267 of file SnarlAdcTab.cxx.

References f2hU, f2hV, fConfig, fDraw, fSpan, Anp::DrawSpan::InitU(), Anp::DrawSpan::InitV(), Anp::DrawSpan::InitZ(), Anp::Draw::Read(), Anp::DrawSpan::SetRangeU(), Anp::DrawSpan::SetRangeV(), and Anp::DrawSpan::SetRangeZ().

00268 {
00269    fDraw = true;
00270 
00271    static double ZoomBorderScale = 1.2;
00272    static double ZoomBorderWidth = 0.1;
00273 
00274    static bool init = false;
00275    if(!init)
00276    {
00277       init = true;
00278       ZoomBorderScale = Draw::Read("ZoomBorderScale", ZoomBorderScale, fConfig);
00279       ZoomBorderWidth = Draw::Read("ZoomBorderWidth", ZoomBorderWidth, fConfig);
00280 
00281       if(ZoomBorderScale < 1.0) ZoomBorderScale = 1.2;
00282       if(ZoomBorderWidth < 0.0) ZoomBorderWidth = 0.1;
00283    }
00284 
00285    if(fSpan.InitU())
00286    {
00287       fSpan.SetRangeU(f2hU -> GetYaxis(), ZoomBorderScale, ZoomBorderWidth);
00288    }
00289    if(fSpan.InitZ())
00290    {
00291       fSpan.SetRangeZ(f2hU -> GetXaxis(), ZoomBorderScale, ZoomBorderWidth);
00292    }
00293    if(fSpan.InitV())
00294    {
00295       fSpan.SetRangeV(f2hV -> GetYaxis(), ZoomBorderScale, ZoomBorderWidth);
00296    }
00297    if(fSpan.InitZ())
00298    {
00299       fSpan.SetRangeZ(f2hV -> GetXaxis(), ZoomBorderScale, ZoomBorderWidth);
00300    }
00301 }

void Anp::SnarlAdcTab::ZoomOut  )  [virtual]
 

Reimplemented from Anp::EventTab.

Definition at line 304 of file SnarlAdcTab.cxx.

References f2hU, f2hV, and fDraw.

00305 {
00306    fDraw = true;
00307 
00308    f2hU -> GetXaxis() -> UnZoom();
00309    f2hU -> GetYaxis() -> UnZoom();
00310 
00311    f2hV -> GetXaxis() -> UnZoom();
00312    f2hV -> GetYaxis() -> UnZoom();
00313 }


Member Data Documentation

TH2* Anp::SnarlAdcTab::f2hU [private]
 

Definition at line 71 of file SnarlAdcTab.h.

Referenced by Expose(), Init(), Reset(), Set(), ZoomIn(), and ZoomOut().

TH2* Anp::SnarlAdcTab::f2hV [private]
 

Definition at line 72 of file SnarlAdcTab.h.

Referenced by Expose(), Init(), Reset(), Set(), ZoomIn(), and ZoomOut().

TCanvas* Anp::SnarlAdcTab::fCanvas [private]
 

Definition at line 66 of file SnarlAdcTab.h.

Referenced by Expose(), and Init().

Registry Anp::SnarlAdcTab::fConfig [private]
 

Definition at line 54 of file SnarlAdcTab.h.

Referenced by Add(), Config(), Init(), and ZoomIn().

bool Anp::SnarlAdcTab::fDraw [private]
 

Definition at line 59 of file SnarlAdcTab.h.

Referenced by Expose(), Reset(), ZoomIn(), and ZoomOut().

bool Anp::SnarlAdcTab::fInit [private]
 

Definition at line 58 of file SnarlAdcTab.h.

Referenced by Init().

std::vector<TObject *> Anp::SnarlAdcTab::fObjVec [private]
 

Definition at line 56 of file SnarlAdcTab.h.

Referenced by Init(), and ~SnarlAdcTab().

TPad* Anp::SnarlAdcTab::fPadU [private]
 

Definition at line 68 of file SnarlAdcTab.h.

Referenced by Expose(), and Init().

TPad* Anp::SnarlAdcTab::fPadV [private]
 

Definition at line 69 of file SnarlAdcTab.h.

Referenced by Expose(), and Init().

bool Anp::SnarlAdcTab::fPlotAll [private]
 

Definition at line 61 of file SnarlAdcTab.h.

Referenced by Config().

DrawSpan Anp::SnarlAdcTab::fSpan [private]
 

Definition at line 64 of file SnarlAdcTab.h.

Referenced by Add(), Reset(), Set(), and ZoomIn().

bool Anp::SnarlAdcTab::fUsePE [private]
 

Definition at line 62 of file SnarlAdcTab.h.

Referenced by Config().


The documentation for this class was generated from the following files:
Generated on Mon Feb 15 11:10:31 2010 for loon by  doxygen 1.3.9.1