BOSS 7.1.2
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++){
40 m_CrystalEmaxData[i]=0;
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;
52 m_EmaxVersion4740=false;
53 m_EmaxVersion4750=false;
54 m_EmaxVersion4780=false;
55 m_EmaxVersion4840=false;
56 m_EmaxVersion4914=false;
57 m_EmaxVersion4946=false;
58
59 m_DeadEcutVersion2020=false;
60
61 for(int i=0;i<6240;i++){
62 m_CrystalEmaxData_1[i]=0;
63 m_CrystalEmaxData_2[i]=0;
64 m_CrystalEmaxData_4740[i]=0;
65 m_CrystalEmaxData_4750[i]=0;
66 m_CrystalEmaxData_4780[i]=0;
67 m_CrystalEmaxData_4840[i]=0;
68 m_CrystalEmaxData_4914[i]=0;
69 m_CrystalEmaxData_4946[i]=0;
70
71 m_CrystalDeadEcut_2020[i]=-1;
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
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 m_CrystalDeadEcut[ixtal]=deadEn;
445 }
446 inDeadEn.close();
447 } else {
448
449 std::cout << "EmcCalibConstSvc ERROR::Could not open the file of " <<aEmcDeadEnFile<< endl;
450 exit(1);
451 }
452
453
454 }
455 //Dump();
456 } // end of m_inFlag==false
457 } //end of m_readSatuDeadEnDb==ture
458
459
460 /////////////////////////////
461
462 if (m_readSatuDeadEnDb==false&&run<0){ //only for MC
463
464 //cout<<"&&&&&&&&&&&&&&:&&&&&&&&&&&&&&&&&&&& EmcCalibConstSvc handle,run="<<run<<endl;
465 if (run<0) run = -run;
466
467
468 log << MSG::DEBUG << "handle: " <<"Run in handle is: "<<run<< endreq;
469 //run <63075: EmaxVersion=1; run>=63075: EmaxVersion=2;
470 cout<< "handle: " <<"Run in handle is: "<<run<<endl;
471
472
473 if (run<63075&& !m_EmaxVersion1) {
475
476 m_EmaxVersion1=true;
477 m_EmaxVersion2=false;
478 m_EmaxVersion4740=false;
479 m_EmaxVersion4750=false;
480 m_EmaxVersion4780=false;
481 m_EmaxVersion4840=false;
482 m_EmaxVersion4914=false;
483 m_EmaxVersion4946=false;
484
485 cout<< "handle: " <<"EmaxVersion="<<"111111111111111"<<endl;
486 }
487
488
489 if (run>=63075&&run<=65207&& !m_EmaxVersion2) { // 2020 topup data~4680
491
492 m_EmaxVersion1=false;
493 m_EmaxVersion2=true;
494 m_EmaxVersion4740=false;
495 m_EmaxVersion4750=false;
496 m_EmaxVersion4780=false;
497 m_EmaxVersion4840=false;
498 m_EmaxVersion4914=false;
499 m_EmaxVersion4946=false;
500 cout<< "handle: " <<"EmaxVersion="<<"emax data from topup data 4680@2020"<<endl;
501 }
502
503
504 if (run>=65208&&run<=65321&& !m_EmaxVersion4740) { // 2021 data~4740
506
507 m_EmaxVersion1=false;
508 m_EmaxVersion2=false;
510 m_EmaxVersion4750=false;
511 m_EmaxVersion4780=false;
512 m_EmaxVersion4840=false;
513 m_EmaxVersion4914=false;
514 m_EmaxVersion4946=false;
515
516 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4740data@2021"<<endl;
517 }
518
519 if (run>=65322&&run<=65494&& !m_EmaxVersion4750) { // 2021 data~4750
521
522 m_EmaxVersion1=false;
523 m_EmaxVersion2=false;
524 m_EmaxVersion4740=false;
526 m_EmaxVersion4780=false;
527 m_EmaxVersion4840=false;
528 m_EmaxVersion4914=false;
529 m_EmaxVersion4946=false;
530
531 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4750data@2021"<<endl;
532 }
533
534 if (run>=65495&&run<=65646&& !m_EmaxVersion4780) { // 2021 data~4780
536
537 m_EmaxVersion1=false;
538 m_EmaxVersion2=false;
539 m_EmaxVersion4740=false;
540 m_EmaxVersion4750=false;
542 m_EmaxVersion4840=false;
543 m_EmaxVersion4914=false;
544 m_EmaxVersion4946=false;
545
546 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4780data@2021"<<endl;
547 }
548
549
550 if (run>=65647&&run<=65866&& !m_EmaxVersion4840) { // 2021 data~4840
552
553 m_EmaxVersion1=false;
554 m_EmaxVersion2=false;
555 m_EmaxVersion4740=false;
556 m_EmaxVersion4750=false;
557 m_EmaxVersion4780=false;
559 m_EmaxVersion4914=false;
560 m_EmaxVersion4946=false;
561
562 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4840data@2021"<<endl;
563 }
564
565 if (run>=65867&&run<=65937&& !m_EmaxVersion4914) { // 2021 data~4914
567
568 m_EmaxVersion1=false;
569 m_EmaxVersion2=false;
570 m_EmaxVersion4740=false;
571 m_EmaxVersion4750=false;
572 m_EmaxVersion4780=false;
573 m_EmaxVersion4840=false;
575 m_EmaxVersion4946=false;
576
577 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4914data@2021"<<endl;
578 }
579
580 if (run>=65938&& !m_EmaxVersion4946) { // 2021 data~4946
582
583 m_EmaxVersion1=false;
584 m_EmaxVersion2=false;
585 m_EmaxVersion4740=false;
586 m_EmaxVersion4750=false;
587 m_EmaxVersion4780=false;
588 m_EmaxVersion4840=false;
589 m_EmaxVersion4914=false;
591
592 cout<< "handle: " <<"EmaxVersion="<<"emax data from 4946data@2021"<<endl;
593 }
594
598 cout<< "handle: " <<"DeadEcutVersion="<<"2020"<<endl;
599 }
600
601 //if(!getCrystalEmaxDataFileInfo()){
602 // log << MSG::ERROR << "can not find the crystal EmaxData file" << endreq;
603 //}
604
605 //Dump();
606 } //end of m_readSatuDeadEnDb==false
607
608
609
610 } //end of NewRun
611
612}
613
614
615
617 {
618 double digiCalibConst = 0.0;
619 MsgStream log(messageService(), name());
620
621 std::string fullPath = "/Calib/EmcCal";
622 SmartDataPtr<CalibData::EmcCalibData> calConst(m_calDataSvc, fullPath);
623 if( ! calConst ){
624 log << MSG::ERROR << "can not access to EmcDigi CalibData via SmartPtr"
625 << endreq;
626 }else {
627 digiCalibConst = calConst->getDigiCalibConst(No);
628 }
629
630 return digiCalibConst;
631}
632
634 {
635 int IxtalNumber = 999999;
636 MsgStream log(messageService(), name());
637
638 std::string fullPath = "/Calib/EmcCal";
639 SmartDataPtr<CalibData::EmcCalibData> calConst(m_calDataSvc, fullPath);
640 if( ! calConst ){
641 log << MSG::ERROR << "can not access to EmcDigi CalibData via SmartPtr"
642 << endreq;
643 }else {
644 IxtalNumber = calConst->getIxtalNumber(No);
645 }
646
647 return IxtalNumber;
648}
649
651 {
652 int digiCalibConstNo = 0;
653 MsgStream log(messageService(), name());
654
655 std::string fullPath = "/Calib/EmcCal";
656 SmartDataPtr<CalibData::EmcCalibData> calConst(m_calDataSvc, fullPath);
657 if( ! calConst ){
658 log << MSG::ERROR << "can not access to EmcDigiNo CalibData via SmartPtr"
659 << endreq;
660 }else {
661 digiCalibConstNo = calConst->getDigiCalibConstNo();
662 }
663
664 return digiCalibConstNo;
665}
666
668 {
669 int IxtalNumberNo = 0;
670 MsgStream log(messageService(), name());
671
672 std::string fullPath = "/Calib/EmcCal";
673 SmartDataPtr<CalibData::EmcCalibData> calConst(m_calDataSvc, fullPath);
674 if( ! calConst ){
675 log << MSG::ERROR << "can not access to EmcDigiNo CalibData via SmartPtr"
676 << endreq;
677 }else {
678 IxtalNumberNo = calConst->getIxtalNumberNo();
679 }
680
681 return IxtalNumberNo;
682}
683
684
685
686int EmcCalibConstSvc::getIndex( unsigned int PartId,
687 unsigned int ThetaIndex,
688 unsigned int PhiIndex) const
689{
690 return m_theEmcStruc->getGeomIndex(PartId, ThetaIndex, PhiIndex);
691}
692
693
694unsigned int EmcCalibConstSvc::getPartID(int Index) const
695{
696 return m_theEmcStruc->getPartId(Index);
697}
698
699unsigned int EmcCalibConstSvc::getThetaIndex( int Index) const
700{
701 return m_theEmcStruc->getTheta(Index);
702}
703
704unsigned int EmcCalibConstSvc::getPhiIndex( int Index) const
705{
706 return m_theEmcStruc->getPhi(Index);
707}
708
709
710
712{
713 return m_CrystalEmaxData[Index];
714}
715
717{
718 return m_CrystalDeadEcut[Index];
719}
720
721
723{
724
725 for(int iNo=0;iNo<6;iNo++){
726 cout<<"getDigiCalibConst "<<getDigiCalibConst(iNo)<<endl;
727 }
728 /*
729 cout<<"getDigiCalibConstNo "<<getDigiCalibConstNo()<<endl;
730
731
732 cout<<"ind"<<" "<<"getThetaIndex(ind)"<<" "
733 <<"getPhiIndex(ind)"<<"getPartID"<<endl;
734
735 for(int ind=0; ind<6240;ind++){
736
737 cout<<ind<<" "<<getThetaIndex(ind)<<" "
738 <<getPhiIndex(ind)<<" "<<getPartID(ind)<<endl;
739
740 }
741
742 cout<<"getIndex(0,5,95)="<<getIndex(0,5,95)<<endl;
743 cout<<"getIndex(1,43,119)="<<getIndex(1,43,119)<<endl;
744 cout<<"getIndex(2,5,95)="<<getIndex(2,5,95)<<endl;
745 cout<<"getIndex(0,5,96)="<<getIndex(0,5,96)<<endl;
746 cout<<"getIndex(1,43,120)="<<getIndex(1,43,120)<<endl;
747 cout<<"getIndex(2,5,96)="<<getIndex(2,5,96)<<endl;
748 */
749 for(int i=480;i<600;i++){
750 cout<<i<<"\t"<<getCrystalEmaxData(i) <<"\t"<<getCrystalDeadEcut(i)<<endl;
751 }
752
753
754}
755
756
double m_CrystalEmaxData_4740[6240]
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
int getGeomIndex(unsigned int PartId, unsigned int ThetaIndex, unsigned int PhiIndex) const
unsigned int getPartId(long Index) const
unsigned int getPhi(long Index) const
unsigned int getTheta(long Index) const
virtual bool getEmcSatuDeadEnSvcInfo()=0