BCkovCalib Class Reference

JobControl module which goes through beam cherenkov data in a run and fills histograms which can be used to get calibration constants (pedestals and time offsets). More...

#include <BCkovCalib.h>

Inheritance diagram for BCkovCalib:

JobCModule CfgObserver List of all members.

Public Member Functions

 BCkovCalib (const char *version)
 ~BCkovCalib ()
JobCResult Ana (const EDMEventHandle &evt)
void NewRun (int run, int subrun)
void Update (const CfgConfig &c)

Private Attributes

float fNsecPerBin
 Bin size of BCkov signals.
TTree * fTree
BCkovNtfNt
TH1F * fPed [BCkov::kNChan]
int fDebug
int fWriteToDB
int fWriteToXML

Detailed Description

JobControl module which goes through beam cherenkov data in a run and fills histograms which can be used to get calibration constants (pedestals and time offsets).

Definition at line 43 of file BCkovCalib.h.


Constructor & Destructor Documentation

BCkovCalib::BCkovCalib ( const char *  version  ) 

Definition at line 32 of file BCkovCalib.cxx.

References BCkov::ChanName(), fNt, fPed, fTree, BCkov::kMaxADC, BCkov::kNChan, name, JobCModule::SetCfgVersion(), and BCkov::ShortName().

00032                                           :
00033   JobCModule("BCkovCalib"),
00034   fDebug(0)
00035 {
00036   SetCfgVersion(version);
00037 
00038   char name[64];
00039   char title[256];
00040 
00041   fNt = new BCkovNt;
00042   fTree = new TTree("bckovnt", "Beam Cherenkov calibration ntuple");
00043   fTree->Branch("fNt", "BCkovNt", &fNt);
00044 
00045   for (int i = 0; i < kNChan; ++i) {
00046     sprintf(name, "ped_%s", ShortName(i));
00047     sprintf(title, "%s pedestal", ChanName(i)); 
00048     fPed[i] = new TH1F(name, title, kMaxADC, 0, kMaxADC);
00049     fPed[i]->SetXTitle("ADC value");
00050   }
00051 
00052 }

BCkovCalib::~BCkovCalib (  ) 

Definition at line 56 of file BCkovCalib.cxx.

References fNt, fPed, fTree, BCkov::kNChan, and Write().

00057 {
00058   fTree->Write();
00059   delete fTree;
00060   delete fNt;
00061 
00062   for (int i = 0; i < kNChan; ++i) {
00063     fPed[i]->Write();
00064     delete fPed[i];
00065   }
00066 }


Member Function Documentation

JobCResult BCkovCalib::Ana ( const EDMEventHandle evt  )  [virtual]

Reimplemented from JobCModule.

Definition at line 70 of file BCkovCalib.cxx.

References BCkovNt::adc, EDMTriggerId::CalibTrig(), BCkovNt::date, EDMTriggerId::EoSTrig(), EDMEventHeader::Event(), BCkovNt::evt, fNsecPerBin, fNt, fPed, fTree, EDMDataBucket::Get(), EDMEventHandle::Header(), JobCModule::kFailed, BCkov::kNChan, JobCModule::kPassed, LatchWord::kPrescaled, EDMEventHandle::Raw(), EDMEventHandle::Reco(), EDMEventHeader::Run(), BCkovNt::run, EDMTimeStamp::Sec(), EDMEventHeader::SubRun(), BCkovNt::subrun, BCkovNt::t, BCkovNt::t0, EDMEventHeader::TimeStamp(), EDMEventHeader::TriggerId(), and BCkovNt::trigword.

