ATLAS Offline Software
Loading...
Searching...
No Matches
DinesRtRelation.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3*/
4
11// $Id: DinesRtRelation.h,v 1.5 2008-12-16 14:35:47 dquarrie Exp $
12
13#ifndef TRTCONDITDIONSDATA_DINESRTRELATION_H
14#define TRTCONDITDIONSDATA_DINESRTRELATION_H
15
16#include <cstring>
17#include <math.h>
19
20namespace TRTCond
21{
22
26 {
27 public:
29 DinesRtRelation() : m_status(Undefined) { m_cal[0] = m_cal[1] = m_cal[2] = m_cal[3] = 0 ; }
31 DinesRtRelation(const float * cal, Status stat = Calibrated )
32 : m_status(stat) { set(cal) ; }
33
34 DinesRtRelation(const std::vector<float>& cal, Status stat = Calibrated )
35 : m_status(stat) { set(&(cal.front())) ; }
36
37 DinesRtRelation(const DinesRtRelation& rhs) : RtRelation(rhs) { *this = rhs ; }
39 virtual ~DinesRtRelation() {}
41 virtual RtRelation* clone() const { return new DinesRtRelation(*this) ; }
42
45
47 bool operator==(const DinesRtRelation& rhs) const {
48 return (&rhs == this) || memcmp( m_cal, rhs.m_cal, 4*sizeof(float) )==0 ;
49 }
50
52 virtual int status() const { return m_status ; }
53
55 virtual float radius( float driftime ) const ;
56
58 virtual float drifttime( float radius ) const ;
59
61 virtual float drdt( float driftime ) const ;
62
64 virtual size_t footprint() const { return sizeof(*this) ; }
65
67 virtual bool isequal( const RtRelation& rhs) const ;
68
70 virtual std::ostream& write(std::ostream&) const ;
71
73 virtual std::istream& read(std::istream&) ;
74
76 const float* cal() const { return m_cal ; }
77
78 private:
80 void setstatus( int status ) { m_status = status ; }
81
83 void set( const float * cal ) { memcpy(m_cal,cal,4*sizeof(float)) ; }
84
85 private:
86 unsigned char m_status ;
87 float m_cal[4] ;
88 } ;
89
90}
91
92inline std::ostream& operator<<(std::ostream& os, const TRTCond::DinesRtRelation& rtr) {
93 return rtr.write(os) ; }
94
95
96
97#endif
std::ostream & operator<<(std::ostream &os, const TRTCond::DinesRtRelation &rtr)
abstract base class for rt-relations
Default rt-relation class in the TRT: a 3rd degree polynomial.
virtual int status() const
status flag of (calibrated) rtrelation
void setstatus(int status)
set the status
virtual float radius(float driftime) const
radius for given drifttime
const float * cal() const
return to calibration constants
virtual bool isequal(const RtRelation &rhs) const
equality operator
virtual RtRelation * clone() const
cloner
float m_cal[4]
calibration constants
DinesRtRelation(const DinesRtRelation &rhs)
constructor
DinesRtRelation(const float *cal, Status stat=Calibrated)
constructor
bool operator==(const DinesRtRelation &rhs) const
equality operator
DinesRtRelation & operator=(const DinesRtRelation &rhs)
assignment operator
virtual std::ostream & write(std::ostream &) const
write to ascii ostream
unsigned char m_status
status byte
DinesRtRelation(const std::vector< float > &cal, Status stat=Calibrated)
constructor
void set(const float *cal)
set the calibration constants
virtual ~DinesRtRelation()
destructor
virtual float drdt(float driftime) const
driftvelocity for given drifttime
virtual std::istream & read(std::istream &)
read from to ascii ostream
virtual size_t footprint() const
memory allocated by this rt-relation
virtual float drifttime(float radius) const
drifttime for given radius
Base class for rt-relations in the TRT.
Definition RtRelation.h:27
Status
enumerates status
Definition RtRelation.h:30
RtRelation()=default
constructors, desctructors, cloners