GetFidModule Class Reference

#include <GetFidModule.h>

Inheritance diagram for GetFidModule:

JobCModule List of all members.

Public Member Functions

 GetFidModule ()
 ~GetFidModule ()
JobCResult Ana (const MomNavigator *mom)
const RegistryDefaultConfig () const
void Config (const Registry &r)

Private Attributes

Int_t fFirstOnly
Int_t fRun
Int_t fFidCrate2
Int_t fFidCrate4

Detailed Description

Id
GetFidModule.h,v 1.2 2012/03/17 18:12:15 evansj Exp

(Document me!)

tagg@minos.phy.tufts.edu

Definition at line 14 of file GetFidModule.h.


Constructor & Destructor Documentation

GetFidModule::GetFidModule (  ) 

Definition at line 25 of file GetFidModule.cxx.

00025                            : 
00026   fFirstOnly(0),
00027   fRun(0),
00028   fFidCrate2(0),
00029   fFidCrate4(0)
00030 {
00031 }

GetFidModule::~GetFidModule (  ) 

Definition at line 34 of file GetFidModule.cxx.

00035 {
00036 }


Member Function Documentation

JobCResult GetFidModule::Ana ( const MomNavigator mom  )  [virtual]

Implement this for read only access to the MomNavigator

Reimplemented from JobCModule.

Definition at line 40 of file GetFidModule.cxx.

References RawVaTimingMonitorBlock::At(), digit(), fFidCrate2, fFidCrate4, Form(), fRun, RawVaTimingMonitorBlock::GetNumberOfDigits(), RawVaTimingMonitorBlock::GetRun(), VldTimeStamp::GetSeconds(), RawVaTimingMonitorBlock::GetSubRun(), RawVaTimingMonitorBlock::GetTimeStamp(), JobCResult::kFailed, Msg::kInfo, JobCResult::kPassed, MAXMSG, outfile, and run().

00041 {
00042   const RawVaTimingMonitorBlock* rvtmb = 
00043     DataUtil::GetRawBlock<RawVaTimingMonitorBlock>(mom);
00044   
00045   if(!rvtmb) {
00046     MAXMSG("GetFidModule",Msg::kInfo,10)
00047       << "RawVaTimingMonitorBlock not found." << endl;
00048     return JobCResult::kFailed; // kNoDecision, kFailed, etc.
00049   }
00050 
00051   Double_t secFromEpoch = rvtmb->GetTimeStamp().GetSeconds();
00052   Int_t run = rvtmb->GetRun();
00053   string errorFileName = Form("Errors%d.txt", run);
00054 
00055   Int_t nRvtmbDigits = rvtmb->GetNumberOfDigits();
00056 
00057   cout << "Number of rvtmb digits: " << nRvtmbDigits << endl;
00058   if (nRvtmbDigits > 2){
00059     ofstream errorFile(errorFileName.c_str(),
00060                        ios_base::app | ios_base::out);
00061     errorFile << "Number of rvtmb digits > 2. This't isn't going to end well."
00062               << endl;
00063   }
00064 
00065   Bool_t foundFid2 = false;
00066   Bool_t foundFid4 = false;
00067   Int_t timingFiducialCrate2 = -9999;
00068   Int_t timingFiducialCrate4 = -9999;
00069   
00070   for (Int_t digitCounter = 0;
00071        digitCounter < nRvtmbDigits;
00072        ++digitCounter){
00073     const RawDigit* digit = rvtmb->At(digitCounter);
00074 
00075     cout << "Looking at digit " << digitCounter
00076          << ", which is from crate " << digit->GetChannel().GetCrate()
00077          << " and run " << run
00078          << ", sub-run " << rvtmb->GetSubRun()
00079          << endl;
00080     
00081     if (2 == digit->GetChannel().GetCrate()){
00082       if (foundFid2){
00083         ofstream errorFile(errorFileName.c_str(),
00084                            ios_base::app | ios_base::out);
00085         errorFile << "Crate 2 timing fiducial found more than once."
00086                   << endl;
00087       }
00088       else{
00089         timingFiducialCrate2 = digit->GetTDC();
00090         foundFid2 = true;
00091       }
00092     }
00093     else if (4 == digit->GetChannel().GetCrate()){
00094       if (foundFid4){
00095         ofstream errorFile(errorFileName.c_str(),
00096                            ios_base::app | ios_base::out);
00097         errorFile << "Crate 4 timing fiducial found more than once."
00098                   << endl;
00099       }
00100       else{
00101         timingFiducialCrate4 = digit->GetTDC();
00102         foundFid4 = true;
00103       }
00104     }
00105     else{
00106         ofstream errorFile(errorFileName.c_str(),
00107                            ios_base::app | ios_base::out);
00108         errorFile << "Timing fiducial found for a crate that isn't 2 or 4."
00109                   << endl;
00110     }
00111   }//End loop over raw digits
00112 
00113 
00114   Bool_t writeOutFid2 = false;
00115   Bool_t writeOutFid4 = false;
00116   if (run!=fRun){
00117     writeOutFid2 = true; writeOutFid4 = true; fRun = run;
00118   }
00119   if (timingFiducialCrate2!=fFidCrate2){
00120     writeOutFid2 = true; fFidCrate2 = timingFiducialCrate2;
00121   }
00122   if (timingFiducialCrate4!=fFidCrate4){
00123     writeOutFid4 = true; fFidCrate4 = timingFiducialCrate4;
00124   }
00125 
00126   if(writeOutFid2) {
00127     string outFileName = Form("crate2fid%d.txt", run);
00128     ofstream outfile(outFileName.c_str(),ios_base::app | ios_base::out);
00129     outfile.precision(20);
00130     outfile << run << "\t" << timingFiducialCrate2 << "\t" << secFromEpoch << endl;
00131   }
00132   if(writeOutFid4) {
00133     string outFileName = Form("crate4fid%d.txt", run);
00134     ofstream outfile(outFileName.c_str(),ios_base::app | ios_base::out);
00135     outfile.precision(20);
00136     outfile << run << "\t" << timingFiducialCrate4 << "\t" << secFromEpoch << endl;
00137   }
00138 
00139   return JobCResult::kPassed;
00140 }

