/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/TagFilterSvc/TagFilterSvc-00-00-04/src/TagFilterSvc.cxx

Go to the documentation of this file.
00001 #include "GaudiKernel/IInterface.h"
00002 #include "GaudiKernel/StatusCode.h"
00003 #include "GaudiKernel/SvcFactory.h"
00004 #include "GaudiKernel/MsgStream.h"
00005 #include "GaudiKernel/ISvcLocator.h"
00006 #include "GaudiKernel/SmartDataPtr.h"
00007 #include "GaudiKernel/IDataProviderSvc.h"
00008 #include "GaudiKernel/PropertyMgr.h"
00009 #include "GaudiKernel/SmartIF.h"
00010 #include "GaudiKernel/IAppMgrUI.h"
00011 #include "GaudiKernel/IProperty.h"
00012 
00013 
00014 #include "GaudiKernel/IIncidentSvc.h"
00015 #include "GaudiKernel/Incident.h"
00016 #include "GaudiKernel/IIncidentListener.h"
00017 #include "GaudiKernel/ISvcLocator.h"
00018 #include "GaudiKernel/Bootstrap.h"
00019 
00020 #include "TagFilterSvc/TagFilterSvc.h"
00021 #include <iostream> 
00022 #include <fstream>
00023 #include "TFile.h"
00024 #include "TTree.h"
00025 #include "TFormula.h"
00026 
00027 TagFilterSvc::TagFilterSvc( const string& name, ISvcLocator* svcloc) :
00028   Service (name, svcloc){
00029   // declare properties
00030   declareProperty("Criteria",  m_criteria="");
00031   declareProperty("tagFiles", m_tagFiles);
00032 }
00033 
00034 TagFilterSvc::~TagFilterSvc(){
00035 }
00036 
00037 StatusCode TagFilterSvc::queryInterface(const InterfaceID& riid, void** ppvInterface){
00038      if( IID_ITagFilterSvc.versionMatch(riid) ){
00039           *ppvInterface = static_cast<ITagFilterSvc*> (this);
00040      } else{
00041           return Service::queryInterface(riid, ppvInterface);
00042      }
00043      return StatusCode::SUCCESS;
00044 }
00045 
00046 StatusCode TagFilterSvc::initialize(){
00047   MsgStream log(messageService(), name());
00048   log << MSG::INFO << "TagFilterSvc::initialize()" << endreq;
00049 
00050   StatusCode sc = Service::initialize();
00051   sc = setProperties();
00052   return StatusCode::SUCCESS;
00053 }
00054 
00055 vector<string> TagFilterSvc::getDstFiles()
00056 {
00057   int nFiles = m_tagFiles.size();
00058   std::cout<<"TagFilterSvc, number of tag files: "<<m_tagFiles.size()<<std::endl;
00059   for(int i=0;i<nFiles;i++)
00060   {
00061     TFile* tagFile = new TFile(m_tagFiles[i].c_str());
00062     TTree* fileTree = (TTree*)tagFile->Get("File");
00063     std::string* dstFile = new std::string;
00064     fileTree->SetBranchAddress("fileName",&dstFile);
00065     fileTree->GetEntry(0);
00066     std::cout<<"dstFile: "<<*dstFile<<std::endl;
00067     m_dstFiles.push_back(*dstFile);
00068     delete dstFile;
00069     delete tagFile;
00070   }
00071   return m_dstFiles;
00072 }
00073 
00074 
00075 StatusCode TagFilterSvc::getVEntry(string tagFileName, std::vector<int>& ventry) {
00076   TFormula f("crt",m_criteria.c_str());
00077   TFile* file = new TFile(tagFileName.c_str());
00078   TTree* tree = (TTree*)file->Get("Tag");
00079   int entry=-1;
00080   int runNo=-1;
00081   int eventId=-1;
00082   int totalCharged=-1;
00083   int totalNeutral=-1;
00084   int totalTrks=-1;
00085   tree->SetBranchAddress("entry",&entry);
00086   tree->SetBranchAddress("runNo",&runNo);
00087   tree->SetBranchAddress("eventId",&eventId);
00088   tree->SetBranchAddress("totalCharged",&totalCharged);
00089   tree->SetBranchAddress("totalNeutral",&totalNeutral);
00090   tree->SetBranchAddress("totalTrks",&totalTrks);
00091   for(int j=0;j<tree->GetEntries();j++)
00092   {
00093     tree->GetEntry(j);
00094     f.SetParameter(1,entry);
00095     f.SetParameter(2,runNo);
00096     f.SetParameter(3,eventId);
00097     f.SetParameter(4,totalCharged);
00098     f.SetParameter(5,totalNeutral);
00099     f.SetParameter(6,totalTrks);
00100     if(m_criteria!="")
00101     {
00102       if(f.Eval(0)==1)
00103         ventry.push_back(entry);
00104     }
00105     else
00106       ventry.push_back(entry);
00107   }
00108   delete file;
00109 
00110   return StatusCode::SUCCESS; 
00111 }
00112   
00113 StatusCode TagFilterSvc::finalize(){
00114      MsgStream log(messageService(), name());
00115      log << MSG::INFO << "TagFilterSvc::finalize()" << endreq;
00116     return StatusCode::SUCCESS;
00117 }
00118 
00119 

Generated on Tue Nov 29 23:11:43 2016 for BOSS_7.0.2 by  doxygen 1.4.7