TDataContainer.cxx

Go to the documentation of this file.
00001 #include "TDataContainer.hxx"
00002 
00003 #include <exception>
00004 
00005 
00006 TDataContainer::TDataContainer(const TDataContainer &dataContainer){
00007 
00008   fMidasEventPointer = new TMidasEvent(dataContainer.GetMidasData());
00009   fOwnMidasEventMemory = true;
00010 
00011 }
00012 
00013 TDataContainer::~TDataContainer(){
00014 
00015   if(fOwnMidasEventMemory)
00016     delete fMidasEventPointer;
00017 
00018   for(unsigned int i = 0; i < fEventDataList.size(); i++){
00019     delete fEventDataList[i];
00020   }
00021 
00022 }
00023  
00024 
00025 // Define exception for reset the pointer to MidasEvent when we still own the pointer for
00026 // the previous one.
00027 class TDataContainerBadPointerReset : public std::exception
00028 {
00029   virtual const char* what() const throw(){
00030     return "TDataContainer Exception: trying to reset MidasEventPointer without deleting old memory";
00031   }  
00032 };
00033 
00034 // Define exception for trying to access MidasEvent when it doesn't exist.
00035 class TDataContainerNoValidMidasEvent : public std::exception
00036 {
00037   virtual const char* what() const throw(){
00038     return "TDataContainer Exception: physics event does not have a valid midas event pointer";
00039   }  
00040 };
00041 
00042 
00043 void TDataContainer::CleanupEvent(){
00044 
00045   for(unsigned int i = 0; i < fEventDataList.size(); i++){
00046     delete fEventDataList[i];
00047   }
00048   fEventDataList.clear();
00049 }
00050 
00051 
00052 void TDataContainer::SetMidasEventPointer(TMidasEvent& event){
00053 
00054   // If the MidasPointer is still valid and we own the memory associated with it,
00055   // then we shouldn't be reseting the fMidasEventPointer.
00056   if(fOwnMidasEventMemory && fMidasEventPointer){
00057     throw TDataContainerBadPointerReset();
00058   }
00059 
00060   fMidasEventPointer = &event; // ugly!
00061   fOwnMidasEventMemory = false;
00062 
00063 }
00064 
00065 
00066 TMidasEvent& TDataContainer::GetMidasData() const{
00067 
00068   // Make sure that point is valid.
00069   if(fMidasEventPointer==0){
00070     throw TDataContainerNoValidMidasEvent();
00071   }
00072 
00073   return *fMidasEventPointer;
00074 
00075 }
00076 

Generated on 12 Feb 2016 for ROOT Analyzer by  doxygen 1.6.1