BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
DedxCurSvc Class Reference

#include <DedxCurSvc.h>

Inheritance diagram for DedxCurSvc:

Public Member Functions

 DedxCurSvc (const std::string &name, ISvcLocator *svcloc)
 ~DedxCurSvc ()
virtual StatusCode initialize ()
virtual StatusCode finalize ()
void handle (const Incident &)
void getDedxCurveInfo ()
const double getCurve (int i)
const double getSigma (int i)
const int getCurveSize ()
const int getSigmaSize ()

Detailed Description

Definition at line 15 of file DedxCurSvc.h.

Constructor & Destructor Documentation

◆ DedxCurSvc()

DedxCurSvc::DedxCurSvc ( const std::string & name,
ISvcLocator * svcloc )

Definition at line 33 of file DedxCurSvc.cxx.

34 : base_class( name, svcloc ) {
35 declareProperty( "BossRelease", m_bossRelease = "default" );
36 declareProperty( "BossVer", m_sftver = "default" );
37 declareProperty( "ParVer", m_calParVer = "default" );
38 declareProperty( "DbStatus", m_dbStatus = "OK" );
39 declareProperty( "Type", m_type = "default" );
40}

Referenced by DedxCurSvc().

◆ ~DedxCurSvc()

DedxCurSvc::~DedxCurSvc ( )

Definition at line 95 of file DedxCurSvc.cxx.

95{}

Member Function Documentation

◆ finalize()

StatusCode DedxCurSvc::finalize ( )
virtual

Definition at line 89 of file DedxCurSvc.cxx.

89 {
90 MsgStream log( msgSvc(), name() );
91 log << MSG::INFO << name() << ": End of Run" << endmsg;
92 return StatusCode::SUCCESS;
93}
IMessageSvc * msgSvc()

◆ getCurve()

const double DedxCurSvc::getCurve ( int i)
inline

Definition at line 28 of file DedxCurSvc.h.

28{ return m_curve[i]; }

◆ getCurveSize()

const int DedxCurSvc::getCurveSize ( )
inline

Definition at line 30 of file DedxCurSvc.h.

30{ return m_curve_size; }

◆ getDedxCurveInfo()

void DedxCurSvc::getDedxCurveInfo ( )

Definition at line 111 of file DedxCurSvc.cxx.

111 {
112 MsgStream log( msgSvc(), name() );
113 SmartDataPtr<Event::EventHeader> eventHeader( m_eventSvc, "/Event/EventHeader" );
114 int run = eventHeader->runNumber();
115 if ( run < 0 )
116 {
117 log << MSG::INFO << "This data is the MC sample with the Run Number: " << run << endmsg;
118 if ( m_type == "Sim" )
119 {
120 run = -run;
121 log << MSG::INFO << "Reverse the sign of Run Number" << endmsg;
122 }
123 }
124 // unsigned long *lengths;
125 MYSQL_RES* res_set;
126 MYSQL_ROW row;
127 char stmt1[400];
128
129 std::string sftver;
130
131 if ( m_sftver == "default" && m_bossRelease == "default" )
132 {
133 log << MSG::FATAL << " BossRelease and BossVer for DedxCurve not set!" << endmsg;
134 exit( 1 );
135 }
136
137 if ( ( run < m_runFromMax || run > m_runToMin ) )
138 {
139 if ( m_sftver == "default" )
140 {
141 sprintf( stmt1,
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;
146 DatabaseRecordVector rest;
147 int row_no = m_dbsvc->query( "offlinedb", stmt1, rest );
148 if ( row_no == 0 )
149 {
150 log << MSG::FATAL << "can not find result for DedxCur with: " << stmt1 << endmsg;
151 exit( 1 );
152 }
153 if ( row_no > 1 )
154 {
155 log << MSG::FATAL << "find more than 1 results for DedxCur with: " << stmt1 << endmsg;
156 exit( 1 );
157 }
158 DatabaseRecord* recordst = rest[0];
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;
165 }
166 else sftver = m_sftver;
167
168 if ( m_calParVer != "default" )
169 sprintf( stmt1,
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() );
174 else
175 sprintf( stmt1,
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;
181
182 DatabaseRecordVector res;
183 int row_no = m_dbsvc->query( "offlinedb", stmt1, res );
184 if ( row_no == 0 )
185 {
186 log << MSG::FATAL << "can not find result for DedxCur with: " << stmt1 << endmsg;
187 exit( 1 );
188 }
189 if ( row_no > 1 )
190 {
191 log << MSG::FATAL << "find more than 1 results for DedxCur with: " << stmt1 << endmsg;
192 exit( 1 );
193 }
194
195 DatabaseRecord* records = res[0];
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 "
200 << records->GetString( "SftVer" )
201 // << " CalVerSft is "<<records->GetString("CalParVer")
202 << " File name is " << records->GetString( "CurveFileName" ) << std::endl;
203 std::cout << "after output DedxCurveService version" << endl;
204
205 if ( m_sftver == "default" )
206 {
207 m_runFromMax = runFrom > m_runFromMax ? runFrom : m_runFromMax;
208 m_runToMin = runTo < m_runToMin ? runTo : m_runToMin;
209 }
210 else
211 {
212 m_runFromMax = runFrom;
213 m_runToMin = runTo;
214 }
215 log << MSG::INFO << "get from DedxCurvePar runFrom: " << runFrom << " runTo: " << runTo
216 << endmsg;
217 log << MSG::INFO << "m_runFromMax: " << m_runFromMax << " m_runToMin: " << m_runToMin
218 << endmsg;
219
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 );
224
225 TTree* curvetree = new TTree();
226 curvetree->Streamer( *buf1 );
227
228 TTree* sigmatree = new TTree();
229 sigmatree->Streamer( *buf2 );
230
231 double curve[50];
232 double sigma[50];
233 int SigmaSize;
234 int CurveSize;
235 curvetree->SetBranchAddress( "curve", curve );
236 curvetree->SetBranchAddress( "CurveSize", &CurveSize );
237 sigmatree->SetBranchAddress( "sigma", sigma );
238 sigmatree->SetBranchAddress( "SigmaSize", &SigmaSize );
239
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 )
244 {
245 log << MSG::ERROR << "CurveSize larger than designed number" << endmsg;
246 exit( 1 );
247 }
248 for ( int i = 0; i < CurveSize; i++ ) { m_curve[i] = curve[i]; }
249
250 sigmatree->GetEntry( 0 );
251 if ( SigmaSize > 50 )
252 {
253 log << MSG::ERROR << "SigmaSize larger than designed number" << endmsg;
254 exit( 1 );
255 }
256 for ( int i = 0; i < SigmaSize; i++ ) { m_sigma[i] = sigma[i]; }
257 m_curve_size = CurveSize;
258 m_sigma_size = SigmaSize;
259 delete curvetree;
260 delete sigmatree;
261 }
262 return;
263}
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)

