Struct TofEvent

Source
pub struct TofEvent {
Show 29 fields pub status: EventStatus, pub version: ProtocolVersion, pub quality: EventQuality, pub trigger_sources: u16, pub n_trigger_paddles: u8, pub event_id: u32, pub run_id: u16, pub timestamp32: u32, pub timestamp16: u16, pub drs_dead_lost_hits: u16, pub dsi_j_mask: u32, pub channel_mask: Vec<u16>, pub mtb_link_mask: u64, pub hits: Vec<TofHit>, pub mt_trigger_sources: u16, pub mt_tiu_gps16: u16, pub mt_tiu_gps32: u32, pub mt_timestamp: u32, pub mt_tiu_timestamp: u32, pub n_hits_umb: u8, pub n_hits_cbe: u8, pub n_hits_cor: u8, pub tot_edep_umb: f32, pub tot_edep_cbe: f32, pub tot_edep_cor: f32, pub paddles_set: bool, pub rb_events: Vec<RBEvent>, pub creation_time: Instant, pub write_to_disk: bool,
}
Expand description

Main event class for the TOF. This will be sent over telemetry and be written to disk

CHANGELOG: v0.11 (gondola-core): Merges TofEvent, TofEventSummary and MasterTriggerEvent all into a single TofEvent, based on former TofEventSummary. The new TofEvent has the ability to cary RBEvents and thus mimick the “old” TofEvent We are using the version flag to indicate:

  • ProtocolVersion::Unknown - The “old” TofEventSummary. (now “TofEvent”). No extra variables for the GCU, no RBEvents
  • ProtocolVersion::V1 - The version crafted for Antarctica ’24/’25 containing a bunch of summary variables for the GCU (e.g. nhits(umbrella)). This version will add these variables to the bytestream and also if ProtocolVersion::V1 is read out from the bytestream, the variables are expected to be in it. This is to keep compatibility with the gcu
  • ProtocolVersion::V2 - v0.11 (gondola-core) version of TofEvent(Summary). This version will not write out GCU variables and does not expect them to be in the bytestream. If desired, this version can read/write RBEvents.

Fields§

§status: EventStatus§version: ProtocolVersion

The version of this event. Prior to tof-dataclasses v0.11, the default was ProtocolVersion::Unknown. Then for the Antarctic campaign we added more variables, so that the gcu doesn’t have to compute them. These variables will be included in the bytestream for ProtocolVersion::V1. However, we don’t want to write them to disk in the new (gondola-core > v0.11) verion, so we will use ProtocolVersionV2 for the version to be written to disk. ProtocolVersionV2 can (but not must) have RBEvents

§quality: EventQuality§trigger_sources: u16§n_trigger_paddles: u8

the number of triggered paddles coming from the MTB directly. This might NOT be the same as the number of hits!

§event_id: u32§run_id: u16§timestamp32: u32§timestamp16: u16§drs_dead_lost_hits: u16

scalar number of hits missed in this event due to DRS on the RB being busy

§dsi_j_mask: u32§channel_mask: Vec<u16>§mtb_link_mask: u64§hits: Vec<TofHit>§mt_trigger_sources: u16§mt_tiu_gps16: u16§mt_tiu_gps32: u32§mt_timestamp: u32§mt_tiu_timestamp: u32§n_hits_umb: u8§n_hits_cbe: u8§n_hits_cor: u8§tot_edep_umb: f32§tot_edep_cbe: f32§tot_edep_cor: f32§paddles_set: bool§rb_events: Vec<RBEvent>§creation_time: Instant

Start time for a time to wait for incoming RBEvents

§write_to_disk: bool

Implementations§

Source§

impl TofEvent

Source

pub fn new() -> Self

Source

pub fn strip_rbevents(&mut self)

Remove any RBEvents from the event

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 get_lost_hits(&self) -> u16

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

Source

pub fn prepare_for_gcu(&mut self, strip_rbevents: bool)

Calculate extra variables for the GCU, set the protocol version to V1 and strip the waveforms if desired

§Arguments:
  • strip_rbevents : remove the rbevents from the TofEvent so they won’t bother the poor gcu
Source

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

Ensure compatibility with older data, which contained a different type of TofEvent

Source

pub fn set_timing_offsets(&mut self, offsets: &HashMap<u8, f32>)

Set timing offsets to the event’s hits

§Arguments:
  • offsets : a hashmap paddle id -> timing offset
Source

pub fn lightspeed_cleaning(&mut self, t_err: f32) -> (Vec<u8>, Vec<f32>)

Remove hits from the hitseries which can not be caused by the same particle, which means that for these two specific hits beta with respect to the first hit in the event is larger than one That this works, first hits need to be “normalized” by calling normalize_hit_times