void GetFidModule::Config ( const Registry r  )  [virtual]

Return the actual configuration. If your module directly pulls its configuration from the fConfig Registry, you don't need to override this. Override if you have local config variables.

Reimplemented from JobCModule.

Definition at line 166 of file GetFidModule.cxx.

References fFirstOnly, and Registry::GetInt().

00167 {
00171   fFirstOnly = r.GetInt("FirstOnly");
00172 }

const Registry & GetFidModule::DefaultConfig (  )  const [virtual]

Get the default configuration registry. This should normally be overridden. One useful idiom is to implement it like:

const Registry& MyModule::DefaultConfig() const { static Registry cfg; // never is destroyed if (cfg.Size()) return cfg; // already filled it // set defaults: cfg.Set("TheAnswer",42); cfg.Set("Units","unknown"); return cfg; }

Reimplemented from JobCModule.

Definition at line 144 of file GetFidModule.cxx.

References JobCModule::GetName(), Registry::LockValues(), Registry::Set(), and Registry::UnLockValues().

00145 {
00149   static Registry r; // Default configuration for module
00150 
00151   // Set name of config
00152   std::string name = this->GetName();
00153   name += ".config.default";
00154   r.SetName(name.c_str());
00155 
00156   // Set values in configuration
00157   r.UnLockValues();
00158   r.Set("FirstOnly", 1);
00159   r.LockValues();
00160 
00161   return r;
00162 }


Member Data Documentation

Int_t GetFidModule::fFidCrate2 [private]

Definition at line 35 of file GetFidModule.h.

Referenced by Ana().

Int_t GetFidModule::fFidCrate4 [private]

Definition at line 36 of file GetFidModule.h.

Referenced by Ana().

Int_t GetFidModule::fFirstOnly [private]

Definition at line 31 of file GetFidModule.h.

Referenced by Config().

Int_t GetFidModule::fRun [private]

Definition at line 34 of file GetFidModule.h.

Referenced by Ana().


The documentation for this class was generated from the following files:
Generated on Tue Jun 18 22:01:04 2013 for loon by  doxygen 1.4.7