ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
PileUpMergeSvc Class Reference

the preferred mechanism to access information from the different event stores in a pileup job. More...

#include <PileUpMergeSvc.h>

Inheritance diagram for PileUpMergeSvc:
Collaboration diagram for PileUpMergeSvc:

Classes

class  Range
 the active crossing range for a data object (CLID/key combination) More...
 
struct  TimedList
 generate the types of the timed data objects More...
 

Public Member Functions

 PileUpMergeSvc (const std::string &name, ISvcLocator *svc)
 Standard Gaudi Constructor. More...
 
virtual ~PileUpMergeSvc ()
 
virtual StatusCode initialize ()
 Service initialisation. More...
 
template<typename KEY , typename DATA >
StatusCode retrieveOriginal (const KEY &dataKey, const DATA *&data)
 retrieve keyed DATA objs for the original event only More...
 
template<typename KEY , typename DATA >
StatusCode retrieveSingleSubEvtData (const KEY &dataKey, const DATA *&data, int bunchXing, SubEventIterator iEvt)
 
template<typename KEY , typename TIMEDDATA >
StatusCode retrieveSubEvtsData (const KEY &dataKey, TIMEDDATA &timedData)
 retrieve keyed DATA objs for all sub-events and attach a time to them More...
 
template<typename KEY , typename TIMEDDATA >
StatusCode retrieveSubSetEvtData (const KEY &dataKey, TIMEDDATA &timedData, int bunchXing, SubEventIterator bSubEvents, SubEventIterator eSubEvents)
 
template<typename KEY , typename TIMEDDATA >
StatusCode retrieveSubEvtsData (const KEY &dataKey, TIMEDDATA &timedData, unsigned int &numberOfSimHits)
 retrieve keyed DATA objs for all sub-events and attach a time to them More...
 
StatusCode clearDataCaches ()
 clear bkg event caches from unneeded data objects (as configured using PileUpXingFolder CacheRefreshFrequency property) More...
 
virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvInterface)
 
const xAOD::EventInfogetPileUpEvent (StoreGateSvc *sg, const std::string &einame) const
 get EventInfo from SG, by default using p_overStore More...
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 Retrieve interface ID. More...
 

Private Types

typedef std::map< std::pair< CLID, std::string >, RangeRangeContainer
 

Private Member Functions

template<typename DATA , typename KEY >
bool isLive (const KEY &key, int iXing)
 is iXing live for DATA/key? More...
 
bool isLive (CLID id, const std::string &dataKey, int iXing)
 
void decodeIntervals ()
 setup PileUpIntervals More...
 
bool doRefresh (const Range &r, int iXing)
 

Private Attributes

ServiceHandle< StoreGateSvcp_overStore
 overlaid SG (default) More...
 
ToolHandleArray< IPileUpXingFolderm_intervals
 Property: bunch xing intervals. More...
 
SG::SlotSpecificObj< std::mutex > m_slotMutex ATLAS_THREAD_SAFE
 
RangeContainer m_ranges
 
ToolHandle< ITriggerTimem_pITriggerTime
 allows to apply a trigger time offset More...
 
BooleanProperty m_returnTimedData
 
std::string m_EventInfoKeyName
 
ToolHandle< xAODMaker::IEventInfoCnvToolm_xAODCnvTool
 property: Handle to the EventInfo -> xAOD::EventInfo converter tool More...
 

Detailed Description

the preferred mechanism to access information from the different event stores in a pileup job.

access PileUpEventInfo to locate data objects (typically hit collections) to be merged attaching sub-evt time offsets

Author
Paolo Calafiura
Id
PileUpMergeSvc.h,v 1.17 2008-04-19 00:31:09 calaf Exp

Definition at line 58 of file PileUpMergeSvc.h.

Member Typedef Documentation

◆ RangeContainer

typedef std::map<std::pair<CLID, std::string>, Range> PileUpMergeSvc::RangeContainer
private

Definition at line 175 of file PileUpMergeSvc.h.

Constructor & Destructor Documentation

◆ PileUpMergeSvc()