§Return:
  • removed paddle ids, twindows
Source

pub fn remove_non_causal_hits(&mut self) -> Vec<u8>

Non causal hits have hit times in ends A and be which are not compatible with the speed of light in the paddle, that is, the hit gets registered too early. If we look at a plot of the reconstructed position, these hits would correspond to positions outside of the paddle.

#Returns: A vector of paddle ids with removed hits

Source

pub fn normalize_hit_times(&mut self)

Source

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

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_triggered_paddles(&self, pid_map: &DsiJChPidMapping) -> Vec<u8>

Get the triggered paddle ids

Warning, this might be a bit slow

Get the RB link IDs according to the mask

Source

pub fn get_trigger_hits(&self) -> Vec<(u8, u8, (u8, u8), LTBThreshold)>

Get the combination of triggered DSI/J/CH on the MTB which formed the trigger. This does not include further hits which fall into the integration window. For those, se rb_link_mask

The returned values follow the TOF convention to start with 1, so that we can use them to look up LTB ids in the db.

§Returns

Vec<(hit)> where hit is (DSI, J, CH)

Source

pub fn get_trigger_sources(&self) -> Vec<TriggerType>

Get the trigger sources from trigger source byte

Source

pub fn get_timestamp48(&self) -> u64

Source

pub fn get_edep_umbrella(&self) -> f32

Ttotal energy depostion in the TOF - Umbrella

Utilizes Philip’s formula based on peak height

Source

pub fn get_edep_cube(&self) -> f32

Ttotal energy depostion in the TOF - Umbrella

Utilizes Philip’s formula based on peak height

Source

pub fn get_edep_cortina(&self) -> f32

Ttotal energy depostion in the Cortina

Utilizes Philip’s formula based on peak height

Source

pub fn get_edep(&self) -> f32

Ttotal energy depostion in the complete TOF

Utilizes Philip’s formula based on peak height

Source

pub fn get_nhits_umb(&self) -> usize

Source

pub fn get_nhits_cbe(&self) -> usize

Source

pub fn get_nhits_cor(&self) -> usize

Source

pub fn get_nhits(&self) -> usize

Source

pub fn has_any_mangling(&self) -> bool

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

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

Trait Implementations§

Source§

impl Clone for TofEvent

Source§

fn clone(&self) -> TofEvent

Returns a duplicate 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 PartialEq for TofEvent

Source§

fn eq(&self, other: &TofEvent) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialization for TofEvent

Source§

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

Allows to get TofEvent from a packet of the deprecate packet type TofEventDeprecated. This packet type was formerly known as TofEvent This will dismiss all the waveforms and RBEvents

Source§

const HEAD: u16 = 43_690u16

Byte marker to mark beginning of payload
Source§

const TAIL: u16 = 21_845u16

Byte marker to mark end of payload
Source§

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

Encode a serializable to a bytestream Read more
Source§

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

Decode a serializable from a bytestream Read more
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§

impl TofPackable for TofEvent

Source§

const TOF_PACKET_TYPE: TofPacketType = TofPacketType::TofEvent

Source§

const TOF_PACKET_TYPE_ALT: TofPacketType = TofPacketType::TofEventDeprecated

Source§

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

Wrap myself in a TofPacket
Source§

impl StructuralPartialEq for TofEvent

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> AggregateExpressionMethods for T

Source§

fn aggregate_distinct(self) -> Self::Output
where Self: DistinctDsl,

DISTINCT modifier for aggregate functions Read more
Source§

fn aggregate_all(self) -> Self::Output
where Self: AllDsl,

ALL modifier for aggregate functions Read more
Source§

fn aggregate_filter<P>(self, f: P) -> Self::Output
where P: AsExpression<Bool>, Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,

Add an aggregate function filter Read more
Source§

fn aggregate_order<O>(self, o: O) -> Self::Output
where Self: OrderAggregateDsl<O>,

Add an aggregate function order Read more
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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Sync + Send>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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

Source§

impl<T> WindowExpressionMethods for T

Source§

fn over(self) -> Self::Output
where Self: OverDsl,

Turn a function call into a window function call Read more
Source§

fn window_filter<P>(self, f: P) -> Self::Output
where P: AsExpression<Bool>, Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,

Add a filter to the current window function Read more
Source§

fn partition_by<E>(self, expr: E) -> Self::Output
where Self: PartitionByDsl<E>,

Add a partition clause to the current window function Read more
Source§

fn window_order<E>(self, expr: E) -> Self::Output
where Self: OrderWindowDsl<E>,

Add a order clause to the current window function Read more
Source§

fn frame_by<E>(self, expr: E) -> Self::Output
where Self: FrameDsl<E>,

Add a frame clause to the current window function Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,