pub struct RBEvent {
pub data_type: DataType,
pub status: EventStatus,
pub header: RBEventHeader,
pub adc: Vec<Vec<u16>>,
pub hits: Vec<TofHit>,
}
Expand description
Event data for each individual ReadoutBoard (RB)
Fields§
§data_type: DataType
§status: EventStatus
§header: RBEventHeader
§adc: Vec<Vec<u16>>
§hits: Vec<TofHit>
Implementations§
Source§impl RBEvent
impl RBEvent
pub fn new() -> Self
pub fn has_any_mangling_flag(&self) -> bool
Sourcepub fn self_check(&self) -> Result<(), AnalysisError>
pub fn self_check(&self) -> Result<(), AnalysisError>
Check if we have all the channel data even as indicated by the header
Sourcepub fn get_rbwaveforms(&self) -> Vec<RBWaveform>
pub fn get_rbwaveforms(&self) -> Vec<RBWaveform>
Deconstruct the RBEvent to form RBWaveforms
Sourcepub fn extract_datatype(
stream: &Vec<u8>,
) -> Result<DataType, SerializationError>
pub fn extract_datatype( stream: &Vec<u8>, ) -> Result<DataType, SerializationError>
Get the datatype from a bytestream when we know that it is an RBEvent
The data type is encoded in byte 3
Sourcepub fn get_channel_packet_len(
stream: &Vec<u8>,
pos: usize,
) -> Result<(usize, Vec<u8>), SerializationError>
pub fn get_channel_packet_len( stream: &Vec<u8>, pos: usize, ) -> Result<(usize, Vec<u8>), SerializationError>
decode the len field in the in memroy represention of RBEventMemoryView
Sourcepub fn extract_eventid(stream: &Vec<u8>) -> Result<u32, SerializationError>
pub fn extract_eventid(stream: &Vec<u8>) -> Result<u32, SerializationError>
Get the event id from a RBEvent represented by bytestream without decoding the whole event
This should be faster than decoding the whole event.
pub fn get_ndatachan(&self) -> usize
pub fn get_channel_by_id(&self, ch: usize) -> Result<&Vec<u16>, UserError>
pub fn get_channel_by_label(&self, ch: u8) -> Result<&Vec<u16>, UserError>
Trait Implementations§
Source§impl FromRandom for RBEvent
impl FromRandom for RBEvent
fn from_random() -> Self
Source§impl Packable for RBEvent
impl Packable for RBEvent
const PACKET_TYPE: PacketType = PacketType::RBEvent
Source§fn pack(&self) -> TofPacketwhere
Self: Serialization,
fn pack(&self) -> TofPacketwhere
Self: Serialization,
Wrap myself in a TofPacket
Source§impl Serialization for RBEvent
impl Serialization for RBEvent
const HEAD: u16 = 43_690u16
const TAIL: u16 = 21_845u16
Source§fn from_bytestream(
stream: &Vec<u8>,
pos: &mut usize,
) -> Result<Self, SerializationError>
fn from_bytestream( stream: &Vec<u8>, pos: &mut usize, ) -> Result<Self, SerializationError>
Decode a serializable from a bytestream
Source§fn to_bytestream(&self) -> Vec<u8>
fn to_bytestream(&self) -> Vec<u8>
Encode a serializable to a bytestream
Source§const SIZE: usize = 0usize
const SIZE: usize = 0usize
The SIZE is the size of the serialized
bytestream INCLUDING 4 bytes for head
and tail bytes. In case the struct does
NOT HAVE a fixed size, SIZE will be 0
(so default value of the trait
Source§fn verify_fixed(
stream: &Vec<u8>,
pos: &mut usize,
) -> Result<(), SerializationError>
fn verify_fixed( stream: &Vec<u8>, pos: &mut usize, ) -> Result<(), SerializationError>
Verify that the serialized representation of the struct has the
correct size, including header + footer. Read more
Source§fn from_tofpacket(packet: &TofPacket) -> Result<Self, SerializationError>where
Self: Sized,
fn from_tofpacket(packet: &TofPacket) -> Result<Self, SerializationError>where
Self: Sized,
Decode a serializable directly from a TofPacket
fn from_slice(
_slice: &[u8],
_start_pos: usize,
) -> Result<Self, SerializationError>where
Self: Sized,
impl StructuralPartialEq for RBEvent
Auto Trait Implementations§
impl Freeze for RBEvent
impl RefUnwindSafe for RBEvent
impl Send for RBEvent
impl Sync for RBEvent
impl Unpin for RBEvent
impl UnwindSafe for RBEvent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoSql for T
impl<T> IntoSql for T
Source§fn into_sql<T>(self) -> Self::Expression
fn into_sql<T>(self) -> Self::Expression
Convert
self
to an expression for Diesel’s query builder. Read moreSource§fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
Convert
&self
to an expression for Diesel’s query builder. Read more