16 : Algorithm( name, pSvcLocator )
19 , m_alreadyInDB( false )
21 declareProperty(
"dump", m_dump =
false );
22 declareProperty(
"ReadInjSigIntervalFromDB", m_readInjSigIntervalFromDB =
true );
23 declareProperty(
"ReadInjSigTimeFromDB", m_readInjSigTimeFromDB =
true );
24 declareProperty(
"InjSigInterval", m_interval = 60 );
25 declareProperty(
"RunListFile", m_runListFile );
26 m_printInterval =
true;
65 MsgStream log(
msgSvc(), name() );
67 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(),
"/Event/EventHeader" );
70 if ( m_fixer == NULL )
75 m_run = eventHeader->runNumber();
76 if ( std::find( m_runList.begin(), m_runList.end(), m_run ) != m_runList.end() )
78 SmartDataPtr<CalibData::CorrectedETSCal> calConst( m_calibDataSvc,
79 "/Calib/CorrectedETS" );
80 if ( calConst ) { m_alreadyInDB =
true; }
83 log << MSG::FATAL <<
"no result in DB for run " << m_run << endmsg;
84 return StatusCode::FAILURE;
92 if ( m_run != eventHeader->runNumber() )
94 log << MSG::FATAL <<
"crossed runs are not supported" << endmsg;
95 return StatusCode::FAILURE;
98 SmartDataPtr<CalibData::CorrectedETSCal> calConst( m_calibDataSvc,
99 "/Calib/CorrectedETS" );
101 if ( m_count >= calConst->getNpar() ||
102 eventHeader->eventNumber() != calConst->getEvt( m_count ) )
104 log << MSG::FATAL <<
"only 1 input file is supported" << endmsg;
105 return StatusCode::FAILURE;
108 eventHeader->setRawEtsT1( eventHeader->etsT1() );
109 eventHeader->setEtsT1( calConst->getEts1( m_count ) );
110 eventHeader->setEtsT2( calConst->getEts2_pre( m_count ) );
111 eventHeader->setEtsFlag( calConst->getFlag_pre( m_count ) );
115 return StatusCode::SUCCESS;
123 m_fixer->fixT1( eventHeader );
128 if ( m_readInjSigTimeFromDB )
130 int Npar = m_InjSigTimeSvc->getNpar();
131 for (
int i = 0; i < Npar; i++ )
133 int flag = m_InjSigTimeSvc->getFlag( i );
134 ULong64_t
time = m_InjSigTimeSvc->getIST( i );
135 m_vecFlag.push_back(
flag );
136 m_vecTime.push_back(
time );
137 if ( m_dump ) { std::cout <<
"flag: " <<
flag <<
" time: " <<
time << std::endl; }
139 m_readInjSigTimeFromDB =
false;
142 if ( m_readInjSigIntervalFromDB )
144 m_interval = double( m_InjSigIntervalSvc->getTInterval() );
145 m_readInjSigIntervalFromDB =
false;
148 if ( m_printInterval )
150 cout <<
"ResetEts::execute() m_interval = " << m_interval << endl;
151 m_printInterval =
false;
154 unsigned long t1 = eventHeader->etsT1();
155 unsigned long t2 = eventHeader->etsT2();
160 std::cout <<
"raw data" << std::endl
161 <<
"Event: " << eventHeader->eventNumber()
162 <<
" run: " << eventHeader->runNumber() <<
" time: " << eventHeader->time()
163 <<
" ETS_old: " << t1 <<
" IST_old: " << t2 << std::endl;
167 double size = m_interval *
unit;
168 unsigned long ets2_pre = 0;
171 int vec_size = m_vecTime.size();
172 for (
int i = m_curIndex; i < vec_size; i++ )
174 if ( t1 < m_vecTime[i] )
178 flag_pre = m_vecFlag[i];
179 ets2_pre = m_vecTime[i];
186 double delta = ( (double)m_vecTime[i - 1] - (double)t1 ) / size;
188 if ( delta > 0 && t1 != 0 )
190 int num = ceil( delta );
200 ets2_pre = m_vecTime[i - 1];
201 flag_pre = m_vecFlag[i - 1];
207 else if ( t1 >= m_vecTime[vec_size - 1] )
209 flag_pre = m_vecFlag[vec_size - 1];
210 ets2_pre = m_vecTime[vec_size - 1];
216 eventHeader->setEtsT2( ets2_pre );
217 eventHeader->setEtsFlag( flag_pre );
222 std::cout <<
"ReSetETSAlg" << std::endl
223 <<
"Event: " << eventHeader->eventNumber()
224 <<
" run: " << eventHeader->runNumber() <<
" time: " << eventHeader->time()
225 <<
" ETS_new: " << eventHeader->etsT1() <<
" IST_new: " << eventHeader->etsT2()
226 <<
" flag_pre: " << eventHeader->etsFlag() << std::endl;
229 return StatusCode::SUCCESS;