GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TRF.h
Go to the documentation of this file.
1#ifndef TRF_PHASE_H
2#define TRF_PHASE_H
3
4/** \addtogroup Detectors
5 * @{
6 */
7
8#include <vector>
9#include <iostream>
10#include <cstdio>
11
12#include "TMath.h"
13
14#include "TFragment.h"
15#include "TPulseAnalyzer.h"
16#include "TDetector.h"
17
18class TRF : public TDetector {
19public:
20 TRF();
21 TRF(const TRF&);
22 TRF(TRF&&) noexcept = default;
23 TRF& operator=(const TRF&) = default;
24 TRF& operator=(TRF&&) noexcept = default;
25 ~TRF() override = default;
26
27 Double_t Phase() const
28 {
29 if(fPeriod > 0.0f) {
30 return (fTime / fPeriod) * TMath::TwoPi();
31 }
32 return -10.0; //negative value indicates failed RF fit
33 }
34 Double_t Time() const { return fTime; } //in ns, not tstamp 10ns
35 Double_t Period() const { return fPeriod; } //in ns
36 Long_t TimeStamp() const { return fTimeStamp; }
37 time_t MidasTime() const { return fMidasTime; }
38
39 Double_t GetTimeFitCfd() const
40 {
41 if(fTime != 0 && fTime < 1000 && fTime > -1000) {
42 return GetTimestampCfd() + fTime * 1.6; // ns->cfdunits
43 }
44 return 0;
45 }
46
47 Double_t GetTimeFitns() const
48 {
49 if(fTime != 0 && fTime < 1000 && fTime > -1000) {
50 return static_cast<Double_t>(TimeStamp()) + fTime; //
51 }
52 return 0;
53 }
54
55 Double_t GetTimestampCfd() const
56 { // ticks ->cfdunits
57 int64_t ts = TimeStamp() << 4 & 0x07ffffff; // bit shift by 4 (x16) then knock off the highest bit which is absent from cfd
58 return static_cast<Double_t>(ts);
59 }
60
61#ifndef __CINT__
62 void AddFragment(const std::shared_ptr<const TFragment>&, TChannel*) override; //!<!
63#endif
64 void BuildHits() override {} // no need to build any hits, everything already done in AddFragment
65
66 void Copy(TObject&) const override;
67 void Clear(Option_t* opt = "") override; //!<!
68 void Print(Option_t* opt = "") const override; //!<!
69 void Print(std::ostream& out) const override; //!<!
70
71private:
72 time_t fMidasTime;
73 Long_t fTimeStamp;
74 double fTime; //RF time offset from timestamp, like a CFD value
75 double fPeriod;
76
77 /// \cond CLASSIMP
78 ClassDefOverride(TRF, 4) // NOLINT(readability-else-after-return)
79 /// \endcond
80};
81/*! @} */
82#endif
Definition TRF.h:18
Double_t Period() const
Definition TRF.h:35
time_t MidasTime() const
Definition TRF.h:37
void Clear(Option_t *opt="") override
!
Definition TRF.cxx:43
void BuildHits() override
!
Definition TRF.h:64
void Print(Option_t *opt="") const override
!
Definition TRF.cxx:52
TRF(TRF &&) noexcept=default
Double_t GetTimestampCfd() const
Definition TRF.h:55
TRF()
Definition TRF.cxx:3
void Copy(TObject &) const override
Definition TRF.cxx:8
Double_t GetTimeFitns() const
Definition TRF.h:47
double fPeriod
Definition TRF.h:75
Double_t GetTimeFitCfd() const
Definition TRF.h:39
time_t fMidasTime
Definition TRF.h:72
Double_t Time() const
Definition TRF.h:34
Long_t fTimeStamp
Definition TRF.h:73
Long_t TimeStamp() const
Definition TRF.h:36
double fTime
Definition TRF.h:74
void AddFragment(const std::shared_ptr< const TFragment > &, TChannel *) override
!
Definition TRF.cxx:22
Double_t Phase() const
Definition TRF.h:27