PileUpMergeSvc::PileUpMergeSvc ( const std::string &  name,
ISvcLocator *  svc 
)

Standard Gaudi Constructor.

Standard Constructor.

Definition at line 38 of file PileUpMergeSvc.cxx.

39  : AthService(name,svc),
40  p_overStore("StoreGateSvc", "StoreGateSvc"),
41  m_intervals(this),
42  m_pITriggerTime(""),
43  m_returnTimedData(true),
44  m_EventInfoKeyName("OverlayEvent"),
45  m_xAODCnvTool("xAODMaker::EventInfoCnvTool/EventInfoCnvTool", this)
46 {
47  declareProperty("Intervals", m_intervals, "Folders specifying bunch xing intervals for different data objects");
48  declareProperty("TriggerTimeTool", m_pITriggerTime, "allows to apply a trigger time offset");
49  declareProperty("ReturnTimedData", m_returnTimedData,
50  "determine whether the TimedData returned by retrieveSubEvts have non trivial PileUpTimeEventIndex. May be set to false for overlay with real events ");
51  declareProperty( "xAODCnvTool", m_xAODCnvTool );
52  declareProperty("EventInfoKeyName", m_EventInfoKeyName, "default name for EventInfo");
53 }

◆ ~PileUpMergeSvc()

virtual PileUpMergeSvc::~PileUpMergeSvc ( )
inlinevirtual

Definition at line 64 of file PileUpMergeSvc.h.

64 {}

Member Function Documentation

◆ clearDataCaches()

StatusCode PileUpMergeSvc::clearDataCaches ( )

clear bkg event caches from unneeded data objects (as configured using PileUpXingFolder CacheRefreshFrequency property)

Definition at line 296 of file PileUpMergeSvc.cxx.

296  {
297  StatusCode sc(StatusCode::FAILURE);
298  const xAOD::EventInfo* pEvent;
299  if (0 != (pEvent=getPileUpEvent(nullptr,m_EventInfoKeyName))) {
300  // access the sub events DATA objects...
301  for( const xAOD::EventInfo::SubEvent& subEv : pEvent->subEvents() ) {
302  StoreGateSvc* pSubEvtSG( subEv.ptr()->evtStore() );
303  assert(pSubEvtSG);
304  //go object-by-object (driven by PileUpXingFolder settings)
305  for (const auto& item : m_ranges) {
306  SG::sgkey_t sgkey = pSubEvtSG->stringToKey (item.first.second,
307  item.first.first);
308  SG::DataProxy* proxy = pSubEvtSG->proxy_exact (sgkey);
309  //FIXME turning the double iEvt->time is fraught with peril. Luckily
310  //FIXME it just works, but we should have the beam xing in iEvt
311  if (proxy && doRefresh (item.second, int(subEv.time()))) {
312  proxy->setObject ((DataObject*)0);
313  if (msg().level() <= MSG::DEBUG) {
314  msg() << MSG::DEBUG
315  << "clearDataCachesByFolder: object with clid "
316  << item.first.first << " and key " << item.first.second
317  << " removed from cache "
318  << pSubEvtSG->name() << endmsg;
319  }
320  }
321  }
322  //even if we don't clear the store we need to empty the trash...
323  pSubEvtSG->emptyTrash();
324 #ifndef NDEBUG
325  if (msg().level() <= MSG::VERBOSE) {
326  msg() << MSG::VERBOSE
327  << "clearDataCachesByFolder: done with store " << pSubEvtSG->name()
328  << endmsg;
329  }
330 #endif
331  } //stores loop
332  sc=StatusCode::SUCCESS;
333  } //NO PILEUP EVENT?!?
334  return sc;
335 }

◆ decodeIntervals()

void PileUpMergeSvc::decodeIntervals ( )
private

setup PileUpIntervals

Definition at line 56 of file PileUpMergeSvc.cxx.