00071 {
00072   if (evt.Header().TriggerId().EoSTrig()) return kFailed;
00073 
00074   // Extract BCkov digits from the data stream
00075   std::vector<const BCKOVDigit*> digList(0);
00076   std::vector<const T0Time*> t0time(0);
00077   std::vector<const LatchWord*> latch(0);
00078   try { 
00079     evt.Raw().Get("/bckov", digList); 
00080     if (digList.size() != kNChan) return kFailed;
00081   }
00082   catch (...) { return kFailed; }
00083 
00084   // On calibration events, we only need to fill the pedestal histogram
00085   if (evt.Header().TriggerId().CalibTrig()) {
00086     for (int i = 0; i < kNChan; ++i) {
00087       const BCKOVDigit* dig = digList[i];
00088       int chanIndx = dig->Channel() - 1;
00089       assert(chanIndx >= 0 && chanIndx < kNChan);
00090       
00091       fPed[chanIndx]->Fill(dig->ADC());
00092     }
00093     return kPassed;
00094   }
00095 
00096   // Now try to get trigger latch word and event time
00097   try {
00098     evt.Raw().Get("/trig", latch);
00099     if (latch.empty()) return kFailed;
00100     evt.Reco().Get("/t0", t0time);
00101     if (t0time.empty()) return kFailed;
00102   } catch (...) { return kFailed; }
00103 
00104   // Make sure that T0 is reasonable
00105   fNt->t0 = t0time.front()->GetTime();
00106   if (fNt->t0 > 100) return kFailed;
00107 
00108   // Initialize event header info
00109   fNt->run = evt.Header().Run();
00110   fNt->subrun = evt.Header().SubRun();
00111   fNt->evt = evt.Header().Event();
00112   fNt->date = evt.Header().TimeStamp().Sec();
00113   fNt->trigword = latch[LatchWord::kPrescaled]->GetWord();
00114 
00115   for (int i = 0; i < kNChan; ++i) {
00116     const BCKOVDigit* dig = digList[i];
00117     int chanIndx = dig->Channel() - 1;
00118     assert(chanIndx >= 0 && chanIndx < kNChan);
00119 
00120     fNt->t[chanIndx] = dig->TDC();
00121     fNt->t[chanIndx] *= fNsecPerBin;
00122     fNt->t[chanIndx] -= fNt->t0;
00123     fNt->adc[chanIndx] = dig->ADC();
00124   }
00125 
00126   fTree->Fill();
00127 
00128   return kPassed;
00129 }

void BCkovCalib::NewRun ( int  run,
int  subrun 
) [virtual]

Reimplemented from JobCModule.

Definition at line 141 of file BCkovCalib.cxx.

References cmap, fDebug, fNsecPerBin, CMapTOF::Init(), CMapTOF::Instance(), and CMapTOF::TDCBinSize().

00142 {
00143   CMapTOF& cmap = CMapTOF::Instance();
00144   cmap.Init(run, false);
00145 
00146   fNsecPerBin = cmap.TDCBinSize(6001) * 1e-3;
00147   assert(fNsecPerBin > 0 && fNsecPerBin < 1);
00148 
00149   if (fDebug) cout << "BCkov ns/per bin: " << fNsecPerBin << endl;
00150 }

void BCkovCalib::Update ( const CfgConfig c  )  [virtual]

Implements CfgObserver.

Definition at line 133 of file BCkovCalib.cxx.

References fDebug, and fWriteToDB.

00134 {
00135   c("Debug").      Get(fDebug);
00136   c("WriteToDB").  Get(fWriteToDB);
00137 }


Member Data Documentation

int BCkovCalib::fDebug [private]

Definition at line 59 of file BCkovCalib.h.

Referenced by NewRun(), and Update().

float BCkovCalib::fNsecPerBin [private]

Bin size of BCkov signals.

Definition at line 53 of file BCkovCalib.h.

Referenced by Ana(), and NewRun().

BCkovNt* BCkovCalib::fNt [private]

Definition at line 56 of file BCkovCalib.h.

Referenced by Ana(), BCkovCalib(), and ~BCkovCalib().

TH1F* BCkovCalib::fPed[BCkov::kNChan] [private]

Definition at line 57 of file BCkovCalib.h.

Referenced by Ana(), BCkovCalib(), and ~BCkovCalib().

TTree* BCkovCalib::fTree [private]

Definition at line 55 of file BCkovCalib.h.

Referenced by Ana(), BCkovCalib(), and ~BCkovCalib().

int BCkovCalib::fWriteToDB [private]

Definition at line 60 of file BCkovCalib.h.

Referenced by Update().

int BCkovCalib::fWriteToXML [private]

Definition at line 61 of file BCkovCalib.h.


The documentation for this class was generated from the following files:
Generated on Mon Nov 23 08:03:57 2009 for MIPP(E907) by  doxygen 1.4.7