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

FarDetDeadChipModule.cxx

Go to the documentation of this file.
00001 #include "FarDetDeadChipModule.h"
00002 
00003 #include "MessageService/MsgService.h"     
00004 #include "MinosObjectMap/MomNavigator.h"   
00005 #include "JobControl/JobCommand.h"         
00006 #include "JobControl/JobCModuleRegistry.h" 
00007 
00008 #include "FarDetDataQualityHandle.h"
00009 #include "FarDetDeadChipHandle.h"
00010 
00011 #include "TDirectory.h"
00012 #include "TString.h"
00013 
00014 CVSID("$Id: FarDetDeadChipModule.cxx,v 1.2 2006/04/21 17:40:11 blake Exp $");
00015 
00016 JOBMODULE(FarDetDeadChipModule,"FarDetDeadChipModule","FarDetDeadChipModule");
00017 
00018 FarDetDeadChipModule::FarDetDeadChipModule() :
00019   fDeadChipFile(0),
00020   fDeadChipTree(0),
00021   fWriteBusyChips(0),
00022   fWriteColdChips(1),
00023   fWriteHotChips(1)
00024 {
00025 
00026 }
00027 
00028 FarDetDeadChipModule::~FarDetDeadChipModule()
00029 {
00030 
00031 }
00032 
00033 void FarDetDeadChipModule::BeginJob()
00034 {
00035   MSG("FarDetDeadChipModule",Msg::kInfo) << " *** FarDetDeadChipModule::BeginJob() *** " << endl;
00036 }
00037 
00038 JobCResult FarDetDeadChipModule::Ana(const MomNavigator *mom)
00039 {
00040   MSG("FarDetDeadChipModule",Msg::kInfo) << " *** FarDetDeadChipModule::Ana() *** " << endl;
00041   
00042   JobCResult result(JobCResult::kPassed);
00043 
00044   CandRecord* candrec = dynamic_cast<CandRecord*>(mom->GetFragment("CandRecord", "PrimaryCandidateRecord"));
00045   if( candrec ){
00046     FarDetDataQualityHandle* fardet = dynamic_cast<FarDetDataQualityHandle*>(candrec->FindCandHandle("FarDetDataQualityHandle"));
00047     if( fardet ){
00048 
00049       if( !fDeadChipFile ){
00050         // TString mystring("./results/fardet.deadchip");
00051         // mystring.Append("."); mystring+=fRun; 
00052         // mystring.Append(".root");
00053         TString mystring("fardet.deadchip.root");
00054         TDirectory* tmpddd = gDirectory;
00055         fDeadChipFile = new TFile(mystring.Data(),"RECREATE");
00056         fDeadChipTree = new TTree("DeadChipTree","DeadChipTree");
00057         fDeadChipTree->SetAutoSave(100);
00058         fDeadChipTree->Branch("date",&date,"date/I");
00059         fDeadChipTree->Branch("time",&time,"time/I");
00060         fDeadChipTree->Branch("run",&run,"run/I");
00061         fDeadChipTree->Branch("snarl",&snarl,"snarl/I");
00062         fDeadChipTree->Branch("crate",&crate,"crate/I");
00063         fDeadChipTree->Branch("varc",&varc,"varc/I");
00064         fDeadChipTree->Branch("vmm",&vmm,"vmm/I");
00065         fDeadChipTree->Branch("vaadc",&vaadc,"vaadc/I");
00066         fDeadChipTree->Branch("vachip",&vachip,"vachip/I");
00067         fDeadChipTree->Branch("plane",&plane,"plane/I");
00068         fDeadChipTree->Branch("shld",&shld,"shld/I");
00069         fDeadChipTree->Branch("nanosec",&nanosec,"nanosec/I");
00070         fDeadChipTree->Branch("status",&status,"status/I");
00071         gDirectory = tmpddd;
00072       }
00073 
00074 
00075       date=fardet->GetDate();
00076       time=fardet->GetTime();
00077       run=fardet->GetRun();
00078       snarl=fardet->GetSnarl();
00079 
00080       TIter chipitr(fardet->GetDaughterIterator());
00081       while(FarDetDeadChipHandle* deadchip = dynamic_cast<FarDetDeadChipHandle*>(chipitr())){
00082         crate=deadchip->GetCrate();
00083         varc=deadchip->GetVarc();
00084         vmm=deadchip->GetVmm();
00085         vaadc=deadchip->GetVaadc();
00086         vachip=deadchip->GetVaChip();
00087         plane=deadchip->GetPlane();
00088         shld=deadchip->GetShld();
00089         nanosec=deadchip->GetNanosec()-fardet->GetNanosec();
00090         status=0;
00091 
00092         if( fWriteBusyChips && deadchip->GetVaChipStatus()==VaChip::kBusy ){
00093           status=2;
00094           TDirectory* tmpddd = gDirectory;
00095           fDeadChipFile->cd();
00096           fDeadChipTree->Fill();
00097           gDirectory = tmpddd;
00098         }
00099 
00100         if( fWriteColdChips && deadchip->GetVaChipStatus()==VaChip::kCold ){
00101           status=4;
00102           TDirectory* tmpddd = gDirectory;
00103           fDeadChipFile->cd();
00104           fDeadChipTree->Fill();
00105           gDirectory = tmpddd;
00106         }
00107 
00108         if( fWriteHotChips && deadchip->GetVaChipStatus()==VaChip::kHot ){
00109           status=5;
00110           TDirectory* tmpddd = gDirectory;
00111           fDeadChipFile->cd();
00112           fDeadChipTree->Fill();
00113           gDirectory = tmpddd;
00114         }
00115 
00116       }
00117 
00118     }
00119   }
00120 
00121   return result;
00122 
00123 }
00124 
00125 const Registry& FarDetDeadChipModule::DefaultConfig() const
00126 {
00127   MSG("FarDetDeadChipModule",Msg::kInfo) << " *** FarDetDeadChipModule::DefaultConfig() *** " << endl;
00128 
00129   static Registry r;
00130   r.SetName("FarDetDeadChipModule.config.default");
00131   r.UnLockValues();
00132   r.Set("WriteBusyChips",fWriteBusyChips);
00133   r.Set("WriteColdChips",fWriteColdChips);
00134   r.Set("WriteHotChips",fWriteHotChips);
00135   r.LockValues();
00136 
00137   return r;
00138 }
00139                                  
00140 void FarDetDeadChipModule::Config(const Registry &r)
00141 {
00142   MSG("FarDetDeadChipModule",Msg::kInfo) << " *** FarDetDeadChipModule::Config() *** " << endl;
00143                     
00144   Int_t tmpint;
00145                          
00146   if(r.Get("WriteBusyChips",tmpint)) fWriteBusyChips = tmpint;
00147   if(r.Get("WriteColdChips",tmpint)) fWriteColdChips = tmpint;
00148   if(r.Get("WriteHotChips",tmpint)) fWriteHotChips = tmpint;
00149 
00150   MSG("FarDetDeadChipModule",Msg::kInfo)
00151     << "  configuration: " << endl
00152     << "     WriteBusyChips=" << fWriteBusyChips << endl
00153     << "     WriteColdChips=" << fWriteColdChips << endl
00154     << "     WriteHotChips=" << fWriteHotChips << endl;
00155 
00156   return;
00157 }
00158 
00159 
00160 void FarDetDeadChipModule::EndJob()
00161 {
00162   MSG("FarDetDeadChipModule",Msg::kInfo) << " *** FarDetDeadChipModule::EndJob() *** " << endl;
00163 
00164   if(fDeadChipFile){
00165     MSG("FarDetDeadChipModule",Msg::kDebug) << " *** saving DEAD CHIP INFO to file *** " << endl;
00166     TDirectory* tmpddd = gDirectory;
00167     fDeadChipFile->cd();
00168     fDeadChipTree->Write();
00169     fDeadChipFile->Close();
00170     gDirectory = tmpddd;
00171     MSG("FarDetDeadChipModule",Msg::kDebug) << "    ... data saved to file " << endl;
00172   }
00173 
00174 }

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