56  {
57  if (m_intervals.retrieve().isSuccess()) {
58  ToolHandleArray<IPileUpXingFolder>::const_iterator
59  iXing(m_intervals.begin()), iEnd(m_intervals.end());
60  while (iXing != iEnd) {
61  const IPileUpXingFolder& xing(**iXing);
62  if (msg().level() <= MSG::DEBUG) {
63  msg() << MSG::DEBUG << "decodeIntervals: adding IPileUpXingFolder "
64  << xing.name() << endmsg;
65  }
67  item(xing.begin()), endItem(xing.end());
68  while(item != endItem) {
69  m_ranges[make_pair(item->id(), item->key())]=
70  Range(xing.firstXing(), xing.lastXing(), xing.cacheRefreshFrequency());
71  if (msg().level() <= MSG::VERBOSE) {
72  msg() << MSG::VERBOSE
73  << "decodeInterval: accepting objects of CLID " << item->id()
74  << " key " << item->key() << " in the Xing range ["
75  << xing.firstXing() << ", " << xing.lastXing() << ']'
76  << " with cache refresh frequency "
77  << xing.cacheRefreshFrequency() << endmsg;
78  }
79  ++item;
80  }
81  ++iXing;
82  }
83  }
84 }

◆ doRefresh()

bool PileUpMergeSvc::doRefresh ( const Range r,
int  iXing 
)
private

Definition at line 288 of file PileUpMergeSvc.cxx.

288  {
289  // bool result(r.contains(iXing) && r.doRefresh(double(random())/RAND_MAX));
290  // std::cerr << "doRefresh: id " << id << " key " << dataKey
291  // << " xing " << iXing << " result " << result << std::endl;
292  return (r.contains(iXing) && r.doRefresh(double(random())*(1./RAND_MAX)));
293 }

◆ getPileUpEvent()

const xAOD::EventInfo * PileUpMergeSvc::getPileUpEvent ( StoreGateSvc sg,
const std::string &  einame 
) const

get EventInfo from SG, by default using p_overStore

Definition at line 122 of file PileUpMergeSvc.cxx.

