ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ALFA_PileUpTool Class Reference

#include <ALFA_PileUpTool.h>

Inheritance diagram for ALFA_PileUpTool:
Collaboration diagram for ALFA_PileUpTool:

Public Member Functions

 ALFA_PileUpTool (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual StatusCode initialize () override final
 
virtual StatusCode finalize () override final
 
virtual StatusCode prepareEvent (const EventContext &ctx, const unsigned int nInputEvents) override final
 code taken from ZDC; author (highly) probably John Chapman called before the subevts loop. More...
 
virtual StatusCode processBunchXing (int bunchXing, SubEventIterator bSubEvents, SubEventIterator eSubEvents) override final
 called for each active bunch-crossing to process current SubEvents bunchXing is in ns More...
 
virtual StatusCode mergeEvent (const EventContext &ctx) override final
 return false if not interested in certain xing times (in ns) implemented by default in PileUpToolBase as FirstXing<=bunchXing<=LastXing More...
 
virtual StatusCode processAllSubEvents (const EventContext &ctx) override final
 

Private Member Functions

StatusCode recordCollection (ServiceHandle< StoreGateSvc > &evtStore, const std::string &key_digitCnt)
 
void ALFA_MD_info (const ALFA_HitCollection *)
 
void ALFA_MD_info (TimedHitCollection< ALFA_Hit > &)
 
StatusCode fill_MD_DigitCollection (CLHEP::HepRandomEngine *)
 
StatusCode recordODCollection (ServiceHandle< StoreGateSvc > &evtStore, const std::string &key_ODdigitCnt)
 
void ALFA_OD_info (const ALFA_ODHitCollection *)
 
void ALFA_OD_info (TimedHitCollection< ALFA_ODHit > &)
 
StatusCode fill_OD_DigitCollection (CLHEP::HepRandomEngine *)
 
StatusCode XTalk ()
 

Private Attributes

ServiceHandle< PileUpMergeSvcm_mergeSvc {this, "mergeSvc", "PileUpMergeSvc", ""}
 
ServiceHandle< IAthRNGSvcm_randomSvc {this, "RndmSvc", "AthRNGSvc", ""}
 
Gaudi::Property< std::string > m_randomStreamName {this, "RandomStreamName", "ALFARndEng", ""}
 
double m_E_fib [8][20][64]
 
double m_E_ODfib [8][2][3][30]
 
std::string m_SimHitCollectionName
 
std::string m_SimODHitCollectionName
 
std::string m_key_DigitCollection
 
std::string m_key_ODDigitCollection
 
ALFA_DigitCollectionm_digitCollection
 
ALFA_ODDigitCollectionm_ODdigitCollection
 
double m_sigma0
 
double m_sigma1
 
double m_meanE_dep
 
double m_meanN_photo
 
double m_mean
 
double m_stdDev
 
double m_AmplitudeCut
 
ALFA_HitCollectionm_mergedALFA_HitList
 
ALFA_ODHitCollectionm_mergedALFA_ODHitList
 
double m_cross_talk [8][127]
 
int m_fibres [8][20][64]
 
std::ifstream m_fXTalk
 
std::stringstream m_s
 
std::string m_filename
 

structors and AlgTool implementation

virtual bool toProcess (int bunchXing) const override
 the method this base class helps implementing More...
 
virtual StatusCode processAllSubEvents (const EventContext &ctx)=0
 dummy implementation to allow compilation while all Digitization packages are migrated to use this new interface. More...
 
virtual bool filterPassed () const override
 dummy implementation of passing filter More...
 
virtual void resetFilter () override
 dummy implementation of filter reset More...
 
Gaudi::Property< int > m_firstXing
 
Gaudi::Property< int > m_lastXing
 
Gaudi::Property< int > m_vetoPileUpTruthLinks
 
bool m_filterPassed {true}
 

Detailed Description

Definition at line 36 of file ALFA_PileUpTool.h.

Constructor & Destructor Documentation

◆ ALFA_PileUpTool()

ALFA_PileUpTool::ALFA_PileUpTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 49 of file ALFA_PileUpTool.cxx.

51  :
53  m_SimHitCollectionName ("ALFA_HitCollection"),
54  m_SimODHitCollectionName ("ALFA_ODHitCollection"),
55  m_key_DigitCollection ("ALFA_DigitCollection"),
56  m_key_ODDigitCollection ("ALFA_ODDigitCollection"),
57  m_digitCollection (nullptr),
58  m_ODdigitCollection (nullptr),
59  m_sigma0 (0.1),
60  m_sigma1 (1.0),
61  m_meanE_dep (0.0863), //MeV
62  m_meanN_photo (4.11),
63  m_mean (0.0),
64  m_stdDev (1.0),
65  m_AmplitudeCut (0.24),
66  m_mergedALFA_HitList (nullptr),
67  m_mergedALFA_ODHitList (nullptr)
68 {
69  // Properties
70  declareProperty("SimHitCollection", m_SimHitCollectionName, "Name of the input ALFA Sim Hit Collection of simulated hits");
71  declareProperty("SimODHitCollection", m_SimODHitCollectionName, "Name of the input ALFA Sim OD Hit Collection of simulated hits");
72 
73  declareProperty("ALFA_DigitCollection", m_key_DigitCollection, "Name of the Collection to hold the output from the ALFA main detector digitization");
74  declareProperty("ALFA_ODDigitCollection", m_key_ODDigitCollection, "Name of the Collection to hold the output from the ALFA OD digitization");
75 
76 
77 // declareProperty("fillRootTree", m_fillRootTree);
78 
79 
80  declareProperty("sigma0", m_sigma0);
81  declareProperty("sigma1", m_sigma1);
82  declareProperty("meanE_dep", m_meanE_dep);
83  declareProperty("meanN_photo", m_meanN_photo);
84  declareProperty("mean", m_mean);
85  declareProperty("stdDev", m_stdDev);
86  declareProperty("AmplitudeCut", m_AmplitudeCut);
87 // declareProperty("fillRootTree", m_fillRootTree);
88 }

Member Function Documentation

◆ ALFA_MD_info() [1/2]

void ALFA_PileUpTool::ALFA_MD_info ( const ALFA_HitCollection ALFA_HitCollection)
private

Definition at line 399 of file ALFA_PileUpTool.cxx.

400 {
401 
402 // cleaning
403 
404  for ( int l = 0; l < 8; l++ )
405  {
406  for ( int i = 0; i < 20; i++ )
407  {
408  for ( int j = 0; j < 64; j++ )
409  {
410 
411  m_E_fib[l][i][j] = 0.;
412  m_fibres[l][i][j] = 0;
413 
414 
415  }
416  }
417  }
418 
419 // cleaning end
420 
421  int fiber, plate, sign, station;
422 
425 
426  for (; it != itend; ++it) {
427 
428  station = it->GetStationNumber();
429  plate = it->GetPlateNumber();
430  fiber = it->GetFiberNumber();
431  sign = it->GetSignFiber();
432 
433  ATH_MSG_DEBUG ("station=" << station << ", plate= "<< plate << ", fiber=" << fiber << ", sign=" << sign << ", dep energy=" << it->GetEnergyDeposit());
434 
435  m_E_fib[station-1][2*(plate-1)+(1-sign)/2][fiber-1] += it->GetEnergyDeposit();
436 
437 
438  }
439 }

◆ ALFA_MD_info() [2/2]

void ALFA_PileUpTool::ALFA_MD_info ( TimedHitCollection< ALFA_Hit > &  tHitALFA)
private

Definition at line 355 of file ALFA_PileUpTool.cxx.

356 {
357 
358 // cleaning
359 
360  for ( int l = 0; l < 8; l++ )
361  {
362  for ( int i = 0; i < 20; i++ )
363  {
364  for ( int j = 0; j < 64; j++ )
365  {
366 
367  m_E_fib[l][i][j] = 0.;
368  m_fibres[l][i][j] = 0;
369 
370  }
371  }
372  }
373 
374 // cleaning end
375 
376  int fiber, plate, sign, station;
377 
378  TimedHitCollection<ALFA_Hit> thpc = tHitALFA;
380 
381  while (thpc.nextDetectorElement(i, e)) for (it = i; it != e; ++it) {
382 
383  station = (*it)->GetStationNumber();
384  plate = (*it)->GetPlateNumber();
385  fiber = (*it)->GetFiberNumber();
386  sign = (*it)->GetSignFiber();
387 
388  ATH_MSG_DEBUG ("station=" << station << ", plate= "<< plate << ", fiber=" << fiber << ", sign=" << sign << ", dep energy=" << ((*it)->GetEnergyDeposit()));
389 
390  m_E_fib[station-1][2*(plate-1)+(1-sign)/2][fiber-1] += ((*it)->GetEnergyDeposit());
391 
392  }
393 
394 }

◆ ALFA_OD_info() [1/2]

void ALFA_PileUpTool::ALFA_OD_info ( const ALFA_ODHitCollection ALFA_ODHitCollection)
private

Definition at line 490 of file ALFA_PileUpTool.cxx.

491 {
492 
493  // cleaning
494 
495  for ( int l = 0; l < 8; l++ ){
496  for ( int i = 0; i < 2; i++ ){
497  for ( int j = 0; j < 3; j++ ){
498  for ( int k = 0; k < 30; k++ ){
499 
500  m_E_ODfib[l][i][j][k] = 0.;
501 
502  }
503  }
504  }
505  }
506 
507 // cleaning end
508 
509  int fiber, plate, sign, side, station;
510 
511 
514 
515  for (; it != itend; ++it) {
516 
517 
518  station = it->GetStationNumber();
519  side = it->GetODSide();
520  plate = it->GetPlateNumber();
521  fiber = it->GetFiberNumber();
522  sign = it->GetSignFiber();
523 
524 
525  ATH_MSG_DEBUG ("station=" << station << ", side=" << side << ", plate= "<< plate << ", fiber=" << fiber << ", sign=" << sign << ", dep energy=" << it->GetEnergyDeposit());
526 
527  if (sign==0) m_E_ODfib[station-1][side-1][plate-1][fiber+15] += it->GetEnergyDeposit();
528  else m_E_ODfib[station-1][side-1][plate-1][fiber] += it->GetEnergyDeposit();
529 
530  }
531 }

◆ ALFA_OD_info() [2/2]

void ALFA_PileUpTool::ALFA_OD_info ( TimedHitCollection< ALFA_ODHit > &  tODHitALFA)
private

Definition at line 444 of file ALFA_PileUpTool.cxx.

445 {
446 
447 // cleaning
448 
449  for ( int l = 0; l < 8; l++ ){
450  for ( int i = 0; i < 2; i++ ){
451  for ( int j = 0; j < 3; j++ ){
452  for ( int k = 0; k < 30; k++ ){
453 
454  m_E_ODfib[l][i][j][k] = 0.;
455 
456  }
457  }
458  }
459  }
460 
461 // cleaning end
462 
463  int fiber, plate, sign, side, station;
464 
465 
466  TimedHitCollection<ALFA_ODHit> thpc = tODHitALFA;
468 
469  while (thpc.nextDetectorElement(i, e)) for (it = i; it != e; ++it) {
470 
471  station = (*it)->GetStationNumber();
472  side = (*it)->GetODSide();
473  plate = (*it)->GetPlateNumber();
474  fiber = (*it)->GetFiberNumber();
475  sign = (*it)->GetSignFiber();
476 
477 
478  ATH_MSG_DEBUG ("station=" << station << ", side=" << side << ", plate= "<< plate << ", fiber=" << fiber << ", sign=" << sign << ", dep energy=" << ((*it)->GetEnergyDeposit()));
479 
480  if (sign==0) m_E_ODfib[station-1][side-1][plate-1][fiber+15] += ((*it)->GetEnergyDeposit());
481  else m_E_ODfib[station-1][side-1][plate-1][fiber] += ((*it)->GetEnergyDeposit());
482 
483  }
484 
485 }

◆ fill_MD_DigitCollection()

StatusCode ALFA_PileUpTool::fill_MD_DigitCollection ( CLHEP::HepRandomEngine *  rndEngine)
private

Definition at line 536 of file ALFA_PileUpTool.cxx.

536  {
537 
538  ATH_MSG_DEBUG(" ALFA_PileUpTool::fill_MD_DigitCollection()");
539 
540  double N_photo = 0.;
541  //double N_CTphoto = 0.;
542  //double sigma = 0.;
543  double amplitude = 0.;
544  //double amplitude_CT = 0.;
545 
546 
547  for ( int l = 0; l < 8; l++ )
548  {
549  for ( int i = 0; i < 20; i++ )
550  {
551  for ( int j = 0; j < 64; j++ )
552  {
553 
554  N_photo = CLHEP::RandPoisson::shoot(rndEngine,m_E_fib[l][i][j]*m_meanN_photo/m_meanE_dep);
555 
556  //sigma = m_sigma1 * sqrt(N_photo);
557  //double noise_1 = sigma * CLHEP::RandGaussZiggurat::shoot (rndEngine, m_mean, m_stdDev);
558  //double noise_2 = m_sigma0 * CLHEP::RandGaussZiggurat::shoot (rndEngine, m_mean, m_stdDev);
559 
560  //amplitude = N_photo
561  // + noise_1
562  // + noise_2;
563 
564  amplitude = CLHEP::RandGaussZiggurat::shoot(rndEngine, N_photo, sqrt(pow(m_sigma0,2)+N_photo*pow(m_sigma1,2)));
565 
566  //N_photo_CT = CLHEP::RandPoisson::shoot(rndEngine,0.08*m_E_fib[l][i][j]*m_meanN_photo/m_meanE_dep);
567  //amplitude_CT = CLHEP::RandGaussQ::shoot (rndEngine, N_photo_CT, sqrt(pow(m_sigma0,2)+N_photo_CT*pow(m_sigma1,2)));
568 
569 
570  if (amplitude >= m_AmplitudeCut )
571  {
572  ATH_MSG_DEBUG(" ALFA_Digitization::fillDigitCollection, amplitude " << amplitude);
573  ATH_MSG_DEBUG(" station = " << l << ", plate= " << i << ", fiber=" << j );
575  m_fibres[l][i][j] = m_fibres[l][i][j] + 1;
576  }
577 
578  }
579  }
580  }
581 
582  double rand_fib;
583 
584  for ( int l = 0; l < 8; l++ )
585  {
586  for ( int i = 0; i < 20; i++ )
587  {
588  for ( int j = 0; j < 64; j++ )
589  {
590  if ( m_fibres[l][i][j] > 0 )
591  {
592  for (int f = j+1; f < 64; f++)
593  {
594  rand_fib = CLHEP::RandFlat::shoot(rndEngine,0.,1.);
595 
596  if ( m_fibres[l][i][f] == 0)
597  {
598  if (rand_fib <= m_cross_talk[l][63+f-j])
599  {
601  }
602  }
603  }
604 
605  for (int f = j-1; f > -1; f--)
606  {
607  rand_fib = CLHEP::RandFlat::shoot(rndEngine,0.,1.);
608 
609  if ( m_fibres[l][i][f] == 0)
610  {
611  if (rand_fib <= m_cross_talk[l][63-(j-f)])
612  {
614  }
615  }
616  }
617  }
618  }
619  }
620  }
621  return StatusCode::SUCCESS;
622 
623 }

◆ fill_OD_DigitCollection()

StatusCode ALFA_PileUpTool::fill_OD_DigitCollection ( CLHEP::HepRandomEngine *  rndEngine)
private

Definition at line 628 of file ALFA_PileUpTool.cxx.

628  {
629 
630  ATH_MSG_DEBUG(" ALFA_PileUpTool::fill_OD_DigitCollection ");
631 
632  double N_photo = 0.;
633  double sigma = 0.;
634  double amplitude = 0.;
635 
636  for ( int l = 0; l < 8; l++ )
637  {
638  for ( int i = 0; i < 2; i++ )
639  {
640  for ( int j = 0; j < 3; j++ )
641  {
642  for (int k = 0; k < 30; k++)
643  {
644 
645  N_photo = CLHEP::RandPoisson::shoot(rndEngine,m_E_ODfib[l][i][j][k]*m_meanN_photo/m_meanE_dep);
646  sigma = m_sigma1 * sqrt(N_photo);
647 
648  double noise_1 = sigma * CLHEP::RandGaussZiggurat::shoot (rndEngine, m_mean, m_stdDev);
649  double noise_2 = m_sigma0 * CLHEP::RandGaussZiggurat::shoot (rndEngine, m_mean, m_stdDev);
650 
651 
652  amplitude = N_photo
653  + noise_1
654  + noise_2;
655 
656 
657  if (amplitude >= m_AmplitudeCut )
658  {
659  ATH_MSG_DEBUG(" ALFA_Digitization::fill_OD_DigitCollection, amplitude " << amplitude);
660  ATH_MSG_DEBUG(" station = " << l << ", side = " << i << ", plate = " << j << ", fiber = " << k);
661 
663  }
664 
665 
666  }
667  }
668  }
669  }
670 
671  return StatusCode::SUCCESS;
672 }

◆ filterPassed()

virtual bool PileUpToolBase::filterPassed ( ) const
inlineoverridevirtualinherited

dummy implementation of passing filter

Definition at line 49 of file PileUpToolBase.h.

49 { return m_filterPassed; }

◆ finalize()

StatusCode ALFA_PileUpTool::finalize ( )
finaloverridevirtual

Definition at line 325 of file ALFA_PileUpTool.cxx.

325 { return StatusCode::SUCCESS; }

◆ initialize()

StatusCode ALFA_PileUpTool::initialize ( )
finaloverridevirtual

Reimplemented from PileUpToolBase.

Definition at line 93 of file ALFA_PileUpTool.cxx.

93  {
94 
95  ATH_MSG_DEBUG ("ALFA_digiti initialize() called");
96 
97  ATH_MSG_DEBUG (" Pedestal: " << m_AmplitudeCut);
98 
99  ATH_CHECK (m_randomSvc.retrieve());
100  ATH_MSG_DEBUG ( "Retrieved RandomNumber Service" );
101 
102  ATH_CHECK (m_mergeSvc.retrieve());
103  ATH_MSG_DEBUG("Retrieved PileUpMergeSvc");
104 
107 
108  return StatusCode::SUCCESS;
109 }

◆ mergeEvent()

StatusCode ALFA_PileUpTool::mergeEvent ( const EventContext &  ctx)
finaloverridevirtual

return false if not interested in certain xing times (in ns) implemented by default in PileUpToolBase as FirstXing<=bunchXing<=LastXing

called at the end of the subevts loop. Not (necessarily) able to access SubEvents

Definition at line 298 of file ALFA_PileUpTool.cxx.

298  {
299 
300 
302 
303  // Prepare RNG Service
304  ATHRNG::RNGWrapper* rngWrapper = m_randomSvc->getEngine(this, m_randomStreamName);
305  rngWrapper->setSeed( m_randomStreamName, ctx );
306  CLHEP::HepRandomEngine* rngEngine = rngWrapper->getEngine(ctx);
308  if (sc.isFailure()) {
309  ATH_MSG_WARNING ("ALFA_PileUpTool::fill_MD_DigitCollection() failed");
310  return StatusCode::SUCCESS;
311  }
312 
313 
315 
316  sc = fill_OD_DigitCollection(rngEngine);
317  if (sc.isFailure()) {
318  ATH_MSG_WARNING ("ALFA_PileUpTool::fill_OD_DigitCollection() failed");
319  return StatusCode::SUCCESS;
320  }
321 
322  return StatusCode::SUCCESS;
323 }

◆ prepareEvent()

StatusCode ALFA_PileUpTool::prepareEvent ( const EventContext &  ctx,
const unsigned int  nInputEvents 
)
finaloverridevirtual

code taken from ZDC; author (highly) probably John Chapman called before the subevts loop.

Not (necessarily) able to access SubEvents

Definition at line 222 of file ALFA_PileUpTool.cxx.

222  {
223 
224  ATH_MSG_DEBUG ( "ALFA_PileUpTool::prepareEvent() called for " << nInputEvents << " input events" );
225 
227 
228  if (sc.isFailure()) { ATH_MSG_FATAL ( " ALFA_PileUpTool::prepareEvent(): Could not record the empty digit container in StoreGate " ); return sc; }
229  else { ATH_MSG_DEBUG ( " ALFA_PileUpTool::prepareEvent(): Digit container is recorded in StoreGate " ); }
230 
231  sc = recordODCollection(this->evtStore(), m_key_ODDigitCollection);
232 
233  if (sc.isFailure()) { ATH_MSG_FATAL ( " ALFA_PileUpTool::prepareEvent(): Could not record the empty digit OD container in StoreGate " ); return sc; }
234  else { ATH_MSG_DEBUG ( " ALFA_PileUpTool::prepareEvent(): Digit OD container is recorded in StoreGate " ); }
235 
238 
239  return StatusCode::SUCCESS;
240 }

◆ processAllSubEvents() [1/2]

StatusCode ALFA_PileUpTool::processAllSubEvents ( const EventContext &  ctx)
finaloverridevirtual

Reimplemented from PileUpToolBase.

Definition at line 116 of file ALFA_PileUpTool.cxx.

116  {
117 
118  ATH_MSG_DEBUG ("ALFA_PileUpTool::processAllSubEvents()");
119 
120  using TimedALFAHitCollList = PileUpMergeSvc::TimedList<ALFA_HitCollection>::type;
121  using TimedALFAODHitCollList = PileUpMergeSvc::TimedList<ALFA_ODHitCollection>::type;
122 
123  TimedALFAHitCollList tHitCollList;
124  TimedALFAODHitCollList tODHitCollList;
125 
126 
127  if (m_mergeSvc->retrieveSubEvtsData(m_SimHitCollectionName, tHitCollList).isFailure()) {
128 
129  ATH_MSG_FATAL ( "Could not fill TimedALFAHitCollList" ); return StatusCode::FAILURE;
130  }
131  else { ATH_MSG_DEBUG ( "Retrieved TimedALFAHitCollList" ); }
132 
133  ATH_MSG_DEBUG ( "PileUp: Merge " << tHitCollList.size() << " ALFA_HitCollection with key" << m_SimHitCollectionName );
134 
135 
136  if (m_mergeSvc->retrieveSubEvtsData(m_SimODHitCollectionName, tODHitCollList).isFailure()) {
137 
138  ATH_MSG_FATAL ( "Could not fill TimedALFAODHitCollList" ); return StatusCode::FAILURE;
139  }
140  else { ATH_MSG_DEBUG ( "Retrieved TimedALFAODHitCollList" ); }
141 
142  ATH_MSG_DEBUG ( "PileUp: Merge " << tODHitCollList.size() << " ALFA_ODHitCollection with key " << m_SimODHitCollectionName );
143 
144 
146 
147  TimedALFAHitCollList::iterator iHitColl (tHitCollList.begin());
148  TimedALFAHitCollList::iterator eHitColl (tHitCollList.end());
149 
150  while (iHitColl != eHitColl) {
151 
152  const ALFA_HitCollection* tmpColl(iHitColl->second);
153 
154  tALFAhit.insert(iHitColl->first, tmpColl);
155 
156  ATH_MSG_DEBUG ( " ALFA_HitCollection found with " << tmpColl->size() << " hits " << iHitColl->first );
157 
158  ++iHitColl;
159  }
160 
162 
163  TimedALFAODHitCollList::iterator iODHitColl (tODHitCollList.begin());
164  TimedALFAODHitCollList::iterator eODHitColl (tODHitCollList.end());
165 
166  while (iODHitColl != eODHitColl) {
167 
168  const ALFA_ODHitCollection* tmpColl(iODHitColl->second);
169 
170  tALFAODhit.insert(iODHitColl->first, tmpColl);
171 
172  ATH_MSG_DEBUG ( " ALFA_ODHitCollection found with " << tmpColl->size() << " hits " << iODHitColl->first );
173 
174  ++iODHitColl;
175  }
176 
177  // preparing containers
178 
179  if (recordCollection(this->evtStore(), m_key_DigitCollection).isFailure()) {
180 
181  ATH_MSG_FATAL ( " ALFA_PileUpTool::processAllSubEvents(): Could not record the empty ALFA digit container in StoreGate " ); return StatusCode::FAILURE;
182  }
183  else { ATH_MSG_DEBUG ( " ALFA_PileUpTool::processAllSubEvents(): ALFA Digit container is recorded in StoreGate " ); }
184 
185 
186  if (recordODCollection(this->evtStore(), m_key_ODDigitCollection).isFailure()) {
187 
188  ATH_MSG_FATAL ( " ALFA_PileUpTool::processAllSubEvents(): Could not record the empty ALFA OD digit container in StoreGate " ); return StatusCode::FAILURE;
189  }
190  else { ATH_MSG_DEBUG ( " ALFA_PileUpTool::processAllSubEvents(): ALFA OD Digit container is recorded in StoreGate " ); }
191 
192 
193  // filling containers
194 
195  ALFA_MD_info(tALFAhit);
196 
197  // Prepare RNG Service
198  ATHRNG::RNGWrapper* rngWrapper = m_randomSvc->getEngine(this, m_randomStreamName);
199  rngWrapper->setSeed( m_randomStreamName, ctx );
200  CLHEP::HepRandomEngine* rngEngine = rngWrapper->getEngine(ctx);
202  if (sc.isFailure()) {
203  ATH_MSG_WARNING ("ALFA_PileUpTool::fill_MD_DigitCollection() failed");
204  return StatusCode::SUCCESS;
205  }
206 
207 
208  ALFA_OD_info(tALFAODhit);
209 
210  sc = fill_OD_DigitCollection(rngEngine);
211  if (sc.isFailure()) {
212  ATH_MSG_WARNING ("ALFA_PileUpTool::fill_OD_DigitCollection() failed");
213  return StatusCode::SUCCESS;
214  }
215 
216  return StatusCode::SUCCESS;
217 }

◆ processAllSubEvents() [2/2]

virtual StatusCode IPileUpTool::processAllSubEvents
inherited

dummy implementation to allow compilation while all Digitization packages are migrated to use this new interface.

◆ processBunchXing()

StatusCode ALFA_PileUpTool::processBunchXing ( int  bunchXing,
SubEventIterator  bSubEvents,
SubEventIterator  eSubEvents 
)
finaloverridevirtual

called for each active bunch-crossing to process current SubEvents bunchXing is in ns

Reimplemented from PileUpToolBase.

Definition at line 243 of file ALFA_PileUpTool.cxx.

245  {
246  ATH_MSG_DEBUG ( "ALFA_PileUpTool::processBunchXing() " << bunchXing );
247  SubEventIterator iEvt = bSubEvents;
248  for (; iEvt!=eSubEvents; ++iEvt) {
249  StoreGateSvc& seStore = *iEvt->ptr()->evtStore();
250  //PileUpTimeEventIndex thisEventIndex = PileUpTimeEventIndex(static_cast<int>(iEvt->time()),iEvt->index()); not used
251  ATH_MSG_VERBOSE("SubEvt StoreGate " << seStore.name() << " :"
252  << " bunch crossing : " << bunchXing
253  << " time offset : " << iEvt->time()
254  << " event number : " << iEvt->ptr()->eventNumber()
255  << " run number : " << iEvt->ptr()->runNumber()
256  );
257 
258 
259  const ALFA_HitCollection* tmpHitColl = nullptr;
260 
261  if (!seStore.retrieve(tmpHitColl, m_SimHitCollectionName).isSuccess()) {
262 
263  ATH_MSG_ERROR ("SubEvent ALFA_HitCollection not found in StoreGate " << seStore.name() );
264 
265  return StatusCode::FAILURE;
266  }
267 
268  ATH_MSG_DEBUG ("SubEvent, ALFA_HitCollection found with " << tmpHitColl->size() << " hits");
269 
270  ALFA_HitCollection::const_iterator iHitColl = tmpHitColl->begin();
271  ALFA_HitCollection::const_iterator eHitColl = tmpHitColl->end();
272 
273  for (; iHitColl!=eHitColl; ++iHitColl) m_mergedALFA_HitList->push_back((*iHitColl));
274 
275  const ALFA_ODHitCollection* tmpODHitColl = nullptr;
276 
277  if (!seStore.retrieve(tmpODHitColl, m_SimODHitCollectionName).isSuccess()) {
278 
279  ATH_MSG_ERROR ( "SubEvent ALFA_ODHitCollection not found in StoreGate " << seStore.name() );
280 
281  return StatusCode::FAILURE;
282  }
283 
284  ATH_MSG_DEBUG ( "ALFA_ODHitCollection found with " << tmpODHitColl->size() << " hits" );
285 
286  ALFA_ODHitCollection::const_iterator iODHitColl = tmpODHitColl->begin();
287  ALFA_ODHitCollection::const_iterator eODHitColl = tmpODHitColl->end();
288 
289  for (; iODHitColl!=eODHitColl; ++iODHitColl) m_mergedALFA_ODHitList->push_back((*iODHitColl));
290  }
291 
292  return StatusCode::SUCCESS;
293 }

◆ recordCollection()

StatusCode ALFA_PileUpTool::recordCollection ( ServiceHandle< StoreGateSvc > &  evtStore,
const std::string &  key_digitCnt 
)
private

Definition at line 329 of file ALFA_PileUpTool.cxx.

330 {
331  ATH_MSG_DEBUG ("ALFA_Digitization::recordCollection");
332 
334 
335  StatusCode sc = evtStore->record(m_digitCollection, key_digitCnt);
336 
337  return sc;
338 }

◆ recordODCollection()

StatusCode ALFA_PileUpTool::recordODCollection ( ServiceHandle< StoreGateSvc > &  evtStore,
const std::string &  key_ODdigitCnt 
)
private

Definition at line 341 of file ALFA_PileUpTool.cxx.

341  {
342 
343  ATH_MSG_DEBUG ("ALFA_Digitization::recordODCollection");
344 
346 
347  StatusCode sc = evtStore->record(m_ODdigitCollection, key_ODdigitCnt);
348 
349  return sc;
350 }

◆ resetFilter()

virtual void PileUpToolBase::resetFilter ( )
inlineoverridevirtualinherited

dummy implementation of filter reset

Reimplemented in MergeTruthJetsTool.

Definition at line 51 of file PileUpToolBase.h.

51 { m_filterPassed=true; }

◆ toProcess()

virtual bool PileUpToolBase::toProcess ( int  bunchXing) const
inlineoverridevirtualinherited

the method this base class helps implementing

Reimplemented in MergeHijingParsTool, and MergeTrackRecordCollTool.

Definition at line 32 of file PileUpToolBase.h.

32  {
33  //closed interval [m_firstXing,m_lastXing]
34  return !((m_firstXing > bunchXing) || (bunchXing > m_lastXing));
35  }

◆ XTalk()

StatusCode ALFA_PileUpTool::XTalk ( )
private

Definition at line 675 of file ALFA_PileUpTool.cxx.

676  {
677  for (unsigned int j=0; j<8; j++){
678 
679  m_s.str("");
680 
681  m_filename = "Xtalk_station";
682  m_s << j+1;
683  m_filename += m_s.str();
684  m_filename += ".txt";
685 
686  ATH_MSG_DEBUG("file name " << m_filename.c_str() );
687 
689 
690  if(filePath.length() == 0)
691  {
692  ATH_MSG_FATAL(" XTalk file " << m_filename.c_str() << " not found in Datapath");
693  throw std::runtime_error("FATAL: mapping MD maroc-mapmt not found in Datapath.");
694  }
695 
696  else
697  {
698  ATH_MSG_DEBUG("the XTALK file \"" << m_filename.c_str() << "\" found in Datapath");
699  ATH_MSG_DEBUG("filePath = " << filePath.c_str() );
700  }
701 
702  m_fXTalk.open(filePath.c_str());
703 
704  if (m_fXTalk.is_open())
705  {
706  for (unsigned int i=0;i<127;i++)
707  {
708  m_fXTalk >> m_cross_talk[j][i];
709 
710  ATH_MSG_DEBUG("cross_talk[" << j << "][" << i << "] = " << m_cross_talk[j][i]);
711 
712  }
713  m_fXTalk.close();
714  }
715  else
716  {
717  ATH_MSG_ERROR("the file " << m_filename.c_str() << " was not open");
718  return StatusCode::FAILURE;
719  }
720  }
721  return StatusCode::SUCCESS;
722  }

Member Data Documentation

◆ m_AmplitudeCut

double ALFA_PileUpTool::m_AmplitudeCut
private

Definition at line 149 of file ALFA_PileUpTool.h.

◆ m_cross_talk

double ALFA_PileUpTool::m_cross_talk[8][127]
private

Definition at line 162 of file ALFA_PileUpTool.h.

◆ m_digitCollection

ALFA_DigitCollection* ALFA_PileUpTool::m_digitCollection
private

Definition at line 130 of file ALFA_PileUpTool.h.

◆ m_E_fib

double ALFA_PileUpTool::m_E_fib[8][20][64]
private

Definition at line 115 of file ALFA_PileUpTool.h.

◆ m_E_ODfib

double ALFA_PileUpTool::m_E_ODfib[8][2][3][30]
private

Definition at line 116 of file ALFA_PileUpTool.h.

◆ m_fibres

int ALFA_PileUpTool::m_fibres[8][20][64]
private

Definition at line 163 of file ALFA_PileUpTool.h.

◆ m_filename

std::string ALFA_PileUpTool::m_filename
private

Definition at line 167 of file ALFA_PileUpTool.h.

◆ m_filterPassed

bool PileUpToolBase::m_filterPassed {true}
protectedinherited

Definition at line 60 of file PileUpToolBase.h.

◆ m_firstXing

Gaudi::Property<int> PileUpToolBase::m_firstXing
protectedinherited
Initial value:
{this, "FirstXing", -999,
"First bunch-crossing in which det is live"}

Definition at line 54 of file PileUpToolBase.h.

◆ m_fXTalk

std::ifstream ALFA_PileUpTool::m_fXTalk
private

Definition at line 165 of file ALFA_PileUpTool.h.

◆ m_key_DigitCollection

std::string ALFA_PileUpTool::m_key_DigitCollection
private

Definition at line 126 of file ALFA_PileUpTool.h.

◆ m_key_ODDigitCollection

std::string ALFA_PileUpTool::m_key_ODDigitCollection
private

Definition at line 127 of file ALFA_PileUpTool.h.

◆ m_lastXing

Gaudi::Property<int> PileUpToolBase::m_lastXing
protectedinherited
Initial value:
{this, "LastXing", 999,
"Last bunch-crossing in which det is live"}

Definition at line 56 of file PileUpToolBase.h.

◆ m_mean

double ALFA_PileUpTool::m_mean
private

Definition at line 147 of file ALFA_PileUpTool.h.

◆ m_meanE_dep

double ALFA_PileUpTool::m_meanE_dep
private

Definition at line 145 of file ALFA_PileUpTool.h.

◆ m_meanN_photo

double ALFA_PileUpTool::m_meanN_photo
private

Definition at line 146 of file ALFA_PileUpTool.h.

◆ m_mergedALFA_HitList

ALFA_HitCollection* ALFA_PileUpTool::m_mergedALFA_HitList
private

Definition at line 159 of file ALFA_PileUpTool.h.

◆ m_mergedALFA_ODHitList

ALFA_ODHitCollection* ALFA_PileUpTool::m_mergedALFA_ODHitList
private

Definition at line 160 of file ALFA_PileUpTool.h.

◆ m_mergeSvc

ServiceHandle<PileUpMergeSvc> ALFA_PileUpTool::m_mergeSvc {this, "mergeSvc", "PileUpMergeSvc", ""}
private

Definition at line 111 of file ALFA_PileUpTool.h.

◆ m_ODdigitCollection

ALFA_ODDigitCollection* ALFA_PileUpTool::m_ODdigitCollection
private

Definition at line 132 of file ALFA_PileUpTool.h.

◆ m_randomStreamName

Gaudi::Property<std::string> ALFA_PileUpTool::m_randomStreamName {this, "RandomStreamName", "ALFARndEng", ""}
private

Definition at line 113 of file ALFA_PileUpTool.h.

◆ m_randomSvc

ServiceHandle<IAthRNGSvc> ALFA_PileUpTool::m_randomSvc {this, "RndmSvc", "AthRNGSvc", ""}
private

Definition at line 112 of file ALFA_PileUpTool.h.

◆ m_s

std::stringstream ALFA_PileUpTool::m_s
private

Definition at line 166 of file ALFA_PileUpTool.h.

◆ m_sigma0

double ALFA_PileUpTool::m_sigma0
private

Definition at line 143 of file ALFA_PileUpTool.h.

◆ m_sigma1

double ALFA_PileUpTool::m_sigma1
private

Definition at line 144 of file ALFA_PileUpTool.h.

◆ m_SimHitCollectionName

std::string ALFA_PileUpTool::m_SimHitCollectionName
private

Definition at line 124 of file ALFA_PileUpTool.h.

◆ m_SimODHitCollectionName

std::string ALFA_PileUpTool::m_SimODHitCollectionName
private

Definition at line 125 of file ALFA_PileUpTool.h.

◆ m_stdDev

double ALFA_PileUpTool::m_stdDev
private

Definition at line 148 of file ALFA_PileUpTool.h.

◆ m_vetoPileUpTruthLinks

Gaudi::Property<int> PileUpToolBase::m_vetoPileUpTruthLinks
protectedinherited
Initial value:
{this, "VetoPileUpTruthLinks", true,
"Ignore links to suppressed pile-up truth"}

Definition at line 58 of file PileUpToolBase.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
ALFA_PileUpTool::m_fibres
int m_fibres[8][20][64]
Definition: ALFA_PileUpTool.h:163
ATHRNG::RNGWrapper::setSeed
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition: RNGWrapper.h:169
ALFA_HitCollection
AtlasHitsVector< ALFA_Hit > ALFA_HitCollection
Definition: ALFA_HitCollection.h:13
ALFA_PileUpTool::ALFA_MD_info
void ALFA_MD_info(const ALFA_HitCollection *)
Definition: ALFA_PileUpTool.cxx:399
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
pdg_comparison.sigma
sigma
Definition: pdg_comparison.py:324
PathResolver::RecursiveSearch
@ RecursiveSearch
Definition: PathResolver.h:28
ALFA_PileUpTool::m_meanN_photo
double m_meanN_photo
Definition: ALFA_PileUpTool.h:146
PileUpToolBase::m_filterPassed
bool m_filterPassed
Definition: PileUpToolBase.h:60
PathResolver::find_file
static std::string find_file(const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
Definition: PathResolver.cxx:251
ALFA_PileUpTool::m_key_ODDigitCollection
std::string m_key_ODDigitCollection
Definition: ALFA_PileUpTool.h:127
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
AtlasHitsVector
Definition: AtlasHitsVector.h:33
skel.it
it
Definition: skel.GENtoEVGEN.py:423
ALFA_PileUpTool::ALFA_OD_info
void ALFA_OD_info(const ALFA_ODHitCollection *)
Definition: ALFA_PileUpTool.cxx:490
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
ALFA_PileUpTool::m_filename
std::string m_filename
Definition: ALFA_PileUpTool.h:167
ALFA_HitConstIter
AtlasHitsVector< ALFA_Hit >::const_iterator ALFA_HitConstIter
Definition: ALFA_HitCollection.h:15
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
PileUpToolBase::m_lastXing
Gaudi::Property< int > m_lastXing
Definition: PileUpToolBase.h:56
AtlasHitsVector::begin
const_iterator begin() const
Definition: AtlasHitsVector.h:131
ALFA_PileUpTool::m_AmplitudeCut
double m_AmplitudeCut
Definition: ALFA_PileUpTool.h:149
TimedHitCollection::nextDetectorElement
bool nextDetectorElement(const_iterator &b, const_iterator &e)
sets an iterator range with the hits of current detector element returns a bool when done
AtlasHitsVector::const_iterator
CONT::const_iterator const_iterator
Definition: AtlasHitsVector.h:43
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AtlasHitsVector::clear
void clear()
Definition: AtlasHitsVector.h:153
PileUpMergeSvc::TimedList::type
std::list< value_t > type
type of the collection of timed data object
Definition: PileUpMergeSvc.h:75
StoreGateSvc::retrieve
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
TRT::Hit::side
@ side
Definition: HitInfo.h:83
ALFA_PileUpTool::m_mergedALFA_HitList
ALFA_HitCollection * m_mergedALFA_HitList
Definition: ALFA_PileUpTool.h:159
ALFA_PileUpTool::m_randomStreamName
Gaudi::Property< std::string > m_randomStreamName
Definition: ALFA_PileUpTool.h:113
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
ALFA_PileUpTool::m_ODdigitCollection
ALFA_ODDigitCollection * m_ODdigitCollection
Definition: ALFA_PileUpTool.h:132
ALFA_Digit
Definition: ALFA_Digit.h:8
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ALFA_PileUpTool::recordCollection
StatusCode recordCollection(ServiceHandle< StoreGateSvc > &evtStore, const std::string &key_digitCnt)
Definition: ALFA_PileUpTool.cxx:329
TimedHitCollection::insert
void insert(const PileUpTimeEventIndex &timeEventIndex, const AtlasHitsVector< HIT > *inputCollection)
lumiFormat.i
int i
Definition: lumiFormat.py:92
ALFA_PileUpTool::m_meanE_dep
double m_meanE_dep
Definition: ALFA_PileUpTool.h:145
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ALFA_PileUpTool::fill_OD_DigitCollection
StatusCode fill_OD_DigitCollection(CLHEP::HepRandomEngine *)
Definition: ALFA_PileUpTool.cxx:628
ALFA_PileUpTool::m_SimODHitCollectionName
std::string m_SimODHitCollectionName
Definition: ALFA_PileUpTool.h:125
ALFA_PileUpTool::m_E_ODfib
double m_E_ODfib[8][2][3][30]
Definition: ALFA_PileUpTool.h:116
test_pyathena.parent
parent
Definition: test_pyathena.py:15
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:127
PileUpToolBase::PileUpToolBase
PileUpToolBase(const std::string &type, const std::string &name, const IInterface *parent)
Definition: PileUpToolBase.cxx:7
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ALFA_ODHitCollection
AtlasHitsVector< ALFA_ODHit > ALFA_ODHitCollection
Definition: ALFA_ODHitCollection.h:13
ALFA_PileUpTool::m_E_fib
double m_E_fib[8][20][64]
Definition: ALFA_PileUpTool.h:115
ALFA_PileUpTool::m_s
std::stringstream m_s
Definition: ALFA_PileUpTool.h:166
ALFA_PileUpTool::recordODCollection
StatusCode recordODCollection(ServiceHandle< StoreGateSvc > &evtStore, const std::string &key_ODdigitCnt)
Definition: ALFA_PileUpTool.cxx:341
ALFA_PileUpTool::m_mergedALFA_ODHitList
ALFA_ODHitCollection * m_mergedALFA_ODHitList
Definition: ALFA_PileUpTool.h:160
ALFA_PileUpTool::m_sigma0
double m_sigma0
Definition: ALFA_PileUpTool.h:143
ALFA_DigitCollection
Definition: ALFA_DigitCollection.h:15
ALFA_PileUpTool::m_sigma1
double m_sigma1
Definition: ALFA_PileUpTool.h:144
hancool.filePath
string filePath
Definition: hancool.py:28
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ATHRNG::RNGWrapper
A wrapper class for event-slot-local random engines.
Definition: RNGWrapper.h:56
ALFA_PileUpTool::m_SimHitCollectionName
std::string m_SimHitCollectionName
Definition: ALFA_PileUpTool.h:124
ALFA_ODHitConstIter
AtlasHitsVector< ALFA_ODHit >::const_iterator ALFA_ODHitConstIter
Definition: ALFA_ODHitCollection.h:15
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
ALFA_PileUpTool::m_cross_talk
double m_cross_talk[8][127]
Definition: ALFA_PileUpTool.h:162
ATHRNG::RNGWrapper::getEngine
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition: RNGWrapper.h:134
ALFA_PileUpTool::m_mergeSvc
ServiceHandle< PileUpMergeSvc > m_mergeSvc
Definition: ALFA_PileUpTool.h:111
ALFA_PileUpTool::m_key_DigitCollection
std::string m_key_DigitCollection
Definition: ALFA_PileUpTool.h:126
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
ALFA_PileUpTool::m_fXTalk
std::ifstream m_fXTalk
Definition: ALFA_PileUpTool.h:165
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
AtlasHitsVector::end
const_iterator end() const
Definition: AtlasHitsVector.h:134
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
TimedHitCollection::const_iterator
TimedVector::const_iterator const_iterator
Definition: TimedHitCollection.h:20
PileUpToolBase::m_firstXing
Gaudi::Property< int > m_firstXing
Definition: PileUpToolBase.h:54
ALFA_PileUpTool::m_digitCollection
ALFA_DigitCollection * m_digitCollection
Definition: ALFA_PileUpTool.h:130
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
AtlasHitsVector::size
size_type size() const
Definition: AtlasHitsVector.h:143
SubEventIterator
std::vector< xAOD::EventInfo::SubEvent >::const_iterator SubEventIterator
Definition: IPileUpTool.h:22
ALFA_PileUpTool::m_mean
double m_mean
Definition: ALFA_PileUpTool.h:147
ALFA_ODDigit
Definition: ALFA_ODDigit.h:8
ALFA_PileUpTool::fill_MD_DigitCollection
StatusCode fill_MD_DigitCollection(CLHEP::HepRandomEngine *)
Definition: ALFA_PileUpTool.cxx:536
ALFA_PileUpTool::m_randomSvc
ServiceHandle< IAthRNGSvc > m_randomSvc
Definition: ALFA_PileUpTool.h:112
TimedHitCollection
Definition: TimedHitCollection.h:15
AtlasHitsVector::push_back
void push_back(const T &t)
Definition: AtlasHitsVector.h:145
fitman.k
k
Definition: fitman.py:528
ALFA_PileUpTool::m_stdDev
double m_stdDev
Definition: ALFA_PileUpTool.h:148
ALFA_ODDigitCollection
Definition: ALFA_ODDigitCollection.h:15