Struct TofEvent

Source
pub struct TofEvent {
    pub compression_level: CompressionLevel,
    pub quality: EventQuality,
    pub header: TofEventHeader,
    pub mt_event: MasterTriggerEvent,
    pub rb_events: Vec<RBEvent>,
    pub creation_time: Instant,
    pub write_to_disk: bool,
    pub paddles_set: bool,
}

Fields§

§compression_level: CompressionLevel§quality: EventQuality§header: TofEventHeader§mt_event: MasterTriggerEvent§rb_events: Vec<RBEvent>§creation_time: Instant§write_to_disk: bool§paddles_set: bool

Implementations§

Source§

impl TofEvent

Source

pub fn new() -> Self

Source

pub fn set_paddles(&mut self, paddles: &HashMap<u8, Paddle>)

Source

pub fn get_pointcloud(&self) -> Option<Vec<(f32, f32, f32, f32, f32)>>

Get the pointcloud of this event, sorted by time

§Returns

(f32, f32, f32, f32, f32) : (x,y,z,t,edep)

Source

pub fn get_missing_paddles_hg(&self, pid_map: &DsiJChPidMapping) -> Vec<u8>

Compare the MasterTriggerEvent::trigger_hits with the actual hits to determine from which paddles we should have received HG hits (from waveforms) but we did not get them

WARNING: The current implementation of this is rather slow and not fit for production use FIXME - rewrite as a closure

Source

pub fn get_extra_paddles_hg(&self, pid_map: &DsiJChPidMapping) -> Vec<u8>

Compare the MasterTriggerEvent::trigger_hits with the actual hits to determine from which paddles we have received more hits than we were supposed to. These hits are neither in the trigger hits nor rb_link_ids

FIXME - this can be hits which are exclusively within the RB integration window

Source

pub fn get_missing_paddles_wf(&self, pid_map: &DsiJChPidMapping) -> Vec<u8>

Compare the MasterTriggerEvent::trigger_hits with the actual recorded waveforms to determine from which paddles we should have received waveforms from. This is independent of the hits, which additionally required that the hit extraction algorithm worked.

Source

pub fn get_triggered_paddles(&self, pid_map: DsiJChPidMapping) -> Vec<u8>

Get the triggered paddle ids

Warning, this might be a bit slow

Source

pub fn extract_event_id_from_stream( stream: &Vec<u8>, ) -> Result<u32, SerializationError>

Source

pub fn age(&self) -> u64

Source

pub fn is_complete(&self) -> bool

Simple check if the event contains as much RBEvents as expected from the provided boards masks by the MTB

Source

pub fn is_complete_masked(&self, mtb_link_ids_excluded: &Vec<u8>) -> bool

A more advanced check, where events which are not in the provided mtb_link_id list don’t count for completion

Source

pub fn construct_sizes_header(&self) -> u32

Encode the sizes of the vectors holding the into an u32

We have one byte (256) max length per vector.

Source

pub fn decode_size_header(mask: &u32) -> (usize, usize)

Source

pub fn get_combined_vector_sizes(&self) -> usize

Source

pub fn get_rbwaveforms(&self) -> Vec<RBWaveform>

Get all waveforms of all RBEvents in this event

Source

pub fn get_waveforms(&self) -> Vec<RBWaveform>

Get all waveforms of all RBEvents in this event ISSUE - Performance, Memory FIXME - reimplement this things where this returns only a reference

Source

pub fn get_waveform_pids(&self) -> Vec<u8>

Get all the paddles which have waveforms

Source

pub fn get_hits(&self) -> Vec<TofHit>

Get all hits of all RBEvents in this event

Source

pub fn has_any_mangling(&self) -> bool

Check if th eassociated RBEvents have any of their mangling stati set

Source

pub fn get_summary(&self) -> TofEventSummary

Source

pub fn get_lost_hits(&self) -> u16

The number of hits we did not get becaue of the DRS busy

Source

pub fn get_nhits_umb(&self) -> usize

Source

pub fn get_nhits(&self) -> usize

Trait Implementations§

Source§

impl Clone for TofEvent

Source§

fn clone(&self) -> TofEvent

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TofEvent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for TofEvent

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Display for TofEvent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<&TofEvent> for TofPacket

Source§

fn from(event: &TofEvent) -> Self

Converts to this type from the input type.
Source§

impl From<&mut TofEvent> for TofPacket

Source§

fn from(event: &mut TofEvent) -> Self

Converts to this type from the input type.
Source§

impl From<MasterTriggerEvent> for TofEvent

Source§

fn from(mte: MasterTriggerEvent) -> Self

Converts to this type from the input type.
Source§

impl FromRandom for TofEvent

Source§

fn from_random() -> Self

Source§

impl Packable for TofEvent

Source§

const PACKET_TYPE: PacketType = PacketType::TofEvent

Source§

fn pack(&self) -> TofPacket
where Self: Serialization,

Wrap myself in a TofPacket
Source§

impl Serialization for TofEvent

Source§

const HEAD: u16 = 43_690u16

Source§

const TAIL: u16 = 21_845u16

Source§

fn to_bytestream(&self) -> Vec<u8>

Encode a serializable to a bytestream
Source§

fn from_bytestream( stream: &Vec<u8>, pos: &mut usize, ) -> Result<Self, SerializationError>

Decode a serializable from a bytestream
Source§

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>

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,

Decode a serializable directly from a TofPacket
Source§

fn from_slice( _slice: &[u8], _start_pos: usize, ) -> Result<Self, SerializationError>
where Self: Sized,

Source§

fn to_slice(&self) -> &[u8]
where Self: Sized,

Construct byte slice out of self. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> IntoSql for T

Source§

fn into_sql<T>(self) -> Self::Expression

Convert self to an expression for Diesel’s query builder. Read more
Source§

fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
where &'a Self: AsExpression<T>, T: SqlType + TypedExpressionType,

Convert &self to an expression for Diesel’s query builder. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V