123 {
124  if( !sg ) sg = p_overStore.get();
125  const xAOD::EventInfo* xAODEventInfo = einame.empty()?
127  : sg->tryConstRetrieve<xAOD::EventInfo>( einame );
128  if( xAODEventInfo ) {
129  ATH_MSG_DEBUG("Found xAOD::EventInfo="<<xAODEventInfo<<" SG="<<sg<<" : "<<*xAODEventInfo);
130  ATH_MSG_DEBUG(" EventInfo has " << xAODEventInfo->subEvents().size() << " subevents" );
131  // recreate subevent links cache
132  xAODEventInfo->subEvents();
133  } else {
134  // Don't allow more than one thread per slot through here.
135  // Otherwise, we can get errors with multiple threads trying
136  // to record the EventInfo object.
137  std::lock_guard<std::mutex> lock (*m_slotMutex);
138 
139  // Try reading old EventInfo
140  const EventInfo* pEvent = einame.empty()?
142  : sg->tryConstRetrieve< ::EventInfo >( einame );
143  if( pEvent ) {
144  ATH_MSG_DEBUG("Converting (PileUp)EventInfo "<<pEvent<<" SG="<<sg<<" to xAOD::EventInfo");
145  // Create the xAOD object(s):
146  std::unique_ptr< xAOD::EventInfo > pxAODEventInfo( new xAOD::EventInfo() );
147  std::unique_ptr< xAOD::EventAuxInfo > pxAODEventAuxInfo(new xAOD::EventAuxInfo());
148  pxAODEventInfo->setStore( pxAODEventAuxInfo.get() );
149  pxAODEventInfo->setEvtStore( sg );
150  if( !m_xAODCnvTool->convert( pEvent, pxAODEventInfo.get(), true, false ).isSuccess() ) {
151  ATH_MSG_ERROR("Failed to convert xAOD::EventInfo in SG");
152  return nullptr;
153  }
154 
155  const PileUpEventInfo* pileupEvent(dynamic_cast<const PileUpEventInfo*>(pEvent));
156  if( pileupEvent ) {
157  // Create an EventInfoContainer for the pileup events:
158  std::unique_ptr< xAOD::EventInfoContainer > puei(new xAOD::EventInfoContainer());
159  std::unique_ptr< xAOD::EventInfoAuxContainer > puaux(new xAOD::EventInfoAuxContainer());
160  puei->setStore( puaux.get() );
161 
162  // Sub-events for the main EventInfo object:
163  std::vector< xAOD::EventInfo::SubEvent > subEvents;
164 
165  // A map translating between the AOD and xAOD pileup event types:
166  static const std::map< PileUpEventInfo::SubEvent::pileup_type,
167  xAOD::EventInfo::PileUpType > pileupTypeMap = {
168 #define DECLARE_SE_TYPE( TYPE ) \
169  { PileUpTimeEventIndex::TYPE, xAOD::EventInfo::TYPE },
170 
177 
178 #undef DECLARE_SE_TYPE
179  };
180 
181  // A convenience type declaration:
183 
184  // Create xAOD::EventInfo objects for each pileup EventInfo object:
185  auto pu_itr = pileupEvent->beginSubEvt();
186  auto pu_end = pileupEvent->endSubEvt();
187  const unsigned int countEvents = std::distance(pu_itr,pu_end);
188  ATH_MSG_VERBOSE( "CHECKING: There are " << countEvents << " subevents in this Event." );
189  for( ; pu_itr != pu_end; ++pu_itr ) {
190  // Create a new xAOD::EventInfo object:
191  std::unique_ptr< xAOD::EventInfo > ei( new xAOD::EventInfo() );
192  // Fill it with information:
193  if( ! m_xAODCnvTool->convert( pu_itr->pSubEvt, ei.get(), true, false ).isSuccess() ) {
194  ATH_MSG_ERROR("Failed to convert EventInfo to xAOD::EventInfo");
195  continue;
196  }
197 
198  StoreGateSvc* tmpSG = pu_itr->pSubEvtSG;
199  if(tmpSG) {
200  ei->setEvtStore(tmpSG);
201  ATH_MSG_VERBOSE("FOUND A STOREGATE");
202  } else {
203  ATH_MSG_ERROR("FAILED TO FIND A STOREGATE");
204  }
205  // Store new EI into the container
206  puei->push_back( ei.release() );
207 
208  // And now add a sub-event to the temporary list:
209  auto typeItr = pileupTypeMap.find( pu_itr->type() );
211  if( typeItr == pileupTypeMap.end() ) {
212  ATH_MSG_WARNING( "PileUpType not recognised: " << pu_itr->type() );
213  } else {
214  type = typeItr->second;
215  }
216  ATH_MSG_VERBOSE("PileUpEventInfo: time = " << pu_itr->time() << ", index = " << pu_itr->index());
217  subEvents.push_back( xAOD::EventInfo::SubEvent( pu_itr->time(),
218  pu_itr->index(),
219  type,
220  EiLink( "PileUpEventInfo", puei->size()-1, sg ))); // p_SG?
221  ATH_MSG_VERBOSE("PileUpEventInfo: time = " << subEvents.back().time() << ", index = " << subEvents.back().index());
222  }
223 
224  if( subEvents.size() ) {
225  // And now update the main EventInfo object with the sub-events:
226  pxAODEventInfo->setSubEvents( subEvents );
227 
228  // Record the xAOD object(s):
229  if( !sg->record( std::move( puaux ), "PileUpEventInfoAux." ).isSuccess()
230  || !sg->record( std::move( puei ), "PileUpEventInfo" ).isSuccess() ) { //MN: FIX - make keys configurable
231  ATH_MSG_ERROR("Failed to record xAOD::EventInfoContainer in SG");
232  }
233  }
234  }
235  // remember pointer to return the new EventInfo
236  // the std::launder avoids a cppcheck warning by breaking
237  // the lifetime connection between the pointer and the unique_ptr.
238  xAODEventInfo = std::launder(pxAODEventInfo.get());
239  // Record the xAOD object(s):
240  if( ! sg->record( std::move( pxAODEventAuxInfo ), "EventInfoAux." ).isSuccess() //MN: FIX? key
241  || ! sg->record( std::move( pxAODEventInfo ), "EventInfo" ).isSuccess() ) {
242  ATH_MSG_ERROR("Failed to record the new xAOD::EventInfo in SG");
243  xAODEventInfo = nullptr;
244  }
245  ATH_MSG_DEBUG("Record the new xAOD::EventInfo "<<pxAODEventInfo.get()<<" in SG="<<sg);
246  }
247  }
248 
249  if( !xAODEventInfo ) {
250  ATH_MSG_DEBUG("Could not find EventInfo '" << einame << "' in store " << sg->name());
251  }
252  return xAODEventInfo;
253 }

