00001 #include "CacherEM.h"
00002 #include "MessageService/MsgService.h"
00003
00004 CVSID("$Id: CacherEM.cxx,v 1.2 2004/09/29 00:07:29 cbs Exp $");
00005
00006
00007 CacherEM::CacherEM(){
00008 fn = 0;
00009 fpars = NULL;
00010 fpscache.clear();
00011 frtcache.clear();
00012 fsumE = 0;
00013 }
00014
00015
00016 CacherEM::~CacherEM(){
00017 delete [] fpars;
00018 }
00019
00020
00021 map<Int_t,spef> CacherEM::GetPSMap(){
00022 return fpscache;
00023 }
00024
00025
00026 vector<rte> CacherEM::GetRTMap(){
00027 return frtcache;
00028 }
00029
00030 Double_t CacherEM::GetSumE(){
00031 return fsumE;
00032 }
00033
00034
00035 Double_t *CacherEM::GetPars(){
00036 return fpars;
00037 }
00038
00039
00040 void CacherEM::StorePS(Int_t n,Double_t* pars,map<Int_t,spef> cache)
00041 {
00042 for(Int_t i=0;i<n;i++){
00043 fpars[i] = pars[i];
00044 }
00045 fpscache = cache;
00046 }
00047
00048
00049 void CacherEM::StoreRT(Int_t n,Double_t* pars,vector<rte> cache,Double_t sumE)
00050 {
00051 fn = n;
00052 fpars = new Double_t[n];
00053 for(Int_t i=0;i<n;i++){
00054 fpars[i] = pars[i];
00055 }
00056 frtcache = cache;
00057 fsumE = sumE;
00058 }
00059
00060
00061 Bool_t CacherEM::ValidPS(Double_t* pars){
00062
00063 Bool_t valid = true;
00064 if(fn==0) return false;
00065 for(Int_t i=0;i<fn;i++){
00066 if(pars[i]!=fpars[i]) {
00067 valid = false;
00068 break;
00069 }
00070 }
00071 return valid;
00072 }
00073
00074
00075 Bool_t CacherEM::ValidRT(Double_t* pars){
00076
00077 if(fn==0) return false;
00078 if(pars[0]!=fpars[0]) return false;
00079 return true;
00080
00081 }
00082
00083
00084 void CacherEM::PrintPSMap()
00085 {
00086
00087 map<Int_t,spef>::iterator beg = fpscache.begin();
00088 map<Int_t,spef>::iterator end = fpscache.end();
00089
00090 while(beg!=end){
00091 MSG("FitShowerEM", Msg::kVerbose) << beg->first << " "
00092 << beg->second.en << " "
00093 << beg->second.fl << " "
00094 << endl;
00095 beg++;
00096 }
00097
00098 }
00099
00100
00101 void CacherEM::PrintRTMap()
00102 {
00103
00104 vector<rte>::iterator beg = frtcache.begin();
00105 vector<rte>::iterator end = frtcache.end();
00106
00107 while(beg!=end){
00108 MSG("FitShowerEM", Msg::kVerbose) << beg->t << " "
00109 << beg->r << " "
00110 << beg->e << " "
00111 << beg->f << " "
00112 << endl;
00113 beg++;
00114 }
00115
00116 }
00117
00118
00119 void CacherEM::ClearCache(){
00120
00121 fn = 0;
00122 Double_t *temp = fpars;
00123 fpars = NULL;
00124 delete [] temp;
00125 fpscache.clear();
00126 frtcache.clear();
00127
00128 }
00129
00130
00131 void CacherEM::ClearPSCache(){
00132
00133 fpscache.clear();
00134
00135 }