mcr/hdt_read/FillMonFromHdt_MultiRun.C

00001 #include "TH2.h"
00002 #include "TCanvas.h"
00003 #include "TPDF.h"
00004 #include "TFile.h"
00005 #include "TApplication.h"
00006 #include "TTree.h"
00007 #include "TDatime.h"
00008 #include "TLegend.h"
00009 #include "TStyle.h"
00010 
00011 #include "TFndGenInfo.h"
00012 #include "TFndHdt.h"
00013 #include "Gui.h"
00014 
00015 #include "TFile.h"
00016 #include "TTree.h"
00017 
00018 #include "AccessHDT_MultiRun.C"
00019 
00020 class HdtAcc_MultiRunFill: public THdtAccess{
00021 
00022 private:
00023   TFndRun *fRun;
00024 
00025   
00026 
00027 public:
00028   HdtAcc_MultiRunFill();
00029   ~HdtAcc_MultiRunFill();
00030 
00031   void InitProcess();
00032   void FinishProcess();
00033 
00034   void Pre_Run_Operation();
00035   void Post_Run_Operation();
00036 
00037   void UseHdtEvent();
00038 
00039   // --- added for current application
00040   // --- style and displaying
00041 
00042   // ---
00043 
00044   ClassDef(HdtAcc_MultiRunFill,1)
00045     };
00046 
00047 ClassImp(HdtAcc_MultiRunFill)
00048 
00049 //_______________________________
00050 HdtAcc_MultiRunFill::HdtAcc_MultiRunFill()
00051 {
00052  
00053   //  cout << "HdtAcc_MultiRunFill constructor called" << endl;
00054   
00055 }
00056 
00057 //_______________________________
00058 HdtAcc_MultiRunFill::~HdtAcc_MultiRunFill(){
00059   
00060   FinishRun();
00061 }
00062 
00063 //_______________________________
00064 void HdtAcc_MultiRunFill::InitProcess(){
00065 
00066   fRun = new TFndRun("FromHdtProcessor","From Hdt Processor");
00067   fRun->ReadConfigFile();
00068   
00069   TString filenam;
00070   filenam.Form("%s_%d_%d",fRunType.Data(),fFirstRun,fLastRun);
00071   fRun->SetfRunFileName(filenam.Data());
00072   fRun->SetfOnlineFlag(0);
00073   fRun->StartMonitors(); // created in $FND_MON_HISTOS, che non e' definito sul mio pc->wrk
00074   //  fRun->SetfProcessing(kTRUE);
00075   
00076 }
00077 
00078 //_______________________________
00079 void HdtAcc_MultiRunFill::FinishProcess(){
00080 
00081   fRun->WriteMonitors(kTRUE);
00082   fRun->SetHdt(NULL);
00083   delete fRun;
00084 
00085 }
00086 
00087 //_______________________________
00088 void HdtAcc_MultiRunFill::Pre_Run_Operation(){
00089 
00090   cout << "Performing pre-run operation for run " << fCurrentRun << endl;
00091 
00092 }
00093 
00094 //_______________________________
00095 void HdtAcc_MultiRunFill::Post_Run_Operation(){
00096 
00097   cout << "Performing post-run operation for run " << fCurrentRun << endl;
00098 
00099 }
00100 
00101 //_______________________________
00102 void HdtAcc_MultiRunFill::UseHdtEvent(){
00103   
00104   //  cout << "...............UseHdtEvent.................... " << endl;
00105   //  fCurHdtEv->PrintHits();
00106   fRun->SetHdt(fCurHdtEv);
00107   fRun->FillMonitors();
00108 }
00109 
00110 // --- Added methods (used for this application only)
00111 
00112 
00113   //_______________________________________________
00114   //_______________________________________________
00115   //_______________________________________________
00116 void FillMonFromHdt_MultiRun(TString run_type="FINU",Int_t first_run = -1,Int_t last_run = -1,Int_t n_evs_run=-1,Int_t n_evs_tot=-1){
00117   // this is an application of the official method for reading HDT-files
00118   //  (see $FROOTSYS/mcr_included/AccessHDT_MultiRun.C
00119 
00120 
00121   HdtAcc_MultiRunFill *hdt_appl = new HdtAcc_MultiRunFill();
00122   Int_t debug_lev = 0;
00123   //
00124   hdt_appl->SetVerboseLevel(0);
00125   hdt_appl->SetUpdateEvGap(3000);
00126   //
00127   hdt_appl->Init("$MSQL_DB_HOST","$RDT",run_type,first_run,last_run,n_evs_run,n_evs_tot,debug_lev);
00128 
00129   hdt_appl->InitProcess();
00130 
00131   Int_t res_loop =  hdt_appl->RunLoop();
00132   //  if( res_loop != 0 ) return;
00133 
00134   hdt_appl->FinishProcess();  
00135   // --- 
00136   delete hdt_appl; // need to keep histos
00137   
00138 }

Generated on Tue Oct 16 15:40:47 2007 by  doxygen 1.5.2