musrfit  1.9.2
PMusrT0.h
Go to the documentation of this file.
1 /***************************************************************************
2 
3  PMusrT0.h
4 
5  Author: Andreas Suter
6  e-mail: andreas.suter@psi.ch
7 
8 ***************************************************************************/
9 
10 /***************************************************************************
11  * Copyright (C) 2007-2023 by Andreas Suter *
12  * andreas.suter@psi.ch *
13  * *
14  * This program is free software; you can redistribute it and/or modify *
15  * it under the terms of the GNU General Public License as published by *
16  * the Free Software Foundation; either version 2 of the License, or *
17  * (at your option) any later version. *
18  * *
19  * This program is distributed in the hope that it will be useful, *
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
22  * GNU General Public License for more details. *
23  * *
24  * You should have received a copy of the GNU General Public License *
25  * along with this program; if not, write to the *
26  * Free Software Foundation, Inc., *
27  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
28  ***************************************************************************/
29 
30 #ifndef _PMUSRT0_H_
31 #define _PMUSRT0_H_
32 
33 #include <memory>
34 
35 #include <TObject.h>
36 #include <TQObject.h>
37 #include <TStyle.h>
38 #include <TRootCanvas.h>
39 #include <TGMenu.h>
40 #include <TCanvas.h>
41 #include <TH1.h>
42 #include <TLine.h>
43 #include <TLatex.h>
44 #include <TTimer.h>
45 
46 #include "PMusr.h"
47 #ifndef __MAKECLING__
48 #include "PMsrHandler.h"
49 #endif // __MAKECLING__
50 
51 #define PMUSRT0_FORWARD 0
52 #define PMUSRT0_BACKWARD 1
53 
54 #define PMUSRT0_GET_T0 0
55 #define PMUSRT0_GET_DATA_AND_BKG_RANGE 1
56 #define PMUSRT0_GET_T0_DATA_AND_BKG_RANGE 2
57 
58 
59 //--------------------------------------------------------------------------
63 class PMusrT0Data {
64  public:
65  PMusrT0Data();
66  virtual ~PMusrT0Data();
67 
68 
69  virtual void InitData();
70 
71  virtual Bool_t IsSingleHisto() { return fSingleHisto; }
72  virtual UInt_t GetRawRunDataSize() { return fRawRunData.size(); }
73  virtual PRawRunData* GetRawRunData(Int_t idx);
74  virtual Int_t GetRunNo() { return fRunNo; }
75  virtual Int_t GetAddRunIdx() { return fAddRunIdx; }
76  virtual Int_t GetHistoNoIdx() { return fHistoNoIdx; }
77  virtual UInt_t GetHistoNoSize() { return fHistoNo.size(); }
78  virtual Int_t GetHistoNo(UInt_t idx);
79  virtual Int_t GetDetectorTag() { return fDetectorTag; }
80  virtual Int_t GetCmdTag() { return fCmdTag; }
81  virtual UInt_t GetT0BinSize() { return fT0.size(); }
82  virtual Int_t GetT0Bin(UInt_t idx);
83  virtual UInt_t GetAddT0Entries() { return fAddT0.size(); }
84  virtual UInt_t GetAddT0BinSize(UInt_t idx);
85  virtual Int_t GetAddT0Bin(UInt_t addRunIdx, UInt_t idx);
86  virtual Int_t GetT0BinData() { return fT0Data; }
87 
88  virtual void SetSingleHisto(const Bool_t flag) { fSingleHisto = flag; }
89  virtual void SetRawRunData(const std::vector<PRawRunData*> rawRunData) { fRawRunData = rawRunData; }
90  virtual void SetRunNo(const UInt_t runNo) { fRunNo = runNo; }
91  virtual void SetAddRunIdx(const UInt_t addRunIdx) { fAddRunIdx = addRunIdx; }
92  virtual void SetHistoNoIdx(const UInt_t histoNoIdx) { fHistoNoIdx = histoNoIdx; }
93  virtual void SetHistoNo(const PIntVector histoNo) { fHistoNo = histoNo; }
94  virtual void SetDetectorTag(const UInt_t detectorTag) { fDetectorTag = detectorTag; }
95  virtual void SetCmdTag(const UInt_t cmdTag) { fCmdTag = cmdTag; }
96  virtual void SetT0Bin(UInt_t val, UInt_t idx);
97  virtual void SetAddT0Bin(UInt_t val, UInt_t addRunIdx, UInt_t idx);
98  virtual void SetT0BinData(UInt_t val) { fT0Data = val; }
99 
100  private:
101  Bool_t fSingleHisto;
102  std::vector<PRawRunData*> fRawRunData;
103  Int_t fRunNo;
104  Int_t fAddRunIdx;
105  Int_t fHistoNoIdx;
107  Int_t fDetectorTag;
108  Int_t fCmdTag;
110  std::vector<PIntVector> fAddT0;
111  Int_t fT0Data;
112 };
113 
114 
115 //--------------------------------------------------------------------------
121 class PMusrT0 : public TObject, public TQObject
122 {
123  public:
124  PMusrT0();
125  PMusrT0(PMusrT0Data &data);
126 
127  virtual Bool_t IsValid() { return fValid; }
128 
129  virtual void Done(Int_t status=0); // *SIGNAL*
130  virtual void HandleCmdKey(Int_t event, Int_t x, Int_t y, TObject *selected); // SLOT
131  virtual void Quit(); // SLOT
132  virtual void SetTimeout(Int_t timeout);
133 
134 #ifndef __MAKECLING__
135  virtual void SetMsrHandler(PMsrHandler *msrHandler);
136 #endif // __MAKECLING__
137 
138  virtual void InitT0();
139  virtual void InitDataAndBkg();
140  virtual Int_t GetStatus() { return fStatus; }
141 
142  private:
143 #ifndef __MAKECLING__
145 #endif // __MAKECLING__
146  Int_t fTimeout;
147 
148  Bool_t fValid;
149 
150  Int_t fStatus;
151 
153 
155  Bool_t fT0Enabled;
156  Int_t fT0Estimated;
158 
159  std::unique_ptr<TTimer> fTimeoutTimer;
160 
161  // canvas related variables
162  std::unique_ptr<TCanvas> fMainCanvas;
163 
164  std::unique_ptr<TH1F> fHisto;
165  std::unique_ptr<TH1F> fData;
166  std::unique_ptr<TH1F> fBkg;
167 
168  std::unique_ptr<TLatex> fToDoInfo;
169 
170  std::unique_ptr<TLine> fT0Line;
171  std::unique_ptr<TLine> fT0DataLine;
172  std::unique_ptr<TLine> fFirstBkgLine;
173  std::unique_ptr<TLine> fLastBkgLine;
174  std::unique_ptr<TLine> fFirstDataLine;
175  std::unique_ptr<TLine> fLastDataLine;
176 
177  Int_t fPx;
178  Int_t fPy;
179 
180  Int_t fDataRange[2];
181  Int_t fBkgRange[2];
182 
183  void ShowDataFileT0Channel();
184  void HideDataFileT0Channel();
185  void SetT0Channel();
186  void SetEstimatedT0Channel();
187  void SetDataFirstChannel();
188  void SetDataLastChannel();
189  void SetBkgFirstChannel();
190  void SetBkgLastChannel();
191  void UnZoom();
192  void ZoomT0();
193 
194  ClassDef(PMusrT0, 1)
195 };
196 
197 #endif // _PMUSRT0_H_
virtual void InitData()
Definition: PMusrT0.cpp:76
void SetDataLastChannel()
Definition: PMusrT0.cpp:967
std::unique_ptr< TCanvas > fMainCanvas
main canvas for the graphical user interface
Definition: PMusrT0.h:162
Int_t fPx
x-position of the cursor
Definition: PMusrT0.h:177
std::unique_ptr< TLine > fT0Line
line showing the position of t0
Definition: PMusrT0.h:170
Int_t fTimeout
timeout after which the Done signal should be emited. If timeout <= 0, no timeout is taking place ...
Definition: PMusrT0.h:146
virtual void HandleCmdKey(Int_t event, Int_t x, Int_t y, TObject *selected)
Definition: PMusrT0.cpp:569
virtual Bool_t IsValid()
Definition: PMusrT0.h:127
virtual void InitDataAndBkg()
Definition: PMusrT0.cpp:704
std::vector< PRawRunData * > fRawRunData
holds the raw data of the needed runs, idx=0 the run, idx>0 the addruns
Definition: PMusrT0.h:102
Int_t fRunNo
msr-file run number
Definition: PMusrT0.h:103
virtual Bool_t IsSingleHisto()
Definition: PMusrT0.h:71
Int_t fPy
y-position of the cursor
Definition: PMusrT0.h:178
virtual Int_t GetCmdTag()
Definition: PMusrT0.h:80
virtual Int_t GetDetectorTag()
Definition: PMusrT0.h:79
Bool_t fDataAndBkgEnabled
enable/disable data and background range handling (necessary in connection with grouping and addrun) ...
Definition: PMusrT0.h:154
void SetBkgFirstChannel()
Definition: PMusrT0.cpp:1013
std::unique_ptr< TTimer > fTimeoutTimer
timeout timer in order to terminate if no action is taking place for too long
Definition: PMusrT0.h:159
void SetEstimatedT0Channel()
Definition: PMusrT0.cpp:881
std::unique_ptr< TH1F > fData
ranged raw data histogram (first good bin, last good bin)
Definition: PMusrT0.h:165
void SetT0Channel()
Definition: PMusrT0.cpp:837
virtual UInt_t GetHistoNoSize()
Definition: PMusrT0.h:77
virtual void SetT0Bin(UInt_t val, UInt_t idx)
Definition: PMusrT0.cpp:206
PIntVector fHistoNo
msr-file histo numbers, i.e. idx + Red/Green offset
Definition: PMusrT0.h:106
Bool_t fT0Enabled
enable/disable t0 handling (necessary in connection with grouping and addrun)
Definition: PMusrT0.h:155
virtual UInt_t GetAddT0BinSize(UInt_t idx)
Definition: PMusrT0.cpp:165
virtual UInt_t GetT0BinSize()
Definition: PMusrT0.h:81
std::vector< Int_t > PIntVector
Definition: PMusr.h:178
virtual void SetTimeout(Int_t timeout)
Definition: PMusrT0.cpp:630
Int_t fAddRunIdx
msr-file addrun index
Definition: PMusrT0.h:104
Bool_t fValid
true if raw data set are available, otherwise false
Definition: PMusrT0.h:148
PMsrHandler * fMsrHandler
msr-file handler
Definition: PMusrT0.h:144
void ZoomT0()
Definition: PMusrT0.cpp:1120
virtual Int_t GetAddT0Bin(UInt_t addRunIdx, UInt_t idx)
Definition: PMusrT0.cpp:186
virtual void SetDetectorTag(const UInt_t detectorTag)
Definition: PMusrT0.h:94
void UnZoom()
Definition: PMusrT0.cpp:1105
virtual void SetT0BinData(UInt_t val)
Definition: PMusrT0.h:98
Bool_t fShowT0DataChannel
Definition: PMusrT0.h:157
Int_t fHistoNoIdx
msr-file histo number index
Definition: PMusrT0.h:105
std::unique_ptr< TH1F > fHisto
full raw data histogram
Definition: PMusrT0.h:164
PMusrT0Data fMusrT0Data
raw muSR run data sets.
Definition: PMusrT0.h:152
virtual void SetMsrHandler(PMsrHandler *msrHandler)
Definition: PMusrT0.cpp:652
virtual void SetRunNo(const UInt_t runNo)
Definition: PMusrT0.h:90
virtual Int_t GetT0BinData()
Definition: PMusrT0.h:86
static int timeout
Definition: musrfit.cpp:71
virtual UInt_t GetRawRunDataSize()
Definition: PMusrT0.h:72
PIntVector fT0
holding the t0&#39;s of the run
Definition: PMusrT0.h:109
virtual void SetCmdTag(const UInt_t cmdTag)
Definition: PMusrT0.h:95
virtual Int_t GetAddRunIdx()
Definition: PMusrT0.h:75
virtual void SetAddT0Bin(UInt_t val, UInt_t addRunIdx, UInt_t idx)
Definition: PMusrT0.cpp:224
std::unique_ptr< TLine > fFirstDataLine
line showing the start of the data (first good data bin)
Definition: PMusrT0.h:174
virtual void SetSingleHisto(const Bool_t flag)
Definition: PMusrT0.h:88
void SetDataFirstChannel()
Definition: PMusrT0.cpp:921
std::unique_ptr< TLine > fT0DataLine
line showing the position of t0 found in the data file
Definition: PMusrT0.h:171
Bool_t fSingleHisto
true if single histo fit, false for asymmetry fit
Definition: PMusrT0.h:101
Int_t fT0Estimated
estimated t0 value (in bins)
Definition: PMusrT0.h:156
Int_t fDetectorTag
detector tag. forward=0,backward=1
Definition: PMusrT0.h:107
virtual void Quit()
Definition: PMusrT0.cpp:616
Int_t fT0Data
holding the t0 found in the current data set
Definition: PMusrT0.h:111
virtual void SetHistoNoIdx(const UInt_t histoNoIdx)
Definition: PMusrT0.h:92
Int_t fStatus
0=quit locally, i.e. only a single musrt0 raw data canvas will terminate but not the application...
Definition: PMusrT0.h:150
void ShowDataFileT0Channel()
Definition: PMusrT0.cpp:800
virtual Int_t GetRunNo()
Definition: PMusrT0.h:74
Int_t fDataRange[2]
data range (first good bin, last good bin)
Definition: PMusrT0.h:180
std::unique_ptr< TLine > fLastDataLine
line showing the end of the data (last good data bin)
Definition: PMusrT0.h:175
virtual void SetRawRunData(const std::vector< PRawRunData *> rawRunData)
Definition: PMusrT0.h:89
void HideDataFileT0Channel()
Definition: PMusrT0.cpp:823
virtual PRawRunData * GetRawRunData(Int_t idx)
Definition: PMusrT0.cpp:105
virtual void Done(Int_t status=0)
Definition: PMusrT0.cpp:540
std::unique_ptr< TLine > fFirstBkgLine
line showing the start of the background
Definition: PMusrT0.h:172
std::vector< PIntVector > fAddT0
holding the t0&#39;s of the addruns
Definition: PMusrT0.h:110
virtual UInt_t GetAddT0Entries()
Definition: PMusrT0.h:83
void SetBkgLastChannel()
Definition: PMusrT0.cpp:1059
virtual Int_t GetStatus()
Definition: PMusrT0.h:140
virtual Int_t GetHistoNo(UInt_t idx)
Definition: PMusrT0.cpp:125
virtual void SetHistoNo(const PIntVector histoNo)
Definition: PMusrT0.h:93
std::unique_ptr< TLine > fLastBkgLine
line showing the end of the background
Definition: PMusrT0.h:173
Int_t fCmdTag
command tag. 0=get t0, 1=get data-/bkg-range, 2=get t0, and data-/bkg-range
Definition: PMusrT0.h:108
return status
std::unique_ptr< TLatex > fToDoInfo
clear text user instruction string
Definition: PMusrT0.h:168
virtual void SetAddRunIdx(const UInt_t addRunIdx)
Definition: PMusrT0.h:91
virtual void InitT0()
Definition: PMusrT0.cpp:663
virtual Int_t GetHistoNoIdx()
Definition: PMusrT0.h:76
std::unique_ptr< TH1F > fBkg
histogram starting from &#39;bkg start&#39; up to &#39;bkg end&#39;
Definition: PMusrT0.h:166
virtual Int_t GetT0Bin(UInt_t idx)
Definition: PMusrT0.cpp:145
virtual ~PMusrT0Data()
Definition: PMusrT0.cpp:60
Int_t fBkgRange[2]
background range (first bkg bin, last bkg bin)
Definition: PMusrT0.h:181