ATLAS Offline Software
Loading...
Searching...
No Matches
L1CaloBsDecoderUtil.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef L1CALO_BS_DECODER_UTIL_H
5#define L1CALO_BS_DECODER_UTIL_H
6
7#include <list>
8
10
11namespace eformat {
12 template <class TPointer> class ROBFragment;
13}
14
16{
17public:
18
20 std::list<L1CaloRdoRodInfo>& dat );
21
22 template <typename Tar, typename Dat, typename Iter>
23 static Tar& findRdo( const Tar& target, Dat& data, Iter begin, Iter end );
24
25 template <typename Tar, typename Dat>
26 static Tar& findRdo( const Tar& target, Dat& data );
27
28private:
30};
31
32template <typename Tar, typename Dat, typename Iter> Tar&
33L1CaloBsDecoderUtil::findRdo( const Tar& target, Dat& data, Iter begin, Iter end )
34{
35 while ( (begin != end) && ( target < (*begin) ) )
36 ++begin;
37
38 if ( begin == end )
39 return *(data.insert( end.base(), target ));
40
41 if ( begin->sameDatum( target ) )
42 return *begin;
43
44 return *(data.insert( begin.base(), target ));
45}
46
47template <typename Tar, typename Dat> Tar&
48L1CaloBsDecoderUtil::findRdo( const Tar& target, Dat& data )
49{
50 return findRdo( target, data, data.rbegin(), data.rend() );
51}
52
53#endif
54
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
static Tar & findRdo(const Tar &target, Dat &data, Iter begin, Iter end)
static void decodeRodInfo(const eformat::ROBFragment< const uint32_t * > *rod, std::list< L1CaloRdoRodInfo > &dat)