#include <GetFidModule.h>
Inheritance diagram for GetFidModule:

Public Member Functions | |
| GetFidModule () | |
| ~GetFidModule () | |
| JobCResult | Ana (const MomNavigator *mom) |
| const Registry & | DefaultConfig () const |
| void | Config (const Registry &r) |
Private Attributes | |
| Int_t | fFirstOnly |
| Int_t | fRun |
| Int_t | fFidCrate2 |
| Int_t | fFidCrate4 |
(Document me!)
Definition at line 14 of file GetFidModule.h.
| 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 | ( | ) |
| 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 }
Int_t GetFidModule::fFidCrate2 [private] |
Int_t GetFidModule::fFidCrate4 [private] |
Int_t GetFidModule::fFirstOnly [private] |
Int_t GetFidModule::fRun [private] |
1.4.7