BOSS 7.1.3
BESIII Offline Software System
Loading...
Searching...
No Matches
EmcCalibConstSvc.cxx
Go to the documentation of this file.
2#include "GaudiKernel/Kernel.h"
3#include "GaudiKernel/IInterface.h"
4#include "GaudiKernel/StatusCode.h"
5#include "GaudiKernel/SvcFactory.h"
6#include "GaudiKernel/MsgStream.h"
7
8#include "GaudiKernel/ISvcLocator.h"
9#include "GaudiKernel/Bootstrap.h"
10
11#include "GaudiKernel/IDataProviderSvc.h"
12#include "GaudiKernel/SmartDataPtr.h"
13#include "GaudiKernel/DataSvc.h"
14#include "GaudiKernel/PropertyMgr.h"
15
19
20#include <vector>
21#include <math.h>
22#include <fstream>
23#include "GaudiKernel/IIncidentSvc.h"
24#include "GaudiKernel/Incident.h"
25#include "GaudiKernel/IIncidentListener.h"
27
29#include "EventModel/Event.h"
31
32
33DECLARE_COMPONENT(EmcCalibConstSvc)
34
35EmcCalibConstSvc::EmcCalibConstSvc( const std::string& name, ISvcLocator* svcloc) :
36 base_class (name, svcloc) {
37 declareProperty("ReadSatuDeadEnDb", m_readSatuDeadEnDb = true);
38
39 for(int i=0;i<6240;i++){
41 m_CrystalDeadEcut[i]=-1;
42 }
43 if (m_readSatuDeadEnDb==true){
44 m_runFrom = 0;
45 m_runTo = 0;
46 m_inFlag=false;
47 }
48 /////////////////////////
49 if (m_readSatuDeadEnDb==false){
50 m_EmaxVersion1=false;
51 m_EmaxVersion2=false;
58
60
61 for(int i=0;i<6240;i++){
70
72 }
73
74
75 int ixtal;
76 double emaxData;
77 int Nixt=0;
78
79 ///for version 1/////////
80 string paraPath = getenv("EMCCALIBCONSTSVCROOT");
81 paraPath += "/share/emax_data.dat"; // version=1
82 ifstream in;
83 in.open(paraPath.c_str());
84 assert(in);
85
86 while (in.peek() != EOF)
87 {
88
89 in >> ixtal>>emaxData;
90
91 m_CrystalEmaxData_1[ixtal]=emaxData;
92 Nixt++;
93 // cout<<"readFile==============="<<emaxData<<endl;
94 }
95
96 in.close();
97 //at the end of version 1/////
98
99 ////version 2-4680data@2020///////////
100 string paraPath2 = getenv("EMCCALIBCONSTSVCROOT");
101 paraPath2 += "/share/emax_data_2.dat"; // version=2
102
103 ifstream in2;
104 in2.open(paraPath2.c_str());
105 assert(in2);
106
107 Nixt=0;
108 while (in2.peek() != EOF)
109 {
110
111 in2 >> ixtal>>emaxData;
112
113 m_CrystalEmaxData_2[ixtal]=emaxData;
114
115 Nixt++;
116 // cout<<"readFile2==============="<<emaxData<<endl;
117 }
118
119 in2.close();
120 //at the end of version 2/////
121
122 ////version 4740data@2021///////////
123 string paraPath4740 = getenv("EMCCALIBCONSTSVCROOT");
124 paraPath4740 += "/share/emax_data_4740.dat"; // version=4740
125
126 ifstream in4740;
127 in4740.open(paraPath4740.c_str());
128 assert(in4740);
129
130 Nixt=0;
131 while (in4740.peek() != EOF)
132 {
133
134 in4740 >> ixtal>>emaxData;
135
136 m_CrystalEmaxData_4740[ixtal]=emaxData;
137
138 Nixt++;
139 // cout<<"readFile4740==============="<<emaxData<<endl;
140 }
141
142 in4740.close();
143 //at the end of version 4740/////
144
145 ////version 4750data@2021///////////
146 string paraPath4750 = getenv("EMCCALIBCONSTSVCROOT");
147 paraPath4750 += "/share/emax_data_4750.dat"; // version=4750
148
149 ifstream in4750;
150 in4750.open(paraPath4750.c_str());
151 assert(in4750);
152
153 Nixt=0;
154 while (in4750.peek() != EOF)
155 {
156
157 in4750 >> ixtal>>emaxData;
158
159 m_CrystalEmaxData_4750[ixtal]=emaxData;
160
161 Nixt++;
162 // cout<<"readFile4750==============="<<emaxData<<endl;
163 }
164
165 in4750.close();
166 //at the end of version 4750/////
167
168 ////version 4780data@2021///////////
169 string paraPath4780 = getenv("EMCCALIBCONSTSVCROOT");
170 paraPath4780 += "/share/emax_data_4780.dat"; // version=4780
171
172 ifstream in4780;
173 in4780.open(paraPath4780.c_str());
174 assert(in4780);
175
176 Nixt=0;
177 while (in4780.peek() != EOF)
178 {
179
180 in4780 >> ixtal>>emaxData;
181
182 m_CrystalEmaxData_4780[ixtal]=emaxData;
183
184 Nixt++;
185 // cout<<"readFile4780==============="<<emaxData<<endl;
186 }
187
188 in4780.close();
189 //at the end of version 4780/////
190
191 ////version 4840data@2021///////////
192 string paraPath4840 = getenv("EMCCALIBCONSTSVCROOT");
193 paraPath4840 += "/share/emax_data_4840.dat"; // version=4840
194
195 ifstream in4840;
196 in4840.open(paraPath4840.c_str());
197 assert(in4840);
198
199 Nixt=0;
200 while (in4840.peek() != EOF)
201 {
202
203 in4840 >> ixtal>>emaxData;
204
205 m_CrystalEmaxData_4840[ixtal]=emaxData;
206
207 Nixt++;
208 // cout<<"readFile4840==============="<<emaxData<<endl;
209 }
210
211 in4840.close();
212 //at the end of version 4840/////
213
214
215 ////version 4914data@2021///////////
216 string paraPath4914 = getenv("EMCCALIBCONSTSVCROOT");
217 paraPath4914 += "/share/emax_data_4914.dat"; // version=4914
218
219 ifstream in4914;
220 in4914.open(paraPath4914.c_str());
221 assert(in4914);
222
223 Nixt=0;
224 while (in4914.peek() != EOF)
225 {
226
227 in4914 >> ixtal>>emaxData;
228
229 m_CrystalEmaxData_4914[ixtal]=emaxData;
230
231 Nixt++;
232 // cout<<"readFile4914==============="<<emaxData<<endl;
233 }
234
235 in4914.close();
236 //at the end of version 4914/////
237
238 ////version 4946data@2021///////////
239 string paraPath4946 = getenv("EMCCALIBCONSTSVCROOT");
240 paraPath4946 += "/share/emax_data_4946.dat"; // version=4946
241
242 ifstream in4946;
243 in4946.open(paraPath4946.c_str());
244 assert(in4946);
245
246 Nixt=0;
247 while (in4946.peek() != EOF)
248 {
249
250 in4946 >> ixtal>>emaxData;
251
252 m_CrystalEmaxData_4946[ixtal]=emaxData;
253
254 Nixt++;
255 // cout<<"readFile4946==============="<<emaxData<<endl;
256 }
257
258 in4946.close();
259 //at the end of version 4946/////
260
261
262 ////read dead channel energy threshould Ecut///////////
263 string paraPath3 = getenv("EMCCALIBCONSTSVCROOT");
264 paraPath3 += "/share/DeadThresholdEcut_2020.conf";
265
266 ifstream in3;
267 in3.open(paraPath3.c_str());
268 assert(in3);
269
270 Nixt=0;
271 double satuEn,Ecut;
272 double DeltaEcut=0.0;
273
274 while (in3.peek() != EOF)
275 {
276
277 in3 >> ixtal>>satuEn>>Ecut;
278 if ((Ecut-satuEn)>DeltaEcut) {
279 m_CrystalDeadEcut_2020[ixtal]=Ecut-DeltaEcut;
280 } else {
281 m_CrystalDeadEcut_2020[ixtal]=Ecut;
282 }
283 Nixt++;
284
285 }
286
287 in3.close();
288
289 } //end of m_readSatuDeadEnDb==false
290
291}
292
296
297//StatusCode EmcCalibConstSvc::queryInterface(const InterfaceID& riid, void** ppvInterface){
298// if( IID_IEmcCalibConstSvc.versionMatch(riid) ){
299// *ppvInterface = static_cast<IEmcCalibConstSvc*> (this);
300// } else{
301// return Service::queryInterface(riid, ppvInterface);
302// }
303// return StatusCode::SUCCESS;
304//}
305
307 MsgStream log(messageService(), name());
308 log << MSG::INFO << "EmcCalibConstSvc::initialize()" << endreq;
309
310 StatusCode sc = Service::initialize();
311 if( sc.isFailure() ) return sc;
312
313
314 IIncidentSvc* incsvc;
315 sc = service("IncidentSvc", incsvc);
316 int priority = 100;
317 if( sc.isSuccess() ){
318 incsvc -> addListener(this, "NewRun", priority);
319 }
320
321 sc = serviceLocator()->service("EventDataSvc", m_eventSvc, true);
322 if (sc .isFailure() ) {
323 log << MSG::ERROR << "Unable to find EventDataSvc " << endreq;
324 return sc;
325 }
326
327 sc = service("CalibDataSvc", m_calDataSvc, true);
328 if( sc == StatusCode::SUCCESS ){
329 log << MSG::INFO << "Retrieve IDataProviderSvc" << endreq;
330 }else{
331 log << MSG::FATAL << "can not get IDataProviderSvc" << endreq;
332 }
333
334 // sc = service("EmcRecGeoSvc", m_emcGeomSvc);
335 // if( sc != StatusCode::SUCCESS ){
336 // log << MSG::ERROR << "can not use EmcRecGeoSvc" << endreq;
337 // }
338
340 m_theEmcStruc->setEmcStruc();
341
342 /////////////////
343 ISvcLocator* svcLocator = Gaudi::svcLocator();
344 sc = svcLocator->service("EmcSatuDeadEnSvc", m_EmcSatuDeadEnSvc);
345
346 //sc = serviceLocator()->service("EmcSatuDeadEnSvc", m_EmcSatuDeadEnSvc,true);
347 if( sc == StatusCode::SUCCESS){
348 //log << MSG::INFO
349 std::cout<<"Retrieve EmcSatuDeadEnSvc" << endl;
350
351
352 }
353 else {
354 log << MSG::FATAL << "can not get EmcSatuDeadEnSvc" << endreq;
355 }
356
357
358
359
360 //Dump();
361 //cout<<"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EmcCalibConstSvc initialize"<<endl;
362 return StatusCode::SUCCESS;
363}
364
366
367 delete m_theEmcStruc;
368
369 MsgStream log(messageService(), name());
370 log << MSG::INFO << "EmcCalibConstSvc::finalize()" << endreq;
371 return StatusCode::SUCCESS;
372
373}
374
375void EmcCalibConstSvc::handle(const Incident& inc){
376 MsgStream log( messageService(), name() );
377 log << MSG::DEBUG << "handle: " << inc.type() << endreq;
378
379 if ( inc.type() == "NewRun" ){
380 log << MSG::DEBUG << "NewRun" << endreq;
381
382 SmartDataPtr<Event::EventHeader> eventHeader(m_eventSvc,"/Event/EventHeader");
383 int run = eventHeader->runNumber();
384
385 log << MSG::DEBUG << "handle: " <<"Run in handle is: "<<run<< endreq;
386
387 if (m_readSatuDeadEnDb==true&&run<0){ //only for MC
388 if (run<0) run = -run;
389
390 if (run>=m_runFrom&&run<=m_runTo) {
391 m_inFlag=true;
392 } else {
393 m_inFlag=false;
394 }
395 if (m_inFlag==false){
396 bool getSatuDead;
397 getSatuDead=m_EmcSatuDeadEnSvc ->getEmcSatuDeadEnSvcInfo();
398 if(!getSatuDead){
399 log << MSG::ERROR << "can not get EmcSatuDeadEnSvc" << endreq;
400 } else {
401 m_runFrom=m_EmcSatuDeadEnSvc -> getRunFrom();
402 m_runTo=m_EmcSatuDeadEnSvc -> getRunTo();
403 ////to read EMC saturation energy and the energy threshold of 'special' dead channel from DataBase///////
404 cout << "current run=" << run<<endl;
405 cout <<"RunFrom="<< m_runFrom<<",RunTo="<< m_runTo<<endl;
406 cout << "in EmcCalibConstSvc open getSatuEnFile()= " << m_EmcSatuDeadEnSvc -> getSatuEnFile()<<endl;
407 cout << "open getDeadEnFile()= " << m_EmcSatuDeadEnSvc -> getDeadEnFile()<<endl;
408 string aEmcSatuEnFile;
409 string aEmcDeadEnFile;
410 aEmcSatuEnFile= m_EmcSatuDeadEnSvc -> getSatuEnFile();
411 aEmcDeadEnFile= m_EmcSatuDeadEnSvc -> getDeadEnFile();
412
413 ifstream inSatuEn;
414 inSatuEn.open(aEmcSatuEnFile.c_str());
415
416 int ixtal;
417 if (inSatuEn.is_open()){
418
419 assert(inSatuEn);
420 double emaxData;
421 while (inSatuEn.peek() != EOF)
422 {
423 inSatuEn >> ixtal>>emaxData;
424 m_CrystalEmaxData[ixtal]=emaxData;
425 }
426 inSatuEn.close();
427
428 } else {
429 std::cout << "EmcCalibConstSvc ERROR::Could not open the file of " <<aEmcSatuEnFile<< endl;
430 exit(1);
431
432 }
433
434 ifstream inDeadEn;
435 inDeadEn.open(aEmcDeadEnFile.c_str());
436
437 if (inDeadEn.is_open()){
438
439 assert(inDeadEn);
440 double satuEn,deadEn;
441 while (inDeadEn.peek() != EOF)
442 {
443 inDeadEn >> ixtal>>satuEn>>deadEn;
444 //using the percent deadEn/satuEn, the deadEcut of the corresponding data are calulated by the emaxData*(deadEn/satuEn),i.e. m_CrystalDeadEcut[ixtal]*m_CrystalEmaxData[ixtal].
445 m_CrystalDeadEcut[ixtal]=deadEn/satuEn;
446 }
447 inDeadEn.close();
448 } else {
449
450 std::cout << "EmcCalibConstSvc ERROR::Could not open the file of " <<aEmcDeadEnFile<< endl;
451 exit(1);
452 }
453
454
455 }
456 //Dump();
457 } // end of m_inFlag==false
458 } //end of m_readSatuDeadEnDb==ture
459
460
461 /////////////////////////////
462
463 if (m_readSatuDeadEnDb==false&&run<0){ //only for MC
464
465 //cout<<"&&&&&&&&&&&&&&:&&&&&&&&&&&&&&&&&&&& EmcCalibConstSvc handle,run="<<run<<endl;
466 if (run<0) run = -run;
467
468
469 log << MSG::DEBUG << "handle: " <<"Run in handle is: "<<run<< endreq;
470 //run <63075: EmaxVersion=1; run>=63075: EmaxVersion=2;
471 cout<< "handle: " <<"Run in handle is: "<<run<<endl;
472
473
474 if (run<63075&& !m_EmaxVersion1) {
476
477 m_EmaxVersion1=true;
478 m_EmaxVersion2=false;
479 m_EmaxVersion4740=false;
480 m_EmaxVersion4750=false;
481 m_EmaxVersion4780=false;
482 m_EmaxVersion4840=false;
483 m_EmaxVersion4914=false;
484 m_EmaxVersion4946=false;
485
486 cout<< "handle: " <<"EmaxVersion="<<"111111111111111"<<endl;
487 }
488
489
490 if (run>=63075&&run<=65207&& !m_EmaxVersion2) { // 2020 topup data~4680
492
493 m_EmaxVersion1=false;
494 m_EmaxVersion2=true;
495 m_EmaxVersion4740=false;
496 m_EmaxVersion4750=false;
497 m_EmaxVersion4780=false;
498 m_EmaxVersion4840=false;
499 m_EmaxVersion4914=false;
500 m_EmaxVersion4946=false;
501 cout<< "handle: " <<"EmaxVersion="<<"emax data from topup data 4680@2020"<<endl;
502 }
503
504
505 if (run>=65208&&run<=65321&& !m_EmaxVersion4740) { // 2021 data~4740
507
508 m_EmaxVersion1=false;
509 m_EmaxVersion2=false;
511 m_EmaxVersion4750=false;
512 m_EmaxVersion4780=false;
513 m_EmaxVersion4840=false;
514 m_EmaxVersion4914=false;
515 m_EmaxVersion4946=false;
516
517 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4740data@2021"<<endl;
518 }
519
520 if (run>=65322&&run<=65494&& !m_EmaxVersion4750) { // 2021 data~4750
522
523 m_EmaxVersion1=false;
524 m_EmaxVersion2=false;
525 m_EmaxVersion4740=false;
527 m_EmaxVersion4780=false;
528 m_EmaxVersion4840=false;
529 m_EmaxVersion4914=false;
530 m_EmaxVersion4946=false;
531
532 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4750data@2021"<<endl;
533 }
534
535 if (run>=65495&&run<=65646&& !m_EmaxVersion4780) { // 2021 data~4780
537
538 m_EmaxVersion1=false;
539 m_EmaxVersion2=false;
540 m_EmaxVersion4740=false;
541 m_EmaxVersion4750=false;
543 m_EmaxVersion4840=false;
544 m_EmaxVersion4914=false;
545 m_EmaxVersion4946=false;
546
547 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4780data@2021"<<endl;
548 }
549
550
551 if (run>=65647&&run<=65866&& !m_EmaxVersion4840) { // 2021 data~4840
553
554 m_EmaxVersion1=false;
555 m_EmaxVersion2=false;
556 m_EmaxVersion4740=false;
557 m_EmaxVersion4750=false;
558 m_EmaxVersion4780=false;
560 m_EmaxVersion4914=false;
561 m_EmaxVersion4946=false;
562
563 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4840data@2021"<<endl;
564 }
565
566 if (run>=65867&&run<=65937&& !m_EmaxVersion4914) { // 2021 data~4914
568
569 m_EmaxVersion1=false;
570 m_EmaxVersion2=false;
571 m_EmaxVersion4740=false;
572 m_EmaxVersion4750=false;
573 m_EmaxVersion4780=false;
574 m_EmaxVersion4840=false;
576 m_EmaxVersion4946=false;
577
578 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4914data@2021"<<endl;
579 }
580
581 if (run>=65938&& !m_EmaxVersion4946) { // 2021 data~4946
583
584 m_EmaxVersion1=false;
585 m_EmaxVersion2=false;
586 m_EmaxVersion4740=false;
587 m_EmaxVersion4750=false;
588 m_EmaxVersion4780=false;
589 m_EmaxVersion4840=false;
590 m_EmaxVersion4914=false;
592
593 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4946data@2021"<<endl;
594 }
595
599 cout<< "handle: " <<"DeadEcutVersion="<<"2020"<<endl;
600 }
601
602 //if(!getCrystalEmaxDataFileInfo()){
603 // log << MSG::ERROR << "can not find the crystal EmaxData file" << endreq;
604 //}
605
606 //Dump();
607 } //end of m_readSatuDeadEnDb==false
608
609
610
611 } //end of NewRun
612
613}
614
615
616
618 {
619 double digiCalibConst = 0.0;
620 MsgStream log(messageService(), name());
621
622 std::string fullPath = "/Calib/EmcCal";
623 SmartDataPtr<CalibData::EmcCalibData> calConst(m_calDataSvc, fullPath);
624 if( ! calConst ){
625 log << MSG::ERROR << "can not access to EmcDigi CalibData via SmartPtr"
626 << endreq;
627 }else {
628 digiCalibConst = calConst->getDigiCalibConst(No);
629 }
630
631 return digiCalibConst;
632}
633
635 {
636 int IxtalNumber = 999999;
637 MsgStream log(messageService(), name());
638
639 std::string fullPath = "/Calib/EmcCal";
640 SmartDataPtr<CalibData::EmcCalibData> calConst(m_calDataSvc, fullPath);
641 if( ! calConst ){
642 log << MSG::ERROR << "can not access to EmcDigi CalibData via SmartPtr"
643 << endreq;
644 }else {
645 IxtalNumber = calConst->getIxtalNumber(No);
646 }
647
648 return IxtalNumber;
649}
650
652 {
653 int digiCalibConstNo = 0;
654 MsgStream log(messageService(), name());
655
656 std::string fullPath = "/Calib/EmcCal";
657 SmartDataPtr<CalibData::EmcCalibData> calConst(m_calDataSvc, fullPath);
658 if( ! calConst ){
659 log << MSG::ERROR << "can not access to EmcDigiNo CalibData via SmartPtr"
660 << endreq;
661 }else {
662 digiCalibConstNo = calConst->getDigiCalibConstNo();
663 }
664
665 return digiCalibConstNo;
666}
667
669 {
670 int IxtalNumberNo = 0;
671 MsgStream log(messageService(), name());
672
673 std::string fullPath = "/Calib/EmcCal";
674 SmartDataPtr<CalibData::EmcCalibData> calConst(m_calDataSvc, fullPath);
675 if( ! calConst ){
676 log << MSG::ERROR << "can not access to EmcDigiNo CalibData via SmartPtr"
677 << endreq;
678 }else {
679 IxtalNumberNo = calConst->getIxtalNumberNo();
680 }
681
682 return IxtalNumberNo;
683}
684
685
686
687int EmcCalibConstSvc::getIndex( unsigned int PartId,
688 unsigned int ThetaIndex,
689 unsigned int PhiIndex) const
690{
691 return m_theEmcStruc->getGeomIndex(PartId, ThetaIndex, PhiIndex);
692}
693
694
695unsigned int EmcCalibConstSvc::getPartID(int Index) const
696{
697 return m_theEmcStruc->getPartId(Index);
698}
699
700unsigned int EmcCalibConstSvc::getThetaIndex( int Index) const
701{
702 return m_theEmcStruc->getTheta(Index);
703}
704
705unsigned int EmcCalibConstSvc::getPhiIndex( int Index) const
706{
707 return m_theEmcStruc->getPhi(Index);
708}
709
710
711
713{
714 return m_CrystalEmaxData[Index];
715}
716
718{
719 //using the percent m_CrystalDeadEcut[ixtal]=deadEn/satuEn, the deadEcut of the corresponding data are calulated by m_CrystalDeadEcut[ixtal]*m_CrystalEmaxData[ixtal].
720 double CrystalDeadEcut;
722 return CrystalDeadEcut;
723}
724
725
727{
728
729 for(int iNo=0;iNo<6;iNo++){
730 cout<<"getDigiCalibConst "<<getDigiCalibConst(iNo)<<endl;
731 }
732 /*
733 cout<<"getDigiCalibConstNo "<<getDigiCalibConstNo()<<endl;
734
735
736 cout<<"ind"<<" "<<"getThetaIndex(ind)"<<" "
737 <<"getPhiIndex(ind)"<<"getPartID"<<endl;
738
739 for(int ind=0; ind<6240;ind++){
740
741 cout<<ind<<" "<<getThetaIndex(ind)<<" "
742 <<getPhiIndex(ind)<<" "<<getPartID(ind)<<endl;
743
744 }
745
746 cout<<"getIndex(0,5,95)="<<getIndex(0,5,95)<<endl;
747 cout<<"getIndex(1,43,119)="<<getIndex(1,43,119)<<endl;
748 cout<<"getIndex(2,5,95)="<<getIndex(2,5,95)<<endl;
749 cout<<"getIndex(0,5,96)="<<getIndex(0,5,96)<<endl;
750 cout<<"getIndex(1,43,120)="<<getIndex(1,43,120)<<endl;
751 cout<<"getIndex(2,5,96)="<<getIndex(2,5,96)<<endl;
752 */
753 for(int i=480;i<600;i++){
754 cout<<i<<"\t"<<getCrystalEmaxData(i) <<"\t"<<getCrystalDeadEcut(i)<<endl;
755 }
756
757
758}
759
760
Index
Definition EvtCyclic3.hh:20
double m_CrystalEmaxData_4740[6240]
EmcCalibConstSvc(const std::string &name, ISvcLocator *svcloc)
double m_CrystalDeadEcut_2020[6240]
void handle(const Incident &)
double m_CrystalEmaxData_2[6240]
virtual StatusCode finalize()
double m_CrystalEmaxData[6240]
void setCrystalDeadEcut(double CrystalDeadEcut[6240])
double m_CrystalEmaxData_4946[6240]
int getIndex(unsigned int PartId, unsigned int ThetaIndex, unsigned int PhiIndex) const
virtual StatusCode initialize()
double m_CrystalEmaxData_1[6240]
int getIxtalNumberNo() const
unsigned int getPartID(int Index) const
double m_CrystalDeadEcut[6240]
void setCrystalEmaxData(double CrystalEmaxData[6240])
int getDigiCalibConstNo() const
double m_CrystalEmaxData_4840[6240]
double m_CrystalEmaxData_4750[6240]
int getIxtalNumber(int No) const
double getCrystalEmaxData(int Index) const
EmcStructure * m_theEmcStruc
unsigned int getPhiIndex(int Index) const
IDataProviderSvc * m_calDataSvc
unsigned int getThetaIndex(int Index) const
double m_CrystalEmaxData_4914[6240]
double m_CrystalEmaxData_4780[6240]
double getDigiCalibConst(int No) const
double getCrystalDeadEcut(int Index) const