Referenced by handle().

◆ getSigma()

const double DedxCurSvc::getSigma ( int i)
inline

Definition at line 29 of file DedxCurSvc.h.

29{ return m_sigma[i]; }

◆ getSigmaSize()

const int DedxCurSvc::getSigmaSize ( )
inline

Definition at line 31 of file DedxCurSvc.h.

31{ return m_sigma_size; }

◆ handle()

void DedxCurSvc::handle ( const Incident & inc)

Definition at line 97 of file DedxCurSvc.cxx.

97 {
98 MsgStream log( msgSvc(), name() );
99 log << MSG::DEBUG << "handle: " << inc.type() << endmsg;
100
101 SmartDataPtr<Event::EventHeader> eventHeader( m_eventSvc, "/Event/EventHeader" );
102 int run = eventHeader->runNumber();
103
104 if ( inc.type() == "NewRun" )
105 {
106 log << MSG::DEBUG << "New Run:" << run << endmsg;
108 }
109}
void getDedxCurveInfo()

◆ initialize()

StatusCode DedxCurSvc::initialize ( )
virtual

Definition at line 52 of file DedxCurSvc.cxx.

52 {
53
54 MsgStream log( msgSvc(), name() );
55 log << MSG::INFO << name() << ": Start of run initialisation" << endmsg;
56
57 StatusCode sc = Service::initialize();
58 if ( sc.isFailure() ) return sc;
59
60 IIncidentSvc* incsvc;
61 sc = service( "IncidentSvc", incsvc );
62 int priority = 100;
63 if ( sc.isSuccess() ) { incsvc->addListener( this, "NewRun", priority ); }
64
65 sc = serviceLocator()->service( "DatabaseSvc", m_dbsvc, true );
66 if ( sc.isFailure() )
67 {
68 log << MSG::ERROR << "Unable to find DatabaseSvc " << endmsg;
69 return sc;
70 }
71
72 sc = serviceLocator()->service( "EventDataSvc", m_eventSvc, true );
73 if ( sc.isFailure() )
74 {
75 log << MSG::ERROR << "Unable to find EventDataSvc " << endmsg;
76 return sc;
77 }
78
79 StatusCode scc;
80 log << MSG::INFO << "setProperties()" << endmsg;
81 // scc = setProperties();
82
83 m_runFromMax = 0;
84 m_runToMin = 0;
85
86 return sc;
87}

The documentation for this class was generated from the following files: