00001
00002 #include "CalRecon/CalPedCalib.h"
00003
00004 #include "xml/IFile.h"
00005
00006 #include <fstream>
00007
00008
00009 void CalPedCalib::ini()
00010
00011 {
00012 CalADCLogs::ini();
00013
00014 m_fileName = "";
00015 clear();
00016 }
00017
00018 void CalPedCalib::clear()
00019
00020 {
00021 CalADCLogs::clear();
00022 for (int iside = 0 ; iside < CALNSIDES; iside++) {
00023 for (int irange = 0; irange < CALNRANGES ; irange++)
00024 m_gain[iside][irange] = 0.;
00025 }
00026 }
00027
00028 void CalPedCalib::make()
00029
00030 {
00031 xml::IFile::extractEnvVar(&m_fileName);
00032 std::cout << " Calorimeter pedestals file : "+m_fileName << std::endl;
00033 if (m_fileName == "") return;
00034
00035 std::ifstream file ( m_fileName.c_str() );
00036 std::string name = "";
00037 while(!file.eof()) {
00038 file >> name;
00039 if (name == "gain") readGain(file);
00040 if (name == "ped") readPedestal(file);
00041 }
00042 file.close();
00043 }
00044
00045
00046 void CalPedCalib::readGain(std::istream& file)
00047
00048 {
00049 double gain = 0;
00050
00051 int idLog = 0;
00052 int ilayer = 0;
00053 int iview = 0;
00054 int icolumn = 0;
00055
00056 file >> idLog;
00057 file >> ilayer;
00058 file >> iview;
00059 file >> icolumn;
00060
00061 file >> gain;
00062 setPosGain(CalBase::LEX, gain);
00063 file >> gain;
00064 setPosGain(CalBase::LE, gain);
00065 file >> gain;
00066 setPosGain(CalBase::HEX, gain);
00067 file >> gain;
00068 setPosGain(CalBase::HE, gain);
00069
00070 file >> gain;
00071 setNegGain(CalBase::LEX, gain);
00072 file >> gain;
00073 setNegGain(CalBase::LE, gain);
00074 file >> gain;
00075 setNegGain(CalBase::HEX, gain);
00076 file >> gain;
00077 setNegGain(CalBase::HE, gain);
00078 }
00079
00080
00081 void CalPedCalib::readPedestal(std::istream& file)
00082
00083 {
00084 int idLog = 0;
00085 int ilayer = 0;
00086 int iview = 0;
00087 int icolumn = 0;
00088
00089 file >> idLog;
00090 file >> ilayer;
00091 file >> iview;
00092 file >> icolumn;
00093
00094
00095
00096
00097
00098
00099
00100 CalADCLog* log = getLogID(CalLogID::ID(ilayer,CalDetGeo::makeAxis(iview),icolumn));
00101
00102 double pedLEX;
00103 double pedLE;
00104 double pedHEX;
00105 double pedHE;
00106
00107 pedLEX = 0;
00108 pedLE = 0;
00109 pedHEX = 0;
00110 pedHE = 0;
00111
00112 file >> pedLEX;
00113 file >> pedLE;
00114 file >> pedHEX;
00115 file >> pedHE;
00116
00117 log->setPosADC(CalBase::LEX, pedLEX);
00118 log->setPosADC(CalBase::LE, pedLE);
00119 log->setPosADC(CalBase::HEX, pedHEX);
00120 log->setPosADC(CalBase::HE, pedHE);
00121
00122 pedLEX = 0;
00123 pedLE = 0;
00124 pedHEX = 0;
00125 pedHE = 0;
00126
00127 file >> pedLEX;
00128 file >> pedLE;
00129 file >> pedHEX;
00130 file >> pedHE;
00131
00132 log->setNegADC(CalBase::LEX, pedLEX);
00133 log->setNegADC(CalBase::LE, pedLE);
00134 log->setNegADC(CalBase::HEX, pedHEX);
00135 log->setNegADC(CalBase::HE, pedHE);
00136
00137 }
00138
00139
00140
00141
00142
00143
00144
00145