54 MsgStream log(
msgSvc(), name() );
55 log << MSG::INFO << name() <<
": Start of run initialisation" << endmsg;
57 StatusCode sc = Service::initialize();
58 if ( sc.isFailure() )
return sc;
61 sc = service(
"IncidentSvc", incsvc );
63 if ( sc.isSuccess() ) { incsvc->addListener(
this,
"NewRun", priority ); }
65 sc = serviceLocator()->service(
"DatabaseSvc", m_dbsvc,
true );
68 log << MSG::ERROR <<
"Unable to find DatabaseSvc " << endmsg;
72 sc = serviceLocator()->service(
"EventDataSvc", m_eventSvc,
true );
75 log << MSG::ERROR <<
"Unable to find EventDataSvc " << endmsg;
80 log << MSG::INFO <<
"setProperties()" << endmsg;
112 MsgStream log(
msgSvc(), name() );
113 SmartDataPtr<Event::EventHeader> eventHeader( m_eventSvc,
"/Event/EventHeader" );
114 int run = eventHeader->runNumber();
117 log << MSG::INFO <<
"This data is the MC sample with the Run Number: " << run << endmsg;
118 if ( m_type ==
"Sim" )
121 log << MSG::INFO <<
"Reverse the sign of Run Number" << endmsg;
131 if ( m_sftver ==
"default" && m_bossRelease ==
"default" )
133 log << MSG::FATAL <<
" BossRelease and BossVer for DedxCurve not set!" << endmsg;
137 if ( ( run < m_runFromMax || run > m_runToMin ) )
139 if ( m_sftver ==
"default" )
142 "select RunFrom, RunTo, SftVer, ParVer from CalVtxLumVer where BossRelease = "
143 "'%s' and RunFrom <= %d and RunTo >= %d and DataType = 'DedxCurve'",
144 m_bossRelease.c_str(), run, run );
145 std::cout << stmt1 << std::endl;
147 int row_no = m_dbsvc->query(
"offlinedb", stmt1, rest );
150 log << MSG::FATAL <<
"can not find result for DedxCur with: " << stmt1 << endmsg;
155 log << MSG::FATAL <<
"find more than 1 results for DedxCur with: " << stmt1 << endmsg;
159 sftver = recordst->
GetString(
"SftVer" );
160 m_calParVer = recordst->
GetString(
"ParVer" );
161 m_runFromMax = atoi( ( recordst->
GetString(
"RunFrom" ) ).c_str() );
162 m_runToMin = atoi( ( recordst->
GetString(
"RunTo" ) ).c_str() );
163 log << MSG::INFO <<
"get from CalVtxLumVer, m_runFromMax: " << m_runFromMax
164 <<
" m_runToMin: " << m_runToMin << endmsg;
166 else sftver = m_sftver;
168 if ( m_calParVer !=
"default" )
170 "select RunFrom, RunTo, DedxCurvePar,DedxSigmaPar, SftVer, CurveFileName from "
171 "DedxCurvePar where SftVer = '%s' and RunFrom <= %d and RunTo >= %d and "
172 "DedxCurveParVer = %s and Status='%s'",
173 sftver.c_str(), run, run, m_calParVer.c_str(), m_dbStatus.c_str() );
176 "select RunFrom, RunTo, DedxCurvePar,DedxSigmaPar, SftVer, CurveFileName from "
177 "DedxCurvePar where SftVer = '%s' and RunFrom <= %d and RunTo >= %d and "
178 "Status='%s' order by DedxCurveParVer desc",
179 sftver.c_str(), run, run, m_dbStatus.c_str() );
180 std::cout << stmt1 << std::endl;
183 int row_no = m_dbsvc->query(
"offlinedb", stmt1, res );
186 log << MSG::FATAL <<
"can not find result for DedxCur with: " << stmt1 << endmsg;
191 log << MSG::FATAL <<
"find more than 1 results for DedxCur with: " << stmt1 << endmsg;
196 int runFrom = atoi( ( records->
GetString(
"RunFrom" ) ).c_str() );
197 int runTo = atoi( ( records->
GetString(
"RunTo" ) ).c_str() );
198 std::cout <<
"before output DedxCurveService version" << endl;
199 std::cout <<
" SftVer is "
202 <<
" File name is " << records->
GetString(
"CurveFileName" ) << std::endl;
203 std::cout <<
"after output DedxCurveService version" << endl;
205 if ( m_sftver ==
"default" )
207 m_runFromMax = runFrom > m_runFromMax ? runFrom : m_runFromMax;
208 m_runToMin = runTo < m_runToMin ? runTo : m_runToMin;
212 m_runFromMax = runFrom;
215 log << MSG::INFO <<
"get from DedxCurvePar runFrom: " << runFrom <<
" runTo: " << runTo
217 log << MSG::INFO <<
"m_runFromMax: " << m_runFromMax <<
" m_runToMin: " << m_runToMin
220 TBuffer* buf1 =
new TBufferFile( TBuffer::kRead );
221 buf1->SetBuffer( ( *records )[
"DedxCurvePar"], 327680, kFALSE );
222 TBuffer* buf2 =
new TBufferFile( TBuffer::kRead );
223 buf2->SetBuffer( ( *records )[
"DedxSigmaPar"], 327680, kFALSE );
225 TTree* curvetree =
new TTree();
226 curvetree->Streamer( *buf1 );
228 TTree* sigmatree =
new TTree();
229 sigmatree->Streamer( *buf2 );
235 curvetree->SetBranchAddress(
"curve", curve );
236 curvetree->SetBranchAddress(
"CurveSize", &CurveSize );
237 sigmatree->SetBranchAddress(
"sigma", sigma );
238 sigmatree->SetBranchAddress(
"SigmaSize", &SigmaSize );
240 Int_t nentries_curve = (Int_t)curvetree->GetEntries();
241 Int_t nentries_sigma = (Int_t)sigmatree->GetEntries();
242 curvetree->GetEntry( 0 );
243 if ( CurveSize > 50 )
245 log << MSG::ERROR <<
"CurveSize larger than designed number" << endmsg;
248 for (
int i = 0; i < CurveSize; i++ ) { m_curve[i] = curve[i]; }
250 sigmatree->GetEntry( 0 );
251 if ( SigmaSize > 50 )
253 log << MSG::ERROR <<
"SigmaSize larger than designed number" << endmsg;
256 for (
int i = 0; i < SigmaSize; i++ ) { m_sigma[i] = sigma[i]; }
257 m_curve_size = CurveSize;
258 m_sigma_size = SigmaSize;
sprintf(cut, "kal_costheta0_em>-0.93&&kal_costheta0_em<0.93&&kal_pxy0_em>=0.05+%d*0.1&&kal_" "pxy0_em<0.15+%d*0.1&&NGch>=2", j, j)