| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

MixRootIOCnvSvc.h

Go to the documentation of this file.
00001 #ifndef MixRootIOCnvSvc_H
00002 #define MixRootIOCnvSvc_H
00003 
00011 #include <algorithm>
00012 
00013 //#include "TRandom3.h"
00014 #include "TRandom.h"
00015 
00016 #include "RootIOSvc/RootIOCnvSvc.h"
00017 #include "Mixing/MixHeader.h"
00018 #include "Mixing/IMixingSvc.h"
00019 #include "Context/TimeStamp.h"
00020 #include "Conventions/Detectors.h"
00021 
00022 #include "GaudiKernel/MsgStream.h"
00023 //#include "GaudiKernel/RndmGenerators.h"
00024 
00025 using namespace std;
00026 using namespace DayaBay;
00027 
00028 class  IRndmGenSvc;
00029 class  PerReadoutHeader;
00030 
00031 class MixRootIOCnvSvc : public RootIOCnvSvc, virtual public IMixingSvc
00032 {
00033 public:
00034   MixRootIOCnvSvc(const string& name, ISvcLocator* svc);
00035   virtual ~MixRootIOCnvSvc();
00036 
00037   virtual StatusCode         initialize();
00038   virtual StatusCode         queryInterface(const InterfaceID& riid, void** ppint);
00039   virtual void               setInputFiles( const vector<string>& inputs) 
00040                              { m_defaultInputFilenames = inputs;}
00041 
00042   virtual StatusCode         buildStream();
00043   virtual StatusCode         readin(deque<MixHeader>* value);
00044   virtual MixHeader          fetchMixHeader();
00045   virtual void               print();
00046   virtual long               entries();
00047  
00048 private:
00049   StatusCode                                   updateBuffer();
00050   StatusCode                                   doInit();
00051   double                                       nextTime(double tau);
00052   double                                       flatdis(double maximum);  
00053   void                                         performMixing();
00054 
00055   map<string, vector<string> >                 m_inputSamples;
00056   map<string, RootInputStream*>                m_simROMap;
00057   map<string, map<string, RootInputStream*> >  m_sampleInputStreamMap;
00058 
00059   long                                         m_totalentries;
00060   double                                       m_days;
00061   double                                       m_maximum;
00062   double                                       m_maintau;
00063   double                                       m_lasttime;
00064   TimeStamp                                    m_lastTime;
00065 
00066   //The three ones for sampling
00067   map<string, int>                             m_fileNum;
00068   map<string, int>                             m_fileindex;
00069   map<string, int>                             m_fileEntryNum;
00070 
00071   map<string, int>                             m_fileentries;
00072   map<string, int>                             m_streamentries;
00073   map<string, double>                          m_nod;
00074   map<string, double>                          m_timeTau;
00075 
00076   deque<MixHeader>*                            m_firstBuffer; 
00077   deque<MixHeader>*                            m_secondBuffer; 
00078   deque<MixHeader>*                            m_tesBuffer;
00079 
00080   mutable                                      MsgStream m_log;
00081   //TRandom3                                   m_randomNum;
00082   //unsigned int                                       m_randomSeed;
00083   //IRndmGenSvc*                               m_ranSvc;  
00084   //Rndm::Numbers                              m_exp;
00085   //Rndm::Numbers                              m_uniSample;
00086   //Rndm::Numbers                              m_uniFile;
00087   MixHeader                                    m_earliestHeader;
00088 };
00089 
00090 #endif
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:45:52 2011 for Mixing by doxygen 1.4.7