◆ initialize()

StatusCode PileUpMergeSvc::initialize ( )
virtual

Service initialisation.

Definition at line 89 of file PileUpMergeSvc.cxx.

89  {
90 
91  msg() << MSG::INFO << "Initializing " << name() << ", using (xAOD::)EventInfo " << m_EventInfoKeyName << endmsg;
92 
93  m_autoRetrieveTools = false;
94  m_checkToolDeps = false;
95 
96  // set up the SG service:
97  if ( !(p_overStore.retrieve()).isSuccess() )
98  {
99  msg() << MSG::FATAL
100  << "Could not locate default store"
101  << endmsg;
102  return StatusCode::FAILURE;
103  }
104  if (!m_pITriggerTime.empty() && !(m_pITriggerTime.retrieve()).isSuccess() )
105  {
106  msg() << MSG::FATAL
107  << "Could not locate ITriggerTime tool"
108  << endmsg;
109  return StatusCode::FAILURE;
110  }
111  // Retrieve the converter tool:
112  CHECK(m_xAODCnvTool.retrieve());
113 
114  decodeIntervals();
115 
116  // Initialize service:
117  return StatusCode::SUCCESS;
118 
119 }

◆ interfaceID()

const InterfaceID & PileUpMergeSvc::interfaceID ( )
static

Retrieve interface ID.

Definition at line 257 of file PileUpMergeSvc.cxx.

257  {
258  static const InterfaceID IID_IPileUpMergeSvc(9991, 1, 0); //FIXME
259  return IID_IPileUpMergeSvc;
260 }

◆ isLive() [1/2]

bool PileUpMergeSvc::isLive ( CLID  id,
const std::string &  dataKey,
int  iXing 
)
private

Definition at line 283 of file PileUpMergeSvc.cxx.

283  {
284  return m_ranges[make_pair(id, dataKey)].contains(iXing);
285 }

◆ isLive() [2/2]

template<typename DATA , typename KEY >
bool PileUpMergeSvc::isLive ( const KEY &  key,
int  iXing 
)
private

is iXing live for DATA/key?

◆ msg() [1/2]

MsgStream& AthCommonMsg< Service >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< Service >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< Service >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ queryInterface()

StatusCode PileUpMergeSvc::queryInterface ( const InterfaceID &  riid,
void **  ppvInterface 
)
virtual

Definition at line 268 of file PileUpMergeSvc.cxx.

269 {
270  //FIXME
271  if ( interfaceID().versionMatch(riid) ) {
272  *ppvInterface = (PileUpMergeSvc*)this;
273  }
274  else {
275  // Interface is not directly available: try out a base class
276  return AthService::queryInterface(riid, ppvInterface);
277  }
278  addRef();
279  return StatusCode::SUCCESS;
280 }

◆ retrieveOriginal()

template<typename KEY , typename DATA >
StatusCode PileUpMergeSvc::retrieveOriginal ( const KEY &  dataKey,
const DATA *&  data 
)

retrieve keyed DATA objs for the original event only

◆ retrieveSingleSubEvtData()

template<typename KEY , typename DATA >
StatusCode PileUpMergeSvc::retrieveSingleSubEvtData ( const KEY &  dataKey,
const DATA *&  data,
int  bunchXing,
SubEventIterator  iEvt 
)

◆ retrieveSubEvtsData() [1/2]

template<typename KEY , typename TIMEDDATA >
StatusCode PileUpMergeSvc::retrieveSubEvtsData ( const KEY &  dataKey,
TIMEDDATA &  timedData 
)

retrieve keyed DATA objs for all sub-events and attach a time to them

◆ retrieveSubEvtsData() [2/2]

template<typename KEY , typename TIMEDDATA >
StatusCode PileUpMergeSvc::retrieveSubEvtsData ( const KEY &  dataKey,
TIMEDDATA &  timedData,
unsigned int &  numberOfSimHits 
)

retrieve keyed DATA objs for all sub-events and attach a time to them

◆ retrieveSubSetEvtData()

template<typename KEY , typename TIMEDDATA >
StatusCode PileUpMergeSvc::retrieveSubSetEvtData ( const KEY &  dataKey,
TIMEDDATA &  timedData,
int  bunchXing,
SubEventIterator  bSubEvents,
SubEventIterator  eSubEvents 
)

Member Data Documentation

◆ ATLAS_THREAD_SAFE

SG::SlotSpecificObj<std::mutex> m_slotMutex PileUpMergeSvc::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 129 of file PileUpMergeSvc.h.

◆ m_EventInfoKeyName

std::string PileUpMergeSvc::m_EventInfoKeyName
private

Definition at line 185 of file PileUpMergeSvc.h.

◆ m_intervals

ToolHandleArray<IPileUpXingFolder> PileUpMergeSvc::m_intervals
private

Property: bunch xing intervals.

Definition at line 125 of file PileUpMergeSvc.h.

◆ m_pITriggerTime

ToolHandle<ITriggerTime> PileUpMergeSvc::m_pITriggerTime
private

allows to apply a trigger time offset

controls PileUpTimedEventIndex for TimedData returned by retrieveSubEvts

Definition at line 178 of file PileUpMergeSvc.h.

◆ m_ranges

RangeContainer PileUpMergeSvc::m_ranges
private

Definition at line 176 of file PileUpMergeSvc.h.

◆ m_returnTimedData

BooleanProperty PileUpMergeSvc::m_returnTimedData
private

Definition at line 180 of file PileUpMergeSvc.h.

◆ m_xAODCnvTool

ToolHandle< xAODMaker::IEventInfoCnvTool > PileUpMergeSvc::m_xAODCnvTool
private

property: Handle to the EventInfo -> xAOD::EventInfo converter tool

Definition at line 188 of file PileUpMergeSvc.h.

◆ p_overStore

ServiceHandle<StoreGateSvc> PileUpMergeSvc::p_overStore
private

overlaid SG (default)

Definition at line 124 of file PileUpMergeSvc.h.


