22inline const uint32_t&
uconv(
const float&
x) {
return reinterpret_cast<const uint32_t&
>(
x); }
23inline const float&
fconv(
const uint32_t&
x) {
return reinterpret_cast<const float&
>(
x); }
47 s.resize(rois.size());
55 s.resize(rois.size());
63 if ( s.empty() )
return;
64 rois.resize(s.size());
65 for (
size_t i=0 ; i<s.size() ; i++ ) {
66 if ( s[i].
empty() )
continue;
79 if ( s.empty() )
return;
80 for (
size_t i=0 ; i<s.size() ; i++ ) {
81 if ( s[i].
empty() )
continue;
100 uint32_t param = ( (roi->
version()&0xff) << 8);
115 bool plusextra = ( extra[0]!=0 ) || ( extra[1]!=0 ) || ( extra[2]!=0 );
121 s.push_back( *
static_cast<roitype_t*
>(¶m) );
124 if ( plusextra ) Nextra = 3;
141 for (
int i=0 ; i<Nextra ; i++ ) s.push_back( extra[i] );
145 s.push_back( roi->
size() );
149 if ( roi->
size()>0 ) {
169 uint32_t param = *(
reinterpret_cast<const uint32_t*
>(&s[
RoiUtil::PARAM]));
172 int version = (param>>8);
178 bool fullscan =
false;
179 if (param&1) fullscan =
true;
182 bool composite =
false;
183 if (param&2) composite =
true;
185 bool roiwords =
false;
186 if (param&4) roiwords =
true;
193 unsigned Nextra = ( roiwords ? 3 : 0 );
199 if ( s_end>s_last )
return 0;
205 unsigned extra[3] = { 0, 0, 0 };
208 for (
unsigned i=0 ; i<Nextra ; i++ ) extra[i] =
unsigned( s[extra_start+i] );
210 unsigned roiWord = extra[0];
211 unsigned l1Id = extra[1];
212 unsigned roiId = extra[2];
234 if ( roi && composite ) {
240 unsigned size = *s_end;
244 std::cout <<
"size " << size << std::endl;
247 for (
unsigned i=0 ; i<size ; i++ ) {
const float & fconv(const uint32_t &x)
const uint32_t & uconv(const float &x)
Athena::TPCnvVers::Current TrigRoiDescriptor
static const Attributes_t empty
Describes the API of the Region of Ineterest geometry.
virtual bool isFullscan() const =0
is this a full detector RoI?
virtual double eta() const =0
virtual int version() const =0
which roi version?
virtual roi_iterator end() const =0
virtual double phiPlus() const =0
extreme phi values
virtual double zedPlus() const =0
the zed and eta values at the most forward and most rear ends of the RoI
virtual double phiMinus() const =0
virtual double phi() const =0
Methods to retrieve data members.
virtual double zedMinus() const =0
virtual double zed() const =0
std::vector< constIRoiDescriptor * >::const_iterator roi_iterator
virtual unsigned size() const =0
number of constituents
virtual double etaMinus() const =0
virtual double etaPlus() const =0
virtual roi_iterator begin() const =0
const limit iterators
virtual unsigned int roiWord() const =0
virtual unsigned int roiId() const =0
identifiers
virtual bool composite() const =0
Super RoI access methods.
virtual unsigned int l1Id() const =0
void push_back(const IRoiDescriptor *roi)
add a RoiDescriptor
void setComposite(bool b=true)
virtual int version() const override final
versioning
nope - should be used for standalone also, perhaps need to protect the class def bits ifndef XAOD_ANA...
void deserialise(const roiserial_type &s, std::vector< const IRoiDescriptor * > &rois)
deserialise uint32_t vector into a full vector of IRoiDescriptors
std::vector< std::vector< roitype_t > > roiserial_type
void serialise(const std::vector< const IRoiDescriptor * > &rois, roiserial_type &s)
serialise an entire vector of IRoiDescriptors