/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/RootEventData/RootEventData-00-03-80/src/TDigiEvent.cxx

Go to the documentation of this file.
00001 #include "RootEventData/TDigiEvent.h"
00002 #include <iostream>
00003 #include "TCollection.h"  // Declares TIter
00004 
00005 ClassImp(TDigiEvent)
00006 
00007 // Allocate the TObjArray just once
00008 TObjArray *TDigiEvent::s_staticMdcDigiCol = 0;
00009 TObjArray *TDigiEvent::s_staticEmcDigiCol = 0;
00010 TObjArray *TDigiEvent::s_staticTofDigiCol = 0;
00011 TObjArray *TDigiEvent::s_staticMucDigiCol = 0;
00012 TObjArray *TDigiEvent::s_staticLumiDigiCol = 0;
00013 
00014 
00015 //***************************************************************
00016 TDigiEvent::TDigiEvent() 
00017 {
00018     if (!s_staticMdcDigiCol) {
00019             s_staticMdcDigiCol = new TObjArray();
00020     }
00021     m_mdcDigiCol = s_staticMdcDigiCol;
00022 
00023     if (!s_staticEmcDigiCol ){
00024             s_staticEmcDigiCol = new TObjArray();
00025     }
00026     m_emcDigiCol = s_staticEmcDigiCol;
00027     
00028     if (! s_staticTofDigiCol ){
00029            s_staticTofDigiCol = new TObjArray();
00030      }
00031      m_tofDigiCol = s_staticTofDigiCol;
00032      
00033     if (! s_staticMucDigiCol ){
00034            s_staticMucDigiCol = new TObjArray();
00035      }
00036      m_mucDigiCol = s_staticMucDigiCol;
00037 
00038     if (! s_staticLumiDigiCol ) {
00039        s_staticLumiDigiCol = new TObjArray();
00040     }
00041     m_lumiDigiCol = s_staticLumiDigiCol;
00042 
00043     Clear();
00044     
00045 }
00046 
00047 //*****************************************************************
00048 TDigiEvent::~TDigiEvent() {
00049          
00050   if(m_mdcDigiCol == s_staticMdcDigiCol) s_staticMdcDigiCol = 0;
00051     m_mdcDigiCol->Delete();
00052     delete m_mdcDigiCol;
00053     m_mdcDigiCol = 0;
00054 
00055     if(m_emcDigiCol == s_staticEmcDigiCol) s_staticEmcDigiCol = 0;
00056     m_emcDigiCol->Delete();
00057     delete m_emcDigiCol;
00058     m_emcDigiCol = 0;
00059 
00060     if(m_tofDigiCol == s_staticTofDigiCol ) s_staticTofDigiCol = 0;
00061     m_tofDigiCol->Delete();
00062     delete m_tofDigiCol;
00063     m_tofDigiCol = 0;
00064     
00065     if(m_mucDigiCol == s_staticMucDigiCol ) s_staticMucDigiCol = 0;
00066     m_mucDigiCol->Delete();
00067     delete m_mucDigiCol;
00068     m_mucDigiCol = 0;  
00069 
00070     if ( m_lumiDigiCol == s_staticLumiDigiCol ) s_staticLumiDigiCol = 0;
00071     m_lumiDigiCol->Delete();
00072     delete m_lumiDigiCol;
00073     m_lumiDigiCol = 0;
00074         
00075 }
00076 
00077 //*****************************************************************
00078 void TDigiEvent::initialize(Bool_t fromMc){ 
00079     m_fromMc = fromMc;
00080 }
00081   
00082 //*****************************************************************
00083 void TDigiEvent::Clear(Option_t *option) {
00084   /*
00085     const Int_t nd = 20000;
00086     static Int_t limit = 100;
00087     static Int_t ind=0;
00088     static TMdcDigi* keep[nd];
00089 
00090     
00091     Int_t n = m_mdcDigiCol->GetEntries();
00092     if (n>limit) {
00093       limit=n+10;
00094       if (limit > nd)
00095         std::cout << "!!!Warning: limit for TMdcDigi is greater than " << nd << std::endl;
00096       for (Int_t j=0;j<ind;j++) delete keep[j];
00097       ind = 0;
00098     }
00099     for (Int_t i=0;i<n;i++) keep[ind+i] = (TMdcDigi*)m_mdcDigiCol->At(i);
00100     ind += n;
00101     if (ind > nd-limit) {
00102       for (Int_t j=0;j<ind;j++) delete keep[j];
00103       ind = 0;
00104     }
00105     m_mdcDigiCol->Clear();
00106 */
00107 }
00108 
00109 //*****************************************************************************
00110 void TDigiEvent::Print(Option_t *option) const {
00111     TObject::Print(option);
00112     std::cout.precision(2);
00113     if (m_mdcDigiCol) 
00114       std::cout << "Number of TMdcDigis " << m_mdcDigiCol->GetEntries() << std::endl;
00115     else 
00116       std::cout << "Number of TMdcDigis 0" << std::endl;
00117 }
00118 
00120 void TDigiEvent::addMdcDigi(TMdcDigi *digi) {
00121     m_mdcDigiCol->Add(digi);
00122 }
00123 
00124 const TMdcDigi* TDigiEvent::getMdcDigi(Int_t i) const {
00125     if (Int_t(i) >= m_mdcDigiCol->GetEntries()) 
00126             return 0;
00127     return (TMdcDigi*)m_mdcDigiCol->At(i);
00128 }
00130 void TDigiEvent::addEmcDigi(TEmcDigi * digi) {
00131     m_emcDigiCol->Add(digi);
00132 }
00133 
00134 const TEmcDigi* TDigiEvent::getEmcDigi( Int_t i) const {
00135     if(Int_t(i) >= m_emcDigiCol->GetEntries())
00136            return 0;
00137     return (TEmcDigi*)m_emcDigiCol->At(i);
00138 }
00139 
00141 void  TDigiEvent::addTofDigi(TTofDigi * digi){
00142     m_tofDigiCol->Add(digi);
00143 }
00144 
00145 
00146 const TTofDigi*  TDigiEvent::getTofDigi(Int_t i) const {
00147         if(Int_t(i) >=m_tofDigiCol->GetEntries())
00148                 return 0;
00149         return (TTofDigi*) m_tofDigiCol->At(i);
00150 }
00151 
00153 void  TDigiEvent::addMucDigi(TMucDigi * digi){
00154     m_mucDigiCol->Add(digi);
00155 }
00156 
00157 
00158 const TMucDigi*  TDigiEvent::getMucDigi(Int_t i) const {
00159         if(Int_t(i) >=m_mucDigiCol->GetEntries())
00160                 return 0;
00161         return (TMucDigi*) m_mucDigiCol->At(i);
00162 }
00163 
00165 void TDigiEvent::addLumiDigi(TLumiDigi * digi) {
00166    m_lumiDigiCol->Add(digi);
00167 }
00168 
00169 const TLumiDigi* TDigiEvent::getLumiDigi(Int_t i) const {
00170    if ( i >= m_lumiDigiCol->GetEntries() )
00171       return 0;
00172    return (TLumiDigi*) m_lumiDigiCol->At(i);
00173 }

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