The documentation for this class was generated from the following files:
AthService::AthService
AthService()
StoreGateSvc::record
StatusCode record(T *p2BRegistered, const TKEY &key)
Record an object with a key.
beamspotman.r
def r
Definition: beamspotman.py:676
common.sgkey
def sgkey(tool)
Definition: common.py:1028
GetLCDefs::Unknown
@ Unknown
Definition: GetLCDefs.h:21
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
PileUpMergeSvc::interfaceID
static const InterfaceID & interfaceID()
Retrieve interface ID.
Definition: PileUpMergeSvc.cxx:257
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
PileUpMergeSvc::getPileUpEvent
const xAOD::EventInfo * getPileUpEvent(StoreGateSvc *sg, const std::string &einame) const
get EventInfo from SG, by default using p_overStore
Definition: PileUpMergeSvc.cxx:122
xAOD::EventAuxInfo_v3
Auxiliary information about the event.
Definition: EventAuxInfo_v3.h:28
xAOD::EventInfo_v1::PileUpType
PileUpType
Enumerator describing the types of pileup events.
Definition: EventInfo_v1.h:264
PileUpMergeSvc::doRefresh
bool doRefresh(const Range &r, int iXing)
Definition: PileUpMergeSvc.cxx:288
python.PileUpEventType.MinimumBias
int MinimumBias
Definition: PileUpEventType.py:4
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
PileUpMergeSvc::m_EventInfoKeyName
std::string m_EventInfoKeyName
Definition: PileUpMergeSvc.h:185
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
PileUpMergeSvc
the preferred mechanism to access information from the different event stores in a pileup job.
Definition: PileUpMergeSvc.h:58
PyPoolBrowser.item
item
Definition: PyPoolBrowser.py:129
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
python.PileUpEventType.ZeroBias
int ZeroBias
Definition: PileUpEventType.py:8
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
python.PileUpEventType.Signal
int Signal
Definition: PileUpEventType.py:3
PileUpMergeSvc::p_overStore
ServiceHandle< StoreGateSvc > p_overStore
overlaid SG (default)
Definition: PileUpMergeSvc.h:124
xAOD::EventInfo_v1::Unknown
@ Unknown
Type not known/specified.
Definition: EventInfo_v1.h:265
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
IPileUpXingFolder
an interface to SG::Folder with an attached bunch crossing interval
Definition: IPileUpXingFolder.h:21
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
python.PileUpEventType.HaloGas
int HaloGas
Definition: PileUpEventType.py:6
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
PileUpMergeSvc::decodeIntervals
void decodeIntervals()
setup PileUpIntervals
Definition: PileUpMergeSvc.cxx:56
xAOD::EventInfoAuxContainer_v1
Auxiliary information about the pileup events.
Definition: EventInfoAuxContainer_v1.h:31
PileUpMergeSvc::m_intervals
ToolHandleArray< IPileUpXingFolder > m_intervals
Property: bunch xing intervals.
Definition: PileUpMergeSvc.h:125
IPileUpXingFolder::const_iterator
SG::IFolder::const_iterator const_iterator
Definition: IPileUpXingFolder.h:31
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
EventInfo
This class provides general information about an event. Event information is provided by the accessor...
Definition: EventInfo/EventInfo/EventInfo.h:42
item
Definition: ItemListSvc.h:43
SG::sgkey_t
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
Definition: CxxUtils/CxxUtils/sgkey_t.h:32
Range
A Range describes the possible ranges for the field values of an ExpandedIdentifier.
Definition: DetectorDescription/Identifier/Identifier/Range.h:27
StoreGateSvc::tryConstRetrieve
const T * tryConstRetrieve() const
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
PileUpEventInfo
This class provides information about an overlaid event. It extends EventInfo with a list of sub-evts...
Definition: PileUpEventInfo.h:37
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
PileUpMergeSvc::m_ranges
RangeContainer m_ranges
Definition: PileUpMergeSvc.h:176
DEBUG
#define DEBUG
Definition: page_access.h:11
python.PileUpEventType.Cavern
int Cavern
Definition: PileUpEventType.py:5
AthCommonMsg< Service >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
xAOD::EventInfo_v1::subEvents
const std::vector< SubEvent > & subEvents() const
Get the pileup events that were used in the simulation.
Definition: EventInfo_v1.cxx:596
SG::DataProxy
Definition: DataProxy.h:44
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
PileUpEventInfo::SubEvent::pileup_type
PileUpTimeEventIndex::PileUpType pileup_type
Definition: PileUpEventInfo.h:61
DECLARE_SE_TYPE
#define DECLARE_SE_TYPE(TYPE)
PileUpMergeSvc::m_xAODCnvTool
ToolHandle< xAODMaker::IEventInfoCnvTool > m_xAODCnvTool
property: Handle to the EventInfo -> xAOD::EventInfo converter tool
Definition: PileUpMergeSvc.h:188
PileUpMergeSvc::m_pITriggerTime
ToolHandle< ITriggerTime > m_pITriggerTime
allows to apply a trigger time offset
Definition: PileUpMergeSvc.h:178
xAOD::EventInfo_v1::SubEvent
Class describing the properties of one pileup sub-event.
Definition: EventInfo_v1.h:286
PileUpMergeSvc::m_returnTimedData
BooleanProperty m_returnTimedData
Definition: PileUpMergeSvc.h:180