CGEM BOSS 6.6.5.f
BESIII Offline Software System
Loading...
Searching...
No Matches
bak_ReadCosmicRayData-00-00-06/src/ReadCosmicRayData.cxx
Go to the documentation of this file.
1/**************************************************************************
2 * CgemBOSS (BESIII Offline Software System) *
3 * *
4 * Author: The BESII Collaboration *
5 * Contributors: Aiqiang Guo, Liangliang Wang *
6 * Date: Dec 10 2018 *
7 * *
8 **************************************************************************/
9/**************************************************************************
10 * Note for 01
11 * Change the reading method for vectorized data
12 * By: Aiqiang Guo
13 * Date: Dec 17 2018
14 **************************************************************************/
15/**************************************************************************
16 * Note for 02
17 * Add CC and mTPC for cluster object
18 * By: Aiqiang Guo
19 * Date: Dec 27 2018
20 **************************************************************************/
21
22// include system lib
23#include <iostream>
24#include <iomanip>
25#include <string>
26#include <cmath>
27
28// Include files
29#include "GaudiKernel/AlgFactory.h"
30#include "GaudiKernel/DataObject.h"
31#include "GaudiKernel/IEventProcessor.h"
32
33#include "GaudiKernel/Incident.h"
34#include "GaudiKernel/IIncidentSvc.h"
35#include "GaudiKernel/Memory.h"
36
37#include <csignal>
38
39// for save digit & cluster
40#include "GaudiKernel/ISvcLocator.h"
41#include "GaudiKernel/IDataProviderSvc.h"
42#include "GaudiKernel/Bootstrap.h"
43#include "GaudiKernel/RegistryEntry.h"
44#include "GaudiKernel/MsgStream.h"
45
46#include "CgemRawEvent/CgemDigi.h"
47#include "CgemRecEvent/RecCgemCluster.h"
48
49#include "Identifier/CgemID.h"
50
51#include "RawEvent/RawDataUtil.h"
52#include "RawEvent/DigiEvent.h"
53#include "ReconEvent/ReconEvent.h"
54#include "EventModel/EventHeader.h"
55#include "GaudiKernel/SmartDataPtr.h"
56
57#include "ReadCosmicRayData/ReadCosmicRayData.h"
58
59//using namespace std;
60ReadCosmicRayData::ReadCosmicRayData(const std::string& name, ISvcLocator* pSvcLocator):
61 Algorithm(name,pSvcLocator){
62
63 declareProperty("Dir_file", Dir_file = "Cosmic_data_01.root");
64 declareProperty("TreeDigi", TreeDigi = "t1");
65 declareProperty("TreeCluster", TreeCluster = "t1");
66 declareProperty("ReadDigi", ReadDigi = true);
67 declareProperty("ReadCluster", ReadCluster = true);
68 declareProperty("DigiSheetID", DigiSheetID = 0);
69 declareProperty("Cut_on_tpc", Cut_on_tpc = false);
70 declareProperty("ClusterSheetID", ClusterSheetID = 0);
71 declareProperty("ClusterRecZ", ClusterRecZ = 0);
72 declareProperty("R_Cluster", R_Cluster = 1.0);
73 declareProperty("Shift_DigitLayerID", Shift_DigitLayerID = 0);
74 declareProperty("Shift_DigitSheetID", Shift_DigitSheetID = 0);
75 declareProperty("Shift_DigitXStripID", Shift_DigitXStripID = 0);
76 declareProperty("Shift_DigitVStripID", Shift_DigitVStripID = 0);
77 declareProperty("Shift_ClusterLayerID", Shift_ClusterLayerID = 0);
78 declareProperty("Shift_ClusterSheetID", Shift_ClusterSheetID = 0);
79 declareProperty("Shift_RecPhi", Shift_RecPhi = 0);
80 declareProperty("Shift_RecV", Shift_RecV = 0);
81 declareProperty("Shift_RecZ", Shift_RecZ = 0);
82 declareProperty("CosmicRayDataSetID", CosmicRayDataSetID = "CR201909");
83
84}
85
87}
88
90 MsgStream log(msgSvc(), name());
91 log << MSG::INFO << "ReadCosmicRayData initialize()" << endreq;
92
93 TString TDir_file(Dir_file);
94 f = new TFile(TDir_file);
95 if(ReadDigi)
96 {
97 TString TTreeDigi(TreeDigi);
98 Tdigi = (TTree*)f->Get(TTreeDigi);
99
100 // Get Cgem digi tree
101 Tdigi->SetBranchAddress("Event", &m_Event_D); // event ID
102 Tdigi->SetBranchAddress("nGemHit", &m_nGemHit); // nof GEM hits
103 // Tdigi->SetBranchAddress("GemHit_nHit", &m_nGemHit); // nof GEM hits it is the same thing as before
104
105 // information on the IDs
106 Tdigi->SetBranchAddress("GemHit_channel", m_channel); // channel no. [0, 63]
107 Tdigi->SetBranchAddress("GemHit_ROC", m_ROC); // ROC no.
108 Tdigi->SetBranchAddress("GemHit_chip", m_chip); // chip no.
109 Tdigi->SetBranchAddress("GemHit_FEB", m_FEB); // FEB no.
110 Tdigi->SetBranchAddress("GemHit_plane", m_plane); // plane
111 Tdigi->SetBranchAddress("GemHit_view", m_view); // view (axial or stereo strips)
112 Tdigi->SetBranchAddress("GemHit_strip", m_strip); // strip no.
113
114 // physical information
115 Tdigi->SetBranchAddress("GemHit_saturated", m_saturated); // is the ASIC channel saturated
116 Tdigi->SetBranchAddress("GemHit_q", m_charge); // charge (fC)
117 Tdigi->SetBranchAddress("GemHit_time", m_time); // time (ns)
118 // Tdigi->SetBranchAddress("GemHit_is_tpc", m_GemHit_is_tpc);
119
120 No_Entries_D = Tdigi->GetEntries();
121 Ind_Entry_D = 0;
122 }
123
124 /**
125 if(ReadCluster)
126 {
127 //Get Cgem cluster tree
128 TString TTreeCluster(TreeCluster);
129 Tcluster = (TTree*)f->Get(TTreeCluster);
130
131 Tcluster->SetBranchAddress("Event", &m_Event_C);
132 Tcluster->SetBranchAddress("GemCluster1d_nCluster", &m_nGemCluster);
133 Tcluster->SetBranchAddress("GemCluster1d_nHit", m_ClusternHit);
134 Tcluster->SetBranchAddress("GemCluster1d_HitIndex", m_ClusterHitIndex);
135 Tcluster->SetBranchAddress("GemCluster1d_plane", m_ClusterLayerID);
136 Tcluster->SetBranchAddress("GemCluster1d_view", m_Flag);
137 Tcluster->SetBranchAddress("GemCluster1d_q", m_EnergyDeposit);
138 Tcluster->SetBranchAddress("GemCluster1d_x", m_Cluster_x);
139 Tcluster->SetBranchAddress("GemCluster1d_z", m_Cluster_z);
140 Tcluster->SetBranchAddress("GemCluster1d_x_cc", m_Cluster_x_cc);
141 Tcluster->SetBranchAddress("GemCluster1d_x_tpc", m_Cluster_x_tpc);
142 Tcluster->SetBranchAddress("GemCluster1d_z_cc", m_Cluster_z_cc);
143 Tcluster->SetBranchAddress("GemCluster1d_z_tpc", m_Cluster_z_tpc);
144 //Tcluster->SetBranchAddress("ClusterSheetID", m_ClusterSheetID);
145 //Tcluster->SetBranchAddress("ClusterFlagB", m_ClusterFlagB);
146 //Tcluster->SetBranchAddress("ClusterFlagE", m_ClusterFlagE);
147 //Tcluster->SetBranchAddress("RecV", m_RecV);
148 //Tcluster->SetBranchAddress("RecZ", m_RecZ);
149
150 No_Entries_C = Tcluster->GetEntries();
151 Ind_Entry_C = 0;
152 }
153 **/
154
155 return StatusCode::SUCCESS;
156}
157
158
159int ReadCosmicRayData::TranslateDigitLayerID(int Input_LayerID)
160{
161 int ShiftValue = Shift_DigitLayerID;
162 return Input_LayerID+ShiftValue;
163}
164
165int ReadCosmicRayData::TranslateDigitSheetID(int Input_SheetID)
166{
167 int ShiftValue = Shift_DigitSheetID;
168 return Input_SheetID+ShiftValue;
169}
170
171int ReadCosmicRayData::TranslateDigitXStripID(int Input_StripID)
172{
173 int ShiftValue = Shift_DigitXStripID;
174 return Input_StripID+ShiftValue;
175}
176
177int ReadCosmicRayData::TranslateDigitVStripID(int Input_StripID)
178{
179 int ShiftValue = Shift_DigitVStripID;
180 return Input_StripID+ShiftValue;
181}
182
183int ReadCosmicRayData::TranslateDigitStripID(int Input_StripID, int StripType)
184{
185 int Output_StripID = -1;
186 if(StripType==0) Output_StripID = TranslateDigitXStripID(Input_StripID);
187 if(StripType==1) Output_StripID = TranslateDigitVStripID(Input_StripID);
188 return Output_StripID;
189}
190
191int ReadCosmicRayData::TranslateDigitStripType(int Input_StripType)
192{
193 return Input_StripType;
194}
195
196int ReadCosmicRayData::TranslateClusterLayerID(int Input_LayerID)
197{
198 int ShiftValue = Shift_ClusterLayerID;
199 return Input_LayerID+ShiftValue;
200}
201
202int ReadCosmicRayData::TranslateClusterSheetID(int Input_SheetID)
203{
204 int ShiftValue = Shift_ClusterSheetID;
205 return Input_SheetID+ShiftValue;
206}
207
208int ReadCosmicRayData::TranslateClusterFlag(int Input_Flag)
209{
210 return Input_Flag-2;
211}
212
213double ReadCosmicRayData::TranslateRecPhi(double Input_RecPhi)
214{
215 double ShiftValue = Shift_RecPhi;
216 return Input_RecPhi+ShiftValue;
217}
218
219double ReadCosmicRayData::TranslateRecV(double Input_RecV)
220{
221 double ShiftValue = Shift_RecV;
222 return Input_RecV+ShiftValue;
223}
224
225double ReadCosmicRayData::TranslateRecZ(double Input_RecZ)
226{
227 double ShiftValue = Shift_RecZ;
228 return Input_RecZ+ShiftValue;
229}
230
231void ReadCosmicRayData::ReadCgemDigits()
232{
233 //cout<<"Start to read the CgemDigits"<<endl;
234 Tdigi->GetEntry(Ind_Entry_D);
235 Ind_Entry_D++;
236}
237
238void ReadCosmicRayData::ReadCgemClusters()
239{
240 //cout<<"Start to read the CgemClusters"<<endl;
241 Tcluster->GetEntry(Ind_Entry_C);
242 Ind_Entry_C++;
243}
244
245bool ReadCosmicRayData::ConvertHitToDigi(int ihit, unsigned int &charge_channel, unsigned int &time_channel)
246{
247
248 if(CosmicRayDataSetID == "CR201909") {
249 // cout << "ReadCosmicRayData::ConvertGRAALToCgemBoss(), converting set " << CosmicRayDataSetID << endl;
250
251 // if(!m_GemHit_is_tpc[i]&&Cut_on_tpc) return false; // ??
252 charge_channel = 1;
253 time_channel = 1;
254
255 // from plane to LayerID
256 if(m_plane[ihit] == 0) m_LayerID[ihit] = 0; // LAYER1
257 else if(m_plane[ihit] == 1) m_LayerID[ihit] = 1; // LAYER2
258 else if(m_plane[ihit] == 2) m_LayerID[ihit] = 1; // LAYER2
259 else {
260 cout<<"ReadCosmicRayData::ConvertHitToDigi: unknown plane "<<m_plane[ihit]<<endl;
261 return false;
262 }
263
264 // from view to StripType
265 if(m_view[ihit] == 2) m_StripType[ihit] = 0; // x strip (phi)
266 else if(m_view[ihit] == 3) m_StripType[ihit] = 1; // v strip (stereo)
267 else {
268 cout<<"ReadCosmicRayData::ConvertHitToDigi: unknown view "<<m_view[ihit]<<endl;
269 return false;
270 }
271
272 // sheet ID/strip ID
273 m_SheetID[ihit] = 0; // LAYER 1, or sheet 1 of layer 2
274 m_StripID[ihit] = m_strip[ihit]-1;// strip ID starts from 0
275 if(m_LayerID[ihit] == 1) { // LAYER 2
276 if(m_StripType[ihit] == 0) // X strip
277 {
278 if(m_strip[ihit] > CgemID::getXSTRIP_MAX(m_LayerID[ihit])) // sheet 2
279 {
280 m_SheetID[ihit] = 1;
281 m_StripID[ihit] = m_strip[ihit] - 1 - CgemID::getXSTRIP_MAX(m_LayerID[ihit]);// strip ID starts from 0
282 }
283 }
284 else if(m_StripType[ihit] == 1)// V strip
285 {
286 if( m_strip[ihit] >= 539 && m_strip[ihit]-1<=CgemID::getVSTRIP_MAX(m_LayerID[ihit]) )
287 {
288 m_StripID[ihit] = m_strip[ihit] - 2; // correction for the wrong mapping at strip 539 in integration
289 }
290 else if( m_strip[ihit]-1 > CgemID::getVSTRIP_MAX(m_LayerID[ihit]) ) // sheet 2
291 {
292 m_SheetID[ihit] = 1;
293 m_StripID[ihit] = m_strip[ihit] - 2 - CgemID::getVSTRIP_MAX(m_LayerID[ihit]);
294 if(m_strip[ihit] >= 1617) m_StripID[ihit] = m_strip[ihit] - 3 - CgemID::getVSTRIP_MAX(m_LayerID[ihit]);// correction for the wrong mapping at strip 1617 in integration
295 }
296 }
297 }
298
299 // cout << "GRAAL " << m_strip[ihit] << " view " << m_view[ihit] << " plane " << m_plane[ihit] << endl;
300 // cout << "CGEMB " << m_StripID[ihit] << " view " << m_StripType[ihit] << " plane " << m_LayerID[ihit] << " sheet " << m_SheetID[ihit] << endl;
301
302
303 return true;
304 }
305
306 cout << "ERROR : ReadCosmicRayData::ConvertGRAALToCgemBoss(), the data set " << CosmicRayDataSetID << " is unknown! " << endl;
307 return false;
308
309}
310
311void ReadCosmicRayData::SaveCgemDigits()
312{
313
314 bool printFlag=false;
315 //cout<<"Start to save CgemDigi"<<endl;
316 // cgem digis collection defined in BOSS
317 CgemDigiCol* aCgemDigiCol = new CgemDigiCol;
318
319 //cout<<"nDigi : "<<m_nGemHit<<endl;
320 if (m_nGemHit > 0)
321 {
322 // push back cgem digits to CgemDigiCol in BOSS
323 for(int i=0;i<m_nGemHit;i++)
324 {
325 unsigned int charge_channel;
326 unsigned int time_channel;
327 bool is_converted = ConvertHitToDigi(i, charge_channel, time_channel);
328 if(!is_converted) {
329 cout<<"ReadCosmicRayData::SaveCgemDigits failed to convert hit "<<i<<" to digi in event "<<m_Event_D<<endl;
330 continue;
331 }
332 const Identifier ident = CgemID::strip_id(
333 TranslateDigitLayerID(m_LayerID[i]),
334 TranslateDigitSheetID(m_SheetID[i]),
335 TranslateDigitStripType(m_StripType[i]),
336 TranslateDigitStripID(m_StripID[i],TranslateDigitStripType(m_StripType[i])));
337
338 /**
339 cout << "graal strip " << m_strip[i]
340 << " graal view " << m_view[i]
341 << " stripid " << m_StripID[i]
342 << " striptype " << m_StripType[i]
343 << " strip " << TranslateDigitStripID(m_StripID[i],TranslateDigitStripType(m_StripType[i]))
344 << " identifier " << CgemID::getIntID(TranslateDigitLayerID(m_LayerID[i]),
345 TranslateDigitSheetID(m_SheetID[i]),
346 TranslateDigitStripType(m_StripType[i]),
347 TranslateDigitStripID(m_StripID[i],TranslateDigitStripType(m_StripType[i]))) << endl;;
348 **/
349
350 int layerid = CgemID::layer(ident);
351 int stripid = CgemID::strip(ident);
352 int sheetid = CgemID::sheet(ident);
353 bool is_xstrip = CgemID::is_xstrip(ident);
354
355 if(printFlag)
356 {
357 cout
358 << " digiID=" << ident.get_value()
359 << " layerID=" << CgemID::layer(ident)
360 << " sheetID=" << CgemID::sheet(ident)
361 << " isXstrip="<< CgemID::is_xstrip(ident)
362 << " stripID=" << CgemID::strip(ident)
363 << " time channel=" << time_channel
364 << " charge channel=" << charge_channel << endl;
365 }
366
367 CgemDigi* aCgemDigi = new CgemDigi(ident, time_channel, charge_channel);
368 aCgemDigi->setTime_ns(m_time[i]);
369 aCgemDigi->setCharge_fc(m_charge[i]);
370 aCgemDigiCol->push_back(aCgemDigi);
371
372 } // End of 'for(int i=0;i<nDigi;i++)'
373 } // End of 'if (nDigi > 0)'
374
375 // register CGEM digits collection to TDS
376 StatusCode scCgem = m_evtSvc->registerObject("/Event/Digi/CgemDigiCol", aCgemDigiCol);
377 if(scCgem!=StatusCode::SUCCESS)
378 {
379 cout << "ERROR : ReadCosmicRayData::SaveCgemDigits(), Could not register CGEM digi collection! " << endl;
380 }
381
382 //retrieve CGEM digits from TDS
383 /**
384 SmartDataPtr<CgemDigiCol> aDigiCol(m_evtSvc,"/Event/Digi/CgemDigiCol");
385 if(!aDigiCol)
386 cout<<"Could not retrieve CGEM digi collection"<<endl;
387
388 CgemDigiCol::iterator iDigiCol;
389 for(iDigiCol=aDigiCol->begin(); iDigiCol!=aDigiCol->end(); iDigiCol++)
390 {
391 const Identifier ident = (*iDigiCol)->identify();
392 cout<<" layer: "<<CgemID::layer(ident)
393 <<" sheet: "<<CgemID::sheet(ident)
394 <<" strip: "<<CgemID::strip(ident)
395 <<" charge: "<<(*iDigiCol)->getCharge_fc()
396 <<" time: "<<(*iDigiCol)->getTime_ns()<<endl;
397 }
398 cout<<"end of retrieve CGEM digi collection"<<endl;
399 **/
400}
401
402
403
404void ReadCosmicRayData::SaveCgemClusters()
405{
406
407 bool printFlag=false;
408 //cout<<"Start to save CgemCluster"<<endl;
409
410 // cgem digis collection defined in BOSS
411 RecCgemClusterCol* aRecCgemClusterCol = new RecCgemClusterCol;
412
413 int nCluster = m_nGemCluster; // the number of Clusters in one event
414 if (nCluster > 0)
415 {
416 // push back cgem clusters to RecCgemClusterCol in BOSS
417 for(int i=0;i<nCluster;i++)
418 {
419 RecCgemCluster* aRecCgemCluster = new RecCgemCluster();
420
421 aRecCgemCluster->setclusterid(i);
422 aRecCgemCluster->setlayerid(TranslateClusterLayerID(m_ClusterLayerID[i]));
423 aRecCgemCluster->setsheetid(ClusterSheetID);
424 aRecCgemCluster->setflag(TranslateClusterFlag(m_Flag[i]));
425 aRecCgemCluster->setenergydeposit(m_EnergyDeposit[i]);
426 if(TranslateClusterFlag(m_Flag[i])==0)
427 {
428 aRecCgemCluster->setrecphi(m_Cluster_x[i]);
429 aRecCgemCluster->setrecphi_CC(m_Cluster_x_cc[i]);
430 aRecCgemCluster->setrecphi_mTPC(m_Cluster_x_tpc[i]);
431 }
432 if(TranslateClusterFlag(m_Flag[i])==1)
433 {
434 aRecCgemCluster->setrecv(m_Cluster_x[i]);
435 aRecCgemCluster->setrecv_CC(m_Cluster_x_cc[i]);
436 aRecCgemCluster->setrecv_mTPC(m_Cluster_x_tpc[i]);
437 }
438 aRecCgemCluster->setRecZ(ClusterRecZ); //currently, no Z information is available
439 aRecCgemCluster->setRecZ_CC(ClusterRecZ);
440 aRecCgemCluster->setRecZ_mTPC(ClusterRecZ);
441 //aRecCgemCluster->setRecZ(m_Cluster_z[i]);
442 //aRecCgemCluster->setRecZ_CC(m_Cluster_z_cc[i]);
443 //aRecCgemCluster->setRecZ_mTPC(m_Cluster_z_tpc[i]);
444 aRecCgemCluster->setclusterflag(m_ClusterHitIndex[i][0],m_ClusterHitIndex[i][m_ClusternHit[i]-1]);
445
446 if(printFlag)
447 {
448 cout
449 << " clusterID=" << aRecCgemCluster->getclusterid()
450 << " clusterlayerID=" << aRecCgemCluster->getlayerid()
451 << " clustersheetID=" << aRecCgemCluster->getsheetid()
452 << " flag=" << aRecCgemCluster->getflag()
453 << " energydeposit=" << aRecCgemCluster->getenergydeposit()
454 << " recphi=" << aRecCgemCluster->getrecphi()
455 << " recv=" << aRecCgemCluster->getrecv()
456 << " recZ=" << aRecCgemCluster->getRecZ()
457 << " clusterflagb=" << aRecCgemCluster->getclusterflagb()
458 << " clusterflage=" << aRecCgemCluster->getclusterflage()<< endl;
459 }
460
461 aRecCgemClusterCol->push_back(aRecCgemCluster);
462
463 }
464 }
465
466
467 // register CGEM clusters collection to TDS
468 StatusCode scCgem = m_evtSvc->registerObject("/Event/Recon/RecCgemClusterCol", aRecCgemClusterCol); //Where should I put the vector?
469 if(scCgem!=StatusCode::SUCCESS)
470 {
471 cout << "ERROR : ReadCosmicRayData:::SaveCgemClusters(), Could not register CGEM cluster collection! " << endl;
472 }
473
474}
475
476
477StatusCode ReadCosmicRayData::execute(){
478
479 MsgStream log(msgSvc(), name());
480 if(ReadDigi&&!ReadCluster) log << MSG::INFO << "ReadCosmicRayData execute(): "<<Ind_Entry_D+1<<"/"<<No_Entries_D<<" events are finished !" << endreq;
481 if(!ReadDigi&&ReadCluster) log << MSG::INFO << "ReadCosmicRayData execute(): "<<Ind_Entry_C+1<<"/"<<No_Entries_C<<" events are finished !" << endreq;
482 if(ReadDigi&&ReadCluster) log << MSG::INFO << "ReadCosmicRayData execute(): "<<Ind_Entry_C+1<<"/"<<No_Entries_C<<" events are finished !" << endreq;
483
484 //interface to event data service
485 ISvcLocator* svcLocator = Gaudi::svcLocator();
486 StatusCode sc=svcLocator->service("EventDataSvc", m_evtSvc);
487 if (sc.isFailure())
488 cout<<"Could not accesss EventDataSvc!"<<endl;
489
490 if(ReadDigi)
491 {
492 DigiEvent* aDigiEvent = new DigiEvent;
493 sc = m_evtSvc->registerObject("/Event/Digi",aDigiEvent);
494 if(sc!=StatusCode::SUCCESS) {
495 cout<< "Could not register DigiEvent" <<endl;
496 }
497
498 ReadCgemDigits();
499 SaveCgemDigits();
500 //cout<<"Ind_Entry_D "<<Ind_Entry_D<<", Max_Ind_Entry_D "<<No_Entries_D<<endl;
501
502 if(Ind_Entry_D==No_Entries_D)
503 {
504 log << MSG::INFO << "scheduling a event processing stop...." << endreq;
505 SmartIF<IEventProcessor> ep(serviceLocator());
506 if (ep) ep->stopRun();
507 }
508
509 }
510 if(ReadCluster)
511 {
512 ReconEvent* aReconEvent = new ReconEvent;
513 sc = m_evtSvc->registerObject("/Event/Recon",aReconEvent);
514 if(sc!=StatusCode::SUCCESS) {
515 cout<< "Could not register ReconEvent" <<endl;
516 }
517
518 ReadCgemClusters();
519 SaveCgemClusters();
520 //cout<<"Ind_Entry_C "<<Ind_Entry_C<<", Max_Ind_Entry_C "<<No_Entries_C<<endl;
521 if(Ind_Entry_C==No_Entries_C)
522 {
523 log << MSG::INFO << "scheduling a event processing stop...." << endreq;
524 SmartIF<IEventProcessor> ep(serviceLocator());
525 if (ep) ep->stopRun();
526 }
527 }
528 return StatusCode::SUCCESS;
529}
530
531StatusCode ReadCosmicRayData::finalize(){
532 MsgStream log(msgSvc(),name());
533 log << MSG::INFO << "ReadCosmicRayData finalize()" << endreq;
534
535 return StatusCode::SUCCESS;
536}
537
538
539
ObjectVector< RecCgemCluster > RecCgemClusterCol
static int strip(const Identifier &id)
static int sheet(const Identifier &id)
static value_type getXSTRIP_MAX(unsigned int f_layer)
static int layer(const Identifier &id)
static value_type getVSTRIP_MAX(unsigned int f_layer)
static bool is_xstrip(const Identifier &id)
static Identifier strip_id(int f_layer, int f_sheet, int f_strip_type, int f_strip)
ReadCosmicRayData(const std::string &name, ISvcLocator *pSvcLocator)